<?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>102484</bug_id>
          
          <creation_ts>2012-11-16 05:13:09 -0800</creation_ts>
          <short_desc>[EFL] Implementation of pasteboard</short_desc>
          <delta_ts>2017-03-11 10:37:47 -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>WebKit EFL</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>WONTFIX</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>
          <dependson>119799</dependson>
          <blocked>84338</blocked>
    
    <blocked>120209</blocked>
          <everconfirmed>0</everconfirmed>
          <reporter name="Michal Pakula vel Rutka">mpakulavelrutka</reporter>
          <assigned_to name="Michal Pakula vel Rutka">mpakulavelrutka</assigned_to>
          <cc>benjamin</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>g.czajkowski</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jesus</cc>
    
    <cc>jinwoo7.song</cc>
    
    <cc>kenneth</cc>
    
    <cc>ktf.kim</cc>
    
    <cc>lucas.de.marchi</cc>
    
    <cc>mcatanzaro</cc>
    
    <cc>rakuco</cc>
    
    <cc>sam</cc>
    
    <cc>sh919.park</cc>
    
    <cc>sunaeluv.kim</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>769137</commentid>
    <comment_count>0</comment_count>
    <who name="Michal Pakula vel Rutka">mpakulavelrutka</who>
    <bug_when>2012-11-16 05:13:09 -0800</bug_when>
    <thetext>EFL port lacks of pasteboard implementation, this bug will handle WebCore and WebKit2 implementation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>772920</commentid>
    <comment_count>1</comment_count>
      <attachid>175434</attachid>
    <who name="Michal Pakula vel Rutka">mpakulavelrutka</who>
    <bug_when>2012-11-21 06:58:43 -0800</bug_when>
    <thetext>Created attachment 175434
proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>772923</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-21 07:01:21 -0800</bug_when>
    <thetext>Attachment 175434 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCor...&quot; exit_code: 1
Source/WebKit2/UIProcess/API/efl/ewk_pasteboard.cpp:31:  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>772934</commentid>
    <comment_count>3</comment_count>
      <attachid>175436</attachid>
    <who name="Michal Pakula vel Rutka">mpakulavelrutka</who>
    <bug_when>2012-11-21 07:10:17 -0800</bug_when>
    <thetext>Created attachment 175436
proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>772941</commentid>
    <comment_count>4</comment_count>
    <who name="Michal Pakula vel Rutka">mpakulavelrutka</who>
    <bug_when>2012-11-21 07:16:08 -0800</bug_when>
    <thetext>This patch is only WebCore and WebKit2 implementation, TestRunner with gardening and Minibrowser implementation will be added later.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>773649</commentid>
    <comment_count>5</comment_count>
      <attachid>175436</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-11-21 23:55:39 -0800</bug_when>
    <thetext>Comment on attachment 175436
proposed patch

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

&gt; Source/WebKit2/UIProcess/WebContext.h:279
&gt; +    void requestPasteboardDataForType(const String&amp; dataType, String&amp; value);

IMO, getPasteboardDataForType matches to setPasteboardDataForType as mac port.

 -void getPasteboardTypes(const String&amp; pasteboardName, Vector&lt;String&gt;&amp; pasteboardTypes);
 -void setPasteboardTypes(const String&amp; pasteboardName, const Vector&lt;String&gt;&amp; pasteboardTypes);

BTW, don&apos;t you need to use Vector instead of String for the type ? Or, can&apos;t we share mac port&apos;s definitions ?

In WebContext.h,

#if PLATFORM(MAC)
    void getPasteboardTypes(const String&amp; pasteboardName, Vector&lt;String&gt;&amp; pasteboardTypes);
    void getPasteboardPathnamesForType(const String&amp; pasteboardName, const String&amp; pasteboardType, Vector&lt;String&gt;&amp; pathnames);
    void getPasteboardStringForType(const String&amp; pasteboardName, const String&amp; pasteboardType, String&amp;);
    void getPasteboardBufferForType(const String&amp; pasteboardName, const String&amp; pasteboardType, SharedMemory::Handle&amp;, uint64_t&amp; size);
    void pasteboardCopy(const String&amp; fromPasteboard, const String&amp; toPasteboard);
    void getPasteboardChangeCount(const String&amp; pasteboardName, uint64_t&amp; changeCount);
    void getPasteboardUniqueName(String&amp; pasteboardName);
    void getPasteboardColor(const String&amp; pasteboardName, WebCore::Color&amp;);
    void getPasteboardURL(const String&amp; pasteboardName, WTF::String&amp;);
    void addPasteboardTypes(const String&amp; pasteboardName, const Vector&lt;String&gt;&amp; pasteboardTypes);
    void setPasteboardTypes(const String&amp; pasteboardName, const Vector&lt;String&gt;&amp; pasteboardTypes);
    void setPasteboardPathnamesForType(const String&amp; pasteboardName, const String&amp; pasteboardType, const Vector&lt;String&gt;&amp; pathnames);
    void setPasteboardStringForType(const String&amp; pasteboardName, const String&amp; pasteboardType, const String&amp;);
    void setPasteboardBufferForType(const String&amp; pasteboardName, const String&amp; pasteboardType, const SharedMemory::Handle&amp;, uint64_t size);
#endif

&gt; Source/WebKit2/UIProcess/efl/WebPasteboardProxyEfl.h:37
&gt; +class WebPasteboardProxyEfl : public APIObject {

I don&apos;t understand why you only support this for EFL port. Is there any EFL specific dependency? If not, IMO, you need to change common WK2 structure.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>773797</commentid>
    <comment_count>6</comment_count>
      <attachid>175436</attachid>
    <who name="Michal Pakula vel Rutka">mpakulavelrutka</who>
    <bug_when>2012-11-22 03:33:44 -0800</bug_when>
    <thetext>Comment on attachment 175436
proposed patch

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

&gt;&gt; Source/WebKit2/UIProcess/WebContext.h:279
&gt;&gt; +    void requestPasteboardDataForType(const String&amp; dataType, String&amp; value);
&gt; 
&gt; IMO, getPasteboardDataForType matches to setPasteboardDataForType as mac port.
&gt; 
&gt;  -void getPasteboardTypes(const String&amp; pasteboardName, Vector&lt;String&gt;&amp; pasteboardTypes);
&gt;  -void setPasteboardTypes(const String&amp; pasteboardName, const Vector&lt;String&gt;&amp; pasteboardTypes);
&gt; 
&gt; BTW, don&apos;t you need to use Vector instead of String for the type ? Or, can&apos;t we share mac port&apos;s definitions ?
&gt; 
&gt; In WebContext.h,
&gt; 
&gt; #if PLATFORM(MAC)
&gt;     void getPasteboardTypes(const String&amp; pasteboardName, Vector&lt;String&gt;&amp; pasteboardTypes);
&gt;     void getPasteboardPathnamesForType(const String&amp; pasteboardName, const String&amp; pasteboardType, Vector&lt;String&gt;&amp; pathnames);
&gt;     void getPasteboardStringForType(const String&amp; pasteboardName, const String&amp; pasteboardType, String&amp;);
&gt;     void getPasteboardBufferForType(const String&amp; pasteboardName, const String&amp; pasteboardType, SharedMemory::Handle&amp;, uint64_t&amp; size);
&gt;     void pasteboardCopy(const String&amp; fromPasteboard, const String&amp; toPasteboard);
&gt;     void getPasteboardChangeCount(const String&amp; pasteboardName, uint64_t&amp; changeCount);
&gt;     void getPasteboardUniqueName(String&amp; pasteboardName);
&gt;     void getPasteboardColor(const String&amp; pasteboardName, WebCore::Color&amp;);
&gt;     void getPasteboardURL(const String&amp; pasteboardName, WTF::String&amp;);
&gt;     void addPasteboardTypes(const String&amp; pasteboardName, const Vector&lt;String&gt;&amp; pasteboardTypes);
&gt;     void setPasteboardTypes(const String&amp; pasteboardName, const Vector&lt;String&gt;&amp; pasteboardTypes);
&gt;     void setPasteboardPathnamesForType(const String&amp; pasteboardName, const String&amp; pasteboardType, const Vector&lt;String&gt;&amp; pathnames);
&gt;     void setPasteboardStringForType(const String&amp; pasteboardName, const String&amp; pasteboardType, const String&amp;);
&gt;     void setPasteboardBufferForType(const String&amp; pasteboardName, const String&amp; pasteboardType, const SharedMemory::Handle&amp;, uint64_t size);
&gt; #endif

Instead of setPasteboardDataForType, we can use mac&apos;s setPasteboardStringForType leaving one of its parameters - pasteboardName - empty for now. Similar instead of requestDataForType we can use getPasteboardStringForType, not using pasteboardName for now.

&gt;&gt; Source/WebKit2/UIProcess/efl/WebPasteboardProxyEfl.h:37
&gt;&gt; +class WebPasteboardProxyEfl : public APIObject {
&gt; 
&gt; I don&apos;t understand why you only support this for EFL port. Is there any EFL specific dependency? If not, IMO, you need to change common WK2 structure.

Other ports don&apos;t need this type of implementation as all pasteboard job can be, and it is done inside WebKit/WebCore. In EFL port we cannot do that, so I have added this file to delegate copy/paste operations to application. Of course if it is needed I can change it into more common implementation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>782306</commentid>
    <comment_count>7</comment_count>
      <attachid>175436</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-12-04 00:15:38 -0800</bug_when>
    <thetext>Comment on attachment 175436
proposed patch

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

&gt;&gt;&gt; Source/WebKit2/UIProcess/efl/WebPasteboardProxyEfl.h:37
&gt;&gt;&gt; +class WebPasteboardProxyEfl : public APIObject {
&gt;&gt; 
&gt;&gt; I don&apos;t understand why you only support this for EFL port. Is there any EFL specific dependency? If not, IMO, you need to change common WK2 structure.
&gt; 
&gt; Other ports don&apos;t need this type of implementation as all pasteboard job can be, and it is done inside WebKit/WebCore. In EFL port we cannot do that, so I have added this file to delegate copy/paste operations to application. Of course if it is needed I can change it into more common implementation.

&gt;&gt; In EFL port we cannot do that

Could you let me know why EFL can&apos;t do that ? Should you use elementary ? If so, we need to check if we can has port specific file to WK2 reviewers.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>782509</commentid>
    <comment_count>8</comment_count>
      <attachid>175436</attachid>
    <who name="Michal Pakula vel Rutka">mpakulavelrutka</who>
    <bug_when>2012-12-04 06:50:49 -0800</bug_when>
    <thetext>Comment on attachment 175436
proposed patch

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

&gt;&gt;&gt;&gt; Source/WebKit2/UIProcess/efl/WebPasteboardProxyEfl.h:37
&gt;&gt;&gt;&gt; +class WebPasteboardProxyEfl : public APIObject {
&gt;&gt;&gt; 
&gt;&gt;&gt; I don&apos;t understand why you only support this for EFL port. Is there any EFL specific dependency? If not, IMO, you need to change common WK2 structure.
&gt;&gt; 
&gt;&gt; Other ports don&apos;t need this type of implementation as all pasteboard job can be, and it is done inside WebKit/WebCore. In EFL port we cannot do that, so I have added this file to delegate copy/paste operations to application. Of course if it is needed I can change it into more common implementation.
&gt; 
&gt; 

In EFL copy and paste API is placed in Elementary and as it depends on WebKit (via elm_web) we cannot include it into WebKit. Second thing is that Elementary copy and paste functions - elm_cnp_selection_get/set - need a widget (or Evas_Object with X window i.e. view or Elementary window) to be passed as one of arguments and we cannot provide that kind of object in WebCore with exception of some kind of fake clipboard object. 
The solution is to move the code out to application side as EFL developers assumed, and this file is needed to do it. For now I added it only for EFL and as I wrote earlier I can change it into more common implementation but it will remain unused by other ports.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>785487</commentid>
    <comment_count>9</comment_count>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-12-06 17:54:42 -0800</bug_when>
    <thetext>(In reply to comment #8)

&gt; In EFL copy and paste API is placed in Elementary and as it depends on WebKit (via elm_web) we cannot include it into WebKit. Second thing is that Elementary copy and paste functions - elm_cnp_selection_get/set - need a widget (or Evas_Object with X window i.e. view or Elementary window) to be passed as one of arguments and we cannot provide that kind of object in WebCore with exception of some kind of fake clipboard object. 
&gt; The solution is to move the code out to application side as EFL developers assumed, and this file is needed to do it. For now I added it only for EFL and as I wrote earlier I can change it into more common implementation but it will remain unused by other ports.

CC&apos;ing Sam, Sam, can EFL port has this port specific files without common file ? EFL port can&apos;t support copy &amp; past in WebCore side and WebKit layer because of EFL specific dependency.

Source/WebKit2/UIProcess/efl/WebPasteboardClientEfl.cpp
Source/WebKit2/UIProcess/API/C/efl/WKPasteboardEfl.cpp</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>787075</commentid>
    <comment_count>10</comment_count>
    <who name="seonae kim">sunaeluv.kim</who>
    <bug_when>2012-12-10 01:28:24 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; Created an attachment (id=175436) [details]
&gt; proposed patch

I&apos;m implementing Clipboard API to get/set the data to javascript.
This APIs have similar structure with pasteboard and do you have a plan to change the files to common name not pasteboard?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>787110</commentid>
    <comment_count>11</comment_count>
    <who name="Michal Pakula vel Rutka">mpakulavelrutka</who>
    <bug_when>2012-12-10 01:53:41 -0800</bug_when>
    <thetext>(In reply to comment #10)
&gt; (In reply to comment #3)
&gt; &gt; Created an attachment (id=175436) [details] [details]
&gt; &gt; proposed patch
&gt; 
&gt; I&apos;m implementing Clipboard API to get/set the data to javascript.
&gt; This APIs have similar structure with pasteboard and do you have a plan to change the files to common name not pasteboard?

At this moment files names are not definitely set, as I am not sure whether to make WK2 files EFL port-only or available for all ports.
Are you OK with removing the Pasteboard word from methods and change files names to i.e. Clipboard?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>788462</commentid>
    <comment_count>12</comment_count>
      <attachid>178808</attachid>
    <who name="Michal Pakula vel Rutka">mpakulavelrutka</who>
    <bug_when>2012-12-11 08:17:17 -0800</bug_when>
    <thetext>Created attachment 178808
added WebKit1 stubs

Added WebKit1 stubs, run when copy and paste is called plus some minor changes in WebKit2.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>792748</commentid>
    <comment_count>13</comment_count>
      <attachid>179749</attachid>
    <who name="Michal Pakula vel Rutka">mpakulavelrutka</who>
    <bug_when>2012-12-17 08:34:23 -0800</bug_when>
    <thetext>Created attachment 179749
added primary selection support

Added primary selection support to enable X11 global selection. Two methods from PasteboardStrategy are now shared between EFL and MAC ports.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>793493</commentid>
    <comment_count>14</comment_count>
      <attachid>179749</attachid>
    <who name="Grzegorz Czajkowski">g.czajkowski</who>
    <bug_when>2012-12-18 02:35:03 -0800</bug_when>
    <thetext>Comment on attachment 179749
added primary selection support

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

&gt; Source/WebCore/ChangeLog:10
&gt; +        to be done on WebKit-using application side.

Please add space around &apos;-&apos;.

&gt; Source/WebCore/platform/efl/PasteboardEfl.cpp:56
&gt; +    platformStrategies()-&gt;pasteboardStrategy()-&gt;setStringForType(text, selectionFormatText,

Don&apos;t you need to add PLATFORM_STRATEGIES guard for it?

&gt; Source/WebKit2/ChangeLog:8
&gt; +        EFL does not provide platform-wide copy and paste support, so we cannot

This comment can be skipped as it&apos;s placed in the previous ChangeLogs.

&gt; Source/WebKit2/UIProcess/API/efl/ewk_pasteboard.cpp:53
&gt; +        static_cast&lt;Ewk_Pasteboard_Selection_Type&gt;(selectionType));

Please add extra indent to show that it is one instruction.

&gt; Source/WebKit2/UIProcess/API/efl/ewk_pasteboard.cpp:60
&gt; +        static_cast&lt;Ewk_Pasteboard_Selection_Format&gt;(selectionFormat), static_cast&lt;Ewk_Pasteboard_Selection_Type&gt;(selectionType)));

Ditto.

&gt; Source/WebKit2/UIProcess/API/efl/ewk_pasteboard.cpp:79
&gt; +

Unnecessary empty line.

&gt; Source/WebKit2/UIProcess/API/efl/ewk_pasteboard.h:62
&gt; + * @param data to be copied

Please mention that the data should be freed.

&gt; Source/WebKit2/UIProcess/API/efl/ewk_pasteboard.h:66
&gt; +typedef void (*Ewk_Pasteboard_Data_Set_Cb)(const char *data, Ewk_Pasteboard_Selection_Format selection_format, Ewk_Pasteboard_Selection_Type selection_type);

I am not sure whether data parameter should be passed as const. According to your implementation you are using strdup() so the client is responsible for freeing that memory.

&gt; Source/WebKit2/UIProcess/API/efl/ewk_pasteboard.h:71
&gt; + * This callback will request and return if received a data for given type.

a data -&gt; data

&gt; Source/WebKit2/UIProcess/API/efl/ewk_pasteboard.h:76
&gt; + * @return requested data if at success or @c NULL at failure

requested data if on success or @c NULL on failure</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>794509</commentid>
    <comment_count>15</comment_count>
      <attachid>179749</attachid>
    <who name="Michal Pakula vel Rutka">mpakulavelrutka</who>
    <bug_when>2012-12-19 04:26:55 -0800</bug_when>
    <thetext>Comment on attachment 179749
added primary selection support

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

&gt;&gt; Source/WebCore/platform/efl/PasteboardEfl.cpp:56
&gt;&gt; +    platformStrategies()-&gt;pasteboardStrategy()-&gt;setStringForType(text, selectionFormatText,
&gt; 
&gt; Don&apos;t you need to add PLATFORM_STRATEGIES guard for it?

To be honest I have done it the same way as in PastebaordMac.mm - headers are guarded and code is not. PLATFORM_STRATEGIES is turned on on our port in Platform.h, when turned off WebKit1 does not build as PlatformStrategiesEfl.h is not guarded. As this is EFL specific file I will remove the guards from headers.

&gt;&gt; Source/WebKit2/UIProcess/API/efl/ewk_pasteboard.cpp:53
&gt;&gt; +        static_cast&lt;Ewk_Pasteboard_Selection_Type&gt;(selectionType));
&gt; 
&gt; Please add extra indent to show that it is one instruction.

check-webkit-style enforces 4 spaces indent

&gt;&gt; Source/WebKit2/UIProcess/API/efl/ewk_pasteboard.h:62
&gt;&gt; + * @param data to be copied
&gt; 
&gt; Please mention that the data should be freed.

This is my mistake, I will remove strdup from the code.

&gt;&gt; Source/WebKit2/UIProcess/API/efl/ewk_pasteboard.h:66
&gt;&gt; +typedef void (*Ewk_Pasteboard_Data_Set_Cb)(const char *data, Ewk_Pasteboard_Selection_Format selection_format, Ewk_Pasteboard_Selection_Type selection_type);
&gt; 
&gt; I am not sure whether data parameter should be passed as const. According to your implementation you are using strdup() so the client is responsible for freeing that memory.

the same here</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>794513</commentid>
    <comment_count>16</comment_count>
      <attachid>180131</attachid>
    <who name="Michal Pakula vel Rutka">mpakulavelrutka</who>
    <bug_when>2012-12-19 04:33:14 -0800</bug_when>
    <thetext>Created attachment 180131
fixes after review</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>795353</commentid>
    <comment_count>17</comment_count>
      <attachid>180131</attachid>
    <who name="Grzegorz Czajkowski">g.czajkowski</who>
    <bug_when>2012-12-20 04:20:18 -0800</bug_when>
    <thetext>Comment on attachment 180131
fixes after review

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

In my opinion patch itself looks quite good. I understand that this implementation is different from other WebKit ports due to EFL design - copy/paste is delegated to Elementary&apos;s widgets.

&gt; Source/WebKit2/UIProcess/API/efl/ewk_pasteboard.h:28
&gt; +

It&apos;d be nice to add some general description in doxygen for this file (@file, @brief).

&gt; Source/WebKit2/UIProcess/API/efl/ewk_pasteboard.h:62
&gt; + * @param data to be copied

You need to duplicate &apos;data&apos; here. Doxygen generates: paramter parameter_name - parameter description. Please adapt this fix to all doxygen descriptions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>795360</commentid>
    <comment_count>18</comment_count>
    <who name="Grzegorz Czajkowski">g.czajkowski</who>
    <bug_when>2012-12-20 04:30:49 -0800</bug_when>
    <thetext>According to EFL policy, to get formal review this patch should contain unit tests as you are adding new API. Those can be added in separate bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>803350</commentid>
    <comment_count>19</comment_count>
    <who name="Michal Pakula vel Rutka">mpakulavelrutka</who>
    <bug_when>2013-01-09 07:59:04 -0800</bug_when>
    <thetext>(In reply to comment #18)
&gt; According to EFL policy, to get formal review this patch should contain unit tests as you are adding new API. Those can be added in separate bug.

OK I will create a new bug then.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>803351</commentid>
    <comment_count>20</comment_count>
      <attachid>181928</attachid>
    <who name="Michal Pakula vel Rutka">mpakulavelrutka</who>
    <bug_when>2013-01-09 08:02:02 -0800</bug_when>
    <thetext>Created attachment 181928
fixes

Fixes in documentation according to Grzegorz suggestions also added a possibility for application for passing pointer to its own application data.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>804910</commentid>
    <comment_count>21</comment_count>
      <attachid>181928</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2013-01-10 20:32:34 -0800</bug_when>
    <thetext>Comment on attachment 181928
fixes

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

A lot of this code is wiring to expose the pasteboard. This is a bit odd and I wonder why should it be done like that.

&gt; Source/WebCore/ChangeLog:10
&gt; +        EFL does not provide platform-wide copy and paste support, so we cannot
&gt; +        implement pasteboard inside WebCore as in other ports. The implementation has
&gt; +        to be done on application side.

I understand that you may have to do the pasteboard support on the UISide, but in the App?
X11 has pretty standard pasteboard support. Can you explain more about this?

&gt; Source/WebCore/ChangeLog:12
&gt; +        No new tests - already covered by existing tests.

How can that be if you are implementing a new feature?
Shouldn&apos;t you unskip the existing tests?

&gt; Source/WebCore/platform/Pasteboard.h:70
&gt; +const String selectionFormatText(&quot;Text&quot;);
&gt; +const String selectionFormatMarkup(&quot;Markup&quot;);
&gt; +const String selectionTypePrimary(&quot;Primary&quot;);
&gt; +const String selectionTypeClipboard(&quot;Clipboard&quot;);

String literals.

&gt; Source/WebCore/platform/Pasteboard.h:134
&gt;      bool m_selectionMode;

This is a poor name for a boolean :)

&gt; Source/WebCore/platform/efl/PasteboardEfl.cpp:54
&gt; -    notImplemented();
&gt; +    platformStrategies()-&gt;pasteboardStrategy()-&gt;setStringForType(text, selectionFormatText,
&gt; +        m_selectionMode ? selectionTypePrimary : selectionTypeClipboard);

You should reformat this to make it cleaner.
We don&apos;t break at 80 characters in WebKit.

&gt; Source/WebCore/platform/efl/PasteboardEfl.cpp:61
&gt; -    notImplemented();
&gt; +    platformStrategies()-&gt;pasteboardStrategy()-&gt;setStringForType(
&gt; +        createMarkup(selectedRange, 0, AnnotateForInterchange, false, ResolveNonLocalURLs), selectionFormatMarkup,
&gt; +        m_selectionMode ? selectionTypePrimary : selectionTypeClipboard);

ditto.

&gt; Source/WebCore/platform/efl/PasteboardEfl.cpp:102
&gt; +        RefPtr&lt;DocumentFragment&gt; fragment = createFragmentFromMarkup(frame-&gt;document(), data, &quot;&quot;, DisallowScriptingContent);

&quot;&quot; -&gt; emptyString()

&gt; Source/WebCore/platform/efl/PasteboardEfl.cpp:103
&gt; +        if (fragment)

This is odd, why this branch?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>804943</commentid>
    <comment_count>22</comment_count>
      <attachid>181928</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2013-01-10 21:18:05 -0800</bug_when>
    <thetext>Comment on attachment 181928
fixes

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

&gt; Source/WebKit/efl/WebCoreSupport/PlatformStrategiesEfl.cpp:166
&gt; +void PlatformStrategiesEfl::setStringForType(const String&amp;, const String&amp; pasteboardType, const String&amp; pasteboardName)

Remove pasteboardType, pateboardName parameters or use UNUSED_PARAM() macro for them.

&gt; Source/WebKit/efl/WebCoreSupport/PlatformStrategiesEfl.cpp:171
&gt; +String PlatformStrategiesEfl::stringForType(const String&amp; pasteboardType, const String&amp; pasteboardName)

ditto.

&gt; Source/WebKit2/Shared/API/c/efl/WKBaseEfl.h:28
&gt; +typedef const struct OpaqueWKPasteboard* WKPasteboardRef;

I prefer to place variables by alphabetical order, if possible.

&gt; Source/WebKit2/Shared/APIObject.h:135
&gt; +        TypePasteboardProxy,

ditto ?

&gt; Source/WebKit2/UIProcess/API/C/efl/WKPasteboardEfl.cpp:39
&gt; +    WebPasteboardProxyEfl::shared()-&gt;initializeClient(client);

Any reason to use *initialize* ? Is setClient(client) appropriate ?

&gt; Source/WebKit2/UIProcess/API/efl/ewk_pasteboard.h:52
&gt; +/* Creates a type name for the Ewk_Pasteboard_Selection_Format.*/

EFL port has used /// instead of /* */ for typedef enum.

&gt; Source/WebKit2/UIProcess/API/efl/ewk_pasteboard.h:64
&gt; +/* Creates a type name for the Ewk_Pasteboard_Selection_Type.*/

ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>805499</commentid>
    <comment_count>23</comment_count>
      <attachid>181928</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2013-01-11 12:10:47 -0800</bug_when>
    <thetext>Comment on attachment 181928
fixes

Looks like there are enough concerns to r-.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>806373</commentid>
    <comment_count>24</comment_count>
      <attachid>181928</attachid>
    <who name="Michal Pakula vel Rutka">mpakulavelrutka</who>
    <bug_when>2013-01-14 08:24:02 -0800</bug_when>
    <thetext>Comment on attachment 181928
fixes

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

&gt;&gt; Source/WebCore/ChangeLog:10
&gt;&gt; +        to be done on application side.
&gt; 
&gt; I understand that you may have to do the pasteboard support on the UISide, but in the App?
&gt; X11 has pretty standard pasteboard support. Can you explain more about this?

EFL copy and paste API is placed inside Elementary (http://docs.enlightenment.org/auto/elementary/) which is a toolkit used for developing applications which contains UI widgets like popups, lists, progress bars, etc. We cannot include it into WebKit becauses of one of Elementary&apos;s widget - elm_web which is a simple webview based on WebKit and also as I talked with one of EFL developers - Gustavo Sverzut Barbieri - webkit-efl is meant to be elementary independent.
In general Elementary implementation of copy/paste is a wrap on X11: first a data is put into a structure containing data, type, callbacks (http://trac.enlightenment.org/e/browser/trunk/elementary/src/lib/elm_cnp.c#L121) and then passed Ecore where XSetSelectionOwner is called. 
API functions used for copy and paste (elm_cnp_selection_set and elm_cnp_selection_get respectively see: http://docs.enlightenment.org/auto/elementary/group__CopyPaste.html) excepts an Elementary widget as one of arguments. In X11 widget is needed only to get X-window object and an object on which a callback can be called. So to call this API inside WebKit (apart from including Elementary) we will have to create a fake widget or at least a fake object with X-window only for supporting copy and paste API.
The only way then is to (suggested to me by Gustavo) is to delegate it to an application which can take care of calling Elementary clipboard functions, passing proper widgets, etc.

&gt;&gt; Source/WebCore/ChangeLog:12
&gt;&gt; +        No new tests - already covered by existing tests.
&gt; 
&gt; How can that be if you are implementing a new feature?
&gt; Shouldn&apos;t you unskip the existing tests?

This patch introduces a new feature only for EFL port, as Pasteboard is already implemented and tests for it has been already written. I have created a separate bug (https://bugs.webkit.org/show_bug.cgi?id=102486) for unskipping tests and implementation for WTR.

&gt;&gt; Source/WebCore/platform/Pasteboard.h:70
&gt;&gt; +const String selectionTypeClipboard(&quot;Clipboard&quot;);
&gt; 
&gt; String literals.

Done.

&gt;&gt; Source/WebCore/platform/Pasteboard.h:134
&gt;&gt;      bool m_selectionMode;
&gt; 
&gt; This is a poor name for a boolean :)

This was not introduced by me :). If you wish I can fill a new bug for it as Chromium and QT people may be interested in changing it, but not with this patch.

&gt;&gt; Source/WebCore/platform/efl/PasteboardEfl.cpp:54
&gt;&gt; +        m_selectionMode ? selectionTypePrimary : selectionTypeClipboard);
&gt; 
&gt; You should reformat this to make it cleaner.
&gt; We don&apos;t break at 80 characters in WebKit.

Done.

&gt;&gt; Source/WebCore/platform/efl/PasteboardEfl.cpp:102
&gt;&gt; +        RefPtr&lt;DocumentFragment&gt; fragment = createFragmentFromMarkup(frame-&gt;document(), data, &quot;&quot;, DisallowScriptingContent);
&gt; 
&gt; &quot;&quot; -&gt; emptyString()

Done.

&gt;&gt; Source/WebCore/platform/efl/PasteboardEfl.cpp:103
&gt;&gt; +        if (fragment)
&gt; 
&gt; This is odd, why this branch?

I will remove it.

&gt;&gt; Source/WebKit/efl/WebCoreSupport/PlatformStrategiesEfl.cpp:166
&gt;&gt; +void PlatformStrategiesEfl::setStringForType(const String&amp;, const String&amp; pasteboardType, const String&amp; pasteboardName)
&gt; 
&gt; Remove pasteboardType, pateboardName parameters or use UNUSED_PARAM() macro for them.

I will remove them.

&gt;&gt; Source/WebKit2/Shared/API/c/efl/WKBaseEfl.h:28
&gt;&gt; +typedef const struct OpaqueWKPasteboard* WKPasteboardRef;
&gt; 
&gt; I prefer to place variables by alphabetical order, if possible.

Done.

&gt;&gt; Source/WebKit2/Shared/APIObject.h:135
&gt;&gt; +        TypePasteboardProxy,
&gt; 
&gt; ditto ?

I will move it within //Platform specific group

&gt;&gt; Source/WebKit2/UIProcess/API/C/efl/WKPasteboardEfl.cpp:39
&gt;&gt; +    WebPasteboardProxyEfl::shared()-&gt;initializeClient(client);
&gt; 
&gt; Any reason to use *initialize* ? Is setClient(client) appropriate ?

setClient will be appropriate, I will change it.

&gt;&gt; Source/WebKit2/UIProcess/API/efl/ewk_pasteboard.h:52
&gt;&gt; +/* Creates a type name for the Ewk_Pasteboard_Selection_Format.*/
&gt; 
&gt; EFL port has used /// instead of /* */ for typedef enum.

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>807160</commentid>
    <comment_count>25</comment_count>
      <attachid>182731</attachid>
    <who name="Michal Pakula vel Rutka">mpakulavelrutka</who>
    <bug_when>2013-01-15 03:26:25 -0800</bug_when>
    <thetext>Created attachment 182731
fixes after review</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>807267</commentid>
    <comment_count>26</comment_count>
      <attachid>182762</attachid>
    <who name="Michal Pakula vel Rutka">mpakulavelrutka</who>
    <bug_when>2013-01-15 07:20:04 -0800</bug_when>
    <thetext>Created attachment 182762
fixes after review2

emptyString() added</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>807560</commentid>
    <comment_count>27</comment_count>
      <attachid>182762</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2013-01-15 12:25:35 -0800</bug_when>
    <thetext>Comment on attachment 182762
fixes after review2

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

Quick questions:
Why is PasteboardProxy a APIObject? Where is it used for API?
What is your API? What is defined in WKPasteboardEfl.h or ewk_pasteboard.h?

&gt; Source/WebCore/platform/Pasteboard.h:120
&gt; +#if PLATFORM(EFL)
&gt; +    static const char* const selectionFormatText;
&gt; +    static const char* const selectionFormatMarkup;
&gt; +    static const char* const selectionTypePrimary;
&gt; +    static const char* const selectionTypeClipboard;
&gt; +#endif

IMHO, this should be in a EFL header, not in the common header.

&gt; Source/WebCore/platform/efl/PasteboardEfl.cpp:43
&gt; +const char* const Pasteboard::selectionFormatText = &quot;Text&quot;;
&gt; +const char* const Pasteboard::selectionFormatMarkup = &quot;Markup&quot;;
&gt; +const char* const Pasteboard::selectionTypePrimary = &quot;Primary&quot;;
&gt; +const char* const Pasteboard::selectionTypeClipboard = &quot;Clipboard&quot;;

What I meant here is that should be using WTF::String literal initialization.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>808311</commentid>
    <comment_count>28</comment_count>
    <who name="Michal Pakula vel Rutka">mpakulavelrutka</who>
    <bug_when>2013-01-16 05:54:09 -0800</bug_when>
    <thetext>(In reply to comment #27)
&gt; (From update of attachment 182762 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=182762&amp;action=review
&gt; 
&gt; Quick questions:
&gt; Why is PasteboardProxy a APIObject? Where is it used for API?
&gt; What is your API? What is defined in WKPasteboardEfl.h or ewk_pasteboard.h?
&gt; 

EFL port does not export WK API, only ewk_headers are exported (https://trac.webkit.org/browser/trunk/Source/WebKit2/PlatformEfl.cmake#L261), so external applications cannot access it. ewk_pasteboard it is just a wrap over WKPasteboardEfl visible for applications and similar situation is quite common in EFL port i.e WKCookieManager-&gt;ewk_cookie_manager.
From application point of view the API is placed in ewk_pasteboard.h, but if WK API will be exported it would be unnecessary as application will set WKPasteboardEfl structure itself.

&gt; &gt; Source/WebCore/platform/Pasteboard.h:120
&gt; &gt; +#if PLATFORM(EFL)
&gt; &gt; +    static const char* const selectionFormatText;
&gt; &gt; +    static const char* const selectionFormatMarkup;
&gt; &gt; +    static const char* const selectionTypePrimary;
&gt; &gt; +    static const char* const selectionTypeClipboard;
&gt; &gt; +#endif
&gt; 
&gt; IMHO, this should be in a EFL header, not in the common header.
&gt; 
&gt; &gt; Source/WebCore/platform/efl/PasteboardEfl.cpp:43
&gt; &gt; +const char* const Pasteboard::selectionFormatText = &quot;Text&quot;;
&gt; &gt; +const char* const Pasteboard::selectionFormatMarkup = &quot;Markup&quot;;
&gt; &gt; +const char* const Pasteboard::selectionTypePrimary = &quot;Primary&quot;;
&gt; &gt; +const char* const Pasteboard::selectionTypeClipboard = &quot;Clipboard&quot;;
&gt; 
&gt; What I meant here is that should be using WTF::String literal initialization.

I have created a new header using ASCII literals.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>808318</commentid>
    <comment_count>29</comment_count>
      <attachid>182970</attachid>
    <who name="Michal Pakula vel Rutka">mpakulavelrutka</who>
    <bug_when>2013-01-16 06:03:55 -0800</bug_when>
    <thetext>Created attachment 182970
added new file for pasteboard constants</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>808575</commentid>
    <comment_count>30</comment_count>
      <attachid>182970</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2013-01-16 11:42:17 -0800</bug_when>
    <thetext>Comment on attachment 182970
added new file for pasteboard constants

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

Its not clear to me why you can&apos;t just make the EFL port dependent on Elementary.

&gt; Source/WebKit2/UIProcess/WebContext.messages.in:47
&gt; +    GetPasteboardStringForType(WTF::String pasteboardName, WTF::String pasteboardType) -&gt; (WTF::String string)

Is there a way you can do this without a sync message.  We would like to remove more sync messages for Mac, and adding this for EFL will make it harder for us to remove it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>808912</commentid>
    <comment_count>31</comment_count>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2013-01-16 17:55:50 -0800</bug_when>
    <thetext>(In reply to comment #30)
&gt; (From update of attachment 182970 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=182970&amp;action=review
&gt; 
&gt; Its not clear to me why you can&apos;t just make the EFL port dependent on Elementary.

EFL community has wanted to support WebKit EFL as one of elementary module. Look at this article. http://trac.enlightenment.org/e/blog/2011/10/31/elm_web

If we use elementary inside WebKit EFL port, it will make circular dependency. But, I&apos;m not sure if this is correct way personally. Because this policy gives us many inconveniences.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>826442</commentid>
    <comment_count>32</comment_count>
      <attachid>182970</attachid>
    <who name="Michal Pakula vel Rutka">mpakulavelrutka</who>
    <bug_when>2013-02-06 07:45:47 -0800</bug_when>
    <thetext>Comment on attachment 182970
added new file for pasteboard constants

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

&gt;&gt; Source/WebKit2/UIProcess/WebContext.messages.in:47
&gt;&gt; +    GetPasteboardStringForType(WTF::String pasteboardName, WTF::String pasteboardType) -&gt; (WTF::String string)
&gt; 
&gt; Is there a way you can do this without a sync message.  We would like to remove more sync messages for Mac, and adding this for EFL will make it harder for us to remove it.

I made a test patch and yes, it is possible. When changing to async message I will need to introduce:
- additional internal main loop in WebProcess side started when paste request is called. Similar thing is done in GTK (i.e. gtk_clipboard_wait_for_contents), but EFL does not provide nothing like this and it will have to be written inside WebCore from scratch.
- an API function which will fill WebCore&apos;s pasteboard with data and then stop internal loop started, when data from EFL clipboard will come.

This API will cause change in this implementation from currently proposed - EFL only, to common for all ports. I think proposing new WK API used only by one port implemented by all ports is not good. From my point of view current proposed implementation is just better and if it is possible I would rather to stay with sync message. If Mac port wants to get rid of sync messages, please change it and EFL will just restore old getPasteboardStringForType which will not be shared within Mac and EFL ports.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>906656</commentid>
    <comment_count>33</comment_count>
    <who name="KyungTae Kim">ktf.kim</who>
    <bug_when>2013-07-07 21:18:23 -0700</bug_when>
    <thetext>Is there any progress on this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>909240</commentid>
    <comment_count>34</comment_count>
    <who name="Michal Pakula vel Rutka">mpakulavelrutka</who>
    <bug_when>2013-07-17 01:33:29 -0700</bug_when>
    <thetext>(In reply to comment #33)
&gt; Is there any progress on this?

I plan to post new patches in the beginning of August.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>915699</commentid>
    <comment_count>35</comment_count>
    <who name="KyungTae Kim">ktf.kim</who>
    <bug_when>2013-08-08 23:27:10 -0700</bug_when>
    <thetext>(In reply to comment #34)
&gt; (In reply to comment #33)
&gt; &gt; Is there any progress on this?
&gt; I plan to post new patches in the beginning of August.
When will you post the new patch?
The pasteboard is an important functionality and this blocks other things like drag&amp;drop (bug 109551).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>917137</commentid>
    <comment_count>36</comment_count>
      <attachid>208734</attachid>
    <who name="Michal Pakula vel Rutka">mpakulavelrutka</who>
    <bug_when>2013-08-14 08:57:36 -0700</bug_when>
    <thetext>Created attachment 208734
new patch

I decided to split this into three patches: pasteboard client in WKContext (bug 119799), EFL implementation in WebCore and WebKit2 (bug 102484) and EFL WK API implementation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>928915</commentid>
    <comment_count>37</comment_count>
      <attachid>211564</attachid>
    <who name="Michal Pakula vel Rutka">mpakulavelrutka</who>
    <bug_when>2013-09-13 10:57:36 -0700</bug_when>
    <thetext>Created attachment 211564
rebase after pasteboard changes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1015092</commentid>
    <comment_count>38</comment_count>
      <attachid>232949</attachid>
    <who name="Michal Pakula vel Rutka">mpakulavelrutka</who>
    <bug_when>2014-06-12 05:46:20 -0700</bug_when>
    <thetext>Created attachment 232949
rebased patch

Rebased patch updated after changes in bug 119799.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1015349</commentid>
    <comment_count>39</comment_count>
    <who name="Jinwoo Song">jinwoo7.song</who>
    <bug_when>2014-06-13 00:46:10 -0700</bug_when>
    <thetext>Hi Michal, recently, Joonhun start to upstream the Tizen pastedboard implementation through https://bugs.webkit.org/show_bug.cgi?id=133782.

This patch conflicts with your implementation but the patch seems to have different implementation way. I&apos;m not sure which is a right approach so please communicate with Joonhun for finding better thing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1015354</commentid>
    <comment_count>40</comment_count>
    <who name="Michal Pakula vel Rutka">mpakulavelrutka</who>
    <bug_when>2014-06-13 01:19:59 -0700</bug_when>
    <thetext>(In reply to comment #39)
&gt; Hi Michal, recently, Joonhun start to upstream the Tizen pastedboard implementation through https://bugs.webkit.org/show_bug.cgi?id=133782.
&gt; 
&gt; This patch conflicts with your implementation but the patch seems to have different implementation way. I&apos;m not sure which is a right approach so please communicate with Joonhun for finding better thing.

This patch and related patches (bug 119799, bug 120209) connect webkit pasteboard with system copy and paste using elementary functions (elm_cnp_selection_set and elm_cnp_selection_get), to allow copy and paste functions work between different applications.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1286349</commentid>
    <comment_count>41</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2017-03-11 10:37:47 -0800</bug_when>
    <thetext>Closing this bug because the EFL port has been removed from trunk.

If you feel this bug applies to a different upstream WebKit port and was closed in error, please either update the title and reopen the bug, or leave a comment to request this.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>175434</attachid>
            <date>2012-11-21 06:58:43 -0800</date>
            <delta_ts>2012-11-21 07:10:17 -0800</delta_ts>
            <desc>proposed patch</desc>
            <filename>pasteboard.diff</filename>
            <type>text/plain</type>
            <size>40160</size>
            <attacher name="Michal Pakula vel Rutka">mpakulavelrutka</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA0Y2VmMjFhLi5iZDI1YjkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjgg
QEAKKzIwMTItMTEtMjEgIE1pY2hhxYIgUGFrdcWCYSB2ZWwgUnV0a2EgIDxtLnBha3VsYUBzYW1z
dW5nLmNvbT4KKworICAgICAgICBbRUZMXVtXSzJdIEltcGxlbWVudGF0aW9uIG9mIHBhc3RlYm9h
cmQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMjQ4
NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEVGTCBk
b2VzIG5vdCBwcm92aWRlIHBsYXRmb3JtLXdpZGUgY29weSBhbmQgcGFzdGUgc3VwcG9ydCwgc28g
d2UgY2Fubm90CisgICAgICAgIGltcGxlbWVudCBwYXN0ZWJvYXJkIGluc2lkZSBXZWJDb3JlIGFz
IGluIG90aGVyIHBvcnRzLCBidXQgaW1wbGVtZW50YXRpb24gaGFzCisgICAgICAgIHRvIGJlIGRv
bmUgb24gV2ViS2l0LXVzaW5nIGFwcGxpY2F0aW9uIHNpZGUuCisKKyAgICAgICAgTm8gbmV3IHRl
c3RzIC0gYWxyZWFkeSBjb3ZlcmVkIGJ5IGV4aXN0aW5nIHRlc3RzLgorCisgICAgICAgICogcGxh
dGZvcm0vUGFzdGVib2FyZC5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogcGxhdGZv
cm0vUGFzdGVib2FyZFN0cmF0ZWd5Lmg6CisgICAgICAgIChQYXN0ZWJvYXJkU3RyYXRlZ3kpOiBB
ZGRlZCB0d28gbWV0aG9kcyBwZXJmb3JtaW5nIGNvcHkgbmFkIHBhc3RlIGluIEVGTCBwb3J0Lgor
ICAgICAgICAqIHBsYXRmb3JtL2VmbC9QYXN0ZWJvYXJkRWZsLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlBhc3RlYm9hcmQ6OlBhc3RlYm9hcmQpOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2Fy
ZDo6d3JpdGVQbGFpblRleHQpOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6d3JpdGVT
ZWxlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6d3JpdGVVUkwpOgorICAg
ICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6ZG9jdW1lbnRGcmFnbWVudCk6CisgICAgICAgIChX
ZWJDb3JlOjpQYXN0ZWJvYXJkOjpwbGFpblRleHQpOgorCiAyMDEyLTExLTIxICBGbG9yaW4gTWFs
aXRhICA8Zm1hbGl0YUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW1NraWFdIEVuY2Fwc3VsYXRl
IGFjY2VzcyB0byBQbGF0Zm9ybUNvbnRleHRTa2lhJ3MgU2tDYW52YXMKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1Bhc3RlYm9hcmQuaAppbmRleCA0MDIyYTYxLi4wOTM4OGVkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vUGFzdGVib2FyZC5oCkBAIC02Myw2ICs2MywxMSBAQCBleHRlcm4gY29uc3QgY2hhciog
V2ViVVJMUGJvYXJkVHlwZTsKIGV4dGVybiBjb25zdCBjaGFyKiBXZWJVUkxzV2l0aFRpdGxlc1Bi
b2FyZFR5cGU7CiAjZW5kaWYKIAorI2lmIFBMQVRGT1JNKEVGTCkKK2NvbnN0IFN0cmluZyBwYXN0
ZWJvYXJkRGF0YVR5cGVUZXh0KCJUZXh0Iik7Citjb25zdCBTdHJpbmcgcGFzdGVib2FyZERhdGFU
eXBlTWFya3VwKCJNYXJrdXAiKTsKKyNlbmRpZgorCiAgICAgY2xhc3MgQXJjaGl2ZVJlc291cmNl
OwogY2xhc3MgQ2xpcGJvYXJkOwogY2xhc3MgRG9jdW1lbnRGcmFnbWVudDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRTdHJhdGVneS5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZFN0cmF0ZWd5LmgKaW5kZXggZjkyMmM2Ni4uODc5YTlm
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZFN0cmF0ZWd5
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZFN0cmF0ZWd5LmgKQEAg
LTU3LDYgKzU3LDEwIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0UGF0aG5hbWVzRm9y
VHlwZShjb25zdCBWZWN0b3I8U3RyaW5nPiYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUs
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0
U3RyaW5nRm9yVHlwZShjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBl
LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSA9IDA7CiAjZW5kaWYKKyNpZiBQTEFURk9S
TShFRkwpCisgICAgdmlydHVhbCB2b2lkIHNldERhdGFGb3JUeXBlKGNvbnN0IFN0cmluZyYsIGNv
bnN0IFN0cmluZyYgZGF0YVR5cGUpID0gMDsKKyAgICB2aXJ0dWFsIFN0cmluZyByZXF1ZXN0RGF0
YUZvclR5cGUoY29uc3QgU3RyaW5nJiBkYXRhVHlwZSkgPSAwOworI2VuZGlmCiBwcm90ZWN0ZWQ6
CiAgICAgdmlydHVhbCB+UGFzdGVib2FyZFN0cmF0ZWd5KCkKICAgICB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvUGFzdGVib2FyZEVmbC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9lZmwvUGFzdGVib2FyZEVmbC5jcHAKaW5kZXggN2ExYWM0NS4uMmRlMDRk
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZsL1Bhc3RlYm9hcmRFZmwu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9QYXN0ZWJvYXJkRWZsLmNwcApA
QCAtMzMsNiArMzMsMTEgQEAKICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAjaW5jbHVk
ZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKKyNpZiBVU0UoUExBVEZPUk1fU1RSQVRFR0lFUykK
KyNpbmNsdWRlICJQYXN0ZWJvYXJkU3RyYXRlZ3kuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybVN0cmF0
ZWdpZXMuaCIKKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFBhc3RlYm9hcmQqIFBh
c3RlYm9hcmQ6OmdlbmVyYWxQYXN0ZWJvYXJkKCkKQEAgLTQzLDIyICs0OCwyNSBAQCBQYXN0ZWJv
YXJkKiBQYXN0ZWJvYXJkOjpnZW5lcmFsUGFzdGVib2FyZCgpCiAKIFBhc3RlYm9hcmQ6OlBhc3Rl
Ym9hcmQoKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKLXZvaWQgUGFzdGVib2FyZDo6
d3JpdGVQbGFpblRleHQoY29uc3QgU3RyaW5nJiwgU21hcnRSZXBsYWNlT3B0aW9uKQordm9pZCBQ
YXN0ZWJvYXJkOjp3cml0ZVBsYWluVGV4dChjb25zdCBTdHJpbmcmIHRleHQsIFNtYXJ0UmVwbGFj
ZU9wdGlvbikKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHBsYXRmb3JtU3RyYXRlZ2ll
cygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+c2V0RGF0YUZvclR5cGUodGV4dCwgcGFzdGVib2Fy
ZERhdGFUeXBlVGV4dCk7CiB9CiAKLXZvaWQgUGFzdGVib2FyZDo6d3JpdGVTZWxlY3Rpb24oUmFu
Z2UqLCBib29sLCBGcmFtZSopCit2b2lkIFBhc3RlYm9hcmQ6OndyaXRlU2VsZWN0aW9uKFJhbmdl
KiBzZWxlY3RlZFJhbmdlLCBib29sLCBGcmFtZSopCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsK
KyAgICBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPnNldERhdGFG
b3JUeXBlKAorICAgICAgICBjcmVhdGVNYXJrdXAoc2VsZWN0ZWRSYW5nZSwgMCwgQW5ub3RhdGVG
b3JJbnRlcmNoYW5nZSwgZmFsc2UsIFJlc29sdmVOb25Mb2NhbFVSTHMpLCBwYXN0ZWJvYXJkRGF0
YVR5cGVNYXJrdXApOwogfQogCi12b2lkIFBhc3RlYm9hcmQ6OndyaXRlVVJMKGNvbnN0IEtVUkwm
LCBjb25zdCBTdHJpbmcmLCBGcmFtZSopCit2b2lkIFBhc3RlYm9hcmQ6OndyaXRlVVJMKGNvbnN0
IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiwgRnJhbWUqKQogewotICAgIG5vdEltcGxlbWVudGVk
KCk7CisgICAgaWYgKHVybC5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKworICAgIHBsYXRm
b3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+c2V0RGF0YUZvclR5cGUodXJs
LnN0cmluZygpLCBwYXN0ZWJvYXJkRGF0YVR5cGVUZXh0KTsKIH0KIAogdm9pZCBQYXN0ZWJvYXJk
Ojp3cml0ZUltYWdlKE5vZGUqLCBjb25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJikKQEAgLTgyLDE2
ICs5MCwzMiBAQCBib29sIFBhc3RlYm9hcmQ6OmNhblNtYXJ0UmVwbGFjZSgpCiAgICAgcmV0dXJu
IGZhbHNlOwogfQogCi1QYXNzUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IFBhc3RlYm9hcmQ6OmRv
Y3VtZW50RnJhZ21lbnQoRnJhbWUqLCBQYXNzUmVmUHRyPFJhbmdlPiwgYm9vbCwgYm9vbCYpCitQ
YXNzUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IFBhc3RlYm9hcmQ6OmRvY3VtZW50RnJhZ21lbnQo
RnJhbWUqIGZyYW1lLCBQYXNzUmVmUHRyPFJhbmdlPiBjb250ZXh0LCBib29sIGFsbG93UGxhaW5U
ZXh0LCBib29sJiBjaG9zZVBsYWluVGV4dCkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAg
IGNob3NlUGxhaW5UZXh0ID0gZmFsc2U7CisKKyAgICBTdHJpbmcgZGF0YSA9IHBsYXRmb3JtU3Ry
YXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+cmVxdWVzdERhdGFGb3JUeXBlKHBhc3Rl
Ym9hcmREYXRhVHlwZU1hcmt1cCk7CisKKyAgICBpZiAoIWRhdGEuaXNFbXB0eSgpKSB7CisgICAg
ICAgIFJlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBmcmFnbWVudCA9IGNyZWF0ZUZyYWdtZW50RnJv
bU1hcmt1cChmcmFtZS0+ZG9jdW1lbnQoKSwgZGF0YSwgIiIsIERpc2FsbG93U2NyaXB0aW5nQ29u
dGVudCk7CisgICAgICAgIGlmIChmcmFnbWVudCkKKyAgICAgICAgICAgIHJldHVybiBmcmFnbWVu
dC5yZWxlYXNlKCk7CisgICAgfQorCisgICAgZGF0YSA9IHBsYXRmb3JtU3RyYXRlZ2llcygpLT5w
YXN0ZWJvYXJkU3RyYXRlZ3koKS0+cmVxdWVzdERhdGFGb3JUeXBlKHBhc3RlYm9hcmREYXRhVHlw
ZVRleHQpOworICAgIGlmIChhbGxvd1BsYWluVGV4dCAmJiAhZGF0YS5pc0VtcHR5KCkpIHsKKyAg
ICAgICAgY2hvc2VQbGFpblRleHQgPSB0cnVlOworICAgICAgICBSZWZQdHI8RG9jdW1lbnRGcmFn
bWVudD4gZnJhZ21lbnQgPSBjcmVhdGVGcmFnbWVudEZyb21UZXh0KGNvbnRleHQuZ2V0KCksIGRh
dGEpOworICAgICAgICBpZiAoZnJhZ21lbnQpCisgICAgICAgICAgICByZXR1cm4gZnJhZ21lbnQu
cmVsZWFzZSgpOworICAgIH0KKwogICAgIHJldHVybiAwOwogfQogCiBTdHJpbmcgUGFzdGVib2Fy
ZDo6cGxhaW5UZXh0KEZyYW1lKikKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVy
biBTdHJpbmcoKTsKKyAgICByZXR1cm4gcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRT
dHJhdGVneSgpLT5yZXF1ZXN0RGF0YUZvclR5cGUocGFzdGVib2FyZERhdGFUeXBlVGV4dCk7CiB9
CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJL
aXQyL0NoYW5nZUxvZwppbmRleCA4OGI5MDllLi5kMzEwZTQxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsNzEgQEAKKzIwMTItMTEtMjEgIE1pY2hhxYIgUGFrdcWCYSB2ZWwgUnV0a2EgIDxtLnBha3Vs
YUBzYW1zdW5nLmNvbT4KKworICAgICAgICBbRUZMXVtXSzJdIEltcGxlbWVudGF0aW9uIG9mIHBh
c3RlYm9hcmQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTEwMjQ4NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEVGTCBkb2VzIG5vdCBwcm92aWRlIHBsYXRmb3JtLXdpZGUgY29weSBhbmQgcGFzdGUgc3VwcG9y
dCwgc28gd2UgY2Fubm90CisgICAgICAgIGltcGxlbWVudCBwYXN0ZWJvYXJkIGluc2lkZSBXZWJD
b3JlIGFzIGluIG90aGVyIHBvcnRzLCBidXQgaW1wbGVtZW50YXRpb24gaGFzCisgICAgICAgIHRv
IGJlIGRvbmUgb24gV2ViS2l0LXVzaW5nIGFwcGxpY2F0aW9uIHNpZGUuCisKKyAgICAgICAgVGhp
cyBwYXRjaCBpcyBhbiBpbml0aWFsIGFwcHJvYWNoIHRvIFBhc3RlYm9hcmQgaW1wbGVtZW50YXRp
b24gaW4gV2ViS2l0MiwKKyAgICAgICAgZm9jdXNpbmcgb24gYmFzaWMgY29weSBhbmQgcGFzdGUg
ZmVhdHVyZXMuIEl0IHBhc3Nlc3MgZGF0YSBhbG9uZyB3aXRoIGRhdGEKKyAgICAgICAgdHlwZSBm
cm9tIFdlYkNvcmUgdG8gV2ViS2l0MiBhbmQgdGhlbiB0aGUgY2xpZW50IGNhbGxiYWNrcyBhcmUg
aW52b2tlZC4KKworICAgICAgICAqIFBsYXRmb3JtRWZsLmNtYWtlOgorICAgICAgICAqIFNoYXJl
ZC9BUEkvYy9lZmwvV0tCYXNlRWZsLmg6CisgICAgICAgICogU2hhcmVkL0FQSU9iamVjdC5oOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9lZmwvV0tQYXN0ZWJvYXJkRWZsLmNwcDogQWRkZWQu
CisgICAgICAgIChXS1Bhc3RlYm9hcmRTZXRDbGllbnQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQy9lZmwvV0tQYXN0ZWJvYXJkRWZsLmg6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvZWZsL0VXZWJLaXQyLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRl
eHQuY3BwOgorICAgICAgICAoRXdrQ29udGV4dDo6RXdrQ29udGV4dCk6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9lZmwvZXdrX3Bhc3RlYm9hcmQuY3BwOiBBZGRlZC4KKyAgICAgICAgKHNldERh
dGEpOgorICAgICAgICAocmVxdWVzdERhdGEpOgorICAgICAgICAoRXdrX1Bhc3RlYm9hcmQpOgor
ICAgICAgICAoRXdrX1Bhc3RlYm9hcmQ6OmluaXRpYWxpemUpOgorICAgICAgICAoZXdrX3Bhc3Rl
Ym9hcmRfZGF0YV9zZXRfY2Jfc2V0KToKKyAgICAgICAgKGV3a19wYXN0ZWJvYXJkX2RhdGFfcmVx
dWVzdF9jYl9zZXQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a19wYXN0ZWJvYXJk
Lmg6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a19wYXN0ZWJvYXJkX3By
aXZhdGUuaDogQWRkZWQuCisgICAgICAgIChFd2tfUGFzdGVib2FyZCk6CisgICAgICAgICogVUlQ
cm9jZXNzL1dlYkNvbnRleHQuaDoKKyAgICAgICAgKFdlYkNvbnRleHQpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJDb250ZXh0Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIFVJUHJvY2Vzcy9lZmwv
V2ViQ29udGV4dEVmbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHQ6OnNldFBhc3Rl
Ym9hcmREYXRhRm9yVHlwZSk6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJDb250ZXh0OjpyZXF1ZXN0UGFzdGVib2FyZERhdGFGb3JUeXBlKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvZWZsL1dlYlBhc3RlYm9hcmRDbGllbnRFZmwuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdl
YktpdCk6CisgICAgICAgIChXZWJLaXQ6OmdldERhdGFUeXBlRnJvbVN0cmluZyk6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhc3RlYm9hcmRDbGllbnRFZmw6OnNldERhdGEpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYXN0ZWJvYXJkQ2xpZW50RWZsOjpyZXF1ZXN0RGF0YSk6CisgICAgICAgICogVUlQ
cm9jZXNzL2VmbC9XZWJQYXN0ZWJvYXJkQ2xpZW50RWZsLmg6IEFkZGVkLgorICAgICAgICAoV2Vi
S2l0KToKKyAgICAgICAgKFdlYlBhc3RlYm9hcmRDbGllbnRFZmwpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9lZmwvV2ViUGFzdGVib2FyZFByb3h5RWZsLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJL
aXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYXN0ZWJvYXJkUHJveHlFZmw6OnNoYXJlZCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhc3RlYm9hcmRQcm94eUVmbDo6V2ViUGFzdGVib2FyZFByb3h5
RWZsKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFzdGVib2FyZFByb3h5RWZsOjppbml0aWFsaXpl
Q2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFzdGVib2FyZFByb3h5RWZsOjpzZXRQYXN0
ZWJvYXJkRGF0YUZvclR5cGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYXN0ZWJvYXJkUHJveHlF
Zmw6OnJlcXVlc3RQYXN0ZWJvYXJkRGF0YUZvclR5cGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9l
ZmwvV2ViUGFzdGVib2FyZFByb3h5RWZsLmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0KToKKyAg
ICAgICAgKFdlYlBhc3RlYm9hcmRQcm94eUVmbCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhc3Rl
Ym9hcmRQcm94eUVmbDo6Y2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFzdGVib2FyZFBy
b3h5RWZsOjp0eXBlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBs
YXRmb3JtU3RyYXRlZ2llcy5jcHA6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnNldERhdGFGb3JUeXBlKToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZXF1ZXN0RGF0YUZvclR5cGUpOgorICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmg6CisgICAg
ICAgIChXZWJQbGF0Zm9ybVN0cmF0ZWdpZXMpOgorCiAyMDEyLTExLTIxICBKb25nc2VvayBZYW5n
ICA8anM0NS55YW5nQHNhbXN1bmcuY29tPgogCiAgICAgICAgIFtFRkxdW1dLMl0gUmVuYW1lIGV3
a192aWV3X3NldHRpbmdfZW5jb2RpbmdfY3VzdG9tX1hYWCB0byBld2tfdmlld19jdXN0b21fZW5j
b2RpbmdfWFhYCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZSBi
L1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlCmluZGV4IDY3OWE2YTUuLjNiNThmM2Mg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlCkBAIC0zNCw2ICszNCw3IEBAIExJU1QoQVBQRU5E
IFdlYktpdDJfU09VUkNFUwogCiAgICAgU2hhcmVkL1BsdWdpbnMvTmV0c2NhcGUveDExL05ldHNj
YXBlUGx1Z2luTW9kdWxlWDExLmNwcAogCisgICAgVUlQcm9jZXNzL0FQSS9DL2VmbC9XS1Bhc3Rl
Ym9hcmRFZmwuY3BwCiAgICAgVUlQcm9jZXNzL0FQSS9DL2VmbC9XS1ZpZXcuY3BwCiAgICAgCiAg
ICAgVUlQcm9jZXNzL0FQSS9jcHAvZWZsL1dLRWluYVNoYXJlZFN0cmluZy5jcHAKQEAgLTYyLDYg
KzYzLDcgQEAgTElTVChBUFBFTkQgV2ViS2l0Ml9TT1VSQ0VTCiAgICAgVUlQcm9jZXNzL0FQSS9l
ZmwvZXdrX25hdmlnYXRpb25fZGF0YS5jcHAKICAgICBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfbmF2
aWdhdGlvbl9wb2xpY3lfZGVjaXNpb24uY3BwCiAgICAgVUlQcm9jZXNzL0FQSS9lZmwvZXdrX29i
amVjdC5jcHAKKyAgICBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfcGFzdGVib2FyZC5jcHAKICAgICBV
SVByb2Nlc3MvQVBJL2VmbC9ld2tfcG9wdXBfbWVudS5jcHAKICAgICBVSVByb2Nlc3MvQVBJL2Vm
bC9ld2tfcG9wdXBfbWVudV9pdGVtLmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a19yZXNv
dXJjZS5jcHAKQEAgLTk5LDYgKzEwMSw4IEBAIExJU1QoQVBQRU5EIFdlYktpdDJfU09VUkNFUwog
ICAgIFVJUHJvY2Vzcy9lZmwvV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eUVmbC5jcHAKICAgICBV
SVByb2Nlc3MvZWZsL1dlYkluc3BlY3RvclByb3h5RWZsLmNwcAogICAgIFVJUHJvY2Vzcy9lZmwv
V2ViUGFnZVByb3h5RWZsLmNwcAorICAgIFVJUHJvY2Vzcy9lZmwvV2ViUGFzdGVib2FyZENsaWVu
dEVmbC5jcHAKKyAgICBVSVByb2Nlc3MvZWZsL1dlYlBhc3RlYm9hcmRQcm94eUVmbC5jcHAKICAg
ICBVSVByb2Nlc3MvZWZsL1dlYlBvcHVwTWVudVByb3h5RWZsLmNwcAogICAgIFVJUHJvY2Vzcy9l
ZmwvV2ViUHJlZmVyZW5jZXNFZmwuY3BwCiAgICAgVUlQcm9jZXNzL2VmbC9XZWJQcm9jZXNzUHJv
eHlFZmwuY3BwCkBAIC0yNjgsNiArMjcyLDcgQEAgU0VUIChFV2ViS2l0Ml9IRUFERVJTCiAgICAg
IiR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfbmF2aWdh
dGlvbl9kYXRhLmgiCiAgICAgIiR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9VSVByb2Nlc3Mv
QVBJL2VmbC9ld2tfbmF2aWdhdGlvbl9wb2xpY3lfZGVjaXNpb24uaCIKICAgICAiJHtDTUFLRV9D
VVJSRU5UX1NPVVJDRV9ESVJ9L1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19vYmplY3QuaCIKKyAgICAi
JHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19wYXN0ZWJv
YXJkLmgiCiAgICAgIiR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9VSVByb2Nlc3MvQVBJL2Vm
bC9ld2tfcG9wdXBfbWVudS5oIgogICAgICIke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vVUlQ
cm9jZXNzL0FQSS9lZmwvZXdrX3BvcHVwX21lbnVfaXRlbS5oIgogICAgICIke0NNQUtFX0NVUlJF
TlRfU09VUkNFX0RJUn0vVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3Jlc291cmNlLmgiCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvZWZsL1dLQmFzZUVmbC5oIGIvU291cmNl
L1dlYktpdDIvU2hhcmVkL0FQSS9jL2VmbC9XS0Jhc2VFZmwuaAppbmRleCA2MTg0YzgxLi4zNWVm
ODRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvZWZsL1dLQmFzZUVm
bC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9lZmwvV0tCYXNlRWZsLmgKQEAg
LTI1LDUgKzI1LDYgQEAKICNlbmRpZgogCiB0eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVXS1Zp
ZXcqIFdLVmlld1JlZjsKK3R5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZVdLUGFzdGVib2FyZCog
V0tQYXN0ZWJvYXJkUmVmOwogCiAjZW5kaWYgLyogV0tCYXNlRWZsX2ggKi8KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUElPYmplY3QuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9BUElPYmplY3QuaAppbmRleCAzNDE4MWVjLi45YTQ5MGM5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvQVBJT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQ
SU9iamVjdC5oCkBAIC0xMzEsNiArMTMxLDcgQEAgcHVibGljOgogICAgICAgICAvLyBQbGF0Zm9y
bSBzcGVjaWZpYwogICAgICAgICBUeXBlRWRpdENvbW1hbmRQcm94eSwKICAgICAgICAgVHlwZVZp
ZXcsCisgICAgICAgIFR5cGVQYXN0ZWJvYXJkUHJveHksCiAjaWYgVVNFKFNPVVApCiAgICAgICAg
IFR5cGVTb3VwUmVxdWVzdE1hbmFnZXIsCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvQy9lZmwvV0tQYXN0ZWJvYXJkRWZsLmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvQy9lZmwvV0tQYXN0ZWJvYXJkRWZsLmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZTI3NmNhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL2VmbC9XS1Bhc3RlYm9hcmRFZmwuY3BwCkBAIC0wLDAg
KzEsNDAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgU2Ftc3VuZyBFbGVjdHJvbmljcwor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdI
VCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgVEhFIENPUFlSSUdIVCBIT0xERVIgT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORworICogTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV0tQ
YXN0ZWJvYXJkRWZsLmgiCisKKyNpbmNsdWRlICJXS0FQSUNhc3QuaCIKKyNpbmNsdWRlICJXZWJQ
YXN0ZWJvYXJkUHJveHlFZmwuaCIKKwordXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKKwordm9pZCBX
S1Bhc3RlYm9hcmRTZXRDbGllbnQoY29uc3QgV0tQYXN0ZWJvYXJkQ2xpZW50RWZsKiBjbGllbnQp
Cit7CisgICAgaWYgKGNsaWVudCAmJiBjbGllbnQtPnZlcnNpb24pCisgICAgICAgIHJldHVybjsK
KworICAgIFdlYlBhc3RlYm9hcmRQcm94eUVmbDo6c2hhcmVkKCktPmluaXRpYWxpemVDbGllbnQo
Y2xpZW50KTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9l
ZmwvV0tQYXN0ZWJvYXJkRWZsLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvZWZs
L1dLUGFzdGVib2FyZEVmbC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk0
ZjkyYmMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Mv
ZWZsL1dLUGFzdGVib2FyZEVmbC5oCkBAIC0wLDAgKzEsNjIgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTIgU2Ftc3VuZyBFbGVjdHJvbmljcworICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMK
KyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVIgT1IK
KyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORworICogTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZu
ZGVmIFdLUGFzdGVib2FyZEVmbF9oCisjZGVmaW5lIFdLUGFzdGVib2FyZEVmbF9oCisKKyNpbmNs
dWRlIDxXZWJLaXQyL1dLQmFzZS5oPgorCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAiQyIg
eworI2VuZGlmCisKKy8vIFBhc3RlYm9hcmQgZGF0YSB0eXBlcy4KK2VudW0geworICAgIGtXS1Bh
c3RlYm9hcmROb0RhdGEgPSAwLAorICAgIGtXS1Bhc3RlYm9hcmRUZXh0ID0gMSwKKyAgICBrV0tQ
YXN0ZWJvYXJkTWFya3VwID0gMgorfTsKK3R5cGVkZWYgdWludDMyX3QgV0tQYXN0ZWJvYXJkRGF0
YVR5cGU7CisKK3R5cGVkZWYgdm9pZCAoKldLUGFzdGVib2FyZFNldERhdGFDYWxsYmFjaykoV0tT
dHJpbmdSZWYgZGF0YSwgV0tQYXN0ZWJvYXJkRGF0YVR5cGUgZGF0YVR5cGUsIGNvbnN0IHZvaWQq
IGNsaWVudEluZm8pOwordHlwZWRlZiBXS1N0cmluZ1JlZiAoKldLUGFzdGVib2FyZFJlcXVlc3RE
YXRhQ2FsbGJhY2spKFdLUGFzdGVib2FyZERhdGFUeXBlIGRhdGFUeXBlLCBjb25zdCB2b2lkKiBj
bGllbnRJbmZvKTsKKworc3RydWN0IFdLUGFzdGVib2FyZENsaWVudEVmbCB7CisgICAgaW50ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlcnNpb247Cisg
ICAgY29uc3Qgdm9pZCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNs
aWVudEluZm87CisgICAgV0tQYXN0ZWJvYXJkU2V0RGF0YUNhbGxiYWNrICAgICAgICAgICAgICAg
ICAgICAgICAgIHNldERhdGE7CisgICAgV0tQYXN0ZWJvYXJkUmVxdWVzdERhdGFDYWxsYmFjayAg
ICAgICAgICAgICAgICAgICAgIHJlcXVlc3REYXRhOworfTsKK3R5cGVkZWYgc3RydWN0IFdLUGFz
dGVib2FyZENsaWVudEVmbCBXS1Bhc3RlYm9hcmRDbGllbnRFZmw7CisKK2VudW0geyBrV0tQYXN0
ZWJvYXJkQ2xpZW50RWZsQ3VycmVudFZlcnNpb24gPSAwIH07CisKK1dLX0VYUE9SVCB2b2lkIFdL
UGFzdGVib2FyZFNldENsaWVudChjb25zdCBXS1Bhc3RlYm9hcmRDbGllbnRFZmwqIGNsaWVudCk7
CisKKyNpZmRlZiBfX2NwbHVzcGx1cworfQorI2VuZGlmCisKKyNlbmRpZiAvKiBXS1Bhc3RlYm9h
cmRFZmxfaCAqLwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwv
RVdlYktpdDIuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0VXZWJLaXQyLmgK
aW5kZXggYWRhYWUxZS4uMmFlNzUzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9lZmwvRVdlYktpdDIuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2VmbC9FV2ViS2l0Mi5oCkBAIC00Niw2ICs0Niw3IEBACiAjaW5jbHVkZSAiZXdrX25hdmlnYXRp
b25fZGF0YS5oIgogI2luY2x1ZGUgImV3a19uYXZpZ2F0aW9uX3BvbGljeV9kZWNpc2lvbi5oIgog
I2luY2x1ZGUgImV3a19vYmplY3QuaCIKKyNpbmNsdWRlICJld2tfcGFzdGVib2FyZC5oIgogI2lu
Y2x1ZGUgImV3a19wb3B1cF9tZW51LmgiCiAjaW5jbHVkZSAiZXdrX3BvcHVwX21lbnVfaXRlbS5o
IgogI2luY2x1ZGUgImV3a19yZXNvdXJjZS5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHQuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9lZmwvZXdrX2NvbnRleHQuY3BwCmluZGV4IDEzNTM0OTguLmYzOGM2NWUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dC5jcHAKQEAg
LTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlICJld2tfY29va2llX21hbmFnZXJfcHJpdmF0ZS5oIgog
I2luY2x1ZGUgImV3a19kYXRhYmFzZV9tYW5hZ2VyX3ByaXZhdGUuaCIKICNpbmNsdWRlICJld2tf
ZmF2aWNvbl9kYXRhYmFzZV9wcml2YXRlLmgiCisjaW5jbHVkZSAiZXdrX3Bhc3RlYm9hcmRfcHJp
dmF0ZS5oIgogI2luY2x1ZGUgImV3a19wcml2YXRlLmgiCiAjaW5jbHVkZSAiZXdrX3N0b3JhZ2Vf
bWFuYWdlcl9wcml2YXRlLmgiCiAjaW5jbHVkZSAiZXdrX3VybF9zY2hlbWVfcmVxdWVzdF9wcml2
YXRlLmgiCkBAIC05NSw2ICs5Niw3IEBAIEV3a0NvbnRleHQ6OkV3a0NvbnRleHQoUGFzc1JlZlB0
cjxXZWJDb250ZXh0PiBjb250ZXh0KQogICAgICAgICBld2tfc2V0dGluZ3Nfc3BlbGxfY2hlY2tp
bmdfbGFuZ3VhZ2VzX3NldCgwKTsKICAgICB9CiAjZW5kaWYKKyAgICBFd2tfUGFzdGVib2FyZDo6
aW5pdGlhbGl6ZSgpOwogfQogCiBFd2tDb250ZXh0Ojp+RXdrQ29udGV4dCgpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfcGFzdGVib2FyZC5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfcGFzdGVib2FyZC5jcHAKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmUxNDM0ZQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19wYXN0ZWJvYXJkLmNwcApAQCAt
MCwwICsxLDEwMSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBTYW1zdW5nIEVsZWN0cm9u
aWNzCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09Q
WVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HCisg
KiBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJld2tfcGFzdGVib2FyZC5oIgorCisjaW5jbHVkZSAiV0tBUElDYXN0LmgiCisjaW5jbHVkZSAi
V0tQYXN0ZWJvYXJkRWZsLmgiCisjaW5jbHVkZSAiV0tTdHJpbmcuaCIKKyNpbmNsdWRlICJXS1Jl
dGFpblB0ci5oIgorI2luY2x1ZGUgImV3a19wYXN0ZWJvYXJkX3ByaXZhdGUuaCIKKyNpbmNsdWRl
ICJld2tfcHJpdmF0ZS5oIgorI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KKwordXNpbmcg
bmFtZXNwYWNlIFdlYktpdDsKKworc3RhdGljIEV3a19QYXN0ZWJvYXJkX0RhdGFfU2V0X0NiIGRh
dGFTZXRDYWxsYmFjayA9IDA7CitzdGF0aWMgRXdrX1Bhc3RlYm9hcmRfRGF0YV9SZXF1ZXN0X0Ni
IGRhdGFSZXF1ZXN0Q2FsbGJhY2sgPSAwOworCitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVN
KEVXS19QQVNURUJPQVJEX05PX0RBVEEsIGtXS1Bhc3RlYm9hcmROb0RhdGEpOworQ09NUElMRV9B
U1NFUlRfTUFUQ0hJTkdfRU5VTShFV0tfUEFTVEVCT0FSRF9URVhULCBrV0tQYXN0ZWJvYXJkVGV4
dCk7CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKEVXS19QQVNURUJPQVJEX01BUktVUCwg
a1dLUGFzdGVib2FyZE1hcmt1cCk7CisKK3N0YXRpYyB2b2lkIHNldERhdGEoV0tTdHJpbmdSZWYg
ZGF0YSwgV0tQYXN0ZWJvYXJkRGF0YVR5cGUgdHlwZSwgY29uc3Qgdm9pZCopCit7CisgICAgaWYg
KGRhdGFTZXRDYWxsYmFjaykKKyAgICAgICAgZGF0YVNldENhbGxiYWNrKHRvSW1wbChkYXRhKS0+
c3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgc3RhdGljX2Nhc3Q8RXdrX1Bhc3RlYm9hcmRfRGF0YV9U
eXBlPih0eXBlKSk7Cit9CisKK3N0YXRpYyBXS1N0cmluZ1JlZiByZXF1ZXN0RGF0YShXS1Bhc3Rl
Ym9hcmREYXRhVHlwZSB0eXBlLCBjb25zdCB2b2lkKikKK3sKKyAgICBpZiAoZGF0YVJlcXVlc3RD
YWxsYmFjaykgeworICAgICAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gZGF0YShBZG9wdFdL
LCBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZyhkYXRhUmVxdWVzdENhbGxiYWNrKHN0YXRp
Y19jYXN0PEV3a19QYXN0ZWJvYXJkX0RhdGFfVHlwZT4odHlwZSkpKSk7CisgICAgICAgIHJldHVy
biBkYXRhLmdldCgpOworICAgIH0KKworICAgIHJldHVybiBXS1N0cmluZ1JlZigpOworfQorCitu
YW1lc3BhY2UgRXdrX1Bhc3RlYm9hcmQgeworCisvKioKKyAqIEluaXRpYWxpemVzIHBhc3RlYm9h
cmQgY2FsbGJhY2tzLgorICoKKyAqIEBpbnRlcm5hbAorICoKKyAqIFBhc3RlYm9hcmQgaW4gRUZM
IGZyYW1ld29yayB1c2VzIEVsZW1lbnRhcnkgd2hpY2ggY2Fubm90IGJlCisgKiBpbmNsdWRlZCBp
bnRvIFdlYktpdCwgc28gYXBwbGljYXRpb24gaGFzIHRvIGltcGxlbWVudCBjYWxsYmFja3MKKyAq
IHRvIHByb3ZpZGUgcGFzdGVib2FyZCBzdXBwb3J0LgorICovCit2b2lkIGluaXRpYWxpemUoKQor
eworICAgIHN0YXRpYyBib29sIGRpZEluaXRpYWxpemVQYXN0ZWJvYXJkQ2xpZW50ID0gZmFsc2U7
CisKKyAgICBpZiAoZGlkSW5pdGlhbGl6ZVBhc3RlYm9hcmRDbGllbnQpCisgICAgICAgIHJldHVy
bjsKKworICAgIFdLUGFzdGVib2FyZENsaWVudEVmbCBwYXN0ZWJvYXJkQ2xpZW50RWZsID0gewor
ICAgICAgICBrV0tQYXN0ZWJvYXJkQ2xpZW50RWZsQ3VycmVudFZlcnNpb24sCisgICAgICAgIDAs
IC8vIGNsaWVudEluZm8KKyAgICAgICAgc2V0RGF0YSwKKyAgICAgICAgcmVxdWVzdERhdGEKKyAg
ICB9OworICAgIFdLUGFzdGVib2FyZFNldENsaWVudCgmcGFzdGVib2FyZENsaWVudEVmbCk7CisK
KyAgICBkaWRJbml0aWFsaXplUGFzdGVib2FyZENsaWVudCA9IHRydWU7Cit9CisKK30gLy8gbmFt
ZXNwYWNlIEV3a19QYXN0ZWJvYXJkCisKK3ZvaWQgZXdrX3Bhc3RlYm9hcmRfZGF0YV9zZXRfY2Jf
c2V0KEV3a19QYXN0ZWJvYXJkX0RhdGFfU2V0X0NiIGNhbGxiYWNrKQoreworICAgIGRhdGFTZXRD
YWxsYmFjayA9IGNhbGxiYWNrOworfQorCit2b2lkIGV3a19wYXN0ZWJvYXJkX2RhdGFfcmVxdWVz
dF9jYl9zZXQoRXdrX1Bhc3RlYm9hcmRfRGF0YV9SZXF1ZXN0X0NiIGNhbGxiYWNrKQoreworICAg
IGRhdGFSZXF1ZXN0Q2FsbGJhY2sgPSBjYWxsYmFjazsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19wYXN0ZWJvYXJkLmggYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfcGFzdGVib2FyZC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAuLjQ1ZTZiNWQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfcGFzdGVib2FyZC5oCkBAIC0wLDAgKzEsODMgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgU2Ftc3VuZyBFbGVjdHJvbmljcworICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFO
RCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlS
SUdIVCBIT0xERVIgT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORworICogTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaWZuZGVmIGV3a19wYXN0ZWJvYXJkX2gKKyNkZWZpbmUgZXdrX3Bhc3RlYm9h
cmRfaAorCisjaW5jbHVkZSA8RXZhcy5oPgorCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAi
QyIgeworI2VuZGlmCisKKy8qKgorICogRW51bSB2YWx1ZXMgdXNlZCB0byBzZXQgcGFzdGVib2Fy
ZCBkYXRhIHR5cGUuCisgKi8KK2VudW0gRXdrX1Bhc3RlYm9hcmRfRGF0YV9UeXBlIHsKKyAgICBF
V0tfUEFTVEVCT0FSRF9OT19EQVRBLAorICAgIEVXS19QQVNURUJPQVJEX1RFWFQsCisgICAgRVdL
X1BBU1RFQk9BUkRfTUFSS1VQCit9OworCisvKiBDcmVhdGVzIGEgdHlwZSBuYW1lIGZvciB0aGUg
RXdrX1Bhc3RlYm9hcmRfRGF0YV9UeXBlLiAqLwordHlwZWRlZiBlbnVtIEV3a19QYXN0ZWJvYXJk
X0RhdGFfVHlwZSBFd2tfUGFzdGVib2FyZF9EYXRhX1R5cGU7CisKKy8qKgorICogRGVmaW5lcyBh
IHR5cGUgbmFtZSBmb3IgdGhlIGNhbGxiYWNrIGZ1bmN0aW9uIHRvIHBlcmZvcm0gY29weSBvcGVy
YXRpb24gd2l0aCBnaXZlbiBkYXRhIHR5cGUuCisgKgorICogQHBhcmFtIGRhdGEgdG8gYmUgY29w
aWVkCisgKiBAcGFyYW0gdHlwZSBvZiBjb3BpZWQgZGF0YQorICovCit0eXBlZGVmIHZvaWQgKCpF
d2tfUGFzdGVib2FyZF9EYXRhX1NldF9DYikoY29uc3QgY2hhciAqZGF0YSwgRXdrX1Bhc3RlYm9h
cmRfRGF0YV9UeXBlIHR5cGUpOworCisvKioKKyAqIERlZmluZXMgYSB0eXBlIG5hbWUgZm9yIHRo
ZSBjYWxsYmFjayBmdW5jdGlvbiB0byByZXF1ZXN0IGZvciBkYXRhIHdpdGggZ2l2ZW4gdHlwZS4K
KyAqCisgKiBUaGlzIGNhbGxiYWNrIHdpbGwgcmVxdWVzdCBhbmQgcmV0dXJuIGlmIHJlY2VpdmVk
IGEgZGF0YSBmb3IgZ2l2ZW4gdHlwZS4KKyAqCisgKiBAcGFyYW0gdHlwZSBvZiByZXF1ZXN0ZWQg
ZGF0YQorICoKKyAqIEByZXR1cm4gcmVxdWVzdGVkIGRhdGEgaWYgYXQgc3VjY2VzcyBvciBAYyBO
VUxMIGF0IGZhaWx1cmUKKyAqLwordHlwZWRlZiBjb25zdCBjaGFyICooKkV3a19QYXN0ZWJvYXJk
X0RhdGFfUmVxdWVzdF9DYikoRXdrX1Bhc3RlYm9hcmRfRGF0YV9UeXBlIHR5cGUpOworCisvKioK
KyAqIFNldHMgYSBjYWxsYmFjayBmdW5jdGlvbiB0byBwZXJmb3JtIGNvcHkgb3BlcmF0aW9uLgor
ICoKKyAqIEBwYXJhbSBjYiBhIG5ldyBjYWxsYmFjayB0byBzZXQgLSBpdCBtdXN0IG5vdCBiZSBA
YyBOVUxMCisgKi8KK0VBUEkgdm9pZCBld2tfcGFzdGVib2FyZF9kYXRhX3NldF9jYl9zZXQoRXdr
X1Bhc3RlYm9hcmRfRGF0YV9TZXRfQ2IgY2IpOworCisvKioKKyAqIFNldHMgYSBjYWxsYmFjayBm
dW5jdGlvbiB0byByZXF1ZXN0IGZvciBwYXN0ZWJvYXJkIGRhdGEuCisgKgorICogQHBhcmFtIGNi
IGEgbmV3IGNhbGxiYWNrIHRvIHNldCAtIGl0IG11c3Qgbm90IGJlIEBjIE5VTEwKKyAqLworRUFQ
SSB2b2lkIGV3a19wYXN0ZWJvYXJkX2RhdGFfcmVxdWVzdF9jYl9zZXQoRXdrX1Bhc3RlYm9hcmRf
RGF0YV9SZXF1ZXN0X0NiIGNiKTsKKworI2lmZGVmIF9fY3BsdXNwbHVzCit9CisjZW5kaWYKKyNl
bmRpZiAvLyBld2tfcGFzdGVib2FyZF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2VmbC9ld2tfcGFzdGVib2FyZF9wcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2VmbC9ld2tfcGFzdGVib2FyZF9wcml2YXRlLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMC4uNWJlNThlZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19wYXN0ZWJvYXJkX3ByaXZhdGUuaApAQCAtMCww
ICsxLDM1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIFNhbXN1bmcgRWxlY3Ryb25pY3MK
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklH
SFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIFRIRSBDT1BZUklHSFQgSE9MREVSIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcKKyAqIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBld2tfcGFzdGVib2FyZF9wcml2YXRlX2gK
KyNkZWZpbmUgZXdrX3Bhc3RlYm9hcmRfcHJpdmF0ZV9oCisKK25hbWVzcGFjZSBFd2tfUGFzdGVi
b2FyZCB7CisKK3ZvaWQgaW5pdGlhbGl6ZSgpOworCit9CisKKyNlbmRpZiAvLyBld2tfcGFzdGVi
b2FyZF9wcml2YXRlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJD
b250ZXh0LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5oCmluZGV4IDJj
ZjdiYjUuLmUwMTFkMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJD
b250ZXh0LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuaApAQCAt
Mjc0LDYgKzI3NCwxMSBAQCBwcml2YXRlOgogICAgIHZvaWQgc2V0UGFzdGVib2FyZEJ1ZmZlckZv
clR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkVHlwZSwgY29uc3QgU2hhcmVkTWVtb3J5OjpIYW5kbGUmLCB1aW50NjRfdCBzaXplKTsKICNl
bmRpZgogCisjaWYgUExBVEZPUk0oRUZMKQorICAgIHZvaWQgc2V0UGFzdGVib2FyZERhdGFGb3JU
eXBlKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYgZGF0YVR5cGUpOworICAgIHZvaWQgcmVx
dWVzdFBhc3RlYm9hcmREYXRhRm9yVHlwZShjb25zdCBTdHJpbmcmIGRhdGFUeXBlLCBTdHJpbmcm
IHZhbHVlKTsKKyNlbmRpZgorCiAjaWYgIVBMQVRGT1JNKE1BQykKICAgICAvLyBGSVhNRTogVGhp
cyBhIGR1bW15IG1lc3NhZ2UsIHRvIGF2b2lkIGJyZWFraW5nIHRoZSBidWlsZCBmb3IgcGxhdGZv
cm1zIHRoYXQgZG9uJ3QgcmVxdWlyZQogICAgIC8vIGFueSBzeW5jaHJvbm91cyBtZXNzYWdlcywg
YW5kIHNob3VsZCBiZSByZW1vdmVkIHdoZW4gPHJkYXI6Ly9wcm9ibGVtLzg3NzUxMTU+IGlzIGZp
eGVkLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQubWVz
c2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5tZXNzYWdlcy5p
bgppbmRleCAyNjY0YTVmLi5mYTM3NzA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViQ29udGV4dC5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViQ29udGV4dC5tZXNzYWdlcy5pbgpAQCAtNTEsNCArNTEsOSBAQCBtZXNzYWdlcyAtPiBX
ZWJDb250ZXh0IHsKICAgICAvLyBhbnkgc3luY2hyb25vdXMgbWVzc2FnZXMsIGFuZCBzaG91bGQg
YmUgcmVtb3ZlZCB3aGVuIDxyZGFyOi8vcHJvYmxlbS84Nzc1MTE1PiBpcyBmaXhlZC4KICAgICBE
dW1teSgpIC0+IChib29sIGR1bW15UmV0dXJuKQogI2VuZGlmCisKKyNpZiBQTEFURk9STShFRkwp
CisgICAgU2V0UGFzdGVib2FyZERhdGFGb3JUeXBlKFdURjo6U3RyaW5nIGRhdGEsIFdURjo6U3Ry
aW5nIGRhdGFUeXBlKQorICAgIFJlcXVlc3RQYXN0ZWJvYXJkRGF0YUZvclR5cGUoV1RGOjpTdHJp
bmcgZGF0YVR5cGUpIC0+IChXVEY6OlN0cmluZyBzdHJpbmcpCisjZW5kaWYKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViQ29udGV4dEVmbC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYkNvbnRleHRFZmwuY3BwCmluZGV4IGQ0MzE0NWMu
LmUxZDM0YWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViQ29u
dGV4dEVmbC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJDb250ZXh0
RWZsLmNwcApAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUg
IldlYkNvbnRleHQuaCIKIAorI2luY2x1ZGUgIldlYlBhc3RlYm9hcmRQcm94eUVmbC5oIgogI2lu
Y2x1ZGUgPEVmcmVldC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQXBwbGljYXRpb25DYWNoZVN0b3Jh
Z2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ljb25EYXRhYmFzZS5oPgpAQCAtNzUsNCArNzYsMTQg
QEAgU3RyaW5nIFdlYkNvbnRleHQ6OnBsYXRmb3JtRGVmYXVsdENvb2tpZVN0b3JhZ2VEaXJlY3Rv
cnkoKSBjb25zdAogICAgIHJldHVybiBTdHJpbmcoKTsKIH0KIAordm9pZCBXZWJDb250ZXh0Ojpz
ZXRQYXN0ZWJvYXJkRGF0YUZvclR5cGUoY29uc3QgU3RyaW5nJiBkYXRhLCBjb25zdCBTdHJpbmcm
IGRhdGFUeXBlKQoreworICAgIFdlYlBhc3RlYm9hcmRQcm94eUVmbDo6c2hhcmVkKCktPnNldFBh
c3RlYm9hcmREYXRhRm9yVHlwZShkYXRhLCBkYXRhVHlwZSk7Cit9CisKK3ZvaWQgV2ViQ29udGV4
dDo6cmVxdWVzdFBhc3RlYm9hcmREYXRhRm9yVHlwZShjb25zdCBTdHJpbmcmIGRhdGFUeXBlLCBT
dHJpbmcmIHZhbHVlKQoreworICAgIHZhbHVlID0gV2ViUGFzdGVib2FyZFByb3h5RWZsOjpzaGFy
ZWQoKS0+cmVxdWVzdFBhc3RlYm9hcmREYXRhRm9yVHlwZShkYXRhVHlwZSk7Cit9CisKIH0gLy8g
bmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2Vm
bC9XZWJQYXN0ZWJvYXJkQ2xpZW50RWZsLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9l
ZmwvV2ViUGFzdGVib2FyZENsaWVudEVmbC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMC4uOWViMDhlYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9lZmwvV2ViUGFzdGVib2FyZENsaWVudEVmbC5jcHAKQEAgLTAsMCArMSw2MSBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNzCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5E
IENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJ
R0hUIEhPTERFUiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HCisgKiBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJQYXN0ZWJvYXJkQ2xp
ZW50RWZsLmgiCisKKyNpbmNsdWRlICJXS0FQSUNhc3QuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1Bh
c3RlYm9hcmQuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3N0YXRpYyBXS1Bhc3RlYm9hcmRE
YXRhVHlwZSBnZXREYXRhVHlwZUZyb21TdHJpbmcoY29uc3QgU3RyaW5nJiBkYXRhVHlwZSkKK3sK
KyAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UoZGF0YVR5cGUsIFdlYkNvcmU6OnBhc3RlYm9hcmRE
YXRhVHlwZVRleHQpKQorICAgICAgICByZXR1cm4ga1dLUGFzdGVib2FyZFRleHQ7CisKKyAgICBp
ZiAoZXF1YWxJZ25vcmluZ0Nhc2UoZGF0YVR5cGUsIFdlYkNvcmU6OnBhc3RlYm9hcmREYXRhVHlw
ZU1hcmt1cCkpCisgICAgICAgIHJldHVybiBrV0tQYXN0ZWJvYXJkTWFya3VwOworCisgICAgcmV0
dXJuIGtXS1Bhc3RlYm9hcmROb0RhdGE7Cit9CisKK3ZvaWQgV2ViUGFzdGVib2FyZENsaWVudEVm
bDo6c2V0RGF0YShjb25zdCBTdHJpbmcmIGRhdGEsIGNvbnN0IFN0cmluZyYgZGF0YVR5cGUpCit7
CisgICAgaWYgKCFtX2NsaWVudC5zZXREYXRhKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2Ns
aWVudC5zZXREYXRhKHRvQVBJKGRhdGEuaW1wbCgpKSwgZ2V0RGF0YVR5cGVGcm9tU3RyaW5nKGRh
dGFUeXBlKSwgbV9jbGllbnQuY2xpZW50SW5mbyk7Cit9CisKK1N0cmluZyBXZWJQYXN0ZWJvYXJk
Q2xpZW50RWZsOjpyZXF1ZXN0RGF0YShjb25zdCBTdHJpbmcmIGRhdGFUeXBlKQoreworICAgIGlm
ICghbV9jbGllbnQucmVxdWVzdERhdGEpCisgICAgICAgIHJldHVybiBTdHJpbmcoKTsKKworICAg
IHJldHVybiB0b0ltcGwobV9jbGllbnQucmVxdWVzdERhdGEoZ2V0RGF0YVR5cGVGcm9tU3RyaW5n
KGRhdGFUeXBlKSwgbV9jbGllbnQuY2xpZW50SW5mbykpLT5zdHJpbmcoKTsKK30KKworfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZs
L1dlYlBhc3RlYm9hcmRDbGllbnRFZmwuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwv
V2ViUGFzdGVib2FyZENsaWVudEVmbC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAuLmNhOGIxMmUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
ZWZsL1dlYlBhc3RlYm9hcmRDbGllbnRFZmwuaApAQCAtMCwwICsxLDQzIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDEyIFNhbXN1bmcgRWxlY3Ryb25pY3MKKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJ
QlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9M
REVSIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcKKyAqIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2lmbmRlZiBXZWJQYXN0ZWJvYXJkQ2xpZW50RWZsX2gKKyNkZWZpbmUgV2ViUGFzdGVib2Fy
ZENsaWVudEVmbF9oCisKKyNpbmNsdWRlICJBUElDbGllbnQuaCIKKyNpbmNsdWRlICJXS1Bhc3Rl
Ym9hcmRFZmwuaCIKKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorCituYW1lc3BhY2UgV2ViS2l0
IHsKKworY2xhc3MgV2ViUGFzdGVib2FyZENsaWVudEVmbCA6IHB1YmxpYyBBUElDbGllbnQ8V0tQ
YXN0ZWJvYXJkQ2xpZW50RWZsLCBrV0tQYXN0ZWJvYXJkQ2xpZW50RWZsQ3VycmVudFZlcnNpb24+
IHsKK3B1YmxpYzoKKyAgICB2b2lkIHNldERhdGEoY29uc3QgU3RyaW5nJiBkYXRhLCBjb25zdCBT
dHJpbmcmIGRhdGFUeXBlKTsKKyAgICBTdHJpbmcgcmVxdWVzdERhdGEoY29uc3QgU3RyaW5nJiBk
YXRhVHlwZSk7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIFdlYlBh
c3RlYm9hcmRDbGllbnRFZmxfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L2VmbC9XZWJQYXN0ZWJvYXJkUHJveHlFZmwuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L2VmbC9XZWJQYXN0ZWJvYXJkUHJveHlFZmwuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAuLjc1YzJjM2MKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvZWZsL1dlYlBhc3RlYm9hcmRQcm94eUVmbC5jcHAKQEAgLTAsMCArMSw1OSBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNzCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5E
IENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJ
R0hUIEhPTERFUiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HCisgKiBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJQYXN0ZWJvYXJkUHJv
eHlFZmwuaCIKKworI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KKyNpbmNsdWRl
IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK1dlYlBhc3Rl
Ym9hcmRQcm94eUVmbCogV2ViUGFzdGVib2FyZFByb3h5RWZsOjpzaGFyZWQoKQoreworICAgIHN0
YXRpYyBXZWJQYXN0ZWJvYXJkUHJveHlFZmwqIHBhc3RlYm9hcmRQcm94eUVmbCA9IGFkb3B0UmVm
KG5ldyBXZWJQYXN0ZWJvYXJkUHJveHlFZmwpLmxlYWtSZWYoKTsKKyAgICByZXR1cm4gcGFzdGVi
b2FyZFByb3h5RWZsOworfQorCitXZWJQYXN0ZWJvYXJkUHJveHlFZmw6OldlYlBhc3RlYm9hcmRQ
cm94eUVmbCgpCit7Cit9CisKK3ZvaWQgV2ViUGFzdGVib2FyZFByb3h5RWZsOjppbml0aWFsaXpl
Q2xpZW50KGNvbnN0IFdLUGFzdGVib2FyZENsaWVudEVmbCogY2xpZW50KQoreworICAgIG1fY2xp
ZW50LmluaXRpYWxpemUoY2xpZW50KTsKK30KKwordm9pZCBXZWJQYXN0ZWJvYXJkUHJveHlFZmw6
OnNldFBhc3RlYm9hcmREYXRhRm9yVHlwZShjb25zdCBTdHJpbmcmIGRhdGEsIGNvbnN0IFN0cmlu
ZyYgZGF0YVR5cGUpCit7CisgICAgbV9jbGllbnQuc2V0RGF0YShkYXRhLCBkYXRhVHlwZSk7Cit9
CisKK1N0cmluZyBXZWJQYXN0ZWJvYXJkUHJveHlFZmw6OnJlcXVlc3RQYXN0ZWJvYXJkRGF0YUZv
clR5cGUoY29uc3QgU3RyaW5nJiBkYXRhVHlwZSkKK3sKKyAgICByZXR1cm4gbV9jbGllbnQucmVx
dWVzdERhdGEoZGF0YVR5cGUpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViUGFzdGVib2FyZFByb3h5RWZsLmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlBhc3RlYm9hcmRQcm94eUVmbC5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU4MTQ4MjMKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlBhc3RlYm9hcmRQcm94eUVmbC5o
CkBAIC0wLDAgKzEsNTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgU2Ftc3VuZyBFbGVj
dHJvbmljcworICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhF
IENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVIgT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RworICogTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYlBhc3RlYm9hcmRQcm94
eUVmbF9oCisjZGVmaW5lIFdlYlBhc3RlYm9hcmRQcm94eUVmbF9oCisKKyNpbmNsdWRlICJBUElP
YmplY3QuaCIKKworI2luY2x1ZGUgIldlYlBhc3RlYm9hcmRDbGllbnRFZmwuaCIKKyNpbmNsdWRl
IDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKworbmFtZXNwYWNl
IFdlYktpdCB7CisKK2NsYXNzIFdlYlBhc3RlYm9hcmRQcm94eUVmbCA6IHB1YmxpYyBBUElPYmpl
Y3QgeworcHVibGljOgorICAgIHN0YXRpYyBjb25zdCBUeXBlIEFQSVR5cGUgPSBUeXBlUGFzdGVi
b2FyZFByb3h5OworCisgICAgc3RhdGljIFdlYlBhc3RlYm9hcmRQcm94eUVmbCogc2hhcmVkKCk7
CisKKyAgICB2b2lkIGluaXRpYWxpemVDbGllbnQoY29uc3QgV0tQYXN0ZWJvYXJkQ2xpZW50RWZs
Kik7CisgICAgV2ViUGFzdGVib2FyZENsaWVudEVmbCYgY2xpZW50KCkgeyByZXR1cm4gbV9jbGll
bnQ7IH0KKworICAgIHZvaWQgc2V0UGFzdGVib2FyZERhdGFGb3JUeXBlKGNvbnN0IFN0cmluZyYg
ZGF0YSwgY29uc3QgU3RyaW5nJiBkYXRhVHlwZSk7CisgICAgU3RyaW5nIHJlcXVlc3RQYXN0ZWJv
YXJkRGF0YUZvclR5cGUoY29uc3QgU3RyaW5nJiBkYXRhVHlwZSk7CisKK3ByaXZhdGU6CisgICAg
V2ViUGFzdGVib2FyZFByb3h5RWZsKCk7CisKKyAgICB2aXJ0dWFsIFR5cGUgdHlwZSgpIGNvbnN0
IHsgcmV0dXJuIEFQSVR5cGU7IH0KKworICAgIFdlYlBhc3RlYm9hcmRDbGllbnRFZmwgbV9jbGll
bnQ7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIFdlYlBhc3RlYm9h
cmRQcm94eUVmbF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAKaW5kZXggYzA0
NjY0NC4uYmJjZWU3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcApAQCAt
MzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIldlYkNvbnRleHRNZXNzYWdlcy5oIgogI2luY2x1ZGUg
IldlYkNvb2tpZU1hbmFnZXIuaCIKICNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIK
KyNpbmNsdWRlICJXZWJQYWdlUHJveHlNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3Mu
aCIKICNpbmNsdWRlICJXZWJQcm9jZXNzUHJveHlNZXNzYWdlcy5oIgogI2luY2x1ZGUgPFdlYkNv
cmUvQ29sb3IuaD4KQEAgLTMwMyw2ICszMDQsMjMgQEAgdm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXM6OnNldFN0cmluZ0ZvclR5cGUoY29uc3QgU3RyaW5nJiBzdHJpbmcsIGNvbnN0IFN0cmluZyYK
IH0KICNlbmRpZgogCisjaWYgUExBVEZPUk0oRUZMKQorLy8gUGFzdGVib2FyZFN0cmF0ZWd5Cit2
b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6c2V0RGF0YUZvclR5cGUoY29uc3QgU3RyaW5nJiBk
YXRhLCBjb25zdCBTdHJpbmcmIGRhdGFUeXBlKQoreworICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgp
LmNvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViQ29udGV4dDo6U2V0UGFzdGVib2FyZERh
dGFGb3JUeXBlKGRhdGEsIGRhdGFUeXBlKSwgMCk7Cit9CisKK1N0cmluZyBXZWJQbGF0Zm9ybVN0
cmF0ZWdpZXM6OnJlcXVlc3REYXRhRm9yVHlwZShjb25zdCBTdHJpbmcmIGRhdGFUeXBlKQorewor
ICAgIFN0cmluZyB2YWx1ZTsKKyAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5jb25uZWN0aW9uKCkt
PnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJDb250ZXh0OjpSZXF1ZXN0UGFzdGVib2FyZERhdGFGb3JU
eXBlKGRhdGFUeXBlKSwKKyAgICAgICAgTWVzc2FnZXM6OldlYkNvbnRleHQ6OlJlcXVlc3RQYXN0
ZWJvYXJkRGF0YUZvclR5cGU6OlJlcGx5KHZhbHVlKSwgMCk7CisKKyAgICByZXR1cm4gdmFsdWU7
Cit9CisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZiAvLyBVU0UoUExB
VEZPUk1fU1RSQVRFR0lFUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmggYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCmluZGV4IDA0
MGNmYjEuLmI3ODQ5ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgKKysrIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaApAQCAtOTAs
NiArOTAsMTAgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgc2V0UGF0aG5hbWVzRm9yVHlw
ZShjb25zdCBWZWN0b3I8U3RyaW5nPiYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBz
ZXRTdHJpbmdGb3JUeXBlKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5
cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIE9WRVJSSURFOwogI2VuZGlmCisjaWYg
UExBVEZPUk0oRUZMKQorICAgIHZpcnR1YWwgdm9pZCBzZXREYXRhRm9yVHlwZShjb25zdCBTdHJp
bmcmLCBjb25zdCBTdHJpbmcmIGRhdGFUeXBlKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIFN0cmlu
ZyByZXF1ZXN0RGF0YUZvclR5cGUoY29uc3QgU3RyaW5nJiBkYXRhVHlwZSkgT1ZFUlJJREU7Cisj
ZW5kaWYKIAogI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQogICAgIC8vIFdlYkNvcmU6
OlBsdWdpblN0cmF0ZWd5IGltcGxlbWVudGF0aW9uLgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>175436</attachid>
            <date>2012-11-21 07:10:17 -0800</date>
            <delta_ts>2012-12-11 08:17:17 -0800</delta_ts>
            <desc>proposed patch</desc>
            <filename>pasteboard.diff</filename>
            <type>text/plain</type>
            <size>40160</size>
            <attacher name="Michal Pakula vel Rutka">mpakulavelrutka</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA0Y2VmMjFhLi5iZDI1YjkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjgg
QEAKKzIwMTItMTEtMjEgIE1pY2hhxYIgUGFrdcWCYSB2ZWwgUnV0a2EgIDxtLnBha3VsYUBzYW1z
dW5nLmNvbT4KKworICAgICAgICBbRUZMXVtXSzJdIEltcGxlbWVudGF0aW9uIG9mIHBhc3RlYm9h
cmQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMjQ4
NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEVGTCBk
b2VzIG5vdCBwcm92aWRlIHBsYXRmb3JtLXdpZGUgY29weSBhbmQgcGFzdGUgc3VwcG9ydCwgc28g
d2UgY2Fubm90CisgICAgICAgIGltcGxlbWVudCBwYXN0ZWJvYXJkIGluc2lkZSBXZWJDb3JlIGFz
IGluIG90aGVyIHBvcnRzLCBidXQgaW1wbGVtZW50YXRpb24gaGFzCisgICAgICAgIHRvIGJlIGRv
bmUgb24gV2ViS2l0LXVzaW5nIGFwcGxpY2F0aW9uIHNpZGUuCisKKyAgICAgICAgTm8gbmV3IHRl
c3RzIC0gYWxyZWFkeSBjb3ZlcmVkIGJ5IGV4aXN0aW5nIHRlc3RzLgorCisgICAgICAgICogcGxh
dGZvcm0vUGFzdGVib2FyZC5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogcGxhdGZv
cm0vUGFzdGVib2FyZFN0cmF0ZWd5Lmg6CisgICAgICAgIChQYXN0ZWJvYXJkU3RyYXRlZ3kpOiBB
ZGRlZCB0d28gbWV0aG9kcyBwZXJmb3JtaW5nIGNvcHkgbmFkIHBhc3RlIGluIEVGTCBwb3J0Lgor
ICAgICAgICAqIHBsYXRmb3JtL2VmbC9QYXN0ZWJvYXJkRWZsLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlBhc3RlYm9hcmQ6OlBhc3RlYm9hcmQpOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2Fy
ZDo6d3JpdGVQbGFpblRleHQpOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6d3JpdGVT
ZWxlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6d3JpdGVVUkwpOgorICAg
ICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6ZG9jdW1lbnRGcmFnbWVudCk6CisgICAgICAgIChX
ZWJDb3JlOjpQYXN0ZWJvYXJkOjpwbGFpblRleHQpOgorCiAyMDEyLTExLTIxICBGbG9yaW4gTWFs
aXRhICA8Zm1hbGl0YUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW1NraWFdIEVuY2Fwc3VsYXRl
IGFjY2VzcyB0byBQbGF0Zm9ybUNvbnRleHRTa2lhJ3MgU2tDYW52YXMKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1Bhc3RlYm9hcmQuaAppbmRleCA0MDIyYTYxLi4wOTM4OGVkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vUGFzdGVib2FyZC5oCkBAIC02Myw2ICs2MywxMSBAQCBleHRlcm4gY29uc3QgY2hhciog
V2ViVVJMUGJvYXJkVHlwZTsKIGV4dGVybiBjb25zdCBjaGFyKiBXZWJVUkxzV2l0aFRpdGxlc1Bi
b2FyZFR5cGU7CiAjZW5kaWYKIAorI2lmIFBMQVRGT1JNKEVGTCkKK2NvbnN0IFN0cmluZyBwYXN0
ZWJvYXJkRGF0YVR5cGVUZXh0KCJUZXh0Iik7Citjb25zdCBTdHJpbmcgcGFzdGVib2FyZERhdGFU
eXBlTWFya3VwKCJNYXJrdXAiKTsKKyNlbmRpZgorCiAgICAgY2xhc3MgQXJjaGl2ZVJlc291cmNl
OwogY2xhc3MgQ2xpcGJvYXJkOwogY2xhc3MgRG9jdW1lbnRGcmFnbWVudDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRTdHJhdGVneS5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZFN0cmF0ZWd5LmgKaW5kZXggZjkyMmM2Ni4uODc5YTlm
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZFN0cmF0ZWd5
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZFN0cmF0ZWd5LmgKQEAg
LTU3LDYgKzU3LDEwIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0UGF0aG5hbWVzRm9y
VHlwZShjb25zdCBWZWN0b3I8U3RyaW5nPiYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUs
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0
U3RyaW5nRm9yVHlwZShjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBl
LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSA9IDA7CiAjZW5kaWYKKyNpZiBQTEFURk9S
TShFRkwpCisgICAgdmlydHVhbCB2b2lkIHNldERhdGFGb3JUeXBlKGNvbnN0IFN0cmluZyYsIGNv
bnN0IFN0cmluZyYgZGF0YVR5cGUpID0gMDsKKyAgICB2aXJ0dWFsIFN0cmluZyByZXF1ZXN0RGF0
YUZvclR5cGUoY29uc3QgU3RyaW5nJiBkYXRhVHlwZSkgPSAwOworI2VuZGlmCiBwcm90ZWN0ZWQ6
CiAgICAgdmlydHVhbCB+UGFzdGVib2FyZFN0cmF0ZWd5KCkKICAgICB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvUGFzdGVib2FyZEVmbC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9lZmwvUGFzdGVib2FyZEVmbC5jcHAKaW5kZXggN2ExYWM0NS4uMmRlMDRk
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZsL1Bhc3RlYm9hcmRFZmwu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9QYXN0ZWJvYXJkRWZsLmNwcApA
QCAtMzMsNiArMzMsMTEgQEAKICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAjaW5jbHVk
ZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKKyNpZiBVU0UoUExBVEZPUk1fU1RSQVRFR0lFUykK
KyNpbmNsdWRlICJQYXN0ZWJvYXJkU3RyYXRlZ3kuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybVN0cmF0
ZWdpZXMuaCIKKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFBhc3RlYm9hcmQqIFBh
c3RlYm9hcmQ6OmdlbmVyYWxQYXN0ZWJvYXJkKCkKQEAgLTQzLDIyICs0OCwyNSBAQCBQYXN0ZWJv
YXJkKiBQYXN0ZWJvYXJkOjpnZW5lcmFsUGFzdGVib2FyZCgpCiAKIFBhc3RlYm9hcmQ6OlBhc3Rl
Ym9hcmQoKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKLXZvaWQgUGFzdGVib2FyZDo6
d3JpdGVQbGFpblRleHQoY29uc3QgU3RyaW5nJiwgU21hcnRSZXBsYWNlT3B0aW9uKQordm9pZCBQ
YXN0ZWJvYXJkOjp3cml0ZVBsYWluVGV4dChjb25zdCBTdHJpbmcmIHRleHQsIFNtYXJ0UmVwbGFj
ZU9wdGlvbikKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHBsYXRmb3JtU3RyYXRlZ2ll
cygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+c2V0RGF0YUZvclR5cGUodGV4dCwgcGFzdGVib2Fy
ZERhdGFUeXBlVGV4dCk7CiB9CiAKLXZvaWQgUGFzdGVib2FyZDo6d3JpdGVTZWxlY3Rpb24oUmFu
Z2UqLCBib29sLCBGcmFtZSopCit2b2lkIFBhc3RlYm9hcmQ6OndyaXRlU2VsZWN0aW9uKFJhbmdl
KiBzZWxlY3RlZFJhbmdlLCBib29sLCBGcmFtZSopCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsK
KyAgICBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPnNldERhdGFG
b3JUeXBlKAorICAgICAgICBjcmVhdGVNYXJrdXAoc2VsZWN0ZWRSYW5nZSwgMCwgQW5ub3RhdGVG
b3JJbnRlcmNoYW5nZSwgZmFsc2UsIFJlc29sdmVOb25Mb2NhbFVSTHMpLCBwYXN0ZWJvYXJkRGF0
YVR5cGVNYXJrdXApOwogfQogCi12b2lkIFBhc3RlYm9hcmQ6OndyaXRlVVJMKGNvbnN0IEtVUkwm
LCBjb25zdCBTdHJpbmcmLCBGcmFtZSopCit2b2lkIFBhc3RlYm9hcmQ6OndyaXRlVVJMKGNvbnN0
IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiwgRnJhbWUqKQogewotICAgIG5vdEltcGxlbWVudGVk
KCk7CisgICAgaWYgKHVybC5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKworICAgIHBsYXRm
b3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+c2V0RGF0YUZvclR5cGUodXJs
LnN0cmluZygpLCBwYXN0ZWJvYXJkRGF0YVR5cGVUZXh0KTsKIH0KIAogdm9pZCBQYXN0ZWJvYXJk
Ojp3cml0ZUltYWdlKE5vZGUqLCBjb25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJikKQEAgLTgyLDE2
ICs5MCwzMiBAQCBib29sIFBhc3RlYm9hcmQ6OmNhblNtYXJ0UmVwbGFjZSgpCiAgICAgcmV0dXJu
IGZhbHNlOwogfQogCi1QYXNzUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IFBhc3RlYm9hcmQ6OmRv
Y3VtZW50RnJhZ21lbnQoRnJhbWUqLCBQYXNzUmVmUHRyPFJhbmdlPiwgYm9vbCwgYm9vbCYpCitQ
YXNzUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IFBhc3RlYm9hcmQ6OmRvY3VtZW50RnJhZ21lbnQo
RnJhbWUqIGZyYW1lLCBQYXNzUmVmUHRyPFJhbmdlPiBjb250ZXh0LCBib29sIGFsbG93UGxhaW5U
ZXh0LCBib29sJiBjaG9zZVBsYWluVGV4dCkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAg
IGNob3NlUGxhaW5UZXh0ID0gZmFsc2U7CisKKyAgICBTdHJpbmcgZGF0YSA9IHBsYXRmb3JtU3Ry
YXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+cmVxdWVzdERhdGFGb3JUeXBlKHBhc3Rl
Ym9hcmREYXRhVHlwZU1hcmt1cCk7CisKKyAgICBpZiAoIWRhdGEuaXNFbXB0eSgpKSB7CisgICAg
ICAgIFJlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBmcmFnbWVudCA9IGNyZWF0ZUZyYWdtZW50RnJv
bU1hcmt1cChmcmFtZS0+ZG9jdW1lbnQoKSwgZGF0YSwgIiIsIERpc2FsbG93U2NyaXB0aW5nQ29u
dGVudCk7CisgICAgICAgIGlmIChmcmFnbWVudCkKKyAgICAgICAgICAgIHJldHVybiBmcmFnbWVu
dC5yZWxlYXNlKCk7CisgICAgfQorCisgICAgZGF0YSA9IHBsYXRmb3JtU3RyYXRlZ2llcygpLT5w
YXN0ZWJvYXJkU3RyYXRlZ3koKS0+cmVxdWVzdERhdGFGb3JUeXBlKHBhc3RlYm9hcmREYXRhVHlw
ZVRleHQpOworICAgIGlmIChhbGxvd1BsYWluVGV4dCAmJiAhZGF0YS5pc0VtcHR5KCkpIHsKKyAg
ICAgICAgY2hvc2VQbGFpblRleHQgPSB0cnVlOworICAgICAgICBSZWZQdHI8RG9jdW1lbnRGcmFn
bWVudD4gZnJhZ21lbnQgPSBjcmVhdGVGcmFnbWVudEZyb21UZXh0KGNvbnRleHQuZ2V0KCksIGRh
dGEpOworICAgICAgICBpZiAoZnJhZ21lbnQpCisgICAgICAgICAgICByZXR1cm4gZnJhZ21lbnQu
cmVsZWFzZSgpOworICAgIH0KKwogICAgIHJldHVybiAwOwogfQogCiBTdHJpbmcgUGFzdGVib2Fy
ZDo6cGxhaW5UZXh0KEZyYW1lKikKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVy
biBTdHJpbmcoKTsKKyAgICByZXR1cm4gcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRT
dHJhdGVneSgpLT5yZXF1ZXN0RGF0YUZvclR5cGUocGFzdGVib2FyZERhdGFUeXBlVGV4dCk7CiB9
CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJL
aXQyL0NoYW5nZUxvZwppbmRleCA4OGI5MDllLi5kMzEwZTQxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsNzEgQEAKKzIwMTItMTEtMjEgIE1pY2hhxYIgUGFrdcWCYSB2ZWwgUnV0a2EgIDxtLnBha3Vs
YUBzYW1zdW5nLmNvbT4KKworICAgICAgICBbRUZMXVtXSzJdIEltcGxlbWVudGF0aW9uIG9mIHBh
c3RlYm9hcmQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTEwMjQ4NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEVGTCBkb2VzIG5vdCBwcm92aWRlIHBsYXRmb3JtLXdpZGUgY29weSBhbmQgcGFzdGUgc3VwcG9y
dCwgc28gd2UgY2Fubm90CisgICAgICAgIGltcGxlbWVudCBwYXN0ZWJvYXJkIGluc2lkZSBXZWJD
b3JlIGFzIGluIG90aGVyIHBvcnRzLCBidXQgaW1wbGVtZW50YXRpb24gaGFzCisgICAgICAgIHRv
IGJlIGRvbmUgb24gV2ViS2l0LXVzaW5nIGFwcGxpY2F0aW9uIHNpZGUuCisKKyAgICAgICAgVGhp
cyBwYXRjaCBpcyBhbiBpbml0aWFsIGFwcHJvYWNoIHRvIFBhc3RlYm9hcmQgaW1wbGVtZW50YXRp
b24gaW4gV2ViS2l0MiwKKyAgICAgICAgZm9jdXNpbmcgb24gYmFzaWMgY29weSBhbmQgcGFzdGUg
ZmVhdHVyZXMuIEl0IHBhc3Nlc3MgZGF0YSBhbG9uZyB3aXRoIGRhdGEKKyAgICAgICAgdHlwZSBm
cm9tIFdlYkNvcmUgdG8gV2ViS2l0MiBhbmQgdGhlbiB0aGUgY2xpZW50IGNhbGxiYWNrcyBhcmUg
aW52b2tlZC4KKworICAgICAgICAqIFBsYXRmb3JtRWZsLmNtYWtlOgorICAgICAgICAqIFNoYXJl
ZC9BUEkvYy9lZmwvV0tCYXNlRWZsLmg6CisgICAgICAgICogU2hhcmVkL0FQSU9iamVjdC5oOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9lZmwvV0tQYXN0ZWJvYXJkRWZsLmNwcDogQWRkZWQu
CisgICAgICAgIChXS1Bhc3RlYm9hcmRTZXRDbGllbnQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQy9lZmwvV0tQYXN0ZWJvYXJkRWZsLmg6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvZWZsL0VXZWJLaXQyLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRl
eHQuY3BwOgorICAgICAgICAoRXdrQ29udGV4dDo6RXdrQ29udGV4dCk6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9lZmwvZXdrX3Bhc3RlYm9hcmQuY3BwOiBBZGRlZC4KKyAgICAgICAgKHNldERh
dGEpOgorICAgICAgICAocmVxdWVzdERhdGEpOgorICAgICAgICAoRXdrX1Bhc3RlYm9hcmQpOgor
ICAgICAgICAoRXdrX1Bhc3RlYm9hcmQ6OmluaXRpYWxpemUpOgorICAgICAgICAoZXdrX3Bhc3Rl
Ym9hcmRfZGF0YV9zZXRfY2Jfc2V0KToKKyAgICAgICAgKGV3a19wYXN0ZWJvYXJkX2RhdGFfcmVx
dWVzdF9jYl9zZXQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a19wYXN0ZWJvYXJk
Lmg6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a19wYXN0ZWJvYXJkX3By
aXZhdGUuaDogQWRkZWQuCisgICAgICAgIChFd2tfUGFzdGVib2FyZCk6CisgICAgICAgICogVUlQ
cm9jZXNzL1dlYkNvbnRleHQuaDoKKyAgICAgICAgKFdlYkNvbnRleHQpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJDb250ZXh0Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIFVJUHJvY2Vzcy9lZmwv
V2ViQ29udGV4dEVmbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHQ6OnNldFBhc3Rl
Ym9hcmREYXRhRm9yVHlwZSk6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJDb250ZXh0OjpyZXF1ZXN0UGFzdGVib2FyZERhdGFGb3JUeXBlKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvZWZsL1dlYlBhc3RlYm9hcmRDbGllbnRFZmwuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdl
YktpdCk6CisgICAgICAgIChXZWJLaXQ6OmdldERhdGFUeXBlRnJvbVN0cmluZyk6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhc3RlYm9hcmRDbGllbnRFZmw6OnNldERhdGEpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYXN0ZWJvYXJkQ2xpZW50RWZsOjpyZXF1ZXN0RGF0YSk6CisgICAgICAgICogVUlQ
cm9jZXNzL2VmbC9XZWJQYXN0ZWJvYXJkQ2xpZW50RWZsLmg6IEFkZGVkLgorICAgICAgICAoV2Vi
S2l0KToKKyAgICAgICAgKFdlYlBhc3RlYm9hcmRDbGllbnRFZmwpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9lZmwvV2ViUGFzdGVib2FyZFByb3h5RWZsLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJL
aXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYXN0ZWJvYXJkUHJveHlFZmw6OnNoYXJlZCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhc3RlYm9hcmRQcm94eUVmbDo6V2ViUGFzdGVib2FyZFByb3h5
RWZsKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFzdGVib2FyZFByb3h5RWZsOjppbml0aWFsaXpl
Q2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFzdGVib2FyZFByb3h5RWZsOjpzZXRQYXN0
ZWJvYXJkRGF0YUZvclR5cGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYXN0ZWJvYXJkUHJveHlF
Zmw6OnJlcXVlc3RQYXN0ZWJvYXJkRGF0YUZvclR5cGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9l
ZmwvV2ViUGFzdGVib2FyZFByb3h5RWZsLmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0KToKKyAg
ICAgICAgKFdlYlBhc3RlYm9hcmRQcm94eUVmbCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhc3Rl
Ym9hcmRQcm94eUVmbDo6Y2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFzdGVib2FyZFBy
b3h5RWZsOjp0eXBlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBs
YXRmb3JtU3RyYXRlZ2llcy5jcHA6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnNldERhdGFGb3JUeXBlKToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZXF1ZXN0RGF0YUZvclR5cGUpOgorICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmg6CisgICAg
ICAgIChXZWJQbGF0Zm9ybVN0cmF0ZWdpZXMpOgorCiAyMDEyLTExLTIxICBKb25nc2VvayBZYW5n
ICA8anM0NS55YW5nQHNhbXN1bmcuY29tPgogCiAgICAgICAgIFtFRkxdW1dLMl0gUmVuYW1lIGV3
a192aWV3X3NldHRpbmdfZW5jb2RpbmdfY3VzdG9tX1hYWCB0byBld2tfdmlld19jdXN0b21fZW5j
b2RpbmdfWFhYCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZSBi
L1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlCmluZGV4IDY3OWE2YTUuLjNiNThmM2Mg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlCkBAIC0zNCw2ICszNCw3IEBAIExJU1QoQVBQRU5E
IFdlYktpdDJfU09VUkNFUwogCiAgICAgU2hhcmVkL1BsdWdpbnMvTmV0c2NhcGUveDExL05ldHNj
YXBlUGx1Z2luTW9kdWxlWDExLmNwcAogCisgICAgVUlQcm9jZXNzL0FQSS9DL2VmbC9XS1Bhc3Rl
Ym9hcmRFZmwuY3BwCiAgICAgVUlQcm9jZXNzL0FQSS9DL2VmbC9XS1ZpZXcuY3BwCiAgICAgCiAg
ICAgVUlQcm9jZXNzL0FQSS9jcHAvZWZsL1dLRWluYVNoYXJlZFN0cmluZy5jcHAKQEAgLTYyLDYg
KzYzLDcgQEAgTElTVChBUFBFTkQgV2ViS2l0Ml9TT1VSQ0VTCiAgICAgVUlQcm9jZXNzL0FQSS9l
ZmwvZXdrX25hdmlnYXRpb25fZGF0YS5jcHAKICAgICBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfbmF2
aWdhdGlvbl9wb2xpY3lfZGVjaXNpb24uY3BwCiAgICAgVUlQcm9jZXNzL0FQSS9lZmwvZXdrX29i
amVjdC5jcHAKKyAgICBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfcGFzdGVib2FyZC5jcHAKICAgICBV
SVByb2Nlc3MvQVBJL2VmbC9ld2tfcG9wdXBfbWVudS5jcHAKICAgICBVSVByb2Nlc3MvQVBJL2Vm
bC9ld2tfcG9wdXBfbWVudV9pdGVtLmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a19yZXNv
dXJjZS5jcHAKQEAgLTk5LDYgKzEwMSw4IEBAIExJU1QoQVBQRU5EIFdlYktpdDJfU09VUkNFUwog
ICAgIFVJUHJvY2Vzcy9lZmwvV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eUVmbC5jcHAKICAgICBV
SVByb2Nlc3MvZWZsL1dlYkluc3BlY3RvclByb3h5RWZsLmNwcAogICAgIFVJUHJvY2Vzcy9lZmwv
V2ViUGFnZVByb3h5RWZsLmNwcAorICAgIFVJUHJvY2Vzcy9lZmwvV2ViUGFzdGVib2FyZENsaWVu
dEVmbC5jcHAKKyAgICBVSVByb2Nlc3MvZWZsL1dlYlBhc3RlYm9hcmRQcm94eUVmbC5jcHAKICAg
ICBVSVByb2Nlc3MvZWZsL1dlYlBvcHVwTWVudVByb3h5RWZsLmNwcAogICAgIFVJUHJvY2Vzcy9l
ZmwvV2ViUHJlZmVyZW5jZXNFZmwuY3BwCiAgICAgVUlQcm9jZXNzL2VmbC9XZWJQcm9jZXNzUHJv
eHlFZmwuY3BwCkBAIC0yNjgsNiArMjcyLDcgQEAgU0VUIChFV2ViS2l0Ml9IRUFERVJTCiAgICAg
IiR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfbmF2aWdh
dGlvbl9kYXRhLmgiCiAgICAgIiR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9VSVByb2Nlc3Mv
QVBJL2VmbC9ld2tfbmF2aWdhdGlvbl9wb2xpY3lfZGVjaXNpb24uaCIKICAgICAiJHtDTUFLRV9D
VVJSRU5UX1NPVVJDRV9ESVJ9L1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19vYmplY3QuaCIKKyAgICAi
JHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19wYXN0ZWJv
YXJkLmgiCiAgICAgIiR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9VSVByb2Nlc3MvQVBJL2Vm
bC9ld2tfcG9wdXBfbWVudS5oIgogICAgICIke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vVUlQ
cm9jZXNzL0FQSS9lZmwvZXdrX3BvcHVwX21lbnVfaXRlbS5oIgogICAgICIke0NNQUtFX0NVUlJF
TlRfU09VUkNFX0RJUn0vVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3Jlc291cmNlLmgiCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvZWZsL1dLQmFzZUVmbC5oIGIvU291cmNl
L1dlYktpdDIvU2hhcmVkL0FQSS9jL2VmbC9XS0Jhc2VFZmwuaAppbmRleCA2MTg0YzgxLi4zNWVm
ODRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvZWZsL1dLQmFzZUVm
bC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9lZmwvV0tCYXNlRWZsLmgKQEAg
LTI1LDUgKzI1LDYgQEAKICNlbmRpZgogCiB0eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVXS1Zp
ZXcqIFdLVmlld1JlZjsKK3R5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZVdLUGFzdGVib2FyZCog
V0tQYXN0ZWJvYXJkUmVmOwogCiAjZW5kaWYgLyogV0tCYXNlRWZsX2ggKi8KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUElPYmplY3QuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9BUElPYmplY3QuaAppbmRleCAzNDE4MWVjLi45YTQ5MGM5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvQVBJT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQ
SU9iamVjdC5oCkBAIC0xMzEsNiArMTMxLDcgQEAgcHVibGljOgogICAgICAgICAvLyBQbGF0Zm9y
bSBzcGVjaWZpYwogICAgICAgICBUeXBlRWRpdENvbW1hbmRQcm94eSwKICAgICAgICAgVHlwZVZp
ZXcsCisgICAgICAgIFR5cGVQYXN0ZWJvYXJkUHJveHksCiAjaWYgVVNFKFNPVVApCiAgICAgICAg
IFR5cGVTb3VwUmVxdWVzdE1hbmFnZXIsCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvQy9lZmwvV0tQYXN0ZWJvYXJkRWZsLmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvQy9lZmwvV0tQYXN0ZWJvYXJkRWZsLmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZTI3NmNhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL2VmbC9XS1Bhc3RlYm9hcmRFZmwuY3BwCkBAIC0wLDAg
KzEsNDAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgU2Ftc3VuZyBFbGVjdHJvbmljcwor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdI
VCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgVEhFIENPUFlSSUdIVCBIT0xERVIgT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORworICogTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV0tQ
YXN0ZWJvYXJkRWZsLmgiCisKKyNpbmNsdWRlICJXS0FQSUNhc3QuaCIKKyNpbmNsdWRlICJXZWJQ
YXN0ZWJvYXJkUHJveHlFZmwuaCIKKwordXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKKwordm9pZCBX
S1Bhc3RlYm9hcmRTZXRDbGllbnQoY29uc3QgV0tQYXN0ZWJvYXJkQ2xpZW50RWZsKiBjbGllbnQp
Cit7CisgICAgaWYgKGNsaWVudCAmJiBjbGllbnQtPnZlcnNpb24pCisgICAgICAgIHJldHVybjsK
KworICAgIFdlYlBhc3RlYm9hcmRQcm94eUVmbDo6c2hhcmVkKCktPmluaXRpYWxpemVDbGllbnQo
Y2xpZW50KTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9l
ZmwvV0tQYXN0ZWJvYXJkRWZsLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvZWZs
L1dLUGFzdGVib2FyZEVmbC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk0
ZjkyYmMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Mv
ZWZsL1dLUGFzdGVib2FyZEVmbC5oCkBAIC0wLDAgKzEsNjIgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTIgU2Ftc3VuZyBFbGVjdHJvbmljcworICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMK
KyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVIgT1IK
KyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORworICogTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZu
ZGVmIFdLUGFzdGVib2FyZEVmbF9oCisjZGVmaW5lIFdLUGFzdGVib2FyZEVmbF9oCisKKyNpbmNs
dWRlIDxXZWJLaXQyL1dLQmFzZS5oPgorCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAiQyIg
eworI2VuZGlmCisKKy8vIFBhc3RlYm9hcmQgZGF0YSB0eXBlcy4KK2VudW0geworICAgIGtXS1Bh
c3RlYm9hcmROb0RhdGEgPSAwLAorICAgIGtXS1Bhc3RlYm9hcmRUZXh0ID0gMSwKKyAgICBrV0tQ
YXN0ZWJvYXJkTWFya3VwID0gMgorfTsKK3R5cGVkZWYgdWludDMyX3QgV0tQYXN0ZWJvYXJkRGF0
YVR5cGU7CisKK3R5cGVkZWYgdm9pZCAoKldLUGFzdGVib2FyZFNldERhdGFDYWxsYmFjaykoV0tT
dHJpbmdSZWYgZGF0YSwgV0tQYXN0ZWJvYXJkRGF0YVR5cGUgZGF0YVR5cGUsIGNvbnN0IHZvaWQq
IGNsaWVudEluZm8pOwordHlwZWRlZiBXS1N0cmluZ1JlZiAoKldLUGFzdGVib2FyZFJlcXVlc3RE
YXRhQ2FsbGJhY2spKFdLUGFzdGVib2FyZERhdGFUeXBlIGRhdGFUeXBlLCBjb25zdCB2b2lkKiBj
bGllbnRJbmZvKTsKKworc3RydWN0IFdLUGFzdGVib2FyZENsaWVudEVmbCB7CisgICAgaW50ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlcnNpb247Cisg
ICAgY29uc3Qgdm9pZCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNs
aWVudEluZm87CisgICAgV0tQYXN0ZWJvYXJkU2V0RGF0YUNhbGxiYWNrICAgICAgICAgICAgICAg
ICAgICAgICAgIHNldERhdGE7CisgICAgV0tQYXN0ZWJvYXJkUmVxdWVzdERhdGFDYWxsYmFjayAg
ICAgICAgICAgICAgICAgICAgIHJlcXVlc3REYXRhOworfTsKK3R5cGVkZWYgc3RydWN0IFdLUGFz
dGVib2FyZENsaWVudEVmbCBXS1Bhc3RlYm9hcmRDbGllbnRFZmw7CisKK2VudW0geyBrV0tQYXN0
ZWJvYXJkQ2xpZW50RWZsQ3VycmVudFZlcnNpb24gPSAwIH07CisKK1dLX0VYUE9SVCB2b2lkIFdL
UGFzdGVib2FyZFNldENsaWVudChjb25zdCBXS1Bhc3RlYm9hcmRDbGllbnRFZmwqIGNsaWVudCk7
CisKKyNpZmRlZiBfX2NwbHVzcGx1cworfQorI2VuZGlmCisKKyNlbmRpZiAvKiBXS1Bhc3RlYm9h
cmRFZmxfaCAqLwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwv
RVdlYktpdDIuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0VXZWJLaXQyLmgK
aW5kZXggYWRhYWUxZS4uMmFlNzUzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9lZmwvRVdlYktpdDIuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2VmbC9FV2ViS2l0Mi5oCkBAIC00Niw2ICs0Niw3IEBACiAjaW5jbHVkZSAiZXdrX25hdmlnYXRp
b25fZGF0YS5oIgogI2luY2x1ZGUgImV3a19uYXZpZ2F0aW9uX3BvbGljeV9kZWNpc2lvbi5oIgog
I2luY2x1ZGUgImV3a19vYmplY3QuaCIKKyNpbmNsdWRlICJld2tfcGFzdGVib2FyZC5oIgogI2lu
Y2x1ZGUgImV3a19wb3B1cF9tZW51LmgiCiAjaW5jbHVkZSAiZXdrX3BvcHVwX21lbnVfaXRlbS5o
IgogI2luY2x1ZGUgImV3a19yZXNvdXJjZS5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHQuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9lZmwvZXdrX2NvbnRleHQuY3BwCmluZGV4IDEzNTM0OTguLmYzOGM2NWUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dC5jcHAKQEAg
LTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlICJld2tfY29va2llX21hbmFnZXJfcHJpdmF0ZS5oIgog
I2luY2x1ZGUgImV3a19kYXRhYmFzZV9tYW5hZ2VyX3ByaXZhdGUuaCIKICNpbmNsdWRlICJld2tf
ZmF2aWNvbl9kYXRhYmFzZV9wcml2YXRlLmgiCisjaW5jbHVkZSAiZXdrX3Bhc3RlYm9hcmRfcHJp
dmF0ZS5oIgogI2luY2x1ZGUgImV3a19wcml2YXRlLmgiCiAjaW5jbHVkZSAiZXdrX3N0b3JhZ2Vf
bWFuYWdlcl9wcml2YXRlLmgiCiAjaW5jbHVkZSAiZXdrX3VybF9zY2hlbWVfcmVxdWVzdF9wcml2
YXRlLmgiCkBAIC05NSw2ICs5Niw3IEBAIEV3a0NvbnRleHQ6OkV3a0NvbnRleHQoUGFzc1JlZlB0
cjxXZWJDb250ZXh0PiBjb250ZXh0KQogICAgICAgICBld2tfc2V0dGluZ3Nfc3BlbGxfY2hlY2tp
bmdfbGFuZ3VhZ2VzX3NldCgwKTsKICAgICB9CiAjZW5kaWYKKyAgICBFd2tfUGFzdGVib2FyZDo6
aW5pdGlhbGl6ZSgpOwogfQogCiBFd2tDb250ZXh0Ojp+RXdrQ29udGV4dCgpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfcGFzdGVib2FyZC5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfcGFzdGVib2FyZC5jcHAKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTMzOWU3NQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19wYXN0ZWJvYXJkLmNwcApAQCAt
MCwwICsxLDEwMSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBTYW1zdW5nIEVsZWN0cm9u
aWNzCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09Q
WVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HCisg
KiBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJld2tfcGFzdGVib2FyZC5oIgorCisjaW5jbHVkZSAiV0tBUElDYXN0LmgiCisjaW5jbHVkZSAi
V0tQYXN0ZWJvYXJkRWZsLmgiCisjaW5jbHVkZSAiV0tSZXRhaW5QdHIuaCIKKyNpbmNsdWRlICJX
S1N0cmluZy5oIgorI2luY2x1ZGUgImV3a19wYXN0ZWJvYXJkX3ByaXZhdGUuaCIKKyNpbmNsdWRl
ICJld2tfcHJpdmF0ZS5oIgorI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KKwordXNpbmcg
bmFtZXNwYWNlIFdlYktpdDsKKworc3RhdGljIEV3a19QYXN0ZWJvYXJkX0RhdGFfU2V0X0NiIGRh
dGFTZXRDYWxsYmFjayA9IDA7CitzdGF0aWMgRXdrX1Bhc3RlYm9hcmRfRGF0YV9SZXF1ZXN0X0Ni
IGRhdGFSZXF1ZXN0Q2FsbGJhY2sgPSAwOworCitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVN
KEVXS19QQVNURUJPQVJEX05PX0RBVEEsIGtXS1Bhc3RlYm9hcmROb0RhdGEpOworQ09NUElMRV9B
U1NFUlRfTUFUQ0hJTkdfRU5VTShFV0tfUEFTVEVCT0FSRF9URVhULCBrV0tQYXN0ZWJvYXJkVGV4
dCk7CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKEVXS19QQVNURUJPQVJEX01BUktVUCwg
a1dLUGFzdGVib2FyZE1hcmt1cCk7CisKK3N0YXRpYyB2b2lkIHNldERhdGEoV0tTdHJpbmdSZWYg
ZGF0YSwgV0tQYXN0ZWJvYXJkRGF0YVR5cGUgdHlwZSwgY29uc3Qgdm9pZCopCit7CisgICAgaWYg
KGRhdGFTZXRDYWxsYmFjaykKKyAgICAgICAgZGF0YVNldENhbGxiYWNrKHRvSW1wbChkYXRhKS0+
c3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgc3RhdGljX2Nhc3Q8RXdrX1Bhc3RlYm9hcmRfRGF0YV9U
eXBlPih0eXBlKSk7Cit9CisKK3N0YXRpYyBXS1N0cmluZ1JlZiByZXF1ZXN0RGF0YShXS1Bhc3Rl
Ym9hcmREYXRhVHlwZSB0eXBlLCBjb25zdCB2b2lkKikKK3sKKyAgICBpZiAoZGF0YVJlcXVlc3RD
YWxsYmFjaykgeworICAgICAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gZGF0YShBZG9wdFdL
LCBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZyhkYXRhUmVxdWVzdENhbGxiYWNrKHN0YXRp
Y19jYXN0PEV3a19QYXN0ZWJvYXJkX0RhdGFfVHlwZT4odHlwZSkpKSk7CisgICAgICAgIHJldHVy
biBkYXRhLmdldCgpOworICAgIH0KKworICAgIHJldHVybiBXS1N0cmluZ1JlZigpOworfQorCitu
YW1lc3BhY2UgRXdrX1Bhc3RlYm9hcmQgeworCisvKioKKyAqIEluaXRpYWxpemVzIHBhc3RlYm9h
cmQgY2FsbGJhY2tzLgorICoKKyAqIEBpbnRlcm5hbAorICoKKyAqIFBhc3RlYm9hcmQgaW4gRUZM
IGZyYW1ld29yayB1c2VzIEVsZW1lbnRhcnkgd2hpY2ggY2Fubm90IGJlCisgKiBpbmNsdWRlZCBp
bnRvIFdlYktpdCwgc28gYXBwbGljYXRpb24gaGFzIHRvIGltcGxlbWVudCBjYWxsYmFja3MKKyAq
IHRvIHByb3ZpZGUgcGFzdGVib2FyZCBzdXBwb3J0LgorICovCit2b2lkIGluaXRpYWxpemUoKQor
eworICAgIHN0YXRpYyBib29sIGRpZEluaXRpYWxpemVQYXN0ZWJvYXJkQ2xpZW50ID0gZmFsc2U7
CisKKyAgICBpZiAoZGlkSW5pdGlhbGl6ZVBhc3RlYm9hcmRDbGllbnQpCisgICAgICAgIHJldHVy
bjsKKworICAgIFdLUGFzdGVib2FyZENsaWVudEVmbCBwYXN0ZWJvYXJkQ2xpZW50RWZsID0gewor
ICAgICAgICBrV0tQYXN0ZWJvYXJkQ2xpZW50RWZsQ3VycmVudFZlcnNpb24sCisgICAgICAgIDAs
IC8vIGNsaWVudEluZm8KKyAgICAgICAgc2V0RGF0YSwKKyAgICAgICAgcmVxdWVzdERhdGEKKyAg
ICB9OworICAgIFdLUGFzdGVib2FyZFNldENsaWVudCgmcGFzdGVib2FyZENsaWVudEVmbCk7CisK
KyAgICBkaWRJbml0aWFsaXplUGFzdGVib2FyZENsaWVudCA9IHRydWU7Cit9CisKK30gLy8gbmFt
ZXNwYWNlIEV3a19QYXN0ZWJvYXJkCisKK3ZvaWQgZXdrX3Bhc3RlYm9hcmRfZGF0YV9zZXRfY2Jf
c2V0KEV3a19QYXN0ZWJvYXJkX0RhdGFfU2V0X0NiIGNhbGxiYWNrKQoreworICAgIGRhdGFTZXRD
YWxsYmFjayA9IGNhbGxiYWNrOworfQorCit2b2lkIGV3a19wYXN0ZWJvYXJkX2RhdGFfcmVxdWVz
dF9jYl9zZXQoRXdrX1Bhc3RlYm9hcmRfRGF0YV9SZXF1ZXN0X0NiIGNhbGxiYWNrKQoreworICAg
IGRhdGFSZXF1ZXN0Q2FsbGJhY2sgPSBjYWxsYmFjazsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19wYXN0ZWJvYXJkLmggYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfcGFzdGVib2FyZC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAuLjQ1ZTZiNWQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfcGFzdGVib2FyZC5oCkBAIC0wLDAgKzEsODMgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgU2Ftc3VuZyBFbGVjdHJvbmljcworICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFO
RCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlS
SUdIVCBIT0xERVIgT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORworICogTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaWZuZGVmIGV3a19wYXN0ZWJvYXJkX2gKKyNkZWZpbmUgZXdrX3Bhc3RlYm9h
cmRfaAorCisjaW5jbHVkZSA8RXZhcy5oPgorCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAi
QyIgeworI2VuZGlmCisKKy8qKgorICogRW51bSB2YWx1ZXMgdXNlZCB0byBzZXQgcGFzdGVib2Fy
ZCBkYXRhIHR5cGUuCisgKi8KK2VudW0gRXdrX1Bhc3RlYm9hcmRfRGF0YV9UeXBlIHsKKyAgICBF
V0tfUEFTVEVCT0FSRF9OT19EQVRBLAorICAgIEVXS19QQVNURUJPQVJEX1RFWFQsCisgICAgRVdL
X1BBU1RFQk9BUkRfTUFSS1VQCit9OworCisvKiBDcmVhdGVzIGEgdHlwZSBuYW1lIGZvciB0aGUg
RXdrX1Bhc3RlYm9hcmRfRGF0YV9UeXBlLiAqLwordHlwZWRlZiBlbnVtIEV3a19QYXN0ZWJvYXJk
X0RhdGFfVHlwZSBFd2tfUGFzdGVib2FyZF9EYXRhX1R5cGU7CisKKy8qKgorICogRGVmaW5lcyBh
IHR5cGUgbmFtZSBmb3IgdGhlIGNhbGxiYWNrIGZ1bmN0aW9uIHRvIHBlcmZvcm0gY29weSBvcGVy
YXRpb24gd2l0aCBnaXZlbiBkYXRhIHR5cGUuCisgKgorICogQHBhcmFtIGRhdGEgdG8gYmUgY29w
aWVkCisgKiBAcGFyYW0gdHlwZSBvZiBjb3BpZWQgZGF0YQorICovCit0eXBlZGVmIHZvaWQgKCpF
d2tfUGFzdGVib2FyZF9EYXRhX1NldF9DYikoY29uc3QgY2hhciAqZGF0YSwgRXdrX1Bhc3RlYm9h
cmRfRGF0YV9UeXBlIHR5cGUpOworCisvKioKKyAqIERlZmluZXMgYSB0eXBlIG5hbWUgZm9yIHRo
ZSBjYWxsYmFjayBmdW5jdGlvbiB0byByZXF1ZXN0IGZvciBkYXRhIHdpdGggZ2l2ZW4gdHlwZS4K
KyAqCisgKiBUaGlzIGNhbGxiYWNrIHdpbGwgcmVxdWVzdCBhbmQgcmV0dXJuIGlmIHJlY2VpdmVk
IGEgZGF0YSBmb3IgZ2l2ZW4gdHlwZS4KKyAqCisgKiBAcGFyYW0gdHlwZSBvZiByZXF1ZXN0ZWQg
ZGF0YQorICoKKyAqIEByZXR1cm4gcmVxdWVzdGVkIGRhdGEgaWYgYXQgc3VjY2VzcyBvciBAYyBO
VUxMIGF0IGZhaWx1cmUKKyAqLwordHlwZWRlZiBjb25zdCBjaGFyICooKkV3a19QYXN0ZWJvYXJk
X0RhdGFfUmVxdWVzdF9DYikoRXdrX1Bhc3RlYm9hcmRfRGF0YV9UeXBlIHR5cGUpOworCisvKioK
KyAqIFNldHMgYSBjYWxsYmFjayBmdW5jdGlvbiB0byBwZXJmb3JtIGNvcHkgb3BlcmF0aW9uLgor
ICoKKyAqIEBwYXJhbSBjYiBhIG5ldyBjYWxsYmFjayB0byBzZXQgLSBpdCBtdXN0IG5vdCBiZSBA
YyBOVUxMCisgKi8KK0VBUEkgdm9pZCBld2tfcGFzdGVib2FyZF9kYXRhX3NldF9jYl9zZXQoRXdr
X1Bhc3RlYm9hcmRfRGF0YV9TZXRfQ2IgY2IpOworCisvKioKKyAqIFNldHMgYSBjYWxsYmFjayBm
dW5jdGlvbiB0byByZXF1ZXN0IGZvciBwYXN0ZWJvYXJkIGRhdGEuCisgKgorICogQHBhcmFtIGNi
IGEgbmV3IGNhbGxiYWNrIHRvIHNldCAtIGl0IG11c3Qgbm90IGJlIEBjIE5VTEwKKyAqLworRUFQ
SSB2b2lkIGV3a19wYXN0ZWJvYXJkX2RhdGFfcmVxdWVzdF9jYl9zZXQoRXdrX1Bhc3RlYm9hcmRf
RGF0YV9SZXF1ZXN0X0NiIGNiKTsKKworI2lmZGVmIF9fY3BsdXNwbHVzCit9CisjZW5kaWYKKyNl
bmRpZiAvLyBld2tfcGFzdGVib2FyZF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2VmbC9ld2tfcGFzdGVib2FyZF9wcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2VmbC9ld2tfcGFzdGVib2FyZF9wcml2YXRlLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMC4uNWJlNThlZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19wYXN0ZWJvYXJkX3ByaXZhdGUuaApAQCAtMCww
ICsxLDM1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIFNhbXN1bmcgRWxlY3Ryb25pY3MK
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklH
SFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIFRIRSBDT1BZUklHSFQgSE9MREVSIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcKKyAqIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBld2tfcGFzdGVib2FyZF9wcml2YXRlX2gK
KyNkZWZpbmUgZXdrX3Bhc3RlYm9hcmRfcHJpdmF0ZV9oCisKK25hbWVzcGFjZSBFd2tfUGFzdGVi
b2FyZCB7CisKK3ZvaWQgaW5pdGlhbGl6ZSgpOworCit9CisKKyNlbmRpZiAvLyBld2tfcGFzdGVi
b2FyZF9wcml2YXRlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJD
b250ZXh0LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5oCmluZGV4IDJj
ZjdiYjUuLmUwMTFkMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJD
b250ZXh0LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuaApAQCAt
Mjc0LDYgKzI3NCwxMSBAQCBwcml2YXRlOgogICAgIHZvaWQgc2V0UGFzdGVib2FyZEJ1ZmZlckZv
clR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkVHlwZSwgY29uc3QgU2hhcmVkTWVtb3J5OjpIYW5kbGUmLCB1aW50NjRfdCBzaXplKTsKICNl
bmRpZgogCisjaWYgUExBVEZPUk0oRUZMKQorICAgIHZvaWQgc2V0UGFzdGVib2FyZERhdGFGb3JU
eXBlKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYgZGF0YVR5cGUpOworICAgIHZvaWQgcmVx
dWVzdFBhc3RlYm9hcmREYXRhRm9yVHlwZShjb25zdCBTdHJpbmcmIGRhdGFUeXBlLCBTdHJpbmcm
IHZhbHVlKTsKKyNlbmRpZgorCiAjaWYgIVBMQVRGT1JNKE1BQykKICAgICAvLyBGSVhNRTogVGhp
cyBhIGR1bW15IG1lc3NhZ2UsIHRvIGF2b2lkIGJyZWFraW5nIHRoZSBidWlsZCBmb3IgcGxhdGZv
cm1zIHRoYXQgZG9uJ3QgcmVxdWlyZQogICAgIC8vIGFueSBzeW5jaHJvbm91cyBtZXNzYWdlcywg
YW5kIHNob3VsZCBiZSByZW1vdmVkIHdoZW4gPHJkYXI6Ly9wcm9ibGVtLzg3NzUxMTU+IGlzIGZp
eGVkLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQubWVz
c2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5tZXNzYWdlcy5p
bgppbmRleCAyNjY0YTVmLi5mYTM3NzA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViQ29udGV4dC5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViQ29udGV4dC5tZXNzYWdlcy5pbgpAQCAtNTEsNCArNTEsOSBAQCBtZXNzYWdlcyAtPiBX
ZWJDb250ZXh0IHsKICAgICAvLyBhbnkgc3luY2hyb25vdXMgbWVzc2FnZXMsIGFuZCBzaG91bGQg
YmUgcmVtb3ZlZCB3aGVuIDxyZGFyOi8vcHJvYmxlbS84Nzc1MTE1PiBpcyBmaXhlZC4KICAgICBE
dW1teSgpIC0+IChib29sIGR1bW15UmV0dXJuKQogI2VuZGlmCisKKyNpZiBQTEFURk9STShFRkwp
CisgICAgU2V0UGFzdGVib2FyZERhdGFGb3JUeXBlKFdURjo6U3RyaW5nIGRhdGEsIFdURjo6U3Ry
aW5nIGRhdGFUeXBlKQorICAgIFJlcXVlc3RQYXN0ZWJvYXJkRGF0YUZvclR5cGUoV1RGOjpTdHJp
bmcgZGF0YVR5cGUpIC0+IChXVEY6OlN0cmluZyBzdHJpbmcpCisjZW5kaWYKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViQ29udGV4dEVmbC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYkNvbnRleHRFZmwuY3BwCmluZGV4IGQ0MzE0NWMu
LmUxZDM0YWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViQ29u
dGV4dEVmbC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJDb250ZXh0
RWZsLmNwcApAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUg
IldlYkNvbnRleHQuaCIKIAorI2luY2x1ZGUgIldlYlBhc3RlYm9hcmRQcm94eUVmbC5oIgogI2lu
Y2x1ZGUgPEVmcmVldC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQXBwbGljYXRpb25DYWNoZVN0b3Jh
Z2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ljb25EYXRhYmFzZS5oPgpAQCAtNzUsNCArNzYsMTQg
QEAgU3RyaW5nIFdlYkNvbnRleHQ6OnBsYXRmb3JtRGVmYXVsdENvb2tpZVN0b3JhZ2VEaXJlY3Rv
cnkoKSBjb25zdAogICAgIHJldHVybiBTdHJpbmcoKTsKIH0KIAordm9pZCBXZWJDb250ZXh0Ojpz
ZXRQYXN0ZWJvYXJkRGF0YUZvclR5cGUoY29uc3QgU3RyaW5nJiBkYXRhLCBjb25zdCBTdHJpbmcm
IGRhdGFUeXBlKQoreworICAgIFdlYlBhc3RlYm9hcmRQcm94eUVmbDo6c2hhcmVkKCktPnNldFBh
c3RlYm9hcmREYXRhRm9yVHlwZShkYXRhLCBkYXRhVHlwZSk7Cit9CisKK3ZvaWQgV2ViQ29udGV4
dDo6cmVxdWVzdFBhc3RlYm9hcmREYXRhRm9yVHlwZShjb25zdCBTdHJpbmcmIGRhdGFUeXBlLCBT
dHJpbmcmIHZhbHVlKQoreworICAgIHZhbHVlID0gV2ViUGFzdGVib2FyZFByb3h5RWZsOjpzaGFy
ZWQoKS0+cmVxdWVzdFBhc3RlYm9hcmREYXRhRm9yVHlwZShkYXRhVHlwZSk7Cit9CisKIH0gLy8g
bmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2Vm
bC9XZWJQYXN0ZWJvYXJkQ2xpZW50RWZsLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9l
ZmwvV2ViUGFzdGVib2FyZENsaWVudEVmbC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMC4uOWViMDhlYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9lZmwvV2ViUGFzdGVib2FyZENsaWVudEVmbC5jcHAKQEAgLTAsMCArMSw2MSBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNzCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5E
IENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJ
R0hUIEhPTERFUiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HCisgKiBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJQYXN0ZWJvYXJkQ2xp
ZW50RWZsLmgiCisKKyNpbmNsdWRlICJXS0FQSUNhc3QuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1Bh
c3RlYm9hcmQuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3N0YXRpYyBXS1Bhc3RlYm9hcmRE
YXRhVHlwZSBnZXREYXRhVHlwZUZyb21TdHJpbmcoY29uc3QgU3RyaW5nJiBkYXRhVHlwZSkKK3sK
KyAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UoZGF0YVR5cGUsIFdlYkNvcmU6OnBhc3RlYm9hcmRE
YXRhVHlwZVRleHQpKQorICAgICAgICByZXR1cm4ga1dLUGFzdGVib2FyZFRleHQ7CisKKyAgICBp
ZiAoZXF1YWxJZ25vcmluZ0Nhc2UoZGF0YVR5cGUsIFdlYkNvcmU6OnBhc3RlYm9hcmREYXRhVHlw
ZU1hcmt1cCkpCisgICAgICAgIHJldHVybiBrV0tQYXN0ZWJvYXJkTWFya3VwOworCisgICAgcmV0
dXJuIGtXS1Bhc3RlYm9hcmROb0RhdGE7Cit9CisKK3ZvaWQgV2ViUGFzdGVib2FyZENsaWVudEVm
bDo6c2V0RGF0YShjb25zdCBTdHJpbmcmIGRhdGEsIGNvbnN0IFN0cmluZyYgZGF0YVR5cGUpCit7
CisgICAgaWYgKCFtX2NsaWVudC5zZXREYXRhKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2Ns
aWVudC5zZXREYXRhKHRvQVBJKGRhdGEuaW1wbCgpKSwgZ2V0RGF0YVR5cGVGcm9tU3RyaW5nKGRh
dGFUeXBlKSwgbV9jbGllbnQuY2xpZW50SW5mbyk7Cit9CisKK1N0cmluZyBXZWJQYXN0ZWJvYXJk
Q2xpZW50RWZsOjpyZXF1ZXN0RGF0YShjb25zdCBTdHJpbmcmIGRhdGFUeXBlKQoreworICAgIGlm
ICghbV9jbGllbnQucmVxdWVzdERhdGEpCisgICAgICAgIHJldHVybiBTdHJpbmcoKTsKKworICAg
IHJldHVybiB0b0ltcGwobV9jbGllbnQucmVxdWVzdERhdGEoZ2V0RGF0YVR5cGVGcm9tU3RyaW5n
KGRhdGFUeXBlKSwgbV9jbGllbnQuY2xpZW50SW5mbykpLT5zdHJpbmcoKTsKK30KKworfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZs
L1dlYlBhc3RlYm9hcmRDbGllbnRFZmwuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwv
V2ViUGFzdGVib2FyZENsaWVudEVmbC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAuLmNhOGIxMmUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
ZWZsL1dlYlBhc3RlYm9hcmRDbGllbnRFZmwuaApAQCAtMCwwICsxLDQzIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDEyIFNhbXN1bmcgRWxlY3Ryb25pY3MKKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJ
QlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9M
REVSIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcKKyAqIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2lmbmRlZiBXZWJQYXN0ZWJvYXJkQ2xpZW50RWZsX2gKKyNkZWZpbmUgV2ViUGFzdGVib2Fy
ZENsaWVudEVmbF9oCisKKyNpbmNsdWRlICJBUElDbGllbnQuaCIKKyNpbmNsdWRlICJXS1Bhc3Rl
Ym9hcmRFZmwuaCIKKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorCituYW1lc3BhY2UgV2ViS2l0
IHsKKworY2xhc3MgV2ViUGFzdGVib2FyZENsaWVudEVmbCA6IHB1YmxpYyBBUElDbGllbnQ8V0tQ
YXN0ZWJvYXJkQ2xpZW50RWZsLCBrV0tQYXN0ZWJvYXJkQ2xpZW50RWZsQ3VycmVudFZlcnNpb24+
IHsKK3B1YmxpYzoKKyAgICB2b2lkIHNldERhdGEoY29uc3QgU3RyaW5nJiBkYXRhLCBjb25zdCBT
dHJpbmcmIGRhdGFUeXBlKTsKKyAgICBTdHJpbmcgcmVxdWVzdERhdGEoY29uc3QgU3RyaW5nJiBk
YXRhVHlwZSk7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIFdlYlBh
c3RlYm9hcmRDbGllbnRFZmxfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L2VmbC9XZWJQYXN0ZWJvYXJkUHJveHlFZmwuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L2VmbC9XZWJQYXN0ZWJvYXJkUHJveHlFZmwuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAuLjc1YzJjM2MKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvZWZsL1dlYlBhc3RlYm9hcmRQcm94eUVmbC5jcHAKQEAgLTAsMCArMSw1OSBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNzCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5E
IENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJ
R0hUIEhPTERFUiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HCisgKiBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJQYXN0ZWJvYXJkUHJv
eHlFZmwuaCIKKworI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KKyNpbmNsdWRl
IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK1dlYlBhc3Rl
Ym9hcmRQcm94eUVmbCogV2ViUGFzdGVib2FyZFByb3h5RWZsOjpzaGFyZWQoKQoreworICAgIHN0
YXRpYyBXZWJQYXN0ZWJvYXJkUHJveHlFZmwqIHBhc3RlYm9hcmRQcm94eUVmbCA9IGFkb3B0UmVm
KG5ldyBXZWJQYXN0ZWJvYXJkUHJveHlFZmwpLmxlYWtSZWYoKTsKKyAgICByZXR1cm4gcGFzdGVi
b2FyZFByb3h5RWZsOworfQorCitXZWJQYXN0ZWJvYXJkUHJveHlFZmw6OldlYlBhc3RlYm9hcmRQ
cm94eUVmbCgpCit7Cit9CisKK3ZvaWQgV2ViUGFzdGVib2FyZFByb3h5RWZsOjppbml0aWFsaXpl
Q2xpZW50KGNvbnN0IFdLUGFzdGVib2FyZENsaWVudEVmbCogY2xpZW50KQoreworICAgIG1fY2xp
ZW50LmluaXRpYWxpemUoY2xpZW50KTsKK30KKwordm9pZCBXZWJQYXN0ZWJvYXJkUHJveHlFZmw6
OnNldFBhc3RlYm9hcmREYXRhRm9yVHlwZShjb25zdCBTdHJpbmcmIGRhdGEsIGNvbnN0IFN0cmlu
ZyYgZGF0YVR5cGUpCit7CisgICAgbV9jbGllbnQuc2V0RGF0YShkYXRhLCBkYXRhVHlwZSk7Cit9
CisKK1N0cmluZyBXZWJQYXN0ZWJvYXJkUHJveHlFZmw6OnJlcXVlc3RQYXN0ZWJvYXJkRGF0YUZv
clR5cGUoY29uc3QgU3RyaW5nJiBkYXRhVHlwZSkKK3sKKyAgICByZXR1cm4gbV9jbGllbnQucmVx
dWVzdERhdGEoZGF0YVR5cGUpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViUGFzdGVib2FyZFByb3h5RWZsLmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlBhc3RlYm9hcmRQcm94eUVmbC5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU4MTQ4MjMKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlBhc3RlYm9hcmRQcm94eUVmbC5o
CkBAIC0wLDAgKzEsNTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgU2Ftc3VuZyBFbGVj
dHJvbmljcworICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhF
IENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVIgT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RworICogTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYlBhc3RlYm9hcmRQcm94
eUVmbF9oCisjZGVmaW5lIFdlYlBhc3RlYm9hcmRQcm94eUVmbF9oCisKKyNpbmNsdWRlICJBUElP
YmplY3QuaCIKKworI2luY2x1ZGUgIldlYlBhc3RlYm9hcmRDbGllbnRFZmwuaCIKKyNpbmNsdWRl
IDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKworbmFtZXNwYWNl
IFdlYktpdCB7CisKK2NsYXNzIFdlYlBhc3RlYm9hcmRQcm94eUVmbCA6IHB1YmxpYyBBUElPYmpl
Y3QgeworcHVibGljOgorICAgIHN0YXRpYyBjb25zdCBUeXBlIEFQSVR5cGUgPSBUeXBlUGFzdGVi
b2FyZFByb3h5OworCisgICAgc3RhdGljIFdlYlBhc3RlYm9hcmRQcm94eUVmbCogc2hhcmVkKCk7
CisKKyAgICB2b2lkIGluaXRpYWxpemVDbGllbnQoY29uc3QgV0tQYXN0ZWJvYXJkQ2xpZW50RWZs
Kik7CisgICAgV2ViUGFzdGVib2FyZENsaWVudEVmbCYgY2xpZW50KCkgeyByZXR1cm4gbV9jbGll
bnQ7IH0KKworICAgIHZvaWQgc2V0UGFzdGVib2FyZERhdGFGb3JUeXBlKGNvbnN0IFN0cmluZyYg
ZGF0YSwgY29uc3QgU3RyaW5nJiBkYXRhVHlwZSk7CisgICAgU3RyaW5nIHJlcXVlc3RQYXN0ZWJv
YXJkRGF0YUZvclR5cGUoY29uc3QgU3RyaW5nJiBkYXRhVHlwZSk7CisKK3ByaXZhdGU6CisgICAg
V2ViUGFzdGVib2FyZFByb3h5RWZsKCk7CisKKyAgICB2aXJ0dWFsIFR5cGUgdHlwZSgpIGNvbnN0
IHsgcmV0dXJuIEFQSVR5cGU7IH0KKworICAgIFdlYlBhc3RlYm9hcmRDbGllbnRFZmwgbV9jbGll
bnQ7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIFdlYlBhc3RlYm9h
cmRQcm94eUVmbF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAKaW5kZXggYzA0
NjY0NC4uYmJjZWU3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcApAQCAt
MzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIldlYkNvbnRleHRNZXNzYWdlcy5oIgogI2luY2x1ZGUg
IldlYkNvb2tpZU1hbmFnZXIuaCIKICNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIK
KyNpbmNsdWRlICJXZWJQYWdlUHJveHlNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3Mu
aCIKICNpbmNsdWRlICJXZWJQcm9jZXNzUHJveHlNZXNzYWdlcy5oIgogI2luY2x1ZGUgPFdlYkNv
cmUvQ29sb3IuaD4KQEAgLTMwMyw2ICszMDQsMjMgQEAgdm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXM6OnNldFN0cmluZ0ZvclR5cGUoY29uc3QgU3RyaW5nJiBzdHJpbmcsIGNvbnN0IFN0cmluZyYK
IH0KICNlbmRpZgogCisjaWYgUExBVEZPUk0oRUZMKQorLy8gUGFzdGVib2FyZFN0cmF0ZWd5Cit2
b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6c2V0RGF0YUZvclR5cGUoY29uc3QgU3RyaW5nJiBk
YXRhLCBjb25zdCBTdHJpbmcmIGRhdGFUeXBlKQoreworICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgp
LmNvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViQ29udGV4dDo6U2V0UGFzdGVib2FyZERh
dGFGb3JUeXBlKGRhdGEsIGRhdGFUeXBlKSwgMCk7Cit9CisKK1N0cmluZyBXZWJQbGF0Zm9ybVN0
cmF0ZWdpZXM6OnJlcXVlc3REYXRhRm9yVHlwZShjb25zdCBTdHJpbmcmIGRhdGFUeXBlKQorewor
ICAgIFN0cmluZyB2YWx1ZTsKKyAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5jb25uZWN0aW9uKCkt
PnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJDb250ZXh0OjpSZXF1ZXN0UGFzdGVib2FyZERhdGFGb3JU
eXBlKGRhdGFUeXBlKSwKKyAgICAgICAgTWVzc2FnZXM6OldlYkNvbnRleHQ6OlJlcXVlc3RQYXN0
ZWJvYXJkRGF0YUZvclR5cGU6OlJlcGx5KHZhbHVlKSwgMCk7CisKKyAgICByZXR1cm4gdmFsdWU7
Cit9CisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZiAvLyBVU0UoUExB
VEZPUk1fU1RSQVRFR0lFUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmggYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCmluZGV4IDA0
MGNmYjEuLmI3ODQ5ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgKKysrIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaApAQCAtOTAs
NiArOTAsMTAgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgc2V0UGF0aG5hbWVzRm9yVHlw
ZShjb25zdCBWZWN0b3I8U3RyaW5nPiYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBz
ZXRTdHJpbmdGb3JUeXBlKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5
cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIE9WRVJSSURFOwogI2VuZGlmCisjaWYg
UExBVEZPUk0oRUZMKQorICAgIHZpcnR1YWwgdm9pZCBzZXREYXRhRm9yVHlwZShjb25zdCBTdHJp
bmcmLCBjb25zdCBTdHJpbmcmIGRhdGFUeXBlKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIFN0cmlu
ZyByZXF1ZXN0RGF0YUZvclR5cGUoY29uc3QgU3RyaW5nJiBkYXRhVHlwZSkgT1ZFUlJJREU7Cisj
ZW5kaWYKIAogI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQogICAgIC8vIFdlYkNvcmU6
OlBsdWdpblN0cmF0ZWd5IGltcGxlbWVudGF0aW9uLgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>178808</attachid>
            <date>2012-12-11 08:17:17 -0800</date>
            <delta_ts>2012-12-17 08:34:23 -0800</delta_ts>
            <desc>added WebKit1 stubs</desc>
            <filename>pasteboard2.diff</filename>
            <type>text/plain</type>
            <size>43404</size>
            <attacher name="Michal Pakula vel Rutka">mpakulavelrutka</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAyMjgyZWIwLi43MzUwYTFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjgg
QEAKKzIwMTItMTItMTEgIE1pY2hhxYIgUGFrdcWCYSB2ZWwgUnV0a2EgIDxtLnBha3VsYUBzYW1z
dW5nLmNvbT4KKworICAgICAgICBbRUZMXVtXSzJdIEltcGxlbWVudGF0aW9uIG9mIHBhc3RlYm9h
cmQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMjQ4
NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEVGTCBk
b2VzIG5vdCBwcm92aWRlIHBsYXRmb3JtLXdpZGUgY29weSBhbmQgcGFzdGUgc3VwcG9ydCwgc28g
d2UgY2Fubm90CisgICAgICAgIGltcGxlbWVudCBwYXN0ZWJvYXJkIGluc2lkZSBXZWJDb3JlIGFz
IGluIG90aGVyIHBvcnRzLCBidXQgaW1wbGVtZW50YXRpb24gaGFzCisgICAgICAgIHRvIGJlIGRv
bmUgb24gV2ViS2l0LXVzaW5nIGFwcGxpY2F0aW9uIHNpZGUuCisKKyAgICAgICAgTm8gbmV3IHRl
c3RzIC0gYWxyZWFkeSBjb3ZlcmVkIGJ5IGV4aXN0aW5nIHRlc3RzLgorCisgICAgICAgICogcGxh
dGZvcm0vUGFzdGVib2FyZC5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogcGxhdGZv
cm0vUGFzdGVib2FyZFN0cmF0ZWd5Lmg6CisgICAgICAgIChQYXN0ZWJvYXJkU3RyYXRlZ3kpOgor
ICAgICAgICAqIHBsYXRmb3JtL2VmbC9QYXN0ZWJvYXJkRWZsLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlBhc3RlYm9hcmQ6OlBhc3RlYm9hcmQpOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2Fy
ZDo6d3JpdGVQbGFpblRleHQpOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6d3JpdGVT
ZWxlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6d3JpdGVVUkwpOgorICAg
ICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6ZG9jdW1lbnRGcmFnbWVudCk6CisgICAgICAgIChX
ZWJDb3JlOjpQYXN0ZWJvYXJkOjpwbGFpblRleHQpOgorCiAyMDEyLTEyLTExICBPc3dhbGQgQnVk
ZGVuaGFnZW4gIDxvc3dhbGQuYnVkZGVuaGFnZW5AZGlnaWEuY29tPgogCiAgICAgICAgIFtRdF0g
bWFrZSBxdGJhc2Ugc291cmNlIHJlcXVpcmVtZW50IGV4cGxpY2l0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9QYXN0ZWJvYXJkLmgKaW5kZXggNDAyMmE2MS4uMDkzODhlZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1Bhc3RlYm9hcmQuaApAQCAtNjMsNiArNjMsMTEgQEAgZXh0ZXJuIGNvbnN0IGNoYXIqIFdl
YlVSTFBib2FyZFR5cGU7CiBleHRlcm4gY29uc3QgY2hhciogV2ViVVJMc1dpdGhUaXRsZXNQYm9h
cmRUeXBlOwogI2VuZGlmCiAKKyNpZiBQTEFURk9STShFRkwpCitjb25zdCBTdHJpbmcgcGFzdGVi
b2FyZERhdGFUeXBlVGV4dCgiVGV4dCIpOworY29uc3QgU3RyaW5nIHBhc3RlYm9hcmREYXRhVHlw
ZU1hcmt1cCgiTWFya3VwIik7CisjZW5kaWYKKwogICAgIGNsYXNzIEFyY2hpdmVSZXNvdXJjZTsK
IGNsYXNzIENsaXBib2FyZDsKIGNsYXNzIERvY3VtZW50RnJhZ21lbnQ7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkU3RyYXRlZ3kuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRTdHJhdGVneS5oCmluZGV4IGY5MjJjNjYuLjg3OWE5ZmUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRTdHJhdGVneS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRTdHJhdGVneS5oCkBAIC01
Nyw2ICs1NywxMCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNldFBhdGhuYW1lc0ZvclR5
cGUoY29uc3QgVmVjdG9yPFN0cmluZz4mLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNldFN0
cmluZ0ZvclR5cGUoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwg
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgPSAwOwogI2VuZGlmCisjaWYgUExBVEZPUk0o
RUZMKQorICAgIHZpcnR1YWwgdm9pZCBzZXREYXRhRm9yVHlwZShjb25zdCBTdHJpbmcmLCBjb25z
dCBTdHJpbmcmIGRhdGFUeXBlKSA9IDA7CisgICAgdmlydHVhbCBTdHJpbmcgcmVxdWVzdERhdGFG
b3JUeXBlKGNvbnN0IFN0cmluZyYgZGF0YVR5cGUpID0gMDsKKyNlbmRpZgogcHJvdGVjdGVkOgog
ICAgIHZpcnR1YWwgflBhc3RlYm9hcmRTdHJhdGVneSgpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZsL1Bhc3RlYm9hcmRFZmwuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZWZsL1Bhc3RlYm9hcmRFZmwuY3BwCmluZGV4IDdhMWFjNDUuLjJkZTA0ZDUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9QYXN0ZWJvYXJkRWZsLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvUGFzdGVib2FyZEVmbC5jcHAKQEAg
LTMzLDYgKzMzLDExIEBACiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogI2luY2x1ZGUg
PHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCisjaWYgVVNFKFBMQVRGT1JNX1NUUkFURUdJRVMpCisj
aW5jbHVkZSAiUGFzdGVib2FyZFN0cmF0ZWd5LmgiCisjaW5jbHVkZSAiUGxhdGZvcm1TdHJhdGVn
aWVzLmgiCisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBQYXN0ZWJvYXJkKiBQYXN0
ZWJvYXJkOjpnZW5lcmFsUGFzdGVib2FyZCgpCkBAIC00MywyMiArNDgsMjUgQEAgUGFzdGVib2Fy
ZCogUGFzdGVib2FyZDo6Z2VuZXJhbFBhc3RlYm9hcmQoKQogCiBQYXN0ZWJvYXJkOjpQYXN0ZWJv
YXJkKCkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCi12b2lkIFBhc3RlYm9hcmQ6Ondy
aXRlUGxhaW5UZXh0KGNvbnN0IFN0cmluZyYsIFNtYXJ0UmVwbGFjZU9wdGlvbikKK3ZvaWQgUGFz
dGVib2FyZDo6d3JpdGVQbGFpblRleHQoY29uc3QgU3RyaW5nJiB0ZXh0LCBTbWFydFJlcGxhY2VP
cHRpb24pCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBwbGF0Zm9ybVN0cmF0ZWdpZXMo
KS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPnNldERhdGFGb3JUeXBlKHRleHQsIHBhc3RlYm9hcmRE
YXRhVHlwZVRleHQpOwogfQogCi12b2lkIFBhc3RlYm9hcmQ6OndyaXRlU2VsZWN0aW9uKFJhbmdl
KiwgYm9vbCwgRnJhbWUqKQordm9pZCBQYXN0ZWJvYXJkOjp3cml0ZVNlbGVjdGlvbihSYW5nZSog
c2VsZWN0ZWRSYW5nZSwgYm9vbCwgRnJhbWUqKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7Cisg
ICAgcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT5zZXREYXRhRm9y
VHlwZSgKKyAgICAgICAgY3JlYXRlTWFya3VwKHNlbGVjdGVkUmFuZ2UsIDAsIEFubm90YXRlRm9y
SW50ZXJjaGFuZ2UsIGZhbHNlLCBSZXNvbHZlTm9uTG9jYWxVUkxzKSwgcGFzdGVib2FyZERhdGFU
eXBlTWFya3VwKTsKIH0KIAotdm9pZCBQYXN0ZWJvYXJkOjp3cml0ZVVSTChjb25zdCBLVVJMJiwg
Y29uc3QgU3RyaW5nJiwgRnJhbWUqKQordm9pZCBQYXN0ZWJvYXJkOjp3cml0ZVVSTChjb25zdCBL
VVJMJiB1cmwsIGNvbnN0IFN0cmluZyYsIEZyYW1lKikKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgp
OworICAgIGlmICh1cmwuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBwbGF0Zm9y
bVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPnNldERhdGFGb3JUeXBlKHVybC5z
dHJpbmcoKSwgcGFzdGVib2FyZERhdGFUeXBlVGV4dCk7CiB9CiAKIHZvaWQgUGFzdGVib2FyZDo6
d3JpdGVJbWFnZShOb2RlKiwgY29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYpCkBAIC04MiwxNiAr
OTAsMzIgQEAgYm9vbCBQYXN0ZWJvYXJkOjpjYW5TbWFydFJlcGxhY2UoKQogICAgIHJldHVybiBm
YWxzZTsKIH0KIAotUGFzc1JlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBQYXN0ZWJvYXJkOjpkb2N1
bWVudEZyYWdtZW50KEZyYW1lKiwgUGFzc1JlZlB0cjxSYW5nZT4sIGJvb2wsIGJvb2wmKQorUGFz
c1JlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBQYXN0ZWJvYXJkOjpkb2N1bWVudEZyYWdtZW50KEZy
YW1lKiBmcmFtZSwgUGFzc1JlZlB0cjxSYW5nZT4gY29udGV4dCwgYm9vbCBhbGxvd1BsYWluVGV4
dCwgYm9vbCYgY2hvc2VQbGFpblRleHQpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBj
aG9zZVBsYWluVGV4dCA9IGZhbHNlOworCisgICAgU3RyaW5nIGRhdGEgPSBwbGF0Zm9ybVN0cmF0
ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPnJlcXVlc3REYXRhRm9yVHlwZShwYXN0ZWJv
YXJkRGF0YVR5cGVNYXJrdXApOworCisgICAgaWYgKCFkYXRhLmlzRW1wdHkoKSkgeworICAgICAg
ICBSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gZnJhZ21lbnQgPSBjcmVhdGVGcmFnbWVudEZyb21N
YXJrdXAoZnJhbWUtPmRvY3VtZW50KCksIGRhdGEsICIiLCBEaXNhbGxvd1NjcmlwdGluZ0NvbnRl
bnQpOworICAgICAgICBpZiAoZnJhZ21lbnQpCisgICAgICAgICAgICByZXR1cm4gZnJhZ21lbnQu
cmVsZWFzZSgpOworICAgIH0KKworICAgIGRhdGEgPSBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFz
dGVib2FyZFN0cmF0ZWd5KCktPnJlcXVlc3REYXRhRm9yVHlwZShwYXN0ZWJvYXJkRGF0YVR5cGVU
ZXh0KTsKKyAgICBpZiAoYWxsb3dQbGFpblRleHQgJiYgIWRhdGEuaXNFbXB0eSgpKSB7CisgICAg
ICAgIGNob3NlUGxhaW5UZXh0ID0gdHJ1ZTsKKyAgICAgICAgUmVmUHRyPERvY3VtZW50RnJhZ21l
bnQ+IGZyYWdtZW50ID0gY3JlYXRlRnJhZ21lbnRGcm9tVGV4dChjb250ZXh0LmdldCgpLCBkYXRh
KTsKKyAgICAgICAgaWYgKGZyYWdtZW50KQorICAgICAgICAgICAgcmV0dXJuIGZyYWdtZW50LnJl
bGVhc2UoKTsKKyAgICB9CisKICAgICByZXR1cm4gMDsKIH0KIAogU3RyaW5nIFBhc3RlYm9hcmQ6
OnBsYWluVGV4dChGcmFtZSopCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4g
U3RyaW5nKCk7CisgICAgcmV0dXJuIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3Ry
YXRlZ3koKS0+cmVxdWVzdERhdGFGb3JUeXBlKHBhc3RlYm9hcmREYXRhVHlwZVRleHQpOwogfQog
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0L2VmbC9DaGFuZ2VMb2cKaW5kZXggMDNjY2FkZC4uMWE4MWJjZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDIxIEBACisyMDEyLTEyLTExICBNaWNoYcWCIFBha3XFgmEgdmVsIFJ1dGth
ICA8bS5wYWt1bGFAc2Ftc3VuZy5jb20+CisKKyAgICAgICAgW0VGTF1bV0syXSBJbXBsZW1lbnRh
dGlvbiBvZiBwYXN0ZWJvYXJkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xMDI0ODQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBFRkwgZG9lcyBub3QgcHJvdmlkZSBwbGF0Zm9ybS13aWRlIGNvcHkgYW5kIHBh
c3RlIHN1cHBvcnQsIHNvIHdlIGNhbm5vdAorICAgICAgICBpbXBsZW1lbnQgcGFzdGVib2FyZCBp
bnNpZGUgV2ViQ29yZSBhcyBpbiBvdGhlciBwb3J0cywgYnV0IGltcGxlbWVudGF0aW9uIGhhcwor
ICAgICAgICB0byBiZSBkb25lIG9uIFdlYktpdC11c2luZyBhcHBsaWNhdGlvbiBzaWRlLgorCisg
ICAgICAgICogV2ViQ29yZVN1cHBvcnQvUGxhdGZvcm1TdHJhdGVnaWVzRWZsLmNwcDoKKyAgICAg
ICAgKFBsYXRmb3JtU3RyYXRlZ2llc0VmbDo6Y3JlYXRlUGFzdGVib2FyZFN0cmF0ZWd5KToKKyAg
ICAgICAgKFBsYXRmb3JtU3RyYXRlZ2llc0VmbDo6c2V0RGF0YUZvclR5cGUpOgorICAgICAgICAo
UGxhdGZvcm1TdHJhdGVnaWVzRWZsOjpyZXF1ZXN0RGF0YUZvclR5cGUpOgorICAgICAgICAqIFdl
YkNvcmVTdXBwb3J0L1BsYXRmb3JtU3RyYXRlZ2llc0VmbC5oOgorICAgICAgICAoUGxhdGZvcm1T
dHJhdGVnaWVzRWZsKToKKwogMjAxMi0xMi0wNSAgSGFsdG9uIEh1byAgPGhhbHRvbi5odW9AaW50
ZWwuY29tPgogCiAgICAgICAgIFtDTWFrZV0gVW5pZnkgY29kaW5nIHN0eWxlIGZvciBDTWFrZSBm
aWxlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvUGxhdGZv
cm1TdHJhdGVnaWVzRWZsLmNwcCBiL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L1Bs
YXRmb3JtU3RyYXRlZ2llc0VmbC5jcHAKaW5kZXggY2ExOTQ4Ni4uMjRlYTA2YiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvUGxhdGZvcm1TdHJhdGVnaWVzRWZs
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9QbGF0Zm9ybVN0cmF0
ZWdpZXNFZmwuY3BwCkBAIC01Nyw4ICs1Nyw3IEBAIExvYWRlclN0cmF0ZWd5KiBQbGF0Zm9ybVN0
cmF0ZWdpZXNFZmw6OmNyZWF0ZUxvYWRlclN0cmF0ZWd5KCkKIAogUGFzdGVib2FyZFN0cmF0ZWd5
KiBQbGF0Zm9ybVN0cmF0ZWdpZXNFZmw6OmNyZWF0ZVBhc3RlYm9hcmRTdHJhdGVneSgpCiB7Ci0g
ICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gdGhpczsKIH0K
IAogUGx1Z2luU3RyYXRlZ3kqIFBsYXRmb3JtU3RyYXRlZ2llc0VmbDo6Y3JlYXRlUGx1Z2luU3Ry
YXRlZ3koKQpAQCAtMTc2LDMgKzE3NSwxNSBAQCB2b2lkIFBsYXRmb3JtU3RyYXRlZ2llc0VmbDo6
YWRkVmlzaXRlZExpbmsoUGFnZSogcGFnZSwgTGlua0hhc2ggaGFzaCkKIHsKICAgICBwYWdlLT5n
cm91cCgpLmFkZFZpc2l0ZWRMaW5rSGFzaChoYXNoKTsKIH0KKworLy8gUGFzdGVib2FyZFN0cmF0
ZWd5Cit2b2lkIFBsYXRmb3JtU3RyYXRlZ2llc0VmbDo6c2V0RGF0YUZvclR5cGUoY29uc3QgU3Ry
aW5nJiwgY29uc3QgU3RyaW5nJiBkYXRhVHlwZSkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOwor
fQorCitTdHJpbmcgUGxhdGZvcm1TdHJhdGVnaWVzRWZsOjpyZXF1ZXN0RGF0YUZvclR5cGUoY29u
c3QgU3RyaW5nJiBkYXRhVHlwZSkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVy
biBTdHJpbmcoKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBw
b3J0L1BsYXRmb3JtU3RyYXRlZ2llc0VmbC5oIGIvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1
cHBvcnQvUGxhdGZvcm1TdHJhdGVnaWVzRWZsLmgKaW5kZXggYmFhN2QwNS4uMzIxNjc5NSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvUGxhdGZvcm1TdHJhdGVn
aWVzRWZsLmgKKysrIGIvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvUGxhdGZvcm1T
dHJhdGVnaWVzRWZsLmgKQEAgLTI4LDcgKzI4LDcgQEAKICNpbmNsdWRlICJTaGFyZWRXb3JrZXJT
dHJhdGVneS5oIgogI2luY2x1ZGUgIlZpc2l0ZWRMaW5rU3RyYXRlZ3kuaCIKIAotY2xhc3MgUGxh
dGZvcm1TdHJhdGVnaWVzRWZsIDogcHVibGljIFdlYkNvcmU6OlBsYXRmb3JtU3RyYXRlZ2llcywg
cHJpdmF0ZSBXZWJDb3JlOjpDb29raWVzU3RyYXRlZ3ksIHByaXZhdGUgV2ViQ29yZTo6TG9hZGVy
U3RyYXRlZ3ksIHByaXZhdGUgV2ViQ29yZTo6UGx1Z2luU3RyYXRlZ3ksIHByaXZhdGUgV2ViQ29y
ZTo6U2hhcmVkV29ya2VyU3RyYXRlZ3ksIHByaXZhdGUgV2ViQ29yZTo6VmlzaXRlZExpbmtTdHJh
dGVneSB7CitjbGFzcyBQbGF0Zm9ybVN0cmF0ZWdpZXNFZmwgOiBwdWJsaWMgV2ViQ29yZTo6UGxh
dGZvcm1TdHJhdGVnaWVzLCBwcml2YXRlIFdlYkNvcmU6OkNvb2tpZXNTdHJhdGVneSwgcHJpdmF0
ZSBXZWJDb3JlOjpMb2FkZXJTdHJhdGVneSwgcHJpdmF0ZSBXZWJDb3JlOjpQbHVnaW5TdHJhdGVn
eSwgcHJpdmF0ZSBXZWJDb3JlOjpTaGFyZWRXb3JrZXJTdHJhdGVneSwgcHJpdmF0ZSBXZWJDb3Jl
OjpWaXNpdGVkTGlua1N0cmF0ZWd5LCBwcml2YXRlIFdlYkNvcmU6OlBhc3RlYm9hcmRTdHJhdGVn
eSB7CiBwdWJsaWM6CiAgICAgc3RhdGljIHZvaWQgaW5pdGlhbGl6ZSgpOwogCkBAIC02Miw2ICs2
MiwxMCBAQCBwcml2YXRlOgogICAgIC8vIFdlYkNvcmU6OlZpc2l0ZWRMaW5rU3RyYXRlZ3kKICAg
ICB2aXJ0dWFsIGJvb2wgaXNMaW5rVmlzaXRlZChXZWJDb3JlOjpQYWdlKiwgV2ViQ29yZTo6TGlu
a0hhc2gsIGNvbnN0IFdlYkNvcmU6OktVUkwmIGJhc2VVUkwsIGNvbnN0IFdURjo6QXRvbWljU3Ry
aW5nJiBhdHRyaWJ1dGVVUkwpOwogICAgIHZpcnR1YWwgdm9pZCBhZGRWaXNpdGVkTGluayhXZWJD
b3JlOjpQYWdlKiwgV2ViQ29yZTo6TGlua0hhc2gpOworCisgICAgLy8gV2ViQ29yZTo6UGFzdGVi
b2FyZFN0cmF0ZWd5CisgICAgdmlydHVhbCB2b2lkIHNldERhdGFGb3JUeXBlKGNvbnN0IFN0cmlu
ZyYsIGNvbnN0IFN0cmluZyYgZGF0YVR5cGUpOworICAgIHZpcnR1YWwgU3RyaW5nIHJlcXVlc3RE
YXRhRm9yVHlwZShjb25zdCBTdHJpbmcmIGRhdGFUeXBlKTsKIH07CiAKICNlbmRpZiAvLyBQbGF0
Zm9ybVN0cmF0ZWdpZXNFZmxfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDMyMjJjMDAuLjFmMDAxMTAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFu
Z2VMb2cKQEAgLTEsMyArMSw3MSBAQAorMjAxMi0xMi0xMSAgTWljaGHFgiBQYWt1xYJhIHZlbCBS
dXRrYSAgPG0ucGFrdWxhQHNhbXN1bmcuY29tPgorCisgICAgICAgIFtFRkxdW1dLMl0gSW1wbGVt
ZW50YXRpb24gb2YgcGFzdGVib2FyZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTAyNDg0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgRUZMIGRvZXMgbm90IHByb3ZpZGUgcGxhdGZvcm0td2lkZSBjb3B5IGFu
ZCBwYXN0ZSBzdXBwb3J0LCBzbyB3ZSBjYW5ub3QKKyAgICAgICAgaW1wbGVtZW50IHBhc3RlYm9h
cmQgaW5zaWRlIFdlYkNvcmUgYXMgaW4gb3RoZXIgcG9ydHMsIGJ1dCBpbXBsZW1lbnRhdGlvbiBo
YXMKKyAgICAgICAgdG8gYmUgZG9uZSBvbiBXZWJLaXQtdXNpbmcgYXBwbGljYXRpb24gc2lkZS4K
KworICAgICAgICBUaGlzIHBhdGNoIGlzIGFuIGluaXRpYWwgYXBwcm9hY2ggdG8gUGFzdGVib2Fy
ZCBpbXBsZW1lbnRhdGlvbiBpbiBXZWJLaXQyLAorICAgICAgICBmb2N1c2luZyBvbiBiYXNpYyBj
b3B5IGFuZCBwYXN0ZSBmZWF0dXJlcy4gSXQgcGFzc2VzcyBkYXRhIGFsb25nIHdpdGggZGF0YQor
ICAgICAgICB0eXBlIGZyb20gV2ViQ29yZSB0byBXZWJLaXQyIGFuZCB0aGVuIHRoZSBjbGllbnQg
Y2FsbGJhY2tzIGFyZSBpbnZva2VkLgorCisgICAgICAgICogUGxhdGZvcm1FZmwuY21ha2U6Cisg
ICAgICAgICogU2hhcmVkL0FQSS9jL2VmbC9XS0Jhc2VFZmwuaDoKKyAgICAgICAgKiBTaGFyZWQv
QVBJT2JqZWN0Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL2VmbC9XS1Bhc3RlYm9hcmRF
ZmwuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdLUGFzdGVib2FyZFNldENsaWVudCk6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9DL2VmbC9XS1Bhc3RlYm9hcmRFZmwuaDogQWRkZWQuCisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9lZmwvRVdlYktpdDIuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L2VmbC9ld2tfY29udGV4dC5jcHA6CisgICAgICAgIChFd2tDb250ZXh0OjpFd2tDb250ZXh0KToK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfcGFzdGVib2FyZC5jcHA6IEFkZGVkLgor
ICAgICAgICAoc2V0RGF0YSk6CisgICAgICAgIChyZXF1ZXN0RGF0YSk6CisgICAgICAgIChFd2tf
UGFzdGVib2FyZCk6CisgICAgICAgIChFd2tfUGFzdGVib2FyZDo6aW5pdGlhbGl6ZSk6CisgICAg
ICAgIChld2tfcGFzdGVib2FyZF9kYXRhX3NldF9jYl9zZXQpOgorICAgICAgICAoZXdrX3Bhc3Rl
Ym9hcmRfZGF0YV9yZXF1ZXN0X2NiX3NldCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwv
ZXdrX3Bhc3RlYm9hcmQuaDogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdr
X3Bhc3RlYm9hcmRfcHJpdmF0ZS5oOiBBZGRlZC4KKyAgICAgICAgKEV3a19QYXN0ZWJvYXJkKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQ29udGV4dC5oOgorICAgICAgICAoV2ViQ29udGV4dCk6
CisgICAgICAgICogVUlQcm9jZXNzL1dlYkNvbnRleHQubWVzc2FnZXMuaW46CisgICAgICAgICog
VUlQcm9jZXNzL2VmbC9XZWJDb250ZXh0RWZsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQ29u
dGV4dDo6c2V0UGFzdGVib2FyZERhdGFGb3JUeXBlKToKKyAgICAgICAgKFdlYktpdCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYkNvbnRleHQ6OnJlcXVlc3RQYXN0ZWJvYXJkRGF0YUZvclR5cGUpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9lZmwvV2ViUGFzdGVib2FyZENsaWVudEVmbC5jcHA6IEFkZGVk
LgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6Z2V0RGF0YVR5cGVGcm9tU3Ry
aW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFzdGVib2FyZENsaWVudEVmbDo6c2V0RGF0YSk6
CisgICAgICAgIChXZWJLaXQ6OldlYlBhc3RlYm9hcmRDbGllbnRFZmw6OnJlcXVlc3REYXRhKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvZWZsL1dlYlBhc3RlYm9hcmRDbGllbnRFZmwuaDogQWRkZWQu
CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViUGFzdGVib2FyZENsaWVudEVmbCk6Cisg
ICAgICAgICogVUlQcm9jZXNzL2VmbC9XZWJQYXN0ZWJvYXJkUHJveHlFZmwuY3BwOiBBZGRlZC4K
KyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhc3RlYm9hcmRQcm94eUVm
bDo6c2hhcmVkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFzdGVib2FyZFByb3h5RWZsOjpXZWJQ
YXN0ZWJvYXJkUHJveHlFZmwpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYXN0ZWJvYXJkUHJveHlF
Zmw6OmluaXRpYWxpemVDbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYXN0ZWJvYXJkUHJv
eHlFZmw6OnNldFBhc3RlYm9hcmREYXRhRm9yVHlwZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBh
c3RlYm9hcmRQcm94eUVmbDo6cmVxdWVzdFBhc3RlYm9hcmREYXRhRm9yVHlwZSk6CisgICAgICAg
ICogVUlQcm9jZXNzL2VmbC9XZWJQYXN0ZWJvYXJkUHJveHlFZmwuaDogQWRkZWQuCisgICAgICAg
IChXZWJLaXQpOgorICAgICAgICAoV2ViUGFzdGVib2FyZFByb3h5RWZsKToKKyAgICAgICAgKFdl
YktpdDo6V2ViUGFzdGVib2FyZFByb3h5RWZsOjpjbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYXN0ZWJvYXJkUHJveHlFZmw6OnR5cGUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcDoKKyAgICAgICAgKFdlYktpdCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBsYXRmb3JtU3RyYXRlZ2llczo6c2V0RGF0YUZvclR5cGUpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlcXVlc3REYXRhRm9yVHlw
ZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0
ZWdpZXMuaDoKKyAgICAgICAgKFdlYlBsYXRmb3JtU3RyYXRlZ2llcyk6CisKIDIwMTItMTItMTEg
IFRoaWFnbyBNYXJjb3MgUC4gU2FudG9zICA8dGhpYWdvLnNhbnRvc0BpbnRlbC5jb20+CiAKICAg
ICAgICAgW0VGTF0gSW5jcmVhc2UgdGhlIHRpbWVvdXQgb2YgdGhlIEFQSSB1bml0IHRlc3RzCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZSBiL1NvdXJjZS9XZWJL
aXQyL1BsYXRmb3JtRWZsLmNtYWtlCmluZGV4IGZmMTkxMzUuLjg4NzZmMGEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJLaXQyL1Bs
YXRmb3JtRWZsLmNtYWtlCkBAIC0zMiw2ICszMiw3IEBAIGxpc3QoQVBQRU5EIFdlYktpdDJfU09V
UkNFUwogCiAgICAgU2hhcmVkL1BsdWdpbnMvTmV0c2NhcGUveDExL05ldHNjYXBlUGx1Z2luTW9k
dWxlWDExLmNwcAogCisgICAgVUlQcm9jZXNzL0FQSS9DL2VmbC9XS1Bhc3RlYm9hcmRFZmwuY3Bw
CiAgICAgVUlQcm9jZXNzL0FQSS9DL2VmbC9XS1ZpZXcuY3BwCiAKICAgICBVSVByb2Nlc3MvQVBJ
L2NwcC9lZmwvV0tFaW5hU2hhcmVkU3RyaW5nLmNwcApAQCAtNjMsNiArNjQsNyBAQCBsaXN0KEFQ
UEVORCBXZWJLaXQyX1NPVVJDRVMKICAgICBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfbmF2aWdhdGlv
bl9kYXRhLmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a19uYXZpZ2F0aW9uX3BvbGljeV9k
ZWNpc2lvbi5jcHAKICAgICBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfb2JqZWN0LmNwcAorICAgIFVJ
UHJvY2Vzcy9BUEkvZWZsL2V3a19wYXN0ZWJvYXJkLmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvZWZs
L2V3a19wb3B1cF9tZW51LmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a19wb3B1cF9tZW51
X2l0ZW0uY3BwCiAgICAgVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3Jlc291cmNlLmNwcApAQCAtMTAy
LDYgKzEwNCw4IEBAIGxpc3QoQVBQRU5EIFdlYktpdDJfU09VUkNFUwogICAgIFVJUHJvY2Vzcy9l
ZmwvV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eUVmbC5jcHAKICAgICBVSVByb2Nlc3MvZWZsL1dl
Ykluc3BlY3RvclByb3h5RWZsLmNwcAogICAgIFVJUHJvY2Vzcy9lZmwvV2ViUGFnZVByb3h5RWZs
LmNwcAorICAgIFVJUHJvY2Vzcy9lZmwvV2ViUGFzdGVib2FyZENsaWVudEVmbC5jcHAKKyAgICBV
SVByb2Nlc3MvZWZsL1dlYlBhc3RlYm9hcmRQcm94eUVmbC5jcHAKICAgICBVSVByb2Nlc3MvZWZs
L1dlYlBvcHVwTWVudVByb3h5RWZsLmNwcAogICAgIFVJUHJvY2Vzcy9lZmwvV2ViUHJlZmVyZW5j
ZXNFZmwuY3BwCiAgICAgVUlQcm9jZXNzL2VmbC9XZWJQcm9jZXNzUHJveHlFZmwuY3BwCkBAIC0y
NzUsNiArMjc5LDcgQEAgc2V0KEVXZWJLaXQyX0hFQURFUlMKICAgICAiJHtDTUFLRV9DVVJSRU5U
X1NPVVJDRV9ESVJ9L1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19uYXZpZ2F0aW9uX2RhdGEuaCIKICAg
ICAiJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19uYXZp
Z2F0aW9uX3BvbGljeV9kZWNpc2lvbi5oIgogICAgICIke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJ
Un0vVUlQcm9jZXNzL0FQSS9lZmwvZXdrX29iamVjdC5oIgorICAgICIke0NNQUtFX0NVUlJFTlRf
U09VUkNFX0RJUn0vVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3Bhc3RlYm9hcmQuaCIKICAgICAiJHtD
TUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19wb3B1cF9tZW51
LmgiCiAgICAgIiR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9VSVByb2Nlc3MvQVBJL2VmbC9l
d2tfcG9wdXBfbWVudV9pdGVtLmgiCiAgICAgIiR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9V
SVByb2Nlc3MvQVBJL2VmbC9ld2tfcmVzb3VyY2UuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9BUEkvYy9lZmwvV0tCYXNlRWZsLmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
QVBJL2MvZWZsL1dLQmFzZUVmbC5oCmluZGV4IDYxODRjODEuLjM1ZWY4NGIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9lZmwvV0tCYXNlRWZsLmgKKysrIGIvU291cmNl
L1dlYktpdDIvU2hhcmVkL0FQSS9jL2VmbC9XS0Jhc2VFZmwuaApAQCAtMjUsNSArMjUsNiBAQAog
I2VuZGlmCiAKIHR5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZVdLVmlldyogV0tWaWV3UmVmOwor
dHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tQYXN0ZWJvYXJkKiBXS1Bhc3RlYm9hcmRSZWY7
CiAKICNlbmRpZiAvKiBXS0Jhc2VFZmxfaCAqLwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
U2hhcmVkL0FQSU9iamVjdC5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSU9iamVjdC5oCmlu
ZGV4IDMxMTlkZTYuLjM5ZDJhODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9B
UElPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJT2JqZWN0LmgKQEAgLTEz
Miw2ICsxMzIsNyBAQCBwdWJsaWM6CiAgICAgICAgIFR5cGVFZGl0Q29tbWFuZFByb3h5LAogICAg
ICAgICBUeXBlT2JqQ09iamVjdEdyYXBoLAogICAgICAgICBUeXBlVmlldywKKyAgICAgICAgVHlw
ZVBhc3RlYm9hcmRQcm94eSwKICNpZiBVU0UoU09VUCkKICAgICAgICAgVHlwZVNvdXBSZXF1ZXN0
TWFuYWdlciwKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9DL2VmbC9XS1Bhc3RlYm9hcmRFZmwuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9DL2VmbC9XS1Bhc3RlYm9hcmRFZmwuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAuLjRlMjc2Y2EKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL0MvZWZsL1dLUGFzdGVib2FyZEVmbC5jcHAKQEAgLTAsMCArMSw0MCBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNzCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENP
TlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hU
IEhPTERFUiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HCisgKiBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXS1Bhc3RlYm9hcmRFZmwuaCIK
KworI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgorI2luY2x1ZGUgIldlYlBhc3RlYm9hcmRQcm94eUVm
bC5oIgorCit1c2luZyBuYW1lc3BhY2UgV2ViS2l0OworCit2b2lkIFdLUGFzdGVib2FyZFNldENs
aWVudChjb25zdCBXS1Bhc3RlYm9hcmRDbGllbnRFZmwqIGNsaWVudCkKK3sKKyAgICBpZiAoY2xp
ZW50ICYmIGNsaWVudC0+dmVyc2lvbikKKyAgICAgICAgcmV0dXJuOworCisgICAgV2ViUGFzdGVi
b2FyZFByb3h5RWZsOjpzaGFyZWQoKS0+aW5pdGlhbGl6ZUNsaWVudChjbGllbnQpOworfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL2VmbC9XS1Bhc3RlYm9hcmRF
ZmwuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9lZmwvV0tQYXN0ZWJvYXJkRWZs
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjUxYmVkNAotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9lZmwvV0tQYXN0ZWJvYXJk
RWZsLmgKQEAgLTAsMCArMSw2MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBTYW1zdW5n
IEVsZWN0cm9uaWNzCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HCisgKiBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV0tQYXN0ZWJvYXJk
RWZsX2gKKyNkZWZpbmUgV0tQYXN0ZWJvYXJkRWZsX2gKKworI2luY2x1ZGUgPFdlYktpdDIvV0tC
YXNlLmg+CisKKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIiB7CisjZW5kaWYKKworLy8g
UGFzdGVib2FyZCBkYXRhIHR5cGVzLgorZW51bSB7CisgICAgV0tQYXN0ZWJvYXJkTm9EYXRhID0g
MCwKKyAgICBXS1Bhc3RlYm9hcmRUZXh0ID0gMSwKKyAgICBXS1Bhc3RlYm9hcmRNYXJrdXAgPSAy
Cit9OwordHlwZWRlZiB1aW50MzJfdCBXS1Bhc3RlYm9hcmREYXRhVHlwZTsKKwordHlwZWRlZiB2
b2lkICgqV0tQYXN0ZWJvYXJkU2V0RGF0YUNhbGxiYWNrKShXS1N0cmluZ1JlZiBkYXRhLCBXS1Bh
c3RlYm9hcmREYXRhVHlwZSBkYXRhVHlwZSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7Cit0eXBl
ZGVmIFdLU3RyaW5nUmVmICgqV0tQYXN0ZWJvYXJkUmVxdWVzdERhdGFDYWxsYmFjaykoV0tQYXN0
ZWJvYXJkRGF0YVR5cGUgZGF0YVR5cGUsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pOworCitzdHJ1
Y3QgV0tQYXN0ZWJvYXJkQ2xpZW50RWZsIHsKKyAgICBpbnQgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVyc2lvbjsKKyAgICBjb25zdCB2b2lkKiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xpZW50SW5mbzsKKyAgICBXS1Bh
c3RlYm9hcmRTZXREYXRhQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgc2V0RGF0YTsK
KyAgICBXS1Bhc3RlYm9hcmRSZXF1ZXN0RGF0YUNhbGxiYWNrICAgICAgICAgICAgICAgICAgICAg
cmVxdWVzdERhdGE7Cit9OwordHlwZWRlZiBzdHJ1Y3QgV0tQYXN0ZWJvYXJkQ2xpZW50RWZsIFdL
UGFzdGVib2FyZENsaWVudEVmbDsKKworZW51bSB7IFdLUGFzdGVib2FyZENsaWVudEVmbEN1cnJl
bnRWZXJzaW9uID0gMCB9OworCitXS19FWFBPUlQgdm9pZCBXS1Bhc3RlYm9hcmRTZXRDbGllbnQo
Y29uc3QgV0tQYXN0ZWJvYXJkQ2xpZW50RWZsKiBjbGllbnQpOworCisjaWZkZWYgX19jcGx1c3Bs
dXMKK30KKyNlbmRpZgorCisjZW5kaWYgLyogV0tQYXN0ZWJvYXJkRWZsX2ggKi8KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0VXZWJLaXQyLmggYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9FV2ViS2l0Mi5oCmluZGV4IGIxMjIxMTAuLmQ2YzYw
OGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0VXZWJLaXQy
LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRVdlYktpdDIuaApAQCAt
NDgsNiArNDgsNyBAQAogI2luY2x1ZGUgImV3a19uYXZpZ2F0aW9uX2RhdGEuaCIKICNpbmNsdWRl
ICJld2tfbmF2aWdhdGlvbl9wb2xpY3lfZGVjaXNpb24uaCIKICNpbmNsdWRlICJld2tfb2JqZWN0
LmgiCisjaW5jbHVkZSAiZXdrX3Bhc3RlYm9hcmQuaCIKICNpbmNsdWRlICJld2tfcG9wdXBfbWVu
dS5oIgogI2luY2x1ZGUgImV3a19wb3B1cF9tZW51X2l0ZW0uaCIKICNpbmNsdWRlICJld2tfcmVz
b3VyY2UuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3
a19jb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250
ZXh0LmNwcAppbmRleCA0OWM2MjE3Li4wODQ2NDc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHQuY3BwCkBAIC0zNyw2ICszNyw3IEBACiAjaW5j
bHVkZSAiZXdrX2Nvb2tpZV9tYW5hZ2VyX3ByaXZhdGUuaCIKICNpbmNsdWRlICJld2tfZGF0YWJh
c2VfbWFuYWdlcl9wcml2YXRlLmgiCiAjaW5jbHVkZSAiZXdrX2Zhdmljb25fZGF0YWJhc2VfcHJp
dmF0ZS5oIgorI2luY2x1ZGUgImV3a19wYXN0ZWJvYXJkX3ByaXZhdGUuaCIKICNpbmNsdWRlICJl
d2tfcHJpdmF0ZS5oIgogI2luY2x1ZGUgImV3a19zdG9yYWdlX21hbmFnZXJfcHJpdmF0ZS5oIgog
I2luY2x1ZGUgImV3a191cmxfc2NoZW1lX3JlcXVlc3RfcHJpdmF0ZS5oIgpAQCAtOTUsNiArOTYs
NyBAQCBFd2tDb250ZXh0OjpFd2tDb250ZXh0KFBhc3NSZWZQdHI8V2ViQ29udGV4dD4gY29udGV4
dCkKICAgICAgICAgZXdrX3NldHRpbmdzX3NwZWxsX2NoZWNraW5nX2xhbmd1YWdlc19zZXQoMCk7
CiAgICAgfQogI2VuZGlmCisgICAgRXdrX1Bhc3RlYm9hcmQ6OmluaXRpYWxpemUoKTsKIH0KIAog
RXdrQ29udGV4dDo6fkV3a0NvbnRleHQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9lZmwvZXdrX3Bhc3RlYm9hcmQuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9lZmwvZXdrX3Bhc3RlYm9hcmQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAuLmY3NzQ2YjEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2VmbC9ld2tfcGFzdGVib2FyZC5jcHAKQEAgLTAsMCArMSw5OSBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNzCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENP
TlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hU
IEhPTERFUiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HCisgKiBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJld2tfcGFzdGVib2FyZC5oIgor
CisjaW5jbHVkZSAiV0tBUElDYXN0LmgiCisjaW5jbHVkZSAiV0tQYXN0ZWJvYXJkRWZsLmgiCisj
aW5jbHVkZSAiV0tSZXRhaW5QdHIuaCIKKyNpbmNsdWRlICJXS1N0cmluZy5oIgorI2luY2x1ZGUg
ImV3a19wYXN0ZWJvYXJkX3ByaXZhdGUuaCIKKyNpbmNsdWRlICJld2tfcHJpdmF0ZS5oIgorI2lu
Y2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKKwor
c3RhdGljIEV3a19QYXN0ZWJvYXJkX0RhdGFfU2V0X0NiIGRhdGFTZXRDYWxsYmFjayA9IDA7Citz
dGF0aWMgRXdrX1Bhc3RlYm9hcmRfRGF0YV9SZXF1ZXN0X0NiIGRhdGFSZXF1ZXN0Q2FsbGJhY2sg
PSAwOworCitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKEVXS19QQVNURUJPQVJEX05PX0RB
VEEsIFdLUGFzdGVib2FyZE5vRGF0YSk7CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKEVX
S19QQVNURUJPQVJEX1RFWFQsIFdLUGFzdGVib2FyZFRleHQpOworQ09NUElMRV9BU1NFUlRfTUFU
Q0hJTkdfRU5VTShFV0tfUEFTVEVCT0FSRF9NQVJLVVAsIFdLUGFzdGVib2FyZE1hcmt1cCk7CisK
K3N0YXRpYyB2b2lkIHNldERhdGEoV0tTdHJpbmdSZWYgZGF0YSwgV0tQYXN0ZWJvYXJkRGF0YVR5
cGUgdHlwZSwgY29uc3Qgdm9pZCopCit7CisgICAgaWYgKGRhdGFTZXRDYWxsYmFjaykKKyAgICAg
ICAgZGF0YVNldENhbGxiYWNrKHRvSW1wbChkYXRhKS0+c3RyaW5nKCkudXRmOCgpLmRhdGEoKSwg
c3RhdGljX2Nhc3Q8RXdrX1Bhc3RlYm9hcmRfRGF0YV9UeXBlPih0eXBlKSk7Cit9CisKK3N0YXRp
YyBXS1N0cmluZ1JlZiByZXF1ZXN0RGF0YShXS1Bhc3RlYm9hcmREYXRhVHlwZSB0eXBlLCBjb25z
dCB2b2lkKikKK3sKKyAgICBpZiAoZGF0YVJlcXVlc3RDYWxsYmFjaykKKyAgICAgICAgcmV0dXJu
IFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKGRhdGFSZXF1ZXN0Q2FsbGJhY2soc3RhdGlj
X2Nhc3Q8RXdrX1Bhc3RlYm9hcmRfRGF0YV9UeXBlPih0eXBlKSkpOworCisgICAgcmV0dXJuIFdL
U3RyaW5nUmVmKCk7Cit9CisKK25hbWVzcGFjZSBFd2tfUGFzdGVib2FyZCB7CisKKy8qKgorICog
SW5pdGlhbGl6ZXMgcGFzdGVib2FyZCBjYWxsYmFja3MuCisgKgorICogQGludGVybmFsCisgKgor
ICogUGFzdGVib2FyZCBpbiBFRkwgZnJhbWV3b3JrIHVzZXMgRWxlbWVudGFyeSB3aGljaCBjYW5u
b3QgYmUKKyAqIGluY2x1ZGVkIGludG8gV2ViS2l0LCBzbyBhcHBsaWNhdGlvbiBoYXMgdG8gaW1w
bGVtZW50IGNhbGxiYWNrcworICogdG8gcHJvdmlkZSBwYXN0ZWJvYXJkIHN1cHBvcnQuCisgKi8K
K3ZvaWQgaW5pdGlhbGl6ZSgpCit7CisgICAgc3RhdGljIGJvb2wgZGlkSW5pdGlhbGl6ZVBhc3Rl
Ym9hcmRDbGllbnQgPSBmYWxzZTsKKworICAgIGlmIChkaWRJbml0aWFsaXplUGFzdGVib2FyZENs
aWVudCkKKyAgICAgICAgcmV0dXJuOworCisgICAgV0tQYXN0ZWJvYXJkQ2xpZW50RWZsIHBhc3Rl
Ym9hcmRDbGllbnRFZmwgPSB7CisgICAgICAgIFdLUGFzdGVib2FyZENsaWVudEVmbEN1cnJlbnRW
ZXJzaW9uLAorICAgICAgICAwLCAvLyBjbGllbnRJbmZvCisgICAgICAgIHNldERhdGEsCisgICAg
ICAgIHJlcXVlc3REYXRhCisgICAgfTsKKyAgICBXS1Bhc3RlYm9hcmRTZXRDbGllbnQoJnBhc3Rl
Ym9hcmRDbGllbnRFZmwpOworCisgICAgZGlkSW5pdGlhbGl6ZVBhc3RlYm9hcmRDbGllbnQgPSB0
cnVlOworfQorCit9IC8vIG5hbWVzcGFjZSBFd2tfUGFzdGVib2FyZAorCit2b2lkIGV3a19wYXN0
ZWJvYXJkX2RhdGFfc2V0X2NiX3NldChFd2tfUGFzdGVib2FyZF9EYXRhX1NldF9DYiBjYWxsYmFj
aykKK3sKKyAgICBkYXRhU2V0Q2FsbGJhY2sgPSBjYWxsYmFjazsKK30KKwordm9pZCBld2tfcGFz
dGVib2FyZF9kYXRhX3JlcXVlc3RfY2Jfc2V0KEV3a19QYXN0ZWJvYXJkX0RhdGFfUmVxdWVzdF9D
YiBjYWxsYmFjaykKK3sKKyAgICBkYXRhUmVxdWVzdENhbGxiYWNrID0gY2FsbGJhY2s7Cit9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfcGFzdGVib2Fy
ZC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3Bhc3RlYm9hcmQuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NWU2YjVkCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3Bhc3RlYm9hcmQuaApA
QCAtMCwwICsxLDgzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIFNhbXN1bmcgRWxlY3Ry
b25pY3MKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBD
T1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcK
KyAqIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBld2tfcGFzdGVib2FyZF9oCisj
ZGVmaW5lIGV3a19wYXN0ZWJvYXJkX2gKKworI2luY2x1ZGUgPEV2YXMuaD4KKworI2lmZGVmIF9f
Y3BsdXNwbHVzCitleHRlcm4gIkMiIHsKKyNlbmRpZgorCisvKioKKyAqIEVudW0gdmFsdWVzIHVz
ZWQgdG8gc2V0IHBhc3RlYm9hcmQgZGF0YSB0eXBlLgorICovCitlbnVtIEV3a19QYXN0ZWJvYXJk
X0RhdGFfVHlwZSB7CisgICAgRVdLX1BBU1RFQk9BUkRfTk9fREFUQSwKKyAgICBFV0tfUEFTVEVC
T0FSRF9URVhULAorICAgIEVXS19QQVNURUJPQVJEX01BUktVUAorfTsKKworLyogQ3JlYXRlcyBh
IHR5cGUgbmFtZSBmb3IgdGhlIEV3a19QYXN0ZWJvYXJkX0RhdGFfVHlwZS4gKi8KK3R5cGVkZWYg
ZW51bSBFd2tfUGFzdGVib2FyZF9EYXRhX1R5cGUgRXdrX1Bhc3RlYm9hcmRfRGF0YV9UeXBlOwor
CisvKioKKyAqIERlZmluZXMgYSB0eXBlIG5hbWUgZm9yIHRoZSBjYWxsYmFjayBmdW5jdGlvbiB0
byBwZXJmb3JtIGNvcHkgb3BlcmF0aW9uIHdpdGggZ2l2ZW4gZGF0YSB0eXBlLgorICoKKyAqIEBw
YXJhbSBkYXRhIHRvIGJlIGNvcGllZAorICogQHBhcmFtIHR5cGUgb2YgY29waWVkIGRhdGEKKyAq
LwordHlwZWRlZiB2b2lkICgqRXdrX1Bhc3RlYm9hcmRfRGF0YV9TZXRfQ2IpKGNvbnN0IGNoYXIg
KmRhdGEsIEV3a19QYXN0ZWJvYXJkX0RhdGFfVHlwZSB0eXBlKTsKKworLyoqCisgKiBEZWZpbmVz
IGEgdHlwZSBuYW1lIGZvciB0aGUgY2FsbGJhY2sgZnVuY3Rpb24gdG8gcmVxdWVzdCBmb3IgZGF0
YSB3aXRoIGdpdmVuIHR5cGUuCisgKgorICogVGhpcyBjYWxsYmFjayB3aWxsIHJlcXVlc3QgYW5k
IHJldHVybiBpZiByZWNlaXZlZCBhIGRhdGEgZm9yIGdpdmVuIHR5cGUuCisgKgorICogQHBhcmFt
IHR5cGUgb2YgcmVxdWVzdGVkIGRhdGEKKyAqCisgKiBAcmV0dXJuIHJlcXVlc3RlZCBkYXRhIGlm
IGF0IHN1Y2Nlc3Mgb3IgQGMgTlVMTCBhdCBmYWlsdXJlCisgKi8KK3R5cGVkZWYgY29uc3QgY2hh
ciAqKCpFd2tfUGFzdGVib2FyZF9EYXRhX1JlcXVlc3RfQ2IpKEV3a19QYXN0ZWJvYXJkX0RhdGFf
VHlwZSB0eXBlKTsKKworLyoqCisgKiBTZXRzIGEgY2FsbGJhY2sgZnVuY3Rpb24gdG8gcGVyZm9y
bSBjb3B5IG9wZXJhdGlvbi4KKyAqCisgKiBAcGFyYW0gY2IgYSBuZXcgY2FsbGJhY2sgdG8gc2V0
IC0gaXQgbXVzdCBub3QgYmUgQGMgTlVMTAorICovCitFQVBJIHZvaWQgZXdrX3Bhc3RlYm9hcmRf
ZGF0YV9zZXRfY2Jfc2V0KEV3a19QYXN0ZWJvYXJkX0RhdGFfU2V0X0NiIGNiKTsKKworLyoqCisg
KiBTZXRzIGEgY2FsbGJhY2sgZnVuY3Rpb24gdG8gcmVxdWVzdCBmb3IgcGFzdGVib2FyZCBkYXRh
LgorICoKKyAqIEBwYXJhbSBjYiBhIG5ldyBjYWxsYmFjayB0byBzZXQgLSBpdCBtdXN0IG5vdCBi
ZSBAYyBOVUxMCisgKi8KK0VBUEkgdm9pZCBld2tfcGFzdGVib2FyZF9kYXRhX3JlcXVlc3RfY2Jf
c2V0KEV3a19QYXN0ZWJvYXJkX0RhdGFfUmVxdWVzdF9DYiBjYik7CisKKyNpZmRlZiBfX2NwbHVz
cGx1cworfQorI2VuZGlmCisjZW5kaWYgLy8gZXdrX3Bhc3RlYm9hcmRfaApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3Bhc3RlYm9hcmRfcHJpdmF0ZS5o
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3Bhc3RlYm9hcmRfcHJpdmF0
ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjViZTU4ZWQKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfcGFzdGVib2Fy
ZF9wcml2YXRlLmgKQEAgLTAsMCArMSwzNSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBT
YW1zdW5nIEVsZWN0cm9uaWNzCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElT
IiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HCisgKiBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgZXdrX3Bh
c3RlYm9hcmRfcHJpdmF0ZV9oCisjZGVmaW5lIGV3a19wYXN0ZWJvYXJkX3ByaXZhdGVfaAorCitu
YW1lc3BhY2UgRXdrX1Bhc3RlYm9hcmQgeworCit2b2lkIGluaXRpYWxpemUoKTsKKworfQorCisj
ZW5kaWYgLy8gZXdrX3Bhc3RlYm9hcmRfcHJpdmF0ZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
YkNvbnRleHQuaAppbmRleCA1MTgxNzQ0Li4zNDdkNzcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJDb250ZXh0LmgKQEAgLTI4Miw2ICsyODIsMTEgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNl
dFBhc3RlYm9hcmRCdWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFNoYXJlZE1lbW9yeTo6SGFuZGxlJiwg
dWludDY0X3Qgc2l6ZSk7CiAjZW5kaWYKIAorI2lmIFBMQVRGT1JNKEVGTCkKKyAgICB2b2lkIHNl
dFBhc3RlYm9hcmREYXRhRm9yVHlwZShjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmIGRhdGFU
eXBlKTsKKyAgICB2b2lkIHJlcXVlc3RQYXN0ZWJvYXJkRGF0YUZvclR5cGUoY29uc3QgU3RyaW5n
JiBkYXRhVHlwZSwgU3RyaW5nJiB2YWx1ZSk7CisjZW5kaWYKKwogI2lmICFQTEFURk9STShNQUMp
CiAgICAgLy8gRklYTUU6IFRoaXMgYSBkdW1teSBtZXNzYWdlLCB0byBhdm9pZCBicmVha2luZyB0
aGUgYnVpbGQgZm9yIHBsYXRmb3JtcyB0aGF0IGRvbid0IHJlcXVpcmUKICAgICAvLyBhbnkgc3lu
Y2hyb25vdXMgbWVzc2FnZXMsIGFuZCBzaG91bGQgYmUgcmVtb3ZlZCB3aGVuIDxyZGFyOi8vcHJv
YmxlbS84Nzc1MTE1PiBpcyBmaXhlZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJDb250ZXh0Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
YkNvbnRleHQubWVzc2FnZXMuaW4KaW5kZXggODM5Y2JjYy4uMjQ5ZjBkMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQubWVzc2FnZXMuaW4KKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQubWVzc2FnZXMuaW4KQEAgLTU0LDQgKzU0
LDkgQEAgbWVzc2FnZXMgLT4gV2ViQ29udGV4dCB7CiAKICAgICAjIFBsdWctaW4gbWVzc2FnZXMu
CiAgICAgdm9pZCBBZGRQbHVnSW5BdXRvU3RhcnRPcmlnaW5IYXNoKFdURjo6U3RyaW5nIHBhZ2VP
cmlnaW4sIHVpbnQzMl90IGhhc2gpCisKKyNpZiBQTEFURk9STShFRkwpCisgICAgU2V0UGFzdGVi
b2FyZERhdGFGb3JUeXBlKFdURjo6U3RyaW5nIGRhdGEsIFdURjo6U3RyaW5nIGRhdGFUeXBlKQor
ICAgIFJlcXVlc3RQYXN0ZWJvYXJkRGF0YUZvclR5cGUoV1RGOjpTdHJpbmcgZGF0YVR5cGUpIC0+
IChXVEY6OlN0cmluZyBzdHJpbmcpCisjZW5kaWYKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9lZmwvV2ViQ29udGV4dEVmbC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvZWZsL1dlYkNvbnRleHRFZmwuY3BwCmluZGV4IGM3MWE5M2MuLjVhZDMwNjggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViQ29udGV4dEVmbC5jcHAKKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJDb250ZXh0RWZsLmNwcApAQCAtMjgs
NiArMjgsNyBAQAogCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIldlYkluc3BlY3Rv
clNlcnZlci5oIgorI2luY2x1ZGUgIldlYlBhc3RlYm9hcmRQcm94eUVmbC5oIgogI2luY2x1ZGUg
IldlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaCIKICNpbmNsdWRlICJXZWJTb3VwUmVxdWVz
dE1hbmFnZXJQcm94eS5oIgogI2luY2x1ZGUgPEVmcmVldC5oPgpAQCAtMTIyLDQgKzEyMywxNCBA
QCBTdHJpbmcgV2ViQ29udGV4dDo6cGxhdGZvcm1EZWZhdWx0Q29va2llU3RvcmFnZURpcmVjdG9y
eSgpIGNvbnN0CiAgICAgcmV0dXJuIFN0cmluZygpOwogfQogCit2b2lkIFdlYkNvbnRleHQ6OnNl
dFBhc3RlYm9hcmREYXRhRm9yVHlwZShjb25zdCBTdHJpbmcmIGRhdGEsIGNvbnN0IFN0cmluZyYg
ZGF0YVR5cGUpCit7CisgICAgV2ViUGFzdGVib2FyZFByb3h5RWZsOjpzaGFyZWQoKS0+c2V0UGFz
dGVib2FyZERhdGFGb3JUeXBlKGRhdGEsIGRhdGFUeXBlKTsKK30KKwordm9pZCBXZWJDb250ZXh0
OjpyZXF1ZXN0UGFzdGVib2FyZERhdGFGb3JUeXBlKGNvbnN0IFN0cmluZyYgZGF0YVR5cGUsIFN0
cmluZyYgdmFsdWUpCit7CisgICAgdmFsdWUgPSBXZWJQYXN0ZWJvYXJkUHJveHlFZmw6OnNoYXJl
ZCgpLT5yZXF1ZXN0UGFzdGVib2FyZERhdGFGb3JUeXBlKGRhdGFUeXBlKTsKK30KKwogfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZs
L1dlYlBhc3RlYm9hcmRDbGllbnRFZmwuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2Vm
bC9XZWJQYXN0ZWJvYXJkQ2xpZW50RWZsLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwLi43ZDhlN2EyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL2VmbC9XZWJQYXN0ZWJvYXJkQ2xpZW50RWZsLmNwcApAQCAtMCwwICsxLDYxIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDEyIFNhbXN1bmcgRWxlY3Ryb25pY3MKKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQg
Q09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklH
SFQgSE9MREVSIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcKKyAqIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYlBhc3RlYm9hcmRDbGll
bnRFZmwuaCIKKworI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgorI2luY2x1ZGUgPFdlYkNvcmUvUGFz
dGVib2FyZC5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworc3RhdGljIFdLUGFzdGVib2FyZERh
dGFUeXBlIGdldERhdGFUeXBlRnJvbVN0cmluZyhjb25zdCBTdHJpbmcmIGRhdGFUeXBlKQorewor
ICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZShkYXRhVHlwZSwgV2ViQ29yZTo6cGFzdGVib2FyZERh
dGFUeXBlVGV4dCkpCisgICAgICAgIHJldHVybiBXS1Bhc3RlYm9hcmRUZXh0OworCisgICAgaWYg
KGVxdWFsSWdub3JpbmdDYXNlKGRhdGFUeXBlLCBXZWJDb3JlOjpwYXN0ZWJvYXJkRGF0YVR5cGVN
YXJrdXApKQorICAgICAgICByZXR1cm4gV0tQYXN0ZWJvYXJkTWFya3VwOworCisgICAgcmV0dXJu
IFdLUGFzdGVib2FyZE5vRGF0YTsKK30KKwordm9pZCBXZWJQYXN0ZWJvYXJkQ2xpZW50RWZsOjpz
ZXREYXRhKGNvbnN0IFN0cmluZyYgZGF0YSwgY29uc3QgU3RyaW5nJiBkYXRhVHlwZSkKK3sKKyAg
ICBpZiAoIW1fY2xpZW50LnNldERhdGEpCisgICAgICAgIHJldHVybjsKKworICAgIG1fY2xpZW50
LnNldERhdGEodG9BUEkoZGF0YS5pbXBsKCkpLCBnZXREYXRhVHlwZUZyb21TdHJpbmcoZGF0YVR5
cGUpLCBtX2NsaWVudC5jbGllbnRJbmZvKTsKK30KKworU3RyaW5nIFdlYlBhc3RlYm9hcmRDbGll
bnRFZmw6OnJlcXVlc3REYXRhKGNvbnN0IFN0cmluZyYgZGF0YVR5cGUpCit7CisgICAgaWYgKCFt
X2NsaWVudC5yZXF1ZXN0RGF0YSkKKyAgICAgICAgcmV0dXJuIFN0cmluZygpOworCisgICAgcmV0
dXJuIHRvSW1wbChtX2NsaWVudC5yZXF1ZXN0RGF0YShnZXREYXRhVHlwZUZyb21TdHJpbmcoZGF0
YVR5cGUpLCBtX2NsaWVudC5jbGllbnRJbmZvKSktPnN0cmluZygpOworfQorCit9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2Vi
UGFzdGVib2FyZENsaWVudEVmbC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJQ
YXN0ZWJvYXJkQ2xpZW50RWZsLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u
OWI5YzMzNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwv
V2ViUGFzdGVib2FyZENsaWVudEVmbC5oCkBAIC0wLDAgKzEsNDMgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTIgU2Ftc3VuZyBFbGVjdHJvbmljcworICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRP
UlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVIg
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORworICogTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aWZuZGVmIFdlYlBhc3RlYm9hcmRDbGllbnRFZmxfaAorI2RlZmluZSBXZWJQYXN0ZWJvYXJkQ2xp
ZW50RWZsX2gKKworI2luY2x1ZGUgIkFQSUNsaWVudC5oIgorI2luY2x1ZGUgIldLUGFzdGVib2Fy
ZEVmbC5oIgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgewor
CitjbGFzcyBXZWJQYXN0ZWJvYXJkQ2xpZW50RWZsIDogcHVibGljIEFQSUNsaWVudDxXS1Bhc3Rl
Ym9hcmRDbGllbnRFZmwsIFdLUGFzdGVib2FyZENsaWVudEVmbEN1cnJlbnRWZXJzaW9uPiB7Citw
dWJsaWM6CisgICAgdm9pZCBzZXREYXRhKGNvbnN0IFN0cmluZyYgZGF0YSwgY29uc3QgU3RyaW5n
JiBkYXRhVHlwZSk7CisgICAgU3RyaW5nIHJlcXVlc3REYXRhKGNvbnN0IFN0cmluZyYgZGF0YVR5
cGUpOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBXZWJQYXN0ZWJv
YXJkQ2xpZW50RWZsX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwv
V2ViUGFzdGVib2FyZFByb3h5RWZsLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwv
V2ViUGFzdGVib2FyZFByb3h5RWZsLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwLi43NWMyYzNjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L2VmbC9XZWJQYXN0ZWJvYXJkUHJveHlFZmwuY3BwCkBAIC0wLDAgKzEsNTkgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTIgU2Ftc3VuZyBFbGVjdHJvbmljcworICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05U
UklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBI
T0xERVIgT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisg
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORworICogTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViUGFzdGVib2FyZFByb3h5RWZs
LmgiCisKKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CisjaW5jbHVkZSA8d3Rm
L3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitXZWJQYXN0ZWJvYXJk
UHJveHlFZmwqIFdlYlBhc3RlYm9hcmRQcm94eUVmbDo6c2hhcmVkKCkKK3sKKyAgICBzdGF0aWMg
V2ViUGFzdGVib2FyZFByb3h5RWZsKiBwYXN0ZWJvYXJkUHJveHlFZmwgPSBhZG9wdFJlZihuZXcg
V2ViUGFzdGVib2FyZFByb3h5RWZsKS5sZWFrUmVmKCk7CisgICAgcmV0dXJuIHBhc3RlYm9hcmRQ
cm94eUVmbDsKK30KKworV2ViUGFzdGVib2FyZFByb3h5RWZsOjpXZWJQYXN0ZWJvYXJkUHJveHlF
ZmwoKQoreworfQorCit2b2lkIFdlYlBhc3RlYm9hcmRQcm94eUVmbDo6aW5pdGlhbGl6ZUNsaWVu
dChjb25zdCBXS1Bhc3RlYm9hcmRDbGllbnRFZmwqIGNsaWVudCkKK3sKKyAgICBtX2NsaWVudC5p
bml0aWFsaXplKGNsaWVudCk7Cit9CisKK3ZvaWQgV2ViUGFzdGVib2FyZFByb3h5RWZsOjpzZXRQ
YXN0ZWJvYXJkRGF0YUZvclR5cGUoY29uc3QgU3RyaW5nJiBkYXRhLCBjb25zdCBTdHJpbmcmIGRh
dGFUeXBlKQoreworICAgIG1fY2xpZW50LnNldERhdGEoZGF0YSwgZGF0YVR5cGUpOworfQorCitT
dHJpbmcgV2ViUGFzdGVib2FyZFByb3h5RWZsOjpyZXF1ZXN0UGFzdGVib2FyZERhdGFGb3JUeXBl
KGNvbnN0IFN0cmluZyYgZGF0YVR5cGUpCit7CisgICAgcmV0dXJuIG1fY2xpZW50LnJlcXVlc3RE
YXRhKGRhdGFUeXBlKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlBhc3RlYm9hcmRQcm94eUVmbC5oIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJQYXN0ZWJvYXJkUHJveHlFZmwuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ODE0ODIzCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJQYXN0ZWJvYXJkUHJveHlFZmwuaApAQCAt
MCwwICsxLDU5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIFNhbXN1bmcgRWxlY3Ryb25p
Y3MKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZ
UklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcKKyAq
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJQYXN0ZWJvYXJkUHJveHlFZmxf
aAorI2RlZmluZSBXZWJQYXN0ZWJvYXJkUHJveHlFZmxfaAorCisjaW5jbHVkZSAiQVBJT2JqZWN0
LmgiCisKKyNpbmNsdWRlICJXZWJQYXN0ZWJvYXJkQ2xpZW50RWZsLmgiCisjaW5jbHVkZSA8d3Rm
L1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisKK25hbWVzcGFjZSBXZWJL
aXQgeworCitjbGFzcyBXZWJQYXN0ZWJvYXJkUHJveHlFZmwgOiBwdWJsaWMgQVBJT2JqZWN0IHsK
K3B1YmxpYzoKKyAgICBzdGF0aWMgY29uc3QgVHlwZSBBUElUeXBlID0gVHlwZVBhc3RlYm9hcmRQ
cm94eTsKKworICAgIHN0YXRpYyBXZWJQYXN0ZWJvYXJkUHJveHlFZmwqIHNoYXJlZCgpOworCisg
ICAgdm9pZCBpbml0aWFsaXplQ2xpZW50KGNvbnN0IFdLUGFzdGVib2FyZENsaWVudEVmbCopOwor
ICAgIFdlYlBhc3RlYm9hcmRDbGllbnRFZmwmIGNsaWVudCgpIHsgcmV0dXJuIG1fY2xpZW50OyB9
CisKKyAgICB2b2lkIHNldFBhc3RlYm9hcmREYXRhRm9yVHlwZShjb25zdCBTdHJpbmcmIGRhdGEs
IGNvbnN0IFN0cmluZyYgZGF0YVR5cGUpOworICAgIFN0cmluZyByZXF1ZXN0UGFzdGVib2FyZERh
dGFGb3JUeXBlKGNvbnN0IFN0cmluZyYgZGF0YVR5cGUpOworCitwcml2YXRlOgorICAgIFdlYlBh
c3RlYm9hcmRQcm94eUVmbCgpOworCisgICAgdmlydHVhbCBUeXBlIHR5cGUoKSBjb25zdCB7IHJl
dHVybiBBUElUeXBlOyB9CisKKyAgICBXZWJQYXN0ZWJvYXJkQ2xpZW50RWZsIG1fY2xpZW50Owor
fTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBXZWJQYXN0ZWJvYXJkUHJv
eHlFZmxfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwCmluZGV4IDg4NDM0ZjUu
LjcwMjM4M2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAKQEAgLTMzLDYg
KzMzLDcgQEAKICNpbmNsdWRlICJXZWJDb250ZXh0TWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJD
b29raWVNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCisjaW5j
bHVkZSAiV2ViUGFnZVByb3h5TWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCiAj
aW5jbHVkZSAiV2ViUHJvY2Vzc1Byb3h5TWVzc2FnZXMuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0Nv
bG9yLmg+CkBAIC00MjMsNiArNDI0LDIzIEBAIHZvaWQgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpz
ZXRTdHJpbmdGb3JUeXBlKGNvbnN0IFN0cmluZyYgc3RyaW5nLCBjb25zdCBTdHJpbmcmCiB9CiAj
ZW5kaWYKIAorI2lmIFBMQVRGT1JNKEVGTCkKKy8vIFBhc3RlYm9hcmRTdHJhdGVneQordm9pZCBX
ZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnNldERhdGFGb3JUeXBlKGNvbnN0IFN0cmluZyYgZGF0YSwg
Y29uc3QgU3RyaW5nJiBkYXRhVHlwZSkKK3sKKyAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5jb25u
ZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkNvbnRleHQ6OlNldFBhc3RlYm9hcmREYXRhRm9y
VHlwZShkYXRhLCBkYXRhVHlwZSksIDApOworfQorCitTdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVn
aWVzOjpyZXF1ZXN0RGF0YUZvclR5cGUoY29uc3QgU3RyaW5nJiBkYXRhVHlwZSkKK3sKKyAgICBT
dHJpbmcgdmFsdWU7CisgICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkuY29ubmVjdGlvbigpLT5zZW5k
U3luYyhNZXNzYWdlczo6V2ViQ29udGV4dDo6UmVxdWVzdFBhc3RlYm9hcmREYXRhRm9yVHlwZShk
YXRhVHlwZSksCisgICAgICAgIE1lc3NhZ2VzOjpXZWJDb250ZXh0OjpSZXF1ZXN0UGFzdGVib2Fy
ZERhdGFGb3JUeXBlOjpSZXBseSh2YWx1ZSksIDApOworCisgICAgcmV0dXJuIHZhbHVlOworfQor
I2VuZGlmCisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjZW5kaWYgLy8gVVNFKFBMQVRGT1JN
X1NUUkFURUdJRVMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaAppbmRleCA4MGFjZmUw
Li4xMDJjY2RjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgKQEAgLTk5LDYgKzk5
LDEwIEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHNldFBhdGhuYW1lc0ZvclR5cGUoY29u
c3QgVmVjdG9yPFN0cmluZz4mLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmROYW1lKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0U3Ry
aW5nRm9yVHlwZShjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBPVkVSUklERTsKICNlbmRpZgorI2lmIFBMQVRG
T1JNKEVGTCkKKyAgICB2aXJ0dWFsIHZvaWQgc2V0RGF0YUZvclR5cGUoY29uc3QgU3RyaW5nJiwg
Y29uc3QgU3RyaW5nJiBkYXRhVHlwZSkgT1ZFUlJJREU7CisgICAgdmlydHVhbCBTdHJpbmcgcmVx
dWVzdERhdGFGb3JUeXBlKGNvbnN0IFN0cmluZyYgZGF0YVR5cGUpIE9WRVJSSURFOworI2VuZGlm
CiAKICNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKICAgICAvLyBXZWJDb3JlOjpQbHVn
aW5TdHJhdGVneSBpbXBsZW1lbnRhdGlvbi4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>179749</attachid>
            <date>2012-12-17 08:34:23 -0800</date>
            <delta_ts>2012-12-19 04:33:14 -0800</delta_ts>
            <desc>added primary selection support</desc>
            <filename>pasteboard3.diff</filename>
            <type>text/plain</type>
            <size>55106</size>
            <attacher name="Michal Pakula vel Rutka">mpakulavelrutka</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBhYTgzOTVhZi4uZWYzZTQxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMy
IEBACisyMDEyLTEyLTE3ICBNaWNoYcWCIFBha3XFgmEgdmVsIFJ1dGthICA8bS5wYWt1bGFAc2Ft
c3VuZy5jb20+CisKKyAgICAgICAgW0VGTF1bV0syXSBJbXBsZW1lbnRhdGlvbiBvZiBwYXN0ZWJv
YXJkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDI0
ODQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBFRkwg
ZG9lcyBub3QgcHJvdmlkZSBwbGF0Zm9ybS13aWRlIGNvcHkgYW5kIHBhc3RlIHN1cHBvcnQsIHNv
IHdlIGNhbm5vdAorICAgICAgICBpbXBsZW1lbnQgcGFzdGVib2FyZCBpbnNpZGUgV2ViQ29yZSBh
cyBpbiBvdGhlciBwb3J0cywgYnV0IGltcGxlbWVudGF0aW9uIGhhcworICAgICAgICB0byBiZSBk
b25lIG9uIFdlYktpdC11c2luZyBhcHBsaWNhdGlvbiBzaWRlLgorCisgICAgICAgIE5vIG5ldyB0
ZXN0cyAtIGFscmVhZHkgY292ZXJlZCBieSBleGlzdGluZyB0ZXN0cy4KKworICAgICAgICAqIHBs
YXRmb3JtL1Bhc3RlYm9hcmQuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoUGFzdGVi
b2FyZCk6CisgICAgICAgICogcGxhdGZvcm0vUGFzdGVib2FyZFN0cmF0ZWd5Lmg6CisgICAgICAg
IChQYXN0ZWJvYXJkU3RyYXRlZ3kpOgorICAgICAgICAqIHBsYXRmb3JtL2VmbC9QYXN0ZWJvYXJk
RWZsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OlBhc3RlYm9hcmQpOgorICAg
ICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6d3JpdGVQbGFpblRleHQpOgorICAgICAgICAoV2Vi
Q29yZTo6UGFzdGVib2FyZDo6d3JpdGVTZWxlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6UGFz
dGVib2FyZDo6d3JpdGVVUkwpOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6ZG9jdW1l
bnRGcmFnbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjpwbGFpblRleHQpOgor
ICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjppc1NlbGVj
dGlvbk1vZGUpOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6c2V0U2VsZWN0aW9uTW9k
ZSk6CisKIDIwMTItMTItMTcgIEFudGhvbnkgU2NpYW4gIDxhc2NpYW5AcmltLmNvbT4KIAogICAg
ICAgICBbQmxhY2tiZXJyeV0gU3RhdGljIGNvZGUgYW5hbHlzaXMgd2FybmluZyBmaXhlcwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZC5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZC5oCmluZGV4IDQwMjJhNjEuLjJmYjE1NTcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmgKQEAgLTYzLDYgKzYzLDEzIEBAIGV4dGVybiBj
b25zdCBjaGFyKiBXZWJVUkxQYm9hcmRUeXBlOwogZXh0ZXJuIGNvbnN0IGNoYXIqIFdlYlVSTHNX
aXRoVGl0bGVzUGJvYXJkVHlwZTsKICNlbmRpZgogCisjaWYgUExBVEZPUk0oRUZMKQorY29uc3Qg
U3RyaW5nIHNlbGVjdGlvbkZvcm1hdFRleHQoIlRleHQiKTsKK2NvbnN0IFN0cmluZyBzZWxlY3Rp
b25Gb3JtYXRNYXJrdXAoIk1hcmt1cCIpOworY29uc3QgU3RyaW5nIHNlbGVjdGlvblR5cGVQcmlt
YXJ5KCJQcmltYXJ5Iik7Citjb25zdCBTdHJpbmcgc2VsZWN0aW9uVHlwZUNsaXBib2FyZCgiQ2xp
cGJvYXJkIik7CisjZW5kaWYKKwogICAgIGNsYXNzIEFyY2hpdmVSZXNvdXJjZTsKIGNsYXNzIENs
aXBib2FyZDsKIGNsYXNzIERvY3VtZW50RnJhZ21lbnQ7CkBAIC0xMDAsNyArMTA3LDcgQEAgcHVi
bGljOgogICAgIFBhc3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gZG9jdW1lbnRGcmFnbWVudChG
cmFtZSosIFBhc3NSZWZQdHI8UmFuZ2U+LCBib29sIGFsbG93UGxhaW5UZXh0LCBib29sJiBjaG9z
ZVBsYWluVGV4dCk7CiAgICAgU3RyaW5nIHBsYWluVGV4dChGcmFtZSogPSAwKTsKICAgICAKLSNp
ZiBQTEFURk9STShRVCkgfHwgUExBVEZPUk0oQ0hST01JVU0pIHx8IFBMQVRGT1JNKEdUSykKKyNp
ZiBQTEFURk9STShRVCkgfHwgUExBVEZPUk0oQ0hST01JVU0pIHx8IFBMQVRGT1JNKEdUSykgfHwg
UExBVEZPUk0oRUZMKQogICAgIGJvb2wgaXNTZWxlY3Rpb25Nb2RlKCkgY29uc3Q7CiAgICAgdm9p
ZCBzZXRTZWxlY3Rpb25Nb2RlKGJvb2wpOwogI2Vsc2UKQEAgLTEyMyw3ICsxMzAsNyBAQCBwcml2
YXRlOgogICAgIEhXTkQgbV9vd25lcjsKICNlbmRpZgogCi0jaWYgUExBVEZPUk0oUVQpIHx8IFBM
QVRGT1JNKENIUk9NSVVNKQorI2lmIFBMQVRGT1JNKFFUKSB8fCBQTEFURk9STShDSFJPTUlVTSkg
fHwgUExBVEZPUk0oRUZMKQogICAgIGJvb2wgbV9zZWxlY3Rpb25Nb2RlOwogI2VuZGlmCiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRTdHJhdGVneS5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZFN0cmF0ZWd5LmgKaW5kZXggZjkyMmM2
Ni4uZDkwNjkyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2Fy
ZFN0cmF0ZWd5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZFN0cmF0
ZWd5LmgKQEAgLTQ0LDcgKzQ0LDYgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBnZXRUeXBl
cyhWZWN0b3I8U3RyaW5nPiYgdHlwZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpID0g
MDsKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXJGb3JUeXBlKGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUp
ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZ2V0UGF0aG5hbWVzRm9yVHlwZShWZWN0b3I8U3RyaW5n
PiYgcGF0aG5hbWVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lKSA9IDA7Ci0gICAgdmlydHVhbCBTdHJpbmcgc3RyaW5nRm9yVHlwZShj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
KSA9IDA7CiAgICAgdmlydHVhbCBpbnQgY2hhbmdlQ291bnQoY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkTmFtZSkgPSAwOwogICAgIHZpcnR1YWwgU3RyaW5nIHVuaXF1ZU5hbWUoKSA9IDA7CiAgICAg
dmlydHVhbCBDb2xvciBjb2xvcihjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSA9IDA7CkBA
IC01NSw2ICs1NCw5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0VHlwZXMoY29uc3Qg
VmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
TmFtZSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzZXRCdWZmZXJGb3JUeXBlKFBhc3NSZWZQdHI8
U2hhcmVkQnVmZmVyPiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzZXRQYXRobmFtZXNGb3JU
eXBlKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwg
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgPSAwOworI2VuZGlmCisjaWYgUExBVEZPUk0o
TUFDKSB8fCBQTEFURk9STShFRkwpCisgICAgdmlydHVhbCBTdHJpbmcgc3RyaW5nRm9yVHlwZShj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNldFN0cmluZ0ZvclR5cGUoY29uc3QgU3RyaW5nJiwg
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSkgPSAwOwogI2VuZGlmCiBwcm90ZWN0ZWQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9lZmwvUGFzdGVib2FyZEVmbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9l
ZmwvUGFzdGVib2FyZEVmbC5jcHAKaW5kZXggN2ExYWM0NS4uMjE0N2I2NyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZsL1Bhc3RlYm9hcmRFZmwuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9QYXN0ZWJvYXJkRWZsLmNwcApAQCAtMzMsNiArMzMsMTEg
QEAKICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RG
U3RyaW5nLmg+CiAKKyNpZiBVU0UoUExBVEZPUk1fU1RSQVRFR0lFUykKKyNpbmNsdWRlICJQYXN0
ZWJvYXJkU3RyYXRlZ3kuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybVN0cmF0ZWdpZXMuaCIKKyNlbmRp
ZgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFBhc3RlYm9hcmQqIFBhc3RlYm9hcmQ6OmdlbmVy
YWxQYXN0ZWJvYXJkKCkKQEAgLTQyLDIzICs0NywzMCBAQCBQYXN0ZWJvYXJkKiBQYXN0ZWJvYXJk
OjpnZW5lcmFsUGFzdGVib2FyZCgpCiB9CiAKIFBhc3RlYm9hcmQ6OlBhc3RlYm9hcmQoKQorICAg
IDogbV9zZWxlY3Rpb25Nb2RlKGZhbHNlKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAK
LXZvaWQgUGFzdGVib2FyZDo6d3JpdGVQbGFpblRleHQoY29uc3QgU3RyaW5nJiwgU21hcnRSZXBs
YWNlT3B0aW9uKQordm9pZCBQYXN0ZWJvYXJkOjp3cml0ZVBsYWluVGV4dChjb25zdCBTdHJpbmcm
IHRleHQsIFNtYXJ0UmVwbGFjZU9wdGlvbikKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAg
IHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+c2V0U3RyaW5nRm9y
VHlwZSh0ZXh0LCBzZWxlY3Rpb25Gb3JtYXRUZXh0LAorICAgICAgICBtX3NlbGVjdGlvbk1vZGUg
PyBzZWxlY3Rpb25UeXBlUHJpbWFyeSA6IHNlbGVjdGlvblR5cGVDbGlwYm9hcmQpOwogfQogCi12
b2lkIFBhc3RlYm9hcmQ6OndyaXRlU2VsZWN0aW9uKFJhbmdlKiwgYm9vbCwgRnJhbWUqKQordm9p
ZCBQYXN0ZWJvYXJkOjp3cml0ZVNlbGVjdGlvbihSYW5nZSogc2VsZWN0ZWRSYW5nZSwgYm9vbCwg
RnJhbWUqKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcGxhdGZvcm1TdHJhdGVnaWVz
KCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT5zZXRTdHJpbmdGb3JUeXBlKAorICAgICAgICBjcmVh
dGVNYXJrdXAoc2VsZWN0ZWRSYW5nZSwgMCwgQW5ub3RhdGVGb3JJbnRlcmNoYW5nZSwgZmFsc2Us
IFJlc29sdmVOb25Mb2NhbFVSTHMpLCBzZWxlY3Rpb25Gb3JtYXRNYXJrdXAsCisgICAgICAgIG1f
c2VsZWN0aW9uTW9kZSA/IHNlbGVjdGlvblR5cGVQcmltYXJ5IDogc2VsZWN0aW9uVHlwZUNsaXBi
b2FyZCk7CiB9CiAKLXZvaWQgUGFzdGVib2FyZDo6d3JpdGVVUkwoY29uc3QgS1VSTCYsIGNvbnN0
IFN0cmluZyYsIEZyYW1lKikKK3ZvaWQgUGFzdGVib2FyZDo6d3JpdGVVUkwoY29uc3QgS1VSTCYg
dXJsLCBjb25zdCBTdHJpbmcmLCBGcmFtZSopCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAg
ICBpZiAodXJsLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgcGxhdGZvcm1TdHJh
dGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT5zZXRTdHJpbmdGb3JUeXBlKHVybC5zdHJp
bmcoKSwgc2VsZWN0aW9uRm9ybWF0TWFya3VwLAorICAgICAgICBtX3NlbGVjdGlvbk1vZGUgPyBz
ZWxlY3Rpb25UeXBlUHJpbWFyeSA6IHNlbGVjdGlvblR5cGVDbGlwYm9hcmQpOwogfQogCiB2b2lk
IFBhc3RlYm9hcmQ6OndyaXRlSW1hZ2UoTm9kZSosIGNvbnN0IEtVUkwmLCBjb25zdCBTdHJpbmcm
KQpAQCAtODIsMTYgKzk0LDQ2IEBAIGJvb2wgUGFzdGVib2FyZDo6Y2FuU21hcnRSZXBsYWNlKCkK
ICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLVBhc3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gUGFz
dGVib2FyZDo6ZG9jdW1lbnRGcmFnbWVudChGcmFtZSosIFBhc3NSZWZQdHI8UmFuZ2U+LCBib29s
LCBib29sJikKK1Bhc3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gUGFzdGVib2FyZDo6ZG9jdW1l
bnRGcmFnbWVudChGcmFtZSogZnJhbWUsIFBhc3NSZWZQdHI8UmFuZ2U+IGNvbnRleHQsIGJvb2wg
YWxsb3dQbGFpblRleHQsIGJvb2wmIGNob3NlUGxhaW5UZXh0KQogewotICAgIG5vdEltcGxlbWVu
dGVkKCk7CisgICAgY2hvc2VQbGFpblRleHQgPSBmYWxzZTsKKworICAgIFN0cmluZyBkYXRhID0g
cGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT5zdHJpbmdGb3JUeXBl
KHNlbGVjdGlvbkZvcm1hdE1hcmt1cCwKKyAgICAgICAgbV9zZWxlY3Rpb25Nb2RlID8gc2VsZWN0
aW9uVHlwZVByaW1hcnkgOiBzZWxlY3Rpb25UeXBlQ2xpcGJvYXJkKTsKKworICAgIGlmICghZGF0
YS5pc0VtcHR5KCkpIHsKKyAgICAgICAgUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGZyYWdtZW50
ID0gY3JlYXRlRnJhZ21lbnRGcm9tTWFya3VwKGZyYW1lLT5kb2N1bWVudCgpLCBkYXRhLCAiIiwg
RGlzYWxsb3dTY3JpcHRpbmdDb250ZW50KTsKKyAgICAgICAgaWYgKGZyYWdtZW50KQorICAgICAg
ICAgICAgcmV0dXJuIGZyYWdtZW50LnJlbGVhc2UoKTsKKyAgICB9CisKKyAgICBkYXRhID0gcGxh
dGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT5zdHJpbmdGb3JUeXBlKHNl
bGVjdGlvbkZvcm1hdFRleHQsCisgICAgICAgIG1fc2VsZWN0aW9uTW9kZSA/IHNlbGVjdGlvblR5
cGVQcmltYXJ5IDogc2VsZWN0aW9uVHlwZUNsaXBib2FyZCk7CisKKyAgICBpZiAoYWxsb3dQbGFp
blRleHQgJiYgIWRhdGEuaXNFbXB0eSgpKSB7CisgICAgICAgIGNob3NlUGxhaW5UZXh0ID0gdHJ1
ZTsKKyAgICAgICAgUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGZyYWdtZW50ID0gY3JlYXRlRnJh
Z21lbnRGcm9tVGV4dChjb250ZXh0LmdldCgpLCBkYXRhKTsKKyAgICAgICAgaWYgKGZyYWdtZW50
KQorICAgICAgICAgICAgcmV0dXJuIGZyYWdtZW50LnJlbGVhc2UoKTsKKyAgICB9CisKICAgICBy
ZXR1cm4gMDsKIH0KIAogU3RyaW5nIFBhc3RlYm9hcmQ6OnBsYWluVGV4dChGcmFtZSopCiB7Ci0g
ICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gU3RyaW5nKCk7CisgICAgcmV0dXJuIHBs
YXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+c3RyaW5nRm9yVHlwZShz
ZWxlY3Rpb25Gb3JtYXRUZXh0LAorICAgICAgICBtX3NlbGVjdGlvbk1vZGUgPyBzZWxlY3Rpb25U
eXBlUHJpbWFyeSA6IHNlbGVjdGlvblR5cGVDbGlwYm9hcmQpOworfQorCitib29sIFBhc3RlYm9h
cmQ6OmlzU2VsZWN0aW9uTW9kZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fc2VsZWN0aW9uTW9k
ZTsKK30KKwordm9pZCBQYXN0ZWJvYXJkOjpzZXRTZWxlY3Rpb25Nb2RlKGJvb2wgc2VsZWN0aW9u
TW9kZSkKK3sKKyAgICBtX3NlbGVjdGlvbk1vZGUgPSBzZWxlY3Rpb25Nb2RlOwogfQogCiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Vm
bC9DaGFuZ2VMb2cKaW5kZXggY2I1NmEwOC4uOGE5OThiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9lZmwvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDIxIEBACisyMDEyLTEyLTE3ICBNaWNoYcWCIFBha3XFgmEgdmVsIFJ1dGthICA8bS5w
YWt1bGFAc2Ftc3VuZy5jb20+CisKKyAgICAgICAgW0VGTF1bV0syXSBJbXBsZW1lbnRhdGlvbiBv
ZiBwYXN0ZWJvYXJkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMDI0ODQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBFRkwgZG9lcyBub3QgcHJvdmlkZSBwbGF0Zm9ybS13aWRlIGNvcHkgYW5kIHBhc3RlIHN1
cHBvcnQsIHNvIHdlIGNhbm5vdAorICAgICAgICBpbXBsZW1lbnQgcGFzdGVib2FyZCBpbnNpZGUg
V2ViQ29yZSBhcyBpbiBvdGhlciBwb3J0cywgYnV0IGltcGxlbWVudGF0aW9uIGhhcworICAgICAg
ICB0byBiZSBkb25lIG9uIFdlYktpdC11c2luZyBhcHBsaWNhdGlvbiBzaWRlLgorCisgICAgICAg
ICogV2ViQ29yZVN1cHBvcnQvUGxhdGZvcm1TdHJhdGVnaWVzRWZsLmNwcDoKKyAgICAgICAgKFBs
YXRmb3JtU3RyYXRlZ2llc0VmbDo6Y3JlYXRlUGFzdGVib2FyZFN0cmF0ZWd5KToKKyAgICAgICAg
KFBsYXRmb3JtU3RyYXRlZ2llc0VmbDo6c2V0U3RyaW5nRm9yVHlwZSk6CisgICAgICAgIChQbGF0
Zm9ybVN0cmF0ZWdpZXNFZmw6OnN0cmluZ0ZvclR5cGUpOgorICAgICAgICAqIFdlYkNvcmVTdXBw
b3J0L1BsYXRmb3JtU3RyYXRlZ2llc0VmbC5oOgorICAgICAgICAoUGxhdGZvcm1TdHJhdGVnaWVz
RWZsKToKKwogMjAxMi0xMi0xNiAgU2Vva2p1IEt3b24gIDxzZW9ranUua3dvbkBnbWFpbC5jb20+
CiAKICAgICAgICAgRml4IHVudXNlZCBwYXJhbWV0ZXIgY29tcGlsZSB3YXJuaW5ncwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvUGxhdGZvcm1TdHJhdGVnaWVz
RWZsLmNwcCBiL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L1BsYXRmb3JtU3RyYXRl
Z2llc0VmbC5jcHAKaW5kZXggYmNlMGIzMS4uN2ZiMGZkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvUGxhdGZvcm1TdHJhdGVnaWVzRWZsLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9QbGF0Zm9ybVN0cmF0ZWdpZXNFZmwuY3Bw
CkBAIC02Miw4ICs2Miw3IEBAIExvYWRlclN0cmF0ZWd5KiBQbGF0Zm9ybVN0cmF0ZWdpZXNFZmw6
OmNyZWF0ZUxvYWRlclN0cmF0ZWd5KCkKIAogUGFzdGVib2FyZFN0cmF0ZWd5KiBQbGF0Zm9ybVN0
cmF0ZWdpZXNFZmw6OmNyZWF0ZVBhc3RlYm9hcmRTdHJhdGVneSgpCiB7Ci0gICAgbm90SW1wbGVt
ZW50ZWQoKTsKLSAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gdGhpczsKIH0KIAogUGx1Z2luU3Ry
YXRlZ3kqIFBsYXRmb3JtU3RyYXRlZ2llc0VmbDo6Y3JlYXRlUGx1Z2luU3RyYXRlZ3koKQpAQCAt
MTgxLDMgKzE4MCwxNSBAQCB2b2lkIFBsYXRmb3JtU3RyYXRlZ2llc0VmbDo6YWRkVmlzaXRlZExp
bmsoUGFnZSogcGFnZSwgTGlua0hhc2ggaGFzaCkKIHsKICAgICBwYWdlLT5ncm91cCgpLmFkZFZp
c2l0ZWRMaW5rSGFzaChoYXNoKTsKIH0KKworLy8gUGFzdGVib2FyZFN0cmF0ZWd5Cit2b2lkIFBs
YXRmb3JtU3RyYXRlZ2llc0VmbDo6c2V0U3RyaW5nRm9yVHlwZShjb25zdCBTdHJpbmcmLCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKQor
eworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK1N0cmluZyBQbGF0Zm9ybVN0cmF0ZWdpZXNF
Zmw6OnN0cmluZ0ZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkTmFtZSkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVy
biBTdHJpbmcoKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBw
b3J0L1BsYXRmb3JtU3RyYXRlZ2llc0VmbC5oIGIvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1
cHBvcnQvUGxhdGZvcm1TdHJhdGVnaWVzRWZsLmgKaW5kZXggNzlmZmRmNi4uNjY0ZGNjNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvUGxhdGZvcm1TdHJhdGVn
aWVzRWZsLmgKKysrIGIvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvUGxhdGZvcm1T
dHJhdGVnaWVzRWZsLmgKQEAgLTI5LDcgKzI5LDcgQEAKICNpbmNsdWRlICJTaGFyZWRXb3JrZXJT
dHJhdGVneS5oIgogI2luY2x1ZGUgIlZpc2l0ZWRMaW5rU3RyYXRlZ3kuaCIKIAotY2xhc3MgUGxh
dGZvcm1TdHJhdGVnaWVzRWZsIDogcHVibGljIFdlYkNvcmU6OlBsYXRmb3JtU3RyYXRlZ2llcywg
cHJpdmF0ZSBXZWJDb3JlOjpDb29raWVzU3RyYXRlZ3ksIHByaXZhdGUgV2ViQ29yZTo6RGF0YWJh
c2VTdHJhdGVneSwgcHJpdmF0ZSBXZWJDb3JlOjpMb2FkZXJTdHJhdGVneSwgcHJpdmF0ZSBXZWJD
b3JlOjpQbHVnaW5TdHJhdGVneSwgcHJpdmF0ZSBXZWJDb3JlOjpTaGFyZWRXb3JrZXJTdHJhdGVn
eSwgcHJpdmF0ZSBXZWJDb3JlOjpWaXNpdGVkTGlua1N0cmF0ZWd5IHsKK2NsYXNzIFBsYXRmb3Jt
U3RyYXRlZ2llc0VmbCA6IHB1YmxpYyBXZWJDb3JlOjpQbGF0Zm9ybVN0cmF0ZWdpZXMsIHByaXZh
dGUgV2ViQ29yZTo6Q29va2llc1N0cmF0ZWd5LCBwcml2YXRlIFdlYkNvcmU6OkRhdGFiYXNlU3Ry
YXRlZ3ksIHByaXZhdGUgV2ViQ29yZTo6TG9hZGVyU3RyYXRlZ3ksIHByaXZhdGUgV2ViQ29yZTo6
UGx1Z2luU3RyYXRlZ3ksIHByaXZhdGUgV2ViQ29yZTo6U2hhcmVkV29ya2VyU3RyYXRlZ3ksIHBy
aXZhdGUgV2ViQ29yZTo6VmlzaXRlZExpbmtTdHJhdGVneSwgcHJpdmF0ZSBXZWJDb3JlOjpQYXN0
ZWJvYXJkU3RyYXRlZ3kgewogcHVibGljOgogICAgIHN0YXRpYyB2b2lkIGluaXRpYWxpemUoKTsK
IApAQCAtNjcsNiArNjcsMTAgQEAgcHJpdmF0ZToKICAgICAvLyBXZWJDb3JlOjpWaXNpdGVkTGlu
a1N0cmF0ZWd5CiAgICAgdmlydHVhbCBib29sIGlzTGlua1Zpc2l0ZWQoV2ViQ29yZTo6UGFnZSos
IFdlYkNvcmU6OkxpbmtIYXNoLCBjb25zdCBXZWJDb3JlOjpLVVJMJiBiYXNlVVJMLCBjb25zdCBX
VEY6OkF0b21pY1N0cmluZyYgYXR0cmlidXRlVVJMKTsKICAgICB2aXJ0dWFsIHZvaWQgYWRkVmlz
aXRlZExpbmsoV2ViQ29yZTo6UGFnZSosIFdlYkNvcmU6OkxpbmtIYXNoKTsKKworICAgIC8vIFdl
YkNvcmU6OlBhc3RlYm9hcmRTdHJhdGVneQorICAgIHZpcnR1YWwgU3RyaW5nIHN0cmluZ0ZvclR5
cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
TmFtZSk7CisgICAgdmlydHVhbCB2b2lkIHNldFN0cmluZ0ZvclR5cGUoY29uc3QgU3RyaW5nJiwg
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSk7CiB9OwogCiAjZW5kaWYgLy8gUGxhdGZvcm1TdHJhdGVnaWVzRWZsX2gKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRl
eCBhZGIzYmM1Li5jNTVlZmRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzYgQEAKKzIwMTItMTIt
MTcgIE1pY2hhxYIgUGFrdcWCYSB2ZWwgUnV0a2EgIDxtLnBha3VsYUBzYW1zdW5nLmNvbT4KKwor
ICAgICAgICBbRUZMXVtXSzJdIEltcGxlbWVudGF0aW9uIG9mIHBhc3RlYm9hcmQKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMjQ4NAorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEVGTCBkb2VzIG5vdCBwcm92
aWRlIHBsYXRmb3JtLXdpZGUgY29weSBhbmQgcGFzdGUgc3VwcG9ydCwgc28gd2UgY2Fubm90Cisg
ICAgICAgIGltcGxlbWVudCBwYXN0ZWJvYXJkIGluc2lkZSBXZWJDb3JlIGFzIGluIG90aGVyIHBv
cnRzLCBidXQgaW1wbGVtZW50YXRpb24gaGFzCisgICAgICAgIHRvIGJlIGRvbmUgb24gV2ViS2l0
LXVzaW5nIGFwcGxpY2F0aW9uIHNpZGUuCisKKyAgICAgICAgVGhpcyBwYXRjaCBpcyBhbiBpbml0
aWFsIGFwcHJvYWNoIHRvIFBhc3RlYm9hcmQgaW1wbGVtZW50YXRpb24gaW4gV2ViS2l0MiwKKyAg
ICAgICAgZm9jdXNpbmcgb24gYmFzaWMgY29weSBhbmQgcGFzdGUgZmVhdHVyZXMuIEl0IHBhc3Nl
c3MgZGF0YSBhbG9uZyB3aXRoIGRhdGEKKyAgICAgICAgdHlwZSBmcm9tIFdlYkNvcmUgdG8gV2Vi
S2l0MiBhbmQgdGhlbiB0aGUgY2xpZW50IGNhbGxiYWNrcyBhcmUgaW52b2tlZC4KKworICAgICAg
ICAqIFBsYXRmb3JtRWZsLmNtYWtlOgorICAgICAgICAqIFNoYXJlZC9BUEkvYy9lZmwvV0tCYXNl
RWZsLmg6CisgICAgICAgICogU2hhcmVkL0FQSU9iamVjdC5oOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQy9lZmwvV0tQYXN0ZWJvYXJkRWZsLmNwcDogQWRkZWQuCisgICAgICAgIChXS1Bhc3Rl
Ym9hcmRTZXRDbGllbnQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9lZmwvV0tQYXN0ZWJv
YXJkRWZsLmg6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL0VXZWJLaXQyLmg6
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHQuY3BwOgorICAgICAgICAo
RXdrQ29udGV4dDo6RXdrQ29udGV4dCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdr
X3Bhc3RlYm9hcmQuY3BwOiBBZGRlZC4KKyAgICAgICAgKHNldERhdGEpOgorICAgICAgICAoZ2V0
RGF0YSk6CisgICAgICAgIChFd2tfUGFzdGVib2FyZCk6CisgICAgICAgIChFd2tfUGFzdGVib2Fy
ZDo6aW5pdGlhbGl6ZSk6CisgICAgICAgIChld2tfcGFzdGVib2FyZF9kYXRhX3NldF9jYl9zZXQp
OgorICAgICAgICAoZXdrX3Bhc3RlYm9hcmRfZGF0YV9yZXF1ZXN0X2NiX3NldCk6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3Bhc3RlYm9hcmQuaDogQWRkZWQuCisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9lZmwvZXdrX3Bhc3RlYm9hcmRfcHJpdmF0ZS5oOiBBZGRlZC4KKyAgICAg
ICAgKEV3a19QYXN0ZWJvYXJkKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQ29udGV4dC5oOgor
ICAgICAgICAoV2ViQ29udGV4dCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkNvbnRleHQubWVz
c2FnZXMuaW46CisgICAgICAgICogVUlQcm9jZXNzL2VmbC9XZWJDb250ZXh0RWZsLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViQ29udGV4dDo6Z2V0UGFzdGVib2FyZFN0cmluZ0ZvclR5cGUpOgor
ICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dDo6c2V0UGFzdGVi
b2FyZFN0cmluZ0ZvclR5cGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9lZmwvV2ViUGFzdGVib2Fy
ZENsaWVudEVmbC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktp
dDo6Z2V0U2VsZWN0aW9uRm9ybWF0RnJvbVN0cmluZyk6CisgICAgICAgIChXZWJLaXQ6OmdldFNl
bGVjdGlvblR5cGVGcm9tU3RyaW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFzdGVib2FyZENs
aWVudEVmbDo6Z2V0U3RyaW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFzdGVib2FyZENsaWVu
dEVmbDo6c2V0U3RyaW5nKToKKyAgICAgICAgKiBVSVByb2Nlc3MvZWZsL1dlYlBhc3RlYm9hcmRD
bGllbnRFZmwuaDogQWRkZWQuCisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViUGFzdGVi
b2FyZENsaWVudEVmbCk6CisgICAgICAgICogVUlQcm9jZXNzL2VmbC9XZWJQYXN0ZWJvYXJkUHJv
eHlFZmwuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhc3RlYm9hcmRQcm94eUVmbDo6c2hhcmVkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFzdGVi
b2FyZFByb3h5RWZsOjpXZWJQYXN0ZWJvYXJkUHJveHlFZmwpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYXN0ZWJvYXJkUHJveHlFZmw6OmluaXRpYWxpemVDbGllbnQpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYXN0ZWJvYXJkUHJveHlFZmw6OmdldFN0cmluZ0ZvclR5cGUpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYXN0ZWJvYXJkUHJveHlFZmw6OnNldFN0cmluZ0ZvclR5cGUpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9lZmwvV2ViUGFzdGVib2FyZFByb3h5RWZsLmg6IEFkZGVkLgorICAgICAgICAo
V2ViS2l0KToKKyAgICAgICAgKFdlYlBhc3RlYm9hcmRQcm94eUVmbCk6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhc3RlYm9hcmRQcm94eUVmbDo6Y2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFzdGVib2FyZFByb3h5RWZsOjp0eXBlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkVkaXRvckNs
aWVudDo6cmVzcG9uZFRvQ2hhbmdlZFNlbGVjdGlvbik6CisgICAgICAgIChXZWJLaXQpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJFZGl0b3JDbGllbnQ6OnN1cHBvcnRzR2xvYmFsU2VsZWN0aW9uKToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVz
LmNwcDoKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXRmb3JtU3Ry
YXRlZ2llczo6c3RyaW5nRm9yVHlwZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaDoKKyAgICAgICAgKFdlYlBsYXRmb3JtU3RyYXRl
Z2llcyk6CisKIDIwMTItMTItMTcgIE1pa2hhaWwgUG96ZG55YWtvdiAgPG1pa2hhaWwucG96ZG55
YWtvdkBpbnRlbC5jb20+CiAKICAgICAgICAgW1dLMl0gVGlsZWRCYWNraW5nU3RvcmU6IGNzczMv
ZGV2aWNlLWFkYXB0L3ZpZXdwb3J0LXdpZHRoLW5vdC1hZmZlY3RpbmctbmV4dC1wYWdlLmh0bWwg
aXMgZmxha3kKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlIGIv
U291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UKaW5kZXggNzNlY2JhMC4uMWFmZTE4YSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UKKysrIGIvU291cmNl
L1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UKQEAgLTMyLDYgKzMyLDcgQEAgbGlzdChBUFBFTkQg
V2ViS2l0Ml9TT1VSQ0VTCiAKICAgICBTaGFyZWQvUGx1Z2lucy9OZXRzY2FwZS94MTEvTmV0c2Nh
cGVQbHVnaW5Nb2R1bGVYMTEuY3BwCiAKKyAgICBVSVByb2Nlc3MvQVBJL0MvZWZsL1dLUGFzdGVi
b2FyZEVmbC5jcHAKICAgICBVSVByb2Nlc3MvQVBJL0MvZWZsL1dLVmlldy5jcHAKIAogICAgIFVJ
UHJvY2Vzcy9BUEkvY3BwL2VmbC9XS0VpbmFTaGFyZWRTdHJpbmcuY3BwCkBAIC02Myw2ICs2NCw3
IEBAIGxpc3QoQVBQRU5EIFdlYktpdDJfU09VUkNFUwogICAgIFVJUHJvY2Vzcy9BUEkvZWZsL2V3
a19uYXZpZ2F0aW9uX2RhdGEuY3BwCiAgICAgVUlQcm9jZXNzL0FQSS9lZmwvZXdrX25hdmlnYXRp
b25fcG9saWN5X2RlY2lzaW9uLmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a19vYmplY3Qu
Y3BwCisgICAgVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3Bhc3RlYm9hcmQuY3BwCiAgICAgVUlQcm9j
ZXNzL0FQSS9lZmwvZXdrX3BvcHVwX21lbnUuY3BwCiAgICAgVUlQcm9jZXNzL0FQSS9lZmwvZXdr
X3BvcHVwX21lbnVfaXRlbS5jcHAKICAgICBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfcmVzb3VyY2Uu
Y3BwCkBAIC0xMDIsNiArMTA0LDggQEAgbGlzdChBUFBFTkQgV2ViS2l0Ml9TT1VSQ0VTCiAgICAg
VUlQcm9jZXNzL2VmbC9XZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5RWZsLmNwcAogICAgIFVJUHJv
Y2Vzcy9lZmwvV2ViSW5zcGVjdG9yUHJveHlFZmwuY3BwCiAgICAgVUlQcm9jZXNzL2VmbC9XZWJQ
YWdlUHJveHlFZmwuY3BwCisgICAgVUlQcm9jZXNzL2VmbC9XZWJQYXN0ZWJvYXJkQ2xpZW50RWZs
LmNwcAorICAgIFVJUHJvY2Vzcy9lZmwvV2ViUGFzdGVib2FyZFByb3h5RWZsLmNwcAogICAgIFVJ
UHJvY2Vzcy9lZmwvV2ViUG9wdXBNZW51UHJveHlFZmwuY3BwCiAgICAgVUlQcm9jZXNzL2VmbC9X
ZWJQcmVmZXJlbmNlc0VmbC5jcHAKICAgICBVSVByb2Nlc3MvZWZsL1dlYlByb2Nlc3NQcm94eUVm
bC5jcHAKQEAgLTI3Nyw2ICsyODEsNyBAQCBzZXQoRVdlYktpdDJfSEVBREVSUwogICAgICIke0NN
QUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vVUlQcm9jZXNzL0FQSS9lZmwvZXdrX25hdmlnYXRpb25f
ZGF0YS5oIgogICAgICIke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vVUlQcm9jZXNzL0FQSS9l
ZmwvZXdrX25hdmlnYXRpb25fcG9saWN5X2RlY2lzaW9uLmgiCiAgICAgIiR7Q01BS0VfQ1VSUkVO
VF9TT1VSQ0VfRElSfS9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfb2JqZWN0LmgiCisgICAgIiR7Q01B
S0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfcGFzdGVib2FyZC5o
IgogICAgICIke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vVUlQcm9jZXNzL0FQSS9lZmwvZXdr
X3BvcHVwX21lbnUuaCIKICAgICAiJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L1VJUHJvY2Vz
cy9BUEkvZWZsL2V3a19wb3B1cF9tZW51X2l0ZW0uaCIKICAgICAiJHtDTUFLRV9DVVJSRU5UX1NP
VVJDRV9ESVJ9L1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19yZXNvdXJjZS5oIgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL2VmbC9XS0Jhc2VFZmwuaCBiL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9BUEkvYy9lZmwvV0tCYXNlRWZsLmgKaW5kZXggNjE4NGM4MS4uMzVlZjg0YiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL2VmbC9XS0Jhc2VFZmwuaAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvZWZsL1dLQmFzZUVmbC5oCkBAIC0yNSw1
ICsyNSw2IEBACiAjZW5kaWYKIAogdHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tWaWV3KiBX
S1ZpZXdSZWY7Cit0eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVXS1Bhc3RlYm9hcmQqIFdLUGFz
dGVib2FyZFJlZjsKIAogI2VuZGlmIC8qIFdLQmFzZUVmbF9oICovCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvQVBJT2JqZWN0LmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJ
T2JqZWN0LmgKaW5kZXggMzExOWRlNi4uMzlkMmE4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvU2hhcmVkL0FQSU9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUElPYmpl
Y3QuaApAQCAtMTMyLDYgKzEzMiw3IEBAIHB1YmxpYzoKICAgICAgICAgVHlwZUVkaXRDb21tYW5k
UHJveHksCiAgICAgICAgIFR5cGVPYmpDT2JqZWN0R3JhcGgsCiAgICAgICAgIFR5cGVWaWV3LAor
ICAgICAgICBUeXBlUGFzdGVib2FyZFByb3h5LAogI2lmIFVTRShTT1VQKQogICAgICAgICBUeXBl
U291cFJlcXVlc3RNYW5hZ2VyLAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL0MvZWZsL1dLUGFzdGVib2FyZEVmbC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL0MvZWZsL1dLUGFzdGVib2FyZEVmbC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMC4uNGUyNzZjYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvQy9lZmwvV0tQYXN0ZWJvYXJkRWZsLmNwcApAQCAtMCwwICsxLDQw
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIFNhbXN1bmcgRWxlY3Ryb25pY3MKKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9M
REVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRI
RSBDT1BZUklHSFQgSE9MREVSIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcKKyAqIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldLUGFzdGVi
b2FyZEVmbC5oIgorCisjaW5jbHVkZSAiV0tBUElDYXN0LmgiCisjaW5jbHVkZSAiV2ViUGFzdGVi
b2FyZFByb3h5RWZsLmgiCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CisKK3ZvaWQgV0tQYXN0
ZWJvYXJkU2V0Q2xpZW50KGNvbnN0IFdLUGFzdGVib2FyZENsaWVudEVmbCogY2xpZW50KQorewor
ICAgIGlmIChjbGllbnQgJiYgY2xpZW50LT52ZXJzaW9uKQorICAgICAgICByZXR1cm47CisKKyAg
ICBXZWJQYXN0ZWJvYXJkUHJveHlFZmw6OnNoYXJlZCgpLT5pbml0aWFsaXplQ2xpZW50KGNsaWVu
dCk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvZWZsL1dL
UGFzdGVib2FyZEVmbC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL2VmbC9XS1Bh
c3RlYm9hcmRFZmwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kOTA2MTBh
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL2VmbC9X
S1Bhc3RlYm9hcmRFZmwuaApAQCAtMCwwICsxLDcwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDEyIFNhbXN1bmcgRWxlY3Ryb25pY3MKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAi
QVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcKKyAqIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBX
S1Bhc3RlYm9hcmRFZmxfaAorI2RlZmluZSBXS1Bhc3RlYm9hcmRFZmxfaAorCisjaW5jbHVkZSA8
V2ViS2l0Mi9XS0Jhc2UuaD4KKworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gIkMiIHsKKyNl
bmRpZgorCisvLyBQYXN0ZWJvYXJkIHNlbGVjdGlvbiBmb3JtYXRzLgorZW51bSB7CisgICAgV0tQ
YXN0ZWJvYXJkU2VsZWN0aW9uRm9ybWF0VW5rbm93biA9IDAsCisgICAgV0tQYXN0ZWJvYXJkU2Vs
ZWN0aW9uRm9ybWF0VGV4dCA9IDEsCisgICAgV0tQYXN0ZWJvYXJkU2VsZWN0aW9uRm9ybWF0TWFy
a3VwID0gMgorfTsKK3R5cGVkZWYgdWludDMyX3QgV0tQYXN0ZWJvYXJkU2VsZWN0aW9uRm9ybWF0
OworCisvLyBQYXN0ZWJvYXJkIHNlbGVjdGlvbiB0eXBlcy4KK2VudW0geworICAgIFdLUGFzdGVi
b2FyZFNlbGVjdGlvblR5cGVVbmtub3duID0gMCwKKyAgICBXS1Bhc3RlYm9hcmRTZWxlY3Rpb25U
eXBlUHJpbWFyeSA9IDEsCisgICAgV0tQYXN0ZWJvYXJkU2VsZWN0aW9uVHlwZUNsaXBib2FyZCA9
IDIKK307Cit0eXBlZGVmIHVpbnQzMl90IFdLUGFzdGVib2FyZFNlbGVjdGlvblR5cGU7CisKK3R5
cGVkZWYgV0tTdHJpbmdSZWYgKCpXS1Bhc3RlYm9hcmRHZXRTdHJpbmdDYWxsYmFjaykoV0tQYXN0
ZWJvYXJkU2VsZWN0aW9uRm9ybWF0IHNlbGVjdGlvbkZvcm1hdCwgV0tQYXN0ZWJvYXJkU2VsZWN0
aW9uVHlwZSBzZWxlY3Rpb25UeXBlLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsKK3R5cGVkZWYg
dm9pZCAoKldLUGFzdGVib2FyZFNldFN0cmluZ0NhbGxiYWNrKShXS1N0cmluZ1JlZiBkYXRhLCBX
S1Bhc3RlYm9hcmRTZWxlY3Rpb25Gb3JtYXQgc2VsZWN0aW9uRm9ybWF0LCBXS1Bhc3RlYm9hcmRT
ZWxlY3Rpb25UeXBlIHNlbGVjdGlvblR5cGUsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pOworCitz
dHJ1Y3QgV0tQYXN0ZWJvYXJkQ2xpZW50RWZsIHsKKyAgICBpbnQgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVyc2lvbjsKKyAgICBjb25zdCB2b2lkKiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xpZW50SW5mbzsKKyAgICBX
S1Bhc3RlYm9hcmRHZXRTdHJpbmdDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgZ2V0U3Ry
aW5nOworICAgIFdLUGFzdGVib2FyZFNldFN0cmluZ0NhbGxiYWNrICAgICAgICAgICAgICAgICAg
ICAgICBzZXRTdHJpbmc7Cit9OwordHlwZWRlZiBzdHJ1Y3QgV0tQYXN0ZWJvYXJkQ2xpZW50RWZs
IFdLUGFzdGVib2FyZENsaWVudEVmbDsKKworZW51bSB7IFdLUGFzdGVib2FyZENsaWVudEVmbEN1
cnJlbnRWZXJzaW9uID0gMCB9OworCitXS19FWFBPUlQgdm9pZCBXS1Bhc3RlYm9hcmRTZXRDbGll
bnQoY29uc3QgV0tQYXN0ZWJvYXJkQ2xpZW50RWZsKiBjbGllbnQpOworCisjaWZkZWYgX19jcGx1
c3BsdXMKK30KKyNlbmRpZgorCisjZW5kaWYgLyogV0tQYXN0ZWJvYXJkRWZsX2ggKi8KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0VXZWJLaXQyLmggYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9FV2ViS2l0Mi5oCmluZGV4IGIxMjIxMTAuLmQ2
YzYwOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0VXZWJL
aXQyLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRVdlYktpdDIuaApA
QCAtNDgsNiArNDgsNyBAQAogI2luY2x1ZGUgImV3a19uYXZpZ2F0aW9uX2RhdGEuaCIKICNpbmNs
dWRlICJld2tfbmF2aWdhdGlvbl9wb2xpY3lfZGVjaXNpb24uaCIKICNpbmNsdWRlICJld2tfb2Jq
ZWN0LmgiCisjaW5jbHVkZSAiZXdrX3Bhc3RlYm9hcmQuaCIKICNpbmNsdWRlICJld2tfcG9wdXBf
bWVudS5oIgogI2luY2x1ZGUgImV3a19wb3B1cF9tZW51X2l0ZW0uaCIKICNpbmNsdWRlICJld2tf
cmVzb3VyY2UuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZs
L2V3a19jb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19j
b250ZXh0LmNwcAppbmRleCA0OWM2MjE3Li4wODQ2NDc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHQuY3BwCkBAIC0zNyw2ICszNyw3IEBACiAj
aW5jbHVkZSAiZXdrX2Nvb2tpZV9tYW5hZ2VyX3ByaXZhdGUuaCIKICNpbmNsdWRlICJld2tfZGF0
YWJhc2VfbWFuYWdlcl9wcml2YXRlLmgiCiAjaW5jbHVkZSAiZXdrX2Zhdmljb25fZGF0YWJhc2Vf
cHJpdmF0ZS5oIgorI2luY2x1ZGUgImV3a19wYXN0ZWJvYXJkX3ByaXZhdGUuaCIKICNpbmNsdWRl
ICJld2tfcHJpdmF0ZS5oIgogI2luY2x1ZGUgImV3a19zdG9yYWdlX21hbmFnZXJfcHJpdmF0ZS5o
IgogI2luY2x1ZGUgImV3a191cmxfc2NoZW1lX3JlcXVlc3RfcHJpdmF0ZS5oIgpAQCAtOTUsNiAr
OTYsNyBAQCBFd2tDb250ZXh0OjpFd2tDb250ZXh0KFBhc3NSZWZQdHI8V2ViQ29udGV4dD4gY29u
dGV4dCkKICAgICAgICAgZXdrX3NldHRpbmdzX3NwZWxsX2NoZWNraW5nX2xhbmd1YWdlc19zZXQo
MCk7CiAgICAgfQogI2VuZGlmCisgICAgRXdrX1Bhc3RlYm9hcmQ6OmluaXRpYWxpemUoKTsKIH0K
IAogRXdrQ29udGV4dDo6fkV3a0NvbnRleHQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9lZmwvZXdrX3Bhc3RlYm9hcmQuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9lZmwvZXdrX3Bhc3RlYm9hcmQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAuLjU5NTZkNTcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2VmbC9ld2tfcGFzdGVib2FyZC5jcHAKQEAgLTAsMCArMSwxMDQgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgU2Ftc3VuZyBFbGVjdHJvbmljcworICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFO
RCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlS
SUdIVCBIT0xERVIgT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORworICogTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiZXdrX3Bhc3RlYm9hcmQu
aCIKKworI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgorI2luY2x1ZGUgIldLUGFzdGVib2FyZEVmbC5o
IgorI2luY2x1ZGUgIldLUmV0YWluUHRyLmgiCisjaW5jbHVkZSAiV0tTdHJpbmcuaCIKKyNpbmNs
dWRlICJld2tfcGFzdGVib2FyZF9wcml2YXRlLmgiCisjaW5jbHVkZSAiZXdrX3ByaXZhdGUuaCIK
KyNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7
CisKK3N0YXRpYyBFd2tfUGFzdGVib2FyZF9EYXRhX1NldF9DYiBkYXRhU2V0Q2FsbGJhY2sgPSAw
Oworc3RhdGljIEV3a19QYXN0ZWJvYXJkX0RhdGFfUmVxdWVzdF9DYiBkYXRhR2V0Q2FsbGJhY2sg
PSAwOworCitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKEVXS19QQVNURUJPQVJEX1NFTEVD
VElPTl9GT1JNQVRfVU5LTk9XTiwgV0tQYXN0ZWJvYXJkU2VsZWN0aW9uRm9ybWF0VW5rbm93bik7
CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKEVXS19QQVNURUJPQVJEX1NFTEVDVElPTl9G
T1JNQVRfVEVYVCwgV0tQYXN0ZWJvYXJkU2VsZWN0aW9uRm9ybWF0VGV4dCk7CitDT01QSUxFX0FT
U0VSVF9NQVRDSElOR19FTlVNKEVXS19QQVNURUJPQVJEX1NFTEVDVElPTl9GT1JNQVRfSFRNTCwg
V0tQYXN0ZWJvYXJkU2VsZWN0aW9uRm9ybWF0TWFya3VwKTsKK0NPTVBJTEVfQVNTRVJUX01BVENI
SU5HX0VOVU0oRVdLX1BBU1RFQk9BUkRfU0VMRUNUSU9OX1RZUEVfVU5LTk9XTiwgV0tQYXN0ZWJv
YXJkU2VsZWN0aW9uVHlwZVVua25vd24pOworQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShF
V0tfUEFTVEVCT0FSRF9TRUxFQ1RJT05fVFlQRV9QUklNQVJZLCBXS1Bhc3RlYm9hcmRTZWxlY3Rp
b25UeXBlUHJpbWFyeSk7CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKEVXS19QQVNURUJP
QVJEX1NFTEVDVElPTl9UWVBFX0NMSVBCT0FSRCwgV0tQYXN0ZWJvYXJkU2VsZWN0aW9uVHlwZUNs
aXBib2FyZCk7CisKK3N0YXRpYyB2b2lkIHNldERhdGEoV0tTdHJpbmdSZWYgc3RyaW5nLCBXS1Bh
c3RlYm9hcmRTZWxlY3Rpb25UeXBlIHNlbGVjdGlvbkZvcm1hdCwgV0tQYXN0ZWJvYXJkU2VsZWN0
aW9uVHlwZSBzZWxlY3Rpb25UeXBlLCBjb25zdCB2b2lkKikKK3sKKyAgICBpZiAoZGF0YVNldENh
bGxiYWNrKQorICAgICAgICBkYXRhU2V0Q2FsbGJhY2soc3RyZHVwKHRvSW1wbChzdHJpbmcpLT5z
dHJpbmcoKS51dGY4KCkuZGF0YSgpKSwgc3RhdGljX2Nhc3Q8RXdrX1Bhc3RlYm9hcmRfU2VsZWN0
aW9uX0Zvcm1hdD4oc2VsZWN0aW9uRm9ybWF0KSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8RXdrX1Bh
c3RlYm9hcmRfU2VsZWN0aW9uX1R5cGU+KHNlbGVjdGlvblR5cGUpKTsKK30KKworc3RhdGljIFdL
U3RyaW5nUmVmIGdldERhdGEoV0tQYXN0ZWJvYXJkU2VsZWN0aW9uVHlwZSBzZWxlY3Rpb25Gb3Jt
YXQsIFdLUGFzdGVib2FyZFNlbGVjdGlvblR5cGUgc2VsZWN0aW9uVHlwZSwgY29uc3Qgdm9pZCop
Cit7CisgICAgaWYgKGRhdGFHZXRDYWxsYmFjaykKKyAgICAgICAgcmV0dXJuIFdLU3RyaW5nQ3Jl
YXRlV2l0aFVURjhDU3RyaW5nKGRhdGFHZXRDYWxsYmFjaygKKyAgICAgICAgc3RhdGljX2Nhc3Q8
RXdrX1Bhc3RlYm9hcmRfU2VsZWN0aW9uX0Zvcm1hdD4oc2VsZWN0aW9uRm9ybWF0KSwgc3RhdGlj
X2Nhc3Q8RXdrX1Bhc3RlYm9hcmRfU2VsZWN0aW9uX1R5cGU+KHNlbGVjdGlvblR5cGUpKSk7CisK
KyAgICByZXR1cm4gV0tTdHJpbmdSZWYoKTsKK30KKworbmFtZXNwYWNlIEV3a19QYXN0ZWJvYXJk
IHsKKworLyoqCisgKiBJbml0aWFsaXplcyBwYXN0ZWJvYXJkIGNhbGxiYWNrcy4KKyAqCisgKiBA
aW50ZXJuYWwKKyAqCisgKiBQYXN0ZWJvYXJkIGluIEVGTCBmcmFtZXdvcmsgdXNlcyBFbGVtZW50
YXJ5IHdoaWNoIGNhbm5vdCBiZQorICogaW5jbHVkZWQgaW50byBXZWJLaXQsIHNvIGFwcGxpY2F0
aW9uIGhhcyB0byBpbXBsZW1lbnQgY2FsbGJhY2tzCisgKiB0byBwcm92aWRlIHBhc3RlYm9hcmQg
c3VwcG9ydC4KKyAqLwordm9pZCBpbml0aWFsaXplKCkKK3sKKyAgICBzdGF0aWMgYm9vbCBkaWRJ
bml0aWFsaXplUGFzdGVib2FyZENsaWVudCA9IGZhbHNlOworCisgICAgaWYgKGRpZEluaXRpYWxp
emVQYXN0ZWJvYXJkQ2xpZW50KQorICAgICAgICByZXR1cm47CisKKyAgICBXS1Bhc3RlYm9hcmRD
bGllbnRFZmwgcGFzdGVib2FyZENsaWVudEVmbCA9IHsKKyAgICAgICAgV0tQYXN0ZWJvYXJkQ2xp
ZW50RWZsQ3VycmVudFZlcnNpb24sCisgICAgICAgIDAsIC8vIGNsaWVudEluZm8KKyAgICAgICAg
Z2V0RGF0YSwKKyAgICAgICAgc2V0RGF0YQorICAgIH07CisgICAgV0tQYXN0ZWJvYXJkU2V0Q2xp
ZW50KCZwYXN0ZWJvYXJkQ2xpZW50RWZsKTsKKworICAgIGRpZEluaXRpYWxpemVQYXN0ZWJvYXJk
Q2xpZW50ID0gdHJ1ZTsKK30KKworfSAvLyBuYW1lc3BhY2UgRXdrX1Bhc3RlYm9hcmQKKwordm9p
ZCBld2tfcGFzdGVib2FyZF9kYXRhX3NldF9jYl9zZXQoRXdrX1Bhc3RlYm9hcmRfRGF0YV9TZXRf
Q2IgY2FsbGJhY2spCit7CisgICAgZGF0YVNldENhbGxiYWNrID0gY2FsbGJhY2s7Cit9CisKK3Zv
aWQgZXdrX3Bhc3RlYm9hcmRfZGF0YV9yZXF1ZXN0X2NiX3NldChFd2tfUGFzdGVib2FyZF9EYXRh
X1JlcXVlc3RfQ2IgY2FsbGJhY2spCit7CisgICAgZGF0YUdldENhbGxiYWNrID0gY2FsbGJhY2s7
Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfcGFz
dGVib2FyZC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3Bhc3RlYm9h
cmQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNzc2ODdhCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3Bhc3RlYm9h
cmQuaApAQCAtMCwwICsxLDk3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIFNhbXN1bmcg
RWxlY3Ryb25pY3MKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcKKyAqIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBld2tfcGFzdGVib2Fy
ZF9oCisjZGVmaW5lIGV3a19wYXN0ZWJvYXJkX2gKKworI2luY2x1ZGUgPEV2YXMuaD4KKworI2lm
ZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gIkMiIHsKKyNlbmRpZgorCisvKioKKyAqIEVudW0gdmFs
dWVzIHVzZWQgdG8gc2V0IHNlbGVjdGlvbiBmb3JtYXRzLgorICovCitlbnVtIEV3a19QYXN0ZWJv
YXJkX1NlbGVjdGlvbl9Gb3JtYXQgeworICAgIEVXS19QQVNURUJPQVJEX1NFTEVDVElPTl9GT1JN
QVRfVU5LTk9XTiwKKyAgICBFV0tfUEFTVEVCT0FSRF9TRUxFQ1RJT05fRk9STUFUX1RFWFQsCisg
ICAgRVdLX1BBU1RFQk9BUkRfU0VMRUNUSU9OX0ZPUk1BVF9IVE1MLAorfTsKKworLyogQ3JlYXRl
cyBhIHR5cGUgbmFtZSBmb3IgdGhlIEV3a19QYXN0ZWJvYXJkX1NlbGVjdGlvbl9Gb3JtYXQuKi8K
K3R5cGVkZWYgZW51bSBFd2tfUGFzdGVib2FyZF9TZWxlY3Rpb25fRm9ybWF0IEV3a19QYXN0ZWJv
YXJkX1NlbGVjdGlvbl9Gb3JtYXQ7CisKKy8qKgorICogRW51bSB2YWx1ZXMgdXNlZCB0byBzZXQg
c2VsZWN0aW9uIHR5cGVzLgorICovCitlbnVtIEV3a19QYXN0ZWJvYXJkX1NlbGVjdGlvbl9UeXBl
IHsKKyAgICBFV0tfUEFTVEVCT0FSRF9TRUxFQ1RJT05fVFlQRV9VTktOT1dOLAorICAgIEVXS19Q
QVNURUJPQVJEX1NFTEVDVElPTl9UWVBFX1BSSU1BUlksCisgICAgRVdLX1BBU1RFQk9BUkRfU0VM
RUNUSU9OX1RZUEVfQ0xJUEJPQVJECit9OworCisvKiBDcmVhdGVzIGEgdHlwZSBuYW1lIGZvciB0
aGUgRXdrX1Bhc3RlYm9hcmRfU2VsZWN0aW9uX1R5cGUuKi8KK3R5cGVkZWYgZW51bSBFd2tfUGFz
dGVib2FyZF9TZWxlY3Rpb25fVHlwZSBFd2tfUGFzdGVib2FyZF9TZWxlY3Rpb25fVHlwZTsKKwor
LyoqCisgKiBEZWZpbmVzIGEgdHlwZSBuYW1lIGZvciB0aGUgY2FsbGJhY2sgZnVuY3Rpb24gdG8g
cGVyZm9ybSBjb3B5IG9wZXJhdGlvbiB3aXRoIGdpdmVuIGRhdGEgdHlwZS4KKyAqCisgKiBAcGFy
YW0gZGF0YSB0byBiZSBjb3BpZWQKKyAqIEBwYXJhbSBzZWxlY3Rpb25fZm9ybWF0IG9mIGNvcGll
ZCBkYXRhCisgKiBAcGFyYW0gc2VsZWN0aW9uX3R5cGUgb2YgY29waWVkIGRhdGEKKyAqLwordHlw
ZWRlZiB2b2lkICgqRXdrX1Bhc3RlYm9hcmRfRGF0YV9TZXRfQ2IpKGNvbnN0IGNoYXIgKmRhdGEs
IEV3a19QYXN0ZWJvYXJkX1NlbGVjdGlvbl9Gb3JtYXQgc2VsZWN0aW9uX2Zvcm1hdCwgRXdrX1Bh
c3RlYm9hcmRfU2VsZWN0aW9uX1R5cGUgc2VsZWN0aW9uX3R5cGUpOworCisvKioKKyAqIERlZmlu
ZXMgYSB0eXBlIG5hbWUgZm9yIHRoZSBjYWxsYmFjayBmdW5jdGlvbiB0byByZXF1ZXN0IGZvciBk
YXRhIHdpdGggZ2l2ZW4gdHlwZS4KKyAqCisgKiBUaGlzIGNhbGxiYWNrIHdpbGwgcmVxdWVzdCBh
bmQgcmV0dXJuIGlmIHJlY2VpdmVkIGEgZGF0YSBmb3IgZ2l2ZW4gdHlwZS4KKyAqCisgKiBAcGFy
YW0gc2VsZWN0aW9uX2Zvcm1hdCBvZiByZXF1ZXN0ZWQgZGF0YQorICogQHBhcmFtIHNlbGVjdGlv
bl90eXBlIG9mIGNvcGllZCBkYXRhCisgKgorICogQHJldHVybiByZXF1ZXN0ZWQgZGF0YSBpZiBh
dCBzdWNjZXNzIG9yIEBjIE5VTEwgYXQgZmFpbHVyZQorICovCit0eXBlZGVmIGNvbnN0IGNoYXIg
KigqRXdrX1Bhc3RlYm9hcmRfRGF0YV9SZXF1ZXN0X0NiKShFd2tfUGFzdGVib2FyZF9TZWxlY3Rp
b25fRm9ybWF0IHNlbGVjdGlvbl9mb3JtYXQsIEV3a19QYXN0ZWJvYXJkX1NlbGVjdGlvbl9UeXBl
IHNlbGVjdGlvbl90eXBlKTsKKworLyoqCisgKiBTZXRzIGEgY2FsbGJhY2sgZnVuY3Rpb24gdG8g
cGVyZm9ybSBjb3B5IG9wZXJhdGlvbi4KKyAqCisgKiBAcGFyYW0gY2IgYSBuZXcgY2FsbGJhY2sg
dG8gc2V0IC0gaXQgbXVzdCBub3QgYmUgQGMgTlVMTAorICovCitFQVBJIHZvaWQgZXdrX3Bhc3Rl
Ym9hcmRfZGF0YV9zZXRfY2Jfc2V0KEV3a19QYXN0ZWJvYXJkX0RhdGFfU2V0X0NiIGNiKTsKKwor
LyoqCisgKiBTZXRzIGEgY2FsbGJhY2sgZnVuY3Rpb24gdG8gcmVxdWVzdCBmb3IgcGFzdGVib2Fy
ZCBkYXRhLgorICoKKyAqIEBwYXJhbSBjYiBhIG5ldyBjYWxsYmFjayB0byBzZXQgLSBpdCBtdXN0
IG5vdCBiZSBAYyBOVUxMCisgKi8KK0VBUEkgdm9pZCBld2tfcGFzdGVib2FyZF9kYXRhX3JlcXVl
c3RfY2Jfc2V0KEV3a19QYXN0ZWJvYXJkX0RhdGFfUmVxdWVzdF9DYiBjYik7CisKKyNpZmRlZiBf
X2NwbHVzcGx1cworfQorI2VuZGlmCisjZW5kaWYgLy8gZXdrX3Bhc3RlYm9hcmRfaApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3Bhc3RlYm9hcmRfcHJp
dmF0ZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3Bhc3RlYm9hcmRf
cHJpdmF0ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjViZTU4ZWQKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfcGFz
dGVib2FyZF9wcml2YXRlLmgKQEAgLTAsMCArMSwzNSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNzCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICog
IkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HCisgKiBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYg
ZXdrX3Bhc3RlYm9hcmRfcHJpdmF0ZV9oCisjZGVmaW5lIGV3a19wYXN0ZWJvYXJkX3ByaXZhdGVf
aAorCituYW1lc3BhY2UgRXdrX1Bhc3RlYm9hcmQgeworCit2b2lkIGluaXRpYWxpemUoKTsKKwor
fQorCisjZW5kaWYgLy8gZXdrX3Bhc3RlYm9hcmRfcHJpdmF0ZV9oCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYkNvbnRleHQuaAppbmRleCAxNjU1MTM5Li44NTA5YWZkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJDb250ZXh0LmgKQEAgLTI5Miw3ICsyOTIsNiBAQCBwcml2YXRlOgogI2lmIFBM
QVRGT1JNKE1BQykKICAgICB2b2lkIGdldFBhc3RlYm9hcmRUeXBlcyhjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzKTsKICAgICB2b2lk
IGdldFBhc3RlYm9hcmRQYXRobmFtZXNGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIFZlY3RvcjxTdHJpbmc+JiBwYXRobmFt
ZXMpOwotICAgIHZvaWQgZ2V0UGFzdGVib2FyZFN0cmluZ0ZvclR5cGUoY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgU3RyaW5nJik7CiAg
ICAgdm9pZCBnZXRQYXN0ZWJvYXJkQnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmROYW1lLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBTaGFyZWRNZW1vcnk6OkhhbmRs
ZSYsIHVpbnQ2NF90JiBzaXplKTsKICAgICB2b2lkIHBhc3RlYm9hcmRDb3B5KGNvbnN0IFN0cmlu
ZyYgZnJvbVBhc3RlYm9hcmQsIGNvbnN0IFN0cmluZyYgdG9QYXN0ZWJvYXJkKTsKICAgICB2b2lk
IGdldFBhc3RlYm9hcmRDaGFuZ2VDb3VudChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCB1
aW50NjRfdCYgY2hhbmdlQ291bnQpOwpAQCAtMzAyLDkgKzMwMSwxMiBAQCBwcml2YXRlOgogICAg
IHZvaWQgYWRkUGFzdGVib2FyZFR5cGVzKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNv
bnN0IFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMpOwogICAgIHZvaWQgc2V0UGFzdGVi
b2FyZFR5cGVzKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFZlY3RvcjxTdHJp
bmc+JiBwYXN0ZWJvYXJkVHlwZXMpOwogICAgIHZvaWQgc2V0UGFzdGVib2FyZFBhdGhuYW1lc0Zv
clR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkVHlwZSwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhdGhuYW1lcyk7Ci0gICAgdm9pZCBzZXRQ
YXN0ZWJvYXJkU3RyaW5nRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmKTsKICAgICB2b2lkIHNldFBh
c3RlYm9hcmRCdWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFNoYXJlZE1lbW9yeTo6SGFuZGxlJiwgdWlu
dDY0X3Qgc2l6ZSk7CiAjZW5kaWYKKyNpZiBQTEFURk9STShNQUMpIHx8IFBMQVRGT1JNKEVGTCkK
KyAgICB2b2lkIGdldFBhc3RlYm9hcmRTdHJpbmdGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZE5hbWUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIFN0cmluZyYpOworICAgIHZv
aWQgc2V0UGFzdGVib2FyZFN0cmluZ0ZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJik7CisjZW5kaWYK
IAogI2lmICFQTEFURk9STShNQUMpCiAgICAgLy8gRklYTUU6IFRoaXMgYSBkdW1teSBtZXNzYWdl
LCB0byBhdm9pZCBicmVha2luZyB0aGUgYnVpbGQgZm9yIHBsYXRmb3JtcyB0aGF0IGRvbid0IHJl
cXVpcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0Lm1l
c3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQubWVzc2FnZXMu
aW4KaW5kZXggODM5Y2JjYy4uMDI5ODgzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYkNvbnRleHQubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYkNvbnRleHQubWVzc2FnZXMuaW4KQEAgLTMyLDcgKzMyLDYgQEAgbWVzc2FnZXMgLT4g
V2ViQ29udGV4dCB7CiAgICAgCiAgICAgR2V0UGFzdGVib2FyZFR5cGVzKFdURjo6U3RyaW5nIHBh
c3RlYm9hcmROYW1lKSAtPiAoVmVjdG9yPFdURjo6U3RyaW5nPiB0eXBlcykKICAgICBHZXRQYXN0
ZWJvYXJkUGF0aG5hbWVzRm9yVHlwZShXVEY6OlN0cmluZyBwYXN0ZWJvYXJkTmFtZSwgV1RGOjpT
dHJpbmcgcGFzdGVib2FyZFR5cGUpIC0+IChWZWN0b3I8V1RGOjpTdHJpbmc+IHBhdGhuYW1lcykK
LSAgICBHZXRQYXN0ZWJvYXJkU3RyaW5nRm9yVHlwZShXVEY6OlN0cmluZyBwYXN0ZWJvYXJkTmFt
ZSwgV1RGOjpTdHJpbmcgcGFzdGVib2FyZFR5cGUpIC0+IChXVEY6OlN0cmluZyBzdHJpbmcpCiAg
ICAgR2V0UGFzdGVib2FyZEJ1ZmZlckZvclR5cGUoV1RGOjpTdHJpbmcgcGFzdGVib2FyZE5hbWUs
IFdURjo6U3RyaW5nIHBhc3RlYm9hcmRUeXBlKSAtPiAoV2ViS2l0OjpTaGFyZWRNZW1vcnk6Okhh
bmRsZSBoYW5kbGUsIHVpbnQ2NF90IHNpemUpCiAgICAgUGFzdGVib2FyZENvcHkoV1RGOjpTdHJp
bmcgZnJvbVBhc3RlYm9hcmQsIFdURjo6U3RyaW5nIHRvUGFzdGVib2FyZCkKICAgICBHZXRQYXN0
ZWJvYXJkQ2hhbmdlQ291bnQoV1RGOjpTdHJpbmcgcGFzdGVib2FyZE5hbWUpIC0+ICh1aW50NjRf
dCBjaGFuZ2VDb3VudCkKQEAgLTQyLDkgKzQxLDEzIEBAIG1lc3NhZ2VzIC0+IFdlYkNvbnRleHQg
ewogICAgIEFkZFBhc3RlYm9hcmRUeXBlcyhXVEY6OlN0cmluZyBwYXN0ZWJvYXJkTmFtZSwgVmVj
dG9yPFdURjo6U3RyaW5nPiBwYXN0ZWJvYXJkVHlwZXMpCiAgICAgU2V0UGFzdGVib2FyZFR5cGVz
KFdURjo6U3RyaW5nIHBhc3RlYm9hcmROYW1lLCBWZWN0b3I8V1RGOjpTdHJpbmc+IHBhc3RlYm9h
cmRUeXBlcykKICAgICBTZXRQYXN0ZWJvYXJkUGF0aG5hbWVzRm9yVHlwZShXVEY6OlN0cmluZyBw
YXN0ZWJvYXJkTmFtZSwgV1RGOjpTdHJpbmcgcGFzdGVib2FyZFR5cGUsIFZlY3RvcjxXVEY6OlN0
cmluZz4gcGF0aG5hbWVzKQotICAgIFNldFBhc3RlYm9hcmRTdHJpbmdGb3JUeXBlKFdURjo6U3Ry
aW5nIHBhc3RlYm9hcmROYW1lLCBXVEY6OlN0cmluZyBwYXN0ZWJvYXJkVHlwZSwgV1RGOjpTdHJp
bmcgc3RyaW5nKQogICAgIFNldFBhc3RlYm9hcmRCdWZmZXJGb3JUeXBlKFdURjo6U3RyaW5nIHBh
c3RlYm9hcmROYW1lLCBXVEY6OlN0cmluZyBwYXN0ZWJvYXJkVHlwZSwgV2ViS2l0OjpTaGFyZWRN
ZW1vcnk6OkhhbmRsZSBoYW5kbGUsIHVpbnQ2NF90IHNpemUpCiAjZW5kaWYKKyNpZiBQTEFURk9S
TShNQUMpIHx8IFBMQVRGT1JNKEVGTCkKKyAgICBHZXRQYXN0ZWJvYXJkU3RyaW5nRm9yVHlwZShX
VEY6OlN0cmluZyBwYXN0ZWJvYXJkTmFtZSwgV1RGOjpTdHJpbmcgcGFzdGVib2FyZFR5cGUpIC0+
IChXVEY6OlN0cmluZyBzdHJpbmcpCisgICAgU2V0UGFzdGVib2FyZFN0cmluZ0ZvclR5cGUoV1RG
OjpTdHJpbmcgcGFzdGVib2FyZE5hbWUsIFdURjo6U3RyaW5nIHBhc3RlYm9hcmRUeXBlLCBXVEY6
OlN0cmluZyBzdHJpbmcpCisjZW5kaWYKKwogCiAjaWYgIVBMQVRGT1JNKE1BQykKICAgICAvLyBG
SVhNRTogVGhpcyBhIGR1bW15IG1lc3NhZ2UsIHRvIGF2b2lkIGJyZWFraW5nIHRoZSBidWlsZCBm
b3IgcGxhdGZvcm1zIHRoYXQgZG9uJ3QgcmVxdWlyZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL2VmbC9XZWJDb250ZXh0RWZsLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9lZmwvV2ViQ29udGV4dEVmbC5jcHAKaW5kZXggNmEwMGJlMC4uZDhkNGEwNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJDb250ZXh0RWZsLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYkNvbnRleHRFZmwuY3BwCkBAIC0yOSw2
ICsyOSw3IEBACiAKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiV2ViSW5zcGVjdG9y
U2VydmVyLmgiCisjaW5jbHVkZSAiV2ViUGFzdGVib2FyZFByb3h5RWZsLmgiCiAjaW5jbHVkZSAi
V2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oIgogI2luY2x1ZGUgIldlYlNvdXBSZXF1ZXN0
TWFuYWdlclByb3h5LmgiCiAjaW5jbHVkZSA8RWZyZWV0Lmg+CkBAIC0xMjUsNCArMTI2LDE0IEBA
IFN0cmluZyBXZWJDb250ZXh0OjpwbGF0Zm9ybURlZmF1bHRDb29raWVTdG9yYWdlRGlyZWN0b3J5
KCkgY29uc3QKICAgICByZXR1cm4gU3RyaW5nKCk7CiB9CiAKK3ZvaWQgV2ViQ29udGV4dDo6Z2V0
UGFzdGVib2FyZFN0cmluZ0ZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgU3RyaW5nJiBzdHJpbmcpCit7CisgICAgc3RyaW5n
ID0gV2ViUGFzdGVib2FyZFByb3h5RWZsOjpzaGFyZWQoKS0+Z2V0U3RyaW5nRm9yVHlwZShwYXN0
ZWJvYXJkVHlwZSwgcGFzdGVib2FyZE5hbWUpOworfQorCit2b2lkIFdlYkNvbnRleHQ6OnNldFBh
c3RlYm9hcmRTdHJpbmdGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgc3RyaW5nKQoreworICAgIFdl
YlBhc3RlYm9hcmRQcm94eUVmbDo6c2hhcmVkKCktPnNldFN0cmluZ0ZvclR5cGUoc3RyaW5nLCBw
YXN0ZWJvYXJkVHlwZSwgcGFzdGVib2FyZE5hbWUpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViUGFzdGVib2Fy
ZENsaWVudEVmbC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlBhc3RlYm9h
cmRDbGllbnRFZmwuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUyZTI5
NmUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlBh
c3RlYm9hcmRDbGllbnRFZmwuY3BwCkBAIC0wLDAgKzEsNzIgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTIgU2Ftc3VuZyBFbGVjdHJvbmljcworICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMK
KyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVIgT1IK
KyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORworICogTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViUGFzdGVib2FyZENsaWVudEVmbC5oIgorCisj
aW5jbHVkZSAiV0tBUElDYXN0LmgiCisjaW5jbHVkZSA8V2ViQ29yZS9QYXN0ZWJvYXJkLmg+CisK
K25hbWVzcGFjZSBXZWJLaXQgeworCitzdGF0aWMgV0tQYXN0ZWJvYXJkU2VsZWN0aW9uRm9ybWF0
IGdldFNlbGVjdGlvbkZvcm1hdEZyb21TdHJpbmcoY29uc3QgU3RyaW5nJiBzZWxlY3Rpb25Gb3Jt
YXQpCit7CisgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKHNlbGVjdGlvbkZvcm1hdCwgV2ViQ29y
ZTo6c2VsZWN0aW9uRm9ybWF0VGV4dCkpCisgICAgICAgIHJldHVybiBXS1Bhc3RlYm9hcmRTZWxl
Y3Rpb25Gb3JtYXRUZXh0OworCisgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKHNlbGVjdGlvbkZv
cm1hdCwgV2ViQ29yZTo6c2VsZWN0aW9uRm9ybWF0TWFya3VwKSkKKyAgICAgICAgcmV0dXJuIFdL
UGFzdGVib2FyZFNlbGVjdGlvbkZvcm1hdE1hcmt1cDsKKworICAgIHJldHVybiBXS1Bhc3RlYm9h
cmRTZWxlY3Rpb25Gb3JtYXRVbmtub3duOworfQorCitzdGF0aWMgV0tQYXN0ZWJvYXJkU2VsZWN0
aW9uVHlwZSBnZXRTZWxlY3Rpb25UeXBlRnJvbVN0cmluZyhjb25zdCBTdHJpbmcmIHNlbGVjdGlv
blR5cGUpCit7CisgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKHNlbGVjdGlvblR5cGUsIFdlYkNv
cmU6OnNlbGVjdGlvblR5cGVQcmltYXJ5KSkKKyAgICAgICAgcmV0dXJuIFdLUGFzdGVib2FyZFNl
bGVjdGlvblR5cGVQcmltYXJ5OworCisgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKHNlbGVjdGlv
blR5cGUsIFdlYkNvcmU6OnNlbGVjdGlvblR5cGVDbGlwYm9hcmQpKQorICAgICAgICByZXR1cm4g
V0tQYXN0ZWJvYXJkU2VsZWN0aW9uVHlwZUNsaXBib2FyZDsKKworICAgIHJldHVybiBXS1Bhc3Rl
Ym9hcmRTZWxlY3Rpb25UeXBlVW5rbm93bjsKK30KKworU3RyaW5nIFdlYlBhc3RlYm9hcmRDbGll
bnRFZmw6OmdldFN0cmluZyhjb25zdCBTdHJpbmcmIHNlbGVjdGlvbkZvcm1hdCwgY29uc3QgU3Ry
aW5nJiBzZWxlY3Rpb25UeXBlKQoreworICAgIGlmICghbV9jbGllbnQuZ2V0U3RyaW5nKQorICAg
ICAgICByZXR1cm4gU3RyaW5nKCk7CisKKyAgICByZXR1cm4gdG9JbXBsKG1fY2xpZW50LmdldFN0
cmluZyhnZXRTZWxlY3Rpb25Gb3JtYXRGcm9tU3RyaW5nKHNlbGVjdGlvbkZvcm1hdCksIGdldFNl
bGVjdGlvblR5cGVGcm9tU3RyaW5nKHNlbGVjdGlvblR5cGUpLCBtX2NsaWVudC5jbGllbnRJbmZv
KSktPnN0cmluZygpOworfQorCit2b2lkIFdlYlBhc3RlYm9hcmRDbGllbnRFZmw6OnNldFN0cmlu
Zyhjb25zdCBTdHJpbmcmIHN0cmluZywgY29uc3QgU3RyaW5nJiBzZWxlY3Rpb25Gb3JtYXQsIGNv
bnN0IFN0cmluZyYgc2VsZWN0aW9uVHlwZSkKK3sKKyAgICBpZiAoIW1fY2xpZW50LnNldFN0cmlu
ZykKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9jbGllbnQuc2V0U3RyaW5nKHRvQVBJKHN0cmlu
Zy5pbXBsKCkpLCBnZXRTZWxlY3Rpb25Gb3JtYXRGcm9tU3RyaW5nKHNlbGVjdGlvbkZvcm1hdCks
IGdldFNlbGVjdGlvblR5cGVGcm9tU3RyaW5nKHNlbGVjdGlvblR5cGUpLCBtX2NsaWVudC5jbGll
bnRJbmZvKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlBhc3RlYm9hcmRDbGllbnRFZmwuaCBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViUGFzdGVib2FyZENsaWVudEVmbC5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFkNTJjNGIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlBhc3RlYm9hcmRDbGllbnRFZmwuaApAQCAtMCww
ICsxLDQzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIFNhbXN1bmcgRWxlY3Ryb25pY3MK
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklH
SFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIFRIRSBDT1BZUklHSFQgSE9MREVSIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcKKyAqIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJQYXN0ZWJvYXJkQ2xpZW50RWZsX2gK
KyNkZWZpbmUgV2ViUGFzdGVib2FyZENsaWVudEVmbF9oCisKKyNpbmNsdWRlICJBUElDbGllbnQu
aCIKKyNpbmNsdWRlICJXS1Bhc3RlYm9hcmRFZmwuaCIKKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5o
PgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2ViUGFzdGVib2FyZENsaWVudEVmbCA6
IHB1YmxpYyBBUElDbGllbnQ8V0tQYXN0ZWJvYXJkQ2xpZW50RWZsLCBXS1Bhc3RlYm9hcmRDbGll
bnRFZmxDdXJyZW50VmVyc2lvbj4geworcHVibGljOgorICAgIFN0cmluZyBnZXRTdHJpbmcoY29u
c3QgU3RyaW5nJiBzZWxlY3Rpb25Gb3JtYXQsIGNvbnN0IFN0cmluZyYgc2VsZWN0aW9uVHlwZSk7
CisgICAgdm9pZCBzZXRTdHJpbmcoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBzZWxlY3Rp
b25Gb3JtYXQsIGNvbnN0IFN0cmluZyYgc2VsZWN0aW9uVHlwZSk7Cit9OworCit9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIFdlYlBhc3RlYm9hcmRDbGllbnRFZmxfaApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJQYXN0ZWJvYXJkUHJveHlFZmwu
Y3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJQYXN0ZWJvYXJkUHJveHlFZmwu
Y3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJhYjcxYmUKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlBhc3RlYm9hcmRQcm94
eUVmbC5jcHAKQEAgLTAsMCArMSw1OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBTYW1z
dW5nIEVsZWN0cm9uaWNzCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBPUgorICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HCisgKiBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJXZWJQYXN0ZWJvYXJkUHJveHlFZmwuaCIKKworI2luY2x1ZGUgPHd0Zi90
ZXh0L1N0cmluZ0J1aWxkZXIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKwor
bmFtZXNwYWNlIFdlYktpdCB7CisKK1dlYlBhc3RlYm9hcmRQcm94eUVmbCogV2ViUGFzdGVib2Fy
ZFByb3h5RWZsOjpzaGFyZWQoKQoreworICAgIHN0YXRpYyBXZWJQYXN0ZWJvYXJkUHJveHlFZmwq
IHBhc3RlYm9hcmRQcm94eUVmbCA9IGFkb3B0UmVmKG5ldyBXZWJQYXN0ZWJvYXJkUHJveHlFZmwp
LmxlYWtSZWYoKTsKKyAgICByZXR1cm4gcGFzdGVib2FyZFByb3h5RWZsOworfQorCitXZWJQYXN0
ZWJvYXJkUHJveHlFZmw6OldlYlBhc3RlYm9hcmRQcm94eUVmbCgpCit7Cit9CisKK3ZvaWQgV2Vi
UGFzdGVib2FyZFByb3h5RWZsOjppbml0aWFsaXplQ2xpZW50KGNvbnN0IFdLUGFzdGVib2FyZENs
aWVudEVmbCogY2xpZW50KQoreworICAgIG1fY2xpZW50LmluaXRpYWxpemUoY2xpZW50KTsKK30K
KworU3RyaW5nIFdlYlBhc3RlYm9hcmRQcm94eUVmbDo6Z2V0U3RyaW5nRm9yVHlwZShjb25zdCBT
dHJpbmcmIHNlbGVjdGlvbkZvcm1hdCwgY29uc3QgU3RyaW5nJiBzZWxlY3Rpb25UeXBlKQorewor
ICAgIHJldHVybiBtX2NsaWVudC5nZXRTdHJpbmcoc2VsZWN0aW9uRm9ybWF0LCBzZWxlY3Rpb25U
eXBlKTsKK30KKwordm9pZCBXZWJQYXN0ZWJvYXJkUHJveHlFZmw6OnNldFN0cmluZ0ZvclR5cGUo
Y29uc3QgU3RyaW5nJiBzdHJpbmcsIGNvbnN0IFN0cmluZyYgc2VsZWN0aW9uRm9ybWF0LCBjb25z
dCBTdHJpbmcmIHNlbGVjdGlvblR5cGUpCit7CisgICAgbV9jbGllbnQuc2V0U3RyaW5nKHN0cmlu
Zywgc2VsZWN0aW9uRm9ybWF0LCBzZWxlY3Rpb25UeXBlKTsKK30KKworfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlBhc3Rl
Ym9hcmRQcm94eUVmbC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJQYXN0ZWJv
YXJkUHJveHlFZmwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNmYyMGFh
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJQYXN0
ZWJvYXJkUHJveHlFZmwuaApAQCAtMCwwICsxLDU5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDEyIFNhbXN1bmcgRWxlY3Ryb25pY3MKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAi
QVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcKKyAqIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBX
ZWJQYXN0ZWJvYXJkUHJveHlFZmxfaAorI2RlZmluZSBXZWJQYXN0ZWJvYXJkUHJveHlFZmxfaAor
CisjaW5jbHVkZSAiQVBJT2JqZWN0LmgiCisKKyNpbmNsdWRlICJXZWJQYXN0ZWJvYXJkQ2xpZW50
RWZsLmgiCisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRy
Lmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJQYXN0ZWJvYXJkUHJveHlFZmwg
OiBwdWJsaWMgQVBJT2JqZWN0IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgY29uc3QgVHlwZSBBUElU
eXBlID0gVHlwZVBhc3RlYm9hcmRQcm94eTsKKworICAgIHN0YXRpYyBXZWJQYXN0ZWJvYXJkUHJv
eHlFZmwqIHNoYXJlZCgpOworCisgICAgdm9pZCBpbml0aWFsaXplQ2xpZW50KGNvbnN0IFdLUGFz
dGVib2FyZENsaWVudEVmbCopOworICAgIFdlYlBhc3RlYm9hcmRDbGllbnRFZmwmIGNsaWVudCgp
IHsgcmV0dXJuIG1fY2xpZW50OyB9CisKKyAgICBTdHJpbmcgZ2V0U3RyaW5nRm9yVHlwZShjb25z
dCBTdHJpbmcmIHNlbGVjdGlvbkZvcm1hdCwgY29uc3QgU3RyaW5nJiBzZWxlY3Rpb25UeXBlKTsK
KyAgICB2b2lkIHNldFN0cmluZ0ZvclR5cGUoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBz
ZWxlY3Rpb25Gb3JtYXQsIGNvbnN0IFN0cmluZyYgc2VsZWN0aW9uVHlwZSk7CisKK3ByaXZhdGU6
CisgICAgV2ViUGFzdGVib2FyZFByb3h5RWZsKCk7CisKKyAgICB2aXJ0dWFsIFR5cGUgdHlwZSgp
IGNvbnN0IHsgcmV0dXJuIEFQSVR5cGU7IH0KKworICAgIFdlYlBhc3RlYm9hcmRDbGllbnRFZmwg
bV9jbGllbnQ7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIFdlYlBh
c3RlYm9hcmRQcm94eUVmbF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAKaW5kZXggMWY3MjcwOC4u
MjI0MzJjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcApAQCAtNTEsNiArNTEsOCBAQAogI2lm
IFBMQVRGT1JNKFFUKQogI2luY2x1ZGUgPFFDbGlwYm9hcmQ+CiAjaW5jbHVkZSA8UUd1aUFwcGxp
Y2F0aW9uPgorI2VuZGlmCisjaWYgUExBVEZPUk0oUVQpIHx8IFBMQVRGT1JNKEVGTCkKICNpbmNs
dWRlIDxXZWJDb3JlL1Bhc3RlYm9hcmQuaD4KICNlbmRpZgogCkBAIC0yMDEsMTIgKzIwMywxMiBA
QCB2b2lkIFdlYkVkaXRvckNsaWVudDo6cmVzcG9uZFRvQ2hhbmdlZFNlbGVjdGlvbihGcmFtZSog
ZnJhbWUpCiAgICAgdW5zaWduZWQgc3RhcnQ7CiAgICAgdW5zaWduZWQgZW5kOwogICAgIG1fcGFn
ZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRDaGFuZ2VDb21wb3NpdGlvblNlbGVj
dGlvbihmcmFtZS0+ZWRpdG9yKCktPmdldENvbXBvc2l0aW9uU2VsZWN0aW9uKHN0YXJ0LCBlbmQp
KSk7Ci0jZWxpZiBQTEFURk9STShHVEspIHx8IFBMQVRGT1JNKFFUKQorI2VsaWYgUExBVEZPUk0o
R1RLKSB8fCBQTEFURk9STShRVCkgfHwgUExBVEZPUk0oRUZMKQogICAgIHVwZGF0ZUdsb2JhbFNl
bGVjdGlvbihmcmFtZSk7CiAjZW5kaWYKIH0KIAotI2lmIFBMQVRGT1JNKFFUKQorI2lmIFBMQVRG
T1JNKFFUKSB8fCBQTEFURk9STShFRkwpCiAvLyBGSVhNRTogVXNlIHRoaXMgZnVuY3Rpb24gZm9y
IG90aGVyIFgxMS1iYXNlZCBwbGF0Zm9ybXMgdGhhdCBuZWVkIHRvIG1hbnVhbGx5IHVwZGF0ZSB0
aGUgZ2xvYmFsIHNlbGVjdGlvbi4KIHZvaWQgV2ViRWRpdG9yQ2xpZW50Ojp1cGRhdGVHbG9iYWxT
ZWxlY3Rpb24oRnJhbWUqIGZyYW1lKQogewpAQCAtNDkwLDcgKzQ5Miw3IEBAIGJvb2wgV2ViRWRp
dG9yQ2xpZW50OjpzdXBwb3J0c0dsb2JhbFNlbGVjdGlvbigpCiB7CiAjaWYgUExBVEZPUk0oUVQp
ICYmICFkZWZpbmVkKFFUX05PX0NMSVBCT0FSRCkKICAgICByZXR1cm4gcUFwcC0+Y2xpcGJvYXJk
KCktPnN1cHBvcnRzU2VsZWN0aW9uKCk7Ci0jZWxpZiBQTEFURk9STShHVEspICYmIFBMQVRGT1JN
KFgxMSkKKyNlbGlmIFBMQVRGT1JNKEdUSykgJiYgUExBVEZPUk0oWDExKSB8fCBQTEFURk9STShF
RkwpCiAgICAgcmV0dXJuIHRydWU7CiAjZWxzZQogICAgIC8vIEZJWE1FOiBSZXR1cm4gdHJ1ZSBv
biBvdGhlciBYMTEgcGxhdGZvcm1zIHdoZW4gdGhleSBzdXBwb3J0IGdsb2JhbCBzZWxlY3Rpb24u
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YkVkaXRvckNsaWVudC5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJFZGl0b3JDbGllbnQuaAppbmRleCA2NGY0YTFiLi42NDRmNGE5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5o
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9y
Q2xpZW50LmgKQEAgLTEyNSw3ICsxMjUsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgZXhlY3V0ZVBl
bmRpbmdFZGl0b3JDb21tYW5kcyhXZWJDb3JlOjpGcmFtZSosIFZlY3RvcjxXVEY6OlN0cmluZz4s
IGJvb2wpIE9WRVJSSURFOwogICAgIHZvaWQgZ2V0RWRpdG9yQ29tbWFuZHNGb3JLZXlFdmVudChj
b25zdCBXZWJDb3JlOjpLZXlib2FyZEV2ZW50KiwgVmVjdG9yPFdURjo6U3RyaW5nPiYpIE9WRVJS
SURFOwogI2VuZGlmCi0jaWYgUExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShRVCkKKyNpZiBQTEFU
Rk9STShHVEspIHx8IFBMQVRGT1JNKFFUKSB8fCBQTEFURk9STShFRkwpCiAgICAgdm9pZCB1cGRh
dGVHbG9iYWxTZWxlY3Rpb24oV2ViQ29yZTo6RnJhbWUqKTsKICNlbmRpZgogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3Ry
YXRlZ2llcy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAKaW5kZXggMWY2ZDVkZC4uNTcwZTgyNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0
cmF0ZWdpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUg
IldlYkNvbnRleHRNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYkNvb2tpZU1hbmFnZXIuaCIKICNp
bmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKKyNpbmNsdWRlICJXZWJQYWdlUHJveHlN
ZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNz
UHJveHlNZXNzYWdlcy5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQ29sb3IuaD4KQEAgLTM2MCwxNCAr
MzYxLDYgQEAgdm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmdldFBhdGhuYW1lc0ZvclR5cGUo
VmVjdG9yPFN0cmluZz4mIHBhdGhuYW1lcywgY29uc3QKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2VzOjpXZWJDb250ZXh0OjpHZXRQYXN0ZWJv
YXJkUGF0aG5hbWVzRm9yVHlwZTo6UmVwbHkocGF0aG5hbWVzKSwgMCk7CiB9CiAKLVN0cmluZyBX
ZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnN0cmluZ0ZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkKLXsKLSAgICBTdHJpbmcgdmFs
dWU7Ci0gICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkuY29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNz
YWdlczo6V2ViQ29udGV4dDo6R2V0UGFzdGVib2FyZFN0cmluZ0ZvclR5cGUocGFzdGVib2FyZE5h
bWUsIHBhc3RlYm9hcmRUeXBlKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIE1lc3NhZ2VzOjpXZWJDb250ZXh0OjpHZXRQYXN0ZWJvYXJkU3RyaW5nRm9y
VHlwZTo6UmVwbHkodmFsdWUpLCAwKTsKLSAgICByZXR1cm4gdmFsdWU7Ci19Ci0KIHZvaWQgV2Vi
UGxhdGZvcm1TdHJhdGVnaWVzOjpjb3B5KGNvbnN0IFN0cmluZyYgZnJvbVBhc3RlYm9hcmQsIGNv
bnN0IFN0cmluZyYgdG9QYXN0ZWJvYXJkKQogewogICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLmNv
bm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViQ29udGV4dDo6UGFzdGVib2FyZENvcHkoZnJv
bVBhc3RlYm9hcmQsIHRvUGFzdGVib2FyZCksIDApOwpAQCAtNDMwLDYgKzQyMywxNiBAQCB2b2lk
IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6c2V0UGF0aG5hbWVzRm9yVHlwZShjb25zdCBWZWN0b3I8
U3RyaW5nPiYgcGF0aG5hbWVzLAogewogICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLmNvbm5lY3Rp
b24oKS0+c2VuZChNZXNzYWdlczo6V2ViQ29udGV4dDo6U2V0UGFzdGVib2FyZFBhdGhuYW1lc0Zv
clR5cGUocGFzdGVib2FyZE5hbWUsIHBhc3RlYm9hcmRUeXBlLCBwYXRobmFtZXMpLCAwKTsKIH0K
KyNlbmRpZgorI2lmIFBMQVRGT1JNKE1BQykgfHwgUExBVEZPUk0oRUZMKQorU3RyaW5nIFdlYlBs
YXRmb3JtU3RyYXRlZ2llczo6c3RyaW5nRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRU
eXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKQoreworICAgIFN0cmluZyB2YWx1ZTsK
KyAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5jb25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2Vz
OjpXZWJDb250ZXh0OjpHZXRQYXN0ZWJvYXJkU3RyaW5nRm9yVHlwZShwYXN0ZWJvYXJkTmFtZSwg
cGFzdGVib2FyZFR5cGUpLAorICAgICAgICBNZXNzYWdlczo6V2ViQ29udGV4dDo6R2V0UGFzdGVi
b2FyZFN0cmluZ0ZvclR5cGU6OlJlcGx5KHZhbHVlKSwgMCk7CisKKyAgICByZXR1cm4gdmFsdWU7
Cit9CiAKIHZvaWQgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpzZXRTdHJpbmdGb3JUeXBlKGNvbnN0
IFN0cmluZyYgc3RyaW5nLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaCBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgKaW5k
ZXggN2JmNWZmNS4uNmI4Yzc1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCkBA
IC05Myw3ICs5Myw2IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGdldFR5cGVzKFZlY3Rv
cjxTdHJpbmc+JiB0eXBlcywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgT1ZFUlJJREU7
CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gYnVmZmVyRm9y
VHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmROYW1lKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgZ2V0UGF0aG5hbWVzRm9yVHlwZShW
ZWN0b3I8U3RyaW5nPiYgcGF0aG5hbWVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIFN0cmlu
ZyBzdHJpbmdGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZE5hbWUpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgaW50IGNoYW5nZUNvdW50
KGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgU3Ry
aW5nIHVuaXF1ZU5hbWUoKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIFdlYkNvcmU6OkNvbG9yIGNv
bG9yKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIE9WRVJSSURFOwpAQCAtMTA0LDYgKzEw
Myw5IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHNldFR5cGVzKGNvbnN0IFZlY3RvcjxT
dHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIE9W
RVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBzZXRCdWZmZXJGb3JUeXBlKFBhc3NSZWZQdHI8V2Vi
Q29yZTo6U2hhcmVkQnVmZmVyPiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHNldFBh
dGhuYW1lc0ZvclR5cGUoY29uc3QgVmVjdG9yPFN0cmluZz4mLCBjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBPVkVSUklERTsKKyNlbmRp
ZgorI2lmIFBMQVRGT1JNKE1BQykgfHwgUExBVEZPUk0oRUZMKQorICAgIHZpcnR1YWwgU3RyaW5n
IHN0cmluZ0ZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHNldFN0cmluZ0Zv
clR5cGUoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgT1ZFUlJJREU7CiAjZW5kaWYKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>180131</attachid>
            <date>2012-12-19 04:33:14 -0800</date>
            <delta_ts>2013-01-09 08:02:02 -0800</delta_ts>
            <desc>fixes after review</desc>
            <filename>pasteboard4.diff</filename>
            <type>text/plain</type>
            <size>54795</size>
            <attacher name="Michal Pakula vel Rutka">mpakulavelrutka</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBmOTU1ZjE1Li5kZmFmMWRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzIg
QEAKKzIwMTItMTItMTkgIE1pY2hhxYIgUGFrdcWCYSB2ZWwgUnV0a2EgIDxtLnBha3VsYUBzYW1z
dW5nLmNvbT4KKworICAgICAgICBbRUZMXVtXSzJdIEltcGxlbWVudGF0aW9uIG9mIHBhc3RlYm9h
cmQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMjQ4
NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEVGTCBk
b2VzIG5vdCBwcm92aWRlIHBsYXRmb3JtLXdpZGUgY29weSBhbmQgcGFzdGUgc3VwcG9ydCwgc28g
d2UgY2Fubm90CisgICAgICAgIGltcGxlbWVudCBwYXN0ZWJvYXJkIGluc2lkZSBXZWJDb3JlIGFz
IGluIG90aGVyIHBvcnRzLiBUaGUgaW1wbGVtZW50YXRpb24gaGFzCisgICAgICAgIHRvIGJlIGRv
bmUgb24gYXBwbGljYXRpb24gc2lkZS4KKworICAgICAgICBObyBuZXcgdGVzdHMgLSBhbHJlYWR5
IGNvdmVyZWQgYnkgZXhpc3RpbmcgdGVzdHMuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9QYXN0ZWJv
YXJkLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFBhc3RlYm9hcmQpOgorICAgICAg
ICAqIHBsYXRmb3JtL1Bhc3RlYm9hcmRTdHJhdGVneS5oOgorICAgICAgICAoUGFzdGVib2FyZFN0
cmF0ZWd5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9lZmwvUGFzdGVib2FyZEVmbC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjpQYXN0ZWJvYXJkKToKKyAgICAgICAgKFdlYkNvcmU6
OlBhc3RlYm9hcmQ6OndyaXRlUGxhaW5UZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9h
cmQ6OndyaXRlU2VsZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OndyaXRl
VVJMKToKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OmRvY3VtZW50RnJhZ21lbnQpOgor
ICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6cGxhaW5UZXh0KToKKyAgICAgICAgKFdlYkNv
cmUpOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6aXNTZWxlY3Rpb25Nb2RlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OnNldFNlbGVjdGlvbk1vZGUpOgorCiAyMDEyLTEy
LTE5ICBSZW5hdGEgSG9kb3ZhbiAgPHJlbmlAd2Via2l0Lm9yZz4KIAogICAgICAgICBDU1NQYXJz
ZXIgY3Jhc2VzLCB3aGVuIG5vIGNvbnRleHQgaXMgYXZhaWxhYmxlLCBhbmQgdGhlIHZhbHVlIGlz
IGEgdmFsaWQga2V5d29yZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFz
dGVib2FyZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZC5oCmluZGV4IDQw
MjJhNjEuLjJmYjE1NTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3Rl
Ym9hcmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmgKQEAgLTYz
LDYgKzYzLDEzIEBAIGV4dGVybiBjb25zdCBjaGFyKiBXZWJVUkxQYm9hcmRUeXBlOwogZXh0ZXJu
IGNvbnN0IGNoYXIqIFdlYlVSTHNXaXRoVGl0bGVzUGJvYXJkVHlwZTsKICNlbmRpZgogCisjaWYg
UExBVEZPUk0oRUZMKQorY29uc3QgU3RyaW5nIHNlbGVjdGlvbkZvcm1hdFRleHQoIlRleHQiKTsK
K2NvbnN0IFN0cmluZyBzZWxlY3Rpb25Gb3JtYXRNYXJrdXAoIk1hcmt1cCIpOworY29uc3QgU3Ry
aW5nIHNlbGVjdGlvblR5cGVQcmltYXJ5KCJQcmltYXJ5Iik7Citjb25zdCBTdHJpbmcgc2VsZWN0
aW9uVHlwZUNsaXBib2FyZCgiQ2xpcGJvYXJkIik7CisjZW5kaWYKKwogICAgIGNsYXNzIEFyY2hp
dmVSZXNvdXJjZTsKIGNsYXNzIENsaXBib2FyZDsKIGNsYXNzIERvY3VtZW50RnJhZ21lbnQ7CkBA
IC0xMDAsNyArMTA3LDcgQEAgcHVibGljOgogICAgIFBhc3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVu
dD4gZG9jdW1lbnRGcmFnbWVudChGcmFtZSosIFBhc3NSZWZQdHI8UmFuZ2U+LCBib29sIGFsbG93
UGxhaW5UZXh0LCBib29sJiBjaG9zZVBsYWluVGV4dCk7CiAgICAgU3RyaW5nIHBsYWluVGV4dChG
cmFtZSogPSAwKTsKICAgICAKLSNpZiBQTEFURk9STShRVCkgfHwgUExBVEZPUk0oQ0hST01JVU0p
IHx8IFBMQVRGT1JNKEdUSykKKyNpZiBQTEFURk9STShRVCkgfHwgUExBVEZPUk0oQ0hST01JVU0p
IHx8IFBMQVRGT1JNKEdUSykgfHwgUExBVEZPUk0oRUZMKQogICAgIGJvb2wgaXNTZWxlY3Rpb25N
b2RlKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRTZWxlY3Rpb25Nb2RlKGJvb2wpOwogI2Vsc2UKQEAg
LTEyMyw3ICsxMzAsNyBAQCBwcml2YXRlOgogICAgIEhXTkQgbV9vd25lcjsKICNlbmRpZgogCi0j
aWYgUExBVEZPUk0oUVQpIHx8IFBMQVRGT1JNKENIUk9NSVVNKQorI2lmIFBMQVRGT1JNKFFUKSB8
fCBQTEFURk9STShDSFJPTUlVTSkgfHwgUExBVEZPUk0oRUZMKQogICAgIGJvb2wgbV9zZWxlY3Rp
b25Nb2RlOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bh
c3RlYm9hcmRTdHJhdGVneS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZFN0
cmF0ZWd5LmgKaW5kZXggZjkyMmM2Ni4uZDkwNjkyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vUGFzdGVib2FyZFN0cmF0ZWd5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vUGFzdGVib2FyZFN0cmF0ZWd5LmgKQEAgLTQ0LDcgKzQ0LDYgQEAgcHVibGljOgogICAg
IHZpcnR1YWwgdm9pZCBnZXRUeXBlcyhWZWN0b3I8U3RyaW5nPiYgdHlwZXMsIGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZE5hbWUpID0gMDsKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZE5hbWUpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZ2V0UGF0aG5hbWVz
Rm9yVHlwZShWZWN0b3I8U3RyaW5nPiYgcGF0aG5hbWVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSA9IDA7Ci0gICAgdmlydHVhbCBT
dHJpbmcgc3RyaW5nRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmROYW1lKSA9IDA7CiAgICAgdmlydHVhbCBpbnQgY2hhbmdlQ291bnQo
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgPSAwOwogICAgIHZpcnR1YWwgU3RyaW5nIHVu
aXF1ZU5hbWUoKSA9IDA7CiAgICAgdmlydHVhbCBDb2xvciBjb2xvcihjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lKSA9IDA7CkBAIC01NSw2ICs1NCw5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IHZvaWQgc2V0VHlwZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzZXRCdWZm
ZXJGb3JUeXBlKFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgPSAwOwogICAgIHZpcnR1YWwg
dm9pZCBzZXRQYXRobmFtZXNGb3JUeXBlKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiwgY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgPSAwOwor
I2VuZGlmCisjaWYgUExBVEZPUk0oTUFDKSB8fCBQTEFURk9STShFRkwpCisgICAgdmlydHVhbCBT
dHJpbmcgc3RyaW5nRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmROYW1lKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNldFN0cmluZ0Zv
clR5cGUoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgPSAwOwogI2VuZGlmCiBwcm90ZWN0ZWQ6CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvUGFzdGVib2FyZEVmbC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvUGFzdGVib2FyZEVmbC5jcHAKaW5kZXggN2ExYWM0NS4u
NWExYjkyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZsL1Bhc3RlYm9h
cmRFZmwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9QYXN0ZWJvYXJkRWZs
LmNwcApAQCAtMjgsNiArMjgsOCBAQAogI2luY2x1ZGUgIkltYWdlLmgiCiAjaW5jbHVkZSAiS1VS
TC5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCisjaW5jbHVkZSAiUGFzdGVib2FyZFN0
cmF0ZWd5LmgiCisjaW5jbHVkZSAiUGxhdGZvcm1TdHJhdGVnaWVzLmgiCiAjaW5jbHVkZSAiUmVu
ZGVySW1hZ2UuaCIKICNpbmNsdWRlICJtYXJrdXAuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9DU3Ry
aW5nLmg+CkBAIC00MiwyMyArNDQsMzAgQEAgUGFzdGVib2FyZCogUGFzdGVib2FyZDo6Z2VuZXJh
bFBhc3RlYm9hcmQoKQogfQogCiBQYXN0ZWJvYXJkOjpQYXN0ZWJvYXJkKCkKKyAgICA6IG1fc2Vs
ZWN0aW9uTW9kZShmYWxzZSkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCi12b2lkIFBh
c3RlYm9hcmQ6OndyaXRlUGxhaW5UZXh0KGNvbnN0IFN0cmluZyYsIFNtYXJ0UmVwbGFjZU9wdGlv
bikKK3ZvaWQgUGFzdGVib2FyZDo6d3JpdGVQbGFpblRleHQoY29uc3QgU3RyaW5nJiB0ZXh0LCBT
bWFydFJlcGxhY2VPcHRpb24pCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBwbGF0Zm9y
bVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPnNldFN0cmluZ0ZvclR5cGUodGV4
dCwgc2VsZWN0aW9uRm9ybWF0VGV4dCwKKyAgICAgICAgbV9zZWxlY3Rpb25Nb2RlID8gc2VsZWN0
aW9uVHlwZVByaW1hcnkgOiBzZWxlY3Rpb25UeXBlQ2xpcGJvYXJkKTsKIH0KIAotdm9pZCBQYXN0
ZWJvYXJkOjp3cml0ZVNlbGVjdGlvbihSYW5nZSosIGJvb2wsIEZyYW1lKikKK3ZvaWQgUGFzdGVi
b2FyZDo6d3JpdGVTZWxlY3Rpb24oUmFuZ2UqIHNlbGVjdGVkUmFuZ2UsIGJvb2wsIEZyYW1lKikK
IHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0
ZWJvYXJkU3RyYXRlZ3koKS0+c2V0U3RyaW5nRm9yVHlwZSgKKyAgICAgICAgY3JlYXRlTWFya3Vw
KHNlbGVjdGVkUmFuZ2UsIDAsIEFubm90YXRlRm9ySW50ZXJjaGFuZ2UsIGZhbHNlLCBSZXNvbHZl
Tm9uTG9jYWxVUkxzKSwgc2VsZWN0aW9uRm9ybWF0TWFya3VwLAorICAgICAgICBtX3NlbGVjdGlv
bk1vZGUgPyBzZWxlY3Rpb25UeXBlUHJpbWFyeSA6IHNlbGVjdGlvblR5cGVDbGlwYm9hcmQpOwog
fQogCi12b2lkIFBhc3RlYm9hcmQ6OndyaXRlVVJMKGNvbnN0IEtVUkwmLCBjb25zdCBTdHJpbmcm
LCBGcmFtZSopCit2b2lkIFBhc3RlYm9hcmQ6OndyaXRlVVJMKGNvbnN0IEtVUkwmIHVybCwgY29u
c3QgU3RyaW5nJiwgRnJhbWUqKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgaWYgKHVy
bC5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKworICAgIHBsYXRmb3JtU3RyYXRlZ2llcygp
LT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+c2V0U3RyaW5nRm9yVHlwZSh1cmwuc3RyaW5nKCksIHNl
bGVjdGlvbkZvcm1hdE1hcmt1cCwKKyAgICAgICAgbV9zZWxlY3Rpb25Nb2RlID8gc2VsZWN0aW9u
VHlwZVByaW1hcnkgOiBzZWxlY3Rpb25UeXBlQ2xpcGJvYXJkKTsKIH0KIAogdm9pZCBQYXN0ZWJv
YXJkOjp3cml0ZUltYWdlKE5vZGUqLCBjb25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJikKQEAgLTgy
LDE2ICs5MSw0NiBAQCBib29sIFBhc3RlYm9hcmQ6OmNhblNtYXJ0UmVwbGFjZSgpCiAgICAgcmV0
dXJuIGZhbHNlOwogfQogCi1QYXNzUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IFBhc3RlYm9hcmQ6
OmRvY3VtZW50RnJhZ21lbnQoRnJhbWUqLCBQYXNzUmVmUHRyPFJhbmdlPiwgYm9vbCwgYm9vbCYp
CitQYXNzUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IFBhc3RlYm9hcmQ6OmRvY3VtZW50RnJhZ21l
bnQoRnJhbWUqIGZyYW1lLCBQYXNzUmVmUHRyPFJhbmdlPiBjb250ZXh0LCBib29sIGFsbG93UGxh
aW5UZXh0LCBib29sJiBjaG9zZVBsYWluVGV4dCkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwor
ICAgIGNob3NlUGxhaW5UZXh0ID0gZmFsc2U7CisKKyAgICBTdHJpbmcgZGF0YSA9IHBsYXRmb3Jt
U3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+c3RyaW5nRm9yVHlwZShzZWxlY3Rp
b25Gb3JtYXRNYXJrdXAsCisgICAgICAgIG1fc2VsZWN0aW9uTW9kZSA/IHNlbGVjdGlvblR5cGVQ
cmltYXJ5IDogc2VsZWN0aW9uVHlwZUNsaXBib2FyZCk7CisKKyAgICBpZiAoIWRhdGEuaXNFbXB0
eSgpKSB7CisgICAgICAgIFJlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBmcmFnbWVudCA9IGNyZWF0
ZUZyYWdtZW50RnJvbU1hcmt1cChmcmFtZS0+ZG9jdW1lbnQoKSwgZGF0YSwgIiIsIERpc2FsbG93
U2NyaXB0aW5nQ29udGVudCk7CisgICAgICAgIGlmIChmcmFnbWVudCkKKyAgICAgICAgICAgIHJl
dHVybiBmcmFnbWVudC5yZWxlYXNlKCk7CisgICAgfQorCisgICAgZGF0YSA9IHBsYXRmb3JtU3Ry
YXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+c3RyaW5nRm9yVHlwZShzZWxlY3Rpb25G
b3JtYXRUZXh0LAorICAgICAgICBtX3NlbGVjdGlvbk1vZGUgPyBzZWxlY3Rpb25UeXBlUHJpbWFy
eSA6IHNlbGVjdGlvblR5cGVDbGlwYm9hcmQpOworCisgICAgaWYgKGFsbG93UGxhaW5UZXh0ICYm
ICFkYXRhLmlzRW1wdHkoKSkgeworICAgICAgICBjaG9zZVBsYWluVGV4dCA9IHRydWU7CisgICAg
ICAgIFJlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBmcmFnbWVudCA9IGNyZWF0ZUZyYWdtZW50RnJv
bVRleHQoY29udGV4dC5nZXQoKSwgZGF0YSk7CisgICAgICAgIGlmIChmcmFnbWVudCkKKyAgICAg
ICAgICAgIHJldHVybiBmcmFnbWVudC5yZWxlYXNlKCk7CisgICAgfQorCiAgICAgcmV0dXJuIDA7
CiB9CiAKIFN0cmluZyBQYXN0ZWJvYXJkOjpwbGFpblRleHQoRnJhbWUqKQogewotICAgIG5vdElt
cGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuIFN0cmluZygpOworICAgIHJldHVybiBwbGF0Zm9ybVN0
cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPnN0cmluZ0ZvclR5cGUoc2VsZWN0aW9u
Rm9ybWF0VGV4dCwKKyAgICAgICAgbV9zZWxlY3Rpb25Nb2RlID8gc2VsZWN0aW9uVHlwZVByaW1h
cnkgOiBzZWxlY3Rpb25UeXBlQ2xpcGJvYXJkKTsKK30KKworYm9vbCBQYXN0ZWJvYXJkOjppc1Nl
bGVjdGlvbk1vZGUoKSBjb25zdAoreworICAgIHJldHVybiBtX3NlbGVjdGlvbk1vZGU7Cit9CisK
K3ZvaWQgUGFzdGVib2FyZDo6c2V0U2VsZWN0aW9uTW9kZShib29sIHNlbGVjdGlvbk1vZGUpCit7
CisgICAgbV9zZWxlY3Rpb25Nb2RlID0gc2VsZWN0aW9uTW9kZTsKIH0KIAogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdl
TG9nCmluZGV4IDEyNDYzNGMuLmJkNDAzMzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZs
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwy
MSBAQAorMjAxMi0xMi0xOSAgTWljaGHFgiBQYWt1xYJhIHZlbCBSdXRrYSAgPG0ucGFrdWxhQHNh
bXN1bmcuY29tPgorCisgICAgICAgIFtFRkxdW1dLMl0gSW1wbGVtZW50YXRpb24gb2YgcGFzdGVi
b2FyZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAy
NDg0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRUZM
IGRvZXMgbm90IHByb3ZpZGUgcGxhdGZvcm0td2lkZSBjb3B5IGFuZCBwYXN0ZSBzdXBwb3J0LCBz
byB3ZSBjYW5ub3QKKyAgICAgICAgaW1wbGVtZW50IHBhc3RlYm9hcmQgaW5zaWRlIFdlYkNvcmUg
YXMgaW4gb3RoZXIgcG9ydHMsIGJ1dCBpbXBsZW1lbnRhdGlvbiBoYXMKKyAgICAgICAgdG8gYmUg
ZG9uZSBvbiBXZWJLaXQtdXNpbmcgYXBwbGljYXRpb24gc2lkZS4KKworICAgICAgICAqIFdlYkNv
cmVTdXBwb3J0L1BsYXRmb3JtU3RyYXRlZ2llc0VmbC5jcHA6CisgICAgICAgIChQbGF0Zm9ybVN0
cmF0ZWdpZXNFZmw6OmNyZWF0ZVBhc3RlYm9hcmRTdHJhdGVneSk6CisgICAgICAgIChQbGF0Zm9y
bVN0cmF0ZWdpZXNFZmw6OnNldFN0cmluZ0ZvclR5cGUpOgorICAgICAgICAoUGxhdGZvcm1TdHJh
dGVnaWVzRWZsOjpzdHJpbmdGb3JUeXBlKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9QbGF0
Zm9ybVN0cmF0ZWdpZXNFZmwuaDoKKyAgICAgICAgKFBsYXRmb3JtU3RyYXRlZ2llc0VmbCk6CisK
IDIwMTItMTItMTggIEFsZXhleSBQcm9za3VyeWFrb3YgIDxhcEBhcHBsZS5jb20+CiAKICAgICAg
ICAgUmVtb3ZlIHVubmVjZXNzYXJ5IGZ1bmN0aW9ucyBmcm9tIENvb2tpZXNTdHJhdGVneQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvUGxhdGZvcm1TdHJhdGVn
aWVzRWZsLmNwcCBiL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L1BsYXRmb3JtU3Ry
YXRlZ2llc0VmbC5jcHAKaW5kZXggOTRhOTUzMS4uNjBlNTEwNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvUGxhdGZvcm1TdHJhdGVnaWVzRWZsLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9QbGF0Zm9ybVN0cmF0ZWdpZXNFZmwu
Y3BwCkBAIC02Miw4ICs2Miw3IEBAIExvYWRlclN0cmF0ZWd5KiBQbGF0Zm9ybVN0cmF0ZWdpZXNF
Zmw6OmNyZWF0ZUxvYWRlclN0cmF0ZWd5KCkKIAogUGFzdGVib2FyZFN0cmF0ZWd5KiBQbGF0Zm9y
bVN0cmF0ZWdpZXNFZmw6OmNyZWF0ZVBhc3RlYm9hcmRTdHJhdGVneSgpCiB7Ci0gICAgbm90SW1w
bGVtZW50ZWQoKTsKLSAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gdGhpczsKIH0KIAogUGx1Z2lu
U3RyYXRlZ3kqIFBsYXRmb3JtU3RyYXRlZ2llc0VmbDo6Y3JlYXRlUGx1Z2luU3RyYXRlZ3koKQpA
QCAtMTY2LDMgKzE2NSwxNSBAQCB2b2lkIFBsYXRmb3JtU3RyYXRlZ2llc0VmbDo6YWRkVmlzaXRl
ZExpbmsoUGFnZSogcGFnZSwgTGlua0hhc2ggaGFzaCkKIHsKICAgICBwYWdlLT5ncm91cCgpLmFk
ZFZpc2l0ZWRMaW5rSGFzaChoYXNoKTsKIH0KKworLy8gUGFzdGVib2FyZFN0cmF0ZWd5Cit2b2lk
IFBsYXRmb3JtU3RyYXRlZ2llc0VmbDo6c2V0U3RyaW5nRm9yVHlwZShjb25zdCBTdHJpbmcmLCBj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
KQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK1N0cmluZyBQbGF0Zm9ybVN0cmF0ZWdp
ZXNFZmw6OnN0cmluZ0ZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJl
dHVybiBTdHJpbmcoKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVT
dXBwb3J0L1BsYXRmb3JtU3RyYXRlZ2llc0VmbC5oIGIvU291cmNlL1dlYktpdC9lZmwvV2ViQ29y
ZVN1cHBvcnQvUGxhdGZvcm1TdHJhdGVnaWVzRWZsLmgKaW5kZXggNTYxODRiMy4uYmFlMTlhZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvUGxhdGZvcm1TdHJh
dGVnaWVzRWZsLmgKKysrIGIvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvUGxhdGZv
cm1TdHJhdGVnaWVzRWZsLmgKQEAgLTI5LDcgKzI5LDcgQEAKICNpbmNsdWRlICJTaGFyZWRXb3Jr
ZXJTdHJhdGVneS5oIgogI2luY2x1ZGUgIlZpc2l0ZWRMaW5rU3RyYXRlZ3kuaCIKIAotY2xhc3Mg
UGxhdGZvcm1TdHJhdGVnaWVzRWZsIDogcHVibGljIFdlYkNvcmU6OlBsYXRmb3JtU3RyYXRlZ2ll
cywgcHJpdmF0ZSBXZWJDb3JlOjpDb29raWVzU3RyYXRlZ3ksIHByaXZhdGUgV2ViQ29yZTo6RGF0
YWJhc2VTdHJhdGVneSwgcHJpdmF0ZSBXZWJDb3JlOjpMb2FkZXJTdHJhdGVneSwgcHJpdmF0ZSBX
ZWJDb3JlOjpQbHVnaW5TdHJhdGVneSwgcHJpdmF0ZSBXZWJDb3JlOjpTaGFyZWRXb3JrZXJTdHJh
dGVneSwgcHJpdmF0ZSBXZWJDb3JlOjpWaXNpdGVkTGlua1N0cmF0ZWd5IHsKK2NsYXNzIFBsYXRm
b3JtU3RyYXRlZ2llc0VmbCA6IHB1YmxpYyBXZWJDb3JlOjpQbGF0Zm9ybVN0cmF0ZWdpZXMsIHBy
aXZhdGUgV2ViQ29yZTo6Q29va2llc1N0cmF0ZWd5LCBwcml2YXRlIFdlYkNvcmU6OkRhdGFiYXNl
U3RyYXRlZ3ksIHByaXZhdGUgV2ViQ29yZTo6TG9hZGVyU3RyYXRlZ3ksIHByaXZhdGUgV2ViQ29y
ZTo6UGx1Z2luU3RyYXRlZ3ksIHByaXZhdGUgV2ViQ29yZTo6U2hhcmVkV29ya2VyU3RyYXRlZ3ks
IHByaXZhdGUgV2ViQ29yZTo6VmlzaXRlZExpbmtTdHJhdGVneSwgcHJpdmF0ZSBXZWJDb3JlOjpQ
YXN0ZWJvYXJkU3RyYXRlZ3kgewogcHVibGljOgogICAgIHN0YXRpYyB2b2lkIGluaXRpYWxpemUo
KTsKIApAQCAtNjQsNiArNjQsMTAgQEAgcHJpdmF0ZToKICAgICAvLyBXZWJDb3JlOjpWaXNpdGVk
TGlua1N0cmF0ZWd5CiAgICAgdmlydHVhbCBib29sIGlzTGlua1Zpc2l0ZWQoV2ViQ29yZTo6UGFn
ZSosIFdlYkNvcmU6OkxpbmtIYXNoLCBjb25zdCBXZWJDb3JlOjpLVVJMJiBiYXNlVVJMLCBjb25z
dCBXVEY6OkF0b21pY1N0cmluZyYgYXR0cmlidXRlVVJMKTsKICAgICB2aXJ0dWFsIHZvaWQgYWRk
VmlzaXRlZExpbmsoV2ViQ29yZTo6UGFnZSosIFdlYkNvcmU6OkxpbmtIYXNoKTsKKworICAgIC8v
IFdlYkNvcmU6OlBhc3RlYm9hcmRTdHJhdGVneQorICAgIHZpcnR1YWwgU3RyaW5nIHN0cmluZ0Zv
clR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkTmFtZSk7CisgICAgdmlydHVhbCB2b2lkIHNldFN0cmluZ0ZvclR5cGUoY29uc3QgU3RyaW5n
JiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
TmFtZSk7CiB9OwogCiAjZW5kaWYgLy8gUGxhdGZvcm1TdHJhdGVnaWVzRWZsX2gKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpp
bmRleCBlNzZkMGZlLi44YTRiNjE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzIgQEAKKzIwMTIt
MTItMTkgIE1pY2hhxYIgUGFrdcWCYSB2ZWwgUnV0a2EgIDxtLnBha3VsYUBzYW1zdW5nLmNvbT4K
KworICAgICAgICBbRUZMXVtXSzJdIEltcGxlbWVudGF0aW9uIG9mIHBhc3RlYm9hcmQKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMjQ4NAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggaXMg
YW4gaW5pdGlhbCBhcHByb2FjaCB0byBQYXN0ZWJvYXJkIGltcGxlbWVudGF0aW9uIGluIFdlYktp
dDIsCisgICAgICAgIGZvY3VzaW5nIG9uIGJhc2ljIGNvcHkgYW5kIHBhc3RlIGZlYXR1cmVzLiBJ
dCBwYXNzZXNzIGRhdGEgYWxvbmcgd2l0aCBkYXRhCisgICAgICAgIHR5cGUgZnJvbSBXZWJDb3Jl
IHRvIFdlYktpdDIgYW5kIHRoZW4gdGhlIGNsaWVudCBjYWxsYmFja3MgYXJlIGludm9rZWQuCisK
KyAgICAgICAgKiBQbGF0Zm9ybUVmbC5jbWFrZToKKyAgICAgICAgKiBTaGFyZWQvQVBJL2MvZWZs
L1dLQmFzZUVmbC5oOgorICAgICAgICAqIFNoYXJlZC9BUElPYmplY3QuaDoKKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL0MvZWZsL1dLUGFzdGVib2FyZEVmbC5jcHA6IEFkZGVkLgorICAgICAgICAo
V0tQYXN0ZWJvYXJkU2V0Q2xpZW50KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvZWZsL1dL
UGFzdGVib2FyZEVmbC5oOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9FV2Vi
S2l0Mi5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0LmNwcDoKKyAg
ICAgICAgKEV3a0NvbnRleHQ6OkV3a0NvbnRleHQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
ZWZsL2V3a19wYXN0ZWJvYXJkLmNwcDogQWRkZWQuCisgICAgICAgIChzZXREYXRhKToKKyAgICAg
ICAgKGdldERhdGEpOgorICAgICAgICAoRXdrX1Bhc3RlYm9hcmQpOgorICAgICAgICAoRXdrX1Bh
c3RlYm9hcmQ6OmluaXRpYWxpemUpOgorICAgICAgICAoZXdrX3Bhc3RlYm9hcmRfZGF0YV9zZXRf
Y2Jfc2V0KToKKyAgICAgICAgKGV3a19wYXN0ZWJvYXJkX2RhdGFfcmVxdWVzdF9jYl9zZXQpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a19wYXN0ZWJvYXJkLmg6IEFkZGVkLgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a19wYXN0ZWJvYXJkX3ByaXZhdGUuaDogQWRkZWQu
CisgICAgICAgIChFd2tfUGFzdGVib2FyZCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkNvbnRl
eHQuaDoKKyAgICAgICAgKFdlYkNvbnRleHQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJDb250
ZXh0Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIFVJUHJvY2Vzcy9lZmwvV2ViQ29udGV4dEVmbC5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHQ6OmdldFBhc3RlYm9hcmRTdHJpbmdGb3JU
eXBlKToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHQ6OnNl
dFBhc3RlYm9hcmRTdHJpbmdGb3JUeXBlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvZWZsL1dlYlBh
c3RlYm9hcmRDbGllbnRFZmwuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAg
IChXZWJLaXQ6OmdldFNlbGVjdGlvbkZvcm1hdEZyb21TdHJpbmcpOgorICAgICAgICAoV2ViS2l0
OjpnZXRTZWxlY3Rpb25UeXBlRnJvbVN0cmluZyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhc3Rl
Ym9hcmRDbGllbnRFZmw6OmdldFN0cmluZyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhc3RlYm9h
cmRDbGllbnRFZmw6OnNldFN0cmluZyk6CisgICAgICAgICogVUlQcm9jZXNzL2VmbC9XZWJQYXN0
ZWJvYXJkQ2xpZW50RWZsLmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdl
YlBhc3RlYm9hcmRDbGllbnRFZmwpOgorICAgICAgICAqIFVJUHJvY2Vzcy9lZmwvV2ViUGFzdGVi
b2FyZFByb3h5RWZsLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYXN0ZWJvYXJkUHJveHlFZmw6OnNoYXJlZCk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhc3RlYm9hcmRQcm94eUVmbDo6V2ViUGFzdGVib2FyZFByb3h5RWZsKToKKyAgICAgICAgKFdl
YktpdDo6V2ViUGFzdGVib2FyZFByb3h5RWZsOjppbml0aWFsaXplQ2xpZW50KToKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFzdGVib2FyZFByb3h5RWZsOjpnZXRTdHJpbmdGb3JUeXBlKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFzdGVib2FyZFByb3h5RWZsOjpzZXRTdHJpbmdGb3JUeXBlKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvZWZsL1dlYlBhc3RlYm9hcmRQcm94eUVmbC5oOiBBZGRlZC4KKyAg
ICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJQYXN0ZWJvYXJkUHJveHlFZmwpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYXN0ZWJvYXJkUHJveHlFZmw6OmNsaWVudCk6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhc3RlYm9hcmRQcm94eUVmbDo6dHlwZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJF
ZGl0b3JDbGllbnQ6OnJlc3BvbmRUb0NoYW5nZWRTZWxlY3Rpb24pOgorICAgICAgICAoV2ViS2l0
KToKKyAgICAgICAgKFdlYktpdDo6V2ViRWRpdG9yQ2xpZW50OjpzdXBwb3J0c0dsb2JhbFNlbGVj
dGlvbik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGll
bnQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3Ry
YXRlZ2llcy5jcHA6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0
Zm9ybVN0cmF0ZWdpZXM6OnN0cmluZ0ZvclR5cGUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmg6CisgICAgICAgIChXZWJQbGF0Zm9y
bVN0cmF0ZWdpZXMpOgorCiAyMDEyLTEyLTE5ICBLeXVuZ1RhZSBLaW0gIDxrdGYua2ltQHNhbXN1
bmcuY29tPgogCiAgICAgICAgIFVudXNlZCBwYXJhbWV0ZXJzIG9uIFdlYkNvbnRleHQuY3BwCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZSBiL1NvdXJjZS9XZWJL
aXQyL1BsYXRmb3JtRWZsLmNtYWtlCmluZGV4IDU0NmUwMDQuLmY4ZDQ4MjUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJLaXQyL1Bs
YXRmb3JtRWZsLmNtYWtlCkBAIC0zMiw2ICszMiw3IEBAIGxpc3QoQVBQRU5EIFdlYktpdDJfU09V
UkNFUwogCiAgICAgU2hhcmVkL1BsdWdpbnMvTmV0c2NhcGUveDExL05ldHNjYXBlUGx1Z2luTW9k
dWxlWDExLmNwcAogCisgICAgVUlQcm9jZXNzL0FQSS9DL2VmbC9XS1Bhc3RlYm9hcmRFZmwuY3Bw
CiAgICAgVUlQcm9jZXNzL0FQSS9DL2VmbC9XS1ZpZXcuY3BwCiAKICAgICBVSVByb2Nlc3MvQVBJ
L2NwcC9lZmwvV0tFaW5hU2hhcmVkU3RyaW5nLmNwcApAQCAtNjMsNiArNjQsNyBAQCBsaXN0KEFQ
UEVORCBXZWJLaXQyX1NPVVJDRVMKICAgICBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfbmF2aWdhdGlv
bl9kYXRhLmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a19uYXZpZ2F0aW9uX3BvbGljeV9k
ZWNpc2lvbi5jcHAKICAgICBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfb2JqZWN0LmNwcAorICAgIFVJ
UHJvY2Vzcy9BUEkvZWZsL2V3a19wYXN0ZWJvYXJkLmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvZWZs
L2V3a19wb3B1cF9tZW51LmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a19wb3B1cF9tZW51
X2l0ZW0uY3BwCiAgICAgVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3Jlc291cmNlLmNwcApAQCAtMTAy
LDYgKzEwNCw4IEBAIGxpc3QoQVBQRU5EIFdlYktpdDJfU09VUkNFUwogICAgIFVJUHJvY2Vzcy9l
ZmwvV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eUVmbC5jcHAKICAgICBVSVByb2Nlc3MvZWZsL1dl
Ykluc3BlY3RvclByb3h5RWZsLmNwcAogICAgIFVJUHJvY2Vzcy9lZmwvV2ViUGFnZVByb3h5RWZs
LmNwcAorICAgIFVJUHJvY2Vzcy9lZmwvV2ViUGFzdGVib2FyZENsaWVudEVmbC5jcHAKKyAgICBV
SVByb2Nlc3MvZWZsL1dlYlBhc3RlYm9hcmRQcm94eUVmbC5jcHAKICAgICBVSVByb2Nlc3MvZWZs
L1dlYlBvcHVwTWVudVByb3h5RWZsLmNwcAogICAgIFVJUHJvY2Vzcy9lZmwvV2ViUHJlZmVyZW5j
ZXNFZmwuY3BwCiAgICAgVUlQcm9jZXNzL2VmbC9XZWJQcm9jZXNzUHJveHlFZmwuY3BwCkBAIC0y
NzgsNiArMjgyLDcgQEAgc2V0KEVXZWJLaXQyX0hFQURFUlMKICAgICAiJHtDTUFLRV9DVVJSRU5U
X1NPVVJDRV9ESVJ9L1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19uYXZpZ2F0aW9uX2RhdGEuaCIKICAg
ICAiJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19uYXZp
Z2F0aW9uX3BvbGljeV9kZWNpc2lvbi5oIgogICAgICIke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJ
Un0vVUlQcm9jZXNzL0FQSS9lZmwvZXdrX29iamVjdC5oIgorICAgICIke0NNQUtFX0NVUlJFTlRf
U09VUkNFX0RJUn0vVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3Bhc3RlYm9hcmQuaCIKICAgICAiJHtD
TUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19wb3B1cF9tZW51
LmgiCiAgICAgIiR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9VSVByb2Nlc3MvQVBJL2VmbC9l
d2tfcG9wdXBfbWVudV9pdGVtLmgiCiAgICAgIiR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9V
SVByb2Nlc3MvQVBJL2VmbC9ld2tfcmVzb3VyY2UuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9BUEkvYy9lZmwvV0tCYXNlRWZsLmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
QVBJL2MvZWZsL1dLQmFzZUVmbC5oCmluZGV4IDYxODRjODEuLjM1ZWY4NGIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9lZmwvV0tCYXNlRWZsLmgKKysrIGIvU291cmNl
L1dlYktpdDIvU2hhcmVkL0FQSS9jL2VmbC9XS0Jhc2VFZmwuaApAQCAtMjUsNSArMjUsNiBAQAog
I2VuZGlmCiAKIHR5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZVdLVmlldyogV0tWaWV3UmVmOwor
dHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tQYXN0ZWJvYXJkKiBXS1Bhc3RlYm9hcmRSZWY7
CiAKICNlbmRpZiAvKiBXS0Jhc2VFZmxfaCAqLwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
U2hhcmVkL0FQSU9iamVjdC5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSU9iamVjdC5oCmlu
ZGV4IDMxMTlkZTYuLjM5ZDJhODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9B
UElPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJT2JqZWN0LmgKQEAgLTEz
Miw2ICsxMzIsNyBAQCBwdWJsaWM6CiAgICAgICAgIFR5cGVFZGl0Q29tbWFuZFByb3h5LAogICAg
ICAgICBUeXBlT2JqQ09iamVjdEdyYXBoLAogICAgICAgICBUeXBlVmlldywKKyAgICAgICAgVHlw
ZVBhc3RlYm9hcmRQcm94eSwKICNpZiBVU0UoU09VUCkKICAgICAgICAgVHlwZVNvdXBSZXF1ZXN0
TWFuYWdlciwKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9DL2VmbC9XS1Bhc3RlYm9hcmRFZmwuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9DL2VmbC9XS1Bhc3RlYm9hcmRFZmwuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAuLjRlMjc2Y2EKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL0MvZWZsL1dLUGFzdGVib2FyZEVmbC5jcHAKQEAgLTAsMCArMSw0MCBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNzCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENP
TlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hU
IEhPTERFUiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HCisgKiBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXS1Bhc3RlYm9hcmRFZmwuaCIK
KworI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgorI2luY2x1ZGUgIldlYlBhc3RlYm9hcmRQcm94eUVm
bC5oIgorCit1c2luZyBuYW1lc3BhY2UgV2ViS2l0OworCit2b2lkIFdLUGFzdGVib2FyZFNldENs
aWVudChjb25zdCBXS1Bhc3RlYm9hcmRDbGllbnRFZmwqIGNsaWVudCkKK3sKKyAgICBpZiAoY2xp
ZW50ICYmIGNsaWVudC0+dmVyc2lvbikKKyAgICAgICAgcmV0dXJuOworCisgICAgV2ViUGFzdGVi
b2FyZFByb3h5RWZsOjpzaGFyZWQoKS0+aW5pdGlhbGl6ZUNsaWVudChjbGllbnQpOworfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL2VmbC9XS1Bhc3RlYm9hcmRF
ZmwuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9lZmwvV0tQYXN0ZWJvYXJkRWZs
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDkwNjEwYQotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9lZmwvV0tQYXN0ZWJvYXJk
RWZsLmgKQEAgLTAsMCArMSw3MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBTYW1zdW5n
IEVsZWN0cm9uaWNzCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HCisgKiBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV0tQYXN0ZWJvYXJk
RWZsX2gKKyNkZWZpbmUgV0tQYXN0ZWJvYXJkRWZsX2gKKworI2luY2x1ZGUgPFdlYktpdDIvV0tC
YXNlLmg+CisKKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIiB7CisjZW5kaWYKKworLy8g
UGFzdGVib2FyZCBzZWxlY3Rpb24gZm9ybWF0cy4KK2VudW0geworICAgIFdLUGFzdGVib2FyZFNl
bGVjdGlvbkZvcm1hdFVua25vd24gPSAwLAorICAgIFdLUGFzdGVib2FyZFNlbGVjdGlvbkZvcm1h
dFRleHQgPSAxLAorICAgIFdLUGFzdGVib2FyZFNlbGVjdGlvbkZvcm1hdE1hcmt1cCA9IDIKK307
Cit0eXBlZGVmIHVpbnQzMl90IFdLUGFzdGVib2FyZFNlbGVjdGlvbkZvcm1hdDsKKworLy8gUGFz
dGVib2FyZCBzZWxlY3Rpb24gdHlwZXMuCitlbnVtIHsKKyAgICBXS1Bhc3RlYm9hcmRTZWxlY3Rp
b25UeXBlVW5rbm93biA9IDAsCisgICAgV0tQYXN0ZWJvYXJkU2VsZWN0aW9uVHlwZVByaW1hcnkg
PSAxLAorICAgIFdLUGFzdGVib2FyZFNlbGVjdGlvblR5cGVDbGlwYm9hcmQgPSAyCit9OwordHlw
ZWRlZiB1aW50MzJfdCBXS1Bhc3RlYm9hcmRTZWxlY3Rpb25UeXBlOworCit0eXBlZGVmIFdLU3Ry
aW5nUmVmICgqV0tQYXN0ZWJvYXJkR2V0U3RyaW5nQ2FsbGJhY2spKFdLUGFzdGVib2FyZFNlbGVj
dGlvbkZvcm1hdCBzZWxlY3Rpb25Gb3JtYXQsIFdLUGFzdGVib2FyZFNlbGVjdGlvblR5cGUgc2Vs
ZWN0aW9uVHlwZSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7Cit0eXBlZGVmIHZvaWQgKCpXS1Bh
c3RlYm9hcmRTZXRTdHJpbmdDYWxsYmFjaykoV0tTdHJpbmdSZWYgZGF0YSwgV0tQYXN0ZWJvYXJk
U2VsZWN0aW9uRm9ybWF0IHNlbGVjdGlvbkZvcm1hdCwgV0tQYXN0ZWJvYXJkU2VsZWN0aW9uVHlw
ZSBzZWxlY3Rpb25UeXBlLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsKKworc3RydWN0IFdLUGFz
dGVib2FyZENsaWVudEVmbCB7CisgICAgaW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHZlcnNpb247CisgICAgY29uc3Qgdm9pZCogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsaWVudEluZm87CisgICAgV0tQYXN0ZWJvYXJk
R2V0U3RyaW5nQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgIGdldFN0cmluZzsKKyAgICBX
S1Bhc3RlYm9hcmRTZXRTdHJpbmdDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgc2V0U3Ry
aW5nOworfTsKK3R5cGVkZWYgc3RydWN0IFdLUGFzdGVib2FyZENsaWVudEVmbCBXS1Bhc3RlYm9h
cmRDbGllbnRFZmw7CisKK2VudW0geyBXS1Bhc3RlYm9hcmRDbGllbnRFZmxDdXJyZW50VmVyc2lv
biA9IDAgfTsKKworV0tfRVhQT1JUIHZvaWQgV0tQYXN0ZWJvYXJkU2V0Q2xpZW50KGNvbnN0IFdL
UGFzdGVib2FyZENsaWVudEVmbCogY2xpZW50KTsKKworI2lmZGVmIF9fY3BsdXNwbHVzCit9Cisj
ZW5kaWYKKworI2VuZGlmIC8qIFdLUGFzdGVib2FyZEVmbF9oICovCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9FV2ViS2l0Mi5oIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9lZmwvRVdlYktpdDIuaAppbmRleCBiMTIyMTEwLi5kNmM2MDhhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9FV2ViS2l0Mi5oCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0VXZWJLaXQyLmgKQEAgLTQ4LDYgKzQ4
LDcgQEAKICNpbmNsdWRlICJld2tfbmF2aWdhdGlvbl9kYXRhLmgiCiAjaW5jbHVkZSAiZXdrX25h
dmlnYXRpb25fcG9saWN5X2RlY2lzaW9uLmgiCiAjaW5jbHVkZSAiZXdrX29iamVjdC5oIgorI2lu
Y2x1ZGUgImV3a19wYXN0ZWJvYXJkLmgiCiAjaW5jbHVkZSAiZXdrX3BvcHVwX21lbnUuaCIKICNp
bmNsdWRlICJld2tfcG9wdXBfbWVudV9pdGVtLmgiCiAjaW5jbHVkZSAiZXdrX3Jlc291cmNlLmgi
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4
dC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dC5jcHAK
aW5kZXggNDljNjIxNy4uMDg0NjQ3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9lZmwvZXdrX2NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZWZsL2V3a19jb250ZXh0LmNwcApAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgImV3
a19jb29raWVfbWFuYWdlcl9wcml2YXRlLmgiCiAjaW5jbHVkZSAiZXdrX2RhdGFiYXNlX21hbmFn
ZXJfcHJpdmF0ZS5oIgogI2luY2x1ZGUgImV3a19mYXZpY29uX2RhdGFiYXNlX3ByaXZhdGUuaCIK
KyNpbmNsdWRlICJld2tfcGFzdGVib2FyZF9wcml2YXRlLmgiCiAjaW5jbHVkZSAiZXdrX3ByaXZh
dGUuaCIKICNpbmNsdWRlICJld2tfc3RvcmFnZV9tYW5hZ2VyX3ByaXZhdGUuaCIKICNpbmNsdWRl
ICJld2tfdXJsX3NjaGVtZV9yZXF1ZXN0X3ByaXZhdGUuaCIKQEAgLTk1LDYgKzk2LDcgQEAgRXdr
Q29udGV4dDo6RXdrQ29udGV4dChQYXNzUmVmUHRyPFdlYkNvbnRleHQ+IGNvbnRleHQpCiAgICAg
ICAgIGV3a19zZXR0aW5nc19zcGVsbF9jaGVja2luZ19sYW5ndWFnZXNfc2V0KDApOwogICAgIH0K
ICNlbmRpZgorICAgIEV3a19QYXN0ZWJvYXJkOjppbml0aWFsaXplKCk7CiB9CiAKIEV3a0NvbnRl
eHQ6On5Fd2tDb250ZXh0KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZWZsL2V3a19wYXN0ZWJvYXJkLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
ZWZsL2V3a19wYXN0ZWJvYXJkLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
Li5hYWMxYjU3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9lZmwvZXdrX3Bhc3RlYm9hcmQuY3BwCkBAIC0wLDAgKzEsMTAzIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDEyIFNhbXN1bmcgRWxlY3Ryb25pY3MKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVU
T1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVS
IE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcKKyAqIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgImV3a19wYXN0ZWJvYXJkLmgiCisKKyNpbmNs
dWRlICJXS0FQSUNhc3QuaCIKKyNpbmNsdWRlICJXS1Bhc3RlYm9hcmRFZmwuaCIKKyNpbmNsdWRl
ICJXS1JldGFpblB0ci5oIgorI2luY2x1ZGUgIldLU3RyaW5nLmgiCisjaW5jbHVkZSAiZXdrX3Bh
c3RlYm9hcmRfcHJpdmF0ZS5oIgorI2luY2x1ZGUgImV3a19wcml2YXRlLmgiCisjaW5jbHVkZSA8
d3RmL3RleHQvQ1N0cmluZy5oPgorCit1c2luZyBuYW1lc3BhY2UgV2ViS2l0OworCitzdGF0aWMg
RXdrX1Bhc3RlYm9hcmRfRGF0YV9TZXRfQ2IgZGF0YVNldENhbGxiYWNrID0gMDsKK3N0YXRpYyBF
d2tfUGFzdGVib2FyZF9EYXRhX1JlcXVlc3RfQ2IgZGF0YUdldENhbGxiYWNrID0gMDsKKworQ09N
UElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShFV0tfUEFTVEVCT0FSRF9TRUxFQ1RJT05fRk9STUFU
X1VOS05PV04sIFdLUGFzdGVib2FyZFNlbGVjdGlvbkZvcm1hdFVua25vd24pOworQ09NUElMRV9B
U1NFUlRfTUFUQ0hJTkdfRU5VTShFV0tfUEFTVEVCT0FSRF9TRUxFQ1RJT05fRk9STUFUX1RFWFQs
IFdLUGFzdGVib2FyZFNlbGVjdGlvbkZvcm1hdFRleHQpOworQ09NUElMRV9BU1NFUlRfTUFUQ0hJ
TkdfRU5VTShFV0tfUEFTVEVCT0FSRF9TRUxFQ1RJT05fRk9STUFUX0hUTUwsIFdLUGFzdGVib2Fy
ZFNlbGVjdGlvbkZvcm1hdE1hcmt1cCk7CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKEVX
S19QQVNURUJPQVJEX1NFTEVDVElPTl9UWVBFX1VOS05PV04sIFdLUGFzdGVib2FyZFNlbGVjdGlv
blR5cGVVbmtub3duKTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oRVdLX1BBU1RFQk9B
UkRfU0VMRUNUSU9OX1RZUEVfUFJJTUFSWSwgV0tQYXN0ZWJvYXJkU2VsZWN0aW9uVHlwZVByaW1h
cnkpOworQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShFV0tfUEFTVEVCT0FSRF9TRUxFQ1RJ
T05fVFlQRV9DTElQQk9BUkQsIFdLUGFzdGVib2FyZFNlbGVjdGlvblR5cGVDbGlwYm9hcmQpOwor
CitzdGF0aWMgdm9pZCBzZXREYXRhKFdLU3RyaW5nUmVmIHN0cmluZywgV0tQYXN0ZWJvYXJkU2Vs
ZWN0aW9uVHlwZSBzZWxlY3Rpb25Gb3JtYXQsIFdLUGFzdGVib2FyZFNlbGVjdGlvblR5cGUgc2Vs
ZWN0aW9uVHlwZSwgY29uc3Qgdm9pZCopCit7CisgICAgaWYgKGRhdGFTZXRDYWxsYmFjaykKKyAg
ICAgICAgZGF0YVNldENhbGxiYWNrKHRvSW1wbChzdHJpbmcpLT5zdHJpbmcoKS51dGY4KCkuZGF0
YSgpLCBzdGF0aWNfY2FzdDxFd2tfUGFzdGVib2FyZF9TZWxlY3Rpb25fRm9ybWF0PihzZWxlY3Rp
b25Gb3JtYXQpLAorICAgICAgICBzdGF0aWNfY2FzdDxFd2tfUGFzdGVib2FyZF9TZWxlY3Rpb25f
VHlwZT4oc2VsZWN0aW9uVHlwZSkpOworfQorCitzdGF0aWMgV0tTdHJpbmdSZWYgZ2V0RGF0YShX
S1Bhc3RlYm9hcmRTZWxlY3Rpb25UeXBlIHNlbGVjdGlvbkZvcm1hdCwgV0tQYXN0ZWJvYXJkU2Vs
ZWN0aW9uVHlwZSBzZWxlY3Rpb25UeXBlLCBjb25zdCB2b2lkKikKK3sKKyAgICBpZiAoZGF0YUdl
dENhbGxiYWNrKQorICAgICAgICByZXR1cm4gV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmco
ZGF0YUdldENhbGxiYWNrKAorICAgICAgICBzdGF0aWNfY2FzdDxFd2tfUGFzdGVib2FyZF9TZWxl
Y3Rpb25fRm9ybWF0PihzZWxlY3Rpb25Gb3JtYXQpLCBzdGF0aWNfY2FzdDxFd2tfUGFzdGVib2Fy
ZF9TZWxlY3Rpb25fVHlwZT4oc2VsZWN0aW9uVHlwZSkpKTsKKworICAgIHJldHVybiBXS1N0cmlu
Z1JlZigpOworfQorCituYW1lc3BhY2UgRXdrX1Bhc3RlYm9hcmQgeworCisvKioKKyAqIEluaXRp
YWxpemVzIHBhc3RlYm9hcmQgY2FsbGJhY2tzLgorICoKKyAqIEBpbnRlcm5hbAorICoKKyAqIFBh
c3RlYm9hcmQgaW4gRUZMIGZyYW1ld29yayB1c2VzIEVsZW1lbnRhcnkgd2hpY2ggY2Fubm90IGJl
CisgKiBpbmNsdWRlZCBpbnRvIFdlYktpdCwgc28gYXBwbGljYXRpb24gaGFzIHRvIGltcGxlbWVu
dCBjYWxsYmFja3MKKyAqIHRvIHByb3ZpZGUgcGFzdGVib2FyZCBzdXBwb3J0LgorICovCit2b2lk
IGluaXRpYWxpemUoKQoreworICAgIHN0YXRpYyBib29sIGRpZEluaXRpYWxpemVQYXN0ZWJvYXJk
Q2xpZW50ID0gZmFsc2U7CisgICAgaWYgKGRpZEluaXRpYWxpemVQYXN0ZWJvYXJkQ2xpZW50KQor
ICAgICAgICByZXR1cm47CisKKyAgICBXS1Bhc3RlYm9hcmRDbGllbnRFZmwgcGFzdGVib2FyZENs
aWVudEVmbCA9IHsKKyAgICAgICAgV0tQYXN0ZWJvYXJkQ2xpZW50RWZsQ3VycmVudFZlcnNpb24s
CisgICAgICAgIDAsIC8vIGNsaWVudEluZm8KKyAgICAgICAgZ2V0RGF0YSwKKyAgICAgICAgc2V0
RGF0YQorICAgIH07CisgICAgV0tQYXN0ZWJvYXJkU2V0Q2xpZW50KCZwYXN0ZWJvYXJkQ2xpZW50
RWZsKTsKKworICAgIGRpZEluaXRpYWxpemVQYXN0ZWJvYXJkQ2xpZW50ID0gdHJ1ZTsKK30KKwor
fSAvLyBuYW1lc3BhY2UgRXdrX1Bhc3RlYm9hcmQKKwordm9pZCBld2tfcGFzdGVib2FyZF9kYXRh
X3NldF9jYl9zZXQoRXdrX1Bhc3RlYm9hcmRfRGF0YV9TZXRfQ2IgY2FsbGJhY2spCit7CisgICAg
ZGF0YVNldENhbGxiYWNrID0gY2FsbGJhY2s7Cit9CisKK3ZvaWQgZXdrX3Bhc3RlYm9hcmRfZGF0
YV9yZXF1ZXN0X2NiX3NldChFd2tfUGFzdGVib2FyZF9EYXRhX1JlcXVlc3RfQ2IgY2FsbGJhY2sp
Cit7CisgICAgZGF0YUdldENhbGxiYWNrID0gY2FsbGJhY2s7Cit9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfcGFzdGVib2FyZC5oIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3Bhc3RlYm9hcmQuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwLi5iNzEzNzk3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3Bhc3RlYm9hcmQuaApAQCAtMCwwICsxLDk3IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIFNhbXN1bmcgRWxlY3Ryb25pY3MKKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVS
UyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBD
T1BZUklHSFQgSE9MREVSIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcKKyAqIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUwor
ICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2lmbmRlZiBld2tfcGFzdGVib2FyZF9oCisjZGVmaW5lIGV3a19wYXN0
ZWJvYXJkX2gKKworI2luY2x1ZGUgPEV2YXMuaD4KKworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRl
cm4gIkMiIHsKKyNlbmRpZgorCisvKioKKyAqIEVudW0gdmFsdWVzIHVzZWQgdG8gc2V0IHNlbGVj
dGlvbiBmb3JtYXRzLgorICovCitlbnVtIEV3a19QYXN0ZWJvYXJkX1NlbGVjdGlvbl9Gb3JtYXQg
eworICAgIEVXS19QQVNURUJPQVJEX1NFTEVDVElPTl9GT1JNQVRfVU5LTk9XTiwKKyAgICBFV0tf
UEFTVEVCT0FSRF9TRUxFQ1RJT05fRk9STUFUX1RFWFQsCisgICAgRVdLX1BBU1RFQk9BUkRfU0VM
RUNUSU9OX0ZPUk1BVF9IVE1MLAorfTsKKworLyogQ3JlYXRlcyBhIHR5cGUgbmFtZSBmb3IgdGhl
IEV3a19QYXN0ZWJvYXJkX1NlbGVjdGlvbl9Gb3JtYXQuKi8KK3R5cGVkZWYgZW51bSBFd2tfUGFz
dGVib2FyZF9TZWxlY3Rpb25fRm9ybWF0IEV3a19QYXN0ZWJvYXJkX1NlbGVjdGlvbl9Gb3JtYXQ7
CisKKy8qKgorICogRW51bSB2YWx1ZXMgdXNlZCB0byBzZXQgc2VsZWN0aW9uIHR5cGVzLgorICov
CitlbnVtIEV3a19QYXN0ZWJvYXJkX1NlbGVjdGlvbl9UeXBlIHsKKyAgICBFV0tfUEFTVEVCT0FS
RF9TRUxFQ1RJT05fVFlQRV9VTktOT1dOLAorICAgIEVXS19QQVNURUJPQVJEX1NFTEVDVElPTl9U
WVBFX1BSSU1BUlksCisgICAgRVdLX1BBU1RFQk9BUkRfU0VMRUNUSU9OX1RZUEVfQ0xJUEJPQVJE
Cit9OworCisvKiBDcmVhdGVzIGEgdHlwZSBuYW1lIGZvciB0aGUgRXdrX1Bhc3RlYm9hcmRfU2Vs
ZWN0aW9uX1R5cGUuKi8KK3R5cGVkZWYgZW51bSBFd2tfUGFzdGVib2FyZF9TZWxlY3Rpb25fVHlw
ZSBFd2tfUGFzdGVib2FyZF9TZWxlY3Rpb25fVHlwZTsKKworLyoqCisgKiBEZWZpbmVzIGEgdHlw
ZSBuYW1lIGZvciB0aGUgY2FsbGJhY2sgZnVuY3Rpb24gdG8gcGVyZm9ybSBjb3B5IG9wZXJhdGlv
biB3aXRoIGdpdmVuIGRhdGEgdHlwZS4KKyAqCisgKiBAcGFyYW0gZGF0YSB0byBiZSBjb3BpZWQK
KyAqIEBwYXJhbSBzZWxlY3Rpb25fZm9ybWF0IG9mIGNvcGllZCBkYXRhCisgKiBAcGFyYW0gc2Vs
ZWN0aW9uX3R5cGUgb2YgY29waWVkIGRhdGEKKyAqLwordHlwZWRlZiB2b2lkICgqRXdrX1Bhc3Rl
Ym9hcmRfRGF0YV9TZXRfQ2IpKGNvbnN0IGNoYXIgKmRhdGEsIEV3a19QYXN0ZWJvYXJkX1NlbGVj
dGlvbl9Gb3JtYXQgc2VsZWN0aW9uX2Zvcm1hdCwgRXdrX1Bhc3RlYm9hcmRfU2VsZWN0aW9uX1R5
cGUgc2VsZWN0aW9uX3R5cGUpOworCisvKioKKyAqIERlZmluZXMgYSB0eXBlIG5hbWUgZm9yIHRo
ZSBjYWxsYmFjayBmdW5jdGlvbiB0byByZXF1ZXN0IGZvciBkYXRhIHdpdGggZ2l2ZW4gdHlwZS4K
KyAqCisgKiBUaGlzIGNhbGxiYWNrIHdpbGwgcmVxdWVzdCBhbmQgcmV0dXJuIGlmIHJlY2VpdmVk
IGRhdGEgZm9yIGdpdmVuIHR5cGUuCisgKgorICogQHBhcmFtIHNlbGVjdGlvbl9mb3JtYXQgb2Yg
cmVxdWVzdGVkIGRhdGEKKyAqIEBwYXJhbSBzZWxlY3Rpb25fdHlwZSBvZiBjb3BpZWQgZGF0YQor
ICoKKyAqIEByZXR1cm4gcmVxdWVzdGVkIGRhdGEgb24gc3VjY2VzcyBvciBAYyBOVUxMIG9uIGZh
aWx1cmUKKyAqLwordHlwZWRlZiBjb25zdCBjaGFyICooKkV3a19QYXN0ZWJvYXJkX0RhdGFfUmVx
dWVzdF9DYikoRXdrX1Bhc3RlYm9hcmRfU2VsZWN0aW9uX0Zvcm1hdCBzZWxlY3Rpb25fZm9ybWF0
LCBFd2tfUGFzdGVib2FyZF9TZWxlY3Rpb25fVHlwZSBzZWxlY3Rpb25fdHlwZSk7CisKKy8qKgor
ICogU2V0cyBhIGNhbGxiYWNrIGZ1bmN0aW9uIHRvIHBlcmZvcm0gY29weSBvcGVyYXRpb24uCisg
KgorICogQHBhcmFtIGNiIGEgbmV3IGNhbGxiYWNrIHRvIHNldCAtIGl0IG11c3Qgbm90IGJlIEBj
IE5VTEwKKyAqLworRUFQSSB2b2lkIGV3a19wYXN0ZWJvYXJkX2RhdGFfc2V0X2NiX3NldChFd2tf
UGFzdGVib2FyZF9EYXRhX1NldF9DYiBjYik7CisKKy8qKgorICogU2V0cyBhIGNhbGxiYWNrIGZ1
bmN0aW9uIHRvIHJlcXVlc3QgZm9yIHBhc3RlYm9hcmQgZGF0YS4KKyAqCisgKiBAcGFyYW0gY2Ig
YSBuZXcgY2FsbGJhY2sgdG8gc2V0IC0gaXQgbXVzdCBub3QgYmUgQGMgTlVMTAorICovCitFQVBJ
IHZvaWQgZXdrX3Bhc3RlYm9hcmRfZGF0YV9yZXF1ZXN0X2NiX3NldChFd2tfUGFzdGVib2FyZF9E
YXRhX1JlcXVlc3RfQ2IgY2IpOworCisjaWZkZWYgX19jcGx1c3BsdXMKK30KKyNlbmRpZgorI2Vu
ZGlmIC8vIGV3a19wYXN0ZWJvYXJkX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZWZsL2V3a19wYXN0ZWJvYXJkX3ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZWZsL2V3a19wYXN0ZWJvYXJkX3ByaXZhdGUuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwLi41YmU1OGVkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3Bhc3RlYm9hcmRfcHJpdmF0ZS5oCkBAIC0wLDAg
KzEsMzUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgU2Ftc3VuZyBFbGVjdHJvbmljcwor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdI
VCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgVEhFIENPUFlSSUdIVCBIT0xERVIgT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORworICogTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIGV3a19wYXN0ZWJvYXJkX3ByaXZhdGVfaAor
I2RlZmluZSBld2tfcGFzdGVib2FyZF9wcml2YXRlX2gKKworbmFtZXNwYWNlIEV3a19QYXN0ZWJv
YXJkIHsKKwordm9pZCBpbml0aWFsaXplKCk7CisKK30KKworI2VuZGlmIC8vIGV3a19wYXN0ZWJv
YXJkX3ByaXZhdGVfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNv
bnRleHQuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0LmgKaW5kZXggYTk0
YmNlNi4uYWQzNWQ5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNv
bnRleHQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5oCkBAIC0y
OTcsNyArMjk3LDYgQEAgcHJpdmF0ZToKICNpZiBQTEFURk9STShNQUMpCiAgICAgdm9pZCBnZXRQ
YXN0ZWJvYXJkVHlwZXMoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgVmVjdG9yPFN0cmlu
Zz4mIHBhc3RlYm9hcmRUeXBlcyk7CiAgICAgdm9pZCBnZXRQYXN0ZWJvYXJkUGF0aG5hbWVzRm9y
VHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmRUeXBlLCBWZWN0b3I8U3RyaW5nPiYgcGF0aG5hbWVzKTsKLSAgICB2b2lkIGdldFBhc3RlYm9h
cmRTdHJpbmdGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZFR5cGUsIFN0cmluZyYpOwogICAgIHZvaWQgZ2V0UGFzdGVib2FyZEJ1ZmZl
ckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkVHlwZSwgU2hhcmVkTWVtb3J5OjpIYW5kbGUmLCB1aW50NjRfdCYgc2l6ZSk7CiAgICAg
dm9pZCBwYXN0ZWJvYXJkQ29weShjb25zdCBTdHJpbmcmIGZyb21QYXN0ZWJvYXJkLCBjb25zdCBT
dHJpbmcmIHRvUGFzdGVib2FyZCk7CiAgICAgdm9pZCBnZXRQYXN0ZWJvYXJkQ2hhbmdlQ291bnQo
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgdWludDY0X3QmIGNoYW5nZUNvdW50KTsKQEAg
LTMwNyw5ICszMDYsMTIgQEAgcHJpdmF0ZToKICAgICB2b2lkIGFkZFBhc3RlYm9hcmRUeXBlcyhj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVi
b2FyZFR5cGVzKTsKICAgICB2b2lkIHNldFBhc3RlYm9hcmRUeXBlcyhjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzKTsKICAg
ICB2b2lkIHNldFBhc3RlYm9hcmRQYXRobmFtZXNGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZE5hbWUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFZlY3RvcjxTdHJp
bmc+JiBwYXRobmFtZXMpOwotICAgIHZvaWQgc2V0UGFzdGVib2FyZFN0cmluZ0ZvclR5cGUoY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwg
Y29uc3QgU3RyaW5nJik7CiAgICAgdm9pZCBzZXRQYXN0ZWJvYXJkQnVmZmVyRm9yVHlwZShjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBj
b25zdCBTaGFyZWRNZW1vcnk6OkhhbmRsZSYsIHVpbnQ2NF90IHNpemUpOwogI2VuZGlmCisjaWYg
UExBVEZPUk0oTUFDKSB8fCBQTEFURk9STShFRkwpCisgICAgdm9pZCBnZXRQYXN0ZWJvYXJkU3Ry
aW5nRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmRUeXBlLCBTdHJpbmcmKTsKKyAgICB2b2lkIHNldFBhc3RlYm9hcmRTdHJpbmdGb3JU
eXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZFR5cGUsIGNvbnN0IFN0cmluZyYpOworI2VuZGlmCiAKICNpZiAhUExBVEZPUk0oTUFDKQogICAg
IC8vIEZJWE1FOiBUaGlzIGEgZHVtbXkgbWVzc2FnZSwgdG8gYXZvaWQgYnJlYWtpbmcgdGhlIGJ1
aWxkIGZvciBwbGF0Zm9ybXMgdGhhdCBkb24ndCByZXF1aXJlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJDb250ZXh0Lm1lc3NhZ2VzLmluCmluZGV4IDgzOWNiY2MuLjAyOTg4Mzkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0Lm1lc3NhZ2Vz
LmluCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0Lm1lc3NhZ2VzLmlu
CkBAIC0zMiw3ICszMiw2IEBAIG1lc3NhZ2VzIC0+IFdlYkNvbnRleHQgewogICAgIAogICAgIEdl
dFBhc3RlYm9hcmRUeXBlcyhXVEY6OlN0cmluZyBwYXN0ZWJvYXJkTmFtZSkgLT4gKFZlY3RvcjxX
VEY6OlN0cmluZz4gdHlwZXMpCiAgICAgR2V0UGFzdGVib2FyZFBhdGhuYW1lc0ZvclR5cGUoV1RG
OjpTdHJpbmcgcGFzdGVib2FyZE5hbWUsIFdURjo6U3RyaW5nIHBhc3RlYm9hcmRUeXBlKSAtPiAo
VmVjdG9yPFdURjo6U3RyaW5nPiBwYXRobmFtZXMpCi0gICAgR2V0UGFzdGVib2FyZFN0cmluZ0Zv
clR5cGUoV1RGOjpTdHJpbmcgcGFzdGVib2FyZE5hbWUsIFdURjo6U3RyaW5nIHBhc3RlYm9hcmRU
eXBlKSAtPiAoV1RGOjpTdHJpbmcgc3RyaW5nKQogICAgIEdldFBhc3RlYm9hcmRCdWZmZXJGb3JU
eXBlKFdURjo6U3RyaW5nIHBhc3RlYm9hcmROYW1lLCBXVEY6OlN0cmluZyBwYXN0ZWJvYXJkVHlw
ZSkgLT4gKFdlYktpdDo6U2hhcmVkTWVtb3J5OjpIYW5kbGUgaGFuZGxlLCB1aW50NjRfdCBzaXpl
KQogICAgIFBhc3RlYm9hcmRDb3B5KFdURjo6U3RyaW5nIGZyb21QYXN0ZWJvYXJkLCBXVEY6OlN0
cmluZyB0b1Bhc3RlYm9hcmQpCiAgICAgR2V0UGFzdGVib2FyZENoYW5nZUNvdW50KFdURjo6U3Ry
aW5nIHBhc3RlYm9hcmROYW1lKSAtPiAodWludDY0X3QgY2hhbmdlQ291bnQpCkBAIC00Miw5ICs0
MSwxMyBAQCBtZXNzYWdlcyAtPiBXZWJDb250ZXh0IHsKICAgICBBZGRQYXN0ZWJvYXJkVHlwZXMo
V1RGOjpTdHJpbmcgcGFzdGVib2FyZE5hbWUsIFZlY3RvcjxXVEY6OlN0cmluZz4gcGFzdGVib2Fy
ZFR5cGVzKQogICAgIFNldFBhc3RlYm9hcmRUeXBlcyhXVEY6OlN0cmluZyBwYXN0ZWJvYXJkTmFt
ZSwgVmVjdG9yPFdURjo6U3RyaW5nPiBwYXN0ZWJvYXJkVHlwZXMpCiAgICAgU2V0UGFzdGVib2Fy
ZFBhdGhuYW1lc0ZvclR5cGUoV1RGOjpTdHJpbmcgcGFzdGVib2FyZE5hbWUsIFdURjo6U3RyaW5n
IHBhc3RlYm9hcmRUeXBlLCBWZWN0b3I8V1RGOjpTdHJpbmc+IHBhdGhuYW1lcykKLSAgICBTZXRQ
YXN0ZWJvYXJkU3RyaW5nRm9yVHlwZShXVEY6OlN0cmluZyBwYXN0ZWJvYXJkTmFtZSwgV1RGOjpT
dHJpbmcgcGFzdGVib2FyZFR5cGUsIFdURjo6U3RyaW5nIHN0cmluZykKICAgICBTZXRQYXN0ZWJv
YXJkQnVmZmVyRm9yVHlwZShXVEY6OlN0cmluZyBwYXN0ZWJvYXJkTmFtZSwgV1RGOjpTdHJpbmcg
cGFzdGVib2FyZFR5cGUsIFdlYktpdDo6U2hhcmVkTWVtb3J5OjpIYW5kbGUgaGFuZGxlLCB1aW50
NjRfdCBzaXplKQogI2VuZGlmCisjaWYgUExBVEZPUk0oTUFDKSB8fCBQTEFURk9STShFRkwpCisg
ICAgR2V0UGFzdGVib2FyZFN0cmluZ0ZvclR5cGUoV1RGOjpTdHJpbmcgcGFzdGVib2FyZE5hbWUs
IFdURjo6U3RyaW5nIHBhc3RlYm9hcmRUeXBlKSAtPiAoV1RGOjpTdHJpbmcgc3RyaW5nKQorICAg
IFNldFBhc3RlYm9hcmRTdHJpbmdGb3JUeXBlKFdURjo6U3RyaW5nIHBhc3RlYm9hcmROYW1lLCBX
VEY6OlN0cmluZyBwYXN0ZWJvYXJkVHlwZSwgV1RGOjpTdHJpbmcgc3RyaW5nKQorI2VuZGlmCisK
IAogI2lmICFQTEFURk9STShNQUMpCiAgICAgLy8gRklYTUU6IFRoaXMgYSBkdW1teSBtZXNzYWdl
LCB0byBhdm9pZCBicmVha2luZyB0aGUgYnVpbGQgZm9yIHBsYXRmb3JtcyB0aGF0IGRvbid0IHJl
cXVpcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViQ29udGV4
dEVmbC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYkNvbnRleHRFZmwuY3Bw
CmluZGV4IDZhMDBiZTAuLmQ4ZDRhMDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9lZmwvV2ViQ29udGV4dEVmbC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L2VmbC9XZWJDb250ZXh0RWZsLmNwcApAQCAtMjksNiArMjksNyBAQAogCiAjaW5jbHVkZSAiTG9n
Z2luZy5oIgogI2luY2x1ZGUgIldlYkluc3BlY3RvclNlcnZlci5oIgorI2luY2x1ZGUgIldlYlBh
c3RlYm9hcmRQcm94eUVmbC5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRl
cnMuaCIKICNpbmNsdWRlICJXZWJTb3VwUmVxdWVzdE1hbmFnZXJQcm94eS5oIgogI2luY2x1ZGUg
PEVmcmVldC5oPgpAQCAtMTI1LDQgKzEyNiwxNCBAQCBTdHJpbmcgV2ViQ29udGV4dDo6cGxhdGZv
cm1EZWZhdWx0Q29va2llU3RvcmFnZURpcmVjdG9yeSgpIGNvbnN0CiAgICAgcmV0dXJuIFN0cmlu
ZygpOwogfQogCit2b2lkIFdlYkNvbnRleHQ6OmdldFBhc3RlYm9hcmRTdHJpbmdGb3JUeXBlKGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUs
IFN0cmluZyYgc3RyaW5nKQoreworICAgIHN0cmluZyA9IFdlYlBhc3RlYm9hcmRQcm94eUVmbDo6
c2hhcmVkKCktPmdldFN0cmluZ0ZvclR5cGUocGFzdGVib2FyZFR5cGUsIHBhc3RlYm9hcmROYW1l
KTsKK30KKwordm9pZCBXZWJDb250ZXh0OjpzZXRQYXN0ZWJvYXJkU3RyaW5nRm9yVHlwZShjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBj
b25zdCBTdHJpbmcmIHN0cmluZykKK3sKKyAgICBXZWJQYXN0ZWJvYXJkUHJveHlFZmw6OnNoYXJl
ZCgpLT5zZXRTdHJpbmdGb3JUeXBlKHN0cmluZywgcGFzdGVib2FyZFR5cGUsIHBhc3RlYm9hcmRO
YW1lKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlBhc3RlYm9hcmRDbGllbnRFZmwuY3BwIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL2VmbC9XZWJQYXN0ZWJvYXJkQ2xpZW50RWZsLmNwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMmUyOTZlCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJQYXN0ZWJvYXJkQ2xpZW50RWZsLmNwcApAQCAt
MCwwICsxLDcyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIFNhbXN1bmcgRWxlY3Ryb25p
Y3MKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZ
UklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcKKyAq
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
IldlYlBhc3RlYm9hcmRDbGllbnRFZmwuaCIKKworI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgorI2lu
Y2x1ZGUgPFdlYkNvcmUvUGFzdGVib2FyZC5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworc3Rh
dGljIFdLUGFzdGVib2FyZFNlbGVjdGlvbkZvcm1hdCBnZXRTZWxlY3Rpb25Gb3JtYXRGcm9tU3Ry
aW5nKGNvbnN0IFN0cmluZyYgc2VsZWN0aW9uRm9ybWF0KQoreworICAgIGlmIChlcXVhbElnbm9y
aW5nQ2FzZShzZWxlY3Rpb25Gb3JtYXQsIFdlYkNvcmU6OnNlbGVjdGlvbkZvcm1hdFRleHQpKQor
ICAgICAgICByZXR1cm4gV0tQYXN0ZWJvYXJkU2VsZWN0aW9uRm9ybWF0VGV4dDsKKworICAgIGlm
IChlcXVhbElnbm9yaW5nQ2FzZShzZWxlY3Rpb25Gb3JtYXQsIFdlYkNvcmU6OnNlbGVjdGlvbkZv
cm1hdE1hcmt1cCkpCisgICAgICAgIHJldHVybiBXS1Bhc3RlYm9hcmRTZWxlY3Rpb25Gb3JtYXRN
YXJrdXA7CisKKyAgICByZXR1cm4gV0tQYXN0ZWJvYXJkU2VsZWN0aW9uRm9ybWF0VW5rbm93bjsK
K30KKworc3RhdGljIFdLUGFzdGVib2FyZFNlbGVjdGlvblR5cGUgZ2V0U2VsZWN0aW9uVHlwZUZy
b21TdHJpbmcoY29uc3QgU3RyaW5nJiBzZWxlY3Rpb25UeXBlKQoreworICAgIGlmIChlcXVhbEln
bm9yaW5nQ2FzZShzZWxlY3Rpb25UeXBlLCBXZWJDb3JlOjpzZWxlY3Rpb25UeXBlUHJpbWFyeSkp
CisgICAgICAgIHJldHVybiBXS1Bhc3RlYm9hcmRTZWxlY3Rpb25UeXBlUHJpbWFyeTsKKworICAg
IGlmIChlcXVhbElnbm9yaW5nQ2FzZShzZWxlY3Rpb25UeXBlLCBXZWJDb3JlOjpzZWxlY3Rpb25U
eXBlQ2xpcGJvYXJkKSkKKyAgICAgICAgcmV0dXJuIFdLUGFzdGVib2FyZFNlbGVjdGlvblR5cGVD
bGlwYm9hcmQ7CisKKyAgICByZXR1cm4gV0tQYXN0ZWJvYXJkU2VsZWN0aW9uVHlwZVVua25vd247
Cit9CisKK1N0cmluZyBXZWJQYXN0ZWJvYXJkQ2xpZW50RWZsOjpnZXRTdHJpbmcoY29uc3QgU3Ry
aW5nJiBzZWxlY3Rpb25Gb3JtYXQsIGNvbnN0IFN0cmluZyYgc2VsZWN0aW9uVHlwZSkKK3sKKyAg
ICBpZiAoIW1fY2xpZW50LmdldFN0cmluZykKKyAgICAgICAgcmV0dXJuIFN0cmluZygpOworCisg
ICAgcmV0dXJuIHRvSW1wbChtX2NsaWVudC5nZXRTdHJpbmcoZ2V0U2VsZWN0aW9uRm9ybWF0RnJv
bVN0cmluZyhzZWxlY3Rpb25Gb3JtYXQpLCBnZXRTZWxlY3Rpb25UeXBlRnJvbVN0cmluZyhzZWxl
Y3Rpb25UeXBlKSwgbV9jbGllbnQuY2xpZW50SW5mbykpLT5zdHJpbmcoKTsKK30KKwordm9pZCBX
ZWJQYXN0ZWJvYXJkQ2xpZW50RWZsOjpzZXRTdHJpbmcoY29uc3QgU3RyaW5nJiBzdHJpbmcsIGNv
bnN0IFN0cmluZyYgc2VsZWN0aW9uRm9ybWF0LCBjb25zdCBTdHJpbmcmIHNlbGVjdGlvblR5cGUp
Cit7CisgICAgaWYgKCFtX2NsaWVudC5zZXRTdHJpbmcpCisgICAgICAgIHJldHVybjsKKworICAg
IG1fY2xpZW50LnNldFN0cmluZyh0b0FQSShzdHJpbmcuaW1wbCgpKSwgZ2V0U2VsZWN0aW9uRm9y
bWF0RnJvbVN0cmluZyhzZWxlY3Rpb25Gb3JtYXQpLCBnZXRTZWxlY3Rpb25UeXBlRnJvbVN0cmlu
ZyhzZWxlY3Rpb25UeXBlKSwgbV9jbGllbnQuY2xpZW50SW5mbyk7Cit9CisKK30gLy8gbmFtZXNw
YWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJQ
YXN0ZWJvYXJkQ2xpZW50RWZsLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlBh
c3RlYm9hcmRDbGllbnRFZmwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5h
ZDUyYzRiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9X
ZWJQYXN0ZWJvYXJkQ2xpZW50RWZsLmgKQEAgLTAsMCArMSw0MyBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNzCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9S
UworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBP
UgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HCisgKiBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
Zm5kZWYgV2ViUGFzdGVib2FyZENsaWVudEVmbF9oCisjZGVmaW5lIFdlYlBhc3RlYm9hcmRDbGll
bnRFZmxfaAorCisjaW5jbHVkZSAiQVBJQ2xpZW50LmgiCisjaW5jbHVkZSAiV0tQYXN0ZWJvYXJk
RWZsLmgiCisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisK
K2NsYXNzIFdlYlBhc3RlYm9hcmRDbGllbnRFZmwgOiBwdWJsaWMgQVBJQ2xpZW50PFdLUGFzdGVi
b2FyZENsaWVudEVmbCwgV0tQYXN0ZWJvYXJkQ2xpZW50RWZsQ3VycmVudFZlcnNpb24+IHsKK3B1
YmxpYzoKKyAgICBTdHJpbmcgZ2V0U3RyaW5nKGNvbnN0IFN0cmluZyYgc2VsZWN0aW9uRm9ybWF0
LCBjb25zdCBTdHJpbmcmIHNlbGVjdGlvblR5cGUpOworICAgIHZvaWQgc2V0U3RyaW5nKGNvbnN0
IFN0cmluZyYsIGNvbnN0IFN0cmluZyYgc2VsZWN0aW9uRm9ybWF0LCBjb25zdCBTdHJpbmcmIHNl
bGVjdGlvblR5cGUpOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBX
ZWJQYXN0ZWJvYXJkQ2xpZW50RWZsX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9lZmwvV2ViUGFzdGVib2FyZFByb3h5RWZsLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9lZmwvV2ViUGFzdGVib2FyZFByb3h5RWZsLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwLi4yYWI3MWJlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL2VmbC9XZWJQYXN0ZWJvYXJkUHJveHlFZmwuY3BwCkBAIC0wLDAgKzEsNTkgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgU2Ftc3VuZyBFbGVjdHJvbmljcworICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJT
IEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENP
UFlSSUdIVCBIT0xERVIgT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORworICogTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisg
KiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViUGFzdGVib2Fy
ZFByb3h5RWZsLmgiCisKKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CisjaW5j
bHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitXZWJQ
YXN0ZWJvYXJkUHJveHlFZmwqIFdlYlBhc3RlYm9hcmRQcm94eUVmbDo6c2hhcmVkKCkKK3sKKyAg
ICBzdGF0aWMgV2ViUGFzdGVib2FyZFByb3h5RWZsKiBwYXN0ZWJvYXJkUHJveHlFZmwgPSBhZG9w
dFJlZihuZXcgV2ViUGFzdGVib2FyZFByb3h5RWZsKS5sZWFrUmVmKCk7CisgICAgcmV0dXJuIHBh
c3RlYm9hcmRQcm94eUVmbDsKK30KKworV2ViUGFzdGVib2FyZFByb3h5RWZsOjpXZWJQYXN0ZWJv
YXJkUHJveHlFZmwoKQoreworfQorCit2b2lkIFdlYlBhc3RlYm9hcmRQcm94eUVmbDo6aW5pdGlh
bGl6ZUNsaWVudChjb25zdCBXS1Bhc3RlYm9hcmRDbGllbnRFZmwqIGNsaWVudCkKK3sKKyAgICBt
X2NsaWVudC5pbml0aWFsaXplKGNsaWVudCk7Cit9CisKK1N0cmluZyBXZWJQYXN0ZWJvYXJkUHJv
eHlFZmw6OmdldFN0cmluZ0ZvclR5cGUoY29uc3QgU3RyaW5nJiBzZWxlY3Rpb25Gb3JtYXQsIGNv
bnN0IFN0cmluZyYgc2VsZWN0aW9uVHlwZSkKK3sKKyAgICByZXR1cm4gbV9jbGllbnQuZ2V0U3Ry
aW5nKHNlbGVjdGlvbkZvcm1hdCwgc2VsZWN0aW9uVHlwZSk7Cit9CisKK3ZvaWQgV2ViUGFzdGVi
b2FyZFByb3h5RWZsOjpzZXRTdHJpbmdGb3JUeXBlKGNvbnN0IFN0cmluZyYgc3RyaW5nLCBjb25z
dCBTdHJpbmcmIHNlbGVjdGlvbkZvcm1hdCwgY29uc3QgU3RyaW5nJiBzZWxlY3Rpb25UeXBlKQor
eworICAgIG1fY2xpZW50LnNldFN0cmluZyhzdHJpbmcsIHNlbGVjdGlvbkZvcm1hdCwgc2VsZWN0
aW9uVHlwZSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJQYXN0ZWJvYXJkUHJveHlFZmwuaCBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViUGFzdGVib2FyZFByb3h5RWZsLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDZmMjBhYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViUGFzdGVib2FyZFByb3h5RWZsLmgKQEAgLTAsMCAr
MSw1OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNzCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hU
IEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUgQ09QWVJJR0hUIEhPTERFUiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HCisgKiBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViUGFzdGVib2FyZFByb3h5RWZsX2gKKyNk
ZWZpbmUgV2ViUGFzdGVib2FyZFByb3h5RWZsX2gKKworI2luY2x1ZGUgIkFQSU9iamVjdC5oIgor
CisjaW5jbHVkZSAiV2ViUGFzdGVib2FyZENsaWVudEVmbC5oIgorI2luY2x1ZGUgPHd0Zi9QYXNz
UmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsK
KworY2xhc3MgV2ViUGFzdGVib2FyZFByb3h5RWZsIDogcHVibGljIEFQSU9iamVjdCB7CitwdWJs
aWM6CisgICAgc3RhdGljIGNvbnN0IFR5cGUgQVBJVHlwZSA9IFR5cGVQYXN0ZWJvYXJkUHJveHk7
CisKKyAgICBzdGF0aWMgV2ViUGFzdGVib2FyZFByb3h5RWZsKiBzaGFyZWQoKTsKKworICAgIHZv
aWQgaW5pdGlhbGl6ZUNsaWVudChjb25zdCBXS1Bhc3RlYm9hcmRDbGllbnRFZmwqKTsKKyAgICBX
ZWJQYXN0ZWJvYXJkQ2xpZW50RWZsJiBjbGllbnQoKSB7IHJldHVybiBtX2NsaWVudDsgfQorCisg
ICAgU3RyaW5nIGdldFN0cmluZ0ZvclR5cGUoY29uc3QgU3RyaW5nJiBzZWxlY3Rpb25Gb3JtYXQs
IGNvbnN0IFN0cmluZyYgc2VsZWN0aW9uVHlwZSk7CisgICAgdm9pZCBzZXRTdHJpbmdGb3JUeXBl
KGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYgc2VsZWN0aW9uRm9ybWF0LCBjb25zdCBTdHJp
bmcmIHNlbGVjdGlvblR5cGUpOworCitwcml2YXRlOgorICAgIFdlYlBhc3RlYm9hcmRQcm94eUVm
bCgpOworCisgICAgdmlydHVhbCBUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBBUElUeXBlOyB9
CisKKyAgICBXZWJQYXN0ZWJvYXJkQ2xpZW50RWZsIG1fY2xpZW50OworfTsKKworfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBXZWJQYXN0ZWJvYXJkUHJveHlFZmxfaApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JD
bGllbnQuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJF
ZGl0b3JDbGllbnQuY3BwCmluZGV4IDFmNzI3MDguLjIyNDMyYzIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNs
aWVudC5jcHAKQEAgLTUxLDYgKzUxLDggQEAKICNpZiBQTEFURk9STShRVCkKICNpbmNsdWRlIDxR
Q2xpcGJvYXJkPgogI2luY2x1ZGUgPFFHdWlBcHBsaWNhdGlvbj4KKyNlbmRpZgorI2lmIFBMQVRG
T1JNKFFUKSB8fCBQTEFURk9STShFRkwpCiAjaW5jbHVkZSA8V2ViQ29yZS9QYXN0ZWJvYXJkLmg+
CiAjZW5kaWYKIApAQCAtMjAxLDEyICsyMDMsMTIgQEAgdm9pZCBXZWJFZGl0b3JDbGllbnQ6OnJl
c3BvbmRUb0NoYW5nZWRTZWxlY3Rpb24oRnJhbWUqIGZyYW1lKQogICAgIHVuc2lnbmVkIHN0YXJ0
OwogICAgIHVuc2lnbmVkIGVuZDsKICAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQ
cm94eTo6RGlkQ2hhbmdlQ29tcG9zaXRpb25TZWxlY3Rpb24oZnJhbWUtPmVkaXRvcigpLT5nZXRD
b21wb3NpdGlvblNlbGVjdGlvbihzdGFydCwgZW5kKSkpOwotI2VsaWYgUExBVEZPUk0oR1RLKSB8
fCBQTEFURk9STShRVCkKKyNlbGlmIFBMQVRGT1JNKEdUSykgfHwgUExBVEZPUk0oUVQpIHx8IFBM
QVRGT1JNKEVGTCkKICAgICB1cGRhdGVHbG9iYWxTZWxlY3Rpb24oZnJhbWUpOwogI2VuZGlmCiB9
CiAKLSNpZiBQTEFURk9STShRVCkKKyNpZiBQTEFURk9STShRVCkgfHwgUExBVEZPUk0oRUZMKQog
Ly8gRklYTUU6IFVzZSB0aGlzIGZ1bmN0aW9uIGZvciBvdGhlciBYMTEtYmFzZWQgcGxhdGZvcm1z
IHRoYXQgbmVlZCB0byBtYW51YWxseSB1cGRhdGUgdGhlIGdsb2JhbCBzZWxlY3Rpb24uCiB2b2lk
IFdlYkVkaXRvckNsaWVudDo6dXBkYXRlR2xvYmFsU2VsZWN0aW9uKEZyYW1lKiBmcmFtZSkKIHsK
QEAgLTQ5MCw3ICs0OTIsNyBAQCBib29sIFdlYkVkaXRvckNsaWVudDo6c3VwcG9ydHNHbG9iYWxT
ZWxlY3Rpb24oKQogewogI2lmIFBMQVRGT1JNKFFUKSAmJiAhZGVmaW5lZChRVF9OT19DTElQQk9B
UkQpCiAgICAgcmV0dXJuIHFBcHAtPmNsaXBib2FyZCgpLT5zdXBwb3J0c1NlbGVjdGlvbigpOwot
I2VsaWYgUExBVEZPUk0oR1RLKSAmJiBQTEFURk9STShYMTEpCisjZWxpZiBQTEFURk9STShHVEsp
ICYmIFBMQVRGT1JNKFgxMSkgfHwgUExBVEZPUk0oRUZMKQogICAgIHJldHVybiB0cnVlOwogI2Vs
c2UKICAgICAvLyBGSVhNRTogUmV0dXJuIHRydWUgb24gb3RoZXIgWDExIHBsYXRmb3JtcyB3aGVu
IHRoZXkgc3VwcG9ydCBnbG9iYWwgc2VsZWN0aW9uLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaCBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKaW5kZXgg
NjRmNGExYi4uNjQ0ZjRhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCkBAIC0xMjUsNyArMTI1LDcg
QEAgcHJpdmF0ZToKICAgICBib29sIGV4ZWN1dGVQZW5kaW5nRWRpdG9yQ29tbWFuZHMoV2ViQ29y
ZTo6RnJhbWUqLCBWZWN0b3I8V1RGOjpTdHJpbmc+LCBib29sKSBPVkVSUklERTsKICAgICB2b2lk
IGdldEVkaXRvckNvbW1hbmRzRm9yS2V5RXZlbnQoY29uc3QgV2ViQ29yZTo6S2V5Ym9hcmRFdmVu
dCosIFZlY3RvcjxXVEY6OlN0cmluZz4mKSBPVkVSUklERTsKICNlbmRpZgotI2lmIFBMQVRGT1JN
KEdUSykgfHwgUExBVEZPUk0oUVQpCisjaWYgUExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShRVCkg
fHwgUExBVEZPUk0oRUZMKQogICAgIHZvaWQgdXBkYXRlR2xvYmFsU2VsZWN0aW9uKFdlYkNvcmU6
OkZyYW1lKik7CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwCmlu
ZGV4IDczYjFhYmIuLjM1ZWExOTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5j
cHAKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJXZWJDb250ZXh0TWVzc2FnZXMuaCIKICNp
bmNsdWRlICJXZWJDb29raWVNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29k
ZXJzLmgiCisjaW5jbHVkZSAiV2ViUGFnZVByb3h5TWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJQ
cm9jZXNzLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Byb3h5TWVzc2FnZXMuaCIKICNpbmNsdWRl
IDxXZWJDb3JlL0NvbG9yLmg+CkBAIC0zMjEsMTQgKzMyMiw2IEBAIHZvaWQgV2ViUGxhdGZvcm1T
dHJhdGVnaWVzOjpnZXRQYXRobmFtZXNGb3JUeXBlKFZlY3RvcjxTdHJpbmc+JiBwYXRobmFtZXMs
IGNvbnN0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBN
ZXNzYWdlczo6V2ViQ29udGV4dDo6R2V0UGFzdGVib2FyZFBhdGhuYW1lc0ZvclR5cGU6OlJlcGx5
KHBhdGhuYW1lcyksIDApOwogfQogCi1TdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpzdHJp
bmdGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUpCi17Ci0gICAgU3RyaW5nIHZhbHVlOwotICAgIFdlYlByb2Nlc3M6OnNoYXJl
ZCgpLmNvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYkNvbnRleHQ6OkdldFBhc3Rl
Ym9hcmRTdHJpbmdGb3JUeXBlKHBhc3RlYm9hcmROYW1lLCBwYXN0ZWJvYXJkVHlwZSksCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdlczo6V2Vi
Q29udGV4dDo6R2V0UGFzdGVib2FyZFN0cmluZ0ZvclR5cGU6OlJlcGx5KHZhbHVlKSwgMCk7Ci0g
ICAgcmV0dXJuIHZhbHVlOwotfQotCiB2b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29weShj
b25zdCBTdHJpbmcmIGZyb21QYXN0ZWJvYXJkLCBjb25zdCBTdHJpbmcmIHRvUGFzdGVib2FyZCkK
IHsKICAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5jb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6
OldlYkNvbnRleHQ6OlBhc3RlYm9hcmRDb3B5KGZyb21QYXN0ZWJvYXJkLCB0b1Bhc3RlYm9hcmQp
LCAwKTsKQEAgLTM5MSw2ICszODQsMTYgQEAgdm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnNl
dFBhdGhuYW1lc0ZvclR5cGUoY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhdGhuYW1lcywKIHsKICAg
ICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5jb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkNv
bnRleHQ6OlNldFBhc3RlYm9hcmRQYXRobmFtZXNGb3JUeXBlKHBhc3RlYm9hcmROYW1lLCBwYXN0
ZWJvYXJkVHlwZSwgcGF0aG5hbWVzKSwgMCk7CiB9CisjZW5kaWYKKyNpZiBQTEFURk9STShNQUMp
IHx8IFBMQVRGT1JNKEVGTCkKK1N0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnN0cmluZ0Zv
clR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkTmFtZSkKK3sKKyAgICBTdHJpbmcgdmFsdWU7CisgICAgV2ViUHJvY2Vzczo6c2hhcmVkKCku
Y29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViQ29udGV4dDo6R2V0UGFzdGVib2Fy
ZFN0cmluZ0ZvclR5cGUocGFzdGVib2FyZE5hbWUsIHBhc3RlYm9hcmRUeXBlKSwKKyAgICAgICAg
TWVzc2FnZXM6OldlYkNvbnRleHQ6OkdldFBhc3RlYm9hcmRTdHJpbmdGb3JUeXBlOjpSZXBseSh2
YWx1ZSksIDApOworCisgICAgcmV0dXJuIHZhbHVlOworfQogCiB2b2lkIFdlYlBsYXRmb3JtU3Ry
YXRlZ2llczo6c2V0U3RyaW5nRm9yVHlwZShjb25zdCBTdHJpbmcmIHN0cmluZywgY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkKIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxh
dGZvcm1TdHJhdGVnaWVzLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCmluZGV4IGU4MmM5MmUuLmJlMTU2YjAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZv
cm1TdHJhdGVnaWVzLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaApAQCAtOTAsNyArOTAsNiBAQCBwcml2YXRlOgog
ICAgIHZpcnR1YWwgdm9pZCBnZXRUeXBlcyhWZWN0b3I8U3RyaW5nPiYgdHlwZXMsIGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZE5hbWUpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxX
ZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgT1ZFUlJJREU7CiAgICAgdmly
dHVhbCB2b2lkIGdldFBhdGhuYW1lc0ZvclR5cGUoVmVjdG9yPFN0cmluZz4mIHBhdGhuYW1lcywg
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSkgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCBTdHJpbmcgc3RyaW5nRm9yVHlwZShjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBPVkVSUklE
RTsKICAgICB2aXJ0dWFsIGludCBjaGFuZ2VDb3VudChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIFN0cmluZyB1bmlxdWVOYW1lKCkgT1ZFUlJJREU7
CiAgICAgdmlydHVhbCBXZWJDb3JlOjpDb2xvciBjb2xvcihjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmROYW1lKSBPVkVSUklERTsKQEAgLTEwMSw2ICsxMDAsOSBAQCBwcml2YXRlOgogICAgIHZpcnR1
YWwgdm9pZCBzZXRUeXBlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQg
c2V0QnVmZmVyRm9yVHlwZShQYXNzUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4sIGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIE9W
RVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBzZXRQYXRobmFtZXNGb3JUeXBlKGNvbnN0IFZlY3Rv
cjxTdHJpbmc+JiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSkgT1ZFUlJJREU7CisjZW5kaWYKKyNpZiBQTEFURk9STShNQUMpIHx8IFBM
QVRGT1JNKEVGTCkKKyAgICB2aXJ0dWFsIFN0cmluZyBzdHJpbmdGb3JUeXBlKGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIE9WRVJSSURF
OwogICAgIHZpcnR1YWwgdm9pZCBzZXRTdHJpbmdGb3JUeXBlKGNvbnN0IFN0cmluZyYsIGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIE9W
RVJSSURFOwogI2VuZGlmCiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>181928</attachid>
            <date>2013-01-09 08:02:02 -0800</date>
            <delta_ts>2013-01-15 03:26:25 -0800</delta_ts>
            <desc>fixes</desc>
            <filename>pasteboard5.diff</filename>
            <type>text/plain</type>
            <size>52006</size>
            <attacher name="Michal Pakula vel Rutka">mpakulavelrutka</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBjZjI5OWI2Li5mNzAxZjY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzIg
QEAKKzIwMTMtMDEtMDkgIE1pY2hhxYIgUGFrdcWCYSB2ZWwgUnV0a2EgIDxtLnBha3VsYUBzYW1z
dW5nLmNvbT4KKworICAgICAgICBbRUZMXVtXSzJdIEltcGxlbWVudGF0aW9uIG9mIHBhc3RlYm9h
cmQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMjQ4
NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEVGTCBk
b2VzIG5vdCBwcm92aWRlIHBsYXRmb3JtLXdpZGUgY29weSBhbmQgcGFzdGUgc3VwcG9ydCwgc28g
d2UgY2Fubm90CisgICAgICAgIGltcGxlbWVudCBwYXN0ZWJvYXJkIGluc2lkZSBXZWJDb3JlIGFz
IGluIG90aGVyIHBvcnRzLiBUaGUgaW1wbGVtZW50YXRpb24gaGFzCisgICAgICAgIHRvIGJlIGRv
bmUgb24gYXBwbGljYXRpb24gc2lkZS4KKworICAgICAgICBObyBuZXcgdGVzdHMgLSBhbHJlYWR5
IGNvdmVyZWQgYnkgZXhpc3RpbmcgdGVzdHMuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9QYXN0ZWJv
YXJkLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFBhc3RlYm9hcmQpOgorICAgICAg
ICAqIHBsYXRmb3JtL1Bhc3RlYm9hcmRTdHJhdGVneS5oOgorICAgICAgICAoUGFzdGVib2FyZFN0
cmF0ZWd5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9lZmwvUGFzdGVib2FyZEVmbC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjpQYXN0ZWJvYXJkKToKKyAgICAgICAgKFdlYkNvcmU6
OlBhc3RlYm9hcmQ6OndyaXRlUGxhaW5UZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9h
cmQ6OndyaXRlU2VsZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OndyaXRl
VVJMKToKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OmRvY3VtZW50RnJhZ21lbnQpOgor
ICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6cGxhaW5UZXh0KToKKyAgICAgICAgKFdlYkNv
cmUpOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6aXNTZWxlY3Rpb25Nb2RlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OnNldFNlbGVjdGlvbk1vZGUpOgorCiAyMDEyLTEy
LTI5ICBJbHlhIFRpa2hvbm92c2t5ICA8bG9pc2xvQGNocm9taXVtLm9yZz4KIAogICAgICAgICBX
ZWIgSW5zcGVjdG9yOiBOYXRpdmUgTWVtb3J5IEluc3RydW1lbnRhdGlvbjogZml4IGluc3RydW1l
bnRhdGlvbiBmb3IgYWxyZWFkeSBpbnN0cnVtZW50ZWQgY2xhc3NlcyAxL04KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1Bhc3RlYm9hcmQuaAppbmRleCA0MDIyYTYxLi4yZmIxNTU3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vUGFzdGVib2FyZC5oCkBAIC02Myw2ICs2MywxMyBAQCBleHRlcm4gY29uc3QgY2hh
ciogV2ViVVJMUGJvYXJkVHlwZTsKIGV4dGVybiBjb25zdCBjaGFyKiBXZWJVUkxzV2l0aFRpdGxl
c1Bib2FyZFR5cGU7CiAjZW5kaWYKIAorI2lmIFBMQVRGT1JNKEVGTCkKK2NvbnN0IFN0cmluZyBz
ZWxlY3Rpb25Gb3JtYXRUZXh0KCJUZXh0Iik7Citjb25zdCBTdHJpbmcgc2VsZWN0aW9uRm9ybWF0
TWFya3VwKCJNYXJrdXAiKTsKK2NvbnN0IFN0cmluZyBzZWxlY3Rpb25UeXBlUHJpbWFyeSgiUHJp
bWFyeSIpOworY29uc3QgU3RyaW5nIHNlbGVjdGlvblR5cGVDbGlwYm9hcmQoIkNsaXBib2FyZCIp
OworI2VuZGlmCisKICAgICBjbGFzcyBBcmNoaXZlUmVzb3VyY2U7CiBjbGFzcyBDbGlwYm9hcmQ7
CiBjbGFzcyBEb2N1bWVudEZyYWdtZW50OwpAQCAtMTAwLDcgKzEwNyw3IEBAIHB1YmxpYzoKICAg
ICBQYXNzUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGRvY3VtZW50RnJhZ21lbnQoRnJhbWUqLCBQ
YXNzUmVmUHRyPFJhbmdlPiwgYm9vbCBhbGxvd1BsYWluVGV4dCwgYm9vbCYgY2hvc2VQbGFpblRl
eHQpOwogICAgIFN0cmluZyBwbGFpblRleHQoRnJhbWUqID0gMCk7CiAgICAgCi0jaWYgUExBVEZP
Uk0oUVQpIHx8IFBMQVRGT1JNKENIUk9NSVVNKSB8fCBQTEFURk9STShHVEspCisjaWYgUExBVEZP
Uk0oUVQpIHx8IFBMQVRGT1JNKENIUk9NSVVNKSB8fCBQTEFURk9STShHVEspIHx8IFBMQVRGT1JN
KEVGTCkKICAgICBib29sIGlzU2VsZWN0aW9uTW9kZSgpIGNvbnN0OwogICAgIHZvaWQgc2V0U2Vs
ZWN0aW9uTW9kZShib29sKTsKICNlbHNlCkBAIC0xMjMsNyArMTMwLDcgQEAgcHJpdmF0ZToKICAg
ICBIV05EIG1fb3duZXI7CiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKFFUKSB8fCBQTEFURk9STShD
SFJPTUlVTSkKKyNpZiBQTEFURk9STShRVCkgfHwgUExBVEZPUk0oQ0hST01JVU0pIHx8IFBMQVRG
T1JNKEVGTCkKICAgICBib29sIG1fc2VsZWN0aW9uTW9kZTsKICNlbmRpZgogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkU3RyYXRlZ3kuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRTdHJhdGVneS5oCmluZGV4IGY5MjJjNjYuLmQ5MDY5
MjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRTdHJhdGVn
eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRTdHJhdGVneS5oCkBA
IC00NCw3ICs0NCw2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZ2V0VHlwZXMoVmVjdG9y
PFN0cmluZz4mIHR5cGVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSA9IDA7CiAgICAg
dmlydHVhbCBQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyRm9yVHlwZShjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSA9IDA7CiAg
ICAgdmlydHVhbCB2b2lkIGdldFBhdGhuYW1lc0ZvclR5cGUoVmVjdG9yPFN0cmluZz4mIHBhdGhu
YW1lcywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkTmFtZSkgPSAwOwotICAgIHZpcnR1YWwgU3RyaW5nIHN0cmluZ0ZvclR5cGUoY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgPSAwOwog
ICAgIHZpcnR1YWwgaW50IGNoYW5nZUNvdW50KGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUp
ID0gMDsKICAgICB2aXJ0dWFsIFN0cmluZyB1bmlxdWVOYW1lKCkgPSAwOwogICAgIHZpcnR1YWwg
Q29sb3IgY29sb3IoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgPSAwOwpAQCAtNTUsNiAr
NTQsOSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNldFR5cGVzKGNvbnN0IFZlY3RvcjxT
dHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpID0g
MDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0QnVmZmVyRm9yVHlwZShQYXNzUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4sIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZE5hbWUpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0UGF0aG5hbWVzRm9yVHlwZShjb25z
dCBWZWN0b3I8U3RyaW5nPiYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZE5hbWUpID0gMDsKKyNlbmRpZgorI2lmIFBMQVRGT1JNKE1BQykgfHwg
UExBVEZPUk0oRUZMKQorICAgIHZpcnR1YWwgU3RyaW5nIHN0cmluZ0ZvclR5cGUoY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgPSAwOwog
ICAgIHZpcnR1YWwgdm9pZCBzZXRTdHJpbmdGb3JUeXBlKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpID0gMDsK
ICNlbmRpZgogcHJvdGVjdGVkOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
ZWZsL1Bhc3RlYm9hcmRFZmwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZsL1Bhc3Rl
Ym9hcmRFZmwuY3BwCmluZGV4IDdhMWFjNDUuLjVhMWI5MjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2VmbC9QYXN0ZWJvYXJkRWZsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9lZmwvUGFzdGVib2FyZEVmbC5jcHAKQEAgLTI4LDYgKzI4LDggQEAKICNpbmNs
dWRlICJJbWFnZS5oIgogI2luY2x1ZGUgIktVUkwuaCIKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRl
ZC5oIgorI2luY2x1ZGUgIlBhc3RlYm9hcmRTdHJhdGVneS5oIgorI2luY2x1ZGUgIlBsYXRmb3Jt
U3RyYXRlZ2llcy5oIgogI2luY2x1ZGUgIlJlbmRlckltYWdlLmgiCiAjaW5jbHVkZSAibWFya3Vw
LmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgpAQCAtNDIsMjMgKzQ0LDMwIEBAIFBh
c3RlYm9hcmQqIFBhc3RlYm9hcmQ6OmdlbmVyYWxQYXN0ZWJvYXJkKCkKIH0KIAogUGFzdGVib2Fy
ZDo6UGFzdGVib2FyZCgpCisgICAgOiBtX3NlbGVjdGlvbk1vZGUoZmFsc2UpCiB7Ci0gICAgbm90
SW1wbGVtZW50ZWQoKTsKIH0KIAotdm9pZCBQYXN0ZWJvYXJkOjp3cml0ZVBsYWluVGV4dChjb25z
dCBTdHJpbmcmLCBTbWFydFJlcGxhY2VPcHRpb24pCit2b2lkIFBhc3RlYm9hcmQ6OndyaXRlUGxh
aW5UZXh0KGNvbnN0IFN0cmluZyYgdGV4dCwgU21hcnRSZXBsYWNlT3B0aW9uKQogewotICAgIG5v
dEltcGxlbWVudGVkKCk7CisgICAgcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJh
dGVneSgpLT5zZXRTdHJpbmdGb3JUeXBlKHRleHQsIHNlbGVjdGlvbkZvcm1hdFRleHQsCisgICAg
ICAgIG1fc2VsZWN0aW9uTW9kZSA/IHNlbGVjdGlvblR5cGVQcmltYXJ5IDogc2VsZWN0aW9uVHlw
ZUNsaXBib2FyZCk7CiB9CiAKLXZvaWQgUGFzdGVib2FyZDo6d3JpdGVTZWxlY3Rpb24oUmFuZ2Uq
LCBib29sLCBGcmFtZSopCit2b2lkIFBhc3RlYm9hcmQ6OndyaXRlU2VsZWN0aW9uKFJhbmdlKiBz
ZWxlY3RlZFJhbmdlLCBib29sLCBGcmFtZSopCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAg
ICBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPnNldFN0cmluZ0Zv
clR5cGUoCisgICAgICAgIGNyZWF0ZU1hcmt1cChzZWxlY3RlZFJhbmdlLCAwLCBBbm5vdGF0ZUZv
ckludGVyY2hhbmdlLCBmYWxzZSwgUmVzb2x2ZU5vbkxvY2FsVVJMcyksIHNlbGVjdGlvbkZvcm1h
dE1hcmt1cCwKKyAgICAgICAgbV9zZWxlY3Rpb25Nb2RlID8gc2VsZWN0aW9uVHlwZVByaW1hcnkg
OiBzZWxlY3Rpb25UeXBlQ2xpcGJvYXJkKTsKIH0KIAotdm9pZCBQYXN0ZWJvYXJkOjp3cml0ZVVS
TChjb25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJiwgRnJhbWUqKQordm9pZCBQYXN0ZWJvYXJkOjp3
cml0ZVVSTChjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYsIEZyYW1lKikKIHsKLSAgICBu
b3RJbXBsZW1lbnRlZCgpOworICAgIGlmICh1cmwuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47
CisKKyAgICBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPnNldFN0
cmluZ0ZvclR5cGUodXJsLnN0cmluZygpLCBzZWxlY3Rpb25Gb3JtYXRNYXJrdXAsCisgICAgICAg
IG1fc2VsZWN0aW9uTW9kZSA/IHNlbGVjdGlvblR5cGVQcmltYXJ5IDogc2VsZWN0aW9uVHlwZUNs
aXBib2FyZCk7CiB9CiAKIHZvaWQgUGFzdGVib2FyZDo6d3JpdGVJbWFnZShOb2RlKiwgY29uc3Qg
S1VSTCYsIGNvbnN0IFN0cmluZyYpCkBAIC04MiwxNiArOTEsNDYgQEAgYm9vbCBQYXN0ZWJvYXJk
OjpjYW5TbWFydFJlcGxhY2UoKQogICAgIHJldHVybiBmYWxzZTsKIH0KIAotUGFzc1JlZlB0cjxE
b2N1bWVudEZyYWdtZW50PiBQYXN0ZWJvYXJkOjpkb2N1bWVudEZyYWdtZW50KEZyYW1lKiwgUGFz
c1JlZlB0cjxSYW5nZT4sIGJvb2wsIGJvb2wmKQorUGFzc1JlZlB0cjxEb2N1bWVudEZyYWdtZW50
PiBQYXN0ZWJvYXJkOjpkb2N1bWVudEZyYWdtZW50KEZyYW1lKiBmcmFtZSwgUGFzc1JlZlB0cjxS
YW5nZT4gY29udGV4dCwgYm9vbCBhbGxvd1BsYWluVGV4dCwgYm9vbCYgY2hvc2VQbGFpblRleHQp
CiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBjaG9zZVBsYWluVGV4dCA9IGZhbHNlOwor
CisgICAgU3RyaW5nIGRhdGEgPSBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0
ZWd5KCktPnN0cmluZ0ZvclR5cGUoc2VsZWN0aW9uRm9ybWF0TWFya3VwLAorICAgICAgICBtX3Nl
bGVjdGlvbk1vZGUgPyBzZWxlY3Rpb25UeXBlUHJpbWFyeSA6IHNlbGVjdGlvblR5cGVDbGlwYm9h
cmQpOworCisgICAgaWYgKCFkYXRhLmlzRW1wdHkoKSkgeworICAgICAgICBSZWZQdHI8RG9jdW1l
bnRGcmFnbWVudD4gZnJhZ21lbnQgPSBjcmVhdGVGcmFnbWVudEZyb21NYXJrdXAoZnJhbWUtPmRv
Y3VtZW50KCksIGRhdGEsICIiLCBEaXNhbGxvd1NjcmlwdGluZ0NvbnRlbnQpOworICAgICAgICBp
ZiAoZnJhZ21lbnQpCisgICAgICAgICAgICByZXR1cm4gZnJhZ21lbnQucmVsZWFzZSgpOworICAg
IH0KKworICAgIGRhdGEgPSBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5
KCktPnN0cmluZ0ZvclR5cGUoc2VsZWN0aW9uRm9ybWF0VGV4dCwKKyAgICAgICAgbV9zZWxlY3Rp
b25Nb2RlID8gc2VsZWN0aW9uVHlwZVByaW1hcnkgOiBzZWxlY3Rpb25UeXBlQ2xpcGJvYXJkKTsK
KworICAgIGlmIChhbGxvd1BsYWluVGV4dCAmJiAhZGF0YS5pc0VtcHR5KCkpIHsKKyAgICAgICAg
Y2hvc2VQbGFpblRleHQgPSB0cnVlOworICAgICAgICBSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4g
ZnJhZ21lbnQgPSBjcmVhdGVGcmFnbWVudEZyb21UZXh0KGNvbnRleHQuZ2V0KCksIGRhdGEpOwor
ICAgICAgICBpZiAoZnJhZ21lbnQpCisgICAgICAgICAgICByZXR1cm4gZnJhZ21lbnQucmVsZWFz
ZSgpOworICAgIH0KKwogICAgIHJldHVybiAwOwogfQogCiBTdHJpbmcgUGFzdGVib2FyZDo6cGxh
aW5UZXh0KEZyYW1lKikKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiBTdHJp
bmcoKTsKKyAgICByZXR1cm4gcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVn
eSgpLT5zdHJpbmdGb3JUeXBlKHNlbGVjdGlvbkZvcm1hdFRleHQsCisgICAgICAgIG1fc2VsZWN0
aW9uTW9kZSA/IHNlbGVjdGlvblR5cGVQcmltYXJ5IDogc2VsZWN0aW9uVHlwZUNsaXBib2FyZCk7
Cit9CisKK2Jvb2wgUGFzdGVib2FyZDo6aXNTZWxlY3Rpb25Nb2RlKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gbV9zZWxlY3Rpb25Nb2RlOworfQorCit2b2lkIFBhc3RlYm9hcmQ6OnNldFNlbGVjdGlv
bk1vZGUoYm9vbCBzZWxlY3Rpb25Nb2RlKQoreworICAgIG1fc2VsZWN0aW9uTW9kZSA9IHNlbGVj
dGlvbk1vZGU7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZwppbmRleCAzNjMwYTVjLi40ZDc4ZGE4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktp
dC9lZmwvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTMtMDEtMDkgIE1pY2hhxYIgUGFr
dcWCYSB2ZWwgUnV0a2EgIDxtLnBha3VsYUBzYW1zdW5nLmNvbT4KKworICAgICAgICBbRUZMXVtX
SzJdIEltcGxlbWVudGF0aW9uIG9mIHBhc3RlYm9hcmQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMjQ4NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIEVGTCBkb2VzIG5vdCBwcm92aWRlIHBsYXRmb3JtLXdp
ZGUgY29weSBhbmQgcGFzdGUgc3VwcG9ydCwgc28gd2UgY2Fubm90CisgICAgICAgIGltcGxlbWVu
dCBwYXN0ZWJvYXJkIGluc2lkZSBXZWJDb3JlIGFzIGluIG90aGVyIHBvcnRzLCBidXQgaW1wbGVt
ZW50YXRpb24gaGFzCisgICAgICAgIHRvIGJlIGRvbmUgb24gV2ViS2l0LXVzaW5nIGFwcGxpY2F0
aW9uIHNpZGUuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9QbGF0Zm9ybVN0cmF0ZWdpZXNF
ZmwuY3BwOgorICAgICAgICAoUGxhdGZvcm1TdHJhdGVnaWVzRWZsOjpjcmVhdGVQYXN0ZWJvYXJk
U3RyYXRlZ3kpOgorICAgICAgICAoUGxhdGZvcm1TdHJhdGVnaWVzRWZsOjpzZXRTdHJpbmdGb3JU
eXBlKToKKyAgICAgICAgKFBsYXRmb3JtU3RyYXRlZ2llc0VmbDo6c3RyaW5nRm9yVHlwZSk6Cisg
ICAgICAgICogV2ViQ29yZVN1cHBvcnQvUGxhdGZvcm1TdHJhdGVnaWVzRWZsLmg6CisgICAgICAg
IChQbGF0Zm9ybVN0cmF0ZWdpZXNFZmwpOgorCiAyMDEzLTAxLTA4ICBNYXJrIExhbSAgPG1hcmsu
bGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmVkIHRoZSBuZWVkIGZvciB0aGUgUHJvcG9z
ZWREYXRhYmFzZSBtZWNoYW5pc20uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJD
b3JlU3VwcG9ydC9QbGF0Zm9ybVN0cmF0ZWdpZXNFZmwuY3BwIGIvU291cmNlL1dlYktpdC9lZmwv
V2ViQ29yZVN1cHBvcnQvUGxhdGZvcm1TdHJhdGVnaWVzRWZsLmNwcAppbmRleCBhNzgzZjUwLi41
YjU2YWQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9QbGF0
Zm9ybVN0cmF0ZWdpZXNFZmwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBw
b3J0L1BsYXRmb3JtU3RyYXRlZ2llc0VmbC5jcHAKQEAgLTYyLDggKzYyLDcgQEAgTG9hZGVyU3Ry
YXRlZ3kqIFBsYXRmb3JtU3RyYXRlZ2llc0VmbDo6Y3JlYXRlTG9hZGVyU3RyYXRlZ3koKQogCiBQ
YXN0ZWJvYXJkU3RyYXRlZ3kqIFBsYXRmb3JtU3RyYXRlZ2llc0VmbDo6Y3JlYXRlUGFzdGVib2Fy
ZFN0cmF0ZWd5KCkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiAwOworICAg
IHJldHVybiB0aGlzOwogfQogCiBQbHVnaW5TdHJhdGVneSogUGxhdGZvcm1TdHJhdGVnaWVzRWZs
OjpjcmVhdGVQbHVnaW5TdHJhdGVneSgpCkBAIC0xNjIsMyArMTYxLDE1IEBAIHZvaWQgUGxhdGZv
cm1TdHJhdGVnaWVzRWZsOjphZGRWaXNpdGVkTGluayhQYWdlKiBwYWdlLCBMaW5rSGFzaCBoYXNo
KQogewogICAgIHBhZ2UtPmdyb3VwKCkuYWRkVmlzaXRlZExpbmtIYXNoKGhhc2gpOwogfQorCisv
LyBQYXN0ZWJvYXJkU3RyYXRlZ3kKK3ZvaWQgUGxhdGZvcm1TdHJhdGVnaWVzRWZsOjpzZXRTdHJp
bmdGb3JUeXBlKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30K
KworU3RyaW5nIFBsYXRmb3JtU3RyYXRlZ2llc0VmbDo6c3RyaW5nRm9yVHlwZShjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKQoreworICAg
IG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIFN0cmluZygpOworfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvUGxhdGZvcm1TdHJhdGVnaWVzRWZsLmgg
Yi9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9QbGF0Zm9ybVN0cmF0ZWdpZXNFZmwu
aAppbmRleCBlN2E5ZThkLi4wYzY4NmU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9X
ZWJDb3JlU3VwcG9ydC9QbGF0Zm9ybVN0cmF0ZWdpZXNFZmwuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L2VmbC9XZWJDb3JlU3VwcG9ydC9QbGF0Zm9ybVN0cmF0ZWdpZXNFZmwuaApAQCAtMjksNyArMjks
NyBAQAogI2luY2x1ZGUgIlNoYXJlZFdvcmtlclN0cmF0ZWd5LmgiCiAjaW5jbHVkZSAiVmlzaXRl
ZExpbmtTdHJhdGVneS5oIgogCi1jbGFzcyBQbGF0Zm9ybVN0cmF0ZWdpZXNFZmwgOiBwdWJsaWMg
V2ViQ29yZTo6UGxhdGZvcm1TdHJhdGVnaWVzLCBwcml2YXRlIFdlYkNvcmU6OkNvb2tpZXNTdHJh
dGVneSwgcHJpdmF0ZSBXZWJDb3JlOjpEYXRhYmFzZVN0cmF0ZWd5LCBwcml2YXRlIFdlYkNvcmU6
OkxvYWRlclN0cmF0ZWd5LCBwcml2YXRlIFdlYkNvcmU6OlBsdWdpblN0cmF0ZWd5LCBwcml2YXRl
IFdlYkNvcmU6OlNoYXJlZFdvcmtlclN0cmF0ZWd5LCBwcml2YXRlIFdlYkNvcmU6OlZpc2l0ZWRM
aW5rU3RyYXRlZ3kgeworY2xhc3MgUGxhdGZvcm1TdHJhdGVnaWVzRWZsIDogcHVibGljIFdlYkNv
cmU6OlBsYXRmb3JtU3RyYXRlZ2llcywgcHJpdmF0ZSBXZWJDb3JlOjpDb29raWVzU3RyYXRlZ3ks
IHByaXZhdGUgV2ViQ29yZTo6RGF0YWJhc2VTdHJhdGVneSwgcHJpdmF0ZSBXZWJDb3JlOjpMb2Fk
ZXJTdHJhdGVneSwgcHJpdmF0ZSBXZWJDb3JlOjpQbHVnaW5TdHJhdGVneSwgcHJpdmF0ZSBXZWJD
b3JlOjpTaGFyZWRXb3JrZXJTdHJhdGVneSwgcHJpdmF0ZSBXZWJDb3JlOjpWaXNpdGVkTGlua1N0
cmF0ZWd5LCBwcml2YXRlIFdlYkNvcmU6OlBhc3RlYm9hcmRTdHJhdGVneSB7CiBwdWJsaWM6CiAg
ICAgc3RhdGljIHZvaWQgaW5pdGlhbGl6ZSgpOwogCkBAIC02Myw2ICs2MywxMCBAQCBwcml2YXRl
OgogICAgIC8vIFdlYkNvcmU6OlZpc2l0ZWRMaW5rU3RyYXRlZ3kKICAgICB2aXJ0dWFsIGJvb2wg
aXNMaW5rVmlzaXRlZChXZWJDb3JlOjpQYWdlKiwgV2ViQ29yZTo6TGlua0hhc2gsIGNvbnN0IFdl
YkNvcmU6OktVUkwmIGJhc2VVUkwsIGNvbnN0IFdURjo6QXRvbWljU3RyaW5nJiBhdHRyaWJ1dGVV
UkwpOwogICAgIHZpcnR1YWwgdm9pZCBhZGRWaXNpdGVkTGluayhXZWJDb3JlOjpQYWdlKiwgV2Vi
Q29yZTo6TGlua0hhc2gpOworCisgICAgLy8gV2ViQ29yZTo6UGFzdGVib2FyZFN0cmF0ZWd5Cisg
ICAgdmlydHVhbCBTdHJpbmcgc3RyaW5nRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRU
eXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0
U3RyaW5nRm9yVHlwZShjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBl
LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKTsKIH07CiAKICNlbmRpZiAvLyBQbGF0Zm9y
bVN0cmF0ZWdpZXNFZmxfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIv
U291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDJmMmVhMDguLmJlYjUwODQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VM
b2cKQEAgLTEsMyArMSw2NSBAQAorMjAxMy0wMS0wOSAgTWljaGHFgiBQYWt1xYJhIHZlbCBSdXRr
YSAgPG0ucGFrdWxhQHNhbXN1bmcuY29tPgorCisgICAgICAgIFtFRkxdW1dLMl0gSW1wbGVtZW50
YXRpb24gb2YgcGFzdGVib2FyZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTAyNDg0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgVGhpcyBwYXRjaCBpcyBhbiBpbml0aWFsIGFwcHJvYWNoIHRvIFBhc3RlYm9h
cmQgaW1wbGVtZW50YXRpb24gaW4gV2ViS2l0MiwKKyAgICAgICAgZm9jdXNpbmcgb24gYmFzaWMg
Y29weSBhbmQgcGFzdGUgZmVhdHVyZXMuIEl0IHBhc3Nlc3MgZGF0YSBhbG9uZyB3aXRoIGRhdGEK
KyAgICAgICAgdHlwZSBmcm9tIFdlYkNvcmUgdG8gV2ViS2l0MiBhbmQgdGhlbiB0aGUgY2xpZW50
IGNhbGxiYWNrcyBhcmUgaW52b2tlZC4KKworICAgICAgICAqIFBsYXRmb3JtRWZsLmNtYWtlOgor
ICAgICAgICAqIFNoYXJlZC9BUEkvYy9lZmwvV0tCYXNlRWZsLmg6CisgICAgICAgICogU2hhcmVk
L0FQSU9iamVjdC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9lZmwvV0tQYXN0ZWJvYXJk
RWZsLmNwcDogQWRkZWQuCisgICAgICAgIChXS1Bhc3RlYm9hcmRTZXRDbGllbnQpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvQy9lZmwvV0tQYXN0ZWJvYXJkRWZsLmg6IEFkZGVkLgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvZWZsL0VXZWJLaXQyLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9lZmwvZXdrX3Bhc3RlYm9hcmQuY3BwOiBBZGRlZC4KKyAgICAgICAgKHNldERhdGEpOgorICAg
ICAgICAoZ2V0RGF0YSk6CisgICAgICAgIChld2tfcGFzdGVib2FyZF9pbml0aWFsaXplKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfcGFzdGVib2FyZC5oOiBBZGRlZC4KKyAgICAg
ICAgKiBVSVByb2Nlc3MvV2ViQ29udGV4dC5oOgorICAgICAgICAoV2ViQ29udGV4dCk6CisgICAg
ICAgICogVUlQcm9jZXNzL1dlYkNvbnRleHQubWVzc2FnZXMuaW46CisgICAgICAgICogVUlQcm9j
ZXNzL2VmbC9XZWJDb250ZXh0RWZsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dDo6
Z2V0UGFzdGVib2FyZFN0cmluZ0ZvclR5cGUpOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAg
KFdlYktpdDo6V2ViQ29udGV4dDo6c2V0UGFzdGVib2FyZFN0cmluZ0ZvclR5cGUpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9lZmwvV2ViUGFzdGVib2FyZENsaWVudEVmbC5jcHA6IEFkZGVkLgorICAg
ICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6Z2V0U2VsZWN0aW9uRm9ybWF0RnJvbVN0
cmluZyk6CisgICAgICAgIChXZWJLaXQ6OmdldFNlbGVjdGlvblR5cGVGcm9tU3RyaW5nKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFzdGVib2FyZENsaWVudEVmbDo6Z2V0U3RyaW5nKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFzdGVib2FyZENsaWVudEVmbDo6c2V0U3RyaW5nKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvZWZsL1dlYlBhc3RlYm9hcmRDbGllbnRFZmwuaDogQWRkZWQuCisgICAgICAg
IChXZWJLaXQpOgorICAgICAgICAoV2ViUGFzdGVib2FyZENsaWVudEVmbCk6CisgICAgICAgICog
VUlQcm9jZXNzL2VmbC9XZWJQYXN0ZWJvYXJkUHJveHlFZmwuY3BwOiBBZGRlZC4KKyAgICAgICAg
KFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhc3RlYm9hcmRQcm94eUVmbDo6c2hhcmVk
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFzdGVib2FyZFByb3h5RWZsOjpXZWJQYXN0ZWJvYXJk
UHJveHlFZmwpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYXN0ZWJvYXJkUHJveHlFZmw6OmluaXRp
YWxpemVDbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYXN0ZWJvYXJkUHJveHlFZmw6Omdl
dFN0cmluZ0ZvclR5cGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYXN0ZWJvYXJkUHJveHlFZmw6
OnNldFN0cmluZ0ZvclR5cGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9lZmwvV2ViUGFzdGVib2Fy
ZFByb3h5RWZsLmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYlBhc3Rl
Ym9hcmRQcm94eUVmbCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhc3RlYm9hcmRQcm94eUVmbDo6
Y2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFzdGVib2FyZFByb3h5RWZsOjp0eXBlKToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYkVkaXRvckNsaWVudDo6cmVzcG9uZFRvQ2hhbmdlZFNlbGVj
dGlvbik6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJFZGl0b3JDbGll
bnQ6OnN1cHBvcnRzR2xvYmFsU2VsZWN0aW9uKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcDoKKyAgICAgICAgKFdlYktpdCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBsYXRmb3JtU3RyYXRlZ2llczo6c3RyaW5nRm9yVHlwZSk6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMu
aDoKKyAgICAgICAgKFdlYlBsYXRmb3JtU3RyYXRlZ2llcyk6CisKIDIwMTMtMDEtMDkgIEFuZHJh
cyBCZWNzaSAgPGFuZHJhcy5iZWNzaUBkaWdpYS5jb20+CiAKICAgICAgICAgW1F0XVtFRkxdW1dL
Ml0gUmVtb3ZlIHJlZHVuZGFudCBkZXZpY2UgcGl4ZWwgcmF0aW8gYWRqdXN0bWVudCBmcm9tIFBh
Z2VWaWV3cG9ydENvbnRyb2xsZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3Jt
RWZsLmNtYWtlIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UKaW5kZXggYzU3YzI4
ZS4uMjcwYTViNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UK
KysrIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UKQEAgLTMyLDYgKzMyLDcgQEAg
bGlzdChBUFBFTkQgV2ViS2l0Ml9TT1VSQ0VTCiAKICAgICBTaGFyZWQvUGx1Z2lucy9OZXRzY2Fw
ZS94MTEvTmV0c2NhcGVQbHVnaW5Nb2R1bGVYMTEuY3BwCiAKKyAgICBVSVByb2Nlc3MvQVBJL0Mv
ZWZsL1dLUGFzdGVib2FyZEVmbC5jcHAKICAgICBVSVByb2Nlc3MvQVBJL0MvZWZsL1dLVmlldy5j
cHAKIAogICAgIFVJUHJvY2Vzcy9BUEkvY3BwL2VmbC9XS0VpbmFTaGFyZWRTdHJpbmcuY3BwCkBA
IC02Myw2ICs2NCw3IEBAIGxpc3QoQVBQRU5EIFdlYktpdDJfU09VUkNFUwogICAgIFVJUHJvY2Vz
cy9BUEkvZWZsL2V3a19uYXZpZ2F0aW9uX2RhdGEuY3BwCiAgICAgVUlQcm9jZXNzL0FQSS9lZmwv
ZXdrX25hdmlnYXRpb25fcG9saWN5X2RlY2lzaW9uLmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvZWZs
L2V3a19vYmplY3QuY3BwCisgICAgVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3Bhc3RlYm9hcmQuY3Bw
CiAgICAgVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3BvcHVwX21lbnUuY3BwCiAgICAgVUlQcm9jZXNz
L0FQSS9lZmwvZXdrX3BvcHVwX21lbnVfaXRlbS5jcHAKICAgICBVSVByb2Nlc3MvQVBJL2VmbC9l
d2tfcmVzb3VyY2UuY3BwCkBAIC0xMDIsNiArMTA0LDggQEAgbGlzdChBUFBFTkQgV2ViS2l0Ml9T
T1VSQ0VTCiAgICAgVUlQcm9jZXNzL2VmbC9XZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5RWZsLmNw
cAogICAgIFVJUHJvY2Vzcy9lZmwvV2ViSW5zcGVjdG9yUHJveHlFZmwuY3BwCiAgICAgVUlQcm9j
ZXNzL2VmbC9XZWJQYWdlUHJveHlFZmwuY3BwCisgICAgVUlQcm9jZXNzL2VmbC9XZWJQYXN0ZWJv
YXJkQ2xpZW50RWZsLmNwcAorICAgIFVJUHJvY2Vzcy9lZmwvV2ViUGFzdGVib2FyZFByb3h5RWZs
LmNwcAogICAgIFVJUHJvY2Vzcy9lZmwvV2ViUG9wdXBNZW51UHJveHlFZmwuY3BwCiAgICAgVUlQ
cm9jZXNzL2VmbC9XZWJQcmVmZXJlbmNlc0VmbC5jcHAKICAgICBVSVByb2Nlc3MvZWZsL1dlYlBy
b2Nlc3NQcm94eUVmbC5jcHAKQEAgLTI4MCw2ICsyODQsNyBAQCBzZXQoRVdlYktpdDJfSEVBREVS
UwogICAgICIke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vVUlQcm9jZXNzL0FQSS9lZmwvZXdr
X25hdmlnYXRpb25fZGF0YS5oIgogICAgICIke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vVUlQ
cm9jZXNzL0FQSS9lZmwvZXdrX25hdmlnYXRpb25fcG9saWN5X2RlY2lzaW9uLmgiCiAgICAgIiR7
Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfb2JqZWN0Lmgi
CisgICAgIiR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9VSVByb2Nlc3MvQVBJL2VmbC9ld2tf
cGFzdGVib2FyZC5oIgogICAgICIke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vVUlQcm9jZXNz
L0FQSS9lZmwvZXdrX3BvcHVwX21lbnUuaCIKICAgICAiJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9E
SVJ9L1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19wb3B1cF9tZW51X2l0ZW0uaCIKICAgICAiJHtDTUFL
RV9DVVJSRU5UX1NPVVJDRV9ESVJ9L1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19yZXNvdXJjZS5oIgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL2VmbC9XS0Jhc2VFZmwuaCBi
L1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9lZmwvV0tCYXNlRWZsLmgKaW5kZXggNjE4NGM4
MS4uMzVlZjg0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL2VmbC9X
S0Jhc2VFZmwuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvZWZsL1dLQmFzZUVm
bC5oCkBAIC0yNSw1ICsyNSw2IEBACiAjZW5kaWYKIAogdHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3Bh
cXVlV0tWaWV3KiBXS1ZpZXdSZWY7Cit0eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVXS1Bhc3Rl
Ym9hcmQqIFdLUGFzdGVib2FyZFJlZjsKIAogI2VuZGlmIC8qIFdLQmFzZUVmbF9oICovCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJT2JqZWN0LmggYi9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvQVBJT2JqZWN0LmgKaW5kZXggMzExOWRlNi4uMzlkMmE4OSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvU2hhcmVkL0FQSU9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9BUElPYmplY3QuaApAQCAtMTMyLDYgKzEzMiw3IEBAIHB1YmxpYzoKICAgICAgICAgVHlw
ZUVkaXRDb21tYW5kUHJveHksCiAgICAgICAgIFR5cGVPYmpDT2JqZWN0R3JhcGgsCiAgICAgICAg
IFR5cGVWaWV3LAorICAgICAgICBUeXBlUGFzdGVib2FyZFByb3h5LAogI2lmIFVTRShTT1VQKQog
ICAgICAgICBUeXBlU291cFJlcXVlc3RNYW5hZ2VyLAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvZWZsL1dLUGFzdGVib2FyZEVmbC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvZWZsL1dLUGFzdGVib2FyZEVmbC5jcHAKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGUyNzZjYQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9lZmwvV0tQYXN0ZWJvYXJkRWZsLmNwcApA
QCAtMCwwICsxLDQwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIFNhbXN1bmcgRWxlY3Ry
b25pY3MKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBD
T1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcK
KyAqIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1
ZGUgIldLUGFzdGVib2FyZEVmbC5oIgorCisjaW5jbHVkZSAiV0tBUElDYXN0LmgiCisjaW5jbHVk
ZSAiV2ViUGFzdGVib2FyZFByb3h5RWZsLmgiCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CisK
K3ZvaWQgV0tQYXN0ZWJvYXJkU2V0Q2xpZW50KGNvbnN0IFdLUGFzdGVib2FyZENsaWVudEVmbCog
Y2xpZW50KQoreworICAgIGlmIChjbGllbnQgJiYgY2xpZW50LT52ZXJzaW9uKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBXZWJQYXN0ZWJvYXJkUHJveHlFZmw6OnNoYXJlZCgpLT5pbml0aWFsaXpl
Q2xpZW50KGNsaWVudCk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL0MvZWZsL1dLUGFzdGVib2FyZEVmbC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9DL2VmbC9XS1Bhc3RlYm9hcmRFZmwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwLi5mNGI5NGFmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9DL2VmbC9XS1Bhc3RlYm9hcmRFZmwuaApAQCAtMCwwICsxLDcwIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDEyIFNhbXN1bmcgRWxlY3Ryb25pY3MKKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJ
QlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9M
REVSIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcKKyAqIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2lmbmRlZiBXS1Bhc3RlYm9hcmRFZmxfaAorI2RlZmluZSBXS1Bhc3RlYm9hcmRFZmxfaAor
CisjaW5jbHVkZSA8V2ViS2l0Mi9XS0Jhc2UuaD4KKworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRl
cm4gIkMiIHsKKyNlbmRpZgorCisvLyBQYXN0ZWJvYXJkIHNlbGVjdGlvbiBmb3JtYXRzLgorZW51
bSB7CisgICAgV0tQYXN0ZWJvYXJkU2VsZWN0aW9uRm9ybWF0VW5rbm93biA9IDAsCisgICAgV0tQ
YXN0ZWJvYXJkU2VsZWN0aW9uRm9ybWF0VGV4dCA9IDEsCisgICAgV0tQYXN0ZWJvYXJkU2VsZWN0
aW9uRm9ybWF0TWFya3VwID0gMgorfTsKK3R5cGVkZWYgdWludDMyX3QgV0tQYXN0ZWJvYXJkU2Vs
ZWN0aW9uRm9ybWF0OworCisvLyBQYXN0ZWJvYXJkIHNlbGVjdGlvbiB0eXBlcy4KK2VudW0gewor
ICAgIFdLUGFzdGVib2FyZFNlbGVjdGlvblR5cGVVbmtub3duID0gMCwKKyAgICBXS1Bhc3RlYm9h
cmRTZWxlY3Rpb25UeXBlUHJpbWFyeSA9IDEsCisgICAgV0tQYXN0ZWJvYXJkU2VsZWN0aW9uVHlw
ZUNsaXBib2FyZCA9IDIKK307Cit0eXBlZGVmIHVpbnQzMl90IFdLUGFzdGVib2FyZFNlbGVjdGlv
blR5cGU7CisKK3R5cGVkZWYgV0tTdHJpbmdSZWYgKCpXS1Bhc3RlYm9hcmRHZXRTdHJpbmdDYWxs
YmFjaykoV0tQYXN0ZWJvYXJkU2VsZWN0aW9uRm9ybWF0IHNlbGVjdGlvbkZvcm1hdCwgV0tQYXN0
ZWJvYXJkU2VsZWN0aW9uVHlwZSBzZWxlY3Rpb25UeXBlLCBjb25zdCB2b2lkKiBjbGllbnRJbmZv
KTsKK3R5cGVkZWYgdm9pZCAoKldLUGFzdGVib2FyZFNldFN0cmluZ0NhbGxiYWNrKShXS1N0cmlu
Z1JlZiBzdHJpbmcsIFdLUGFzdGVib2FyZFNlbGVjdGlvbkZvcm1hdCBzZWxlY3Rpb25Gb3JtYXQs
IFdLUGFzdGVib2FyZFNlbGVjdGlvblR5cGUgc2VsZWN0aW9uVHlwZSwgY29uc3Qgdm9pZCogY2xp
ZW50SW5mbyk7CisKK3N0cnVjdCBXS1Bhc3RlYm9hcmRDbGllbnRFZmwgeworICAgIGludCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZXJzaW9uOworICAg
IGNvbnN0IHZvaWQqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGll
bnRJbmZvOworICAgIFdLUGFzdGVib2FyZEdldFN0cmluZ0NhbGxiYWNrICAgICAgICAgICAgICAg
ICAgICAgICBnZXRTdHJpbmc7CisgICAgV0tQYXN0ZWJvYXJkU2V0U3RyaW5nQ2FsbGJhY2sgICAg
ICAgICAgICAgICAgICAgICAgIHNldFN0cmluZzsKK307Cit0eXBlZGVmIHN0cnVjdCBXS1Bhc3Rl
Ym9hcmRDbGllbnRFZmwgV0tQYXN0ZWJvYXJkQ2xpZW50RWZsOworCitlbnVtIHsgV0tQYXN0ZWJv
YXJkQ2xpZW50RWZsQ3VycmVudFZlcnNpb24gPSAwIH07CisKK1dLX0VYUE9SVCB2b2lkIFdLUGFz
dGVib2FyZFNldENsaWVudChjb25zdCBXS1Bhc3RlYm9hcmRDbGllbnRFZmwqIGNsaWVudCk7CisK
KyNpZmRlZiBfX2NwbHVzcGx1cworfQorI2VuZGlmCisKKyNlbmRpZiAvKiBXS1Bhc3RlYm9hcmRF
ZmxfaCAqLwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRVdl
YktpdDIuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0VXZWJLaXQyLmgKaW5k
ZXggYjEyMjExMC4uZDZjNjA4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9lZmwvRVdlYktpdDIuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2Vm
bC9FV2ViS2l0Mi5oCkBAIC00OCw2ICs0OCw3IEBACiAjaW5jbHVkZSAiZXdrX25hdmlnYXRpb25f
ZGF0YS5oIgogI2luY2x1ZGUgImV3a19uYXZpZ2F0aW9uX3BvbGljeV9kZWNpc2lvbi5oIgogI2lu
Y2x1ZGUgImV3a19vYmplY3QuaCIKKyNpbmNsdWRlICJld2tfcGFzdGVib2FyZC5oIgogI2luY2x1
ZGUgImV3a19wb3B1cF9tZW51LmgiCiAjaW5jbHVkZSAiZXdrX3BvcHVwX21lbnVfaXRlbS5oIgog
I2luY2x1ZGUgImV3a19yZXNvdXJjZS5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9lZmwvZXdrX3Bhc3RlYm9hcmQuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9lZmwvZXdrX3Bhc3RlYm9hcmQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAuLmJiM2VkY2QKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2VmbC9ld2tfcGFzdGVib2FyZC5jcHAKQEAgLTAsMCArMSw4MSBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNzCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENP
TlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hU
IEhPTERFUiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HCisgKiBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJld2tfcGFzdGVib2FyZC5oIgor
CisjaW5jbHVkZSAiV0tBUElDYXN0LmgiCisjaW5jbHVkZSAiV0tQYXN0ZWJvYXJkRWZsLmgiCisj
aW5jbHVkZSAiV0tSZXRhaW5QdHIuaCIKKyNpbmNsdWRlICJXS1N0cmluZy5oIgorI2luY2x1ZGUg
ImV3a19wcml2YXRlLmgiCisjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgorCit1c2luZyBu
YW1lc3BhY2UgV2ViS2l0OworCitzdGF0aWMgRXdrX1Bhc3RlYm9hcmRfRGF0YV9TZXRfQ2IgZGF0
YVNldENhbGxiYWNrID0gMDsKK3N0YXRpYyBFd2tfUGFzdGVib2FyZF9EYXRhX0dldF9DYiBkYXRh
R2V0Q2FsbGJhY2sgPSAwOworCitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKEVXS19QQVNU
RUJPQVJEX1NFTEVDVElPTl9GT1JNQVRfVU5LTk9XTiwgV0tQYXN0ZWJvYXJkU2VsZWN0aW9uRm9y
bWF0VW5rbm93bik7CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKEVXS19QQVNURUJPQVJE
X1NFTEVDVElPTl9GT1JNQVRfVEVYVCwgV0tQYXN0ZWJvYXJkU2VsZWN0aW9uRm9ybWF0VGV4dCk7
CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKEVXS19QQVNURUJPQVJEX1NFTEVDVElPTl9G
T1JNQVRfSFRNTCwgV0tQYXN0ZWJvYXJkU2VsZWN0aW9uRm9ybWF0TWFya3VwKTsKK0NPTVBJTEVf
QVNTRVJUX01BVENISU5HX0VOVU0oRVdLX1BBU1RFQk9BUkRfU0VMRUNUSU9OX1RZUEVfVU5LTk9X
TiwgV0tQYXN0ZWJvYXJkU2VsZWN0aW9uVHlwZVVua25vd24pOworQ09NUElMRV9BU1NFUlRfTUFU
Q0hJTkdfRU5VTShFV0tfUEFTVEVCT0FSRF9TRUxFQ1RJT05fVFlQRV9QUklNQVJZLCBXS1Bhc3Rl
Ym9hcmRTZWxlY3Rpb25UeXBlUHJpbWFyeSk7CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVN
KEVXS19QQVNURUJPQVJEX1NFTEVDVElPTl9UWVBFX0NMSVBCT0FSRCwgV0tQYXN0ZWJvYXJkU2Vs
ZWN0aW9uVHlwZUNsaXBib2FyZCk7CisKK3N0YXRpYyB2b2lkIHNldERhdGEoV0tTdHJpbmdSZWYg
c3RyaW5nLCBXS1Bhc3RlYm9hcmRTZWxlY3Rpb25UeXBlIHNlbGVjdGlvbkZvcm1hdCwgV0tQYXN0
ZWJvYXJkU2VsZWN0aW9uVHlwZSBzZWxlY3Rpb25UeXBlLCBjb25zdCB2b2lkKiBjbGllbnRJbmZv
KQoreworICAgIGlmIChkYXRhU2V0Q2FsbGJhY2spCisgICAgICAgIGRhdGFTZXRDYWxsYmFjayh0
b0ltcGwoc3RyaW5nKS0+c3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgc3RhdGljX2Nhc3Q8RXdrX1Bh
c3RlYm9hcmRfU2VsZWN0aW9uX0Zvcm1hdD4oc2VsZWN0aW9uRm9ybWF0KSwKKyAgICAgICAgc3Rh
dGljX2Nhc3Q8RXdrX1Bhc3RlYm9hcmRfU2VsZWN0aW9uX1R5cGU+KHNlbGVjdGlvblR5cGUpLCBj
bGllbnRJbmZvKTsKK30KKworc3RhdGljIFdLU3RyaW5nUmVmIGdldERhdGEoV0tQYXN0ZWJvYXJk
U2VsZWN0aW9uVHlwZSBzZWxlY3Rpb25Gb3JtYXQsIFdLUGFzdGVib2FyZFNlbGVjdGlvblR5cGUg
c2VsZWN0aW9uVHlwZSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKK3sKKyAgICBpZiAoZGF0YUdl
dENhbGxiYWNrKQorICAgICAgICByZXR1cm4gV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmco
ZGF0YUdldENhbGxiYWNrKAorICAgICAgICBzdGF0aWNfY2FzdDxFd2tfUGFzdGVib2FyZF9TZWxl
Y3Rpb25fRm9ybWF0PihzZWxlY3Rpb25Gb3JtYXQpLCBzdGF0aWNfY2FzdDxFd2tfUGFzdGVib2Fy
ZF9TZWxlY3Rpb25fVHlwZT4oc2VsZWN0aW9uVHlwZSksIGNsaWVudEluZm8pKTsKKworICAgIHJl
dHVybiBXS1N0cmluZ1JlZigpOworfQorCit2b2lkIGV3a19wYXN0ZWJvYXJkX2luaXRpYWxpemUo
Y29uc3Qgdm9pZCogY2xpZW50SW5mbywgRXdrX1Bhc3RlYm9hcmRfRGF0YV9TZXRfQ2Igc2V0Q2Fs
bGJhY2ssIEV3a19QYXN0ZWJvYXJkX0RhdGFfR2V0X0NiIGdldENhbGxiYWNrKQoreworICAgIHN0
YXRpYyBib29sIGRpZEluaXRpYWxpemVQYXN0ZWJvYXJkQ2xpZW50ID0gZmFsc2U7CisgICAgaWYg
KGRpZEluaXRpYWxpemVQYXN0ZWJvYXJkQ2xpZW50KQorICAgICAgICByZXR1cm47CisKKyAgICBX
S1Bhc3RlYm9hcmRDbGllbnRFZmwgcGFzdGVib2FyZENsaWVudEVmbCA9IHsKKyAgICAgICAgV0tQ
YXN0ZWJvYXJkQ2xpZW50RWZsQ3VycmVudFZlcnNpb24sCisgICAgICAgIGNsaWVudEluZm8sCisg
ICAgICAgIGdldERhdGEsCisgICAgICAgIHNldERhdGEKKyAgICB9OworICAgIFdLUGFzdGVib2Fy
ZFNldENsaWVudCgmcGFzdGVib2FyZENsaWVudEVmbCk7CisKKyAgICBkaWRJbml0aWFsaXplUGFz
dGVib2FyZENsaWVudCA9IHRydWU7CisgICAgZGF0YVNldENhbGxiYWNrID0gc2V0Q2FsbGJhY2s7
CisgICAgZGF0YUdldENhbGxiYWNrID0gZ2V0Q2FsbGJhY2s7Cit9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfcGFzdGVib2FyZC5oIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3Bhc3RlYm9hcmQuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwLi42MTI0ZTljCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3Bhc3RlYm9hcmQuaApAQCAtMCwwICsxLDEwMiBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNzCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERF
UlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUg
Q09QWVJJR0hUIEhPTERFUiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HCisgKiBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMK
KyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKy8qKgorICogQGZpbGUgICAgZXdrX3Bhc3RlYm9hcmQuaAorICogQGJy
aWVmICAgRGVzY3JpYmVzIHRoZSBwYXN0ZWJvYXJkIEFQSS4KKyAqCisgKiBAbm90ZSBUaGUgZXdr
X3Bhc3RlYm9hcmQgcHJvdmlkZXMgcG9pbnRlcnMgdG8gZnVuY3Rpb24gd2hpY2ggY2FuIGJlIGlt
cGxlbWVudGVkIGJ5IGFuIGFwcGxpY2F0aW9uCisgKiB0byBzdXBwb3J0IGNvcHkgYW5kIHBhc3Rl
IG9wZXJhdGlvbnMgaW4gV2ViS2l0LgorICovCisKKyNpZm5kZWYgZXdrX3Bhc3RlYm9hcmRfaAor
I2RlZmluZSBld2tfcGFzdGVib2FyZF9oCisKKyNpbmNsdWRlIDxFdmFzLmg+CisKKyNpZmRlZiBf
X2NwbHVzcGx1cworZXh0ZXJuICJDIiB7CisjZW5kaWYKKworLyoqCisgKiBFbnVtIHZhbHVlcyB1
c2VkIHRvIHNldCBzZWxlY3Rpb24gZm9ybWF0cy4KKyAqLworZW51bSBFd2tfUGFzdGVib2FyZF9T
ZWxlY3Rpb25fRm9ybWF0IHsKKyAgICBFV0tfUEFTVEVCT0FSRF9TRUxFQ1RJT05fRk9STUFUX1VO
S05PV04sCisgICAgRVdLX1BBU1RFQk9BUkRfU0VMRUNUSU9OX0ZPUk1BVF9URVhULAorICAgIEVX
S19QQVNURUJPQVJEX1NFTEVDVElPTl9GT1JNQVRfSFRNTCwKK307CisKKy8qIENyZWF0ZXMgYSB0
eXBlIG5hbWUgZm9yIHRoZSBFd2tfUGFzdGVib2FyZF9TZWxlY3Rpb25fRm9ybWF0LiovCit0eXBl
ZGVmIGVudW0gRXdrX1Bhc3RlYm9hcmRfU2VsZWN0aW9uX0Zvcm1hdCBFd2tfUGFzdGVib2FyZF9T
ZWxlY3Rpb25fRm9ybWF0OworCisvKioKKyAqIEVudW0gdmFsdWVzIHVzZWQgdG8gc2V0IHNlbGVj
dGlvbiB0eXBlcy4KKyAqLworZW51bSBFd2tfUGFzdGVib2FyZF9TZWxlY3Rpb25fVHlwZSB7Cisg
ICAgRVdLX1BBU1RFQk9BUkRfU0VMRUNUSU9OX1RZUEVfVU5LTk9XTiwKKyAgICBFV0tfUEFTVEVC
T0FSRF9TRUxFQ1RJT05fVFlQRV9QUklNQVJZLAorICAgIEVXS19QQVNURUJPQVJEX1NFTEVDVElP
Tl9UWVBFX0NMSVBCT0FSRAorfTsKKworLyogQ3JlYXRlcyBhIHR5cGUgbmFtZSBmb3IgdGhlIEV3
a19QYXN0ZWJvYXJkX1NlbGVjdGlvbl9UeXBlLiovCit0eXBlZGVmIGVudW0gRXdrX1Bhc3RlYm9h
cmRfU2VsZWN0aW9uX1R5cGUgRXdrX1Bhc3RlYm9hcmRfU2VsZWN0aW9uX1R5cGU7CisKKy8qKgor
ICogRGVmaW5lcyBhIHR5cGUgbmFtZSBmb3IgdGhlIGNhbGxiYWNrIGZ1bmN0aW9uIHRvIHBlcmZv
cm0gY29weSBvcGVyYXRpb24gd2l0aCBnaXZlbiBkYXRhIHR5cGUuCisgKgorICogQHBhcmFtIGRh
dGEgZGF0YSB0byBiZSBjb3BpZWQKKyAqIEBwYXJhbSBmb3JtYXQgZm9ybWF0IG9mIGNvcGllZCBk
YXRhCisgKiBAcGFyYW0gdHlwZSB0eXBlIG9mIGNvcGllZCBkYXRhCisgKiBAcGFyYW0gY2xpZW50
X2luZm8gYXBwbGljYXRpb24gc3BlY2lmaWMgZGF0YQorICovCit0eXBlZGVmIHZvaWQgKCpFd2tf
UGFzdGVib2FyZF9EYXRhX1NldF9DYikoY29uc3QgY2hhciAqZGF0YSwgRXdrX1Bhc3RlYm9hcmRf
U2VsZWN0aW9uX0Zvcm1hdCBmb3JtYXQsIEV3a19QYXN0ZWJvYXJkX1NlbGVjdGlvbl9UeXBlIHR5
cGUsIGNvbnN0IHZvaWQgKmNsaWVudF9pbmZvKTsKKworLyoqCisgKiBEZWZpbmVzIGEgdHlwZSBu
YW1lIGZvciB0aGUgY2FsbGJhY2sgZnVuY3Rpb24gdG8gcmVxdWVzdCBmb3IgZGF0YSB3aXRoIGdp
dmVuIHR5cGUuCisgKgorICogVGhpcyBjYWxsYmFjayBzaG91bGQgcmV0dXJuIGRhdGEgZm9yIHJl
cXVlc3RlZCB0eXBlIGlmIHRoZXJlIGlzIGEgZGF0YSBpbiBjbGlwYm9hcmQgb3RoZXJ3aXNlIE5V
TEwgc2hvdWxkIGJlIHJldHVybmVkLgorICoKKyAqIEBwYXJhbSBmb3JtYXQgZm9ybWF0IG9mIHJl
cXVlc3RlZCBkYXRhCisgKiBAcGFyYW0gdHlwZSB0eXBlIG9mIHJlcXVlc3RlZCBkYXRhCisgKiBA
cGFyYW0gY2xpZW50X2luZm8gYXBwbGljYXRpb24gc3BlY2lmaWMgZGF0YQorICoKKyAqIEByZXR1
cm4gcmVxdWVzdGVkIGRhdGEgb24gc3VjY2VzcyBvciBAYyBOVUxMIG9uIGZhaWx1cmUKKyAqLwor
dHlwZWRlZiBjb25zdCBjaGFyICooKkV3a19QYXN0ZWJvYXJkX0RhdGFfR2V0X0NiKShFd2tfUGFz
dGVib2FyZF9TZWxlY3Rpb25fRm9ybWF0IGZvcm1hdCwgRXdrX1Bhc3RlYm9hcmRfU2VsZWN0aW9u
X1R5cGUgdHlwZSwgY29uc3Qgdm9pZCAqY2xpZW50X2luZm8pOworCisvKioKKyAqIEluaXRpYWxp
emVzIHBhc3RlYm9hcmQgY2FsbGJhY2tzLgorICoKKyAqIEBwYXJhbSBjbGllbnRfaW5mbyBhcHBs
aWNhdGlvbiBkYXRhIHBvaW50ZXIgdG8gYmUgZm9yIGNhbGxiYWNrIGZ1bmN0aW9ucworICogQHBh
cmFtIHNldF9jYiBzZXQgZGF0YSBjYWxsYmFjayB0byBiZSBzZXQgLSBpdCBtdXN0IG5vdCBiZSBA
YyBOVUxMCisgKiBAcGFyYW0gZ2V0X2NiIGdldCBkYXRhIGNhbGxiYWNrIHRvIGJlIHNldCAtIGl0
IG11c3Qgbm90IGJlIEBjIE5VTEwKKyAqLworRUFQSSB2b2lkIGV3a19wYXN0ZWJvYXJkX2luaXRp
YWxpemUoY29uc3Qgdm9pZCAqY2xpZW50X2luZm8sIEV3a19QYXN0ZWJvYXJkX0RhdGFfU2V0X0Ni
IHNldF9jYiwgRXdrX1Bhc3RlYm9hcmRfRGF0YV9HZXRfQ2IgZ2V0X2NiKTsKKworI2lmZGVmIF9f
Y3BsdXNwbHVzCit9CisjZW5kaWYKKyNlbmRpZiAvLyBld2tfcGFzdGVib2FyZF9oCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5oIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuaAppbmRleCBmYzkzYTA4Li5jZTE3NDNkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0LmgKQEAgLTI5OSw3ICsyOTksNiBAQCBwcml2YXRl
OgogI2lmIFBMQVRGT1JNKE1BQykKICAgICB2b2lkIGdldFBhc3RlYm9hcmRUeXBlcyhjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmROYW1lLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzKTsK
ICAgICB2b2lkIGdldFBhc3RlYm9hcmRQYXRobmFtZXNGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIFZlY3RvcjxTdHJpbmc+
JiBwYXRobmFtZXMpOwotICAgIHZvaWQgZ2V0UGFzdGVib2FyZFN0cmluZ0ZvclR5cGUoY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgU3Ry
aW5nJik7CiAgICAgdm9pZCBnZXRQYXN0ZWJvYXJkQnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBTaGFyZWRNZW1v
cnk6OkhhbmRsZSYsIHVpbnQ2NF90JiBzaXplKTsKICAgICB2b2lkIHBhc3RlYm9hcmRDb3B5KGNv
bnN0IFN0cmluZyYgZnJvbVBhc3RlYm9hcmQsIGNvbnN0IFN0cmluZyYgdG9QYXN0ZWJvYXJkKTsK
ICAgICB2b2lkIGdldFBhc3RlYm9hcmRDaGFuZ2VDb3VudChjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmROYW1lLCB1aW50NjRfdCYgY2hhbmdlQ291bnQpOwpAQCAtMzA5LDkgKzMwOCwxMiBAQCBwcml2
YXRlOgogICAgIHZvaWQgYWRkUGFzdGVib2FyZFR5cGVzKGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZE5hbWUsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMpOwogICAgIHZvaWQg
c2V0UGFzdGVib2FyZFR5cGVzKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFZl
Y3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMpOwogICAgIHZvaWQgc2V0UGFzdGVib2FyZFBh
dGhuYW1lc0ZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhdGhuYW1lcyk7Ci0gICAg
dm9pZCBzZXRQYXN0ZWJvYXJkU3RyaW5nRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmKTsKICAgICB2
b2lkIHNldFBhc3RlYm9hcmRCdWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFNoYXJlZE1lbW9yeTo6SGFu
ZGxlJiwgdWludDY0X3Qgc2l6ZSk7CiAjZW5kaWYKKyNpZiBQTEFURk9STShNQUMpIHx8IFBMQVRG
T1JNKEVGTCkKKyAgICB2b2lkIGdldFBhc3RlYm9hcmRTdHJpbmdGb3JUeXBlKGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIFN0cmluZyYp
OworICAgIHZvaWQgc2V0UGFzdGVib2FyZFN0cmluZ0ZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkTmFtZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJik7
CisjZW5kaWYKIAogI2lmICFQTEFURk9STShNQUMpCiAgICAgLy8gRklYTUU6IFRoaXMgYSBkdW1t
eSBtZXNzYWdlLCB0byBhdm9pZCBicmVha2luZyB0aGUgYnVpbGQgZm9yIHBsYXRmb3JtcyB0aGF0
IGRvbid0IHJlcXVpcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJD
b250ZXh0Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQu
bWVzc2FnZXMuaW4KaW5kZXggZjJlZGIxZC4uYTE3ZWRjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYkNvbnRleHQubWVzc2FnZXMuaW4KQEAgLTMyLDcgKzMyLDYgQEAgbWVz
c2FnZXMgLT4gV2ViQ29udGV4dCB7CiAgICAgCiAgICAgR2V0UGFzdGVib2FyZFR5cGVzKFdURjo6
U3RyaW5nIHBhc3RlYm9hcmROYW1lKSAtPiAoVmVjdG9yPFdURjo6U3RyaW5nPiB0eXBlcykKICAg
ICBHZXRQYXN0ZWJvYXJkUGF0aG5hbWVzRm9yVHlwZShXVEY6OlN0cmluZyBwYXN0ZWJvYXJkTmFt
ZSwgV1RGOjpTdHJpbmcgcGFzdGVib2FyZFR5cGUpIC0+IChWZWN0b3I8V1RGOjpTdHJpbmc+IHBh
dGhuYW1lcykKLSAgICBHZXRQYXN0ZWJvYXJkU3RyaW5nRm9yVHlwZShXVEY6OlN0cmluZyBwYXN0
ZWJvYXJkTmFtZSwgV1RGOjpTdHJpbmcgcGFzdGVib2FyZFR5cGUpIC0+IChXVEY6OlN0cmluZyBz
dHJpbmcpCiAgICAgR2V0UGFzdGVib2FyZEJ1ZmZlckZvclR5cGUoV1RGOjpTdHJpbmcgcGFzdGVi
b2FyZE5hbWUsIFdURjo6U3RyaW5nIHBhc3RlYm9hcmRUeXBlKSAtPiAoV2ViS2l0OjpTaGFyZWRN
ZW1vcnk6OkhhbmRsZSBoYW5kbGUsIHVpbnQ2NF90IHNpemUpCiAgICAgUGFzdGVib2FyZENvcHko
V1RGOjpTdHJpbmcgZnJvbVBhc3RlYm9hcmQsIFdURjo6U3RyaW5nIHRvUGFzdGVib2FyZCkKICAg
ICBHZXRQYXN0ZWJvYXJkQ2hhbmdlQ291bnQoV1RGOjpTdHJpbmcgcGFzdGVib2FyZE5hbWUpIC0+
ICh1aW50NjRfdCBjaGFuZ2VDb3VudCkKQEAgLTQyLDkgKzQxLDEzIEBAIG1lc3NhZ2VzIC0+IFdl
YkNvbnRleHQgewogICAgIEFkZFBhc3RlYm9hcmRUeXBlcyhXVEY6OlN0cmluZyBwYXN0ZWJvYXJk
TmFtZSwgVmVjdG9yPFdURjo6U3RyaW5nPiBwYXN0ZWJvYXJkVHlwZXMpCiAgICAgU2V0UGFzdGVi
b2FyZFR5cGVzKFdURjo6U3RyaW5nIHBhc3RlYm9hcmROYW1lLCBWZWN0b3I8V1RGOjpTdHJpbmc+
IHBhc3RlYm9hcmRUeXBlcykKICAgICBTZXRQYXN0ZWJvYXJkUGF0aG5hbWVzRm9yVHlwZShXVEY6
OlN0cmluZyBwYXN0ZWJvYXJkTmFtZSwgV1RGOjpTdHJpbmcgcGFzdGVib2FyZFR5cGUsIFZlY3Rv
cjxXVEY6OlN0cmluZz4gcGF0aG5hbWVzKQotICAgIFNldFBhc3RlYm9hcmRTdHJpbmdGb3JUeXBl
KFdURjo6U3RyaW5nIHBhc3RlYm9hcmROYW1lLCBXVEY6OlN0cmluZyBwYXN0ZWJvYXJkVHlwZSwg
V1RGOjpTdHJpbmcgc3RyaW5nKQogICAgIFNldFBhc3RlYm9hcmRCdWZmZXJGb3JUeXBlKFdURjo6
U3RyaW5nIHBhc3RlYm9hcmROYW1lLCBXVEY6OlN0cmluZyBwYXN0ZWJvYXJkVHlwZSwgV2ViS2l0
OjpTaGFyZWRNZW1vcnk6OkhhbmRsZSBoYW5kbGUsIHVpbnQ2NF90IHNpemUpCiAjZW5kaWYKKyNp
ZiBQTEFURk9STShNQUMpIHx8IFBMQVRGT1JNKEVGTCkKKyAgICBHZXRQYXN0ZWJvYXJkU3RyaW5n
Rm9yVHlwZShXVEY6OlN0cmluZyBwYXN0ZWJvYXJkTmFtZSwgV1RGOjpTdHJpbmcgcGFzdGVib2Fy
ZFR5cGUpIC0+IChXVEY6OlN0cmluZyBzdHJpbmcpCisgICAgU2V0UGFzdGVib2FyZFN0cmluZ0Zv
clR5cGUoV1RGOjpTdHJpbmcgcGFzdGVib2FyZE5hbWUsIFdURjo6U3RyaW5nIHBhc3RlYm9hcmRU
eXBlLCBXVEY6OlN0cmluZyBzdHJpbmcpCisjZW5kaWYKKwogCiAjaWYgIVBMQVRGT1JNKE1BQykK
ICAgICAvLyBGSVhNRTogVGhpcyBhIGR1bW15IG1lc3NhZ2UsIHRvIGF2b2lkIGJyZWFraW5nIHRo
ZSBidWlsZCBmb3IgcGxhdGZvcm1zIHRoYXQgZG9uJ3QgcmVxdWlyZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJDb250ZXh0RWZsLmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9lZmwvV2ViQ29udGV4dEVmbC5jcHAKaW5kZXggNjllYjY2Yi4uOWU0MGY5
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJDb250ZXh0RWZs
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYkNvbnRleHRFZmwuY3Bw
CkBAIC0yOSw2ICsyOSw3IEBACiAKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiV2Vi
SW5zcGVjdG9yU2VydmVyLmgiCisjaW5jbHVkZSAiV2ViUGFzdGVib2FyZFByb3h5RWZsLmgiCiAj
aW5jbHVkZSAiV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oIgogI2luY2x1ZGUgIldlYlBy
b2Nlc3NNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlNvdXBSZXF1ZXN0TWFuYWdlclByb3h5Lmgi
CkBAIC0xMzMsNCArMTM0LDE0IEBAIHZvaWQgV2ViQ29udGV4dDo6c2V0SWdub3JlVExTRXJyb3Jz
KGJvb2wgaWdub3JlVExTRXJyb3JzKQogICAgIHNlbmRUb0FsbFByb2Nlc3NlcyhNZXNzYWdlczo6
V2ViUHJvY2Vzczo6U2V0SWdub3JlVExTRXJyb3JzKG1faWdub3JlVExTRXJyb3JzKSk7CiB9CiAK
K3ZvaWQgV2ViQ29udGV4dDo6Z2V0UGFzdGVib2FyZFN0cmluZ0ZvclR5cGUoY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgU3RyaW5nJiBz
dHJpbmcpCit7CisgICAgc3RyaW5nID0gV2ViUGFzdGVib2FyZFByb3h5RWZsOjpzaGFyZWQoKS0+
Z2V0U3RyaW5nRm9yVHlwZShwYXN0ZWJvYXJkVHlwZSwgcGFzdGVib2FyZE5hbWUpOworfQorCit2
b2lkIFdlYkNvbnRleHQ6OnNldFBhc3RlYm9hcmRTdHJpbmdGb3JUeXBlKGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZE5hbWUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmlu
ZyYgc3RyaW5nKQoreworICAgIFdlYlBhc3RlYm9hcmRQcm94eUVmbDo6c2hhcmVkKCktPnNldFN0
cmluZ0ZvclR5cGUoc3RyaW5nLCBwYXN0ZWJvYXJkVHlwZSwgcGFzdGVib2FyZE5hbWUpOworfQor
CiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9lZmwvV2ViUGFzdGVib2FyZENsaWVudEVmbC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvZWZsL1dlYlBhc3RlYm9hcmRDbGllbnRFZmwuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAuLmUyZTI5NmUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvZWZsL1dlYlBhc3RlYm9hcmRDbGllbnRFZmwuY3BwCkBAIC0wLDAgKzEsNzIg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgU2Ftc3VuZyBFbGVjdHJvbmljcworICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xE
RVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhF
IENPUFlSSUdIVCBIT0xERVIgT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORworICogTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
CisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViUGFzdGVi
b2FyZENsaWVudEVmbC5oIgorCisjaW5jbHVkZSAiV0tBUElDYXN0LmgiCisjaW5jbHVkZSA8V2Vi
Q29yZS9QYXN0ZWJvYXJkLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitzdGF0aWMgV0tQYXN0
ZWJvYXJkU2VsZWN0aW9uRm9ybWF0IGdldFNlbGVjdGlvbkZvcm1hdEZyb21TdHJpbmcoY29uc3Qg
U3RyaW5nJiBzZWxlY3Rpb25Gb3JtYXQpCit7CisgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKHNl
bGVjdGlvbkZvcm1hdCwgV2ViQ29yZTo6c2VsZWN0aW9uRm9ybWF0VGV4dCkpCisgICAgICAgIHJl
dHVybiBXS1Bhc3RlYm9hcmRTZWxlY3Rpb25Gb3JtYXRUZXh0OworCisgICAgaWYgKGVxdWFsSWdu
b3JpbmdDYXNlKHNlbGVjdGlvbkZvcm1hdCwgV2ViQ29yZTo6c2VsZWN0aW9uRm9ybWF0TWFya3Vw
KSkKKyAgICAgICAgcmV0dXJuIFdLUGFzdGVib2FyZFNlbGVjdGlvbkZvcm1hdE1hcmt1cDsKKwor
ICAgIHJldHVybiBXS1Bhc3RlYm9hcmRTZWxlY3Rpb25Gb3JtYXRVbmtub3duOworfQorCitzdGF0
aWMgV0tQYXN0ZWJvYXJkU2VsZWN0aW9uVHlwZSBnZXRTZWxlY3Rpb25UeXBlRnJvbVN0cmluZyhj
b25zdCBTdHJpbmcmIHNlbGVjdGlvblR5cGUpCit7CisgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNl
KHNlbGVjdGlvblR5cGUsIFdlYkNvcmU6OnNlbGVjdGlvblR5cGVQcmltYXJ5KSkKKyAgICAgICAg
cmV0dXJuIFdLUGFzdGVib2FyZFNlbGVjdGlvblR5cGVQcmltYXJ5OworCisgICAgaWYgKGVxdWFs
SWdub3JpbmdDYXNlKHNlbGVjdGlvblR5cGUsIFdlYkNvcmU6OnNlbGVjdGlvblR5cGVDbGlwYm9h
cmQpKQorICAgICAgICByZXR1cm4gV0tQYXN0ZWJvYXJkU2VsZWN0aW9uVHlwZUNsaXBib2FyZDsK
KworICAgIHJldHVybiBXS1Bhc3RlYm9hcmRTZWxlY3Rpb25UeXBlVW5rbm93bjsKK30KKworU3Ry
aW5nIFdlYlBhc3RlYm9hcmRDbGllbnRFZmw6OmdldFN0cmluZyhjb25zdCBTdHJpbmcmIHNlbGVj
dGlvbkZvcm1hdCwgY29uc3QgU3RyaW5nJiBzZWxlY3Rpb25UeXBlKQoreworICAgIGlmICghbV9j
bGllbnQuZ2V0U3RyaW5nKQorICAgICAgICByZXR1cm4gU3RyaW5nKCk7CisKKyAgICByZXR1cm4g
dG9JbXBsKG1fY2xpZW50LmdldFN0cmluZyhnZXRTZWxlY3Rpb25Gb3JtYXRGcm9tU3RyaW5nKHNl
bGVjdGlvbkZvcm1hdCksIGdldFNlbGVjdGlvblR5cGVGcm9tU3RyaW5nKHNlbGVjdGlvblR5cGUp
LCBtX2NsaWVudC5jbGllbnRJbmZvKSktPnN0cmluZygpOworfQorCit2b2lkIFdlYlBhc3RlYm9h
cmRDbGllbnRFZmw6OnNldFN0cmluZyhjb25zdCBTdHJpbmcmIHN0cmluZywgY29uc3QgU3RyaW5n
JiBzZWxlY3Rpb25Gb3JtYXQsIGNvbnN0IFN0cmluZyYgc2VsZWN0aW9uVHlwZSkKK3sKKyAgICBp
ZiAoIW1fY2xpZW50LnNldFN0cmluZykKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9jbGllbnQu
c2V0U3RyaW5nKHRvQVBJKHN0cmluZy5pbXBsKCkpLCBnZXRTZWxlY3Rpb25Gb3JtYXRGcm9tU3Ry
aW5nKHNlbGVjdGlvbkZvcm1hdCksIGdldFNlbGVjdGlvblR5cGVGcm9tU3RyaW5nKHNlbGVjdGlv
blR5cGUpLCBtX2NsaWVudC5jbGllbnRJbmZvKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlBhc3RlYm9hcmRD
bGllbnRFZmwuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViUGFzdGVib2FyZENs
aWVudEVmbC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFkNTJjNGIKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlBhc3RlYm9h
cmRDbGllbnRFZmwuaApAQCAtMCwwICsxLDQzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEy
IFNhbXN1bmcgRWxlY3Ryb25pY3MKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMg
SVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcKKyAqIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJQ
YXN0ZWJvYXJkQ2xpZW50RWZsX2gKKyNkZWZpbmUgV2ViUGFzdGVib2FyZENsaWVudEVmbF9oCisK
KyNpbmNsdWRlICJBUElDbGllbnQuaCIKKyNpbmNsdWRlICJXS1Bhc3RlYm9hcmRFZmwuaCIKKyNp
bmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2Vi
UGFzdGVib2FyZENsaWVudEVmbCA6IHB1YmxpYyBBUElDbGllbnQ8V0tQYXN0ZWJvYXJkQ2xpZW50
RWZsLCBXS1Bhc3RlYm9hcmRDbGllbnRFZmxDdXJyZW50VmVyc2lvbj4geworcHVibGljOgorICAg
IFN0cmluZyBnZXRTdHJpbmcoY29uc3QgU3RyaW5nJiBzZWxlY3Rpb25Gb3JtYXQsIGNvbnN0IFN0
cmluZyYgc2VsZWN0aW9uVHlwZSk7CisgICAgdm9pZCBzZXRTdHJpbmcoY29uc3QgU3RyaW5nJiwg
Y29uc3QgU3RyaW5nJiBzZWxlY3Rpb25Gb3JtYXQsIGNvbnN0IFN0cmluZyYgc2VsZWN0aW9uVHlw
ZSk7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIFdlYlBhc3RlYm9h
cmRDbGllbnRFZmxfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9X
ZWJQYXN0ZWJvYXJkUHJveHlFZmwuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9X
ZWJQYXN0ZWJvYXJkUHJveHlFZmwuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAuLjJhYjcxYmUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
ZWZsL1dlYlBhc3RlYm9hcmRQcm94eUVmbC5jcHAKQEAgLTAsMCArMSw1OSBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNzCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRS
SUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhP
TERFUiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HCisgKiBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJQYXN0ZWJvYXJkUHJveHlFZmwu
aCIKKworI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KKyNpbmNsdWRlIDx3dGYv
dGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK1dlYlBhc3RlYm9hcmRQ
cm94eUVmbCogV2ViUGFzdGVib2FyZFByb3h5RWZsOjpzaGFyZWQoKQoreworICAgIHN0YXRpYyBX
ZWJQYXN0ZWJvYXJkUHJveHlFZmwqIHBhc3RlYm9hcmRQcm94eUVmbCA9IGFkb3B0UmVmKG5ldyBX
ZWJQYXN0ZWJvYXJkUHJveHlFZmwpLmxlYWtSZWYoKTsKKyAgICByZXR1cm4gcGFzdGVib2FyZFBy
b3h5RWZsOworfQorCitXZWJQYXN0ZWJvYXJkUHJveHlFZmw6OldlYlBhc3RlYm9hcmRQcm94eUVm
bCgpCit7Cit9CisKK3ZvaWQgV2ViUGFzdGVib2FyZFByb3h5RWZsOjppbml0aWFsaXplQ2xpZW50
KGNvbnN0IFdLUGFzdGVib2FyZENsaWVudEVmbCogY2xpZW50KQoreworICAgIG1fY2xpZW50Lmlu
aXRpYWxpemUoY2xpZW50KTsKK30KKworU3RyaW5nIFdlYlBhc3RlYm9hcmRQcm94eUVmbDo6Z2V0
U3RyaW5nRm9yVHlwZShjb25zdCBTdHJpbmcmIHNlbGVjdGlvbkZvcm1hdCwgY29uc3QgU3RyaW5n
JiBzZWxlY3Rpb25UeXBlKQoreworICAgIHJldHVybiBtX2NsaWVudC5nZXRTdHJpbmcoc2VsZWN0
aW9uRm9ybWF0LCBzZWxlY3Rpb25UeXBlKTsKK30KKwordm9pZCBXZWJQYXN0ZWJvYXJkUHJveHlF
Zmw6OnNldFN0cmluZ0ZvclR5cGUoY29uc3QgU3RyaW5nJiBzdHJpbmcsIGNvbnN0IFN0cmluZyYg
c2VsZWN0aW9uRm9ybWF0LCBjb25zdCBTdHJpbmcmIHNlbGVjdGlvblR5cGUpCit7CisgICAgbV9j
bGllbnQuc2V0U3RyaW5nKHN0cmluZywgc2VsZWN0aW9uRm9ybWF0LCBzZWxlY3Rpb25UeXBlKTsK
K30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvZWZsL1dlYlBhc3RlYm9hcmRQcm94eUVmbC5oIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL2VmbC9XZWJQYXN0ZWJvYXJkUHJveHlFZmwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwLi4wNmYyMGFhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL2VmbC9XZWJQYXN0ZWJvYXJkUHJveHlFZmwuaApAQCAtMCwwICsxLDU5IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDEyIFNhbXN1bmcgRWxlY3Ryb25pY3MKKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBB
TkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZ
UklHSFQgSE9MREVSIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcKKyAqIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICog
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2lmbmRlZiBXZWJQYXN0ZWJvYXJkUHJveHlFZmxfaAorI2RlZmluZSBXZWJQ
YXN0ZWJvYXJkUHJveHlFZmxfaAorCisjaW5jbHVkZSAiQVBJT2JqZWN0LmgiCisKKyNpbmNsdWRl
ICJXZWJQYXN0ZWJvYXJkQ2xpZW50RWZsLmgiCisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4K
KyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBX
ZWJQYXN0ZWJvYXJkUHJveHlFZmwgOiBwdWJsaWMgQVBJT2JqZWN0IHsKK3B1YmxpYzoKKyAgICBz
dGF0aWMgY29uc3QgVHlwZSBBUElUeXBlID0gVHlwZVBhc3RlYm9hcmRQcm94eTsKKworICAgIHN0
YXRpYyBXZWJQYXN0ZWJvYXJkUHJveHlFZmwqIHNoYXJlZCgpOworCisgICAgdm9pZCBpbml0aWFs
aXplQ2xpZW50KGNvbnN0IFdLUGFzdGVib2FyZENsaWVudEVmbCopOworICAgIFdlYlBhc3RlYm9h
cmRDbGllbnRFZmwmIGNsaWVudCgpIHsgcmV0dXJuIG1fY2xpZW50OyB9CisKKyAgICBTdHJpbmcg
Z2V0U3RyaW5nRm9yVHlwZShjb25zdCBTdHJpbmcmIHNlbGVjdGlvbkZvcm1hdCwgY29uc3QgU3Ry
aW5nJiBzZWxlY3Rpb25UeXBlKTsKKyAgICB2b2lkIHNldFN0cmluZ0ZvclR5cGUoY29uc3QgU3Ry
aW5nJiwgY29uc3QgU3RyaW5nJiBzZWxlY3Rpb25Gb3JtYXQsIGNvbnN0IFN0cmluZyYgc2VsZWN0
aW9uVHlwZSk7CisKK3ByaXZhdGU6CisgICAgV2ViUGFzdGVib2FyZFByb3h5RWZsKCk7CisKKyAg
ICB2aXJ0dWFsIFR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIEFQSVR5cGU7IH0KKworICAgIFdl
YlBhc3RlYm9hcmRDbGllbnRFZmwgbV9jbGllbnQ7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKKworI2VuZGlmIC8vIFdlYlBhc3RlYm9hcmRQcm94eUVmbF9oCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVu
dC5jcHAKaW5kZXggYzZjYzljMi4uZTRjNGFkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcApA
QCAtNTEsNiArNTEsOCBAQAogI2lmIFBMQVRGT1JNKFFUKQogI2luY2x1ZGUgPFFDbGlwYm9hcmQ+
CiAjaW5jbHVkZSA8UUd1aUFwcGxpY2F0aW9uPgorI2VuZGlmCisjaWYgUExBVEZPUk0oUVQpIHx8
IFBMQVRGT1JNKEVGTCkKICNpbmNsdWRlIDxXZWJDb3JlL1Bhc3RlYm9hcmQuaD4KICNlbmRpZgog
CkBAIC0xOTMsMTIgKzE5NSwxMiBAQCB2b2lkIFdlYkVkaXRvckNsaWVudDo6cmVzcG9uZFRvQ2hh
bmdlZFNlbGVjdGlvbihGcmFtZSogZnJhbWUpCiAKICAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6
OldlYlBhZ2VQcm94eTo6RWRpdG9yU3RhdGVDaGFuZ2VkKHN0YXRlKSk7CiAKLSNpZiBQTEFURk9S
TShHVEspIHx8IFBMQVRGT1JNKFFUKQorI2lmIFBMQVRGT1JNKEdUSykgfHwgUExBVEZPUk0oUVQp
IHx8IFBMQVRGT1JNKEVGTCkKICAgICB1cGRhdGVHbG9iYWxTZWxlY3Rpb24oZnJhbWUpOwogI2Vu
ZGlmCiB9CiAKLSNpZiBQTEFURk9STShRVCkKKyNpZiBQTEFURk9STShRVCkgfHwgUExBVEZPUk0o
RUZMKQogLy8gRklYTUU6IFVzZSB0aGlzIGZ1bmN0aW9uIGZvciBvdGhlciBYMTEtYmFzZWQgcGxh
dGZvcm1zIHRoYXQgbmVlZCB0byBtYW51YWxseSB1cGRhdGUgdGhlIGdsb2JhbCBzZWxlY3Rpb24u
CiB2b2lkIFdlYkVkaXRvckNsaWVudDo6dXBkYXRlR2xvYmFsU2VsZWN0aW9uKEZyYW1lKiBmcmFt
ZSkKIHsKQEAgLTQ4Miw3ICs0ODQsNyBAQCBib29sIFdlYkVkaXRvckNsaWVudDo6c3VwcG9ydHNH
bG9iYWxTZWxlY3Rpb24oKQogewogI2lmIFBMQVRGT1JNKFFUKSAmJiAhZGVmaW5lZChRVF9OT19D
TElQQk9BUkQpCiAgICAgcmV0dXJuIHFBcHAtPmNsaXBib2FyZCgpLT5zdXBwb3J0c1NlbGVjdGlv
bigpOwotI2VsaWYgUExBVEZPUk0oR1RLKSAmJiBQTEFURk9STShYMTEpCisjZWxpZiBQTEFURk9S
TShHVEspICYmIFBMQVRGT1JNKFgxMSkgfHwgUExBVEZPUk0oRUZMKQogICAgIHJldHVybiB0cnVl
OwogI2Vsc2UKICAgICAvLyBGSVhNRTogUmV0dXJuIHRydWUgb24gb3RoZXIgWDExIHBsYXRmb3Jt
cyB3aGVuIHRoZXkgc3VwcG9ydCBnbG9iYWwgc2VsZWN0aW9uLgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaCBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgK
aW5kZXggNjRmNGExYi4uNjQ0ZjRhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCkBAIC0xMjUsNyAr
MTI1LDcgQEAgcHJpdmF0ZToKICAgICBib29sIGV4ZWN1dGVQZW5kaW5nRWRpdG9yQ29tbWFuZHMo
V2ViQ29yZTo6RnJhbWUqLCBWZWN0b3I8V1RGOjpTdHJpbmc+LCBib29sKSBPVkVSUklERTsKICAg
ICB2b2lkIGdldEVkaXRvckNvbW1hbmRzRm9yS2V5RXZlbnQoY29uc3QgV2ViQ29yZTo6S2V5Ym9h
cmRFdmVudCosIFZlY3RvcjxXVEY6OlN0cmluZz4mKSBPVkVSUklERTsKICNlbmRpZgotI2lmIFBM
QVRGT1JNKEdUSykgfHwgUExBVEZPUk0oUVQpCisjaWYgUExBVEZPUk0oR1RLKSB8fCBQTEFURk9S
TShRVCkgfHwgUExBVEZPUk0oRUZMKQogICAgIHZvaWQgdXBkYXRlR2xvYmFsU2VsZWN0aW9uKFdl
YkNvcmU6OkZyYW1lKik7CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMu
Y3BwCmluZGV4IDlkYzQ4YzUuLjA0YTY0NDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRl
Z2llcy5jcHAKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJXZWJDb250ZXh0TWVzc2FnZXMu
aCIKICNpbmNsdWRlICJXZWJDb29raWVNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiV2ViQ29yZUFyZ3Vt
ZW50Q29kZXJzLmgiCisjaW5jbHVkZSAiV2ViUGFnZVByb3h5TWVzc2FnZXMuaCIKICNpbmNsdWRl
ICJXZWJQcm9jZXNzLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Byb3h5TWVzc2FnZXMuaCIKICNp
bmNsdWRlIDxXZWJDb3JlL0NvbG9yLmg+CkBAIC0zMDYsMTQgKzMwNyw2IEBAIHZvaWQgV2ViUGxh
dGZvcm1TdHJhdGVnaWVzOjpnZXRQYXRobmFtZXNGb3JUeXBlKFZlY3RvcjxTdHJpbmc+JiBwYXRo
bmFtZXMsIGNvbnN0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBNZXNzYWdlczo6V2ViQ29udGV4dDo6R2V0UGFzdGVib2FyZFBhdGhuYW1lc0ZvclR5cGU6
OlJlcGx5KHBhdGhuYW1lcyksIDApOwogfQogCi1TdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVz
OjpzdHJpbmdGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZE5hbWUpCi17Ci0gICAgU3RyaW5nIHZhbHVlOwotICAgIFdlYlByb2Nlc3M6
OnNoYXJlZCgpLmNvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYkNvbnRleHQ6Okdl
dFBhc3RlYm9hcmRTdHJpbmdGb3JUeXBlKHBhc3RlYm9hcmROYW1lLCBwYXN0ZWJvYXJkVHlwZSks
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdl
czo6V2ViQ29udGV4dDo6R2V0UGFzdGVib2FyZFN0cmluZ0ZvclR5cGU6OlJlcGx5KHZhbHVlKSwg
MCk7Ci0gICAgcmV0dXJuIHZhbHVlOwotfQotCiB2b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6
Y29weShjb25zdCBTdHJpbmcmIGZyb21QYXN0ZWJvYXJkLCBjb25zdCBTdHJpbmcmIHRvUGFzdGVi
b2FyZCkKIHsKICAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5jb25uZWN0aW9uKCktPnNlbmQoTWVz
c2FnZXM6OldlYkNvbnRleHQ6OlBhc3RlYm9hcmRDb3B5KGZyb21QYXN0ZWJvYXJkLCB0b1Bhc3Rl
Ym9hcmQpLCAwKTsKQEAgLTM3Niw2ICszNjksMTYgQEAgdm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXM6OnNldFBhdGhuYW1lc0ZvclR5cGUoY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhdGhuYW1lcywK
IHsKICAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5jb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6
OldlYkNvbnRleHQ6OlNldFBhc3RlYm9hcmRQYXRobmFtZXNGb3JUeXBlKHBhc3RlYm9hcmROYW1l
LCBwYXN0ZWJvYXJkVHlwZSwgcGF0aG5hbWVzKSwgMCk7CiB9CisjZW5kaWYKKyNpZiBQTEFURk9S
TShNQUMpIHx8IFBMQVRGT1JNKEVGTCkKK1N0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnN0
cmluZ0ZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSkKK3sKKyAgICBTdHJpbmcgdmFsdWU7CisgICAgV2ViUHJvY2Vzczo6c2hh
cmVkKCkuY29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViQ29udGV4dDo6R2V0UGFz
dGVib2FyZFN0cmluZ0ZvclR5cGUocGFzdGVib2FyZE5hbWUsIHBhc3RlYm9hcmRUeXBlKSwKKyAg
ICAgICAgTWVzc2FnZXM6OldlYkNvbnRleHQ6OkdldFBhc3RlYm9hcmRTdHJpbmdGb3JUeXBlOjpS
ZXBseSh2YWx1ZSksIDApOworCisgICAgcmV0dXJuIHZhbHVlOworfQogCiB2b2lkIFdlYlBsYXRm
b3JtU3RyYXRlZ2llczo6c2V0U3RyaW5nRm9yVHlwZShjb25zdCBTdHJpbmcmIHN0cmluZywgY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkK
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViUGxhdGZvcm1TdHJhdGVnaWVzLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCmluZGV4IGNjMGRjOGMuLmMzMWQ2ZjUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
UGxhdGZvcm1TdHJhdGVnaWVzLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaApAQCAtODYsNyArODYsNiBAQCBwcml2
YXRlOgogICAgIHZpcnR1YWwgdm9pZCBnZXRUeXBlcyhWZWN0b3I8U3RyaW5nPiYgdHlwZXMsIGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgUGFzc1Jl
ZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgT1ZFUlJJREU7CiAg
ICAgdmlydHVhbCB2b2lkIGdldFBhdGhuYW1lc0ZvclR5cGUoVmVjdG9yPFN0cmluZz4mIHBhdGhu
YW1lcywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkTmFtZSkgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCBTdHJpbmcgc3RyaW5nRm9yVHlwZShjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBP
VkVSUklERTsKICAgICB2aXJ0dWFsIGludCBjaGFuZ2VDb3VudChjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIFN0cmluZyB1bmlxdWVOYW1lKCkgT1ZF
UlJJREU7CiAgICAgdmlydHVhbCBXZWJDb3JlOjpDb2xvciBjb2xvcihjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lKSBPVkVSUklERTsKQEAgLTk3LDYgKzk2LDkgQEAgcHJpdmF0ZToKICAgICB2
aXJ0dWFsIHZvaWQgc2V0VHlwZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBl
cywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2
b2lkIHNldEJ1ZmZlckZvclR5cGUoUGFzc1JlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+LCBj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
KSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0UGF0aG5hbWVzRm9yVHlwZShjb25zdCBW
ZWN0b3I8U3RyaW5nPiYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZE5hbWUpIE9WRVJSSURFOworI2VuZGlmCisjaWYgUExBVEZPUk0oTUFDKSB8
fCBQTEFURk9STShFRkwpCisgICAgdmlydHVhbCBTdHJpbmcgc3RyaW5nRm9yVHlwZShjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBPVkVS
UklERTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0U3RyaW5nRm9yVHlwZShjb25zdCBTdHJpbmcmLCBj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
KSBPVkVSUklERTsKICNlbmRpZgogCg==
</data>
<flag name="review"
          id="199733"
          type_id="1"
          status="-"
          setter="benjamin"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>182731</attachid>
            <date>2013-01-15 03:26:25 -0800</date>
            <delta_ts>2013-01-15 07:20:04 -0800</delta_ts>
            <desc>fixes after review</desc>
            <filename>pasteboard6.diff</filename>
            <type>text/plain</type>
            <size>52568</size>
            <attacher name="Michal Pakula vel Rutka">mpakulavelrutka</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBjODA4NjE4Li44ZDkxNTg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzIg
QEAKKzIwMTMtMDEtMTUgIE1pY2hhxYIgUGFrdcWCYSB2ZWwgUnV0a2EgIDxtLnBha3VsYUBzYW1z
dW5nLmNvbT4KKworICAgICAgICBbRUZMXVtXSzJdIEltcGxlbWVudGF0aW9uIG9mIHBhc3RlYm9h
cmQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMjQ4
NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEVGTCBk
b2VzIG5vdCBwcm92aWRlIHBsYXRmb3JtLXdpZGUgY29weSBhbmQgcGFzdGUgc3VwcG9ydCwgYnV0
IGFuIEFQSSBpbiBVSSB0b29sa2l0IC0gRWxlbWVudGFyeS4KKyAgICAgICAgV2ViS2l0IEVGTCBz
aG91bGQgYmUgZWxlbWVudGFyeSBpbmRlcGVuZGVudCwgYWxzbyBFbGVtZW50YXJ5IGNvcHkgYW5k
IHBhc3RlIEFQSSBuZWVkcyBhIFVJIHdpZGdldAorICAgICAgICBhcyBvbmUgb2YgaXRzIGFyZ3Vt
ZW50LiBUaHVzLCB3ZSBjYW5ub3QgaW1wbGVtZW50IHBhc3RlYm9hcmQgaW5zaWRlIFdlYkNvcmUg
bGlrZSBvdGhlciBwb3J0cywKKyAgICAgICAgYnV0IHRoZSBpbXBsZW1lbnRhdGlvbiBoYXMgdG8g
YmUgZG9uZSBvbiBhcHBsaWNhdGlvbiBzaWRlLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyAtIGFs
cmVhZHkgY292ZXJlZCBieSBleGlzdGluZyB0ZXN0cy4KKworICAgICAgICAqIHBsYXRmb3JtL1Bh
c3RlYm9hcmQuaDoKKyAgICAgICAgKFBhc3RlYm9hcmQpOgorICAgICAgICAqIHBsYXRmb3JtL1Bh
c3RlYm9hcmRTdHJhdGVneS5oOgorICAgICAgICAoUGFzdGVib2FyZFN0cmF0ZWd5KToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9lZmwvUGFzdGVib2FyZEVmbC5jcHA6CisgICAgICAgIChXZWJDb3JlKToK
KyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OlBhc3RlYm9hcmQpOgorICAgICAgICAoV2Vi
Q29yZTo6UGFzdGVib2FyZDo6d3JpdGVQbGFpblRleHQpOgorICAgICAgICAoV2ViQ29yZTo6UGFz
dGVib2FyZDo6d3JpdGVTZWxlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6
d3JpdGVVUkwpOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6ZG9jdW1lbnRGcmFnbWVu
dCk6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjpwbGFpblRleHQpOgorICAgICAgICAo
V2ViQ29yZTo6UGFzdGVib2FyZDo6aXNTZWxlY3Rpb25Nb2RlKToKKyAgICAgICAgKFdlYkNvcmU6
OlBhc3RlYm9hcmQ6OnNldFNlbGVjdGlvbk1vZGUpOgorCiAyMDEyLTEyLTI4ICBWc2V2b2xvZCBW
bGFzb3YgIDx2c2V2aWtAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IFN1
cHBvcnQgaW5zcGVjdG9yIGZpbGUgc3lzdGVtIGFjY2VzcyB3aXRoIGlzb2xhdGVkIGZpbGUgc3lz
dGVtIHRocm91Z2ggSW5zcGVjdG9yRnJvbnRlbmRIb3N0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFz
dGVib2FyZC5oCmluZGV4IDQwMjJhNjEuLjYxM2VkZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Q
YXN0ZWJvYXJkLmgKQEAgLTEwMCw3ICsxMDAsNyBAQCBwdWJsaWM6CiAgICAgUGFzc1JlZlB0cjxE
b2N1bWVudEZyYWdtZW50PiBkb2N1bWVudEZyYWdtZW50KEZyYW1lKiwgUGFzc1JlZlB0cjxSYW5n
ZT4sIGJvb2wgYWxsb3dQbGFpblRleHQsIGJvb2wmIGNob3NlUGxhaW5UZXh0KTsKICAgICBTdHJp
bmcgcGxhaW5UZXh0KEZyYW1lKiA9IDApOwogICAgIAotI2lmIFBMQVRGT1JNKFFUKSB8fCBQTEFU
Rk9STShDSFJPTUlVTSkgfHwgUExBVEZPUk0oR1RLKQorI2lmIFBMQVRGT1JNKFFUKSB8fCBQTEFU
Rk9STShDSFJPTUlVTSkgfHwgUExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShFRkwpCiAgICAgYm9v
bCBpc1NlbGVjdGlvbk1vZGUoKSBjb25zdDsKICAgICB2b2lkIHNldFNlbGVjdGlvbk1vZGUoYm9v
bCk7CiAjZWxzZQpAQCAtMTEyLDYgKzExMiwxMyBAQCBwdWJsaWM6CiAgICAgflBhc3RlYm9hcmQo
KTsKICNlbmRpZgogCisjaWYgUExBVEZPUk0oRUZMKQorICAgIHN0YXRpYyBjb25zdCBjaGFyKiBj
b25zdCBzZWxlY3Rpb25Gb3JtYXRUZXh0OworICAgIHN0YXRpYyBjb25zdCBjaGFyKiBjb25zdCBz
ZWxlY3Rpb25Gb3JtYXRNYXJrdXA7CisgICAgc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IHNlbGVj
dGlvblR5cGVQcmltYXJ5OworICAgIHN0YXRpYyBjb25zdCBjaGFyKiBjb25zdCBzZWxlY3Rpb25U
eXBlQ2xpcGJvYXJkOworI2VuZGlmCisKIHByaXZhdGU6CiAgICAgUGFzdGVib2FyZCgpOwogCkBA
IC0xMjMsNyArMTMwLDcgQEAgcHJpdmF0ZToKICAgICBIV05EIG1fb3duZXI7CiAjZW5kaWYKIAot
I2lmIFBMQVRGT1JNKFFUKSB8fCBQTEFURk9STShDSFJPTUlVTSkKKyNpZiBQTEFURk9STShRVCkg
fHwgUExBVEZPUk0oQ0hST01JVU0pIHx8IFBMQVRGT1JNKEVGTCkKICAgICBib29sIG1fc2VsZWN0
aW9uTW9kZTsKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Q
YXN0ZWJvYXJkU3RyYXRlZ3kuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRT
dHJhdGVneS5oCmluZGV4IGY5MjJjNjYuLmQ5MDY5MjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRTdHJhdGVneS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1Bhc3RlYm9hcmRTdHJhdGVneS5oCkBAIC00NCw3ICs0NCw2IEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIHZvaWQgZ2V0VHlwZXMoVmVjdG9yPFN0cmluZz4mIHR5cGVzLCBjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lKSA9IDA7CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gYnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmROYW1lKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGdldFBhdGhuYW1l
c0ZvclR5cGUoVmVjdG9yPFN0cmluZz4mIHBhdGhuYW1lcywgY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgPSAwOwotICAgIHZpcnR1YWwg
U3RyaW5nIHN0cmluZ0ZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgPSAwOwogICAgIHZpcnR1YWwgaW50IGNoYW5nZUNvdW50
KGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpID0gMDsKICAgICB2aXJ0dWFsIFN0cmluZyB1
bmlxdWVOYW1lKCkgPSAwOwogICAgIHZpcnR1YWwgQ29sb3IgY29sb3IoY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSkgPSAwOwpAQCAtNTUsNiArNTQsOSBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCB2b2lkIHNldFR5cGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0QnVm
ZmVyRm9yVHlwZShQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4sIGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpID0gMDsKICAgICB2aXJ0dWFs
IHZvaWQgc2V0UGF0aG5hbWVzRm9yVHlwZShjb25zdCBWZWN0b3I8U3RyaW5nPiYsIGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpID0gMDsK
KyNlbmRpZgorI2lmIFBMQVRGT1JNKE1BQykgfHwgUExBVEZPUk0oRUZMKQorICAgIHZpcnR1YWwg
U3RyaW5nIHN0cmluZ0ZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzZXRTdHJpbmdG
b3JUeXBlKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpID0gMDsKICNlbmRpZgogcHJvdGVjdGVkOgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZsL1Bhc3RlYm9hcmRFZmwuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZsL1Bhc3RlYm9hcmRFZmwuY3BwCmluZGV4IDdhMWFjNDUu
LjUxYmUyNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9QYXN0ZWJv
YXJkRWZsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvUGFzdGVib2FyZEVm
bC5jcHAKQEAgLTI4LDYgKzI4LDggQEAKICNpbmNsdWRlICJJbWFnZS5oIgogI2luY2x1ZGUgIktV
UkwuaCIKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgorI2luY2x1ZGUgIlBhc3RlYm9hcmRT
dHJhdGVneS5oIgorI2luY2x1ZGUgIlBsYXRmb3JtU3RyYXRlZ2llcy5oIgogI2luY2x1ZGUgIlJl
bmRlckltYWdlLmgiCiAjaW5jbHVkZSAibWFya3VwLmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0
cmluZy5oPgpAQCAtMzUsNiArMzcsMTEgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjb25z
dCBjaGFyKiBjb25zdCBQYXN0ZWJvYXJkOjpzZWxlY3Rpb25Gb3JtYXRUZXh0ID0gIlRleHQiOwor
Y29uc3QgY2hhciogY29uc3QgUGFzdGVib2FyZDo6c2VsZWN0aW9uRm9ybWF0TWFya3VwID0gIk1h
cmt1cCI7Citjb25zdCBjaGFyKiBjb25zdCBQYXN0ZWJvYXJkOjpzZWxlY3Rpb25UeXBlUHJpbWFy
eSA9ICJQcmltYXJ5IjsKK2NvbnN0IGNoYXIqIGNvbnN0IFBhc3RlYm9hcmQ6OnNlbGVjdGlvblR5
cGVDbGlwYm9hcmQgPSAiQ2xpcGJvYXJkIjsKKwogUGFzdGVib2FyZCogUGFzdGVib2FyZDo6Z2Vu
ZXJhbFBhc3RlYm9hcmQoKQogewogICAgIHN0YXRpYyBQYXN0ZWJvYXJkKiBwYXN0ZWJvYXJkID0g
bmV3IFBhc3RlYm9hcmQoKTsKQEAgLTQyLDIzICs0OSwyNyBAQCBQYXN0ZWJvYXJkKiBQYXN0ZWJv
YXJkOjpnZW5lcmFsUGFzdGVib2FyZCgpCiB9CiAKIFBhc3RlYm9hcmQ6OlBhc3RlYm9hcmQoKQor
ICAgIDogbV9zZWxlY3Rpb25Nb2RlKGZhbHNlKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7CiB9
CiAKLXZvaWQgUGFzdGVib2FyZDo6d3JpdGVQbGFpblRleHQoY29uc3QgU3RyaW5nJiwgU21hcnRS
ZXBsYWNlT3B0aW9uKQordm9pZCBQYXN0ZWJvYXJkOjp3cml0ZVBsYWluVGV4dChjb25zdCBTdHJp
bmcmIHRleHQsIFNtYXJ0UmVwbGFjZU9wdGlvbikKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwor
ICAgIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+c2V0U3RyaW5n
Rm9yVHlwZSh0ZXh0LCBzZWxlY3Rpb25Gb3JtYXRUZXh0LCBtX3NlbGVjdGlvbk1vZGUgPyBzZWxl
Y3Rpb25UeXBlUHJpbWFyeSA6IHNlbGVjdGlvblR5cGVDbGlwYm9hcmQpOwogfQogCi12b2lkIFBh
c3RlYm9hcmQ6OndyaXRlU2VsZWN0aW9uKFJhbmdlKiwgYm9vbCwgRnJhbWUqKQordm9pZCBQYXN0
ZWJvYXJkOjp3cml0ZVNlbGVjdGlvbihSYW5nZSogc2VsZWN0ZWRSYW5nZSwgYm9vbCwgRnJhbWUq
KQogewotICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgU3RyaW5nIG1hcmt1cCA9IGNyZWF0ZU1h
cmt1cChzZWxlY3RlZFJhbmdlLCAwLCBBbm5vdGF0ZUZvckludGVyY2hhbmdlLCBmYWxzZSwgUmVz
b2x2ZU5vbkxvY2FsVVJMcyk7CisgICAgcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRT
dHJhdGVneSgpLT5zZXRTdHJpbmdGb3JUeXBlKG1hcmt1cCwgc2VsZWN0aW9uRm9ybWF0TWFya3Vw
LCBtX3NlbGVjdGlvbk1vZGUgPyBzZWxlY3Rpb25UeXBlUHJpbWFyeSA6IHNlbGVjdGlvblR5cGVD
bGlwYm9hcmQpOwogfQogCi12b2lkIFBhc3RlYm9hcmQ6OndyaXRlVVJMKGNvbnN0IEtVUkwmLCBj
b25zdCBTdHJpbmcmLCBGcmFtZSopCit2b2lkIFBhc3RlYm9hcmQ6OndyaXRlVVJMKGNvbnN0IEtV
UkwmIHVybCwgY29uc3QgU3RyaW5nJiwgRnJhbWUqKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7
CisgICAgaWYgKHVybC5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKworICAgIHBsYXRmb3Jt
U3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+c2V0U3RyaW5nRm9yVHlwZSh1cmwu
c3RyaW5nKCksIHNlbGVjdGlvbkZvcm1hdE1hcmt1cCwgbV9zZWxlY3Rpb25Nb2RlID8gc2VsZWN0
aW9uVHlwZVByaW1hcnkgOiBzZWxlY3Rpb25UeXBlQ2xpcGJvYXJkKTsKIH0KIAogdm9pZCBQYXN0
ZWJvYXJkOjp3cml0ZUltYWdlKE5vZGUqLCBjb25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJikKQEAg
LTgyLDE2ICs5Myw0MiBAQCBib29sIFBhc3RlYm9hcmQ6OmNhblNtYXJ0UmVwbGFjZSgpCiAgICAg
cmV0dXJuIGZhbHNlOwogfQogCi1QYXNzUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IFBhc3RlYm9h
cmQ6OmRvY3VtZW50RnJhZ21lbnQoRnJhbWUqLCBQYXNzUmVmUHRyPFJhbmdlPiwgYm9vbCwgYm9v
bCYpCitQYXNzUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IFBhc3RlYm9hcmQ6OmRvY3VtZW50RnJh
Z21lbnQoRnJhbWUqIGZyYW1lLCBQYXNzUmVmUHRyPFJhbmdlPiBjb250ZXh0LCBib29sIGFsbG93
UGxhaW5UZXh0LCBib29sJiBjaG9zZVBsYWluVGV4dCkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgp
OworICAgIGNob3NlUGxhaW5UZXh0ID0gZmFsc2U7CisKKyAgICBTdHJpbmcgZGF0YSA9IHBsYXRm
b3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+c3RyaW5nRm9yVHlwZShzZWxl
Y3Rpb25Gb3JtYXRNYXJrdXAsIG1fc2VsZWN0aW9uTW9kZSA/IHNlbGVjdGlvblR5cGVQcmltYXJ5
IDogc2VsZWN0aW9uVHlwZUNsaXBib2FyZCk7CisKKyAgICBpZiAoIWRhdGEuaXNFbXB0eSgpKSB7
CisgICAgICAgIGlmIChSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gZnJhZ21lbnQgPSBjcmVhdGVG
cmFnbWVudEZyb21NYXJrdXAoZnJhbWUtPmRvY3VtZW50KCksIGRhdGEsIFN0cmluZygpLCBEaXNh
bGxvd1NjcmlwdGluZ0NvbnRlbnQpKQorICAgICAgICAgICAgcmV0dXJuIGZyYWdtZW50LnJlbGVh
c2UoKTsKKyAgICB9CisKKyAgICBkYXRhID0gcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9h
cmRTdHJhdGVneSgpLT5zdHJpbmdGb3JUeXBlKHNlbGVjdGlvbkZvcm1hdFRleHQsIG1fc2VsZWN0
aW9uTW9kZSA/IHNlbGVjdGlvblR5cGVQcmltYXJ5IDogc2VsZWN0aW9uVHlwZUNsaXBib2FyZCk7
CisKKyAgICBpZiAoYWxsb3dQbGFpblRleHQgJiYgIWRhdGEuaXNFbXB0eSgpKSB7CisgICAgICAg
IGNob3NlUGxhaW5UZXh0ID0gdHJ1ZTsKKyAgICAgICAgUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+
IGZyYWdtZW50ID0gY3JlYXRlRnJhZ21lbnRGcm9tVGV4dChjb250ZXh0LmdldCgpLCBkYXRhKTsK
KyAgICAgICAgaWYgKGZyYWdtZW50KQorICAgICAgICAgICAgcmV0dXJuIGZyYWdtZW50LnJlbGVh
c2UoKTsKKyAgICB9CisKICAgICByZXR1cm4gMDsKIH0KIAogU3RyaW5nIFBhc3RlYm9hcmQ6OnBs
YWluVGV4dChGcmFtZSopCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gU3Ry
aW5nKCk7CisgICAgcmV0dXJuIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRl
Z3koKS0+c3RyaW5nRm9yVHlwZShzZWxlY3Rpb25Gb3JtYXRUZXh0LCBtX3NlbGVjdGlvbk1vZGUg
PyBzZWxlY3Rpb25UeXBlUHJpbWFyeSA6IHNlbGVjdGlvblR5cGVDbGlwYm9hcmQpOworfQorCiti
b29sIFBhc3RlYm9hcmQ6OmlzU2VsZWN0aW9uTW9kZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1f
c2VsZWN0aW9uTW9kZTsKK30KKwordm9pZCBQYXN0ZWJvYXJkOjpzZXRTZWxlY3Rpb25Nb2RlKGJv
b2wgc2VsZWN0aW9uTW9kZSkKK3sKKyAgICBtX3NlbGVjdGlvbk1vZGUgPSBzZWxlY3Rpb25Nb2Rl
OwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cKaW5kZXggMjdiYzZiZS4uNGIyZGU4ZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL0No
YW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDEzLTAxLTE1ICBNaWNoYcWCIFBha3XFgmEgdmVs
IFJ1dGthICA8bS5wYWt1bGFAc2Ftc3VuZy5jb20+CisKKyAgICAgICAgW0VGTF1bV0syXSBJbXBs
ZW1lbnRhdGlvbiBvZiBwYXN0ZWJvYXJkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xMDI0ODQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBFRkwgZG9lcyBub3QgcHJvdmlkZSBwbGF0Zm9ybS13aWRlIGNvcHkg
YW5kIHBhc3RlIHN1cHBvcnQsIGJ1dCBhbiBBUEkgaW4gVUkgdG9vbGtpdCAtIEVsZW1lbnRhcnku
CisgICAgICAgIFdlYktpdCBFRkwgc2hvdWxkIGJlIGVsZW1lbnRhcnkgaW5kZXBlbmRlbnQsIGFs
c28gRWxlbWVudGFyeSBjb3B5IGFuZCBwYXN0ZSBBUEkgbmVlZHMgYSBVSSB3aWRnZXQKKyAgICAg
ICAgYXMgb25lIG9mIGl0cyBhcmd1bWVudC4gVGh1cywgd2UgY2Fubm90IGltcGxlbWVudCBwYXN0
ZWJvYXJkIGluc2lkZSBXZWJDb3JlIGxpa2Ugb3RoZXIgcG9ydHMsCisgICAgICAgIGJ1dCB0aGUg
aW1wbGVtZW50YXRpb24gaGFzIHRvIGJlIGRvbmUgb24gYXBwbGljYXRpb24gc2lkZS4KKworICAg
ICAgICAqIFdlYkNvcmVTdXBwb3J0L1BsYXRmb3JtU3RyYXRlZ2llc0VmbC5jcHA6CisgICAgICAg
IChQbGF0Zm9ybVN0cmF0ZWdpZXNFZmw6OmNyZWF0ZVBhc3RlYm9hcmRTdHJhdGVneSk6CisgICAg
ICAgIChQbGF0Zm9ybVN0cmF0ZWdpZXNFZmw6OnNldFN0cmluZ0ZvclR5cGUpOgorICAgICAgICAo
UGxhdGZvcm1TdHJhdGVnaWVzRWZsOjpzdHJpbmdGb3JUeXBlKToKKyAgICAgICAgKiBXZWJDb3Jl
U3VwcG9ydC9QbGF0Zm9ybVN0cmF0ZWdpZXNFZmwuaDoKKyAgICAgICAgKFBsYXRmb3JtU3RyYXRl
Z2llc0VmbCk6CisKIDIwMTMtMDEtMTMgIEt3YW5nWW9uZyBDaG9pICA8a3kwLmNob2lAc2Ftc3Vu
Zy5jb20+CiAKICAgICAgICAgW0VGTF0gVW5yZXZpZXdlZCBidWlsZCBmaXggYWZ0ZXIgcjEzOTU0
MQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvUGxhdGZvcm1T
dHJhdGVnaWVzRWZsLmNwcCBiL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L1BsYXRm
b3JtU3RyYXRlZ2llc0VmbC5jcHAKaW5kZXggYTc4M2Y1MC4uMTc4OTdiMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvUGxhdGZvcm1TdHJhdGVnaWVzRWZsLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9QbGF0Zm9ybVN0cmF0ZWdp
ZXNFZmwuY3BwCkBAIC02Miw4ICs2Miw3IEBAIExvYWRlclN0cmF0ZWd5KiBQbGF0Zm9ybVN0cmF0
ZWdpZXNFZmw6OmNyZWF0ZUxvYWRlclN0cmF0ZWd5KCkKIAogUGFzdGVib2FyZFN0cmF0ZWd5KiBQ
bGF0Zm9ybVN0cmF0ZWdpZXNFZmw6OmNyZWF0ZVBhc3RlYm9hcmRTdHJhdGVneSgpCiB7Ci0gICAg
bm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gdGhpczsKIH0KIAog
UGx1Z2luU3RyYXRlZ3kqIFBsYXRmb3JtU3RyYXRlZ2llc0VmbDo6Y3JlYXRlUGx1Z2luU3RyYXRl
Z3koKQpAQCAtMTYyLDMgKzE2MSwxNSBAQCB2b2lkIFBsYXRmb3JtU3RyYXRlZ2llc0VmbDo6YWRk
VmlzaXRlZExpbmsoUGFnZSogcGFnZSwgTGlua0hhc2ggaGFzaCkKIHsKICAgICBwYWdlLT5ncm91
cCgpLmFkZFZpc2l0ZWRMaW5rSGFzaChoYXNoKTsKIH0KKworLy8gUGFzdGVib2FyZFN0cmF0ZWd5
Cit2b2lkIFBsYXRmb3JtU3RyYXRlZ2llc0VmbDo6c2V0U3RyaW5nRm9yVHlwZShjb25zdCBTdHJp
bmcmLCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmKQoreworICAgIG5vdEltcGxlbWVudGVk
KCk7Cit9CisKK1N0cmluZyBQbGF0Zm9ybVN0cmF0ZWdpZXNFZmw6OnN0cmluZ0ZvclR5cGUoY29u
c3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAg
IHJldHVybiBTdHJpbmcoKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNv
cmVTdXBwb3J0L1BsYXRmb3JtU3RyYXRlZ2llc0VmbC5oIGIvU291cmNlL1dlYktpdC9lZmwvV2Vi
Q29yZVN1cHBvcnQvUGxhdGZvcm1TdHJhdGVnaWVzRWZsLmgKaW5kZXggZTdhOWU4ZC4uMGM2ODZl
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvUGxhdGZvcm1T
dHJhdGVnaWVzRWZsLmgKKysrIGIvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvUGxh
dGZvcm1TdHJhdGVnaWVzRWZsLmgKQEAgLTI5LDcgKzI5LDcgQEAKICNpbmNsdWRlICJTaGFyZWRX
b3JrZXJTdHJhdGVneS5oIgogI2luY2x1ZGUgIlZpc2l0ZWRMaW5rU3RyYXRlZ3kuaCIKIAotY2xh
c3MgUGxhdGZvcm1TdHJhdGVnaWVzRWZsIDogcHVibGljIFdlYkNvcmU6OlBsYXRmb3JtU3RyYXRl
Z2llcywgcHJpdmF0ZSBXZWJDb3JlOjpDb29raWVzU3RyYXRlZ3ksIHByaXZhdGUgV2ViQ29yZTo6
RGF0YWJhc2VTdHJhdGVneSwgcHJpdmF0ZSBXZWJDb3JlOjpMb2FkZXJTdHJhdGVneSwgcHJpdmF0
ZSBXZWJDb3JlOjpQbHVnaW5TdHJhdGVneSwgcHJpdmF0ZSBXZWJDb3JlOjpTaGFyZWRXb3JrZXJT
dHJhdGVneSwgcHJpdmF0ZSBXZWJDb3JlOjpWaXNpdGVkTGlua1N0cmF0ZWd5IHsKK2NsYXNzIFBs
YXRmb3JtU3RyYXRlZ2llc0VmbCA6IHB1YmxpYyBXZWJDb3JlOjpQbGF0Zm9ybVN0cmF0ZWdpZXMs
IHByaXZhdGUgV2ViQ29yZTo6Q29va2llc1N0cmF0ZWd5LCBwcml2YXRlIFdlYkNvcmU6OkRhdGFi
YXNlU3RyYXRlZ3ksIHByaXZhdGUgV2ViQ29yZTo6TG9hZGVyU3RyYXRlZ3ksIHByaXZhdGUgV2Vi
Q29yZTo6UGx1Z2luU3RyYXRlZ3ksIHByaXZhdGUgV2ViQ29yZTo6U2hhcmVkV29ya2VyU3RyYXRl
Z3ksIHByaXZhdGUgV2ViQ29yZTo6VmlzaXRlZExpbmtTdHJhdGVneSwgcHJpdmF0ZSBXZWJDb3Jl
OjpQYXN0ZWJvYXJkU3RyYXRlZ3kgewogcHVibGljOgogICAgIHN0YXRpYyB2b2lkIGluaXRpYWxp
emUoKTsKIApAQCAtNjMsNiArNjMsMTAgQEAgcHJpdmF0ZToKICAgICAvLyBXZWJDb3JlOjpWaXNp
dGVkTGlua1N0cmF0ZWd5CiAgICAgdmlydHVhbCBib29sIGlzTGlua1Zpc2l0ZWQoV2ViQ29yZTo6
UGFnZSosIFdlYkNvcmU6OkxpbmtIYXNoLCBjb25zdCBXZWJDb3JlOjpLVVJMJiBiYXNlVVJMLCBj
b25zdCBXVEY6OkF0b21pY1N0cmluZyYgYXR0cmlidXRlVVJMKTsKICAgICB2aXJ0dWFsIHZvaWQg
YWRkVmlzaXRlZExpbmsoV2ViQ29yZTo6UGFnZSosIFdlYkNvcmU6OkxpbmtIYXNoKTsKKworICAg
IC8vIFdlYkNvcmU6OlBhc3RlYm9hcmRTdHJhdGVneQorICAgIHZpcnR1YWwgU3RyaW5nIHN0cmlu
Z0ZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkTmFtZSk7CisgICAgdmlydHVhbCB2b2lkIHNldFN0cmluZ0ZvclR5cGUoY29uc3QgU3Ry
aW5nJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkTmFtZSk7CiB9OwogCiAjZW5kaWYgLy8gUGxhdGZvcm1TdHJhdGVnaWVzRWZsX2gKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxv
ZwppbmRleCBhYzExNmY0Li43OGU3Mjg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjUgQEAKKzIw
MTMtMDEtMTUgIE1pY2hhxYIgUGFrdcWCYSB2ZWwgUnV0a2EgIDxtLnBha3VsYUBzYW1zdW5nLmNv
bT4KKworICAgICAgICBbRUZMXVtXSzJdIEltcGxlbWVudGF0aW9uIG9mIHBhc3RlYm9hcmQKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMjQ4NAorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2gg
aXMgYW4gaW5pdGlhbCBhcHByb2FjaCB0byBQYXN0ZWJvYXJkIGltcGxlbWVudGF0aW9uIGluIFdl
YktpdDIsCisgICAgICAgIGZvY3VzaW5nIG9uIGJhc2ljIGNvcHkgYW5kIHBhc3RlIGZlYXR1cmVz
LiBJdCBwYXNzZXNzIGRhdGEgYWxvbmcgd2l0aCBkYXRhCisgICAgICAgIHR5cGUgZnJvbSBXZWJD
b3JlIHRvIFdlYktpdDIgYW5kIHRoZW4gdGhlIGNsaWVudCBjYWxsYmFja3MgYXJlIGludm9rZWQu
CisKKyAgICAgICAgKiBQbGF0Zm9ybUVmbC5jbWFrZToKKyAgICAgICAgKiBTaGFyZWQvQVBJL2Mv
ZWZsL1dLQmFzZUVmbC5oOgorICAgICAgICAqIFNoYXJlZC9BUElPYmplY3QuaDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL0MvZWZsL1dLUGFzdGVib2FyZEVmbC5jcHA6IEFkZGVkLgorICAgICAg
ICAoV0tQYXN0ZWJvYXJkU2V0Q2xpZW50KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvZWZs
L1dLUGFzdGVib2FyZEVmbC5oOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9F
V2ViS2l0Mi5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a19wYXN0ZWJvYXJkLmNw
cDogQWRkZWQuCisgICAgICAgIChzZXREYXRhKToKKyAgICAgICAgKGdldERhdGEpOgorICAgICAg
ICAoZXdrX3Bhc3RlYm9hcmRfaW5pdGlhbGl6ZSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9l
ZmwvZXdrX3Bhc3RlYm9hcmQuaDogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL1dlYkNvbnRl
eHQuaDoKKyAgICAgICAgKFdlYkNvbnRleHQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJDb250
ZXh0Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIFVJUHJvY2Vzcy9lZmwvV2ViQ29udGV4dEVmbC5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHQ6OmdldFBhc3RlYm9hcmRTdHJpbmdGb3JU
eXBlKToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHQ6OnNl
dFBhc3RlYm9hcmRTdHJpbmdGb3JUeXBlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvZWZsL1dlYlBh
c3RlYm9hcmRDbGllbnRFZmwuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAg
IChXZWJLaXQ6OmdldFNlbGVjdGlvbkZvcm1hdEZyb21TdHJpbmcpOgorICAgICAgICAoV2ViS2l0
OjpnZXRTZWxlY3Rpb25UeXBlRnJvbVN0cmluZyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhc3Rl
Ym9hcmRDbGllbnRFZmw6OmdldFN0cmluZyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhc3RlYm9h
cmRDbGllbnRFZmw6OnNldFN0cmluZyk6CisgICAgICAgICogVUlQcm9jZXNzL2VmbC9XZWJQYXN0
ZWJvYXJkQ2xpZW50RWZsLmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdl
YlBhc3RlYm9hcmRDbGllbnRFZmwpOgorICAgICAgICAqIFVJUHJvY2Vzcy9lZmwvV2ViUGFzdGVi
b2FyZFByb3h5RWZsLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYXN0ZWJvYXJkUHJveHlFZmw6OnNoYXJlZCk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhc3RlYm9hcmRQcm94eUVmbDo6V2ViUGFzdGVib2FyZFByb3h5RWZsKToKKyAgICAgICAgKFdl
YktpdDo6V2ViUGFzdGVib2FyZFByb3h5RWZsOjpzZXRDbGllbnQpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYXN0ZWJvYXJkUHJveHlFZmw6OmdldFN0cmluZ0ZvclR5cGUpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYXN0ZWJvYXJkUHJveHlFZmw6OnNldFN0cmluZ0ZvclR5cGUpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9lZmwvV2ViUGFzdGVib2FyZFByb3h5RWZsLmg6IEFkZGVkLgorICAgICAgICAo
V2ViS2l0KToKKyAgICAgICAgKFdlYlBhc3RlYm9hcmRQcm94eUVmbCk6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhc3RlYm9hcmRQcm94eUVmbDo6Y2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFzdGVib2FyZFByb3h5RWZsOjp0eXBlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkVkaXRvckNs
aWVudDo6cmVzcG9uZFRvQ2hhbmdlZFNlbGVjdGlvbik6CisgICAgICAgIChXZWJLaXQpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJFZGl0b3JDbGllbnQ6OnN1cHBvcnRzR2xvYmFsU2VsZWN0aW9uKToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVz
LmNwcDoKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXRmb3JtU3Ry
YXRlZ2llczo6c3RyaW5nRm9yVHlwZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaDoKKyAgICAgICAgKFdlYlBsYXRmb3JtU3RyYXRl
Z2llcyk6CisKIDIwMTMtMDEtMTQgIERlYW4gSmFja3NvbiAgPGRpbm9AYXBwbGUuY29tPgogCiAg
ICAgICAgIFtBTkdMRV0gVXBkYXRlIEFOR0xFIGluIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5j
bWFrZQppbmRleCA0MDc2Yzg1Li5iZGM5YmM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9Q
bGF0Zm9ybUVmbC5jbWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQpA
QCAtMzIsNiArMzIsNyBAQCBsaXN0KEFQUEVORCBXZWJLaXQyX1NPVVJDRVMKIAogICAgIFNoYXJl
ZC9QbHVnaW5zL05ldHNjYXBlL3gxMS9OZXRzY2FwZVBsdWdpbk1vZHVsZVgxMS5jcHAKIAorICAg
IFVJUHJvY2Vzcy9BUEkvQy9lZmwvV0tQYXN0ZWJvYXJkRWZsLmNwcAogICAgIFVJUHJvY2Vzcy9B
UEkvQy9lZmwvV0tWaWV3LmNwcAogCiAgICAgVUlQcm9jZXNzL0FQSS9jcHAvZWZsL1dLRWluYVNo
YXJlZFN0cmluZy5jcHAKQEAgLTYzLDYgKzY0LDcgQEAgbGlzdChBUFBFTkQgV2ViS2l0Ml9TT1VS
Q0VTCiAgICAgVUlQcm9jZXNzL0FQSS9lZmwvZXdrX25hdmlnYXRpb25fZGF0YS5jcHAKICAgICBV
SVByb2Nlc3MvQVBJL2VmbC9ld2tfbmF2aWdhdGlvbl9wb2xpY3lfZGVjaXNpb24uY3BwCiAgICAg
VUlQcm9jZXNzL0FQSS9lZmwvZXdrX29iamVjdC5jcHAKKyAgICBVSVByb2Nlc3MvQVBJL2VmbC9l
d2tfcGFzdGVib2FyZC5jcHAKICAgICBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfcG9wdXBfbWVudS5j
cHAKICAgICBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfcG9wdXBfbWVudV9pdGVtLmNwcAogICAgIFVJ
UHJvY2Vzcy9BUEkvZWZsL2V3a19yZXNvdXJjZS5jcHAKQEAgLTEwMiw2ICsxMDQsOCBAQCBsaXN0
KEFQUEVORCBXZWJLaXQyX1NPVVJDRVMKICAgICBVSVByb2Nlc3MvZWZsL1dlYkZ1bGxTY3JlZW5N
YW5hZ2VyUHJveHlFZmwuY3BwCiAgICAgVUlQcm9jZXNzL2VmbC9XZWJJbnNwZWN0b3JQcm94eUVm
bC5jcHAKICAgICBVSVByb2Nlc3MvZWZsL1dlYlBhZ2VQcm94eUVmbC5jcHAKKyAgICBVSVByb2Nl
c3MvZWZsL1dlYlBhc3RlYm9hcmRDbGllbnRFZmwuY3BwCisgICAgVUlQcm9jZXNzL2VmbC9XZWJQ
YXN0ZWJvYXJkUHJveHlFZmwuY3BwCiAgICAgVUlQcm9jZXNzL2VmbC9XZWJQb3B1cE1lbnVQcm94
eUVmbC5jcHAKICAgICBVSVByb2Nlc3MvZWZsL1dlYlByZWZlcmVuY2VzRWZsLmNwcAogICAgIFVJ
UHJvY2Vzcy9lZmwvV2ViUHJvY2Vzc1Byb3h5RWZsLmNwcApAQCAtMjgxLDYgKzI4NSw3IEBAIHNl
dChFV2ViS2l0Ml9IRUFERVJTCiAgICAgIiR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9VSVBy
b2Nlc3MvQVBJL2VmbC9ld2tfbmF2aWdhdGlvbl9kYXRhLmgiCiAgICAgIiR7Q01BS0VfQ1VSUkVO
VF9TT1VSQ0VfRElSfS9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfbmF2aWdhdGlvbl9wb2xpY3lfZGVj
aXNpb24uaCIKICAgICAiJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L1VJUHJvY2Vzcy9BUEkv
ZWZsL2V3a19vYmplY3QuaCIKKyAgICAiJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L1VJUHJv
Y2Vzcy9BUEkvZWZsL2V3a19wYXN0ZWJvYXJkLmgiCiAgICAgIiR7Q01BS0VfQ1VSUkVOVF9TT1VS
Q0VfRElSfS9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfcG9wdXBfbWVudS5oIgogICAgICIke0NNQUtF
X0NVUlJFTlRfU09VUkNFX0RJUn0vVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3BvcHVwX21lbnVfaXRl
bS5oIgogICAgICIke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vVUlQcm9jZXNzL0FQSS9lZmwv
ZXdrX3Jlc291cmNlLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2Mv
ZWZsL1dLQmFzZUVmbC5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL2VmbC9XS0Jhc2VF
ZmwuaAppbmRleCA2MTg0YzgxLi4zZDM1NzRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvQVBJL2MvZWZsL1dLQmFzZUVmbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9B
UEkvYy9lZmwvV0tCYXNlRWZsLmgKQEAgLTI0LDYgKzI0LDcgQEAKICNlcnJvciAiUGxlYXNlICNp
bmNsdWRlIFwiV0tCYXNlLmhcIiBpbnN0ZWFkIG9mIHRoaXMgZmlsZSBkaXJlY3RseS4iCiAjZW5k
aWYKIAordHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tQYXN0ZWJvYXJkKiBXS1Bhc3RlYm9h
cmRSZWY7CiB0eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVXS1ZpZXcqIFdLVmlld1JlZjsKIAog
I2VuZGlmIC8qIFdLQmFzZUVmbF9oICovCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvQVBJT2JqZWN0LmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJT2JqZWN0LmgKaW5kZXgg
MzExOWRlNi4uYmNhYzM2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSU9i
amVjdC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUElPYmplY3QuaApAQCAtMTMxLDYg
KzEzMSw3IEBAIHB1YmxpYzoKICAgICAgICAgLy8gUGxhdGZvcm0gc3BlY2lmaWMKICAgICAgICAg
VHlwZUVkaXRDb21tYW5kUHJveHksCiAgICAgICAgIFR5cGVPYmpDT2JqZWN0R3JhcGgsCisgICAg
ICAgIFR5cGVQYXN0ZWJvYXJkUHJveHksCiAgICAgICAgIFR5cGVWaWV3LAogI2lmIFVTRShTT1VQ
KQogICAgICAgICBUeXBlU291cFJlcXVlc3RNYW5hZ2VyLApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9DL2VmbC9XS1Bhc3RlYm9hcmRFZmwuY3BwIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9DL2VmbC9XS1Bhc3RlYm9hcmRFZmwuY3BwCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMwNWM3YWIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvZWZsL1dLUGFzdGVib2FyZEVmbC5jcHAKQEAgLTAs
MCArMSw0MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNz
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJ
R0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HCisgKiBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJX
S1Bhc3RlYm9hcmRFZmwuaCIKKworI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgorI2luY2x1ZGUgIldl
YlBhc3RlYm9hcmRQcm94eUVmbC5oIgorCit1c2luZyBuYW1lc3BhY2UgV2ViS2l0OworCit2b2lk
IFdLUGFzdGVib2FyZFNldENsaWVudChjb25zdCBXS1Bhc3RlYm9hcmRDbGllbnRFZmwqIGNsaWVu
dCkKK3sKKyAgICBpZiAoY2xpZW50ICYmIGNsaWVudC0+dmVyc2lvbikKKyAgICAgICAgcmV0dXJu
OworCisgICAgV2ViUGFzdGVib2FyZFByb3h5RWZsOjpzaGFyZWQoKS0+c2V0Q2xpZW50KGNsaWVu
dCk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvZWZsL1dL
UGFzdGVib2FyZEVmbC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL2VmbC9XS1Bh
c3RlYm9hcmRFZmwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNGI5NGFm
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL2VmbC9X
S1Bhc3RlYm9hcmRFZmwuaApAQCAtMCwwICsxLDcwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDEyIFNhbXN1bmcgRWxlY3Ryb25pY3MKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAi
QVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcKKyAqIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBX
S1Bhc3RlYm9hcmRFZmxfaAorI2RlZmluZSBXS1Bhc3RlYm9hcmRFZmxfaAorCisjaW5jbHVkZSA8
V2ViS2l0Mi9XS0Jhc2UuaD4KKworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gIkMiIHsKKyNl
bmRpZgorCisvLyBQYXN0ZWJvYXJkIHNlbGVjdGlvbiBmb3JtYXRzLgorZW51bSB7CisgICAgV0tQ
YXN0ZWJvYXJkU2VsZWN0aW9uRm9ybWF0VW5rbm93biA9IDAsCisgICAgV0tQYXN0ZWJvYXJkU2Vs
ZWN0aW9uRm9ybWF0VGV4dCA9IDEsCisgICAgV0tQYXN0ZWJvYXJkU2VsZWN0aW9uRm9ybWF0TWFy
a3VwID0gMgorfTsKK3R5cGVkZWYgdWludDMyX3QgV0tQYXN0ZWJvYXJkU2VsZWN0aW9uRm9ybWF0
OworCisvLyBQYXN0ZWJvYXJkIHNlbGVjdGlvbiB0eXBlcy4KK2VudW0geworICAgIFdLUGFzdGVi
b2FyZFNlbGVjdGlvblR5cGVVbmtub3duID0gMCwKKyAgICBXS1Bhc3RlYm9hcmRTZWxlY3Rpb25U
eXBlUHJpbWFyeSA9IDEsCisgICAgV0tQYXN0ZWJvYXJkU2VsZWN0aW9uVHlwZUNsaXBib2FyZCA9
IDIKK307Cit0eXBlZGVmIHVpbnQzMl90IFdLUGFzdGVib2FyZFNlbGVjdGlvblR5cGU7CisKK3R5
cGVkZWYgV0tTdHJpbmdSZWYgKCpXS1Bhc3RlYm9hcmRHZXRTdHJpbmdDYWxsYmFjaykoV0tQYXN0
ZWJvYXJkU2VsZWN0aW9uRm9ybWF0IHNlbGVjdGlvbkZvcm1hdCwgV0tQYXN0ZWJvYXJkU2VsZWN0
aW9uVHlwZSBzZWxlY3Rpb25UeXBlLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsKK3R5cGVkZWYg
dm9pZCAoKldLUGFzdGVib2FyZFNldFN0cmluZ0NhbGxiYWNrKShXS1N0cmluZ1JlZiBzdHJpbmcs
IFdLUGFzdGVib2FyZFNlbGVjdGlvbkZvcm1hdCBzZWxlY3Rpb25Gb3JtYXQsIFdLUGFzdGVib2Fy
ZFNlbGVjdGlvblR5cGUgc2VsZWN0aW9uVHlwZSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7CisK
K3N0cnVjdCBXS1Bhc3RlYm9hcmRDbGllbnRFZmwgeworICAgIGludCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZXJzaW9uOworICAgIGNvbnN0IHZvaWQq
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGllbnRJbmZvOworICAg
IFdLUGFzdGVib2FyZEdldFN0cmluZ0NhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICBnZXRT
dHJpbmc7CisgICAgV0tQYXN0ZWJvYXJkU2V0U3RyaW5nQ2FsbGJhY2sgICAgICAgICAgICAgICAg
ICAgICAgIHNldFN0cmluZzsKK307Cit0eXBlZGVmIHN0cnVjdCBXS1Bhc3RlYm9hcmRDbGllbnRF
ZmwgV0tQYXN0ZWJvYXJkQ2xpZW50RWZsOworCitlbnVtIHsgV0tQYXN0ZWJvYXJkQ2xpZW50RWZs
Q3VycmVudFZlcnNpb24gPSAwIH07CisKK1dLX0VYUE9SVCB2b2lkIFdLUGFzdGVib2FyZFNldENs
aWVudChjb25zdCBXS1Bhc3RlYm9hcmRDbGllbnRFZmwqIGNsaWVudCk7CisKKyNpZmRlZiBfX2Nw
bHVzcGx1cworfQorI2VuZGlmCisKKyNlbmRpZiAvKiBXS1Bhc3RlYm9hcmRFZmxfaCAqLwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRVdlYktpdDIuaCBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0VXZWJLaXQyLmgKaW5kZXggYjEyMjExMC4u
ZDZjNjA4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRVdl
YktpdDIuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9FV2ViS2l0Mi5o
CkBAIC00OCw2ICs0OCw3IEBACiAjaW5jbHVkZSAiZXdrX25hdmlnYXRpb25fZGF0YS5oIgogI2lu
Y2x1ZGUgImV3a19uYXZpZ2F0aW9uX3BvbGljeV9kZWNpc2lvbi5oIgogI2luY2x1ZGUgImV3a19v
YmplY3QuaCIKKyNpbmNsdWRlICJld2tfcGFzdGVib2FyZC5oIgogI2luY2x1ZGUgImV3a19wb3B1
cF9tZW51LmgiCiAjaW5jbHVkZSAiZXdrX3BvcHVwX21lbnVfaXRlbS5oIgogI2luY2x1ZGUgImV3
a19yZXNvdXJjZS5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9l
ZmwvZXdrX3Bhc3RlYm9hcmQuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwv
ZXdrX3Bhc3RlYm9hcmQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFm
MTM4ZmUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2Vm
bC9ld2tfcGFzdGVib2FyZC5jcHAKQEAgLTAsMCArMSw3OSBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNzCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwor
ICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBPUgor
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HCisgKiBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJld2tfcGFzdGVib2FyZC5oIgorCisjaW5jbHVkZSAi
V0tBUElDYXN0LmgiCisjaW5jbHVkZSAiV0tQYXN0ZWJvYXJkRWZsLmgiCisjaW5jbHVkZSAiV0tS
ZXRhaW5QdHIuaCIKKyNpbmNsdWRlICJXS1N0cmluZy5oIgorI2luY2x1ZGUgImV3a19wcml2YXRl
LmgiCisjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgorCit1c2luZyBuYW1lc3BhY2UgV2Vi
S2l0OworCitzdGF0aWMgRXdrX1Bhc3RlYm9hcmRfRGF0YV9TZXRfQ2IgZGF0YVNldENhbGxiYWNr
ID0gMDsKK3N0YXRpYyBFd2tfUGFzdGVib2FyZF9EYXRhX0dldF9DYiBkYXRhR2V0Q2FsbGJhY2sg
PSAwOworCitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKEVXS19QQVNURUJPQVJEX1NFTEVD
VElPTl9GT1JNQVRfVU5LTk9XTiwgV0tQYXN0ZWJvYXJkU2VsZWN0aW9uRm9ybWF0VW5rbm93bik7
CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKEVXS19QQVNURUJPQVJEX1NFTEVDVElPTl9G
T1JNQVRfVEVYVCwgV0tQYXN0ZWJvYXJkU2VsZWN0aW9uRm9ybWF0VGV4dCk7CitDT01QSUxFX0FT
U0VSVF9NQVRDSElOR19FTlVNKEVXS19QQVNURUJPQVJEX1NFTEVDVElPTl9GT1JNQVRfSFRNTCwg
V0tQYXN0ZWJvYXJkU2VsZWN0aW9uRm9ybWF0TWFya3VwKTsKK0NPTVBJTEVfQVNTRVJUX01BVENI
SU5HX0VOVU0oRVdLX1BBU1RFQk9BUkRfU0VMRUNUSU9OX1RZUEVfVU5LTk9XTiwgV0tQYXN0ZWJv
YXJkU2VsZWN0aW9uVHlwZVVua25vd24pOworQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShF
V0tfUEFTVEVCT0FSRF9TRUxFQ1RJT05fVFlQRV9QUklNQVJZLCBXS1Bhc3RlYm9hcmRTZWxlY3Rp
b25UeXBlUHJpbWFyeSk7CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKEVXS19QQVNURUJP
QVJEX1NFTEVDVElPTl9UWVBFX0NMSVBCT0FSRCwgV0tQYXN0ZWJvYXJkU2VsZWN0aW9uVHlwZUNs
aXBib2FyZCk7CisKK3N0YXRpYyB2b2lkIHNldERhdGEoV0tTdHJpbmdSZWYgc3RyaW5nLCBXS1Bh
c3RlYm9hcmRTZWxlY3Rpb25UeXBlIHNlbGVjdGlvbkZvcm1hdCwgV0tQYXN0ZWJvYXJkU2VsZWN0
aW9uVHlwZSBzZWxlY3Rpb25UeXBlLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQoreworICAgIGlm
IChkYXRhU2V0Q2FsbGJhY2spCisgICAgICAgIGRhdGFTZXRDYWxsYmFjayh0b0ltcGwoc3RyaW5n
KS0+c3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgc3RhdGljX2Nhc3Q8RXdrX1Bhc3RlYm9hcmRfU2Vs
ZWN0aW9uX0Zvcm1hdD4oc2VsZWN0aW9uRm9ybWF0KSwgc3RhdGljX2Nhc3Q8RXdrX1Bhc3RlYm9h
cmRfU2VsZWN0aW9uX1R5cGU+KHNlbGVjdGlvblR5cGUpLCBjbGllbnRJbmZvKTsKK30KKworc3Rh
dGljIFdLU3RyaW5nUmVmIGdldERhdGEoV0tQYXN0ZWJvYXJkU2VsZWN0aW9uVHlwZSBzZWxlY3Rp
b25Gb3JtYXQsIFdLUGFzdGVib2FyZFNlbGVjdGlvblR5cGUgc2VsZWN0aW9uVHlwZSwgY29uc3Qg
dm9pZCogY2xpZW50SW5mbykKK3sKKyAgICBpZiAoZGF0YUdldENhbGxiYWNrKQorICAgICAgICBy
ZXR1cm4gV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoZGF0YUdldENhbGxiYWNrKHN0YXRp
Y19jYXN0PEV3a19QYXN0ZWJvYXJkX1NlbGVjdGlvbl9Gb3JtYXQ+KHNlbGVjdGlvbkZvcm1hdCks
IHN0YXRpY19jYXN0PEV3a19QYXN0ZWJvYXJkX1NlbGVjdGlvbl9UeXBlPihzZWxlY3Rpb25UeXBl
KSwgY2xpZW50SW5mbykpOworCisgICAgcmV0dXJuIFdLU3RyaW5nUmVmKCk7Cit9CisKK3ZvaWQg
ZXdrX3Bhc3RlYm9hcmRfaW5pdGlhbGl6ZShjb25zdCB2b2lkKiBjbGllbnRJbmZvLCBFd2tfUGFz
dGVib2FyZF9EYXRhX1NldF9DYiBzZXRDYWxsYmFjaywgRXdrX1Bhc3RlYm9hcmRfRGF0YV9HZXRf
Q2IgZ2V0Q2FsbGJhY2spCit7CisgICAgc3RhdGljIGJvb2wgZGlkSW5pdGlhbGl6ZVBhc3RlYm9h
cmRDbGllbnQgPSBmYWxzZTsKKyAgICBpZiAoZGlkSW5pdGlhbGl6ZVBhc3RlYm9hcmRDbGllbnQp
CisgICAgICAgIHJldHVybjsKKworICAgIFdLUGFzdGVib2FyZENsaWVudEVmbCBwYXN0ZWJvYXJk
Q2xpZW50RWZsID0geworICAgICAgICBXS1Bhc3RlYm9hcmRDbGllbnRFZmxDdXJyZW50VmVyc2lv
biwKKyAgICAgICAgY2xpZW50SW5mbywKKyAgICAgICAgZ2V0RGF0YSwKKyAgICAgICAgc2V0RGF0
YQorICAgIH07CisgICAgV0tQYXN0ZWJvYXJkU2V0Q2xpZW50KCZwYXN0ZWJvYXJkQ2xpZW50RWZs
KTsKKworICAgIGRpZEluaXRpYWxpemVQYXN0ZWJvYXJkQ2xpZW50ID0gdHJ1ZTsKKyAgICBkYXRh
U2V0Q2FsbGJhY2sgPSBzZXRDYWxsYmFjazsKKyAgICBkYXRhR2V0Q2FsbGJhY2sgPSBnZXRDYWxs
YmFjazsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3
a19wYXN0ZWJvYXJkLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfcGFz
dGVib2FyZC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI3OThlNGMKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfcGFz
dGVib2FyZC5oCkBAIC0wLDAgKzEsMTAyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIFNh
bXN1bmcgRWxlY3Ryb25pY3MKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMi
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcKKyAqIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworLyoqCisgKiBAZmlsZSAg
ICBld2tfcGFzdGVib2FyZC5oCisgKiBAYnJpZWYgICBEZXNjcmliZXMgdGhlIHBhc3RlYm9hcmQg
QVBJLgorICoKKyAqIEBub3RlIFRoZSBld2tfcGFzdGVib2FyZCBwcm92aWRlcyBwb2ludGVycyB0
byBmdW5jdGlvbiB3aGljaCBjYW4gYmUgaW1wbGVtZW50ZWQgYnkgYW4gYXBwbGljYXRpb24KKyAq
IHRvIHN1cHBvcnQgY29weSBhbmQgcGFzdGUgb3BlcmF0aW9ucyBpbiBXZWJLaXQuCisgKi8KKwor
I2lmbmRlZiBld2tfcGFzdGVib2FyZF9oCisjZGVmaW5lIGV3a19wYXN0ZWJvYXJkX2gKKworI2lu
Y2x1ZGUgPEV2YXMuaD4KKworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gIkMiIHsKKyNlbmRp
ZgorCisvKioKKyAqIEVudW0gdmFsdWVzIHVzZWQgdG8gc2V0IHNlbGVjdGlvbiBmb3JtYXRzLgor
ICovCitlbnVtIEV3a19QYXN0ZWJvYXJkX1NlbGVjdGlvbl9Gb3JtYXQgeworICAgIEVXS19QQVNU
RUJPQVJEX1NFTEVDVElPTl9GT1JNQVRfVU5LTk9XTiwKKyAgICBFV0tfUEFTVEVCT0FSRF9TRUxF
Q1RJT05fRk9STUFUX1RFWFQsCisgICAgRVdLX1BBU1RFQk9BUkRfU0VMRUNUSU9OX0ZPUk1BVF9I
VE1MLAorfTsKKworLy8vIENyZWF0ZXMgYSB0eXBlIG5hbWUgZm9yIHRoZSBFd2tfUGFzdGVib2Fy
ZF9TZWxlY3Rpb25fRm9ybWF0LgordHlwZWRlZiBlbnVtIEV3a19QYXN0ZWJvYXJkX1NlbGVjdGlv
bl9Gb3JtYXQgRXdrX1Bhc3RlYm9hcmRfU2VsZWN0aW9uX0Zvcm1hdDsKKworLyoqCisgKiBFbnVt
IHZhbHVlcyB1c2VkIHRvIHNldCBzZWxlY3Rpb24gdHlwZXMuCisgKi8KK2VudW0gRXdrX1Bhc3Rl
Ym9hcmRfU2VsZWN0aW9uX1R5cGUgeworICAgIEVXS19QQVNURUJPQVJEX1NFTEVDVElPTl9UWVBF
X1VOS05PV04sCisgICAgRVdLX1BBU1RFQk9BUkRfU0VMRUNUSU9OX1RZUEVfUFJJTUFSWSwKKyAg
ICBFV0tfUEFTVEVCT0FSRF9TRUxFQ1RJT05fVFlQRV9DTElQQk9BUkQKK307CisKKy8vLyBDcmVh
dGVzIGEgdHlwZSBuYW1lIGZvciB0aGUgRXdrX1Bhc3RlYm9hcmRfU2VsZWN0aW9uX1R5cGUuCit0
eXBlZGVmIGVudW0gRXdrX1Bhc3RlYm9hcmRfU2VsZWN0aW9uX1R5cGUgRXdrX1Bhc3RlYm9hcmRf
U2VsZWN0aW9uX1R5cGU7CisKKy8qKgorICogRGVmaW5lcyBhIHR5cGUgbmFtZSBmb3IgdGhlIGNh
bGxiYWNrIGZ1bmN0aW9uIHRvIHBlcmZvcm0gY29weSBvcGVyYXRpb24gd2l0aCBnaXZlbiBkYXRh
IHR5cGUuCisgKgorICogQHBhcmFtIGRhdGEgZGF0YSB0byBiZSBjb3BpZWQKKyAqIEBwYXJhbSBm
b3JtYXQgZm9ybWF0IG9mIGNvcGllZCBkYXRhCisgKiBAcGFyYW0gdHlwZSB0eXBlIG9mIGNvcGll
ZCBkYXRhCisgKiBAcGFyYW0gY2xpZW50X2luZm8gYXBwbGljYXRpb24gc3BlY2lmaWMgZGF0YQor
ICovCit0eXBlZGVmIHZvaWQgKCpFd2tfUGFzdGVib2FyZF9EYXRhX1NldF9DYikoY29uc3QgY2hh
ciAqZGF0YSwgRXdrX1Bhc3RlYm9hcmRfU2VsZWN0aW9uX0Zvcm1hdCBmb3JtYXQsIEV3a19QYXN0
ZWJvYXJkX1NlbGVjdGlvbl9UeXBlIHR5cGUsIGNvbnN0IHZvaWQgKmNsaWVudF9pbmZvKTsKKwor
LyoqCisgKiBEZWZpbmVzIGEgdHlwZSBuYW1lIGZvciB0aGUgY2FsbGJhY2sgZnVuY3Rpb24gdG8g
cmVxdWVzdCBmb3IgZGF0YSB3aXRoIGdpdmVuIHR5cGUuCisgKgorICogVGhpcyBjYWxsYmFjayBz
aG91bGQgcmV0dXJuIGRhdGEgZm9yIHJlcXVlc3RlZCB0eXBlIGlmIHRoZXJlIGlzIGEgZGF0YSBp
biBjbGlwYm9hcmQgb3RoZXJ3aXNlIE5VTEwgc2hvdWxkIGJlIHJldHVybmVkLgorICoKKyAqIEBw
YXJhbSBmb3JtYXQgZm9ybWF0IG9mIHJlcXVlc3RlZCBkYXRhCisgKiBAcGFyYW0gdHlwZSB0eXBl
IG9mIHJlcXVlc3RlZCBkYXRhCisgKiBAcGFyYW0gY2xpZW50X2luZm8gYXBwbGljYXRpb24gc3Bl
Y2lmaWMgZGF0YQorICoKKyAqIEByZXR1cm4gcmVxdWVzdGVkIGRhdGEgb24gc3VjY2VzcyBvciBA
YyBOVUxMIG9uIGZhaWx1cmUKKyAqLwordHlwZWRlZiBjb25zdCBjaGFyICooKkV3a19QYXN0ZWJv
YXJkX0RhdGFfR2V0X0NiKShFd2tfUGFzdGVib2FyZF9TZWxlY3Rpb25fRm9ybWF0IGZvcm1hdCwg
RXdrX1Bhc3RlYm9hcmRfU2VsZWN0aW9uX1R5cGUgdHlwZSwgY29uc3Qgdm9pZCAqY2xpZW50X2lu
Zm8pOworCisvKioKKyAqIEluaXRpYWxpemVzIHBhc3RlYm9hcmQgY2FsbGJhY2tzLgorICoKKyAq
IEBwYXJhbSBjbGllbnRfaW5mbyBhcHBsaWNhdGlvbiBkYXRhIHBvaW50ZXIgdG8gYmUgZm9yIGNh
bGxiYWNrIGZ1bmN0aW9ucworICogQHBhcmFtIHNldF9jYiBzZXQgZGF0YSBjYWxsYmFjayB0byBi
ZSBzZXQgLSBpdCBtdXN0IG5vdCBiZSBAYyBOVUxMCisgKiBAcGFyYW0gZ2V0X2NiIGdldCBkYXRh
IGNhbGxiYWNrIHRvIGJlIHNldCAtIGl0IG11c3Qgbm90IGJlIEBjIE5VTEwKKyAqLworRUFQSSB2
b2lkIGV3a19wYXN0ZWJvYXJkX2luaXRpYWxpemUoY29uc3Qgdm9pZCAqY2xpZW50X2luZm8sIEV3
a19QYXN0ZWJvYXJkX0RhdGFfU2V0X0NiIHNldF9jYiwgRXdrX1Bhc3RlYm9hcmRfRGF0YV9HZXRf
Q2IgZ2V0X2NiKTsKKworI2lmZGVmIF9fY3BsdXNwbHVzCit9CisjZW5kaWYKKyNlbmRpZiAvLyBl
d2tfcGFzdGVib2FyZF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
Q29udGV4dC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuaAppbmRleCBm
YzkzYTA4Li5jZTE3NDNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
Q29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0LmgKQEAg
LTI5OSw3ICsyOTksNiBAQCBwcml2YXRlOgogI2lmIFBMQVRGT1JNKE1BQykKICAgICB2b2lkIGdl
dFBhc3RlYm9hcmRUeXBlcyhjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBWZWN0b3I8U3Ry
aW5nPiYgcGFzdGVib2FyZFR5cGVzKTsKICAgICB2b2lkIGdldFBhc3RlYm9hcmRQYXRobmFtZXNG
b3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZFR5cGUsIFZlY3RvcjxTdHJpbmc+JiBwYXRobmFtZXMpOwotICAgIHZvaWQgZ2V0UGFzdGVi
b2FyZFN0cmluZ0ZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkVHlwZSwgU3RyaW5nJik7CiAgICAgdm9pZCBnZXRQYXN0ZWJvYXJkQnVm
ZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmRUeXBlLCBTaGFyZWRNZW1vcnk6OkhhbmRsZSYsIHVpbnQ2NF90JiBzaXplKTsKICAg
ICB2b2lkIHBhc3RlYm9hcmRDb3B5KGNvbnN0IFN0cmluZyYgZnJvbVBhc3RlYm9hcmQsIGNvbnN0
IFN0cmluZyYgdG9QYXN0ZWJvYXJkKTsKICAgICB2b2lkIGdldFBhc3RlYm9hcmRDaGFuZ2VDb3Vu
dChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCB1aW50NjRfdCYgY2hhbmdlQ291bnQpOwpA
QCAtMzA5LDkgKzMwOCwxMiBAQCBwcml2YXRlOgogICAgIHZvaWQgYWRkUGFzdGVib2FyZFR5cGVz
KGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXN0
ZWJvYXJkVHlwZXMpOwogICAgIHZvaWQgc2V0UGFzdGVib2FyZFR5cGVzKGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZE5hbWUsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMpOwog
ICAgIHZvaWQgc2V0UGFzdGVib2FyZFBhdGhuYW1lc0ZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkTmFtZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgVmVjdG9yPFN0
cmluZz4mIHBhdGhuYW1lcyk7Ci0gICAgdm9pZCBzZXRQYXN0ZWJvYXJkU3RyaW5nRm9yVHlwZShj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBl
LCBjb25zdCBTdHJpbmcmKTsKICAgICB2b2lkIHNldFBhc3RlYm9hcmRCdWZmZXJGb3JUeXBlKGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUs
IGNvbnN0IFNoYXJlZE1lbW9yeTo6SGFuZGxlJiwgdWludDY0X3Qgc2l6ZSk7CiAjZW5kaWYKKyNp
ZiBQTEFURk9STShNQUMpIHx8IFBMQVRGT1JNKEVGTCkKKyAgICB2b2lkIGdldFBhc3RlYm9hcmRT
dHJpbmdGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZFR5cGUsIFN0cmluZyYpOworICAgIHZvaWQgc2V0UGFzdGVib2FyZFN0cmluZ0Zv
clR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkVHlwZSwgY29uc3QgU3RyaW5nJik7CisjZW5kaWYKIAogI2lmICFQTEFURk9STShNQUMpCiAg
ICAgLy8gRklYTUU6IFRoaXMgYSBkdW1teSBtZXNzYWdlLCB0byBhdm9pZCBicmVha2luZyB0aGUg
YnVpbGQgZm9yIHBsYXRmb3JtcyB0aGF0IGRvbid0IHJlcXVpcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYkNvbnRleHQubWVzc2FnZXMuaW4KaW5kZXggZjJlZGIxZC4uYTE3ZWRj
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQubWVzc2Fn
ZXMuaW4KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQubWVzc2FnZXMu
aW4KQEAgLTMyLDcgKzMyLDYgQEAgbWVzc2FnZXMgLT4gV2ViQ29udGV4dCB7CiAgICAgCiAgICAg
R2V0UGFzdGVib2FyZFR5cGVzKFdURjo6U3RyaW5nIHBhc3RlYm9hcmROYW1lKSAtPiAoVmVjdG9y
PFdURjo6U3RyaW5nPiB0eXBlcykKICAgICBHZXRQYXN0ZWJvYXJkUGF0aG5hbWVzRm9yVHlwZShX
VEY6OlN0cmluZyBwYXN0ZWJvYXJkTmFtZSwgV1RGOjpTdHJpbmcgcGFzdGVib2FyZFR5cGUpIC0+
IChWZWN0b3I8V1RGOjpTdHJpbmc+IHBhdGhuYW1lcykKLSAgICBHZXRQYXN0ZWJvYXJkU3RyaW5n
Rm9yVHlwZShXVEY6OlN0cmluZyBwYXN0ZWJvYXJkTmFtZSwgV1RGOjpTdHJpbmcgcGFzdGVib2Fy
ZFR5cGUpIC0+IChXVEY6OlN0cmluZyBzdHJpbmcpCiAgICAgR2V0UGFzdGVib2FyZEJ1ZmZlckZv
clR5cGUoV1RGOjpTdHJpbmcgcGFzdGVib2FyZE5hbWUsIFdURjo6U3RyaW5nIHBhc3RlYm9hcmRU
eXBlKSAtPiAoV2ViS2l0OjpTaGFyZWRNZW1vcnk6OkhhbmRsZSBoYW5kbGUsIHVpbnQ2NF90IHNp
emUpCiAgICAgUGFzdGVib2FyZENvcHkoV1RGOjpTdHJpbmcgZnJvbVBhc3RlYm9hcmQsIFdURjo6
U3RyaW5nIHRvUGFzdGVib2FyZCkKICAgICBHZXRQYXN0ZWJvYXJkQ2hhbmdlQ291bnQoV1RGOjpT
dHJpbmcgcGFzdGVib2FyZE5hbWUpIC0+ICh1aW50NjRfdCBjaGFuZ2VDb3VudCkKQEAgLTQyLDkg
KzQxLDEzIEBAIG1lc3NhZ2VzIC0+IFdlYkNvbnRleHQgewogICAgIEFkZFBhc3RlYm9hcmRUeXBl
cyhXVEY6OlN0cmluZyBwYXN0ZWJvYXJkTmFtZSwgVmVjdG9yPFdURjo6U3RyaW5nPiBwYXN0ZWJv
YXJkVHlwZXMpCiAgICAgU2V0UGFzdGVib2FyZFR5cGVzKFdURjo6U3RyaW5nIHBhc3RlYm9hcmRO
YW1lLCBWZWN0b3I8V1RGOjpTdHJpbmc+IHBhc3RlYm9hcmRUeXBlcykKICAgICBTZXRQYXN0ZWJv
YXJkUGF0aG5hbWVzRm9yVHlwZShXVEY6OlN0cmluZyBwYXN0ZWJvYXJkTmFtZSwgV1RGOjpTdHJp
bmcgcGFzdGVib2FyZFR5cGUsIFZlY3RvcjxXVEY6OlN0cmluZz4gcGF0aG5hbWVzKQotICAgIFNl
dFBhc3RlYm9hcmRTdHJpbmdGb3JUeXBlKFdURjo6U3RyaW5nIHBhc3RlYm9hcmROYW1lLCBXVEY6
OlN0cmluZyBwYXN0ZWJvYXJkVHlwZSwgV1RGOjpTdHJpbmcgc3RyaW5nKQogICAgIFNldFBhc3Rl
Ym9hcmRCdWZmZXJGb3JUeXBlKFdURjo6U3RyaW5nIHBhc3RlYm9hcmROYW1lLCBXVEY6OlN0cmlu
ZyBwYXN0ZWJvYXJkVHlwZSwgV2ViS2l0OjpTaGFyZWRNZW1vcnk6OkhhbmRsZSBoYW5kbGUsIHVp
bnQ2NF90IHNpemUpCiAjZW5kaWYKKyNpZiBQTEFURk9STShNQUMpIHx8IFBMQVRGT1JNKEVGTCkK
KyAgICBHZXRQYXN0ZWJvYXJkU3RyaW5nRm9yVHlwZShXVEY6OlN0cmluZyBwYXN0ZWJvYXJkTmFt
ZSwgV1RGOjpTdHJpbmcgcGFzdGVib2FyZFR5cGUpIC0+IChXVEY6OlN0cmluZyBzdHJpbmcpCisg
ICAgU2V0UGFzdGVib2FyZFN0cmluZ0ZvclR5cGUoV1RGOjpTdHJpbmcgcGFzdGVib2FyZE5hbWUs
IFdURjo6U3RyaW5nIHBhc3RlYm9hcmRUeXBlLCBXVEY6OlN0cmluZyBzdHJpbmcpCisjZW5kaWYK
KwogCiAjaWYgIVBMQVRGT1JNKE1BQykKICAgICAvLyBGSVhNRTogVGhpcyBhIGR1bW15IG1lc3Nh
Z2UsIHRvIGF2b2lkIGJyZWFraW5nIHRoZSBidWlsZCBmb3IgcGxhdGZvcm1zIHRoYXQgZG9uJ3Qg
cmVxdWlyZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJDb250
ZXh0RWZsLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViQ29udGV4dEVmbC5j
cHAKaW5kZXggNjllYjY2Yi4uOWU0MGY5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL2VmbC9XZWJDb250ZXh0RWZsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvZWZsL1dlYkNvbnRleHRFZmwuY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAKICNpbmNsdWRlICJM
b2dnaW5nLmgiCiAjaW5jbHVkZSAiV2ViSW5zcGVjdG9yU2VydmVyLmgiCisjaW5jbHVkZSAiV2Vi
UGFzdGVib2FyZFByb3h5RWZsLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1l
dGVycy5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlNv
dXBSZXF1ZXN0TWFuYWdlclByb3h5LmgiCkBAIC0xMzMsNCArMTM0LDE0IEBAIHZvaWQgV2ViQ29u
dGV4dDo6c2V0SWdub3JlVExTRXJyb3JzKGJvb2wgaWdub3JlVExTRXJyb3JzKQogICAgIHNlbmRU
b0FsbFByb2Nlc3NlcyhNZXNzYWdlczo6V2ViUHJvY2Vzczo6U2V0SWdub3JlVExTRXJyb3JzKG1f
aWdub3JlVExTRXJyb3JzKSk7CiB9CiAKK3ZvaWQgV2ViQ29udGV4dDo6Z2V0UGFzdGVib2FyZFN0
cmluZ0ZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkVHlwZSwgU3RyaW5nJiBzdHJpbmcpCit7CisgICAgc3RyaW5nID0gV2ViUGFzdGVi
b2FyZFByb3h5RWZsOjpzaGFyZWQoKS0+Z2V0U3RyaW5nRm9yVHlwZShwYXN0ZWJvYXJkVHlwZSwg
cGFzdGVib2FyZE5hbWUpOworfQorCit2b2lkIFdlYkNvbnRleHQ6OnNldFBhc3RlYm9hcmRTdHJp
bmdGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgc3RyaW5nKQoreworICAgIFdlYlBhc3RlYm9hcmRQ
cm94eUVmbDo6c2hhcmVkKCktPnNldFN0cmluZ0ZvclR5cGUoc3RyaW5nLCBwYXN0ZWJvYXJkVHlw
ZSwgcGFzdGVib2FyZE5hbWUpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViUGFzdGVib2FyZENsaWVudEVmbC5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlBhc3RlYm9hcmRDbGllbnRFZmwu
Y3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY4ZGQyZjYKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlBhc3RlYm9hcmRDbGll
bnRFZmwuY3BwCkBAIC0wLDAgKzEsNzIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgU2Ft
c3VuZyBFbGVjdHJvbmljcworICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIg
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVIgT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORworICogTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiV2ViUGFzdGVib2FyZENsaWVudEVmbC5oIgorCisjaW5jbHVkZSAiV0tB
UElDYXN0LmgiCisjaW5jbHVkZSA8V2ViQ29yZS9QYXN0ZWJvYXJkLmg+CisKK25hbWVzcGFjZSBX
ZWJLaXQgeworCitzdGF0aWMgV0tQYXN0ZWJvYXJkU2VsZWN0aW9uRm9ybWF0IGdldFNlbGVjdGlv
bkZvcm1hdEZyb21TdHJpbmcoY29uc3QgU3RyaW5nJiBzZWxlY3Rpb25Gb3JtYXQpCit7CisgICAg
aWYgKGVxdWFsSWdub3JpbmdDYXNlKHNlbGVjdGlvbkZvcm1hdCwgV2ViQ29yZTo6UGFzdGVib2Fy
ZDo6c2VsZWN0aW9uRm9ybWF0VGV4dCkpCisgICAgICAgIHJldHVybiBXS1Bhc3RlYm9hcmRTZWxl
Y3Rpb25Gb3JtYXRUZXh0OworCisgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKHNlbGVjdGlvbkZv
cm1hdCwgV2ViQ29yZTo6UGFzdGVib2FyZDo6c2VsZWN0aW9uRm9ybWF0TWFya3VwKSkKKyAgICAg
ICAgcmV0dXJuIFdLUGFzdGVib2FyZFNlbGVjdGlvbkZvcm1hdE1hcmt1cDsKKworICAgIHJldHVy
biBXS1Bhc3RlYm9hcmRTZWxlY3Rpb25Gb3JtYXRVbmtub3duOworfQorCitzdGF0aWMgV0tQYXN0
ZWJvYXJkU2VsZWN0aW9uVHlwZSBnZXRTZWxlY3Rpb25UeXBlRnJvbVN0cmluZyhjb25zdCBTdHJp
bmcmIHNlbGVjdGlvblR5cGUpCit7CisgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKHNlbGVjdGlv
blR5cGUsIFdlYkNvcmU6OlBhc3RlYm9hcmQ6OnNlbGVjdGlvblR5cGVQcmltYXJ5KSkKKyAgICAg
ICAgcmV0dXJuIFdLUGFzdGVib2FyZFNlbGVjdGlvblR5cGVQcmltYXJ5OworCisgICAgaWYgKGVx
dWFsSWdub3JpbmdDYXNlKHNlbGVjdGlvblR5cGUsIFdlYkNvcmU6OlBhc3RlYm9hcmQ6OnNlbGVj
dGlvblR5cGVDbGlwYm9hcmQpKQorICAgICAgICByZXR1cm4gV0tQYXN0ZWJvYXJkU2VsZWN0aW9u
VHlwZUNsaXBib2FyZDsKKworICAgIHJldHVybiBXS1Bhc3RlYm9hcmRTZWxlY3Rpb25UeXBlVW5r
bm93bjsKK30KKworU3RyaW5nIFdlYlBhc3RlYm9hcmRDbGllbnRFZmw6OmdldFN0cmluZyhjb25z
dCBTdHJpbmcmIHNlbGVjdGlvbkZvcm1hdCwgY29uc3QgU3RyaW5nJiBzZWxlY3Rpb25UeXBlKQor
eworICAgIGlmICghbV9jbGllbnQuZ2V0U3RyaW5nKQorICAgICAgICByZXR1cm4gU3RyaW5nKCk7
CisKKyAgICByZXR1cm4gdG9JbXBsKG1fY2xpZW50LmdldFN0cmluZyhnZXRTZWxlY3Rpb25Gb3Jt
YXRGcm9tU3RyaW5nKHNlbGVjdGlvbkZvcm1hdCksIGdldFNlbGVjdGlvblR5cGVGcm9tU3RyaW5n
KHNlbGVjdGlvblR5cGUpLCBtX2NsaWVudC5jbGllbnRJbmZvKSktPnN0cmluZygpOworfQorCit2
b2lkIFdlYlBhc3RlYm9hcmRDbGllbnRFZmw6OnNldFN0cmluZyhjb25zdCBTdHJpbmcmIHN0cmlu
ZywgY29uc3QgU3RyaW5nJiBzZWxlY3Rpb25Gb3JtYXQsIGNvbnN0IFN0cmluZyYgc2VsZWN0aW9u
VHlwZSkKK3sKKyAgICBpZiAoIW1fY2xpZW50LnNldFN0cmluZykKKyAgICAgICAgcmV0dXJuOwor
CisgICAgbV9jbGllbnQuc2V0U3RyaW5nKHRvQVBJKHN0cmluZy5pbXBsKCkpLCBnZXRTZWxlY3Rp
b25Gb3JtYXRGcm9tU3RyaW5nKHNlbGVjdGlvbkZvcm1hdCksIGdldFNlbGVjdGlvblR5cGVGcm9t
U3RyaW5nKHNlbGVjdGlvblR5cGUpLCBtX2NsaWVudC5jbGllbnRJbmZvKTsKK30KKworfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZs
L1dlYlBhc3RlYm9hcmRDbGllbnRFZmwuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwv
V2ViUGFzdGVib2FyZENsaWVudEVmbC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAuLmFkNTJjNGIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
ZWZsL1dlYlBhc3RlYm9hcmRDbGllbnRFZmwuaApAQCAtMCwwICsxLDQzIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDEyIFNhbXN1bmcgRWxlY3Ryb25pY3MKKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJ
QlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9M
REVSIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcKKyAqIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2lmbmRlZiBXZWJQYXN0ZWJvYXJkQ2xpZW50RWZsX2gKKyNkZWZpbmUgV2ViUGFzdGVib2Fy
ZENsaWVudEVmbF9oCisKKyNpbmNsdWRlICJBUElDbGllbnQuaCIKKyNpbmNsdWRlICJXS1Bhc3Rl
Ym9hcmRFZmwuaCIKKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorCituYW1lc3BhY2UgV2ViS2l0
IHsKKworY2xhc3MgV2ViUGFzdGVib2FyZENsaWVudEVmbCA6IHB1YmxpYyBBUElDbGllbnQ8V0tQ
YXN0ZWJvYXJkQ2xpZW50RWZsLCBXS1Bhc3RlYm9hcmRDbGllbnRFZmxDdXJyZW50VmVyc2lvbj4g
eworcHVibGljOgorICAgIFN0cmluZyBnZXRTdHJpbmcoY29uc3QgU3RyaW5nJiBzZWxlY3Rpb25G
b3JtYXQsIGNvbnN0IFN0cmluZyYgc2VsZWN0aW9uVHlwZSk7CisgICAgdm9pZCBzZXRTdHJpbmco
Y29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBzZWxlY3Rpb25Gb3JtYXQsIGNvbnN0IFN0cmlu
ZyYgc2VsZWN0aW9uVHlwZSk7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlm
IC8vIFdlYlBhc3RlYm9hcmRDbGllbnRFZmxfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL2VmbC9XZWJQYXN0ZWJvYXJkUHJveHlFZmwuY3BwIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL2VmbC9XZWJQYXN0ZWJvYXJkUHJveHlFZmwuY3BwCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAuLmE1M2Q2ZjcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlBhc3RlYm9hcmRQcm94eUVmbC5jcHAKQEAgLTAsMCArMSw1
OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNzCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhP
TERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBU
SEUgQ09QWVJJR0hUIEhPTERFUiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HCisgKiBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJQYXN0
ZWJvYXJkUHJveHlFZmwuaCIKKworI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4K
KyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisK
K1dlYlBhc3RlYm9hcmRQcm94eUVmbCogV2ViUGFzdGVib2FyZFByb3h5RWZsOjpzaGFyZWQoKQor
eworICAgIHN0YXRpYyBXZWJQYXN0ZWJvYXJkUHJveHlFZmwqIHBhc3RlYm9hcmRQcm94eUVmbCA9
IGFkb3B0UmVmKG5ldyBXZWJQYXN0ZWJvYXJkUHJveHlFZmwpLmxlYWtSZWYoKTsKKyAgICByZXR1
cm4gcGFzdGVib2FyZFByb3h5RWZsOworfQorCitXZWJQYXN0ZWJvYXJkUHJveHlFZmw6OldlYlBh
c3RlYm9hcmRQcm94eUVmbCgpCit7Cit9CisKK3ZvaWQgV2ViUGFzdGVib2FyZFByb3h5RWZsOjpz
ZXRDbGllbnQoY29uc3QgV0tQYXN0ZWJvYXJkQ2xpZW50RWZsKiBjbGllbnQpCit7CisgICAgbV9j
bGllbnQuaW5pdGlhbGl6ZShjbGllbnQpOworfQorCitTdHJpbmcgV2ViUGFzdGVib2FyZFByb3h5
RWZsOjpnZXRTdHJpbmdGb3JUeXBlKGNvbnN0IFN0cmluZyYgc2VsZWN0aW9uRm9ybWF0LCBjb25z
dCBTdHJpbmcmIHNlbGVjdGlvblR5cGUpCit7CisgICAgcmV0dXJuIG1fY2xpZW50LmdldFN0cmlu
ZyhzZWxlY3Rpb25Gb3JtYXQsIHNlbGVjdGlvblR5cGUpOworfQorCit2b2lkIFdlYlBhc3RlYm9h
cmRQcm94eUVmbDo6c2V0U3RyaW5nRm9yVHlwZShjb25zdCBTdHJpbmcmIHN0cmluZywgY29uc3Qg
U3RyaW5nJiBzZWxlY3Rpb25Gb3JtYXQsIGNvbnN0IFN0cmluZyYgc2VsZWN0aW9uVHlwZSkKK3sK
KyAgICBtX2NsaWVudC5zZXRTdHJpbmcoc3RyaW5nLCBzZWxlY3Rpb25Gb3JtYXQsIHNlbGVjdGlv
blR5cGUpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViUGFzdGVib2FyZFByb3h5RWZsLmggYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlBhc3RlYm9hcmRQcm94eUVmbC5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFjMWFkMmEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlBhc3RlYm9hcmRQcm94eUVmbC5oCkBAIC0wLDAgKzEs
NTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgU2Ftc3VuZyBFbGVjdHJvbmljcworICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBI
T0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIENPUFlSSUdIVCBIT0xERVIgT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORworICogTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYlBhc3RlYm9hcmRQcm94eUVmbF9oCisjZGVm
aW5lIFdlYlBhc3RlYm9hcmRQcm94eUVmbF9oCisKKyNpbmNsdWRlICJBUElPYmplY3QuaCIKKwor
I2luY2x1ZGUgIldlYlBhc3RlYm9hcmRDbGllbnRFZmwuaCIKKyNpbmNsdWRlIDx3dGYvUGFzc1Jl
ZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisK
K2NsYXNzIFdlYlBhc3RlYm9hcmRQcm94eUVmbCA6IHB1YmxpYyBBUElPYmplY3QgeworcHVibGlj
OgorICAgIHN0YXRpYyBjb25zdCBUeXBlIEFQSVR5cGUgPSBUeXBlUGFzdGVib2FyZFByb3h5Owor
CisgICAgc3RhdGljIFdlYlBhc3RlYm9hcmRQcm94eUVmbCogc2hhcmVkKCk7CisKKyAgICB2b2lk
IHNldENsaWVudChjb25zdCBXS1Bhc3RlYm9hcmRDbGllbnRFZmwqKTsKKyAgICBXZWJQYXN0ZWJv
YXJkQ2xpZW50RWZsJiBjbGllbnQoKSB7IHJldHVybiBtX2NsaWVudDsgfQorCisgICAgU3RyaW5n
IGdldFN0cmluZ0ZvclR5cGUoY29uc3QgU3RyaW5nJiBzZWxlY3Rpb25Gb3JtYXQsIGNvbnN0IFN0
cmluZyYgc2VsZWN0aW9uVHlwZSk7CisgICAgdm9pZCBzZXRTdHJpbmdGb3JUeXBlKGNvbnN0IFN0
cmluZyYsIGNvbnN0IFN0cmluZyYgc2VsZWN0aW9uRm9ybWF0LCBjb25zdCBTdHJpbmcmIHNlbGVj
dGlvblR5cGUpOworCitwcml2YXRlOgorICAgIFdlYlBhc3RlYm9hcmRQcm94eUVmbCgpOworCisg
ICAgdmlydHVhbCBUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBBUElUeXBlOyB9CisKKyAgICBX
ZWJQYXN0ZWJvYXJkQ2xpZW50RWZsIG1fY2xpZW50OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CisKKyNlbmRpZiAvLyBXZWJQYXN0ZWJvYXJkUHJveHlFZmxfaApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3Bw
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGll
bnQuY3BwCmluZGV4IGM2Y2M5YzIuLmU0YzRhZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAK
QEAgLTUxLDYgKzUxLDggQEAKICNpZiBQTEFURk9STShRVCkKICNpbmNsdWRlIDxRQ2xpcGJvYXJk
PgogI2luY2x1ZGUgPFFHdWlBcHBsaWNhdGlvbj4KKyNlbmRpZgorI2lmIFBMQVRGT1JNKFFUKSB8
fCBQTEFURk9STShFRkwpCiAjaW5jbHVkZSA8V2ViQ29yZS9QYXN0ZWJvYXJkLmg+CiAjZW5kaWYK
IApAQCAtMTkzLDEyICsxOTUsMTIgQEAgdm9pZCBXZWJFZGl0b3JDbGllbnQ6OnJlc3BvbmRUb0No
YW5nZWRTZWxlY3Rpb24oRnJhbWUqIGZyYW1lKQogCiAgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlUHJveHk6OkVkaXRvclN0YXRlQ2hhbmdlZChzdGF0ZSkpOwogCi0jaWYgUExBVEZP
Uk0oR1RLKSB8fCBQTEFURk9STShRVCkKKyNpZiBQTEFURk9STShHVEspIHx8IFBMQVRGT1JNKFFU
KSB8fCBQTEFURk9STShFRkwpCiAgICAgdXBkYXRlR2xvYmFsU2VsZWN0aW9uKGZyYW1lKTsKICNl
bmRpZgogfQogCi0jaWYgUExBVEZPUk0oUVQpCisjaWYgUExBVEZPUk0oUVQpIHx8IFBMQVRGT1JN
KEVGTCkKIC8vIEZJWE1FOiBVc2UgdGhpcyBmdW5jdGlvbiBmb3Igb3RoZXIgWDExLWJhc2VkIHBs
YXRmb3JtcyB0aGF0IG5lZWQgdG8gbWFudWFsbHkgdXBkYXRlIHRoZSBnbG9iYWwgc2VsZWN0aW9u
Lgogdm9pZCBXZWJFZGl0b3JDbGllbnQ6OnVwZGF0ZUdsb2JhbFNlbGVjdGlvbihGcmFtZSogZnJh
bWUpCiB7CkBAIC00ODIsNyArNDg0LDcgQEAgYm9vbCBXZWJFZGl0b3JDbGllbnQ6OnN1cHBvcnRz
R2xvYmFsU2VsZWN0aW9uKCkKIHsKICNpZiBQTEFURk9STShRVCkgJiYgIWRlZmluZWQoUVRfTk9f
Q0xJUEJPQVJEKQogICAgIHJldHVybiBxQXBwLT5jbGlwYm9hcmQoKS0+c3VwcG9ydHNTZWxlY3Rp
b24oKTsKLSNlbGlmIFBMQVRGT1JNKEdUSykgJiYgUExBVEZPUk0oWDExKQorI2VsaWYgUExBVEZP
Uk0oR1RLKSAmJiBQTEFURk9STShYMTEpIHx8IFBMQVRGT1JNKEVGTCkKICAgICByZXR1cm4gdHJ1
ZTsKICNlbHNlCiAgICAgLy8gRklYTUU6IFJldHVybiB0cnVlIG9uIG90aGVyIFgxMSBwbGF0Zm9y
bXMgd2hlbiB0aGV5IHN1cHBvcnQgZ2xvYmFsIHNlbGVjdGlvbi4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmggYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5o
CmluZGV4IDY0ZjRhMWIuLjY0NGY0YTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaApAQCAtMTI1LDcg
KzEyNSw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBleGVjdXRlUGVuZGluZ0VkaXRvckNvbW1hbmRz
KFdlYkNvcmU6OkZyYW1lKiwgVmVjdG9yPFdURjo6U3RyaW5nPiwgYm9vbCkgT1ZFUlJJREU7CiAg
ICAgdm9pZCBnZXRFZGl0b3JDb21tYW5kc0ZvcktleUV2ZW50KGNvbnN0IFdlYkNvcmU6OktleWJv
YXJkRXZlbnQqLCBWZWN0b3I8V1RGOjpTdHJpbmc+JikgT1ZFUlJJREU7CiAjZW5kaWYKLSNpZiBQ
TEFURk9STShHVEspIHx8IFBMQVRGT1JNKFFUKQorI2lmIFBMQVRGT1JNKEdUSykgfHwgUExBVEZP
Uk0oUVQpIHx8IFBMQVRGT1JNKEVGTCkKICAgICB2b2lkIHVwZGF0ZUdsb2JhbFNlbGVjdGlvbihX
ZWJDb3JlOjpGcmFtZSopOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVz
LmNwcAppbmRleCA5ZGM0OGM1Li42OTcyM2JhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAKKysrIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0
ZWdpZXMuY3BwCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiV2ViQ29udGV4dE1lc3NhZ2Vz
LmgiCiAjaW5jbHVkZSAiV2ViQ29va2llTWFuYWdlci5oIgogI2luY2x1ZGUgIldlYkNvcmVBcmd1
bWVudENvZGVycy5oIgorI2luY2x1ZGUgIldlYlBhZ2VQcm94eU1lc3NhZ2VzLmgiCiAjaW5jbHVk
ZSAiV2ViUHJvY2Vzcy5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NQcm94eU1lc3NhZ2VzLmgiCiAj
aW5jbHVkZSA8V2ViQ29yZS9Db2xvci5oPgpAQCAtMzA2LDE0ICszMDcsNiBAQCB2b2lkIFdlYlBs
YXRmb3JtU3RyYXRlZ2llczo6Z2V0UGF0aG5hbWVzRm9yVHlwZShWZWN0b3I8U3RyaW5nPiYgcGF0
aG5hbWVzLCBjb25zdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgTWVzc2FnZXM6OldlYkNvbnRleHQ6OkdldFBhc3RlYm9hcmRQYXRobmFtZXNGb3JUeXBl
OjpSZXBseShwYXRobmFtZXMpLCAwKTsKIH0KIAotU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2ll
czo6c3RyaW5nRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lKQotewotICAgIFN0cmluZyB2YWx1ZTsKLSAgICBXZWJQcm9jZXNz
OjpzaGFyZWQoKS5jb25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJDb250ZXh0OjpH
ZXRQYXN0ZWJvYXJkU3RyaW5nRm9yVHlwZShwYXN0ZWJvYXJkTmFtZSwgcGFzdGVib2FyZFR5cGUp
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2Fn
ZXM6OldlYkNvbnRleHQ6OkdldFBhc3RlYm9hcmRTdHJpbmdGb3JUeXBlOjpSZXBseSh2YWx1ZSks
IDApOwotICAgIHJldHVybiB2YWx1ZTsKLX0KLQogdm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6
OmNvcHkoY29uc3QgU3RyaW5nJiBmcm9tUGFzdGVib2FyZCwgY29uc3QgU3RyaW5nJiB0b1Bhc3Rl
Ym9hcmQpCiB7CiAgICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkuY29ubmVjdGlvbigpLT5zZW5kKE1l
c3NhZ2VzOjpXZWJDb250ZXh0OjpQYXN0ZWJvYXJkQ29weShmcm9tUGFzdGVib2FyZCwgdG9QYXN0
ZWJvYXJkKSwgMCk7CkBAIC0zNzYsNiArMzY5LDE1IEBAIHZvaWQgV2ViUGxhdGZvcm1TdHJhdGVn
aWVzOjpzZXRQYXRobmFtZXNGb3JUeXBlKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXRobmFtZXMs
CiB7CiAgICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkuY29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJDb250ZXh0OjpTZXRQYXN0ZWJvYXJkUGF0aG5hbWVzRm9yVHlwZShwYXN0ZWJvYXJkTmFt
ZSwgcGFzdGVib2FyZFR5cGUsIHBhdGhuYW1lcyksIDApOwogfQorI2VuZGlmCisjaWYgUExBVEZP
Uk0oTUFDKSB8fCBQTEFURk9STShFRkwpCitTdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpz
dHJpbmdGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZE5hbWUpCit7CisgICAgU3RyaW5nIHZhbHVlOworICAgIFdlYlByb2Nlc3M6OnNo
YXJlZCgpLmNvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYkNvbnRleHQ6OkdldFBh
c3RlYm9hcmRTdHJpbmdGb3JUeXBlKHBhc3RlYm9hcmROYW1lLCBwYXN0ZWJvYXJkVHlwZSksIE1l
c3NhZ2VzOjpXZWJDb250ZXh0OjpHZXRQYXN0ZWJvYXJkU3RyaW5nRm9yVHlwZTo6UmVwbHkodmFs
dWUpLCAwKTsKKworICAgIHJldHVybiB2YWx1ZTsKK30KIAogdm9pZCBXZWJQbGF0Zm9ybVN0cmF0
ZWdpZXM6OnNldFN0cmluZ0ZvclR5cGUoY29uc3QgU3RyaW5nJiBzdHJpbmcsIGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCiB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRm
b3JtU3RyYXRlZ2llcy5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaAppbmRleCBjYzBkYzhjLi5jMzFkNmY1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3Jt
U3RyYXRlZ2llcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgKQEAgLTg2LDcgKzg2LDYgQEAgcHJpdmF0ZToKICAg
ICB2aXJ0dWFsIHZvaWQgZ2V0VHlwZXMoVmVjdG9yPFN0cmluZz4mIHR5cGVzLCBjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2Vi
Q29yZTo6U2hhcmVkQnVmZmVyPiBidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIE9WRVJSSURFOwogICAgIHZpcnR1
YWwgdm9pZCBnZXRQYXRobmFtZXNGb3JUeXBlKFZlY3RvcjxTdHJpbmc+JiBwYXRobmFtZXMsIGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUp
IE9WRVJSSURFOwotICAgIHZpcnR1YWwgU3RyaW5nIHN0cmluZ0ZvclR5cGUoY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgT1ZFUlJJREU7
CiAgICAgdmlydHVhbCBpbnQgY2hhbmdlQ291bnQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBTdHJpbmcgdW5pcXVlTmFtZSgpIE9WRVJSSURFOwog
ICAgIHZpcnR1YWwgV2ViQ29yZTo6Q29sb3IgY29sb3IoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
TmFtZSkgT1ZFUlJJREU7CkBAIC05Nyw2ICs5Niw5IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2
b2lkIHNldFR5cGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBzZXRC
dWZmZXJGb3JUeXBlKFBhc3NSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiwgY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgT1ZFUlJJ
REU7CiAgICAgdmlydHVhbCB2b2lkIHNldFBhdGhuYW1lc0ZvclR5cGUoY29uc3QgVmVjdG9yPFN0
cmluZz4mLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lKSBPVkVSUklERTsKKyNlbmRpZgorI2lmIFBMQVRGT1JNKE1BQykgfHwgUExBVEZP
Uk0oRUZMKQorICAgIHZpcnR1YWwgU3RyaW5nIHN0cmluZ0ZvclR5cGUoY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgT1ZFUlJJREU7CiAg
ICAgdmlydHVhbCB2b2lkIHNldFN0cmluZ0ZvclR5cGUoY29uc3QgU3RyaW5nJiwgY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgT1ZFUlJJ
REU7CiAjZW5kaWYKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>182762</attachid>
            <date>2013-01-15 07:20:04 -0800</date>
            <delta_ts>2013-01-16 06:03:55 -0800</delta_ts>
            <desc>fixes after review2</desc>
            <filename>pasteboard7.diff</filename>
            <type>text/plain</type>
            <size>52536</size>
            <attacher name="Michal Pakula vel Rutka">mpakulavelrutka</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAxNTRhYjY0Li5kN2MxMDkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzIg
QEAKKzIwMTMtMDEtMTUgIE1pY2hhxYIgUGFrdcWCYSB2ZWwgUnV0a2EgIDxtLnBha3VsYUBzYW1z
dW5nLmNvbT4KKworICAgICAgICBbRUZMXVtXSzJdIEltcGxlbWVudGF0aW9uIG9mIHBhc3RlYm9h
cmQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMjQ4
NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEVGTCBk
b2VzIG5vdCBwcm92aWRlIHBsYXRmb3JtLXdpZGUgY29weSBhbmQgcGFzdGUgc3VwcG9ydCwgYnV0
IGFuIEFQSSBpbiBVSSB0b29sa2l0IC0gRWxlbWVudGFyeS4KKyAgICAgICAgV2ViS2l0IEVGTCBz
aG91bGQgYmUgZWxlbWVudGFyeSBpbmRlcGVuZGVudCwgYWxzbyBFbGVtZW50YXJ5IGNvcHkgYW5k
IHBhc3RlIEFQSSBuZWVkcyBhIFVJIHdpZGdldAorICAgICAgICBhcyBvbmUgb2YgaXRzIGFyZ3Vt
ZW50LiBUaHVzLCB3ZSBjYW5ub3QgaW1wbGVtZW50IHBhc3RlYm9hcmQgaW5zaWRlIFdlYkNvcmUg
bGlrZSBvdGhlciBwb3J0cywKKyAgICAgICAgYnV0IHRoZSBpbXBsZW1lbnRhdGlvbiBoYXMgdG8g
YmUgZG9uZSBvbiBhcHBsaWNhdGlvbiBzaWRlLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyAtIGFs
cmVhZHkgY292ZXJlZCBieSBleGlzdGluZyB0ZXN0cy4KKworICAgICAgICAqIHBsYXRmb3JtL1Bh
c3RlYm9hcmQuaDoKKyAgICAgICAgKFBhc3RlYm9hcmQpOgorICAgICAgICAqIHBsYXRmb3JtL1Bh
c3RlYm9hcmRTdHJhdGVneS5oOgorICAgICAgICAoUGFzdGVib2FyZFN0cmF0ZWd5KToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9lZmwvUGFzdGVib2FyZEVmbC5jcHA6CisgICAgICAgIChXZWJDb3JlKToK
KyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OlBhc3RlYm9hcmQpOgorICAgICAgICAoV2Vi
Q29yZTo6UGFzdGVib2FyZDo6d3JpdGVQbGFpblRleHQpOgorICAgICAgICAoV2ViQ29yZTo6UGFz
dGVib2FyZDo6d3JpdGVTZWxlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6
d3JpdGVVUkwpOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6ZG9jdW1lbnRGcmFnbWVu
dCk6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjpwbGFpblRleHQpOgorICAgICAgICAo
V2ViQ29yZTo6UGFzdGVib2FyZDo6aXNTZWxlY3Rpb25Nb2RlKToKKyAgICAgICAgKFdlYkNvcmU6
OlBhc3RlYm9hcmQ6OnNldFNlbGVjdGlvbk1vZGUpOgorCiAyMDEzLTAxLTE0ICBLZW50YXJvIEhh
cmEgIDxoYXJha2VuQGNocm9taXVtLm9yZz4KIAogICAgICAgICBbVjhdIE1ha2UgYW4gSXNvbGF0
ZSBwYXJhbWV0ZXIgbWFuZGF0b3J5IGluIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSBtZXRob2RzCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmgKaW5kZXggNDAyMmE2MS4uNjEzZWRmZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuaApAQCAtMTAwLDcgKzEwMCw3IEBAIHB1Ymxp
YzoKICAgICBQYXNzUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGRvY3VtZW50RnJhZ21lbnQoRnJh
bWUqLCBQYXNzUmVmUHRyPFJhbmdlPiwgYm9vbCBhbGxvd1BsYWluVGV4dCwgYm9vbCYgY2hvc2VQ
bGFpblRleHQpOwogICAgIFN0cmluZyBwbGFpblRleHQoRnJhbWUqID0gMCk7CiAgICAgCi0jaWYg
UExBVEZPUk0oUVQpIHx8IFBMQVRGT1JNKENIUk9NSVVNKSB8fCBQTEFURk9STShHVEspCisjaWYg
UExBVEZPUk0oUVQpIHx8IFBMQVRGT1JNKENIUk9NSVVNKSB8fCBQTEFURk9STShHVEspIHx8IFBM
QVRGT1JNKEVGTCkKICAgICBib29sIGlzU2VsZWN0aW9uTW9kZSgpIGNvbnN0OwogICAgIHZvaWQg
c2V0U2VsZWN0aW9uTW9kZShib29sKTsKICNlbHNlCkBAIC0xMTIsNiArMTEyLDEzIEBAIHB1Ymxp
YzoKICAgICB+UGFzdGVib2FyZCgpOwogI2VuZGlmCiAKKyNpZiBQTEFURk9STShFRkwpCisgICAg
c3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IHNlbGVjdGlvbkZvcm1hdFRleHQ7CisgICAgc3RhdGlj
IGNvbnN0IGNoYXIqIGNvbnN0IHNlbGVjdGlvbkZvcm1hdE1hcmt1cDsKKyAgICBzdGF0aWMgY29u
c3QgY2hhciogY29uc3Qgc2VsZWN0aW9uVHlwZVByaW1hcnk7CisgICAgc3RhdGljIGNvbnN0IGNo
YXIqIGNvbnN0IHNlbGVjdGlvblR5cGVDbGlwYm9hcmQ7CisjZW5kaWYKKwogcHJpdmF0ZToKICAg
ICBQYXN0ZWJvYXJkKCk7CiAKQEAgLTEyMyw3ICsxMzAsNyBAQCBwcml2YXRlOgogICAgIEhXTkQg
bV9vd25lcjsKICNlbmRpZgogCi0jaWYgUExBVEZPUk0oUVQpIHx8IFBMQVRGT1JNKENIUk9NSVVN
KQorI2lmIFBMQVRGT1JNKFFUKSB8fCBQTEFURk9STShDSFJPTUlVTSkgfHwgUExBVEZPUk0oRUZM
KQogICAgIGJvb2wgbV9zZWxlY3Rpb25Nb2RlOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRTdHJhdGVneS5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vUGFzdGVib2FyZFN0cmF0ZWd5LmgKaW5kZXggZjkyMmM2Ni4uZDkwNjkyMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZFN0cmF0ZWd5LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZFN0cmF0ZWd5LmgKQEAgLTQ0LDcg
KzQ0LDYgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBnZXRUeXBlcyhWZWN0b3I8U3RyaW5n
PiYgdHlwZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpID0gMDsKICAgICB2aXJ0dWFs
IFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpID0gMDsKICAgICB2aXJ0
dWFsIHZvaWQgZ2V0UGF0aG5hbWVzRm9yVHlwZShWZWN0b3I8U3RyaW5nPiYgcGF0aG5hbWVzLCBj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
KSA9IDA7Ci0gICAgdmlydHVhbCBTdHJpbmcgc3RyaW5nRm9yVHlwZShjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSA9IDA7CiAgICAgdmly
dHVhbCBpbnQgY2hhbmdlQ291bnQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgPSAwOwog
ICAgIHZpcnR1YWwgU3RyaW5nIHVuaXF1ZU5hbWUoKSA9IDA7CiAgICAgdmlydHVhbCBDb2xvciBj
b2xvcihjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSA9IDA7CkBAIC01NSw2ICs1NCw5IEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0VHlwZXMoY29uc3QgVmVjdG9yPFN0cmluZz4m
IHBhc3RlYm9hcmRUeXBlcywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgPSAwOwogICAg
IHZpcnR1YWwgdm9pZCBzZXRCdWZmZXJGb3JUeXBlKFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiwg
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzZXRQYXRobmFtZXNGb3JUeXBlKGNvbnN0IFZlY3Rv
cjxTdHJpbmc+JiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSkgPSAwOworI2VuZGlmCisjaWYgUExBVEZPUk0oTUFDKSB8fCBQTEFURk9S
TShFRkwpCisgICAgdmlydHVhbCBTdHJpbmcgc3RyaW5nRm9yVHlwZShjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSA9IDA7CiAgICAgdmly
dHVhbCB2b2lkIHNldFN0cmluZ0ZvclR5cGUoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgPSAwOwogI2VuZGlm
CiBwcm90ZWN0ZWQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvUGFz
dGVib2FyZEVmbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvUGFzdGVib2FyZEVm
bC5jcHAKaW5kZXggN2ExYWM0NS4uNDRkMmM3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZWZsL1Bhc3RlYm9hcmRFZmwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2VmbC9QYXN0ZWJvYXJkRWZsLmNwcApAQCAtMjgsNiArMjgsOCBAQAogI2luY2x1ZGUgIklt
YWdlLmgiCiAjaW5jbHVkZSAiS1VSTC5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCisj
aW5jbHVkZSAiUGFzdGVib2FyZFN0cmF0ZWd5LmgiCisjaW5jbHVkZSAiUGxhdGZvcm1TdHJhdGVn
aWVzLmgiCiAjaW5jbHVkZSAiUmVuZGVySW1hZ2UuaCIKICNpbmNsdWRlICJtYXJrdXAuaCIKICNp
bmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CkBAIC0zNSw2ICszNywxMSBAQAogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKK2NvbnN0IGNoYXIqIGNvbnN0IFBhc3RlYm9hcmQ6OnNlbGVjdGlvbkZv
cm1hdFRleHQgPSAiVGV4dCI7Citjb25zdCBjaGFyKiBjb25zdCBQYXN0ZWJvYXJkOjpzZWxlY3Rp
b25Gb3JtYXRNYXJrdXAgPSAiTWFya3VwIjsKK2NvbnN0IGNoYXIqIGNvbnN0IFBhc3RlYm9hcmQ6
OnNlbGVjdGlvblR5cGVQcmltYXJ5ID0gIlByaW1hcnkiOworY29uc3QgY2hhciogY29uc3QgUGFz
dGVib2FyZDo6c2VsZWN0aW9uVHlwZUNsaXBib2FyZCA9ICJDbGlwYm9hcmQiOworCiBQYXN0ZWJv
YXJkKiBQYXN0ZWJvYXJkOjpnZW5lcmFsUGFzdGVib2FyZCgpCiB7CiAgICAgc3RhdGljIFBhc3Rl
Ym9hcmQqIHBhc3RlYm9hcmQgPSBuZXcgUGFzdGVib2FyZCgpOwpAQCAtNDIsMjMgKzQ5LDI3IEBA
IFBhc3RlYm9hcmQqIFBhc3RlYm9hcmQ6OmdlbmVyYWxQYXN0ZWJvYXJkKCkKIH0KIAogUGFzdGVi
b2FyZDo6UGFzdGVib2FyZCgpCisgICAgOiBtX3NlbGVjdGlvbk1vZGUoZmFsc2UpCiB7Ci0gICAg
bm90SW1wbGVtZW50ZWQoKTsKIH0KIAotdm9pZCBQYXN0ZWJvYXJkOjp3cml0ZVBsYWluVGV4dChj
b25zdCBTdHJpbmcmLCBTbWFydFJlcGxhY2VPcHRpb24pCit2b2lkIFBhc3RlYm9hcmQ6OndyaXRl
UGxhaW5UZXh0KGNvbnN0IFN0cmluZyYgdGV4dCwgU21hcnRSZXBsYWNlT3B0aW9uKQogewotICAg
IG5vdEltcGxlbWVudGVkKCk7CisgICAgcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRT
dHJhdGVneSgpLT5zZXRTdHJpbmdGb3JUeXBlKHRleHQsIHNlbGVjdGlvbkZvcm1hdFRleHQsIG1f
c2VsZWN0aW9uTW9kZSA/IHNlbGVjdGlvblR5cGVQcmltYXJ5IDogc2VsZWN0aW9uVHlwZUNsaXBi
b2FyZCk7CiB9CiAKLXZvaWQgUGFzdGVib2FyZDo6d3JpdGVTZWxlY3Rpb24oUmFuZ2UqLCBib29s
LCBGcmFtZSopCit2b2lkIFBhc3RlYm9hcmQ6OndyaXRlU2VsZWN0aW9uKFJhbmdlKiBzZWxlY3Rl
ZFJhbmdlLCBib29sLCBGcmFtZSopCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBTdHJp
bmcgbWFya3VwID0gY3JlYXRlTWFya3VwKHNlbGVjdGVkUmFuZ2UsIDAsIEFubm90YXRlRm9ySW50
ZXJjaGFuZ2UsIGZhbHNlLCBSZXNvbHZlTm9uTG9jYWxVUkxzKTsKKyAgICBwbGF0Zm9ybVN0cmF0
ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPnNldFN0cmluZ0ZvclR5cGUobWFya3VwLCBz
ZWxlY3Rpb25Gb3JtYXRNYXJrdXAsIG1fc2VsZWN0aW9uTW9kZSA/IHNlbGVjdGlvblR5cGVQcmlt
YXJ5IDogc2VsZWN0aW9uVHlwZUNsaXBib2FyZCk7CiB9CiAKLXZvaWQgUGFzdGVib2FyZDo6d3Jp
dGVVUkwoY29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYsIEZyYW1lKikKK3ZvaWQgUGFzdGVib2Fy
ZDo6d3JpdGVVUkwoY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmLCBGcmFtZSopCiB7Ci0g
ICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBpZiAodXJsLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0
dXJuOworCisgICAgcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT5z
ZXRTdHJpbmdGb3JUeXBlKHVybC5zdHJpbmcoKSwgc2VsZWN0aW9uRm9ybWF0TWFya3VwLCBtX3Nl
bGVjdGlvbk1vZGUgPyBzZWxlY3Rpb25UeXBlUHJpbWFyeSA6IHNlbGVjdGlvblR5cGVDbGlwYm9h
cmQpOwogfQogCiB2b2lkIFBhc3RlYm9hcmQ6OndyaXRlSW1hZ2UoTm9kZSosIGNvbnN0IEtVUkwm
LCBjb25zdCBTdHJpbmcmKQpAQCAtODIsMTYgKzkzLDQyIEBAIGJvb2wgUGFzdGVib2FyZDo6Y2Fu
U21hcnRSZXBsYWNlKCkKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLVBhc3NSZWZQdHI8RG9jdW1l
bnRGcmFnbWVudD4gUGFzdGVib2FyZDo6ZG9jdW1lbnRGcmFnbWVudChGcmFtZSosIFBhc3NSZWZQ
dHI8UmFuZ2U+LCBib29sLCBib29sJikKK1Bhc3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gUGFz
dGVib2FyZDo6ZG9jdW1lbnRGcmFnbWVudChGcmFtZSogZnJhbWUsIFBhc3NSZWZQdHI8UmFuZ2U+
IGNvbnRleHQsIGJvb2wgYWxsb3dQbGFpblRleHQsIGJvb2wmIGNob3NlUGxhaW5UZXh0KQogewot
ICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgY2hvc2VQbGFpblRleHQgPSBmYWxzZTsKKworICAg
IFN0cmluZyBkYXRhID0gcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgp
LT5zdHJpbmdGb3JUeXBlKHNlbGVjdGlvbkZvcm1hdE1hcmt1cCwgbV9zZWxlY3Rpb25Nb2RlID8g
c2VsZWN0aW9uVHlwZVByaW1hcnkgOiBzZWxlY3Rpb25UeXBlQ2xpcGJvYXJkKTsKKworICAgIGlm
ICghZGF0YS5pc0VtcHR5KCkpIHsKKyAgICAgICAgaWYgKFJlZlB0cjxEb2N1bWVudEZyYWdtZW50
PiBmcmFnbWVudCA9IGNyZWF0ZUZyYWdtZW50RnJvbU1hcmt1cChmcmFtZS0+ZG9jdW1lbnQoKSwg
ZGF0YSwgZW1wdHlTdHJpbmcoKSwgRGlzYWxsb3dTY3JpcHRpbmdDb250ZW50KSkKKyAgICAgICAg
ICAgIHJldHVybiBmcmFnbWVudC5yZWxlYXNlKCk7CisgICAgfQorCisgICAgZGF0YSA9IHBsYXRm
b3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+c3RyaW5nRm9yVHlwZShzZWxl
Y3Rpb25Gb3JtYXRUZXh0LCBtX3NlbGVjdGlvbk1vZGUgPyBzZWxlY3Rpb25UeXBlUHJpbWFyeSA6
IHNlbGVjdGlvblR5cGVDbGlwYm9hcmQpOworCisgICAgaWYgKGFsbG93UGxhaW5UZXh0ICYmICFk
YXRhLmlzRW1wdHkoKSkgeworICAgICAgICBjaG9zZVBsYWluVGV4dCA9IHRydWU7CisgICAgICAg
IFJlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBmcmFnbWVudCA9IGNyZWF0ZUZyYWdtZW50RnJvbVRl
eHQoY29udGV4dC5nZXQoKSwgZGF0YSk7CisgICAgICAgIGlmIChmcmFnbWVudCkKKyAgICAgICAg
ICAgIHJldHVybiBmcmFnbWVudC5yZWxlYXNlKCk7CisgICAgfQorCiAgICAgcmV0dXJuIDA7CiB9
CiAKIFN0cmluZyBQYXN0ZWJvYXJkOjpwbGFpblRleHQoRnJhbWUqKQogewotICAgIG5vdEltcGxl
bWVudGVkKCk7Ci0gICAgcmV0dXJuIFN0cmluZygpOworICAgIHJldHVybiBwbGF0Zm9ybVN0cmF0
ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPnN0cmluZ0ZvclR5cGUoc2VsZWN0aW9uRm9y
bWF0VGV4dCwgbV9zZWxlY3Rpb25Nb2RlID8gc2VsZWN0aW9uVHlwZVByaW1hcnkgOiBzZWxlY3Rp
b25UeXBlQ2xpcGJvYXJkKTsKK30KKworYm9vbCBQYXN0ZWJvYXJkOjppc1NlbGVjdGlvbk1vZGUo
KSBjb25zdAoreworICAgIHJldHVybiBtX3NlbGVjdGlvbk1vZGU7Cit9CisKK3ZvaWQgUGFzdGVi
b2FyZDo6c2V0U2VsZWN0aW9uTW9kZShib29sIHNlbGVjdGlvbk1vZGUpCit7CisgICAgbV9zZWxl
Y3Rpb25Nb2RlID0gc2VsZWN0aW9uTW9kZTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9lZmwvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCmluZGV4IDI3
YmM2YmUuLjRiMmRlOGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMiBAQAorMjAxMy0w
MS0xNSAgTWljaGHFgiBQYWt1xYJhIHZlbCBSdXRrYSAgPG0ucGFrdWxhQHNhbXN1bmcuY29tPgor
CisgICAgICAgIFtFRkxdW1dLMl0gSW1wbGVtZW50YXRpb24gb2YgcGFzdGVib2FyZAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAyNDg0CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRUZMIGRvZXMgbm90IHBy
b3ZpZGUgcGxhdGZvcm0td2lkZSBjb3B5IGFuZCBwYXN0ZSBzdXBwb3J0LCBidXQgYW4gQVBJIGlu
IFVJIHRvb2xraXQgLSBFbGVtZW50YXJ5LgorICAgICAgICBXZWJLaXQgRUZMIHNob3VsZCBiZSBl
bGVtZW50YXJ5IGluZGVwZW5kZW50LCBhbHNvIEVsZW1lbnRhcnkgY29weSBhbmQgcGFzdGUgQVBJ
IG5lZWRzIGEgVUkgd2lkZ2V0CisgICAgICAgIGFzIG9uZSBvZiBpdHMgYXJndW1lbnQuIFRodXMs
IHdlIGNhbm5vdCBpbXBsZW1lbnQgcGFzdGVib2FyZCBpbnNpZGUgV2ViQ29yZSBsaWtlIG90aGVy
IHBvcnRzLAorICAgICAgICBidXQgdGhlIGltcGxlbWVudGF0aW9uIGhhcyB0byBiZSBkb25lIG9u
IGFwcGxpY2F0aW9uIHNpZGUuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9QbGF0Zm9ybVN0
cmF0ZWdpZXNFZmwuY3BwOgorICAgICAgICAoUGxhdGZvcm1TdHJhdGVnaWVzRWZsOjpjcmVhdGVQ
YXN0ZWJvYXJkU3RyYXRlZ3kpOgorICAgICAgICAoUGxhdGZvcm1TdHJhdGVnaWVzRWZsOjpzZXRT
dHJpbmdGb3JUeXBlKToKKyAgICAgICAgKFBsYXRmb3JtU3RyYXRlZ2llc0VmbDo6c3RyaW5nRm9y
VHlwZSk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvUGxhdGZvcm1TdHJhdGVnaWVzRWZsLmg6
CisgICAgICAgIChQbGF0Zm9ybVN0cmF0ZWdpZXNFZmwpOgorCiAyMDEzLTAxLTEzICBLd2FuZ1lv
bmcgQ2hvaSAgPGt5MC5jaG9pQHNhbXN1bmcuY29tPgogCiAgICAgICAgIFtFRkxdIFVucmV2aWV3
ZWQgYnVpbGQgZml4IGFmdGVyIHIxMzk1NDEKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZs
L1dlYkNvcmVTdXBwb3J0L1BsYXRmb3JtU3RyYXRlZ2llc0VmbC5jcHAgYi9Tb3VyY2UvV2ViS2l0
L2VmbC9XZWJDb3JlU3VwcG9ydC9QbGF0Zm9ybVN0cmF0ZWdpZXNFZmwuY3BwCmluZGV4IGE3ODNm
NTAuLjE3ODk3YjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0
L1BsYXRmb3JtU3RyYXRlZ2llc0VmbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9lZmwvV2ViQ29y
ZVN1cHBvcnQvUGxhdGZvcm1TdHJhdGVnaWVzRWZsLmNwcApAQCAtNjIsOCArNjIsNyBAQCBMb2Fk
ZXJTdHJhdGVneSogUGxhdGZvcm1TdHJhdGVnaWVzRWZsOjpjcmVhdGVMb2FkZXJTdHJhdGVneSgp
CiAKIFBhc3RlYm9hcmRTdHJhdGVneSogUGxhdGZvcm1TdHJhdGVnaWVzRWZsOjpjcmVhdGVQYXN0
ZWJvYXJkU3RyYXRlZ3koKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuIDA7
CisgICAgcmV0dXJuIHRoaXM7CiB9CiAKIFBsdWdpblN0cmF0ZWd5KiBQbGF0Zm9ybVN0cmF0ZWdp
ZXNFZmw6OmNyZWF0ZVBsdWdpblN0cmF0ZWd5KCkKQEAgLTE2MiwzICsxNjEsMTUgQEAgdm9pZCBQ
bGF0Zm9ybVN0cmF0ZWdpZXNFZmw6OmFkZFZpc2l0ZWRMaW5rKFBhZ2UqIHBhZ2UsIExpbmtIYXNo
IGhhc2gpCiB7CiAgICAgcGFnZS0+Z3JvdXAoKS5hZGRWaXNpdGVkTGlua0hhc2goaGFzaCk7CiB9
CisKKy8vIFBhc3RlYm9hcmRTdHJhdGVneQordm9pZCBQbGF0Zm9ybVN0cmF0ZWdpZXNFZmw6OnNl
dFN0cmluZ0ZvclR5cGUoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5n
JikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCitTdHJpbmcgUGxhdGZvcm1TdHJhdGVn
aWVzRWZsOjpzdHJpbmdGb3JUeXBlKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYpCit7Cisg
ICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gU3RyaW5nKCk7Cit9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9QbGF0Zm9ybVN0cmF0ZWdpZXNFZmwu
aCBiL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L1BsYXRmb3JtU3RyYXRlZ2llc0Vm
bC5oCmluZGV4IGU3YTllOGQuLjBjNjg2ZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZs
L1dlYkNvcmVTdXBwb3J0L1BsYXRmb3JtU3RyYXRlZ2llc0VmbC5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvZWZsL1dlYkNvcmVTdXBwb3J0L1BsYXRmb3JtU3RyYXRlZ2llc0VmbC5oCkBAIC0yOSw3ICsy
OSw3IEBACiAjaW5jbHVkZSAiU2hhcmVkV29ya2VyU3RyYXRlZ3kuaCIKICNpbmNsdWRlICJWaXNp
dGVkTGlua1N0cmF0ZWd5LmgiCiAKLWNsYXNzIFBsYXRmb3JtU3RyYXRlZ2llc0VmbCA6IHB1Ymxp
YyBXZWJDb3JlOjpQbGF0Zm9ybVN0cmF0ZWdpZXMsIHByaXZhdGUgV2ViQ29yZTo6Q29va2llc1N0
cmF0ZWd5LCBwcml2YXRlIFdlYkNvcmU6OkRhdGFiYXNlU3RyYXRlZ3ksIHByaXZhdGUgV2ViQ29y
ZTo6TG9hZGVyU3RyYXRlZ3ksIHByaXZhdGUgV2ViQ29yZTo6UGx1Z2luU3RyYXRlZ3ksIHByaXZh
dGUgV2ViQ29yZTo6U2hhcmVkV29ya2VyU3RyYXRlZ3ksIHByaXZhdGUgV2ViQ29yZTo6VmlzaXRl
ZExpbmtTdHJhdGVneSB7CitjbGFzcyBQbGF0Zm9ybVN0cmF0ZWdpZXNFZmwgOiBwdWJsaWMgV2Vi
Q29yZTo6UGxhdGZvcm1TdHJhdGVnaWVzLCBwcml2YXRlIFdlYkNvcmU6OkNvb2tpZXNTdHJhdGVn
eSwgcHJpdmF0ZSBXZWJDb3JlOjpEYXRhYmFzZVN0cmF0ZWd5LCBwcml2YXRlIFdlYkNvcmU6Okxv
YWRlclN0cmF0ZWd5LCBwcml2YXRlIFdlYkNvcmU6OlBsdWdpblN0cmF0ZWd5LCBwcml2YXRlIFdl
YkNvcmU6OlNoYXJlZFdvcmtlclN0cmF0ZWd5LCBwcml2YXRlIFdlYkNvcmU6OlZpc2l0ZWRMaW5r
U3RyYXRlZ3ksIHByaXZhdGUgV2ViQ29yZTo6UGFzdGVib2FyZFN0cmF0ZWd5IHsKIHB1YmxpYzoK
ICAgICBzdGF0aWMgdm9pZCBpbml0aWFsaXplKCk7CiAKQEAgLTYzLDYgKzYzLDEwIEBAIHByaXZh
dGU6CiAgICAgLy8gV2ViQ29yZTo6VmlzaXRlZExpbmtTdHJhdGVneQogICAgIHZpcnR1YWwgYm9v
bCBpc0xpbmtWaXNpdGVkKFdlYkNvcmU6OlBhZ2UqLCBXZWJDb3JlOjpMaW5rSGFzaCwgY29uc3Qg
V2ViQ29yZTo6S1VSTCYgYmFzZVVSTCwgY29uc3QgV1RGOjpBdG9taWNTdHJpbmcmIGF0dHJpYnV0
ZVVSTCk7CiAgICAgdmlydHVhbCB2b2lkIGFkZFZpc2l0ZWRMaW5rKFdlYkNvcmU6OlBhZ2UqLCBX
ZWJDb3JlOjpMaW5rSGFzaCk7CisKKyAgICAvLyBXZWJDb3JlOjpQYXN0ZWJvYXJkU3RyYXRlZ3kK
KyAgICB2aXJ0dWFsIFN0cmluZyBzdHJpbmdGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpOworICAgIHZpcnR1YWwgdm9pZCBz
ZXRTdHJpbmdGb3JUeXBlKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5
cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpOwogfTsKIAogI2VuZGlmIC8vIFBsYXRm
b3JtU3RyYXRlZ2llc0VmbF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggYWMxMTZmNC4uNzhlNzI4NCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDY1IEBACisyMDEzLTAxLTE1ICBNaWNoYcWCIFBha3XFgmEgdmVsIFJ1
dGthICA8bS5wYWt1bGFAc2Ftc3VuZy5jb20+CisKKyAgICAgICAgW0VGTF1bV0syXSBJbXBsZW1l
bnRhdGlvbiBvZiBwYXN0ZWJvYXJkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xMDI0ODQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBUaGlzIHBhdGNoIGlzIGFuIGluaXRpYWwgYXBwcm9hY2ggdG8gUGFzdGVi
b2FyZCBpbXBsZW1lbnRhdGlvbiBpbiBXZWJLaXQyLAorICAgICAgICBmb2N1c2luZyBvbiBiYXNp
YyBjb3B5IGFuZCBwYXN0ZSBmZWF0dXJlcy4gSXQgcGFzc2VzcyBkYXRhIGFsb25nIHdpdGggZGF0
YQorICAgICAgICB0eXBlIGZyb20gV2ViQ29yZSB0byBXZWJLaXQyIGFuZCB0aGVuIHRoZSBjbGll
bnQgY2FsbGJhY2tzIGFyZSBpbnZva2VkLgorCisgICAgICAgICogUGxhdGZvcm1FZmwuY21ha2U6
CisgICAgICAgICogU2hhcmVkL0FQSS9jL2VmbC9XS0Jhc2VFZmwuaDoKKyAgICAgICAgKiBTaGFy
ZWQvQVBJT2JqZWN0Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL2VmbC9XS1Bhc3RlYm9h
cmRFZmwuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdLUGFzdGVib2FyZFNldENsaWVudCk6CisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9DL2VmbC9XS1Bhc3RlYm9hcmRFZmwuaDogQWRkZWQuCisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9lZmwvRVdlYktpdDIuaDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL2VmbC9ld2tfcGFzdGVib2FyZC5jcHA6IEFkZGVkLgorICAgICAgICAoc2V0RGF0YSk6Cisg
ICAgICAgIChnZXREYXRhKToKKyAgICAgICAgKGV3a19wYXN0ZWJvYXJkX2luaXRpYWxpemUpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a19wYXN0ZWJvYXJkLmg6IEFkZGVkLgorICAg
ICAgICAqIFVJUHJvY2Vzcy9XZWJDb250ZXh0Lmg6CisgICAgICAgIChXZWJDb250ZXh0KToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvV2ViQ29udGV4dC5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvZWZsL1dlYkNvbnRleHRFZmwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0
OjpnZXRQYXN0ZWJvYXJkU3RyaW5nRm9yVHlwZSk6CisgICAgICAgIChXZWJLaXQpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJDb250ZXh0OjpzZXRQYXN0ZWJvYXJkU3RyaW5nRm9yVHlwZSk6CisgICAg
ICAgICogVUlQcm9jZXNzL2VmbC9XZWJQYXN0ZWJvYXJkQ2xpZW50RWZsLmNwcDogQWRkZWQuCisg
ICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpnZXRTZWxlY3Rpb25Gb3JtYXRGcm9t
U3RyaW5nKToKKyAgICAgICAgKFdlYktpdDo6Z2V0U2VsZWN0aW9uVHlwZUZyb21TdHJpbmcpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYXN0ZWJvYXJkQ2xpZW50RWZsOjpnZXRTdHJpbmcpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYXN0ZWJvYXJkQ2xpZW50RWZsOjpzZXRTdHJpbmcpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9lZmwvV2ViUGFzdGVib2FyZENsaWVudEVmbC5oOiBBZGRlZC4KKyAgICAg
ICAgKFdlYktpdCk6CisgICAgICAgIChXZWJQYXN0ZWJvYXJkQ2xpZW50RWZsKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvZWZsL1dlYlBhc3RlYm9hcmRQcm94eUVmbC5jcHA6IEFkZGVkLgorICAgICAg
ICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFzdGVib2FyZFByb3h5RWZsOjpzaGFy
ZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYXN0ZWJvYXJkUHJveHlFZmw6OldlYlBhc3RlYm9h
cmRQcm94eUVmbCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhc3RlYm9hcmRQcm94eUVmbDo6c2V0
Q2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFzdGVib2FyZFByb3h5RWZsOjpnZXRTdHJp
bmdGb3JUeXBlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFzdGVib2FyZFByb3h5RWZsOjpzZXRT
dHJpbmdGb3JUeXBlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvZWZsL1dlYlBhc3RlYm9hcmRQcm94
eUVmbC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJQYXN0ZWJvYXJk
UHJveHlFZmwpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYXN0ZWJvYXJkUHJveHlFZmw6OmNsaWVu
dCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhc3RlYm9hcmRQcm94eUVmbDo6dHlwZSk6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJFZGl0b3JDbGllbnQ6OnJlc3BvbmRUb0NoYW5nZWRTZWxlY3Rpb24p
OgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6V2ViRWRpdG9yQ2xpZW50Ojpz
dXBwb3J0c0dsb2JhbFNlbGVjdGlvbik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJFZGl0b3JDbGllbnQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHA6CisgICAgICAgIChXZWJLaXQpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnN0cmluZ0ZvclR5cGUpOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmg6Cisg
ICAgICAgIChXZWJQbGF0Zm9ybVN0cmF0ZWdpZXMpOgorCiAyMDEzLTAxLTE0ICBEZWFuIEphY2tz
b24gIDxkaW5vQGFwcGxlLmNvbT4KIAogICAgICAgICBbQU5HTEVdIFVwZGF0ZSBBTkdMRSBpbiBX
ZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlIGIvU291
cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UKaW5kZXggNDA3NmM4NS4uYmRjOWJjNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UKKysrIGIvU291cmNlL1dl
YktpdDIvUGxhdGZvcm1FZmwuY21ha2UKQEAgLTMyLDYgKzMyLDcgQEAgbGlzdChBUFBFTkQgV2Vi
S2l0Ml9TT1VSQ0VTCiAKICAgICBTaGFyZWQvUGx1Z2lucy9OZXRzY2FwZS94MTEvTmV0c2NhcGVQ
bHVnaW5Nb2R1bGVYMTEuY3BwCiAKKyAgICBVSVByb2Nlc3MvQVBJL0MvZWZsL1dLUGFzdGVib2Fy
ZEVmbC5jcHAKICAgICBVSVByb2Nlc3MvQVBJL0MvZWZsL1dLVmlldy5jcHAKIAogICAgIFVJUHJv
Y2Vzcy9BUEkvY3BwL2VmbC9XS0VpbmFTaGFyZWRTdHJpbmcuY3BwCkBAIC02Myw2ICs2NCw3IEBA
IGxpc3QoQVBQRU5EIFdlYktpdDJfU09VUkNFUwogICAgIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a19u
YXZpZ2F0aW9uX2RhdGEuY3BwCiAgICAgVUlQcm9jZXNzL0FQSS9lZmwvZXdrX25hdmlnYXRpb25f
cG9saWN5X2RlY2lzaW9uLmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a19vYmplY3QuY3Bw
CisgICAgVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3Bhc3RlYm9hcmQuY3BwCiAgICAgVUlQcm9jZXNz
L0FQSS9lZmwvZXdrX3BvcHVwX21lbnUuY3BwCiAgICAgVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3Bv
cHVwX21lbnVfaXRlbS5jcHAKICAgICBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfcmVzb3VyY2UuY3Bw
CkBAIC0xMDIsNiArMTA0LDggQEAgbGlzdChBUFBFTkQgV2ViS2l0Ml9TT1VSQ0VTCiAgICAgVUlQ
cm9jZXNzL2VmbC9XZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5RWZsLmNwcAogICAgIFVJUHJvY2Vz
cy9lZmwvV2ViSW5zcGVjdG9yUHJveHlFZmwuY3BwCiAgICAgVUlQcm9jZXNzL2VmbC9XZWJQYWdl
UHJveHlFZmwuY3BwCisgICAgVUlQcm9jZXNzL2VmbC9XZWJQYXN0ZWJvYXJkQ2xpZW50RWZsLmNw
cAorICAgIFVJUHJvY2Vzcy9lZmwvV2ViUGFzdGVib2FyZFByb3h5RWZsLmNwcAogICAgIFVJUHJv
Y2Vzcy9lZmwvV2ViUG9wdXBNZW51UHJveHlFZmwuY3BwCiAgICAgVUlQcm9jZXNzL2VmbC9XZWJQ
cmVmZXJlbmNlc0VmbC5jcHAKICAgICBVSVByb2Nlc3MvZWZsL1dlYlByb2Nlc3NQcm94eUVmbC5j
cHAKQEAgLTI4MSw2ICsyODUsNyBAQCBzZXQoRVdlYktpdDJfSEVBREVSUwogICAgICIke0NNQUtF
X0NVUlJFTlRfU09VUkNFX0RJUn0vVUlQcm9jZXNzL0FQSS9lZmwvZXdrX25hdmlnYXRpb25fZGF0
YS5oIgogICAgICIke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vVUlQcm9jZXNzL0FQSS9lZmwv
ZXdrX25hdmlnYXRpb25fcG9saWN5X2RlY2lzaW9uLmgiCiAgICAgIiR7Q01BS0VfQ1VSUkVOVF9T
T1VSQ0VfRElSfS9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfb2JqZWN0LmgiCisgICAgIiR7Q01BS0Vf
Q1VSUkVOVF9TT1VSQ0VfRElSfS9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfcGFzdGVib2FyZC5oIgog
ICAgICIke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3Bv
cHVwX21lbnUuaCIKICAgICAiJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L1VJUHJvY2Vzcy9B
UEkvZWZsL2V3a19wb3B1cF9tZW51X2l0ZW0uaCIKICAgICAiJHtDTUFLRV9DVVJSRU5UX1NPVVJD
RV9ESVJ9L1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19yZXNvdXJjZS5oIgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL2VmbC9XS0Jhc2VFZmwuaCBiL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9BUEkvYy9lZmwvV0tCYXNlRWZsLmgKaW5kZXggNjE4NGM4MS4uM2QzNTc0ZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL2VmbC9XS0Jhc2VFZmwuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvZWZsL1dLQmFzZUVmbC5oCkBAIC0yNCw2ICsy
NCw3IEBACiAjZXJyb3IgIlBsZWFzZSAjaW5jbHVkZSBcIldLQmFzZS5oXCIgaW5zdGVhZCBvZiB0
aGlzIGZpbGUgZGlyZWN0bHkuIgogI2VuZGlmCiAKK3R5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1
ZVdLUGFzdGVib2FyZCogV0tQYXN0ZWJvYXJkUmVmOwogdHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3Bh
cXVlV0tWaWV3KiBXS1ZpZXdSZWY7CiAKICNlbmRpZiAvKiBXS0Jhc2VFZmxfaCAqLwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSU9iamVjdC5oIGIvU291cmNlL1dlYktpdDIv
U2hhcmVkL0FQSU9iamVjdC5oCmluZGV4IDMxMTlkZTYuLmJjYWMzNjggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9BUElPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvQVBJT2JqZWN0LmgKQEAgLTEzMSw2ICsxMzEsNyBAQCBwdWJsaWM6CiAgICAgICAgIC8vIFBs
YXRmb3JtIHNwZWNpZmljCiAgICAgICAgIFR5cGVFZGl0Q29tbWFuZFByb3h5LAogICAgICAgICBU
eXBlT2JqQ09iamVjdEdyYXBoLAorICAgICAgICBUeXBlUGFzdGVib2FyZFByb3h5LAogICAgICAg
ICBUeXBlVmlldywKICNpZiBVU0UoU09VUCkKICAgICAgICAgVHlwZVNvdXBSZXF1ZXN0TWFuYWdl
ciwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9lZmwvV0tQYXN0
ZWJvYXJkRWZsLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9lZmwvV0tQYXN0
ZWJvYXJkRWZsLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMDVjN2Fi
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL2VmbC9X
S1Bhc3RlYm9hcmRFZmwuY3BwCkBAIC0wLDAgKzEsNDAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTIgU2Ftc3VuZyBFbGVjdHJvbmljcworICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAq
ICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVIgT1IKKyAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
CisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORworICogTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV0tQYXN0ZWJvYXJkRWZsLmgiCisKKyNpbmNsdWRlICJX
S0FQSUNhc3QuaCIKKyNpbmNsdWRlICJXZWJQYXN0ZWJvYXJkUHJveHlFZmwuaCIKKwordXNpbmcg
bmFtZXNwYWNlIFdlYktpdDsKKwordm9pZCBXS1Bhc3RlYm9hcmRTZXRDbGllbnQoY29uc3QgV0tQ
YXN0ZWJvYXJkQ2xpZW50RWZsKiBjbGllbnQpCit7CisgICAgaWYgKGNsaWVudCAmJiBjbGllbnQt
PnZlcnNpb24pCisgICAgICAgIHJldHVybjsKKworICAgIFdlYlBhc3RlYm9hcmRQcm94eUVmbDo6
c2hhcmVkKCktPnNldENsaWVudChjbGllbnQpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9DL2VmbC9XS1Bhc3RlYm9hcmRFZmwuaCBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvQy9lZmwvV0tQYXN0ZWJvYXJkRWZsLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMC4uZjRiOTRhZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvQy9lZmwvV0tQYXN0ZWJvYXJkRWZsLmgKQEAgLTAsMCArMSw3MCBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNzCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERF
UlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUg
Q09QWVJJR0hUIEhPTERFUiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HCisgKiBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMK
KyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpZm5kZWYgV0tQYXN0ZWJvYXJkRWZsX2gKKyNkZWZpbmUgV0tQYXN0
ZWJvYXJkRWZsX2gKKworI2luY2x1ZGUgPFdlYktpdDIvV0tCYXNlLmg+CisKKyNpZmRlZiBfX2Nw
bHVzcGx1cworZXh0ZXJuICJDIiB7CisjZW5kaWYKKworLy8gUGFzdGVib2FyZCBzZWxlY3Rpb24g
Zm9ybWF0cy4KK2VudW0geworICAgIFdLUGFzdGVib2FyZFNlbGVjdGlvbkZvcm1hdFVua25vd24g
PSAwLAorICAgIFdLUGFzdGVib2FyZFNlbGVjdGlvbkZvcm1hdFRleHQgPSAxLAorICAgIFdLUGFz
dGVib2FyZFNlbGVjdGlvbkZvcm1hdE1hcmt1cCA9IDIKK307Cit0eXBlZGVmIHVpbnQzMl90IFdL
UGFzdGVib2FyZFNlbGVjdGlvbkZvcm1hdDsKKworLy8gUGFzdGVib2FyZCBzZWxlY3Rpb24gdHlw
ZXMuCitlbnVtIHsKKyAgICBXS1Bhc3RlYm9hcmRTZWxlY3Rpb25UeXBlVW5rbm93biA9IDAsCisg
ICAgV0tQYXN0ZWJvYXJkU2VsZWN0aW9uVHlwZVByaW1hcnkgPSAxLAorICAgIFdLUGFzdGVib2Fy
ZFNlbGVjdGlvblR5cGVDbGlwYm9hcmQgPSAyCit9OwordHlwZWRlZiB1aW50MzJfdCBXS1Bhc3Rl
Ym9hcmRTZWxlY3Rpb25UeXBlOworCit0eXBlZGVmIFdLU3RyaW5nUmVmICgqV0tQYXN0ZWJvYXJk
R2V0U3RyaW5nQ2FsbGJhY2spKFdLUGFzdGVib2FyZFNlbGVjdGlvbkZvcm1hdCBzZWxlY3Rpb25G
b3JtYXQsIFdLUGFzdGVib2FyZFNlbGVjdGlvblR5cGUgc2VsZWN0aW9uVHlwZSwgY29uc3Qgdm9p
ZCogY2xpZW50SW5mbyk7Cit0eXBlZGVmIHZvaWQgKCpXS1Bhc3RlYm9hcmRTZXRTdHJpbmdDYWxs
YmFjaykoV0tTdHJpbmdSZWYgc3RyaW5nLCBXS1Bhc3RlYm9hcmRTZWxlY3Rpb25Gb3JtYXQgc2Vs
ZWN0aW9uRm9ybWF0LCBXS1Bhc3RlYm9hcmRTZWxlY3Rpb25UeXBlIHNlbGVjdGlvblR5cGUsIGNv
bnN0IHZvaWQqIGNsaWVudEluZm8pOworCitzdHJ1Y3QgV0tQYXN0ZWJvYXJkQ2xpZW50RWZsIHsK
KyAgICBpbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dmVyc2lvbjsKKyAgICBjb25zdCB2b2lkKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY2xpZW50SW5mbzsKKyAgICBXS1Bhc3RlYm9hcmRHZXRTdHJpbmdDYWxsYmFjayAg
ICAgICAgICAgICAgICAgICAgICAgZ2V0U3RyaW5nOworICAgIFdLUGFzdGVib2FyZFNldFN0cmlu
Z0NhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICBzZXRTdHJpbmc7Cit9OwordHlwZWRlZiBz
dHJ1Y3QgV0tQYXN0ZWJvYXJkQ2xpZW50RWZsIFdLUGFzdGVib2FyZENsaWVudEVmbDsKKworZW51
bSB7IFdLUGFzdGVib2FyZENsaWVudEVmbEN1cnJlbnRWZXJzaW9uID0gMCB9OworCitXS19FWFBP
UlQgdm9pZCBXS1Bhc3RlYm9hcmRTZXRDbGllbnQoY29uc3QgV0tQYXN0ZWJvYXJkQ2xpZW50RWZs
KiBjbGllbnQpOworCisjaWZkZWYgX19jcGx1c3BsdXMKK30KKyNlbmRpZgorCisjZW5kaWYgLyog
V0tQYXN0ZWJvYXJkRWZsX2ggKi8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZWZsL0VXZWJLaXQyLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9F
V2ViS2l0Mi5oCmluZGV4IGIxMjIxMTAuLmQ2YzYwOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0VXZWJLaXQyLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9lZmwvRVdlYktpdDIuaApAQCAtNDgsNiArNDgsNyBAQAogI2luY2x1ZGUgImV3
a19uYXZpZ2F0aW9uX2RhdGEuaCIKICNpbmNsdWRlICJld2tfbmF2aWdhdGlvbl9wb2xpY3lfZGVj
aXNpb24uaCIKICNpbmNsdWRlICJld2tfb2JqZWN0LmgiCisjaW5jbHVkZSAiZXdrX3Bhc3RlYm9h
cmQuaCIKICNpbmNsdWRlICJld2tfcG9wdXBfbWVudS5oIgogI2luY2x1ZGUgImV3a19wb3B1cF9t
ZW51X2l0ZW0uaCIKICNpbmNsdWRlICJld2tfcmVzb3VyY2UuaCIKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19wYXN0ZWJvYXJkLmNwcCBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19wYXN0ZWJvYXJkLmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwLi4xZjEzOGZlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3Bhc3RlYm9hcmQuY3BwCkBAIC0wLDAgKzEs
NzkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgU2Ftc3VuZyBFbGVjdHJvbmljcworICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBI
T0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIENPUFlSSUdIVCBIT0xERVIgT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORworICogTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiZXdrX3Bh
c3RlYm9hcmQuaCIKKworI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgorI2luY2x1ZGUgIldLUGFzdGVi
b2FyZEVmbC5oIgorI2luY2x1ZGUgIldLUmV0YWluUHRyLmgiCisjaW5jbHVkZSAiV0tTdHJpbmcu
aCIKKyNpbmNsdWRlICJld2tfcHJpdmF0ZS5oIgorI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcu
aD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKKworc3RhdGljIEV3a19QYXN0ZWJvYXJkX0Rh
dGFfU2V0X0NiIGRhdGFTZXRDYWxsYmFjayA9IDA7CitzdGF0aWMgRXdrX1Bhc3RlYm9hcmRfRGF0
YV9HZXRfQ2IgZGF0YUdldENhbGxiYWNrID0gMDsKKworQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdf
RU5VTShFV0tfUEFTVEVCT0FSRF9TRUxFQ1RJT05fRk9STUFUX1VOS05PV04sIFdLUGFzdGVib2Fy
ZFNlbGVjdGlvbkZvcm1hdFVua25vd24pOworQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShF
V0tfUEFTVEVCT0FSRF9TRUxFQ1RJT05fRk9STUFUX1RFWFQsIFdLUGFzdGVib2FyZFNlbGVjdGlv
bkZvcm1hdFRleHQpOworQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShFV0tfUEFTVEVCT0FS
RF9TRUxFQ1RJT05fRk9STUFUX0hUTUwsIFdLUGFzdGVib2FyZFNlbGVjdGlvbkZvcm1hdE1hcmt1
cCk7CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKEVXS19QQVNURUJPQVJEX1NFTEVDVElP
Tl9UWVBFX1VOS05PV04sIFdLUGFzdGVib2FyZFNlbGVjdGlvblR5cGVVbmtub3duKTsKK0NPTVBJ
TEVfQVNTRVJUX01BVENISU5HX0VOVU0oRVdLX1BBU1RFQk9BUkRfU0VMRUNUSU9OX1RZUEVfUFJJ
TUFSWSwgV0tQYXN0ZWJvYXJkU2VsZWN0aW9uVHlwZVByaW1hcnkpOworQ09NUElMRV9BU1NFUlRf
TUFUQ0hJTkdfRU5VTShFV0tfUEFTVEVCT0FSRF9TRUxFQ1RJT05fVFlQRV9DTElQQk9BUkQsIFdL
UGFzdGVib2FyZFNlbGVjdGlvblR5cGVDbGlwYm9hcmQpOworCitzdGF0aWMgdm9pZCBzZXREYXRh
KFdLU3RyaW5nUmVmIHN0cmluZywgV0tQYXN0ZWJvYXJkU2VsZWN0aW9uVHlwZSBzZWxlY3Rpb25G
b3JtYXQsIFdLUGFzdGVib2FyZFNlbGVjdGlvblR5cGUgc2VsZWN0aW9uVHlwZSwgY29uc3Qgdm9p
ZCogY2xpZW50SW5mbykKK3sKKyAgICBpZiAoZGF0YVNldENhbGxiYWNrKQorICAgICAgICBkYXRh
U2V0Q2FsbGJhY2sodG9JbXBsKHN0cmluZyktPnN0cmluZygpLnV0ZjgoKS5kYXRhKCksIHN0YXRp
Y19jYXN0PEV3a19QYXN0ZWJvYXJkX1NlbGVjdGlvbl9Gb3JtYXQ+KHNlbGVjdGlvbkZvcm1hdCks
IHN0YXRpY19jYXN0PEV3a19QYXN0ZWJvYXJkX1NlbGVjdGlvbl9UeXBlPihzZWxlY3Rpb25UeXBl
KSwgY2xpZW50SW5mbyk7Cit9CisKK3N0YXRpYyBXS1N0cmluZ1JlZiBnZXREYXRhKFdLUGFzdGVi
b2FyZFNlbGVjdGlvblR5cGUgc2VsZWN0aW9uRm9ybWF0LCBXS1Bhc3RlYm9hcmRTZWxlY3Rpb25U
eXBlIHNlbGVjdGlvblR5cGUsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCit7CisgICAgaWYgKGRh
dGFHZXRDYWxsYmFjaykKKyAgICAgICAgcmV0dXJuIFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3Ry
aW5nKGRhdGFHZXRDYWxsYmFjayhzdGF0aWNfY2FzdDxFd2tfUGFzdGVib2FyZF9TZWxlY3Rpb25f
Rm9ybWF0PihzZWxlY3Rpb25Gb3JtYXQpLCBzdGF0aWNfY2FzdDxFd2tfUGFzdGVib2FyZF9TZWxl
Y3Rpb25fVHlwZT4oc2VsZWN0aW9uVHlwZSksIGNsaWVudEluZm8pKTsKKworICAgIHJldHVybiBX
S1N0cmluZ1JlZigpOworfQorCit2b2lkIGV3a19wYXN0ZWJvYXJkX2luaXRpYWxpemUoY29uc3Qg
dm9pZCogY2xpZW50SW5mbywgRXdrX1Bhc3RlYm9hcmRfRGF0YV9TZXRfQ2Igc2V0Q2FsbGJhY2ss
IEV3a19QYXN0ZWJvYXJkX0RhdGFfR2V0X0NiIGdldENhbGxiYWNrKQoreworICAgIHN0YXRpYyBi
b29sIGRpZEluaXRpYWxpemVQYXN0ZWJvYXJkQ2xpZW50ID0gZmFsc2U7CisgICAgaWYgKGRpZElu
aXRpYWxpemVQYXN0ZWJvYXJkQ2xpZW50KQorICAgICAgICByZXR1cm47CisKKyAgICBXS1Bhc3Rl
Ym9hcmRDbGllbnRFZmwgcGFzdGVib2FyZENsaWVudEVmbCA9IHsKKyAgICAgICAgV0tQYXN0ZWJv
YXJkQ2xpZW50RWZsQ3VycmVudFZlcnNpb24sCisgICAgICAgIGNsaWVudEluZm8sCisgICAgICAg
IGdldERhdGEsCisgICAgICAgIHNldERhdGEKKyAgICB9OworICAgIFdLUGFzdGVib2FyZFNldENs
aWVudCgmcGFzdGVib2FyZENsaWVudEVmbCk7CisKKyAgICBkaWRJbml0aWFsaXplUGFzdGVib2Fy
ZENsaWVudCA9IHRydWU7CisgICAgZGF0YVNldENhbGxiYWNrID0gc2V0Q2FsbGJhY2s7CisgICAg
ZGF0YUdldENhbGxiYWNrID0gZ2V0Q2FsbGJhY2s7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfcGFzdGVib2FyZC5oIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9lZmwvZXdrX3Bhc3RlYm9hcmQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwLi5iNzk4ZTRjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9lZmwvZXdrX3Bhc3RlYm9hcmQuaApAQCAtMCwwICsxLDEwMiBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNzCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5E
IENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJ
R0hUIEhPTERFUiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HCisgKiBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKy8qKgorICogQGZpbGUgICAgZXdrX3Bhc3RlYm9hcmQuaAorICogQGJyaWVmICAg
RGVzY3JpYmVzIHRoZSBwYXN0ZWJvYXJkIEFQSS4KKyAqCisgKiBAbm90ZSBUaGUgZXdrX3Bhc3Rl
Ym9hcmQgcHJvdmlkZXMgcG9pbnRlcnMgdG8gZnVuY3Rpb24gd2hpY2ggY2FuIGJlIGltcGxlbWVu
dGVkIGJ5IGFuIGFwcGxpY2F0aW9uCisgKiB0byBzdXBwb3J0IGNvcHkgYW5kIHBhc3RlIG9wZXJh
dGlvbnMgaW4gV2ViS2l0LgorICovCisKKyNpZm5kZWYgZXdrX3Bhc3RlYm9hcmRfaAorI2RlZmlu
ZSBld2tfcGFzdGVib2FyZF9oCisKKyNpbmNsdWRlIDxFdmFzLmg+CisKKyNpZmRlZiBfX2NwbHVz
cGx1cworZXh0ZXJuICJDIiB7CisjZW5kaWYKKworLyoqCisgKiBFbnVtIHZhbHVlcyB1c2VkIHRv
IHNldCBzZWxlY3Rpb24gZm9ybWF0cy4KKyAqLworZW51bSBFd2tfUGFzdGVib2FyZF9TZWxlY3Rp
b25fRm9ybWF0IHsKKyAgICBFV0tfUEFTVEVCT0FSRF9TRUxFQ1RJT05fRk9STUFUX1VOS05PV04s
CisgICAgRVdLX1BBU1RFQk9BUkRfU0VMRUNUSU9OX0ZPUk1BVF9URVhULAorICAgIEVXS19QQVNU
RUJPQVJEX1NFTEVDVElPTl9GT1JNQVRfSFRNTCwKK307CisKKy8vLyBDcmVhdGVzIGEgdHlwZSBu
YW1lIGZvciB0aGUgRXdrX1Bhc3RlYm9hcmRfU2VsZWN0aW9uX0Zvcm1hdC4KK3R5cGVkZWYgZW51
bSBFd2tfUGFzdGVib2FyZF9TZWxlY3Rpb25fRm9ybWF0IEV3a19QYXN0ZWJvYXJkX1NlbGVjdGlv
bl9Gb3JtYXQ7CisKKy8qKgorICogRW51bSB2YWx1ZXMgdXNlZCB0byBzZXQgc2VsZWN0aW9uIHR5
cGVzLgorICovCitlbnVtIEV3a19QYXN0ZWJvYXJkX1NlbGVjdGlvbl9UeXBlIHsKKyAgICBFV0tf
UEFTVEVCT0FSRF9TRUxFQ1RJT05fVFlQRV9VTktOT1dOLAorICAgIEVXS19QQVNURUJPQVJEX1NF
TEVDVElPTl9UWVBFX1BSSU1BUlksCisgICAgRVdLX1BBU1RFQk9BUkRfU0VMRUNUSU9OX1RZUEVf
Q0xJUEJPQVJECit9OworCisvLy8gQ3JlYXRlcyBhIHR5cGUgbmFtZSBmb3IgdGhlIEV3a19QYXN0
ZWJvYXJkX1NlbGVjdGlvbl9UeXBlLgordHlwZWRlZiBlbnVtIEV3a19QYXN0ZWJvYXJkX1NlbGVj
dGlvbl9UeXBlIEV3a19QYXN0ZWJvYXJkX1NlbGVjdGlvbl9UeXBlOworCisvKioKKyAqIERlZmlu
ZXMgYSB0eXBlIG5hbWUgZm9yIHRoZSBjYWxsYmFjayBmdW5jdGlvbiB0byBwZXJmb3JtIGNvcHkg
b3BlcmF0aW9uIHdpdGggZ2l2ZW4gZGF0YSB0eXBlLgorICoKKyAqIEBwYXJhbSBkYXRhIGRhdGEg
dG8gYmUgY29waWVkCisgKiBAcGFyYW0gZm9ybWF0IGZvcm1hdCBvZiBjb3BpZWQgZGF0YQorICog
QHBhcmFtIHR5cGUgdHlwZSBvZiBjb3BpZWQgZGF0YQorICogQHBhcmFtIGNsaWVudF9pbmZvIGFw
cGxpY2F0aW9uIHNwZWNpZmljIGRhdGEKKyAqLwordHlwZWRlZiB2b2lkICgqRXdrX1Bhc3RlYm9h
cmRfRGF0YV9TZXRfQ2IpKGNvbnN0IGNoYXIgKmRhdGEsIEV3a19QYXN0ZWJvYXJkX1NlbGVjdGlv
bl9Gb3JtYXQgZm9ybWF0LCBFd2tfUGFzdGVib2FyZF9TZWxlY3Rpb25fVHlwZSB0eXBlLCBjb25z
dCB2b2lkICpjbGllbnRfaW5mbyk7CisKKy8qKgorICogRGVmaW5lcyBhIHR5cGUgbmFtZSBmb3Ig
dGhlIGNhbGxiYWNrIGZ1bmN0aW9uIHRvIHJlcXVlc3QgZm9yIGRhdGEgd2l0aCBnaXZlbiB0eXBl
LgorICoKKyAqIFRoaXMgY2FsbGJhY2sgc2hvdWxkIHJldHVybiBkYXRhIGZvciByZXF1ZXN0ZWQg
dHlwZSBpZiB0aGVyZSBpcyBhIGRhdGEgaW4gY2xpcGJvYXJkIG90aGVyd2lzZSBOVUxMIHNob3Vs
ZCBiZSByZXR1cm5lZC4KKyAqCisgKiBAcGFyYW0gZm9ybWF0IGZvcm1hdCBvZiByZXF1ZXN0ZWQg
ZGF0YQorICogQHBhcmFtIHR5cGUgdHlwZSBvZiByZXF1ZXN0ZWQgZGF0YQorICogQHBhcmFtIGNs
aWVudF9pbmZvIGFwcGxpY2F0aW9uIHNwZWNpZmljIGRhdGEKKyAqCisgKiBAcmV0dXJuIHJlcXVl
c3RlZCBkYXRhIG9uIHN1Y2Nlc3Mgb3IgQGMgTlVMTCBvbiBmYWlsdXJlCisgKi8KK3R5cGVkZWYg
Y29uc3QgY2hhciAqKCpFd2tfUGFzdGVib2FyZF9EYXRhX0dldF9DYikoRXdrX1Bhc3RlYm9hcmRf
U2VsZWN0aW9uX0Zvcm1hdCBmb3JtYXQsIEV3a19QYXN0ZWJvYXJkX1NlbGVjdGlvbl9UeXBlIHR5
cGUsIGNvbnN0IHZvaWQgKmNsaWVudF9pbmZvKTsKKworLyoqCisgKiBJbml0aWFsaXplcyBwYXN0
ZWJvYXJkIGNhbGxiYWNrcy4KKyAqCisgKiBAcGFyYW0gY2xpZW50X2luZm8gYXBwbGljYXRpb24g
ZGF0YSBwb2ludGVyIHRvIGJlIGZvciBjYWxsYmFjayBmdW5jdGlvbnMKKyAqIEBwYXJhbSBzZXRf
Y2Igc2V0IGRhdGEgY2FsbGJhY2sgdG8gYmUgc2V0IC0gaXQgbXVzdCBub3QgYmUgQGMgTlVMTAor
ICogQHBhcmFtIGdldF9jYiBnZXQgZGF0YSBjYWxsYmFjayB0byBiZSBzZXQgLSBpdCBtdXN0IG5v
dCBiZSBAYyBOVUxMCisgKi8KK0VBUEkgdm9pZCBld2tfcGFzdGVib2FyZF9pbml0aWFsaXplKGNv
bnN0IHZvaWQgKmNsaWVudF9pbmZvLCBFd2tfUGFzdGVib2FyZF9EYXRhX1NldF9DYiBzZXRfY2Is
IEV3a19QYXN0ZWJvYXJkX0RhdGFfR2V0X0NiIGdldF9jYik7CisKKyNpZmRlZiBfX2NwbHVzcGx1
cworfQorI2VuZGlmCisjZW5kaWYgLy8gZXdrX3Bhc3RlYm9hcmRfaApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJDb250ZXh0LmgKaW5kZXggZmM5M2EwOC4uY2UxNzQzZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViQ29udGV4dC5oCkBAIC0yOTksNyArMjk5LDYgQEAgcHJpdmF0ZToKICNpZiBQ
TEFURk9STShNQUMpCiAgICAgdm9pZCBnZXRQYXN0ZWJvYXJkVHlwZXMoY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcyk7CiAgICAgdm9p
ZCBnZXRQYXN0ZWJvYXJkUGF0aG5hbWVzRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBWZWN0b3I8U3RyaW5nPiYgcGF0aG5h
bWVzKTsKLSAgICB2b2lkIGdldFBhc3RlYm9hcmRTdHJpbmdGb3JUeXBlKGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZE5hbWUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIFN0cmluZyYpOwog
ICAgIHZvaWQgZ2V0UGFzdGVib2FyZEJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkTmFtZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgU2hhcmVkTWVtb3J5OjpIYW5k
bGUmLCB1aW50NjRfdCYgc2l6ZSk7CiAgICAgdm9pZCBwYXN0ZWJvYXJkQ29weShjb25zdCBTdHJp
bmcmIGZyb21QYXN0ZWJvYXJkLCBjb25zdCBTdHJpbmcmIHRvUGFzdGVib2FyZCk7CiAgICAgdm9p
ZCBnZXRQYXN0ZWJvYXJkQ2hhbmdlQ291bnQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwg
dWludDY0X3QmIGNoYW5nZUNvdW50KTsKQEAgLTMwOSw5ICszMDgsMTIgQEAgcHJpdmF0ZToKICAg
ICB2b2lkIGFkZFBhc3RlYm9hcmRUeXBlcyhjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBj
b25zdCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzKTsKICAgICB2b2lkIHNldFBhc3Rl
Ym9hcmRUeXBlcyhjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBWZWN0b3I8U3Ry
aW5nPiYgcGFzdGVib2FyZFR5cGVzKTsKICAgICB2b2lkIHNldFBhc3RlYm9hcmRQYXRobmFtZXNG
b3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZFR5cGUsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXRobmFtZXMpOwotICAgIHZvaWQgc2V0
UGFzdGVib2FyZFN0cmluZ0ZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJik7CiAgICAgdm9pZCBzZXRQ
YXN0ZWJvYXJkQnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTaGFyZWRNZW1vcnk6OkhhbmRsZSYsIHVp
bnQ2NF90IHNpemUpOwogI2VuZGlmCisjaWYgUExBVEZPUk0oTUFDKSB8fCBQTEFURk9STShFRkwp
CisgICAgdm9pZCBnZXRQYXN0ZWJvYXJkU3RyaW5nRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBTdHJpbmcmKTsKKyAgICB2
b2lkIHNldFBhc3RlYm9hcmRTdHJpbmdGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYpOworI2VuZGlm
CiAKICNpZiAhUExBVEZPUk0oTUFDKQogICAgIC8vIEZJWE1FOiBUaGlzIGEgZHVtbXkgbWVzc2Fn
ZSwgdG8gYXZvaWQgYnJlYWtpbmcgdGhlIGJ1aWxkIGZvciBwbGF0Zm9ybXMgdGhhdCBkb24ndCBy
ZXF1aXJlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5t
ZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0Lm1lc3NhZ2Vz
LmluCmluZGV4IGYyZWRiMWQuLmExN2VkYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJDb250ZXh0Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJDb250ZXh0Lm1lc3NhZ2VzLmluCkBAIC0zMiw3ICszMiw2IEBAIG1lc3NhZ2VzIC0+
IFdlYkNvbnRleHQgewogICAgIAogICAgIEdldFBhc3RlYm9hcmRUeXBlcyhXVEY6OlN0cmluZyBw
YXN0ZWJvYXJkTmFtZSkgLT4gKFZlY3RvcjxXVEY6OlN0cmluZz4gdHlwZXMpCiAgICAgR2V0UGFz
dGVib2FyZFBhdGhuYW1lc0ZvclR5cGUoV1RGOjpTdHJpbmcgcGFzdGVib2FyZE5hbWUsIFdURjo6
U3RyaW5nIHBhc3RlYm9hcmRUeXBlKSAtPiAoVmVjdG9yPFdURjo6U3RyaW5nPiBwYXRobmFtZXMp
Ci0gICAgR2V0UGFzdGVib2FyZFN0cmluZ0ZvclR5cGUoV1RGOjpTdHJpbmcgcGFzdGVib2FyZE5h
bWUsIFdURjo6U3RyaW5nIHBhc3RlYm9hcmRUeXBlKSAtPiAoV1RGOjpTdHJpbmcgc3RyaW5nKQog
ICAgIEdldFBhc3RlYm9hcmRCdWZmZXJGb3JUeXBlKFdURjo6U3RyaW5nIHBhc3RlYm9hcmROYW1l
LCBXVEY6OlN0cmluZyBwYXN0ZWJvYXJkVHlwZSkgLT4gKFdlYktpdDo6U2hhcmVkTWVtb3J5OjpI
YW5kbGUgaGFuZGxlLCB1aW50NjRfdCBzaXplKQogICAgIFBhc3RlYm9hcmRDb3B5KFdURjo6U3Ry
aW5nIGZyb21QYXN0ZWJvYXJkLCBXVEY6OlN0cmluZyB0b1Bhc3RlYm9hcmQpCiAgICAgR2V0UGFz
dGVib2FyZENoYW5nZUNvdW50KFdURjo6U3RyaW5nIHBhc3RlYm9hcmROYW1lKSAtPiAodWludDY0
X3QgY2hhbmdlQ291bnQpCkBAIC00Miw5ICs0MSwxMyBAQCBtZXNzYWdlcyAtPiBXZWJDb250ZXh0
IHsKICAgICBBZGRQYXN0ZWJvYXJkVHlwZXMoV1RGOjpTdHJpbmcgcGFzdGVib2FyZE5hbWUsIFZl
Y3RvcjxXVEY6OlN0cmluZz4gcGFzdGVib2FyZFR5cGVzKQogICAgIFNldFBhc3RlYm9hcmRUeXBl
cyhXVEY6OlN0cmluZyBwYXN0ZWJvYXJkTmFtZSwgVmVjdG9yPFdURjo6U3RyaW5nPiBwYXN0ZWJv
YXJkVHlwZXMpCiAgICAgU2V0UGFzdGVib2FyZFBhdGhuYW1lc0ZvclR5cGUoV1RGOjpTdHJpbmcg
cGFzdGVib2FyZE5hbWUsIFdURjo6U3RyaW5nIHBhc3RlYm9hcmRUeXBlLCBWZWN0b3I8V1RGOjpT
dHJpbmc+IHBhdGhuYW1lcykKLSAgICBTZXRQYXN0ZWJvYXJkU3RyaW5nRm9yVHlwZShXVEY6OlN0
cmluZyBwYXN0ZWJvYXJkTmFtZSwgV1RGOjpTdHJpbmcgcGFzdGVib2FyZFR5cGUsIFdURjo6U3Ry
aW5nIHN0cmluZykKICAgICBTZXRQYXN0ZWJvYXJkQnVmZmVyRm9yVHlwZShXVEY6OlN0cmluZyBw
YXN0ZWJvYXJkTmFtZSwgV1RGOjpTdHJpbmcgcGFzdGVib2FyZFR5cGUsIFdlYktpdDo6U2hhcmVk
TWVtb3J5OjpIYW5kbGUgaGFuZGxlLCB1aW50NjRfdCBzaXplKQogI2VuZGlmCisjaWYgUExBVEZP
Uk0oTUFDKSB8fCBQTEFURk9STShFRkwpCisgICAgR2V0UGFzdGVib2FyZFN0cmluZ0ZvclR5cGUo
V1RGOjpTdHJpbmcgcGFzdGVib2FyZE5hbWUsIFdURjo6U3RyaW5nIHBhc3RlYm9hcmRUeXBlKSAt
PiAoV1RGOjpTdHJpbmcgc3RyaW5nKQorICAgIFNldFBhc3RlYm9hcmRTdHJpbmdGb3JUeXBlKFdU
Rjo6U3RyaW5nIHBhc3RlYm9hcmROYW1lLCBXVEY6OlN0cmluZyBwYXN0ZWJvYXJkVHlwZSwgV1RG
OjpTdHJpbmcgc3RyaW5nKQorI2VuZGlmCisKIAogI2lmICFQTEFURk9STShNQUMpCiAgICAgLy8g
RklYTUU6IFRoaXMgYSBkdW1teSBtZXNzYWdlLCB0byBhdm9pZCBicmVha2luZyB0aGUgYnVpbGQg
Zm9yIHBsYXRmb3JtcyB0aGF0IGRvbid0IHJlcXVpcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9lZmwvV2ViQ29udGV4dEVmbC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvZWZsL1dlYkNvbnRleHRFZmwuY3BwCmluZGV4IDY5ZWI2NmIuLjllNDBmOTYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViQ29udGV4dEVmbC5jcHAKKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJDb250ZXh0RWZsLmNwcApAQCAtMjks
NiArMjksNyBAQAogCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIldlYkluc3BlY3Rv
clNlcnZlci5oIgorI2luY2x1ZGUgIldlYlBhc3RlYm9hcmRQcm94eUVmbC5oIgogI2luY2x1ZGUg
IldlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzTWVz
c2FnZXMuaCIKICNpbmNsdWRlICJXZWJTb3VwUmVxdWVzdE1hbmFnZXJQcm94eS5oIgpAQCAtMTMz
LDQgKzEzNCwxNCBAQCB2b2lkIFdlYkNvbnRleHQ6OnNldElnbm9yZVRMU0Vycm9ycyhib29sIGln
bm9yZVRMU0Vycm9ycykKICAgICBzZW5kVG9BbGxQcm9jZXNzZXMoTWVzc2FnZXM6OldlYlByb2Nl
c3M6OlNldElnbm9yZVRMU0Vycm9ycyhtX2lnbm9yZVRMU0Vycm9ycykpOwogfQogCit2b2lkIFdl
YkNvbnRleHQ6OmdldFBhc3RlYm9hcmRTdHJpbmdGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZE5hbWUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIFN0cmluZyYgc3RyaW5nKQor
eworICAgIHN0cmluZyA9IFdlYlBhc3RlYm9hcmRQcm94eUVmbDo6c2hhcmVkKCktPmdldFN0cmlu
Z0ZvclR5cGUocGFzdGVib2FyZFR5cGUsIHBhc3RlYm9hcmROYW1lKTsKK30KKwordm9pZCBXZWJD
b250ZXh0OjpzZXRQYXN0ZWJvYXJkU3RyaW5nRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmROYW1lLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHN0cmlu
ZykKK3sKKyAgICBXZWJQYXN0ZWJvYXJkUHJveHlFZmw6OnNoYXJlZCgpLT5zZXRTdHJpbmdGb3JU
eXBlKHN0cmluZywgcGFzdGVib2FyZFR5cGUsIHBhc3RlYm9hcmROYW1lKTsKK30KKwogfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZs
L1dlYlBhc3RlYm9hcmRDbGllbnRFZmwuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2Vm
bC9XZWJQYXN0ZWJvYXJkQ2xpZW50RWZsLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwLi42OGRkMmY2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL2VmbC9XZWJQYXN0ZWJvYXJkQ2xpZW50RWZsLmNwcApAQCAtMCwwICsxLDcyIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDEyIFNhbXN1bmcgRWxlY3Ryb25pY3MKKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQg
Q09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklH
SFQgSE9MREVSIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcKKyAqIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYlBhc3RlYm9hcmRDbGll
bnRFZmwuaCIKKworI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgorI2luY2x1ZGUgPFdlYkNvcmUvUGFz
dGVib2FyZC5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworc3RhdGljIFdLUGFzdGVib2FyZFNl
bGVjdGlvbkZvcm1hdCBnZXRTZWxlY3Rpb25Gb3JtYXRGcm9tU3RyaW5nKGNvbnN0IFN0cmluZyYg
c2VsZWN0aW9uRm9ybWF0KQoreworICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZShzZWxlY3Rpb25G
b3JtYXQsIFdlYkNvcmU6OlBhc3RlYm9hcmQ6OnNlbGVjdGlvbkZvcm1hdFRleHQpKQorICAgICAg
ICByZXR1cm4gV0tQYXN0ZWJvYXJkU2VsZWN0aW9uRm9ybWF0VGV4dDsKKworICAgIGlmIChlcXVh
bElnbm9yaW5nQ2FzZShzZWxlY3Rpb25Gb3JtYXQsIFdlYkNvcmU6OlBhc3RlYm9hcmQ6OnNlbGVj
dGlvbkZvcm1hdE1hcmt1cCkpCisgICAgICAgIHJldHVybiBXS1Bhc3RlYm9hcmRTZWxlY3Rpb25G
b3JtYXRNYXJrdXA7CisKKyAgICByZXR1cm4gV0tQYXN0ZWJvYXJkU2VsZWN0aW9uRm9ybWF0VW5r
bm93bjsKK30KKworc3RhdGljIFdLUGFzdGVib2FyZFNlbGVjdGlvblR5cGUgZ2V0U2VsZWN0aW9u
VHlwZUZyb21TdHJpbmcoY29uc3QgU3RyaW5nJiBzZWxlY3Rpb25UeXBlKQoreworICAgIGlmIChl
cXVhbElnbm9yaW5nQ2FzZShzZWxlY3Rpb25UeXBlLCBXZWJDb3JlOjpQYXN0ZWJvYXJkOjpzZWxl
Y3Rpb25UeXBlUHJpbWFyeSkpCisgICAgICAgIHJldHVybiBXS1Bhc3RlYm9hcmRTZWxlY3Rpb25U
eXBlUHJpbWFyeTsKKworICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZShzZWxlY3Rpb25UeXBlLCBX
ZWJDb3JlOjpQYXN0ZWJvYXJkOjpzZWxlY3Rpb25UeXBlQ2xpcGJvYXJkKSkKKyAgICAgICAgcmV0
dXJuIFdLUGFzdGVib2FyZFNlbGVjdGlvblR5cGVDbGlwYm9hcmQ7CisKKyAgICByZXR1cm4gV0tQ
YXN0ZWJvYXJkU2VsZWN0aW9uVHlwZVVua25vd247Cit9CisKK1N0cmluZyBXZWJQYXN0ZWJvYXJk
Q2xpZW50RWZsOjpnZXRTdHJpbmcoY29uc3QgU3RyaW5nJiBzZWxlY3Rpb25Gb3JtYXQsIGNvbnN0
IFN0cmluZyYgc2VsZWN0aW9uVHlwZSkKK3sKKyAgICBpZiAoIW1fY2xpZW50LmdldFN0cmluZykK
KyAgICAgICAgcmV0dXJuIFN0cmluZygpOworCisgICAgcmV0dXJuIHRvSW1wbChtX2NsaWVudC5n
ZXRTdHJpbmcoZ2V0U2VsZWN0aW9uRm9ybWF0RnJvbVN0cmluZyhzZWxlY3Rpb25Gb3JtYXQpLCBn
ZXRTZWxlY3Rpb25UeXBlRnJvbVN0cmluZyhzZWxlY3Rpb25UeXBlKSwgbV9jbGllbnQuY2xpZW50
SW5mbykpLT5zdHJpbmcoKTsKK30KKwordm9pZCBXZWJQYXN0ZWJvYXJkQ2xpZW50RWZsOjpzZXRT
dHJpbmcoY29uc3QgU3RyaW5nJiBzdHJpbmcsIGNvbnN0IFN0cmluZyYgc2VsZWN0aW9uRm9ybWF0
LCBjb25zdCBTdHJpbmcmIHNlbGVjdGlvblR5cGUpCit7CisgICAgaWYgKCFtX2NsaWVudC5zZXRT
dHJpbmcpCisgICAgICAgIHJldHVybjsKKworICAgIG1fY2xpZW50LnNldFN0cmluZyh0b0FQSShz
dHJpbmcuaW1wbCgpKSwgZ2V0U2VsZWN0aW9uRm9ybWF0RnJvbVN0cmluZyhzZWxlY3Rpb25Gb3Jt
YXQpLCBnZXRTZWxlY3Rpb25UeXBlRnJvbVN0cmluZyhzZWxlY3Rpb25UeXBlKSwgbV9jbGllbnQu
Y2xpZW50SW5mbyk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJQYXN0ZWJvYXJkQ2xpZW50RWZsLmggYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlBhc3RlYm9hcmRDbGllbnRFZmwuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZDUyYzRiCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJQYXN0ZWJvYXJkQ2xpZW50RWZsLmgKQEAg
LTAsMCArMSw0MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBTYW1zdW5nIEVsZWN0cm9u
aWNzCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09Q
WVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HCisg
KiBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViUGFzdGVib2FyZENsaWVudEVm
bF9oCisjZGVmaW5lIFdlYlBhc3RlYm9hcmRDbGllbnRFZmxfaAorCisjaW5jbHVkZSAiQVBJQ2xp
ZW50LmgiCisjaW5jbHVkZSAiV0tQYXN0ZWJvYXJkRWZsLmgiCisjaW5jbHVkZSA8d3RmL0Zvcndh
cmQuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYlBhc3RlYm9hcmRDbGllbnRF
ZmwgOiBwdWJsaWMgQVBJQ2xpZW50PFdLUGFzdGVib2FyZENsaWVudEVmbCwgV0tQYXN0ZWJvYXJk
Q2xpZW50RWZsQ3VycmVudFZlcnNpb24+IHsKK3B1YmxpYzoKKyAgICBTdHJpbmcgZ2V0U3RyaW5n
KGNvbnN0IFN0cmluZyYgc2VsZWN0aW9uRm9ybWF0LCBjb25zdCBTdHJpbmcmIHNlbGVjdGlvblR5
cGUpOworICAgIHZvaWQgc2V0U3RyaW5nKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYgc2Vs
ZWN0aW9uRm9ybWF0LCBjb25zdCBTdHJpbmcmIHNlbGVjdGlvblR5cGUpOworfTsKKworfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBXZWJQYXN0ZWJvYXJkQ2xpZW50RWZsX2gKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViUGFzdGVib2FyZFByb3h5
RWZsLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViUGFzdGVib2FyZFByb3h5
RWZsLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNTNkNmY3Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJQYXN0ZWJvYXJk
UHJveHlFZmwuY3BwCkBAIC0wLDAgKzEsNTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIg
U2Ftc3VuZyBFbGVjdHJvbmljcworICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJ
UyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVIgT1IKKyAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORworICogTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiV2ViUGFzdGVib2FyZFByb3h5RWZsLmgiCisKKyNpbmNsdWRlIDx3
dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+
CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitXZWJQYXN0ZWJvYXJkUHJveHlFZmwqIFdlYlBhc3Rl
Ym9hcmRQcm94eUVmbDo6c2hhcmVkKCkKK3sKKyAgICBzdGF0aWMgV2ViUGFzdGVib2FyZFByb3h5
RWZsKiBwYXN0ZWJvYXJkUHJveHlFZmwgPSBhZG9wdFJlZihuZXcgV2ViUGFzdGVib2FyZFByb3h5
RWZsKS5sZWFrUmVmKCk7CisgICAgcmV0dXJuIHBhc3RlYm9hcmRQcm94eUVmbDsKK30KKworV2Vi
UGFzdGVib2FyZFByb3h5RWZsOjpXZWJQYXN0ZWJvYXJkUHJveHlFZmwoKQoreworfQorCit2b2lk
IFdlYlBhc3RlYm9hcmRQcm94eUVmbDo6c2V0Q2xpZW50KGNvbnN0IFdLUGFzdGVib2FyZENsaWVu
dEVmbCogY2xpZW50KQoreworICAgIG1fY2xpZW50LmluaXRpYWxpemUoY2xpZW50KTsKK30KKwor
U3RyaW5nIFdlYlBhc3RlYm9hcmRQcm94eUVmbDo6Z2V0U3RyaW5nRm9yVHlwZShjb25zdCBTdHJp
bmcmIHNlbGVjdGlvbkZvcm1hdCwgY29uc3QgU3RyaW5nJiBzZWxlY3Rpb25UeXBlKQoreworICAg
IHJldHVybiBtX2NsaWVudC5nZXRTdHJpbmcoc2VsZWN0aW9uRm9ybWF0LCBzZWxlY3Rpb25UeXBl
KTsKK30KKwordm9pZCBXZWJQYXN0ZWJvYXJkUHJveHlFZmw6OnNldFN0cmluZ0ZvclR5cGUoY29u
c3QgU3RyaW5nJiBzdHJpbmcsIGNvbnN0IFN0cmluZyYgc2VsZWN0aW9uRm9ybWF0LCBjb25zdCBT
dHJpbmcmIHNlbGVjdGlvblR5cGUpCit7CisgICAgbV9jbGllbnQuc2V0U3RyaW5nKHN0cmluZywg
c2VsZWN0aW9uRm9ybWF0LCBzZWxlY3Rpb25UeXBlKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlBhc3RlYm9h
cmRQcm94eUVmbC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJQYXN0ZWJvYXJk
UHJveHlFZmwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hYzFhZDJhCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJQYXN0ZWJv
YXJkUHJveHlFZmwuaApAQCAtMCwwICsxLDU5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEy
IFNhbXN1bmcgRWxlY3Ryb25pY3MKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMg
SVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcKKyAqIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJQ
YXN0ZWJvYXJkUHJveHlFZmxfaAorI2RlZmluZSBXZWJQYXN0ZWJvYXJkUHJveHlFZmxfaAorCisj
aW5jbHVkZSAiQVBJT2JqZWN0LmgiCisKKyNpbmNsdWRlICJXZWJQYXN0ZWJvYXJkQ2xpZW50RWZs
LmgiCisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+
CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJQYXN0ZWJvYXJkUHJveHlFZmwgOiBw
dWJsaWMgQVBJT2JqZWN0IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgY29uc3QgVHlwZSBBUElUeXBl
ID0gVHlwZVBhc3RlYm9hcmRQcm94eTsKKworICAgIHN0YXRpYyBXZWJQYXN0ZWJvYXJkUHJveHlF
ZmwqIHNoYXJlZCgpOworCisgICAgdm9pZCBzZXRDbGllbnQoY29uc3QgV0tQYXN0ZWJvYXJkQ2xp
ZW50RWZsKik7CisgICAgV2ViUGFzdGVib2FyZENsaWVudEVmbCYgY2xpZW50KCkgeyByZXR1cm4g
bV9jbGllbnQ7IH0KKworICAgIFN0cmluZyBnZXRTdHJpbmdGb3JUeXBlKGNvbnN0IFN0cmluZyYg
c2VsZWN0aW9uRm9ybWF0LCBjb25zdCBTdHJpbmcmIHNlbGVjdGlvblR5cGUpOworICAgIHZvaWQg
c2V0U3RyaW5nRm9yVHlwZShjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmIHNlbGVjdGlvbkZv
cm1hdCwgY29uc3QgU3RyaW5nJiBzZWxlY3Rpb25UeXBlKTsKKworcHJpdmF0ZToKKyAgICBXZWJQ
YXN0ZWJvYXJkUHJveHlFZmwoKTsKKworICAgIHZpcnR1YWwgVHlwZSB0eXBlKCkgY29uc3QgeyBy
ZXR1cm4gQVBJVHlwZTsgfQorCisgICAgV2ViUGFzdGVib2FyZENsaWVudEVmbCBtX2NsaWVudDsK
K307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gV2ViUGFzdGVib2FyZFBy
b3h5RWZsX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcAppbmRleCBjNmNjOWMyLi5lNGM0YWRlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVk
aXRvckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwCkBAIC01MSw2ICs1MSw4IEBACiAjaWYgUExBVEZPUk0o
UVQpCiAjaW5jbHVkZSA8UUNsaXBib2FyZD4KICNpbmNsdWRlIDxRR3VpQXBwbGljYXRpb24+Cisj
ZW5kaWYKKyNpZiBQTEFURk9STShRVCkgfHwgUExBVEZPUk0oRUZMKQogI2luY2x1ZGUgPFdlYkNv
cmUvUGFzdGVib2FyZC5oPgogI2VuZGlmCiAKQEAgLTE5MywxMiArMTk1LDEyIEBAIHZvaWQgV2Vi
RWRpdG9yQ2xpZW50OjpyZXNwb25kVG9DaGFuZ2VkU2VsZWN0aW9uKEZyYW1lKiBmcmFtZSkKIAog
ICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpFZGl0b3JTdGF0ZUNoYW5n
ZWQoc3RhdGUpKTsKIAotI2lmIFBMQVRGT1JNKEdUSykgfHwgUExBVEZPUk0oUVQpCisjaWYgUExB
VEZPUk0oR1RLKSB8fCBQTEFURk9STShRVCkgfHwgUExBVEZPUk0oRUZMKQogICAgIHVwZGF0ZUds
b2JhbFNlbGVjdGlvbihmcmFtZSk7CiAjZW5kaWYKIH0KIAotI2lmIFBMQVRGT1JNKFFUKQorI2lm
IFBMQVRGT1JNKFFUKSB8fCBQTEFURk9STShFRkwpCiAvLyBGSVhNRTogVXNlIHRoaXMgZnVuY3Rp
b24gZm9yIG90aGVyIFgxMS1iYXNlZCBwbGF0Zm9ybXMgdGhhdCBuZWVkIHRvIG1hbnVhbGx5IHVw
ZGF0ZSB0aGUgZ2xvYmFsIHNlbGVjdGlvbi4KIHZvaWQgV2ViRWRpdG9yQ2xpZW50Ojp1cGRhdGVH
bG9iYWxTZWxlY3Rpb24oRnJhbWUqIGZyYW1lKQogewpAQCAtNDgyLDcgKzQ4NCw3IEBAIGJvb2wg
V2ViRWRpdG9yQ2xpZW50OjpzdXBwb3J0c0dsb2JhbFNlbGVjdGlvbigpCiB7CiAjaWYgUExBVEZP
Uk0oUVQpICYmICFkZWZpbmVkKFFUX05PX0NMSVBCT0FSRCkKICAgICByZXR1cm4gcUFwcC0+Y2xp
cGJvYXJkKCktPnN1cHBvcnRzU2VsZWN0aW9uKCk7Ci0jZWxpZiBQTEFURk9STShHVEspICYmIFBM
QVRGT1JNKFgxMSkKKyNlbGlmIFBMQVRGT1JNKEdUSykgJiYgUExBVEZPUk0oWDExKSB8fCBQTEFU
Rk9STShFRkwpCiAgICAgcmV0dXJuIHRydWU7CiAjZWxzZQogICAgIC8vIEZJWE1FOiBSZXR1cm4g
dHJ1ZSBvbiBvdGhlciBYMTEgcGxhdGZvcm1zIHdoZW4gdGhleSBzdXBwb3J0IGdsb2JhbCBzZWxl
Y3Rpb24uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkVkaXRvckNsaWVudC5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaAppbmRleCA2NGY0YTFiLi42NDRmNGE5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNs
aWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
RWRpdG9yQ2xpZW50LmgKQEAgLTEyNSw3ICsxMjUsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgZXhl
Y3V0ZVBlbmRpbmdFZGl0b3JDb21tYW5kcyhXZWJDb3JlOjpGcmFtZSosIFZlY3RvcjxXVEY6OlN0
cmluZz4sIGJvb2wpIE9WRVJSSURFOwogICAgIHZvaWQgZ2V0RWRpdG9yQ29tbWFuZHNGb3JLZXlF
dmVudChjb25zdCBXZWJDb3JlOjpLZXlib2FyZEV2ZW50KiwgVmVjdG9yPFdURjo6U3RyaW5nPiYp
IE9WRVJSSURFOwogI2VuZGlmCi0jaWYgUExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShRVCkKKyNp
ZiBQTEFURk9STShHVEspIHx8IFBMQVRGT1JNKFFUKSB8fCBQTEFURk9STShFRkwpCiAgICAgdm9p
ZCB1cGRhdGVHbG9iYWxTZWxlY3Rpb24oV2ViQ29yZTo6RnJhbWUqKTsKICNlbmRpZgogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRm
b3JtU3RyYXRlZ2llcy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAKaW5kZXggOWRjNDhjNS4uNjk3MjNiYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0
Zm9ybVN0cmF0ZWdpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcApAQCAtMzMsNiArMzMsNyBAQAogI2lu
Y2x1ZGUgIldlYkNvbnRleHRNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYkNvb2tpZU1hbmFnZXIu
aCIKICNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKKyNpbmNsdWRlICJXZWJQYWdl
UHJveHlNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKICNpbmNsdWRlICJXZWJQ
cm9jZXNzUHJveHlNZXNzYWdlcy5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQ29sb3IuaD4KQEAgLTMw
NiwxNCArMzA3LDYgQEAgdm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmdldFBhdGhuYW1lc0Zv
clR5cGUoVmVjdG9yPFN0cmluZz4mIHBhdGhuYW1lcywgY29uc3QKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2VzOjpXZWJDb250ZXh0OjpHZXRQ
YXN0ZWJvYXJkUGF0aG5hbWVzRm9yVHlwZTo6UmVwbHkocGF0aG5hbWVzKSwgMCk7CiB9CiAKLVN0
cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnN0cmluZ0ZvclR5cGUoY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkKLXsKLSAgICBTdHJp
bmcgdmFsdWU7Ci0gICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkuY29ubmVjdGlvbigpLT5zZW5kU3lu
YyhNZXNzYWdlczo6V2ViQ29udGV4dDo6R2V0UGFzdGVib2FyZFN0cmluZ0ZvclR5cGUocGFzdGVi
b2FyZE5hbWUsIHBhc3RlYm9hcmRUeXBlKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIE1lc3NhZ2VzOjpXZWJDb250ZXh0OjpHZXRQYXN0ZWJvYXJkU3Ry
aW5nRm9yVHlwZTo6UmVwbHkodmFsdWUpLCAwKTsKLSAgICByZXR1cm4gdmFsdWU7Ci19Ci0KIHZv
aWQgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb3B5KGNvbnN0IFN0cmluZyYgZnJvbVBhc3RlYm9h
cmQsIGNvbnN0IFN0cmluZyYgdG9QYXN0ZWJvYXJkKQogewogICAgIFdlYlByb2Nlc3M6OnNoYXJl
ZCgpLmNvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViQ29udGV4dDo6UGFzdGVib2FyZENv
cHkoZnJvbVBhc3RlYm9hcmQsIHRvUGFzdGVib2FyZCksIDApOwpAQCAtMzc2LDYgKzM2OSwxNSBA
QCB2b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6c2V0UGF0aG5hbWVzRm9yVHlwZShjb25zdCBW
ZWN0b3I8U3RyaW5nPiYgcGF0aG5hbWVzLAogewogICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLmNv
bm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViQ29udGV4dDo6U2V0UGFzdGVib2FyZFBhdGhu
YW1lc0ZvclR5cGUocGFzdGVib2FyZE5hbWUsIHBhc3RlYm9hcmRUeXBlLCBwYXRobmFtZXMpLCAw
KTsKIH0KKyNlbmRpZgorI2lmIFBMQVRGT1JNKE1BQykgfHwgUExBVEZPUk0oRUZMKQorU3RyaW5n
IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6c3RyaW5nRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKQoreworICAgIFN0cmluZyB2
YWx1ZTsKKyAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5jb25uZWN0aW9uKCktPnNlbmRTeW5jKE1l
c3NhZ2VzOjpXZWJDb250ZXh0OjpHZXRQYXN0ZWJvYXJkU3RyaW5nRm9yVHlwZShwYXN0ZWJvYXJk
TmFtZSwgcGFzdGVib2FyZFR5cGUpLCBNZXNzYWdlczo6V2ViQ29udGV4dDo6R2V0UGFzdGVib2Fy
ZFN0cmluZ0ZvclR5cGU6OlJlcGx5KHZhbHVlKSwgMCk7CisKKyAgICByZXR1cm4gdmFsdWU7Cit9
CiAKIHZvaWQgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpzZXRTdHJpbmdGb3JUeXBlKGNvbnN0IFN0
cmluZyYgc3RyaW5nLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaCBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgKaW5kZXgg
Y2MwZGM4Yy4uYzMxZDZmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCkBAIC04
Niw3ICs4Niw2IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGdldFR5cGVzKFZlY3RvcjxT
dHJpbmc+JiB0eXBlcywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgT1ZFUlJJREU7CiAg
ICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gYnVmZmVyRm9yVHlw
ZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgZ2V0UGF0aG5hbWVzRm9yVHlwZShWZWN0
b3I8U3RyaW5nPiYgcGF0aG5hbWVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIFN0cmluZyBz
dHJpbmdGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZE5hbWUpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgaW50IGNoYW5nZUNvdW50KGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgU3RyaW5n
IHVuaXF1ZU5hbWUoKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIFdlYkNvcmU6OkNvbG9yIGNvbG9y
KGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIE9WRVJSSURFOwpAQCAtOTcsNiArOTYsOSBA
QCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBzZXRUeXBlcyhjb25zdCBWZWN0b3I8U3RyaW5n
PiYgcGFzdGVib2FyZFR5cGVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBPVkVSUklE
RTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0QnVmZmVyRm9yVHlwZShQYXNzUmVmUHRyPFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcj4sIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZE5hbWUpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBzZXRQYXRobmFt
ZXNGb3JUeXBlKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
VHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgT1ZFUlJJREU7CisjZW5kaWYKKyNp
ZiBQTEFURk9STShNQUMpIHx8IFBMQVRGT1JNKEVGTCkKKyAgICB2aXJ0dWFsIFN0cmluZyBzdHJp
bmdGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBzZXRTdHJpbmdGb3JUeXBl
KGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZE5hbWUpIE9WRVJSSURFOwogI2VuZGlmCiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>182970</attachid>
            <date>2013-01-16 06:03:55 -0800</date>
            <delta_ts>2013-08-14 08:57:36 -0700</delta_ts>
            <desc>added new file for pasteboard constants</desc>
            <filename>pasteboard8.diff</filename>
            <type>text/plain</type>
            <size>54056</size>
            <attacher name="Michal Pakula vel Rutka">mpakulavelrutka</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAzMDZjOWM0Li44ZmViZTQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzQg
QEAKKzIwMTMtMDEtMTYgIE1pY2hhxYIgUGFrdcWCYSB2ZWwgUnV0a2EgIDxtLnBha3VsYUBzYW1z
dW5nLmNvbT4KKworICAgICAgICBbRUZMXVtXSzJdIEltcGxlbWVudGF0aW9uIG9mIHBhc3RlYm9h
cmQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMjQ4
NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEVGTCBk
b2VzIG5vdCBwcm92aWRlIHBsYXRmb3JtLXdpZGUgY29weSBhbmQgcGFzdGUgc3VwcG9ydCwgYnV0
IGFuIEFQSSBpbiBVSSB0b29sa2l0IC0gRWxlbWVudGFyeS4KKyAgICAgICAgV2ViS2l0IEVGTCBz
aG91bGQgYmUgZWxlbWVudGFyeSBpbmRlcGVuZGVudCwgYWxzbyBFbGVtZW50YXJ5IGNvcHkgYW5k
IHBhc3RlIEFQSSBuZWVkcyBhIFVJIHdpZGdldAorICAgICAgICBhcyBvbmUgb2YgaXRzIGFyZ3Vt
ZW50LiBUaHVzLCB3ZSBjYW5ub3QgaW1wbGVtZW50IHBhc3RlYm9hcmQgaW5zaWRlIFdlYkNvcmUg
bGlrZSBvdGhlciBwb3J0cywKKyAgICAgICAgYnV0IHRoZSBpbXBsZW1lbnRhdGlvbiBoYXMgdG8g
YmUgZG9uZSBvbiBhcHBsaWNhdGlvbiBzaWRlLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyAtIGFs
cmVhZHkgY292ZXJlZCBieSBleGlzdGluZyB0ZXN0cy4KKworICAgICAgICAqIHBsYXRmb3JtL1Bh
c3RlYm9hcmQuaDoKKyAgICAgICAgKFBhc3RlYm9hcmQpOgorICAgICAgICAqIHBsYXRmb3JtL1Bh
c3RlYm9hcmRTdHJhdGVneS5oOgorICAgICAgICAoUGFzdGVib2FyZFN0cmF0ZWd5KToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9lZmwvRWZsUGFzdGVib2FyZFV0aWxpdGllcy5oOiBBZGRlZC4KKyAgICAg
ICAgKFdlYkNvcmUpOgorICAgICAgICAqIHBsYXRmb3JtL2VmbC9QYXN0ZWJvYXJkRWZsLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OlBhc3RlYm9hcmQpOgorICAgICAgICAoV2Vi
Q29yZTo6UGFzdGVib2FyZDo6d3JpdGVQbGFpblRleHQpOgorICAgICAgICAoV2ViQ29yZTo6UGFz
dGVib2FyZDo6d3JpdGVTZWxlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6
d3JpdGVVUkwpOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6ZG9jdW1lbnRGcmFnbWVu
dCk6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjpwbGFpblRleHQpOgorICAgICAgICAo
V2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjppc1NlbGVjdGlvbk1vZGUp
OgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6c2V0U2VsZWN0aW9uTW9kZSk6CisKIDIw
MTMtMDEtMTYgIEFuZHJleSBMdXNobmlrb3YgIDxsdXNobmlrb3ZAY2hyb21pdW0ub3JnPgogCiAg
ICAgICAgIFdlYiBJbnNwZWN0b3I6IGZpeCDQoWxvc3VyZSB3YXJuaW5ncyBpbiBkZXZUb29scyBm
cm9udC1lbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuaAppbmRleCA0MDIyYTYxLi45
ODI1YjliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZC5oCkBAIC0xMDAsNyArMTAw
LDcgQEAgcHVibGljOgogICAgIFBhc3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gZG9jdW1lbnRG
cmFnbWVudChGcmFtZSosIFBhc3NSZWZQdHI8UmFuZ2U+LCBib29sIGFsbG93UGxhaW5UZXh0LCBi
b29sJiBjaG9zZVBsYWluVGV4dCk7CiAgICAgU3RyaW5nIHBsYWluVGV4dChGcmFtZSogPSAwKTsK
ICAgICAKLSNpZiBQTEFURk9STShRVCkgfHwgUExBVEZPUk0oQ0hST01JVU0pIHx8IFBMQVRGT1JN
KEdUSykKKyNpZiBQTEFURk9STShRVCkgfHwgUExBVEZPUk0oQ0hST01JVU0pIHx8IFBMQVRGT1JN
KEdUSykgfHwgUExBVEZPUk0oRUZMKQogICAgIGJvb2wgaXNTZWxlY3Rpb25Nb2RlKCkgY29uc3Q7
CiAgICAgdm9pZCBzZXRTZWxlY3Rpb25Nb2RlKGJvb2wpOwogI2Vsc2UKQEAgLTEyMyw3ICsxMjMs
NyBAQCBwcml2YXRlOgogICAgIEhXTkQgbV9vd25lcjsKICNlbmRpZgogCi0jaWYgUExBVEZPUk0o
UVQpIHx8IFBMQVRGT1JNKENIUk9NSVVNKQorI2lmIFBMQVRGT1JNKFFUKSB8fCBQTEFURk9STShD
SFJPTUlVTSkgfHwgUExBVEZPUk0oRUZMKQogICAgIGJvb2wgbV9zZWxlY3Rpb25Nb2RlOwogI2Vu
ZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRTdHJh
dGVneS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZFN0cmF0ZWd5LmgKaW5k
ZXggZjkyMmM2Ni4uZDkwNjkyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
UGFzdGVib2FyZFN0cmF0ZWd5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVi
b2FyZFN0cmF0ZWd5LmgKQEAgLTQ0LDcgKzQ0LDYgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9p
ZCBnZXRUeXBlcyhWZWN0b3I8U3RyaW5nPiYgdHlwZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZE5hbWUpID0gMDsKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXJG
b3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZE5hbWUpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZ2V0UGF0aG5hbWVzRm9yVHlwZShWZWN0
b3I8U3RyaW5nPiYgcGF0aG5hbWVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSA9IDA7Ci0gICAgdmlydHVhbCBTdHJpbmcgc3RyaW5n
Rm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lKSA9IDA7CiAgICAgdmlydHVhbCBpbnQgY2hhbmdlQ291bnQoY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSkgPSAwOwogICAgIHZpcnR1YWwgU3RyaW5nIHVuaXF1ZU5hbWUoKSA9
IDA7CiAgICAgdmlydHVhbCBDb2xvciBjb2xvcihjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
KSA9IDA7CkBAIC01NSw2ICs1NCw5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0VHlw
ZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzZXRCdWZmZXJGb3JUeXBlKFBh
c3NSZWZQdHI8U2hhcmVkQnVmZmVyPiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzZXRQYXRo
bmFtZXNGb3JUeXBlKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgPSAwOworI2VuZGlmCisjaWYg
UExBVEZPUk0oTUFDKSB8fCBQTEFURk9STShFRkwpCisgICAgdmlydHVhbCBTdHJpbmcgc3RyaW5n
Rm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNldFN0cmluZ0ZvclR5cGUoY29uc3Qg
U3RyaW5nJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkTmFtZSkgPSAwOwogI2VuZGlmCiBwcm90ZWN0ZWQ6CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9lZmwvRWZsUGFzdGVib2FyZFV0aWxpdGllcy5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZWZsL0VmbFBhc3RlYm9hcmRVdGlsaXRpZXMuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMDBlMTQxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZWZsL0VmbFBhc3RlYm9hcmRVdGlsaXRpZXMuaApAQCAtMCwwICsx
LDQyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIFNhbXN1bmcgRWxlY3Ryb25pY3MKKyAq
CisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgRWZsUGFzdGVib2FyZFV0
aWxpdGllc19oCisjZGVmaW5lIEVmbFBhc3RlYm9hcmRVdGlsaXRpZXNfaAorCisjaW5jbHVkZSA8
d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY29uc3QgU3Ry
aW5nIHNlbGVjdGlvbkZvcm1hdFRleHQgPSBBU0NJSUxpdGVyYWwoIlRleHQiKTsKK2NvbnN0IFN0
cmluZyBzZWxlY3Rpb25Gb3JtYXRNYXJrdXAgPSBBU0NJSUxpdGVyYWwoIk1hcmt1cCIpOworY29u
c3QgU3RyaW5nIHNlbGVjdGlvblR5cGVQcmltYXJ5ID0gQVNDSUlMaXRlcmFsKCJQcmltYXJ5Iik7
Citjb25zdCBTdHJpbmcgc2VsZWN0aW9uVHlwZUNsaXBib2FyZCA9IEFTQ0lJTGl0ZXJhbCgiQ2xp
cGJvYXJkIik7CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVmbFBhc3Rl
Ym9hcmRVdGlsaXRpZXNfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZs
L1Bhc3RlYm9hcmRFZmwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZsL1Bhc3RlYm9h
cmRFZmwuY3BwCmluZGV4IDdhMWFjNDUuLmYyMjM4ZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2VmbC9QYXN0ZWJvYXJkRWZsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9lZmwvUGFzdGVib2FyZEVmbC5jcHAKQEAgLTI0LDEwICsyNCwxMyBAQAogI2luY2x1
ZGUgIlBhc3RlYm9hcmQuaCIKIAogI2luY2x1ZGUgIkRvY3VtZW50RnJhZ21lbnQuaCIKKyNpbmNs
dWRlICJFZmxQYXN0ZWJvYXJkVXRpbGl0aWVzLmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNs
dWRlICJJbWFnZS5oIgogI2luY2x1ZGUgIktVUkwuaCIKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRl
ZC5oIgorI2luY2x1ZGUgIlBhc3RlYm9hcmRTdHJhdGVneS5oIgorI2luY2x1ZGUgIlBsYXRmb3Jt
U3RyYXRlZ2llcy5oIgogI2luY2x1ZGUgIlJlbmRlckltYWdlLmgiCiAjaW5jbHVkZSAibWFya3Vw
LmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgpAQCAtNDIsMjMgKzQ1LDI3IEBAIFBh
c3RlYm9hcmQqIFBhc3RlYm9hcmQ6OmdlbmVyYWxQYXN0ZWJvYXJkKCkKIH0KIAogUGFzdGVib2Fy
ZDo6UGFzdGVib2FyZCgpCisgICAgOiBtX3NlbGVjdGlvbk1vZGUoZmFsc2UpCiB7Ci0gICAgbm90
SW1wbGVtZW50ZWQoKTsKIH0KIAotdm9pZCBQYXN0ZWJvYXJkOjp3cml0ZVBsYWluVGV4dChjb25z
dCBTdHJpbmcmLCBTbWFydFJlcGxhY2VPcHRpb24pCit2b2lkIFBhc3RlYm9hcmQ6OndyaXRlUGxh
aW5UZXh0KGNvbnN0IFN0cmluZyYgdGV4dCwgU21hcnRSZXBsYWNlT3B0aW9uKQogewotICAgIG5v
dEltcGxlbWVudGVkKCk7CisgICAgcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJh
dGVneSgpLT5zZXRTdHJpbmdGb3JUeXBlKHRleHQsIHNlbGVjdGlvbkZvcm1hdFRleHQsIG1fc2Vs
ZWN0aW9uTW9kZSA/IHNlbGVjdGlvblR5cGVQcmltYXJ5IDogc2VsZWN0aW9uVHlwZUNsaXBib2Fy
ZCk7CiB9CiAKLXZvaWQgUGFzdGVib2FyZDo6d3JpdGVTZWxlY3Rpb24oUmFuZ2UqLCBib29sLCBG
cmFtZSopCit2b2lkIFBhc3RlYm9hcmQ6OndyaXRlU2VsZWN0aW9uKFJhbmdlKiBzZWxlY3RlZFJh
bmdlLCBib29sLCBGcmFtZSopCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBTdHJpbmcg
bWFya3VwID0gY3JlYXRlTWFya3VwKHNlbGVjdGVkUmFuZ2UsIDAsIEFubm90YXRlRm9ySW50ZXJj
aGFuZ2UsIGZhbHNlLCBSZXNvbHZlTm9uTG9jYWxVUkxzKTsKKyAgICBwbGF0Zm9ybVN0cmF0ZWdp
ZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPnNldFN0cmluZ0ZvclR5cGUobWFya3VwLCBzZWxl
Y3Rpb25Gb3JtYXRNYXJrdXAsIG1fc2VsZWN0aW9uTW9kZSA/IHNlbGVjdGlvblR5cGVQcmltYXJ5
IDogc2VsZWN0aW9uVHlwZUNsaXBib2FyZCk7CiB9CiAKLXZvaWQgUGFzdGVib2FyZDo6d3JpdGVV
UkwoY29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYsIEZyYW1lKikKK3ZvaWQgUGFzdGVib2FyZDo6
d3JpdGVVUkwoY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmLCBGcmFtZSopCiB7Ci0gICAg
bm90SW1wbGVtZW50ZWQoKTsKKyAgICBpZiAodXJsLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJu
OworCisgICAgcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT5zZXRT
dHJpbmdGb3JUeXBlKHVybC5zdHJpbmcoKSwgc2VsZWN0aW9uRm9ybWF0TWFya3VwLCBtX3NlbGVj
dGlvbk1vZGUgPyBzZWxlY3Rpb25UeXBlUHJpbWFyeSA6IHNlbGVjdGlvblR5cGVDbGlwYm9hcmQp
OwogfQogCiB2b2lkIFBhc3RlYm9hcmQ6OndyaXRlSW1hZ2UoTm9kZSosIGNvbnN0IEtVUkwmLCBj
b25zdCBTdHJpbmcmKQpAQCAtODIsMTYgKzg5LDQyIEBAIGJvb2wgUGFzdGVib2FyZDo6Y2FuU21h
cnRSZXBsYWNlKCkKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLVBhc3NSZWZQdHI8RG9jdW1lbnRG
cmFnbWVudD4gUGFzdGVib2FyZDo6ZG9jdW1lbnRGcmFnbWVudChGcmFtZSosIFBhc3NSZWZQdHI8
UmFuZ2U+LCBib29sLCBib29sJikKK1Bhc3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gUGFzdGVi
b2FyZDo6ZG9jdW1lbnRGcmFnbWVudChGcmFtZSogZnJhbWUsIFBhc3NSZWZQdHI8UmFuZ2U+IGNv
bnRleHQsIGJvb2wgYWxsb3dQbGFpblRleHQsIGJvb2wmIGNob3NlUGxhaW5UZXh0KQogewotICAg
IG5vdEltcGxlbWVudGVkKCk7CisgICAgY2hvc2VQbGFpblRleHQgPSBmYWxzZTsKKworICAgIFN0
cmluZyBkYXRhID0gcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT5z
dHJpbmdGb3JUeXBlKHNlbGVjdGlvbkZvcm1hdE1hcmt1cCwgbV9zZWxlY3Rpb25Nb2RlID8gc2Vs
ZWN0aW9uVHlwZVByaW1hcnkgOiBzZWxlY3Rpb25UeXBlQ2xpcGJvYXJkKTsKKworICAgIGlmICgh
ZGF0YS5pc0VtcHR5KCkpIHsKKyAgICAgICAgaWYgKFJlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBm
cmFnbWVudCA9IGNyZWF0ZUZyYWdtZW50RnJvbU1hcmt1cChmcmFtZS0+ZG9jdW1lbnQoKSwgZGF0
YSwgZW1wdHlTdHJpbmcoKSwgRGlzYWxsb3dTY3JpcHRpbmdDb250ZW50KSkKKyAgICAgICAgICAg
IHJldHVybiBmcmFnbWVudC5yZWxlYXNlKCk7CisgICAgfQorCisgICAgZGF0YSA9IHBsYXRmb3Jt
U3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+c3RyaW5nRm9yVHlwZShzZWxlY3Rp
b25Gb3JtYXRUZXh0LCBtX3NlbGVjdGlvbk1vZGUgPyBzZWxlY3Rpb25UeXBlUHJpbWFyeSA6IHNl
bGVjdGlvblR5cGVDbGlwYm9hcmQpOworCisgICAgaWYgKGFsbG93UGxhaW5UZXh0ICYmICFkYXRh
LmlzRW1wdHkoKSkgeworICAgICAgICBjaG9zZVBsYWluVGV4dCA9IHRydWU7CisgICAgICAgIFJl
ZlB0cjxEb2N1bWVudEZyYWdtZW50PiBmcmFnbWVudCA9IGNyZWF0ZUZyYWdtZW50RnJvbVRleHQo
Y29udGV4dC5nZXQoKSwgZGF0YSk7CisgICAgICAgIGlmIChmcmFnbWVudCkKKyAgICAgICAgICAg
IHJldHVybiBmcmFnbWVudC5yZWxlYXNlKCk7CisgICAgfQorCiAgICAgcmV0dXJuIDA7CiB9CiAK
IFN0cmluZyBQYXN0ZWJvYXJkOjpwbGFpblRleHQoRnJhbWUqKQogewotICAgIG5vdEltcGxlbWVu
dGVkKCk7Ci0gICAgcmV0dXJuIFN0cmluZygpOworICAgIHJldHVybiBwbGF0Zm9ybVN0cmF0ZWdp
ZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPnN0cmluZ0ZvclR5cGUoc2VsZWN0aW9uRm9ybWF0
VGV4dCwgbV9zZWxlY3Rpb25Nb2RlID8gc2VsZWN0aW9uVHlwZVByaW1hcnkgOiBzZWxlY3Rpb25U
eXBlQ2xpcGJvYXJkKTsKK30KKworYm9vbCBQYXN0ZWJvYXJkOjppc1NlbGVjdGlvbk1vZGUoKSBj
b25zdAoreworICAgIHJldHVybiBtX3NlbGVjdGlvbk1vZGU7Cit9CisKK3ZvaWQgUGFzdGVib2Fy
ZDo6c2V0U2VsZWN0aW9uTW9kZShib29sIHNlbGVjdGlvbk1vZGUpCit7CisgICAgbV9zZWxlY3Rp
b25Nb2RlID0gc2VsZWN0aW9uTW9kZTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9lZmwvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCmluZGV4IDhmYmFi
Y2UuLmU1YjNiODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMiBAQAorMjAxMy0wMS0x
NiAgTWljaGHFgiBQYWt1xYJhIHZlbCBSdXRrYSAgPG0ucGFrdWxhQHNhbXN1bmcuY29tPgorCisg
ICAgICAgIFtFRkxdW1dLMl0gSW1wbGVtZW50YXRpb24gb2YgcGFzdGVib2FyZAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAyNDg0CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRUZMIGRvZXMgbm90IHByb3Zp
ZGUgcGxhdGZvcm0td2lkZSBjb3B5IGFuZCBwYXN0ZSBzdXBwb3J0LCBidXQgYW4gQVBJIGluIFVJ
IHRvb2xraXQgLSBFbGVtZW50YXJ5LgorICAgICAgICBXZWJLaXQgRUZMIHNob3VsZCBiZSBlbGVt
ZW50YXJ5IGluZGVwZW5kZW50LCBhbHNvIEVsZW1lbnRhcnkgY29weSBhbmQgcGFzdGUgQVBJIG5l
ZWRzIGEgVUkgd2lkZ2V0CisgICAgICAgIGFzIG9uZSBvZiBpdHMgYXJndW1lbnQuIFRodXMsIHdl
IGNhbm5vdCBpbXBsZW1lbnQgcGFzdGVib2FyZCBpbnNpZGUgV2ViQ29yZSBsaWtlIG90aGVyIHBv
cnRzLAorICAgICAgICBidXQgdGhlIGltcGxlbWVudGF0aW9uIGhhcyB0byBiZSBkb25lIG9uIGFw
cGxpY2F0aW9uIHNpZGUuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9QbGF0Zm9ybVN0cmF0
ZWdpZXNFZmwuY3BwOgorICAgICAgICAoUGxhdGZvcm1TdHJhdGVnaWVzRWZsOjpjcmVhdGVQYXN0
ZWJvYXJkU3RyYXRlZ3kpOgorICAgICAgICAoUGxhdGZvcm1TdHJhdGVnaWVzRWZsOjpzZXRTdHJp
bmdGb3JUeXBlKToKKyAgICAgICAgKFBsYXRmb3JtU3RyYXRlZ2llc0VmbDo6c3RyaW5nRm9yVHlw
ZSk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvUGxhdGZvcm1TdHJhdGVnaWVzRWZsLmg6Cisg
ICAgICAgIChQbGF0Zm9ybVN0cmF0ZWdpZXNFZmwpOgorCiAyMDEzLTAxLTE1ICBHeXV5b3VuZyBL
aW0gIDxneXV5b3VuZy5raW1Ac2Ftc3VuZy5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZC4gRml4
IGJ1aWxkIGJyZWFrIGJ5IHIxMzk3OTYuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9X
ZWJDb3JlU3VwcG9ydC9QbGF0Zm9ybVN0cmF0ZWdpZXNFZmwuY3BwIGIvU291cmNlL1dlYktpdC9l
ZmwvV2ViQ29yZVN1cHBvcnQvUGxhdGZvcm1TdHJhdGVnaWVzRWZsLmNwcAppbmRleCBhNzgzZjUw
Li4xNzg5N2IxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9Q
bGF0Zm9ybVN0cmF0ZWdpZXNFZmwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVT
dXBwb3J0L1BsYXRmb3JtU3RyYXRlZ2llc0VmbC5jcHAKQEAgLTYyLDggKzYyLDcgQEAgTG9hZGVy
U3RyYXRlZ3kqIFBsYXRmb3JtU3RyYXRlZ2llc0VmbDo6Y3JlYXRlTG9hZGVyU3RyYXRlZ3koKQog
CiBQYXN0ZWJvYXJkU3RyYXRlZ3kqIFBsYXRmb3JtU3RyYXRlZ2llc0VmbDo6Y3JlYXRlUGFzdGVi
b2FyZFN0cmF0ZWd5KCkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiAwOwor
ICAgIHJldHVybiB0aGlzOwogfQogCiBQbHVnaW5TdHJhdGVneSogUGxhdGZvcm1TdHJhdGVnaWVz
RWZsOjpjcmVhdGVQbHVnaW5TdHJhdGVneSgpCkBAIC0xNjIsMyArMTYxLDE1IEBAIHZvaWQgUGxh
dGZvcm1TdHJhdGVnaWVzRWZsOjphZGRWaXNpdGVkTGluayhQYWdlKiBwYWdlLCBMaW5rSGFzaCBo
YXNoKQogewogICAgIHBhZ2UtPmdyb3VwKCkuYWRkVmlzaXRlZExpbmtIYXNoKGhhc2gpOwogfQor
CisvLyBQYXN0ZWJvYXJkU3RyYXRlZ3kKK3ZvaWQgUGxhdGZvcm1TdHJhdGVnaWVzRWZsOjpzZXRT
dHJpbmdGb3JUeXBlKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYp
Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKworU3RyaW5nIFBsYXRmb3JtU3RyYXRlZ2ll
c0VmbDo6c3RyaW5nRm9yVHlwZShjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmKQoreworICAg
IG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIFN0cmluZygpOworfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvUGxhdGZvcm1TdHJhdGVnaWVzRWZsLmgg
Yi9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9QbGF0Zm9ybVN0cmF0ZWdpZXNFZmwu
aAppbmRleCBlN2E5ZThkLi4wYzY4NmU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9X
ZWJDb3JlU3VwcG9ydC9QbGF0Zm9ybVN0cmF0ZWdpZXNFZmwuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L2VmbC9XZWJDb3JlU3VwcG9ydC9QbGF0Zm9ybVN0cmF0ZWdpZXNFZmwuaApAQCAtMjksNyArMjks
NyBAQAogI2luY2x1ZGUgIlNoYXJlZFdvcmtlclN0cmF0ZWd5LmgiCiAjaW5jbHVkZSAiVmlzaXRl
ZExpbmtTdHJhdGVneS5oIgogCi1jbGFzcyBQbGF0Zm9ybVN0cmF0ZWdpZXNFZmwgOiBwdWJsaWMg
V2ViQ29yZTo6UGxhdGZvcm1TdHJhdGVnaWVzLCBwcml2YXRlIFdlYkNvcmU6OkNvb2tpZXNTdHJh
dGVneSwgcHJpdmF0ZSBXZWJDb3JlOjpEYXRhYmFzZVN0cmF0ZWd5LCBwcml2YXRlIFdlYkNvcmU6
OkxvYWRlclN0cmF0ZWd5LCBwcml2YXRlIFdlYkNvcmU6OlBsdWdpblN0cmF0ZWd5LCBwcml2YXRl
IFdlYkNvcmU6OlNoYXJlZFdvcmtlclN0cmF0ZWd5LCBwcml2YXRlIFdlYkNvcmU6OlZpc2l0ZWRM
aW5rU3RyYXRlZ3kgeworY2xhc3MgUGxhdGZvcm1TdHJhdGVnaWVzRWZsIDogcHVibGljIFdlYkNv
cmU6OlBsYXRmb3JtU3RyYXRlZ2llcywgcHJpdmF0ZSBXZWJDb3JlOjpDb29raWVzU3RyYXRlZ3ks
IHByaXZhdGUgV2ViQ29yZTo6RGF0YWJhc2VTdHJhdGVneSwgcHJpdmF0ZSBXZWJDb3JlOjpMb2Fk
ZXJTdHJhdGVneSwgcHJpdmF0ZSBXZWJDb3JlOjpQbHVnaW5TdHJhdGVneSwgcHJpdmF0ZSBXZWJD
b3JlOjpTaGFyZWRXb3JrZXJTdHJhdGVneSwgcHJpdmF0ZSBXZWJDb3JlOjpWaXNpdGVkTGlua1N0
cmF0ZWd5LCBwcml2YXRlIFdlYkNvcmU6OlBhc3RlYm9hcmRTdHJhdGVneSB7CiBwdWJsaWM6CiAg
ICAgc3RhdGljIHZvaWQgaW5pdGlhbGl6ZSgpOwogCkBAIC02Myw2ICs2MywxMCBAQCBwcml2YXRl
OgogICAgIC8vIFdlYkNvcmU6OlZpc2l0ZWRMaW5rU3RyYXRlZ3kKICAgICB2aXJ0dWFsIGJvb2wg
aXNMaW5rVmlzaXRlZChXZWJDb3JlOjpQYWdlKiwgV2ViQ29yZTo6TGlua0hhc2gsIGNvbnN0IFdl
YkNvcmU6OktVUkwmIGJhc2VVUkwsIGNvbnN0IFdURjo6QXRvbWljU3RyaW5nJiBhdHRyaWJ1dGVV
UkwpOwogICAgIHZpcnR1YWwgdm9pZCBhZGRWaXNpdGVkTGluayhXZWJDb3JlOjpQYWdlKiwgV2Vi
Q29yZTo6TGlua0hhc2gpOworCisgICAgLy8gV2ViQ29yZTo6UGFzdGVib2FyZFN0cmF0ZWd5Cisg
ICAgdmlydHVhbCBTdHJpbmcgc3RyaW5nRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRU
eXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0
U3RyaW5nRm9yVHlwZShjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBl
LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKTsKIH07CiAKICNlbmRpZiAvLyBQbGF0Zm9y
bVN0cmF0ZWdpZXNFZmxfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIv
U291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IGRiY2E0MmQuLmI5NDQzNjcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VM
b2cKQEAgLTEsMyArMSw2NSBAQAorMjAxMy0wMS0xNiAgTWljaGHFgiBQYWt1xYJhIHZlbCBSdXRr
YSAgPG0ucGFrdWxhQHNhbXN1bmcuY29tPgorCisgICAgICAgIFtFRkxdW1dLMl0gSW1wbGVtZW50
YXRpb24gb2YgcGFzdGVib2FyZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTAyNDg0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgVGhpcyBwYXRjaCBpcyBhbiBpbml0aWFsIGFwcHJvYWNoIHRvIFBhc3RlYm9h
cmQgaW1wbGVtZW50YXRpb24gaW4gV2ViS2l0MiwKKyAgICAgICAgZm9jdXNpbmcgb24gYmFzaWMg
Y29weSBhbmQgcGFzdGUgZmVhdHVyZXMuIEl0IHBhc3Nlc3MgZGF0YSBhbG9uZyB3aXRoIGRhdGEK
KyAgICAgICAgdHlwZSBmcm9tIFdlYkNvcmUgdG8gV2ViS2l0MiBhbmQgdGhlbiB0aGUgY2xpZW50
IGNhbGxiYWNrcyBhcmUgaW52b2tlZC4KKworICAgICAgICAqIFBsYXRmb3JtRWZsLmNtYWtlOgor
ICAgICAgICAqIFNoYXJlZC9BUEkvYy9lZmwvV0tCYXNlRWZsLmg6CisgICAgICAgICogU2hhcmVk
L0FQSU9iamVjdC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9lZmwvV0tQYXN0ZWJvYXJk
RWZsLmNwcDogQWRkZWQuCisgICAgICAgIChXS1Bhc3RlYm9hcmRTZXRDbGllbnQpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvQy9lZmwvV0tQYXN0ZWJvYXJkRWZsLmg6IEFkZGVkLgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvZWZsL0VXZWJLaXQyLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9lZmwvZXdrX3Bhc3RlYm9hcmQuY3BwOiBBZGRlZC4KKyAgICAgICAgKHNldERhdGEpOgorICAg
ICAgICAoZ2V0RGF0YSk6CisgICAgICAgIChld2tfcGFzdGVib2FyZF9pbml0aWFsaXplKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfcGFzdGVib2FyZC5oOiBBZGRlZC4KKyAgICAg
ICAgKiBVSVByb2Nlc3MvV2ViQ29udGV4dC5oOgorICAgICAgICAoV2ViQ29udGV4dCk6CisgICAg
ICAgICogVUlQcm9jZXNzL1dlYkNvbnRleHQubWVzc2FnZXMuaW46CisgICAgICAgICogVUlQcm9j
ZXNzL2VmbC9XZWJDb250ZXh0RWZsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dDo6
Z2V0UGFzdGVib2FyZFN0cmluZ0ZvclR5cGUpOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAg
KFdlYktpdDo6V2ViQ29udGV4dDo6c2V0UGFzdGVib2FyZFN0cmluZ0ZvclR5cGUpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9lZmwvV2ViUGFzdGVib2FyZENsaWVudEVmbC5jcHA6IEFkZGVkLgorICAg
ICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6Z2V0U2VsZWN0aW9uRm9ybWF0RnJvbVN0
cmluZyk6CisgICAgICAgIChXZWJLaXQ6OmdldFNlbGVjdGlvblR5cGVGcm9tU3RyaW5nKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFzdGVib2FyZENsaWVudEVmbDo6Z2V0U3RyaW5nKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFzdGVib2FyZENsaWVudEVmbDo6c2V0U3RyaW5nKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvZWZsL1dlYlBhc3RlYm9hcmRDbGllbnRFZmwuaDogQWRkZWQuCisgICAgICAg
IChXZWJLaXQpOgorICAgICAgICAoV2ViUGFzdGVib2FyZENsaWVudEVmbCk6CisgICAgICAgICog
VUlQcm9jZXNzL2VmbC9XZWJQYXN0ZWJvYXJkUHJveHlFZmwuY3BwOiBBZGRlZC4KKyAgICAgICAg
KFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhc3RlYm9hcmRQcm94eUVmbDo6c2hhcmVk
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFzdGVib2FyZFByb3h5RWZsOjpXZWJQYXN0ZWJvYXJk
UHJveHlFZmwpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYXN0ZWJvYXJkUHJveHlFZmw6OnNldENs
aWVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhc3RlYm9hcmRQcm94eUVmbDo6Z2V0U3RyaW5n
Rm9yVHlwZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhc3RlYm9hcmRQcm94eUVmbDo6c2V0U3Ry
aW5nRm9yVHlwZSk6CisgICAgICAgICogVUlQcm9jZXNzL2VmbC9XZWJQYXN0ZWJvYXJkUHJveHlF
ZmwuaDogQWRkZWQuCisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViUGFzdGVib2FyZFBy
b3h5RWZsKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFzdGVib2FyZFByb3h5RWZsOjpjbGllbnQp
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYXN0ZWJvYXJkUHJveHlFZmw6OnR5cGUpOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViRWRpdG9yQ2xpZW50OjpyZXNwb25kVG9DaGFuZ2VkU2VsZWN0aW9uKToK
KyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6OldlYkVkaXRvckNsaWVudDo6c3Vw
cG9ydHNHbG9iYWxTZWxlY3Rpb24pOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViRWRpdG9yQ2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAg
KFdlYktpdDo6V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpzdHJpbmdGb3JUeXBlKToKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oOgorICAg
ICAgICAoV2ViUGxhdGZvcm1TdHJhdGVnaWVzKToKKwogMjAxMy0wMS0xNSAgQW5kZXJzIENhcmxz
c29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgogCiAgICAgICAgIE1lcmdlIExheWVyVHJlZUhvc3RD
QSBhbmQgTGF5ZXJUcmVlSG9zdE1hYwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZv
cm1FZmwuY21ha2UgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQppbmRleCA0MDc2
Yzg1Li5iZGM5YmM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFr
ZQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQpAQCAtMzIsNiArMzIsNyBA
QCBsaXN0KEFQUEVORCBXZWJLaXQyX1NPVVJDRVMKIAogICAgIFNoYXJlZC9QbHVnaW5zL05ldHNj
YXBlL3gxMS9OZXRzY2FwZVBsdWdpbk1vZHVsZVgxMS5jcHAKIAorICAgIFVJUHJvY2Vzcy9BUEkv
Qy9lZmwvV0tQYXN0ZWJvYXJkRWZsLmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvQy9lZmwvV0tWaWV3
LmNwcAogCiAgICAgVUlQcm9jZXNzL0FQSS9jcHAvZWZsL1dLRWluYVNoYXJlZFN0cmluZy5jcHAK
QEAgLTYzLDYgKzY0LDcgQEAgbGlzdChBUFBFTkQgV2ViS2l0Ml9TT1VSQ0VTCiAgICAgVUlQcm9j
ZXNzL0FQSS9lZmwvZXdrX25hdmlnYXRpb25fZGF0YS5jcHAKICAgICBVSVByb2Nlc3MvQVBJL2Vm
bC9ld2tfbmF2aWdhdGlvbl9wb2xpY3lfZGVjaXNpb24uY3BwCiAgICAgVUlQcm9jZXNzL0FQSS9l
ZmwvZXdrX29iamVjdC5jcHAKKyAgICBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfcGFzdGVib2FyZC5j
cHAKICAgICBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfcG9wdXBfbWVudS5jcHAKICAgICBVSVByb2Nl
c3MvQVBJL2VmbC9ld2tfcG9wdXBfbWVudV9pdGVtLmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvZWZs
L2V3a19yZXNvdXJjZS5jcHAKQEAgLTEwMiw2ICsxMDQsOCBAQCBsaXN0KEFQUEVORCBXZWJLaXQy
X1NPVVJDRVMKICAgICBVSVByb2Nlc3MvZWZsL1dlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHlFZmwu
Y3BwCiAgICAgVUlQcm9jZXNzL2VmbC9XZWJJbnNwZWN0b3JQcm94eUVmbC5jcHAKICAgICBVSVBy
b2Nlc3MvZWZsL1dlYlBhZ2VQcm94eUVmbC5jcHAKKyAgICBVSVByb2Nlc3MvZWZsL1dlYlBhc3Rl
Ym9hcmRDbGllbnRFZmwuY3BwCisgICAgVUlQcm9jZXNzL2VmbC9XZWJQYXN0ZWJvYXJkUHJveHlF
ZmwuY3BwCiAgICAgVUlQcm9jZXNzL2VmbC9XZWJQb3B1cE1lbnVQcm94eUVmbC5jcHAKICAgICBV
SVByb2Nlc3MvZWZsL1dlYlByZWZlcmVuY2VzRWZsLmNwcAogICAgIFVJUHJvY2Vzcy9lZmwvV2Vi
UHJvY2Vzc1Byb3h5RWZsLmNwcApAQCAtMjgxLDYgKzI4NSw3IEBAIHNldChFV2ViS2l0Ml9IRUFE
RVJTCiAgICAgIiR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9VSVByb2Nlc3MvQVBJL2VmbC9l
d2tfbmF2aWdhdGlvbl9kYXRhLmgiCiAgICAgIiR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9V
SVByb2Nlc3MvQVBJL2VmbC9ld2tfbmF2aWdhdGlvbl9wb2xpY3lfZGVjaXNpb24uaCIKICAgICAi
JHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19vYmplY3Qu
aCIKKyAgICAiJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L1VJUHJvY2Vzcy9BUEkvZWZsL2V3
a19wYXN0ZWJvYXJkLmgiCiAgICAgIiR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9VSVByb2Nl
c3MvQVBJL2VmbC9ld2tfcG9wdXBfbWVudS5oIgogICAgICIke0NNQUtFX0NVUlJFTlRfU09VUkNF
X0RJUn0vVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3BvcHVwX21lbnVfaXRlbS5oIgogICAgICIke0NN
QUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3Jlc291cmNlLmgi
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvZWZsL1dLQmFzZUVmbC5o
IGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL2VmbC9XS0Jhc2VFZmwuaAppbmRleCA2MTg0
YzgxLi4zZDM1NzRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvZWZs
L1dLQmFzZUVmbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9lZmwvV0tCYXNl
RWZsLmgKQEAgLTI0LDYgKzI0LDcgQEAKICNlcnJvciAiUGxlYXNlICNpbmNsdWRlIFwiV0tCYXNl
LmhcIiBpbnN0ZWFkIG9mIHRoaXMgZmlsZSBkaXJlY3RseS4iCiAjZW5kaWYKIAordHlwZWRlZiBj
b25zdCBzdHJ1Y3QgT3BhcXVlV0tQYXN0ZWJvYXJkKiBXS1Bhc3RlYm9hcmRSZWY7CiB0eXBlZGVm
IGNvbnN0IHN0cnVjdCBPcGFxdWVXS1ZpZXcqIFdLVmlld1JlZjsKIAogI2VuZGlmIC8qIFdLQmFz
ZUVmbF9oICovCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJT2JqZWN0Lmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJT2JqZWN0LmgKaW5kZXggMzExOWRlNi4uYmNhYzM2
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSU9iamVjdC5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9BUElPYmplY3QuaApAQCAtMTMxLDYgKzEzMSw3IEBAIHB1Ymxp
YzoKICAgICAgICAgLy8gUGxhdGZvcm0gc3BlY2lmaWMKICAgICAgICAgVHlwZUVkaXRDb21tYW5k
UHJveHksCiAgICAgICAgIFR5cGVPYmpDT2JqZWN0R3JhcGgsCisgICAgICAgIFR5cGVQYXN0ZWJv
YXJkUHJveHksCiAgICAgICAgIFR5cGVWaWV3LAogI2lmIFVTRShTT1VQKQogICAgICAgICBUeXBl
U291cFJlcXVlc3RNYW5hZ2VyLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9DL2VmbC9XS1Bhc3RlYm9hcmRFZmwuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9DL2VmbC9XS1Bhc3RlYm9hcmRFZmwuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAuLjMwNWM3YWIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL0MvZWZsL1dLUGFzdGVib2FyZEVmbC5jcHAKQEAgLTAsMCArMSw0MCBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNzCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5E
IENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJ
R0hUIEhPTERFUiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HCisgKiBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXS1Bhc3RlYm9hcmRFZmwu
aCIKKworI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgorI2luY2x1ZGUgIldlYlBhc3RlYm9hcmRQcm94
eUVmbC5oIgorCit1c2luZyBuYW1lc3BhY2UgV2ViS2l0OworCit2b2lkIFdLUGFzdGVib2FyZFNl
dENsaWVudChjb25zdCBXS1Bhc3RlYm9hcmRDbGllbnRFZmwqIGNsaWVudCkKK3sKKyAgICBpZiAo
Y2xpZW50ICYmIGNsaWVudC0+dmVyc2lvbikKKyAgICAgICAgcmV0dXJuOworCisgICAgV2ViUGFz
dGVib2FyZFByb3h5RWZsOjpzaGFyZWQoKS0+c2V0Q2xpZW50KGNsaWVudCk7Cit9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvZWZsL1dLUGFzdGVib2FyZEVmbC5o
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL2VmbC9XS1Bhc3RlYm9hcmRFZmwuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNGI5NGFmCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL2VmbC9XS1Bhc3RlYm9hcmRFZmwu
aApAQCAtMCwwICsxLDcwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIFNhbXN1bmcgRWxl
Y3Ryb25pY3MKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRI
RSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcKKyAqIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXS1Bhc3RlYm9hcmRFZmxf
aAorI2RlZmluZSBXS1Bhc3RlYm9hcmRFZmxfaAorCisjaW5jbHVkZSA8V2ViS2l0Mi9XS0Jhc2Uu
aD4KKworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gIkMiIHsKKyNlbmRpZgorCisvLyBQYXN0
ZWJvYXJkIHNlbGVjdGlvbiBmb3JtYXRzLgorZW51bSB7CisgICAgV0tQYXN0ZWJvYXJkU2VsZWN0
aW9uRm9ybWF0VW5rbm93biA9IDAsCisgICAgV0tQYXN0ZWJvYXJkU2VsZWN0aW9uRm9ybWF0VGV4
dCA9IDEsCisgICAgV0tQYXN0ZWJvYXJkU2VsZWN0aW9uRm9ybWF0TWFya3VwID0gMgorfTsKK3R5
cGVkZWYgdWludDMyX3QgV0tQYXN0ZWJvYXJkU2VsZWN0aW9uRm9ybWF0OworCisvLyBQYXN0ZWJv
YXJkIHNlbGVjdGlvbiB0eXBlcy4KK2VudW0geworICAgIFdLUGFzdGVib2FyZFNlbGVjdGlvblR5
cGVVbmtub3duID0gMCwKKyAgICBXS1Bhc3RlYm9hcmRTZWxlY3Rpb25UeXBlUHJpbWFyeSA9IDEs
CisgICAgV0tQYXN0ZWJvYXJkU2VsZWN0aW9uVHlwZUNsaXBib2FyZCA9IDIKK307Cit0eXBlZGVm
IHVpbnQzMl90IFdLUGFzdGVib2FyZFNlbGVjdGlvblR5cGU7CisKK3R5cGVkZWYgV0tTdHJpbmdS
ZWYgKCpXS1Bhc3RlYm9hcmRHZXRTdHJpbmdDYWxsYmFjaykoV0tQYXN0ZWJvYXJkU2VsZWN0aW9u
Rm9ybWF0IHNlbGVjdGlvbkZvcm1hdCwgV0tQYXN0ZWJvYXJkU2VsZWN0aW9uVHlwZSBzZWxlY3Rp
b25UeXBlLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsKK3R5cGVkZWYgdm9pZCAoKldLUGFzdGVi
b2FyZFNldFN0cmluZ0NhbGxiYWNrKShXS1N0cmluZ1JlZiBzdHJpbmcsIFdLUGFzdGVib2FyZFNl
bGVjdGlvbkZvcm1hdCBzZWxlY3Rpb25Gb3JtYXQsIFdLUGFzdGVib2FyZFNlbGVjdGlvblR5cGUg
c2VsZWN0aW9uVHlwZSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7CisKK3N0cnVjdCBXS1Bhc3Rl
Ym9hcmRDbGllbnRFZmwgeworICAgIGludCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB2ZXJzaW9uOworICAgIGNvbnN0IHZvaWQqICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjbGllbnRJbmZvOworICAgIFdLUGFzdGVib2FyZEdl
dFN0cmluZ0NhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICBnZXRTdHJpbmc7CisgICAgV0tQ
YXN0ZWJvYXJkU2V0U3RyaW5nQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgIHNldFN0cmlu
ZzsKK307Cit0eXBlZGVmIHN0cnVjdCBXS1Bhc3RlYm9hcmRDbGllbnRFZmwgV0tQYXN0ZWJvYXJk
Q2xpZW50RWZsOworCitlbnVtIHsgV0tQYXN0ZWJvYXJkQ2xpZW50RWZsQ3VycmVudFZlcnNpb24g
PSAwIH07CisKK1dLX0VYUE9SVCB2b2lkIFdLUGFzdGVib2FyZFNldENsaWVudChjb25zdCBXS1Bh
c3RlYm9hcmRDbGllbnRFZmwqIGNsaWVudCk7CisKKyNpZmRlZiBfX2NwbHVzcGx1cworfQorI2Vu
ZGlmCisKKyNlbmRpZiAvKiBXS1Bhc3RlYm9hcmRFZmxfaCAqLwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRVdlYktpdDIuaCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZWZsL0VXZWJLaXQyLmgKaW5kZXggYjEyMjExMC4uZDZjNjA4YSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRVdlYktpdDIuaAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9FV2ViS2l0Mi5oCkBAIC00OCw2ICs0OCw3
IEBACiAjaW5jbHVkZSAiZXdrX25hdmlnYXRpb25fZGF0YS5oIgogI2luY2x1ZGUgImV3a19uYXZp
Z2F0aW9uX3BvbGljeV9kZWNpc2lvbi5oIgogI2luY2x1ZGUgImV3a19vYmplY3QuaCIKKyNpbmNs
dWRlICJld2tfcGFzdGVib2FyZC5oIgogI2luY2x1ZGUgImV3a19wb3B1cF9tZW51LmgiCiAjaW5j
bHVkZSAiZXdrX3BvcHVwX21lbnVfaXRlbS5oIgogI2luY2x1ZGUgImV3a19yZXNvdXJjZS5oIgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3Bhc3RlYm9h
cmQuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3Bhc3RlYm9hcmQu
Y3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFmMTM4ZmUKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfcGFzdGVib2Fy
ZC5jcHAKQEAgLTAsMCArMSw3OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBTYW1zdW5n
IEVsZWN0cm9uaWNzCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HCisgKiBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJld2tfcGFzdGVib2FyZC5oIgorCisjaW5jbHVkZSAiV0tBUElDYXN0LmgiCisj
aW5jbHVkZSAiV0tQYXN0ZWJvYXJkRWZsLmgiCisjaW5jbHVkZSAiV0tSZXRhaW5QdHIuaCIKKyNp
bmNsdWRlICJXS1N0cmluZy5oIgorI2luY2x1ZGUgImV3a19wcml2YXRlLmgiCisjaW5jbHVkZSA8
d3RmL3RleHQvQ1N0cmluZy5oPgorCit1c2luZyBuYW1lc3BhY2UgV2ViS2l0OworCitzdGF0aWMg
RXdrX1Bhc3RlYm9hcmRfRGF0YV9TZXRfQ2IgZGF0YVNldENhbGxiYWNrID0gMDsKK3N0YXRpYyBF
d2tfUGFzdGVib2FyZF9EYXRhX0dldF9DYiBkYXRhR2V0Q2FsbGJhY2sgPSAwOworCitDT01QSUxF
X0FTU0VSVF9NQVRDSElOR19FTlVNKEVXS19QQVNURUJPQVJEX1NFTEVDVElPTl9GT1JNQVRfVU5L
Tk9XTiwgV0tQYXN0ZWJvYXJkU2VsZWN0aW9uRm9ybWF0VW5rbm93bik7CitDT01QSUxFX0FTU0VS
VF9NQVRDSElOR19FTlVNKEVXS19QQVNURUJPQVJEX1NFTEVDVElPTl9GT1JNQVRfVEVYVCwgV0tQ
YXN0ZWJvYXJkU2VsZWN0aW9uRm9ybWF0VGV4dCk7CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19F
TlVNKEVXS19QQVNURUJPQVJEX1NFTEVDVElPTl9GT1JNQVRfSFRNTCwgV0tQYXN0ZWJvYXJkU2Vs
ZWN0aW9uRm9ybWF0TWFya3VwKTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oRVdLX1BB
U1RFQk9BUkRfU0VMRUNUSU9OX1RZUEVfVU5LTk9XTiwgV0tQYXN0ZWJvYXJkU2VsZWN0aW9uVHlw
ZVVua25vd24pOworQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShFV0tfUEFTVEVCT0FSRF9T
RUxFQ1RJT05fVFlQRV9QUklNQVJZLCBXS1Bhc3RlYm9hcmRTZWxlY3Rpb25UeXBlUHJpbWFyeSk7
CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKEVXS19QQVNURUJPQVJEX1NFTEVDVElPTl9U
WVBFX0NMSVBCT0FSRCwgV0tQYXN0ZWJvYXJkU2VsZWN0aW9uVHlwZUNsaXBib2FyZCk7CisKK3N0
YXRpYyB2b2lkIHNldERhdGEoV0tTdHJpbmdSZWYgc3RyaW5nLCBXS1Bhc3RlYm9hcmRTZWxlY3Rp
b25UeXBlIHNlbGVjdGlvbkZvcm1hdCwgV0tQYXN0ZWJvYXJkU2VsZWN0aW9uVHlwZSBzZWxlY3Rp
b25UeXBlLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQoreworICAgIGlmIChkYXRhU2V0Q2FsbGJh
Y2spCisgICAgICAgIGRhdGFTZXRDYWxsYmFjayh0b0ltcGwoc3RyaW5nKS0+c3RyaW5nKCkudXRm
OCgpLmRhdGEoKSwgc3RhdGljX2Nhc3Q8RXdrX1Bhc3RlYm9hcmRfU2VsZWN0aW9uX0Zvcm1hdD4o
c2VsZWN0aW9uRm9ybWF0KSwgc3RhdGljX2Nhc3Q8RXdrX1Bhc3RlYm9hcmRfU2VsZWN0aW9uX1R5
cGU+KHNlbGVjdGlvblR5cGUpLCBjbGllbnRJbmZvKTsKK30KKworc3RhdGljIFdLU3RyaW5nUmVm
IGdldERhdGEoV0tQYXN0ZWJvYXJkU2VsZWN0aW9uVHlwZSBzZWxlY3Rpb25Gb3JtYXQsIFdLUGFz
dGVib2FyZFNlbGVjdGlvblR5cGUgc2VsZWN0aW9uVHlwZSwgY29uc3Qgdm9pZCogY2xpZW50SW5m
bykKK3sKKyAgICBpZiAoZGF0YUdldENhbGxiYWNrKQorICAgICAgICByZXR1cm4gV0tTdHJpbmdD
cmVhdGVXaXRoVVRGOENTdHJpbmcoZGF0YUdldENhbGxiYWNrKHN0YXRpY19jYXN0PEV3a19QYXN0
ZWJvYXJkX1NlbGVjdGlvbl9Gb3JtYXQ+KHNlbGVjdGlvbkZvcm1hdCksIHN0YXRpY19jYXN0PEV3
a19QYXN0ZWJvYXJkX1NlbGVjdGlvbl9UeXBlPihzZWxlY3Rpb25UeXBlKSwgY2xpZW50SW5mbykp
OworCisgICAgcmV0dXJuIFdLU3RyaW5nUmVmKCk7Cit9CisKK3ZvaWQgZXdrX3Bhc3RlYm9hcmRf
aW5pdGlhbGl6ZShjb25zdCB2b2lkKiBjbGllbnRJbmZvLCBFd2tfUGFzdGVib2FyZF9EYXRhX1Nl
dF9DYiBzZXRDYWxsYmFjaywgRXdrX1Bhc3RlYm9hcmRfRGF0YV9HZXRfQ2IgZ2V0Q2FsbGJhY2sp
Cit7CisgICAgc3RhdGljIGJvb2wgZGlkSW5pdGlhbGl6ZVBhc3RlYm9hcmRDbGllbnQgPSBmYWxz
ZTsKKyAgICBpZiAoZGlkSW5pdGlhbGl6ZVBhc3RlYm9hcmRDbGllbnQpCisgICAgICAgIHJldHVy
bjsKKworICAgIFdLUGFzdGVib2FyZENsaWVudEVmbCBwYXN0ZWJvYXJkQ2xpZW50RWZsID0gewor
ICAgICAgICBXS1Bhc3RlYm9hcmRDbGllbnRFZmxDdXJyZW50VmVyc2lvbiwKKyAgICAgICAgY2xp
ZW50SW5mbywKKyAgICAgICAgZ2V0RGF0YSwKKyAgICAgICAgc2V0RGF0YQorICAgIH07CisgICAg
V0tQYXN0ZWJvYXJkU2V0Q2xpZW50KCZwYXN0ZWJvYXJkQ2xpZW50RWZsKTsKKworICAgIGRpZElu
aXRpYWxpemVQYXN0ZWJvYXJkQ2xpZW50ID0gdHJ1ZTsKKyAgICBkYXRhU2V0Q2FsbGJhY2sgPSBz
ZXRDYWxsYmFjazsKKyAgICBkYXRhR2V0Q2FsbGJhY2sgPSBnZXRDYWxsYmFjazsKK30KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19wYXN0ZWJvYXJkLmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfcGFzdGVib2FyZC5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI3OThlNGMKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfcGFzdGVib2FyZC5oCkBAIC0w
LDAgKzEsMTAyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIFNhbXN1bmcgRWxlY3Ryb25p
Y3MKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZ
UklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcKKyAq
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworLyoqCisgKiBAZmlsZSAgICBld2tfcGFzdGVib2Fy
ZC5oCisgKiBAYnJpZWYgICBEZXNjcmliZXMgdGhlIHBhc3RlYm9hcmQgQVBJLgorICoKKyAqIEBu
b3RlIFRoZSBld2tfcGFzdGVib2FyZCBwcm92aWRlcyBwb2ludGVycyB0byBmdW5jdGlvbiB3aGlj
aCBjYW4gYmUgaW1wbGVtZW50ZWQgYnkgYW4gYXBwbGljYXRpb24KKyAqIHRvIHN1cHBvcnQgY29w
eSBhbmQgcGFzdGUgb3BlcmF0aW9ucyBpbiBXZWJLaXQuCisgKi8KKworI2lmbmRlZiBld2tfcGFz
dGVib2FyZF9oCisjZGVmaW5lIGV3a19wYXN0ZWJvYXJkX2gKKworI2luY2x1ZGUgPEV2YXMuaD4K
KworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gIkMiIHsKKyNlbmRpZgorCisvKioKKyAqIEVu
dW0gdmFsdWVzIHVzZWQgdG8gc2V0IHNlbGVjdGlvbiBmb3JtYXRzLgorICovCitlbnVtIEV3a19Q
YXN0ZWJvYXJkX1NlbGVjdGlvbl9Gb3JtYXQgeworICAgIEVXS19QQVNURUJPQVJEX1NFTEVDVElP
Tl9GT1JNQVRfVU5LTk9XTiwKKyAgICBFV0tfUEFTVEVCT0FSRF9TRUxFQ1RJT05fRk9STUFUX1RF
WFQsCisgICAgRVdLX1BBU1RFQk9BUkRfU0VMRUNUSU9OX0ZPUk1BVF9IVE1MLAorfTsKKworLy8v
IENyZWF0ZXMgYSB0eXBlIG5hbWUgZm9yIHRoZSBFd2tfUGFzdGVib2FyZF9TZWxlY3Rpb25fRm9y
bWF0LgordHlwZWRlZiBlbnVtIEV3a19QYXN0ZWJvYXJkX1NlbGVjdGlvbl9Gb3JtYXQgRXdrX1Bh
c3RlYm9hcmRfU2VsZWN0aW9uX0Zvcm1hdDsKKworLyoqCisgKiBFbnVtIHZhbHVlcyB1c2VkIHRv
IHNldCBzZWxlY3Rpb24gdHlwZXMuCisgKi8KK2VudW0gRXdrX1Bhc3RlYm9hcmRfU2VsZWN0aW9u
X1R5cGUgeworICAgIEVXS19QQVNURUJPQVJEX1NFTEVDVElPTl9UWVBFX1VOS05PV04sCisgICAg
RVdLX1BBU1RFQk9BUkRfU0VMRUNUSU9OX1RZUEVfUFJJTUFSWSwKKyAgICBFV0tfUEFTVEVCT0FS
RF9TRUxFQ1RJT05fVFlQRV9DTElQQk9BUkQKK307CisKKy8vLyBDcmVhdGVzIGEgdHlwZSBuYW1l
IGZvciB0aGUgRXdrX1Bhc3RlYm9hcmRfU2VsZWN0aW9uX1R5cGUuCit0eXBlZGVmIGVudW0gRXdr
X1Bhc3RlYm9hcmRfU2VsZWN0aW9uX1R5cGUgRXdrX1Bhc3RlYm9hcmRfU2VsZWN0aW9uX1R5cGU7
CisKKy8qKgorICogRGVmaW5lcyBhIHR5cGUgbmFtZSBmb3IgdGhlIGNhbGxiYWNrIGZ1bmN0aW9u
IHRvIHBlcmZvcm0gY29weSBvcGVyYXRpb24gd2l0aCBnaXZlbiBkYXRhIHR5cGUuCisgKgorICog
QHBhcmFtIGRhdGEgZGF0YSB0byBiZSBjb3BpZWQKKyAqIEBwYXJhbSBmb3JtYXQgZm9ybWF0IG9m
IGNvcGllZCBkYXRhCisgKiBAcGFyYW0gdHlwZSB0eXBlIG9mIGNvcGllZCBkYXRhCisgKiBAcGFy
YW0gY2xpZW50X2luZm8gYXBwbGljYXRpb24gc3BlY2lmaWMgZGF0YQorICovCit0eXBlZGVmIHZv
aWQgKCpFd2tfUGFzdGVib2FyZF9EYXRhX1NldF9DYikoY29uc3QgY2hhciAqZGF0YSwgRXdrX1Bh
c3RlYm9hcmRfU2VsZWN0aW9uX0Zvcm1hdCBmb3JtYXQsIEV3a19QYXN0ZWJvYXJkX1NlbGVjdGlv
bl9UeXBlIHR5cGUsIGNvbnN0IHZvaWQgKmNsaWVudF9pbmZvKTsKKworLyoqCisgKiBEZWZpbmVz
IGEgdHlwZSBuYW1lIGZvciB0aGUgY2FsbGJhY2sgZnVuY3Rpb24gdG8gcmVxdWVzdCBmb3IgZGF0
YSB3aXRoIGdpdmVuIHR5cGUuCisgKgorICogVGhpcyBjYWxsYmFjayBzaG91bGQgcmV0dXJuIGRh
dGEgZm9yIHJlcXVlc3RlZCB0eXBlIGlmIHRoZXJlIGlzIGEgZGF0YSBpbiBjbGlwYm9hcmQgb3Ro
ZXJ3aXNlIE5VTEwgc2hvdWxkIGJlIHJldHVybmVkLgorICoKKyAqIEBwYXJhbSBmb3JtYXQgZm9y
bWF0IG9mIHJlcXVlc3RlZCBkYXRhCisgKiBAcGFyYW0gdHlwZSB0eXBlIG9mIHJlcXVlc3RlZCBk
YXRhCisgKiBAcGFyYW0gY2xpZW50X2luZm8gYXBwbGljYXRpb24gc3BlY2lmaWMgZGF0YQorICoK
KyAqIEByZXR1cm4gcmVxdWVzdGVkIGRhdGEgb24gc3VjY2VzcyBvciBAYyBOVUxMIG9uIGZhaWx1
cmUKKyAqLwordHlwZWRlZiBjb25zdCBjaGFyICooKkV3a19QYXN0ZWJvYXJkX0RhdGFfR2V0X0Ni
KShFd2tfUGFzdGVib2FyZF9TZWxlY3Rpb25fRm9ybWF0IGZvcm1hdCwgRXdrX1Bhc3RlYm9hcmRf
U2VsZWN0aW9uX1R5cGUgdHlwZSwgY29uc3Qgdm9pZCAqY2xpZW50X2luZm8pOworCisvKioKKyAq
IEluaXRpYWxpemVzIHBhc3RlYm9hcmQgY2FsbGJhY2tzLgorICoKKyAqIEBwYXJhbSBjbGllbnRf
aW5mbyBhcHBsaWNhdGlvbiBkYXRhIHBvaW50ZXIgdG8gYmUgZm9yIGNhbGxiYWNrIGZ1bmN0aW9u
cworICogQHBhcmFtIHNldF9jYiBzZXQgZGF0YSBjYWxsYmFjayB0byBiZSBzZXQgLSBpdCBtdXN0
IG5vdCBiZSBAYyBOVUxMCisgKiBAcGFyYW0gZ2V0X2NiIGdldCBkYXRhIGNhbGxiYWNrIHRvIGJl
IHNldCAtIGl0IG11c3Qgbm90IGJlIEBjIE5VTEwKKyAqLworRUFQSSB2b2lkIGV3a19wYXN0ZWJv
YXJkX2luaXRpYWxpemUoY29uc3Qgdm9pZCAqY2xpZW50X2luZm8sIEV3a19QYXN0ZWJvYXJkX0Rh
dGFfU2V0X0NiIHNldF9jYiwgRXdrX1Bhc3RlYm9hcmRfRGF0YV9HZXRfQ2IgZ2V0X2NiKTsKKwor
I2lmZGVmIF9fY3BsdXNwbHVzCit9CisjZW5kaWYKKyNlbmRpZiAvLyBld2tfcGFzdGVib2FyZF9o
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5oIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuaAppbmRleCBmYzkzYTA4Li5jZTE3NDNk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5oCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0LmgKQEAgLTI5OSw3ICsyOTksNiBA
QCBwcml2YXRlOgogI2lmIFBMQVRGT1JNKE1BQykKICAgICB2b2lkIGdldFBhc3RlYm9hcmRUeXBl
cyhjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2Fy
ZFR5cGVzKTsKICAgICB2b2lkIGdldFBhc3RlYm9hcmRQYXRobmFtZXNGb3JUeXBlKGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIFZlY3Rv
cjxTdHJpbmc+JiBwYXRobmFtZXMpOwotICAgIHZvaWQgZ2V0UGFzdGVib2FyZFN0cmluZ0ZvclR5
cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
VHlwZSwgU3RyaW5nJik7CiAgICAgdm9pZCBnZXRQYXN0ZWJvYXJkQnVmZmVyRm9yVHlwZShjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBT
aGFyZWRNZW1vcnk6OkhhbmRsZSYsIHVpbnQ2NF90JiBzaXplKTsKICAgICB2b2lkIHBhc3RlYm9h
cmRDb3B5KGNvbnN0IFN0cmluZyYgZnJvbVBhc3RlYm9hcmQsIGNvbnN0IFN0cmluZyYgdG9QYXN0
ZWJvYXJkKTsKICAgICB2b2lkIGdldFBhc3RlYm9hcmRDaGFuZ2VDb3VudChjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lLCB1aW50NjRfdCYgY2hhbmdlQ291bnQpOwpAQCAtMzA5LDkgKzMwOCwx
MiBAQCBwcml2YXRlOgogICAgIHZvaWQgYWRkUGFzdGVib2FyZFR5cGVzKGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZE5hbWUsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMpOwog
ICAgIHZvaWQgc2V0UGFzdGVib2FyZFR5cGVzKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUs
IGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMpOwogICAgIHZvaWQgc2V0UGFz
dGVib2FyZFBhdGhuYW1lc0ZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhdGhuYW1l
cyk7Ci0gICAgdm9pZCBzZXRQYXN0ZWJvYXJkU3RyaW5nRm9yVHlwZShjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcm
KTsKICAgICB2b2lkIHNldFBhc3RlYm9hcmRCdWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFNoYXJlZE1l
bW9yeTo6SGFuZGxlJiwgdWludDY0X3Qgc2l6ZSk7CiAjZW5kaWYKKyNpZiBQTEFURk9STShNQUMp
IHx8IFBMQVRGT1JNKEVGTCkKKyAgICB2b2lkIGdldFBhc3RlYm9hcmRTdHJpbmdGb3JUeXBlKGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUs
IFN0cmluZyYpOworICAgIHZvaWQgc2V0UGFzdGVib2FyZFN0cmluZ0ZvclR5cGUoY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3Qg
U3RyaW5nJik7CisjZW5kaWYKIAogI2lmICFQTEFURk9STShNQUMpCiAgICAgLy8gRklYTUU6IFRo
aXMgYSBkdW1teSBtZXNzYWdlLCB0byBhdm9pZCBicmVha2luZyB0aGUgYnVpbGQgZm9yIHBsYXRm
b3JtcyB0aGF0IGRvbid0IHJlcXVpcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJDb250ZXh0Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
YkNvbnRleHQubWVzc2FnZXMuaW4KaW5kZXggZjJlZGIxZC4uYTE3ZWRjOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQubWVzc2FnZXMuaW4KKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQubWVzc2FnZXMuaW4KQEAgLTMyLDcgKzMy
LDYgQEAgbWVzc2FnZXMgLT4gV2ViQ29udGV4dCB7CiAgICAgCiAgICAgR2V0UGFzdGVib2FyZFR5
cGVzKFdURjo6U3RyaW5nIHBhc3RlYm9hcmROYW1lKSAtPiAoVmVjdG9yPFdURjo6U3RyaW5nPiB0
eXBlcykKICAgICBHZXRQYXN0ZWJvYXJkUGF0aG5hbWVzRm9yVHlwZShXVEY6OlN0cmluZyBwYXN0
ZWJvYXJkTmFtZSwgV1RGOjpTdHJpbmcgcGFzdGVib2FyZFR5cGUpIC0+IChWZWN0b3I8V1RGOjpT
dHJpbmc+IHBhdGhuYW1lcykKLSAgICBHZXRQYXN0ZWJvYXJkU3RyaW5nRm9yVHlwZShXVEY6OlN0
cmluZyBwYXN0ZWJvYXJkTmFtZSwgV1RGOjpTdHJpbmcgcGFzdGVib2FyZFR5cGUpIC0+IChXVEY6
OlN0cmluZyBzdHJpbmcpCiAgICAgR2V0UGFzdGVib2FyZEJ1ZmZlckZvclR5cGUoV1RGOjpTdHJp
bmcgcGFzdGVib2FyZE5hbWUsIFdURjo6U3RyaW5nIHBhc3RlYm9hcmRUeXBlKSAtPiAoV2ViS2l0
OjpTaGFyZWRNZW1vcnk6OkhhbmRsZSBoYW5kbGUsIHVpbnQ2NF90IHNpemUpCiAgICAgUGFzdGVi
b2FyZENvcHkoV1RGOjpTdHJpbmcgZnJvbVBhc3RlYm9hcmQsIFdURjo6U3RyaW5nIHRvUGFzdGVi
b2FyZCkKICAgICBHZXRQYXN0ZWJvYXJkQ2hhbmdlQ291bnQoV1RGOjpTdHJpbmcgcGFzdGVib2Fy
ZE5hbWUpIC0+ICh1aW50NjRfdCBjaGFuZ2VDb3VudCkKQEAgLTQyLDkgKzQxLDEzIEBAIG1lc3Nh
Z2VzIC0+IFdlYkNvbnRleHQgewogICAgIEFkZFBhc3RlYm9hcmRUeXBlcyhXVEY6OlN0cmluZyBw
YXN0ZWJvYXJkTmFtZSwgVmVjdG9yPFdURjo6U3RyaW5nPiBwYXN0ZWJvYXJkVHlwZXMpCiAgICAg
U2V0UGFzdGVib2FyZFR5cGVzKFdURjo6U3RyaW5nIHBhc3RlYm9hcmROYW1lLCBWZWN0b3I8V1RG
OjpTdHJpbmc+IHBhc3RlYm9hcmRUeXBlcykKICAgICBTZXRQYXN0ZWJvYXJkUGF0aG5hbWVzRm9y
VHlwZShXVEY6OlN0cmluZyBwYXN0ZWJvYXJkTmFtZSwgV1RGOjpTdHJpbmcgcGFzdGVib2FyZFR5
cGUsIFZlY3RvcjxXVEY6OlN0cmluZz4gcGF0aG5hbWVzKQotICAgIFNldFBhc3RlYm9hcmRTdHJp
bmdGb3JUeXBlKFdURjo6U3RyaW5nIHBhc3RlYm9hcmROYW1lLCBXVEY6OlN0cmluZyBwYXN0ZWJv
YXJkVHlwZSwgV1RGOjpTdHJpbmcgc3RyaW5nKQogICAgIFNldFBhc3RlYm9hcmRCdWZmZXJGb3JU
eXBlKFdURjo6U3RyaW5nIHBhc3RlYm9hcmROYW1lLCBXVEY6OlN0cmluZyBwYXN0ZWJvYXJkVHlw
ZSwgV2ViS2l0OjpTaGFyZWRNZW1vcnk6OkhhbmRsZSBoYW5kbGUsIHVpbnQ2NF90IHNpemUpCiAj
ZW5kaWYKKyNpZiBQTEFURk9STShNQUMpIHx8IFBMQVRGT1JNKEVGTCkKKyAgICBHZXRQYXN0ZWJv
YXJkU3RyaW5nRm9yVHlwZShXVEY6OlN0cmluZyBwYXN0ZWJvYXJkTmFtZSwgV1RGOjpTdHJpbmcg
cGFzdGVib2FyZFR5cGUpIC0+IChXVEY6OlN0cmluZyBzdHJpbmcpCisgICAgU2V0UGFzdGVib2Fy
ZFN0cmluZ0ZvclR5cGUoV1RGOjpTdHJpbmcgcGFzdGVib2FyZE5hbWUsIFdURjo6U3RyaW5nIHBh
c3RlYm9hcmRUeXBlLCBXVEY6OlN0cmluZyBzdHJpbmcpCisjZW5kaWYKKwogCiAjaWYgIVBMQVRG
T1JNKE1BQykKICAgICAvLyBGSVhNRTogVGhpcyBhIGR1bW15IG1lc3NhZ2UsIHRvIGF2b2lkIGJy
ZWFraW5nIHRoZSBidWlsZCBmb3IgcGxhdGZvcm1zIHRoYXQgZG9uJ3QgcmVxdWlyZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJDb250ZXh0RWZsLmNwcCBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViQ29udGV4dEVmbC5jcHAKaW5kZXggNjllYjY2
Yi4uOWU0MGY5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJD
b250ZXh0RWZsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYkNvbnRl
eHRFZmwuY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5j
bHVkZSAiV2ViSW5zcGVjdG9yU2VydmVyLmgiCisjaW5jbHVkZSAiV2ViUGFzdGVib2FyZFByb3h5
RWZsLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oIgogI2luY2x1
ZGUgIldlYlByb2Nlc3NNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlNvdXBSZXF1ZXN0TWFuYWdl
clByb3h5LmgiCkBAIC0xMzMsNCArMTM0LDE0IEBAIHZvaWQgV2ViQ29udGV4dDo6c2V0SWdub3Jl
VExTRXJyb3JzKGJvb2wgaWdub3JlVExTRXJyb3JzKQogICAgIHNlbmRUb0FsbFByb2Nlc3NlcyhN
ZXNzYWdlczo6V2ViUHJvY2Vzczo6U2V0SWdub3JlVExTRXJyb3JzKG1faWdub3JlVExTRXJyb3Jz
KSk7CiB9CiAKK3ZvaWQgV2ViQ29udGV4dDo6Z2V0UGFzdGVib2FyZFN0cmluZ0ZvclR5cGUoY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwg
U3RyaW5nJiBzdHJpbmcpCit7CisgICAgc3RyaW5nID0gV2ViUGFzdGVib2FyZFByb3h5RWZsOjpz
aGFyZWQoKS0+Z2V0U3RyaW5nRm9yVHlwZShwYXN0ZWJvYXJkVHlwZSwgcGFzdGVib2FyZE5hbWUp
OworfQorCit2b2lkIFdlYkNvbnRleHQ6OnNldFBhc3RlYm9hcmRTdHJpbmdGb3JUeXBlKGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNv
bnN0IFN0cmluZyYgc3RyaW5nKQoreworICAgIFdlYlBhc3RlYm9hcmRQcm94eUVmbDo6c2hhcmVk
KCktPnNldFN0cmluZ0ZvclR5cGUoc3RyaW5nLCBwYXN0ZWJvYXJkVHlwZSwgcGFzdGVib2FyZE5h
bWUpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9lZmwvV2ViUGFzdGVib2FyZENsaWVudEVmbC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlBhc3RlYm9hcmRDbGllbnRFZmwuY3BwCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg4MWU2YjcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlBhc3RlYm9hcmRDbGllbnRFZmwuY3BwCkBAIC0w
LDAgKzEsNzIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgU2Ftc3VuZyBFbGVjdHJvbmlj
cworICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlS
SUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVIgT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORworICog
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAi
V2ViUGFzdGVib2FyZENsaWVudEVmbC5oIgorCisjaW5jbHVkZSAiV0tBUElDYXN0LmgiCisjaW5j
bHVkZSA8V2ViQ29yZS9FZmxQYXN0ZWJvYXJkVXRpbGl0aWVzLmg+CisKK25hbWVzcGFjZSBXZWJL
aXQgeworCitzdGF0aWMgV0tQYXN0ZWJvYXJkU2VsZWN0aW9uRm9ybWF0IGdldFNlbGVjdGlvbkZv
cm1hdEZyb21TdHJpbmcoY29uc3QgU3RyaW5nJiBzZWxlY3Rpb25Gb3JtYXQpCit7CisgICAgaWYg
KGVxdWFsSWdub3JpbmdDYXNlKHNlbGVjdGlvbkZvcm1hdCwgV2ViQ29yZTo6c2VsZWN0aW9uRm9y
bWF0VGV4dCkpCisgICAgICAgIHJldHVybiBXS1Bhc3RlYm9hcmRTZWxlY3Rpb25Gb3JtYXRUZXh0
OworCisgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKHNlbGVjdGlvbkZvcm1hdCwgV2ViQ29yZTo6
c2VsZWN0aW9uRm9ybWF0TWFya3VwKSkKKyAgICAgICAgcmV0dXJuIFdLUGFzdGVib2FyZFNlbGVj
dGlvbkZvcm1hdE1hcmt1cDsKKworICAgIHJldHVybiBXS1Bhc3RlYm9hcmRTZWxlY3Rpb25Gb3Jt
YXRVbmtub3duOworfQorCitzdGF0aWMgV0tQYXN0ZWJvYXJkU2VsZWN0aW9uVHlwZSBnZXRTZWxl
Y3Rpb25UeXBlRnJvbVN0cmluZyhjb25zdCBTdHJpbmcmIHNlbGVjdGlvblR5cGUpCit7CisgICAg
aWYgKGVxdWFsSWdub3JpbmdDYXNlKHNlbGVjdGlvblR5cGUsIFdlYkNvcmU6OnNlbGVjdGlvblR5
cGVQcmltYXJ5KSkKKyAgICAgICAgcmV0dXJuIFdLUGFzdGVib2FyZFNlbGVjdGlvblR5cGVQcmlt
YXJ5OworCisgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKHNlbGVjdGlvblR5cGUsIFdlYkNvcmU6
OnNlbGVjdGlvblR5cGVDbGlwYm9hcmQpKQorICAgICAgICByZXR1cm4gV0tQYXN0ZWJvYXJkU2Vs
ZWN0aW9uVHlwZUNsaXBib2FyZDsKKworICAgIHJldHVybiBXS1Bhc3RlYm9hcmRTZWxlY3Rpb25U
eXBlVW5rbm93bjsKK30KKworU3RyaW5nIFdlYlBhc3RlYm9hcmRDbGllbnRFZmw6OmdldFN0cmlu
Zyhjb25zdCBTdHJpbmcmIHNlbGVjdGlvbkZvcm1hdCwgY29uc3QgU3RyaW5nJiBzZWxlY3Rpb25U
eXBlKQoreworICAgIGlmICghbV9jbGllbnQuZ2V0U3RyaW5nKQorICAgICAgICByZXR1cm4gU3Ry
aW5nKCk7CisKKyAgICByZXR1cm4gdG9JbXBsKG1fY2xpZW50LmdldFN0cmluZyhnZXRTZWxlY3Rp
b25Gb3JtYXRGcm9tU3RyaW5nKHNlbGVjdGlvbkZvcm1hdCksIGdldFNlbGVjdGlvblR5cGVGcm9t
U3RyaW5nKHNlbGVjdGlvblR5cGUpLCBtX2NsaWVudC5jbGllbnRJbmZvKSktPnN0cmluZygpOwor
fQorCit2b2lkIFdlYlBhc3RlYm9hcmRDbGllbnRFZmw6OnNldFN0cmluZyhjb25zdCBTdHJpbmcm
IHN0cmluZywgY29uc3QgU3RyaW5nJiBzZWxlY3Rpb25Gb3JtYXQsIGNvbnN0IFN0cmluZyYgc2Vs
ZWN0aW9uVHlwZSkKK3sKKyAgICBpZiAoIW1fY2xpZW50LnNldFN0cmluZykKKyAgICAgICAgcmV0
dXJuOworCisgICAgbV9jbGllbnQuc2V0U3RyaW5nKHRvQVBJKHN0cmluZy5pbXBsKCkpLCBnZXRT
ZWxlY3Rpb25Gb3JtYXRGcm9tU3RyaW5nKHNlbGVjdGlvbkZvcm1hdCksIGdldFNlbGVjdGlvblR5
cGVGcm9tU3RyaW5nKHNlbGVjdGlvblR5cGUpLCBtX2NsaWVudC5jbGllbnRJbmZvKTsKK30KKwor
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvZWZsL1dlYlBhc3RlYm9hcmRDbGllbnRFZmwuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9lZmwvV2ViUGFzdGVib2FyZENsaWVudEVmbC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAuLmFkNTJjNGIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvZWZsL1dlYlBhc3RlYm9hcmRDbGllbnRFZmwuaApAQCAtMCwwICsxLDQzIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDEyIFNhbXN1bmcgRWxlY3Ryb25pY3MKKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQg
Q09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklH
SFQgSE9MREVSIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcKKyAqIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2lmbmRlZiBXZWJQYXN0ZWJvYXJkQ2xpZW50RWZsX2gKKyNkZWZpbmUgV2ViUGFz
dGVib2FyZENsaWVudEVmbF9oCisKKyNpbmNsdWRlICJBUElDbGllbnQuaCIKKyNpbmNsdWRlICJX
S1Bhc3RlYm9hcmRFZmwuaCIKKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorCituYW1lc3BhY2Ug
V2ViS2l0IHsKKworY2xhc3MgV2ViUGFzdGVib2FyZENsaWVudEVmbCA6IHB1YmxpYyBBUElDbGll
bnQ8V0tQYXN0ZWJvYXJkQ2xpZW50RWZsLCBXS1Bhc3RlYm9hcmRDbGllbnRFZmxDdXJyZW50VmVy
c2lvbj4geworcHVibGljOgorICAgIFN0cmluZyBnZXRTdHJpbmcoY29uc3QgU3RyaW5nJiBzZWxl
Y3Rpb25Gb3JtYXQsIGNvbnN0IFN0cmluZyYgc2VsZWN0aW9uVHlwZSk7CisgICAgdm9pZCBzZXRT
dHJpbmcoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBzZWxlY3Rpb25Gb3JtYXQsIGNvbnN0
IFN0cmluZyYgc2VsZWN0aW9uVHlwZSk7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKwor
I2VuZGlmIC8vIFdlYlBhc3RlYm9hcmRDbGllbnRFZmxfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL2VmbC9XZWJQYXN0ZWJvYXJkUHJveHlFZmwuY3BwIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL2VmbC9XZWJQYXN0ZWJvYXJkUHJveHlFZmwuY3BwCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE1M2Q2ZjcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlBhc3RlYm9hcmRQcm94eUVmbC5jcHAKQEAgLTAs
MCArMSw1OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNz
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJ
R0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HCisgKiBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJX
ZWJQYXN0ZWJvYXJkUHJveHlFZmwuaCIKKworI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxk
ZXIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYktp
dCB7CisKK1dlYlBhc3RlYm9hcmRQcm94eUVmbCogV2ViUGFzdGVib2FyZFByb3h5RWZsOjpzaGFy
ZWQoKQoreworICAgIHN0YXRpYyBXZWJQYXN0ZWJvYXJkUHJveHlFZmwqIHBhc3RlYm9hcmRQcm94
eUVmbCA9IGFkb3B0UmVmKG5ldyBXZWJQYXN0ZWJvYXJkUHJveHlFZmwpLmxlYWtSZWYoKTsKKyAg
ICByZXR1cm4gcGFzdGVib2FyZFByb3h5RWZsOworfQorCitXZWJQYXN0ZWJvYXJkUHJveHlFZmw6
OldlYlBhc3RlYm9hcmRQcm94eUVmbCgpCit7Cit9CisKK3ZvaWQgV2ViUGFzdGVib2FyZFByb3h5
RWZsOjpzZXRDbGllbnQoY29uc3QgV0tQYXN0ZWJvYXJkQ2xpZW50RWZsKiBjbGllbnQpCit7Cisg
ICAgbV9jbGllbnQuaW5pdGlhbGl6ZShjbGllbnQpOworfQorCitTdHJpbmcgV2ViUGFzdGVib2Fy
ZFByb3h5RWZsOjpnZXRTdHJpbmdGb3JUeXBlKGNvbnN0IFN0cmluZyYgc2VsZWN0aW9uRm9ybWF0
LCBjb25zdCBTdHJpbmcmIHNlbGVjdGlvblR5cGUpCit7CisgICAgcmV0dXJuIG1fY2xpZW50Lmdl
dFN0cmluZyhzZWxlY3Rpb25Gb3JtYXQsIHNlbGVjdGlvblR5cGUpOworfQorCit2b2lkIFdlYlBh
c3RlYm9hcmRQcm94eUVmbDo6c2V0U3RyaW5nRm9yVHlwZShjb25zdCBTdHJpbmcmIHN0cmluZywg
Y29uc3QgU3RyaW5nJiBzZWxlY3Rpb25Gb3JtYXQsIGNvbnN0IFN0cmluZyYgc2VsZWN0aW9uVHlw
ZSkKK3sKKyAgICBtX2NsaWVudC5zZXRTdHJpbmcoc3RyaW5nLCBzZWxlY3Rpb25Gb3JtYXQsIHNl
bGVjdGlvblR5cGUpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViUGFzdGVib2FyZFByb3h5RWZsLmggYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlBhc3RlYm9hcmRQcm94eUVmbC5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFjMWFkMmEKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlBhc3RlYm9hcmRQcm94eUVmbC5oCkBAIC0w
LDAgKzEsNTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgU2Ftc3VuZyBFbGVjdHJvbmlj
cworICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlS
SUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVIgT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORworICog
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYlBhc3RlYm9hcmRQcm94eUVmbF9o
CisjZGVmaW5lIFdlYlBhc3RlYm9hcmRQcm94eUVmbF9oCisKKyNpbmNsdWRlICJBUElPYmplY3Qu
aCIKKworI2luY2x1ZGUgIldlYlBhc3RlYm9hcmRDbGllbnRFZmwuaCIKKyNpbmNsdWRlIDx3dGYv
UGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKworbmFtZXNwYWNlIFdlYktp
dCB7CisKK2NsYXNzIFdlYlBhc3RlYm9hcmRQcm94eUVmbCA6IHB1YmxpYyBBUElPYmplY3Qgewor
cHVibGljOgorICAgIHN0YXRpYyBjb25zdCBUeXBlIEFQSVR5cGUgPSBUeXBlUGFzdGVib2FyZFBy
b3h5OworCisgICAgc3RhdGljIFdlYlBhc3RlYm9hcmRQcm94eUVmbCogc2hhcmVkKCk7CisKKyAg
ICB2b2lkIHNldENsaWVudChjb25zdCBXS1Bhc3RlYm9hcmRDbGllbnRFZmwqKTsKKyAgICBXZWJQ
YXN0ZWJvYXJkQ2xpZW50RWZsJiBjbGllbnQoKSB7IHJldHVybiBtX2NsaWVudDsgfQorCisgICAg
U3RyaW5nIGdldFN0cmluZ0ZvclR5cGUoY29uc3QgU3RyaW5nJiBzZWxlY3Rpb25Gb3JtYXQsIGNv
bnN0IFN0cmluZyYgc2VsZWN0aW9uVHlwZSk7CisgICAgdm9pZCBzZXRTdHJpbmdGb3JUeXBlKGNv
bnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYgc2VsZWN0aW9uRm9ybWF0LCBjb25zdCBTdHJpbmcm
IHNlbGVjdGlvblR5cGUpOworCitwcml2YXRlOgorICAgIFdlYlBhc3RlYm9hcmRQcm94eUVmbCgp
OworCisgICAgdmlydHVhbCBUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBBUElUeXBlOyB9CisK
KyAgICBXZWJQYXN0ZWJvYXJkQ2xpZW50RWZsIG1fY2xpZW50OworfTsKKworfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CisKKyNlbmRpZiAvLyBXZWJQYXN0ZWJvYXJkUHJveHlFZmxfaApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGll
bnQuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0
b3JDbGllbnQuY3BwCmluZGV4IGM2Y2M5YzIuLmU0YzRhZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVu
dC5jcHAKQEAgLTUxLDYgKzUxLDggQEAKICNpZiBQTEFURk9STShRVCkKICNpbmNsdWRlIDxRQ2xp
cGJvYXJkPgogI2luY2x1ZGUgPFFHdWlBcHBsaWNhdGlvbj4KKyNlbmRpZgorI2lmIFBMQVRGT1JN
KFFUKSB8fCBQTEFURk9STShFRkwpCiAjaW5jbHVkZSA8V2ViQ29yZS9QYXN0ZWJvYXJkLmg+CiAj
ZW5kaWYKIApAQCAtMTkzLDEyICsxOTUsMTIgQEAgdm9pZCBXZWJFZGl0b3JDbGllbnQ6OnJlc3Bv
bmRUb0NoYW5nZWRTZWxlY3Rpb24oRnJhbWUqIGZyYW1lKQogCiAgICAgbV9wYWdlLT5zZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlUHJveHk6OkVkaXRvclN0YXRlQ2hhbmdlZChzdGF0ZSkpOwogCi0jaWYg
UExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShRVCkKKyNpZiBQTEFURk9STShHVEspIHx8IFBMQVRG
T1JNKFFUKSB8fCBQTEFURk9STShFRkwpCiAgICAgdXBkYXRlR2xvYmFsU2VsZWN0aW9uKGZyYW1l
KTsKICNlbmRpZgogfQogCi0jaWYgUExBVEZPUk0oUVQpCisjaWYgUExBVEZPUk0oUVQpIHx8IFBM
QVRGT1JNKEVGTCkKIC8vIEZJWE1FOiBVc2UgdGhpcyBmdW5jdGlvbiBmb3Igb3RoZXIgWDExLWJh
c2VkIHBsYXRmb3JtcyB0aGF0IG5lZWQgdG8gbWFudWFsbHkgdXBkYXRlIHRoZSBnbG9iYWwgc2Vs
ZWN0aW9uLgogdm9pZCBXZWJFZGl0b3JDbGllbnQ6OnVwZGF0ZUdsb2JhbFNlbGVjdGlvbihGcmFt
ZSogZnJhbWUpCiB7CkBAIC00ODIsNyArNDg0LDcgQEAgYm9vbCBXZWJFZGl0b3JDbGllbnQ6OnN1
cHBvcnRzR2xvYmFsU2VsZWN0aW9uKCkKIHsKICNpZiBQTEFURk9STShRVCkgJiYgIWRlZmluZWQo
UVRfTk9fQ0xJUEJPQVJEKQogICAgIHJldHVybiBxQXBwLT5jbGlwYm9hcmQoKS0+c3VwcG9ydHNT
ZWxlY3Rpb24oKTsKLSNlbGlmIFBMQVRGT1JNKEdUSykgJiYgUExBVEZPUk0oWDExKQorI2VsaWYg
UExBVEZPUk0oR1RLKSAmJiBQTEFURk9STShYMTEpIHx8IFBMQVRGT1JNKEVGTCkKICAgICByZXR1
cm4gdHJ1ZTsKICNlbHNlCiAgICAgLy8gRklYTUU6IFJldHVybiB0cnVlIG9uIG90aGVyIFgxMSBw
bGF0Zm9ybXMgd2hlbiB0aGV5IHN1cHBvcnQgZ2xvYmFsIHNlbGVjdGlvbi4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50
LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNs
aWVudC5oCmluZGV4IDY0ZjRhMWIuLjY0NGY0YTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKKysrIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaApAQCAt
MTI1LDcgKzEyNSw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBleGVjdXRlUGVuZGluZ0VkaXRvckNv
bW1hbmRzKFdlYkNvcmU6OkZyYW1lKiwgVmVjdG9yPFdURjo6U3RyaW5nPiwgYm9vbCkgT1ZFUlJJ
REU7CiAgICAgdm9pZCBnZXRFZGl0b3JDb21tYW5kc0ZvcktleUV2ZW50KGNvbnN0IFdlYkNvcmU6
OktleWJvYXJkRXZlbnQqLCBWZWN0b3I8V1RGOjpTdHJpbmc+JikgT1ZFUlJJREU7CiAjZW5kaWYK
LSNpZiBQTEFURk9STShHVEspIHx8IFBMQVRGT1JNKFFUKQorI2lmIFBMQVRGT1JNKEdUSykgfHwg
UExBVEZPUk0oUVQpIHx8IFBMQVRGT1JNKEVGTCkKICAgICB2b2lkIHVwZGF0ZUdsb2JhbFNlbGVj
dGlvbihXZWJDb3JlOjpGcmFtZSopOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcCBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJh
dGVnaWVzLmNwcAppbmRleCA5ZGM0OGM1Li42OTcyM2JhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAK
KysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9y
bVN0cmF0ZWdpZXMuY3BwCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiV2ViQ29udGV4dE1l
c3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViQ29va2llTWFuYWdlci5oIgogI2luY2x1ZGUgIldlYkNv
cmVBcmd1bWVudENvZGVycy5oIgorI2luY2x1ZGUgIldlYlBhZ2VQcm94eU1lc3NhZ2VzLmgiCiAj
aW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NQcm94eU1lc3NhZ2Vz
LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9Db2xvci5oPgpAQCAtMzA2LDE0ICszMDcsNiBAQCB2b2lk
IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Z2V0UGF0aG5hbWVzRm9yVHlwZShWZWN0b3I8U3RyaW5n
PiYgcGF0aG5hbWVzLCBjb25zdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgTWVzc2FnZXM6OldlYkNvbnRleHQ6OkdldFBhc3RlYm9hcmRQYXRobmFtZXNG
b3JUeXBlOjpSZXBseShwYXRobmFtZXMpLCAwKTsKIH0KIAotU3RyaW5nIFdlYlBsYXRmb3JtU3Ry
YXRlZ2llczo6c3RyaW5nRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKQotewotICAgIFN0cmluZyB2YWx1ZTsKLSAgICBXZWJQ
cm9jZXNzOjpzaGFyZWQoKS5jb25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJDb250
ZXh0OjpHZXRQYXN0ZWJvYXJkU3RyaW5nRm9yVHlwZShwYXN0ZWJvYXJkTmFtZSwgcGFzdGVib2Fy
ZFR5cGUpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
TWVzc2FnZXM6OldlYkNvbnRleHQ6OkdldFBhc3RlYm9hcmRTdHJpbmdGb3JUeXBlOjpSZXBseSh2
YWx1ZSksIDApOwotICAgIHJldHVybiB2YWx1ZTsKLX0KLQogdm9pZCBXZWJQbGF0Zm9ybVN0cmF0
ZWdpZXM6OmNvcHkoY29uc3QgU3RyaW5nJiBmcm9tUGFzdGVib2FyZCwgY29uc3QgU3RyaW5nJiB0
b1Bhc3RlYm9hcmQpCiB7CiAgICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkuY29ubmVjdGlvbigpLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJDb250ZXh0OjpQYXN0ZWJvYXJkQ29weShmcm9tUGFzdGVib2FyZCwg
dG9QYXN0ZWJvYXJkKSwgMCk7CkBAIC0zNzYsNiArMzY5LDE1IEBAIHZvaWQgV2ViUGxhdGZvcm1T
dHJhdGVnaWVzOjpzZXRQYXRobmFtZXNGb3JUeXBlKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXRo
bmFtZXMsCiB7CiAgICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkuY29ubmVjdGlvbigpLT5zZW5kKE1l
c3NhZ2VzOjpXZWJDb250ZXh0OjpTZXRQYXN0ZWJvYXJkUGF0aG5hbWVzRm9yVHlwZShwYXN0ZWJv
YXJkTmFtZSwgcGFzdGVib2FyZFR5cGUsIHBhdGhuYW1lcyksIDApOwogfQorI2VuZGlmCisjaWYg
UExBVEZPUk0oTUFDKSB8fCBQTEFURk9STShFRkwpCitTdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVn
aWVzOjpzdHJpbmdGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZE5hbWUpCit7CisgICAgU3RyaW5nIHZhbHVlOworICAgIFdlYlByb2Nl
c3M6OnNoYXJlZCgpLmNvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYkNvbnRleHQ6
OkdldFBhc3RlYm9hcmRTdHJpbmdGb3JUeXBlKHBhc3RlYm9hcmROYW1lLCBwYXN0ZWJvYXJkVHlw
ZSksIE1lc3NhZ2VzOjpXZWJDb250ZXh0OjpHZXRQYXN0ZWJvYXJkU3RyaW5nRm9yVHlwZTo6UmVw
bHkodmFsdWUpLCAwKTsKKworICAgIHJldHVybiB2YWx1ZTsKK30KIAogdm9pZCBXZWJQbGF0Zm9y
bVN0cmF0ZWdpZXM6OnNldFN0cmluZ0ZvclR5cGUoY29uc3QgU3RyaW5nJiBzdHJpbmcsIGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCiB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YlBsYXRmb3JtU3RyYXRlZ2llcy5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaAppbmRleCBjYzBkYzhjLi5jMzFkNmY1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBs
YXRmb3JtU3RyYXRlZ2llcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgKQEAgLTg2LDcgKzg2LDYgQEAgcHJpdmF0
ZToKICAgICB2aXJ0dWFsIHZvaWQgZ2V0VHlwZXMoVmVjdG9yPFN0cmluZz4mIHR5cGVzLCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIFBhc3NSZWZQ
dHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIE9WRVJSSURFOwogICAg
IHZpcnR1YWwgdm9pZCBnZXRQYXRobmFtZXNGb3JUeXBlKFZlY3RvcjxTdHJpbmc+JiBwYXRobmFt
ZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZE5hbWUpIE9WRVJSSURFOwotICAgIHZpcnR1YWwgU3RyaW5nIHN0cmluZ0ZvclR5cGUoY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgT1ZF
UlJJREU7CiAgICAgdmlydHVhbCBpbnQgY2hhbmdlQ291bnQoY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkTmFtZSkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBTdHJpbmcgdW5pcXVlTmFtZSgpIE9WRVJS
SURFOwogICAgIHZpcnR1YWwgV2ViQ29yZTo6Q29sb3IgY29sb3IoY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkTmFtZSkgT1ZFUlJJREU7CkBAIC05Nyw2ICs5Niw5IEBAIHByaXZhdGU6CiAgICAgdmly
dHVhbCB2b2lkIHNldFR5cGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMs
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9p
ZCBzZXRCdWZmZXJGb3JUeXBlKFBhc3NSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiwgY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkg
T1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHNldFBhdGhuYW1lc0ZvclR5cGUoY29uc3QgVmVj
dG9yPFN0cmluZz4mLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lKSBPVkVSUklERTsKKyNlbmRpZgorI2lmIFBMQVRGT1JNKE1BQykgfHwg
UExBVEZPUk0oRUZMKQorICAgIHZpcnR1YWwgU3RyaW5nIHN0cmluZ0ZvclR5cGUoY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgT1ZFUlJJ
REU7CiAgICAgdmlydHVhbCB2b2lkIHNldFN0cmluZ0ZvclR5cGUoY29uc3QgU3RyaW5nJiwgY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkg
T1ZFUlJJREU7CiAjZW5kaWYKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>208734</attachid>
            <date>2013-08-14 08:57:36 -0700</date>
            <delta_ts>2013-09-13 10:57:36 -0700</delta_ts>
            <desc>new patch</desc>
            <filename>pasteboard-efl.diff</filename>
            <type>text/plain</type>
            <size>25341</size>
            <attacher name="Michal Pakula vel Rutka">mpakulavelrutka</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAxZmRiOGQ0Li44ZmIyNDVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzAg
QEAKKzIwMTMtMDgtMTQgIE1pY2hhxYIgUGFrdcWCYSB2ZWwgUnV0a2EgIDxtLnBha3VsYUBzYW1z
dW5nLmNvbT4KKworICAgICAgICBbRUZMXVtXSzJdIEltcGxlbWVudGF0aW9uIG9mIHBhc3RlYm9h
cmQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMjQ4
NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEVGTCBk
b2VzIG5vdCBwcm92aWRlIHBsYXRmb3JtLXdpZGUgY29weSBhbmQgcGFzdGUgc3VwcG9ydCwgYnV0
IGFuIEFQSSBpbiBVSSB0b29sa2l0IC0gRWxlbWVudGFyeS4KKyAgICAgICAgV2ViS2l0IEVGTCBz
aG91bGQgYmUgZWxlbWVudGFyeSBpbmRlcGVuZGVudCwgYWxzbyBFbGVtZW50YXJ5IGNvcHkgYW5k
IHBhc3RlIEFQSSBuZWVkcyBhIFVJIHdpZGdldAorICAgICAgICBhcyBvbmUgb2YgaXRzIGFyZ3Vt
ZW50LiBUaHVzLCB3ZSBjYW5ub3QgaW1wbGVtZW50IHBhc3RlYm9hcmQgaW5zaWRlIFdlYkNvcmUg
bGlrZSBvdGhlciBwb3J0cywKKyAgICAgICAgYnV0IHRoZSBpbXBsZW1lbnRhdGlvbiBoYXMgdG8g
YmUgZG9uZSBvbiBhcHBsaWNhdGlvbiBzaWRlLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyAtIGFs
cmVhZHkgY292ZXJlZCBieSBleGlzdGluZyB0ZXN0cy4KKworICAgICAgICAqIHBsYXRmb3JtL1Bh
c3RlYm9hcmQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9QYXN0ZWJvYXJkU3RyYXRlZ3kuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9lZmwvRWZsUGFzdGVib2FyZFV0aWxpdGllcy5oOiBBZGRlZC4KKyAg
ICAgICAgKiBwbGF0Zm9ybS9lZmwvUGFzdGVib2FyZEVmbC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpQYXN0ZWJvYXJkOjpQYXN0ZWJvYXJkKToKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6
OndyaXRlUGxhaW5UZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OndyaXRlU2Vs
ZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OndyaXRlVVJMKToKKyAgICAg
ICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OmRvY3VtZW50RnJhZ21lbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6UGFzdGVib2FyZDo6cGxhaW5UZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9h
cmQ6OmlzU2VsZWN0aW9uTW9kZSk6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjpzZXRT
ZWxlY3Rpb25Nb2RlKToKKwogMjAxMy0wOC0xMyAgQW50dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBs
ZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIE5vZGU6OmF0dGFjaCgpIGFuZCBDb250YWluZXJOb2Rl
OjphdHRhY2goKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2Fy
ZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZC5oCmluZGV4IDI4MDMyOGQu
LjVhYWZmM2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmgKQEAgLTE1OCw3ICsx
NTgsNyBAQCBwdWJsaWM6CiAgICAgUGFzc1JlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBkb2N1bWVu
dEZyYWdtZW50KEZyYW1lKiwgUGFzc1JlZlB0cjxSYW5nZT4sIGJvb2wgYWxsb3dQbGFpblRleHQs
IGJvb2wmIGNob3NlUGxhaW5UZXh0KTsKICAgICBTdHJpbmcgcGxhaW5UZXh0KEZyYW1lKiA9IDAp
OwogICAgIAotI2lmIFBMQVRGT1JNKFFUKSB8fCBQTEFURk9STShHVEspCisjaWYgUExBVEZPUk0o
UVQpIHx8IFBMQVRGT1JNKEdUSykgfHwgUExBVEZPUk0oRUZMKQogICAgIGJvb2wgaXNTZWxlY3Rp
b25Nb2RlKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRTZWxlY3Rpb25Nb2RlKGJvb2wpOwogI2Vsc2UK
QEAgLTIyMCwxMiArMjIwLDE1IEBAIHByaXZhdGU6CiAjaWYgUExBVEZPUk0oUVQpCiAgICAgY29u
c3QgUU1pbWVEYXRhKiByZWFkRGF0YSgpIGNvbnN0OwogCi0gICAgYm9vbCBtX3NlbGVjdGlvbk1v
ZGU7CiAgICAgY29uc3QgUU1pbWVEYXRhKiBtX3JlYWRhYmxlRGF0YTsKICAgICBtdXRhYmxlIFFN
aW1lRGF0YSogbV93cml0YWJsZURhdGE7CiAgICAgYm9vbCBtX2lzRm9yRHJhZ0FuZERyb3A7CiAj
ZW5kaWYKIAorI2lmIFBMQVRGT1JNKFFUKSB8fCBQTEFURk9STShFRkwpCisgICAgYm9vbCBtX3Nl
bGVjdGlvbk1vZGU7CisjZW5kaWYKKwogI2lmIFBMQVRGT1JNKEdUSykKICAgICBSZWZQdHI8RGF0
YU9iamVjdEd0az4gbV9kYXRhT2JqZWN0OwogICAgIEd0a0NsaXBib2FyZCogbV9ndGtDbGlwYm9h
cmQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkU3RyYXRl
Z3kuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRTdHJhdGVneS5oCmluZGV4
IDc4NWZjZGQuLmM2NTQ5YjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bh
c3RlYm9hcmRTdHJhdGVneS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9h
cmRTdHJhdGVneS5oCkBAIC00Miw3ICs0Miw2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQg
Z2V0VHlwZXMoVmVjdG9yPFN0cmluZz4mIHR5cGVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lKSA9IDA7CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyRm9y
VHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmROYW1lKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGdldFBhdGhuYW1lc0ZvclR5cGUoVmVjdG9y
PFN0cmluZz4mIHBhdGhuYW1lcywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgPSAwOwotICAgIHZpcnR1YWwgU3RyaW5nIHN0cmluZ0Zv
clR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkTmFtZSkgPSAwOwogICAgIHZpcnR1YWwgaW50IGNoYW5nZUNvdW50KGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZE5hbWUpID0gMDsKICAgICB2aXJ0dWFsIFN0cmluZyB1bmlxdWVOYW1lKCkgPSAw
OwogICAgIHZpcnR1YWwgQ29sb3IgY29sb3IoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkg
PSAwOwpAQCAtNTMsNiArNTIsOSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNldFR5cGVz
KGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0QnVmZmVyRm9yVHlwZShQYXNz
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4sIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0UGF0aG5h
bWVzRm9yVHlwZShjb25zdCBWZWN0b3I8U3RyaW5nPiYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpID0gMDsKKyNlbmRpZgorI2lmIFBM
QVRGT1JNKE1BQykgfHwgUExBVEZPUk0oRUZMKQorICAgIHZpcnR1YWwgU3RyaW5nIHN0cmluZ0Zv
clR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkTmFtZSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzZXRTdHJpbmdGb3JUeXBlKGNvbnN0IFN0
cmluZyYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZE5hbWUpID0gMDsKICNlbmRpZgogcHJvdGVjdGVkOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZWZsL0VmbFBhc3RlYm9hcmRVdGlsaXRpZXMuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2VmbC9FZmxQYXN0ZWJvYXJkVXRpbGl0aWVzLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMC4uMjAwZTE0MQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2VmbC9FZmxQYXN0ZWJvYXJkVXRpbGl0aWVzLmgKQEAgLTAsMCArMSw0
MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBTYW1zdW5nIEVsZWN0cm9uaWNzCisgKgor
ICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEVmbFBhc3RlYm9hcmRVdGls
aXRpZXNfaAorI2RlZmluZSBFZmxQYXN0ZWJvYXJkVXRpbGl0aWVzX2gKKworI2luY2x1ZGUgPHd0
Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NvbnN0IFN0cmlu
ZyBzZWxlY3Rpb25Gb3JtYXRUZXh0ID0gQVNDSUlMaXRlcmFsKCJUZXh0Iik7Citjb25zdCBTdHJp
bmcgc2VsZWN0aW9uRm9ybWF0TWFya3VwID0gQVNDSUlMaXRlcmFsKCJNYXJrdXAiKTsKK2NvbnN0
IFN0cmluZyBzZWxlY3Rpb25UeXBlUHJpbWFyeSA9IEFTQ0lJTGl0ZXJhbCgiUHJpbWFyeSIpOwor
Y29uc3QgU3RyaW5nIHNlbGVjdGlvblR5cGVDbGlwYm9hcmQgPSBBU0NJSUxpdGVyYWwoIkNsaXBi
b2FyZCIpOworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFZmxQYXN0ZWJv
YXJkVXRpbGl0aWVzX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9Q
YXN0ZWJvYXJkRWZsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9QYXN0ZWJvYXJk
RWZsLmNwcAppbmRleCBlZTkzMDdjLi4xZGU2N2JhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9lZmwvUGFzdGVib2FyZEVmbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZWZsL1Bhc3RlYm9hcmRFZmwuY3BwCkBAIC0yNCw4ICsyNCwxNSBAQAogI2luY2x1ZGUg
IlBhc3RlYm9hcmQuaCIKIAogI2luY2x1ZGUgIkRvY3VtZW50RnJhZ21lbnQuaCIKKyNpbmNsdWRl
ICJFZmxQYXN0ZWJvYXJkVXRpbGl0aWVzLmgiCisjaW5jbHVkZSAiRnJhbWUuaCIKKyNpbmNsdWRl
ICJLVVJMLmgiCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKLSNpbmNsdWRlIDx3dGYvdGV4
dC9TdHJpbmdIYXNoLmg+CisjaW5jbHVkZSAiUGFzdGVib2FyZFN0cmF0ZWd5LmgiCisjaW5jbHVk
ZSAiUGxhdGZvcm1TdHJhdGVnaWVzLmgiCisjaW5jbHVkZSAibWFya3VwLmgiCisjaW5jbHVkZSA8
d3RmL3RleHQvQ1N0cmluZy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTM2LDIzICs0MywyNyBAQCBQYXN0ZWJvYXJkKiBQYXN0
ZWJvYXJkOjpnZW5lcmFsUGFzdGVib2FyZCgpCiB9CiAKIFBhc3RlYm9hcmQ6OlBhc3RlYm9hcmQo
KQorICAgIDogbV9zZWxlY3Rpb25Nb2RlKGZhbHNlKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7
CiB9CiAKLXZvaWQgUGFzdGVib2FyZDo6d3JpdGVQbGFpblRleHQoY29uc3QgU3RyaW5nJiwgU21h
cnRSZXBsYWNlT3B0aW9uKQordm9pZCBQYXN0ZWJvYXJkOjp3cml0ZVBsYWluVGV4dChjb25zdCBT
dHJpbmcmIHRleHQsIFNtYXJ0UmVwbGFjZU9wdGlvbikKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgp
OworICAgIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+c2V0U3Ry
aW5nRm9yVHlwZSh0ZXh0LCBzZWxlY3Rpb25Gb3JtYXRUZXh0LCBtX3NlbGVjdGlvbk1vZGUgPyBz
ZWxlY3Rpb25UeXBlUHJpbWFyeSA6IHNlbGVjdGlvblR5cGVDbGlwYm9hcmQpOwogfQogCi12b2lk
IFBhc3RlYm9hcmQ6OndyaXRlU2VsZWN0aW9uKFJhbmdlKiwgYm9vbCwgRnJhbWUqLCBTaG91bGRT
ZXJpYWxpemVTZWxlY3RlZFRleHRGb3JDbGlwYm9hcmQpCit2b2lkIFBhc3RlYm9hcmQ6OndyaXRl
U2VsZWN0aW9uKFJhbmdlKiBzZWxlY3RlZFJhbmdlLCBib29sLCBGcmFtZSosIFNob3VsZFNlcmlh
bGl6ZVNlbGVjdGVkVGV4dEZvckNsaXBib2FyZCkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwor
ICAgIFN0cmluZyBtYXJrdXAgPSBjcmVhdGVNYXJrdXAoc2VsZWN0ZWRSYW5nZSwgMCwgQW5ub3Rh
dGVGb3JJbnRlcmNoYW5nZSwgZmFsc2UsIFJlc29sdmVOb25Mb2NhbFVSTHMpOworICAgIHBsYXRm
b3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+c2V0U3RyaW5nRm9yVHlwZSht
YXJrdXAsIHNlbGVjdGlvbkZvcm1hdE1hcmt1cCwgbV9zZWxlY3Rpb25Nb2RlID8gc2VsZWN0aW9u
VHlwZVByaW1hcnkgOiBzZWxlY3Rpb25UeXBlQ2xpcGJvYXJkKTsKIH0KIAotdm9pZCBQYXN0ZWJv
YXJkOjp3cml0ZVVSTChjb25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJiwgRnJhbWUqKQordm9pZCBQ
YXN0ZWJvYXJkOjp3cml0ZVVSTChjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYsIEZyYW1l
KikKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIGlmICh1cmwuaXNFbXB0eSgpKQorICAg
ICAgICByZXR1cm47CisKKyAgICBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0
ZWd5KCktPnNldFN0cmluZ0ZvclR5cGUodXJsLnN0cmluZygpLCBzZWxlY3Rpb25Gb3JtYXRNYXJr
dXAsIG1fc2VsZWN0aW9uTW9kZSA/IHNlbGVjdGlvblR5cGVQcmltYXJ5IDogc2VsZWN0aW9uVHlw
ZUNsaXBib2FyZCk7CiB9CiAKIHZvaWQgUGFzdGVib2FyZDo6d3JpdGVJbWFnZShOb2RlKiwgY29u
c3QgS1VSTCYsIGNvbnN0IFN0cmluZyYpCkBAIC03NiwxNiArODcsNDIgQEAgYm9vbCBQYXN0ZWJv
YXJkOjpjYW5TbWFydFJlcGxhY2UoKQogICAgIHJldHVybiBmYWxzZTsKIH0KIAotUGFzc1JlZlB0
cjxEb2N1bWVudEZyYWdtZW50PiBQYXN0ZWJvYXJkOjpkb2N1bWVudEZyYWdtZW50KEZyYW1lKiwg
UGFzc1JlZlB0cjxSYW5nZT4sIGJvb2wsIGJvb2wmKQorUGFzc1JlZlB0cjxEb2N1bWVudEZyYWdt
ZW50PiBQYXN0ZWJvYXJkOjpkb2N1bWVudEZyYWdtZW50KEZyYW1lKiBmcmFtZSwgUGFzc1JlZlB0
cjxSYW5nZT4gY29udGV4dCwgYm9vbCBhbGxvd1BsYWluVGV4dCwgYm9vbCYgY2hvc2VQbGFpblRl
eHQpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBjaG9zZVBsYWluVGV4dCA9IGZhbHNl
OworCisgICAgU3RyaW5nIGRhdGEgPSBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0
cmF0ZWd5KCktPnN0cmluZ0ZvclR5cGUoc2VsZWN0aW9uRm9ybWF0TWFya3VwLCBtX3NlbGVjdGlv
bk1vZGUgPyBzZWxlY3Rpb25UeXBlUHJpbWFyeSA6IHNlbGVjdGlvblR5cGVDbGlwYm9hcmQpOwor
CisgICAgaWYgKCFkYXRhLmlzRW1wdHkoKSkgeworICAgICAgICBpZiAoUmVmUHRyPERvY3VtZW50
RnJhZ21lbnQ+IGZyYWdtZW50ID0gY3JlYXRlRnJhZ21lbnRGcm9tTWFya3VwKGZyYW1lLT5kb2N1
bWVudCgpLCBkYXRhLCBlbXB0eVN0cmluZygpLCBEaXNhbGxvd1NjcmlwdGluZ0NvbnRlbnQpKQor
ICAgICAgICAgICAgcmV0dXJuIGZyYWdtZW50LnJlbGVhc2UoKTsKKyAgICB9CisKKyAgICBkYXRh
ID0gcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT5zdHJpbmdGb3JU
eXBlKHNlbGVjdGlvbkZvcm1hdFRleHQsIG1fc2VsZWN0aW9uTW9kZSA/IHNlbGVjdGlvblR5cGVQ
cmltYXJ5IDogc2VsZWN0aW9uVHlwZUNsaXBib2FyZCk7CisKKyAgICBpZiAoYWxsb3dQbGFpblRl
eHQgJiYgIWRhdGEuaXNFbXB0eSgpKSB7CisgICAgICAgIGNob3NlUGxhaW5UZXh0ID0gdHJ1ZTsK
KyAgICAgICAgUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGZyYWdtZW50ID0gY3JlYXRlRnJhZ21l
bnRGcm9tVGV4dChjb250ZXh0LmdldCgpLCBkYXRhKTsKKyAgICAgICAgaWYgKGZyYWdtZW50KQor
ICAgICAgICAgICAgcmV0dXJuIGZyYWdtZW50LnJlbGVhc2UoKTsKKyAgICB9CisKICAgICByZXR1
cm4gMDsKIH0KIAogU3RyaW5nIFBhc3RlYm9hcmQ6OnBsYWluVGV4dChGcmFtZSopCiB7Ci0gICAg
bm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gU3RyaW5nKCk7CisgICAgcmV0dXJuIHBsYXRm
b3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+c3RyaW5nRm9yVHlwZShzZWxl
Y3Rpb25Gb3JtYXRUZXh0LCBtX3NlbGVjdGlvbk1vZGUgPyBzZWxlY3Rpb25UeXBlUHJpbWFyeSA6
IHNlbGVjdGlvblR5cGVDbGlwYm9hcmQpOworfQorCitib29sIFBhc3RlYm9hcmQ6OmlzU2VsZWN0
aW9uTW9kZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fc2VsZWN0aW9uTW9kZTsKK30KKwordm9p
ZCBQYXN0ZWJvYXJkOjpzZXRTZWxlY3Rpb25Nb2RlKGJvb2wgc2VsZWN0aW9uTW9kZSkKK3sKKyAg
ICBtX3NlbGVjdGlvbk1vZGUgPSBzZWxlY3Rpb25Nb2RlOwogfQogCiBQYXNzT3duUHRyPFBhc3Rl
Ym9hcmQ+IFBhc3RlYm9hcmQ6OmNyZWF0ZUZvckNvcHlBbmRQYXN0ZSgpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cK
aW5kZXggMzFiNzMxNy4uOTIwNjE1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBA
CisyMDEzLTA2LTE0ICBNaWNoYcWCIFBha3XFgmEgdmVsIFJ1dGthICA8bS5wYWt1bGFAc2Ftc3Vu
Zy5jb20+CisKKyAgICAgICAgW0VGTF1bV0syXSBJbXBsZW1lbnRhdGlvbiBvZiBwYXN0ZWJvYXJk
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDI0ODQK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBFRkwgZG9l
cyBub3QgcHJvdmlkZSBwbGF0Zm9ybS13aWRlIGNvcHkgYW5kIHBhc3RlIHN1cHBvcnQsIGJ1dCBh
biBBUEkgaW4gVUkgdG9vbGtpdCAtIEVsZW1lbnRhcnkuCisgICAgICAgIFdlYktpdCBFRkwgc2hv
dWxkIGJlIGVsZW1lbnRhcnkgaW5kZXBlbmRlbnQsIGFsc28gRWxlbWVudGFyeSBjb3B5IGFuZCBw
YXN0ZSBBUEkgbmVlZHMgYSBVSSB3aWRnZXQKKyAgICAgICAgYXMgb25lIG9mIGl0cyBhcmd1bWVu
dC4gVGh1cywgd2UgY2Fubm90IGltcGxlbWVudCBwYXN0ZWJvYXJkIGluc2lkZSBXZWJDb3JlIGxp
a2Ugb3RoZXIgcG9ydHMsCisgICAgICAgIGJ1dCB0aGUgaW1wbGVtZW50YXRpb24gaGFzIHRvIGJl
IGRvbmUgb24gYXBwbGljYXRpb24gc2lkZS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1Bs
YXRmb3JtU3RyYXRlZ2llc0VmbC5jcHA6CisgICAgICAgIChQbGF0Zm9ybVN0cmF0ZWdpZXNFZmw6
OmNyZWF0ZVBhc3RlYm9hcmRTdHJhdGVneSk6CisgICAgICAgIChQbGF0Zm9ybVN0cmF0ZWdpZXNF
Zmw6OnNldFN0cmluZ0ZvclR5cGUpOgorICAgICAgICAoUGxhdGZvcm1TdHJhdGVnaWVzRWZsOjpz
dHJpbmdGb3JUeXBlKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9QbGF0Zm9ybVN0cmF0ZWdp
ZXNFZmwuaDoKKwogMjAxMy0wOC0xMiAgUnl1YW4gQ2hvaSAgPHJ5dWFuLmNob2lAc2Ftc3VuZy5j
b20+CiAKICAgICAgICAgW0VGTF1bV0sxXSBVUkwgcHJpbnRpbmcgY29kZSBpbiBEdW1wUmVuZGVy
VHJlZSBkb2Vzbid0IG1hdGNoIFdUUiBvciBNYWMgRFJUCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9QbGF0Zm9ybVN0cmF0ZWdpZXNFZmwuY3BwIGIvU291cmNl
L1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvUGxhdGZvcm1TdHJhdGVnaWVzRWZsLmNwcAppbmRl
eCA0OWFhMzU3Li42MDFmNzZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3Jl
U3VwcG9ydC9QbGF0Zm9ybVN0cmF0ZWdpZXNFZmwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZs
L1dlYkNvcmVTdXBwb3J0L1BsYXRmb3JtU3RyYXRlZ2llc0VmbC5jcHAKQEAgLTYyLDggKzYyLDcg
QEAgTG9hZGVyU3RyYXRlZ3kqIFBsYXRmb3JtU3RyYXRlZ2llc0VmbDo6Y3JlYXRlTG9hZGVyU3Ry
YXRlZ3koKQogCiBQYXN0ZWJvYXJkU3RyYXRlZ3kqIFBsYXRmb3JtU3RyYXRlZ2llc0VmbDo6Y3Jl
YXRlUGFzdGVib2FyZFN0cmF0ZWd5KCkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJl
dHVybiAwOworICAgIHJldHVybiB0aGlzOwogfQogCiBQbHVnaW5TdHJhdGVneSogUGxhdGZvcm1T
dHJhdGVnaWVzRWZsOjpjcmVhdGVQbHVnaW5TdHJhdGVneSgpCkBAIC0xNjcsMyArMTY2LDE1IEBA
IHZvaWQgUGxhdGZvcm1TdHJhdGVnaWVzRWZsOjphZGRWaXNpdGVkTGluayhQYWdlKiBwYWdlLCBM
aW5rSGFzaCBoYXNoKQogewogICAgIHBhZ2UtPmdyb3VwKCkuYWRkVmlzaXRlZExpbmtIYXNoKGhh
c2gpOwogfQorCisvLyBQYXN0ZWJvYXJkU3RyYXRlZ3kKK3ZvaWQgUGxhdGZvcm1TdHJhdGVnaWVz
RWZsOjpzZXRTdHJpbmdGb3JUeXBlKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIGNvbnN0
IFN0cmluZyYpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKworU3RyaW5nIFBsYXRmb3Jt
U3RyYXRlZ2llc0VmbDo6c3RyaW5nRm9yVHlwZShjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcm
KQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIFN0cmluZygpOworfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvUGxhdGZvcm1TdHJhdGVn
aWVzRWZsLmggYi9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9QbGF0Zm9ybVN0cmF0
ZWdpZXNFZmwuaAppbmRleCA3NDcwYzJjLi5hYWYxNzBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9QbGF0Zm9ybVN0cmF0ZWdpZXNFZmwuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9QbGF0Zm9ybVN0cmF0ZWdpZXNFZmwuaApAQCAt
MzAsNyArMzAsNyBAQAogI2luY2x1ZGUgIlN0b3JhZ2VTdHJhdGVneS5oIgogI2luY2x1ZGUgIlZp
c2l0ZWRMaW5rU3RyYXRlZ3kuaCIKIAotY2xhc3MgUGxhdGZvcm1TdHJhdGVnaWVzRWZsIDogcHVi
bGljIFdlYkNvcmU6OlBsYXRmb3JtU3RyYXRlZ2llcywgcHJpdmF0ZSBXZWJDb3JlOjpDb29raWVz
U3RyYXRlZ3ksIHByaXZhdGUgV2ViQ29yZTo6RGF0YWJhc2VTdHJhdGVneSwgcHJpdmF0ZSBXZWJD
b3JlOjpMb2FkZXJTdHJhdGVneSwgcHJpdmF0ZSBXZWJDb3JlOjpQbHVnaW5TdHJhdGVneSwgcHJp
dmF0ZSBXZWJDb3JlOjpTaGFyZWRXb3JrZXJTdHJhdGVneSwgcHJpdmF0ZSBXZWJDb3JlOjpTdG9y
YWdlU3RyYXRlZ3ksIHByaXZhdGUgV2ViQ29yZTo6VmlzaXRlZExpbmtTdHJhdGVneSB7CitjbGFz
cyBQbGF0Zm9ybVN0cmF0ZWdpZXNFZmwgOiBwdWJsaWMgV2ViQ29yZTo6UGxhdGZvcm1TdHJhdGVn
aWVzLCBwcml2YXRlIFdlYkNvcmU6OkNvb2tpZXNTdHJhdGVneSwgcHJpdmF0ZSBXZWJDb3JlOjpE
YXRhYmFzZVN0cmF0ZWd5LCBwcml2YXRlIFdlYkNvcmU6OkxvYWRlclN0cmF0ZWd5LCBwcml2YXRl
IFdlYkNvcmU6OlBsdWdpblN0cmF0ZWd5LCBwcml2YXRlIFdlYkNvcmU6OlNoYXJlZFdvcmtlclN0
cmF0ZWd5LCBwcml2YXRlIFdlYkNvcmU6OlN0b3JhZ2VTdHJhdGVneSwgcHJpdmF0ZSBXZWJDb3Jl
OjpWaXNpdGVkTGlua1N0cmF0ZWd5LCBwcml2YXRlIFdlYkNvcmU6OlBhc3RlYm9hcmRTdHJhdGVn
eSB7CiBwdWJsaWM6CiAgICAgc3RhdGljIHZvaWQgaW5pdGlhbGl6ZSgpOwogCkBAIC02NSw2ICs2
NSwxMCBAQCBwcml2YXRlOgogICAgIC8vIFdlYkNvcmU6OlZpc2l0ZWRMaW5rU3RyYXRlZ3kKICAg
ICB2aXJ0dWFsIGJvb2wgaXNMaW5rVmlzaXRlZChXZWJDb3JlOjpQYWdlKiwgV2ViQ29yZTo6TGlu
a0hhc2gsIGNvbnN0IFdlYkNvcmU6OktVUkwmIGJhc2VVUkwsIGNvbnN0IFdURjo6QXRvbWljU3Ry
aW5nJiBhdHRyaWJ1dGVVUkwpOwogICAgIHZpcnR1YWwgdm9pZCBhZGRWaXNpdGVkTGluayhXZWJD
b3JlOjpQYWdlKiwgV2ViQ29yZTo6TGlua0hhc2gpOworCisgICAgLy8gV2ViQ29yZTo6UGFzdGVi
b2FyZFN0cmF0ZWd5CisgICAgdmlydHVhbCBTdHJpbmcgc3RyaW5nRm9yVHlwZShjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKTsKKyAgICB2
aXJ0dWFsIHZvaWQgc2V0U3RyaW5nRm9yVHlwZShjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKTsKIH07CiAKICNl
bmRpZiAvLyBQbGF0Zm9ybVN0cmF0ZWdpZXNFZmxfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IGUxYWQyN2YuLmQ4
MjI5MWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNyBAQAorMjAxMy0wOC0xNCAgTWljaGHFgiBQ
YWt1xYJhIHZlbCBSdXRrYSAgPG0ucGFrdWxhQHNhbXN1bmcuY29tPgorCisgICAgICAgIFtFRkxd
W1dLMl0gSW1wbGVtZW50YXRpb24gb2YgcGFzdGVib2FyZAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAyNDg0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBpcyBhbiBpbml0aWFsIGFwcHJvYWNoIHRv
IFBhc3RlYm9hcmQgaW1wbGVtZW50YXRpb24gaW4gV2ViS2l0MiwKKyAgICAgICAgZm9jdXNpbmcg
b24gYmFzaWMgY29weSBhbmQgcGFzdGUgZmVhdHVyZXMuIEl0IHBhc3Nlc3MgZGF0YSBhbG9uZyB3
aXRoIGRhdGEKKyAgICAgICAgdHlwZSBmcm9tIFdlYkNvcmUgdG8gV0tDb250ZXh0UGFzdGVib2Fy
ZENsaWVudC4KKworICAgICAgICAqIFVJUHJvY2Vzcy9XZWJDb250ZXh0Lmg6CisgICAgICAgICog
VUlQcm9jZXNzL1dlYkNvbnRleHQubWVzc2FnZXMuaW46CisgICAgICAgICogVUlQcm9jZXNzL2Vm
bC9XZWJDb250ZXh0RWZsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dDo6Z2V0UGFz
dGVib2FyZFN0cmluZ0ZvclR5cGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0OjpzZXRQ
YXN0ZWJvYXJkU3RyaW5nRm9yVHlwZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJFZGl0b3JDbGll
bnQ6OnJlc3BvbmRUb0NoYW5nZWRTZWxlY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJFZGl0
b3JDbGllbnQ6OnN1cHBvcnRzR2xvYmFsU2VsZWN0aW9uKToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpzdHJpbmdGb3JUeXBlKToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oOgorCiAyMDEzLTA4
LTEyICBEYW4gQmVybnN0ZWluICA8bWl0ekBhcHBsZS5jb20+CiAKICAgICAgICAgRml4ZWQgYW4g
b2ZmLWJ5LShzaXplb2YoY2hhciopIC0gMSkgYnVnLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJD
b250ZXh0LmgKaW5kZXggNGU5OTU4ZC4uYmJkNWNkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViQ29udGV4dC5oCkBAIC0zMTksNyArMzE5LDYgQEAgcHJpdmF0ZToKICNpZiBQTEFURk9STShN
QUMpCiAgICAgdm9pZCBnZXRQYXN0ZWJvYXJkVHlwZXMoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
TmFtZSwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcyk7CiAgICAgdm9pZCBnZXRQYXN0
ZWJvYXJkUGF0aG5hbWVzRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBWZWN0b3I8U3RyaW5nPiYgcGF0aG5hbWVzKTsKLSAg
ICB2b2lkIGdldFBhc3RlYm9hcmRTdHJpbmdGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZE5hbWUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIFN0cmluZyYpOwogICAgIHZvaWQg
Z2V0UGFzdGVib2FyZEJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwg
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgU2hhcmVkTWVtb3J5OjpIYW5kbGUmLCB1aW50
NjRfdCYgc2l6ZSk7CiAgICAgdm9pZCBwYXN0ZWJvYXJkQ29weShjb25zdCBTdHJpbmcmIGZyb21Q
YXN0ZWJvYXJkLCBjb25zdCBTdHJpbmcmIHRvUGFzdGVib2FyZCk7CiAgICAgdm9pZCBnZXRQYXN0
ZWJvYXJkQ2hhbmdlQ291bnQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgdWludDY0X3Qm
IGNoYW5nZUNvdW50KTsKQEAgLTMyOSw5ICszMjgsMTIgQEAgcHJpdmF0ZToKICAgICB2b2lkIGFk
ZFBhc3RlYm9hcmRUeXBlcyhjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBWZWN0
b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzKTsKICAgICB2b2lkIHNldFBhc3RlYm9hcmRUeXBl
cyhjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFz
dGVib2FyZFR5cGVzKTsKICAgICB2b2lkIHNldFBhc3RlYm9hcmRQYXRobmFtZXNGb3JUeXBlKGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUs
IGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXRobmFtZXMpOwotICAgIHZvaWQgc2V0UGFzdGVib2Fy
ZFN0cmluZ0ZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJik7CiAgICAgdm9pZCBzZXRQYXN0ZWJvYXJk
QnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTaGFyZWRNZW1vcnk6OkhhbmRsZSYsIHVpbnQ2NF90IHNp
emUpOwogI2VuZGlmCisjaWYgUExBVEZPUk0oTUFDKSB8fCBQTEFURk9STShFRkwpCisgICAgdm9p
ZCBnZXRQYXN0ZWJvYXJkU3RyaW5nRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBTdHJpbmcmKTsKKyAgICB2b2lkIHNldFBh
c3RlYm9hcmRTdHJpbmdGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYpOworI2VuZGlmCiAKICNpZiAh
UExBVEZPUk0oTUFDKQogICAgIC8vIEZJWE1FOiBUaGlzIGEgZHVtbXkgbWVzc2FnZSwgdG8gYXZv
aWQgYnJlYWtpbmcgdGhlIGJ1aWxkIGZvciBwbGF0Zm9ybXMgdGhhdCBkb24ndCByZXF1aXJlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5tZXNzYWdlcy5p
biBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0Lm1lc3NhZ2VzLmluCmluZGV4
IGYzZGYwODcuLmQ3OTczMTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJDb250ZXh0Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJD
b250ZXh0Lm1lc3NhZ2VzLmluCkBAIC0zMiw3ICszMiw2IEBAIG1lc3NhZ2VzIC0+IFdlYkNvbnRl
eHQgTGVnYWN5UmVjZWl2ZXIgewogICAgIAogICAgIEdldFBhc3RlYm9hcmRUeXBlcyhXVEY6OlN0
cmluZyBwYXN0ZWJvYXJkTmFtZSkgLT4gKFZlY3RvcjxXVEY6OlN0cmluZz4gdHlwZXMpCiAgICAg
R2V0UGFzdGVib2FyZFBhdGhuYW1lc0ZvclR5cGUoV1RGOjpTdHJpbmcgcGFzdGVib2FyZE5hbWUs
IFdURjo6U3RyaW5nIHBhc3RlYm9hcmRUeXBlKSAtPiAoVmVjdG9yPFdURjo6U3RyaW5nPiBwYXRo
bmFtZXMpCi0gICAgR2V0UGFzdGVib2FyZFN0cmluZ0ZvclR5cGUoV1RGOjpTdHJpbmcgcGFzdGVi
b2FyZE5hbWUsIFdURjo6U3RyaW5nIHBhc3RlYm9hcmRUeXBlKSAtPiAoV1RGOjpTdHJpbmcgc3Ry
aW5nKQogICAgIEdldFBhc3RlYm9hcmRCdWZmZXJGb3JUeXBlKFdURjo6U3RyaW5nIHBhc3RlYm9h
cmROYW1lLCBXVEY6OlN0cmluZyBwYXN0ZWJvYXJkVHlwZSkgLT4gKFdlYktpdDo6U2hhcmVkTWVt
b3J5OjpIYW5kbGUgaGFuZGxlLCB1aW50NjRfdCBzaXplKQogICAgIFBhc3RlYm9hcmRDb3B5KFdU
Rjo6U3RyaW5nIGZyb21QYXN0ZWJvYXJkLCBXVEY6OlN0cmluZyB0b1Bhc3RlYm9hcmQpCiAgICAg
R2V0UGFzdGVib2FyZENoYW5nZUNvdW50KFdURjo6U3RyaW5nIHBhc3RlYm9hcmROYW1lKSAtPiAo
dWludDY0X3QgY2hhbmdlQ291bnQpCkBAIC00Miw5ICs0MSwxMyBAQCBtZXNzYWdlcyAtPiBXZWJD
b250ZXh0IExlZ2FjeVJlY2VpdmVyIHsKICAgICBBZGRQYXN0ZWJvYXJkVHlwZXMoV1RGOjpTdHJp
bmcgcGFzdGVib2FyZE5hbWUsIFZlY3RvcjxXVEY6OlN0cmluZz4gcGFzdGVib2FyZFR5cGVzKQog
ICAgIFNldFBhc3RlYm9hcmRUeXBlcyhXVEY6OlN0cmluZyBwYXN0ZWJvYXJkTmFtZSwgVmVjdG9y
PFdURjo6U3RyaW5nPiBwYXN0ZWJvYXJkVHlwZXMpCiAgICAgU2V0UGFzdGVib2FyZFBhdGhuYW1l
c0ZvclR5cGUoV1RGOjpTdHJpbmcgcGFzdGVib2FyZE5hbWUsIFdURjo6U3RyaW5nIHBhc3RlYm9h
cmRUeXBlLCBWZWN0b3I8V1RGOjpTdHJpbmc+IHBhdGhuYW1lcykKLSAgICBTZXRQYXN0ZWJvYXJk
U3RyaW5nRm9yVHlwZShXVEY6OlN0cmluZyBwYXN0ZWJvYXJkTmFtZSwgV1RGOjpTdHJpbmcgcGFz
dGVib2FyZFR5cGUsIFdURjo6U3RyaW5nIHN0cmluZykKICAgICBTZXRQYXN0ZWJvYXJkQnVmZmVy
Rm9yVHlwZShXVEY6OlN0cmluZyBwYXN0ZWJvYXJkTmFtZSwgV1RGOjpTdHJpbmcgcGFzdGVib2Fy
ZFR5cGUsIFdlYktpdDo6U2hhcmVkTWVtb3J5OjpIYW5kbGUgaGFuZGxlLCB1aW50NjRfdCBzaXpl
KQogI2VuZGlmCisjaWYgUExBVEZPUk0oTUFDKSB8fCBQTEFURk9STShFRkwpCisgICAgR2V0UGFz
dGVib2FyZFN0cmluZ0ZvclR5cGUoV1RGOjpTdHJpbmcgcGFzdGVib2FyZE5hbWUsIFdURjo6U3Ry
aW5nIHBhc3RlYm9hcmRUeXBlKSAtPiAoV1RGOjpTdHJpbmcgc3RyaW5nKQorICAgIFNldFBhc3Rl
Ym9hcmRTdHJpbmdGb3JUeXBlKFdURjo6U3RyaW5nIHBhc3RlYm9hcmROYW1lLCBXVEY6OlN0cmlu
ZyBwYXN0ZWJvYXJkVHlwZSwgV1RGOjpTdHJpbmcgc3RyaW5nKQorI2VuZGlmCisKIAogI2lmICFQ
TEFURk9STShNQUMpCiAgICAgLy8gRklYTUU6IFRoaXMgYSBkdW1teSBtZXNzYWdlLCB0byBhdm9p
ZCBicmVha2luZyB0aGUgYnVpbGQgZm9yIHBsYXRmb3JtcyB0aGF0IGRvbid0IHJlcXVpcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViQ29udGV4dEVmbC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYkNvbnRleHRFZmwuY3BwCmluZGV4IGQy
ZGNhM2QuLmIyNmFlZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwv
V2ViQ29udGV4dEVmbC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJD
b250ZXh0RWZsLmNwcApAQCAtMTMyLDQgKzEzMiwxNCBAQCB2b2lkIFdlYkNvbnRleHQ6OnNldEln
bm9yZVRMU0Vycm9ycyhib29sIGlnbm9yZVRMU0Vycm9ycykKICAgICBzZW5kVG9BbGxQcm9jZXNz
ZXMoTWVzc2FnZXM6OldlYlByb2Nlc3M6OlNldElnbm9yZVRMU0Vycm9ycyhtX2lnbm9yZVRMU0Vy
cm9ycykpOwogfQogCit2b2lkIFdlYkNvbnRleHQ6OmdldFBhc3RlYm9hcmRTdHJpbmdGb3JUeXBl
KGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5
cGUsIFN0cmluZyYgc3RyaW5nKQoreworICAgIHN0cmluZyA9IG1fcGFzdGVib2FyZENsaWVudC5z
dHJpbmdGb3JUeXBlKHRoaXMsIHBhc3RlYm9hcmRUeXBlLCBwYXN0ZWJvYXJkTmFtZSk7Cit9CisK
K3ZvaWQgV2ViQ29udGV4dDo6c2V0UGFzdGVib2FyZFN0cmluZ0ZvclR5cGUoY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3Ry
aW5nJiBzdHJpbmcpCit7CisgICAgbV9wYXN0ZWJvYXJkQ2xpZW50LnNldFN0cmluZ0ZvclR5cGUo
dGhpcywgc3RyaW5nLCBwYXN0ZWJvYXJkVHlwZSwgcGFzdGVib2FyZE5hbWUpOworfQorCiB9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcAppbmRleCBmYWM5NmU1Li5i
ODMzYzE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkVkaXRvckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwCkBAIC01NCw2ICs1NCw4IEBACiAjaWYg
UExBVEZPUk0oUVQpCiAjaW5jbHVkZSA8UUNsaXBib2FyZD4KICNpbmNsdWRlIDxRR3VpQXBwbGlj
YXRpb24+CisjZW5kaWYKKyNpZiBQTEFURk9STShRVCkgfHwgUExBVEZPUk0oRUZMKQogI2luY2x1
ZGUgPFdlYkNvcmUvUGFzdGVib2FyZC5oPgogI2VuZGlmCiAKQEAgLTE5NywxMiArMTk5LDEyIEBA
IHZvaWQgV2ViRWRpdG9yQ2xpZW50OjpyZXNwb25kVG9DaGFuZ2VkU2VsZWN0aW9uKEZyYW1lKiBm
cmFtZSkKIAogICAgIG1fcGFnZS0+ZGlkQ2hhbmdlU2VsZWN0aW9uKCk7CiAKLSNpZiBQTEFURk9S
TShHVEspIHx8IFBMQVRGT1JNKFFUKQorI2lmIFBMQVRGT1JNKEdUSykgfHwgUExBVEZPUk0oUVQp
IHx8IFBMQVRGT1JNKEVGTCkKICAgICB1cGRhdGVHbG9iYWxTZWxlY3Rpb24oZnJhbWUpOwogI2Vu
ZGlmCiB9CiAKLSNpZiBQTEFURk9STShRVCkKKyNpZiBQTEFURk9STShRVCkgfHwgUExBVEZPUk0o
RUZMKQogLy8gRklYTUU6IFVzZSB0aGlzIGZ1bmN0aW9uIGZvciBvdGhlciBYMTEtYmFzZWQgcGxh
dGZvcm1zIHRoYXQgbmVlZCB0byBtYW51YWxseSB1cGRhdGUgdGhlIGdsb2JhbCBzZWxlY3Rpb24u
CiB2b2lkIFdlYkVkaXRvckNsaWVudDo6dXBkYXRlR2xvYmFsU2VsZWN0aW9uKEZyYW1lKiBmcmFt
ZSkKIHsKQEAgLTUyNyw3ICs1MjksNyBAQCBib29sIFdlYkVkaXRvckNsaWVudDo6c3VwcG9ydHNH
bG9iYWxTZWxlY3Rpb24oKQogewogI2lmIFBMQVRGT1JNKFFUKSAmJiAhZGVmaW5lZChRVF9OT19D
TElQQk9BUkQpCiAgICAgcmV0dXJuIHFBcHAtPmNsaXBib2FyZCgpLT5zdXBwb3J0c1NlbGVjdGlv
bigpOwotI2VsaWYgUExBVEZPUk0oR1RLKSAmJiBQTEFURk9STShYMTEpCisjZWxpZiBQTEFURk9S
TShHVEspICYmIFBMQVRGT1JNKFgxMSkgfHwgUExBVEZPUk0oRUZMKQogICAgIHJldHVybiB0cnVl
OwogI2Vsc2UKICAgICAvLyBGSVhNRTogUmV0dXJuIHRydWUgb24gb3RoZXIgWDExIHBsYXRmb3Jt
cyB3aGVuIHRoZXkgc3VwcG9ydCBnbG9iYWwgc2VsZWN0aW9uLgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaCBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgK
aW5kZXggOTliZDhiZC4uNDk4ZjM2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCkBAIC0xMzAsNyAr
MTMwLDcgQEAgcHJpdmF0ZToKICAgICBib29sIGV4ZWN1dGVQZW5kaW5nRWRpdG9yQ29tbWFuZHMo
V2ViQ29yZTo6RnJhbWUqLCBWZWN0b3I8V1RGOjpTdHJpbmc+LCBib29sKTsKICAgICB2b2lkIGdl
dEVkaXRvckNvbW1hbmRzRm9yS2V5RXZlbnQoY29uc3QgV2ViQ29yZTo6S2V5Ym9hcmRFdmVudCos
IFZlY3RvcjxXVEY6OlN0cmluZz4mKTsKICNlbmRpZgotI2lmIFBMQVRGT1JNKEdUSykgfHwgUExB
VEZPUk0oUVQpCisjaWYgUExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShRVCkgfHwgUExBVEZPUk0o
RUZMKQogICAgIHZvaWQgdXBkYXRlR2xvYmFsU2VsZWN0aW9uKFdlYkNvcmU6OkZyYW1lKik7CiAj
ZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwCmluZGV4IDA5OGI4MTgu
LjIyZDEyNTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAKQEAgLTM5Miwx
NCArMzkyLDYgQEAgdm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmdldFBhdGhuYW1lc0ZvclR5
cGUoVmVjdG9yPFN0cmluZz4mIHBhdGhuYW1lcywgY29uc3QKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2VzOjpXZWJDb250ZXh0OjpHZXRQYXN0
ZWJvYXJkUGF0aG5hbWVzRm9yVHlwZTo6UmVwbHkocGF0aG5hbWVzKSwgMCk7CiB9CiAKLVN0cmlu
ZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnN0cmluZ0ZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkKLXsKLSAgICBTdHJpbmcg
dmFsdWU7Ci0gICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24o
KS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYkNvbnRleHQ6OkdldFBhc3RlYm9hcmRTdHJpbmdGb3JU
eXBlKHBhc3RlYm9hcmROYW1lLCBwYXN0ZWJvYXJkVHlwZSksCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdlczo6V2ViQ29udGV4dDo6R2V0UGFz
dGVib2FyZFN0cmluZ0ZvclR5cGU6OlJlcGx5KHZhbHVlKSwgMCk7Ci0gICAgcmV0dXJuIHZhbHVl
OwotfQotCiB2b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29weShjb25zdCBTdHJpbmcmIGZy
b21QYXN0ZWJvYXJkLCBjb25zdCBTdHJpbmcmIHRvUGFzdGVib2FyZCkKIHsKICAgICBXZWJQcm9j
ZXNzOjpzaGFyZWQoKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJDb250ZXh0OjpQYXN0ZWJvYXJkQ29weShmcm9tUGFzdGVib2FyZCwgdG9QYXN0ZWJvYXJkKSwg
MCk7CkBAIC00NjIsNiArNDU0LDE1IEBAIHZvaWQgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpzZXRQ
YXRobmFtZXNGb3JUeXBlKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXRobmFtZXMsCiB7CiAgICAg
V2ViUHJvY2Vzczo6c2hhcmVkKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNz
YWdlczo6V2ViQ29udGV4dDo6U2V0UGFzdGVib2FyZFBhdGhuYW1lc0ZvclR5cGUocGFzdGVib2Fy
ZE5hbWUsIHBhc3RlYm9hcmRUeXBlLCBwYXRobmFtZXMpLCAwKTsKIH0KKyNlbmRpZgorI2lmIFBM
QVRGT1JNKE1BQykgfHwgUExBVEZPUk0oRUZMKQorU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2ll
czo6c3RyaW5nRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lKQoreworICAgIFN0cmluZyB2YWx1ZTsKKyAgICBXZWJQcm9jZXNz
OjpzaGFyZWQoKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6
V2ViQ29udGV4dDo6R2V0UGFzdGVib2FyZFN0cmluZ0ZvclR5cGUocGFzdGVib2FyZE5hbWUsIHBh
c3RlYm9hcmRUeXBlKSwgTWVzc2FnZXM6OldlYkNvbnRleHQ6OkdldFBhc3RlYm9hcmRTdHJpbmdG
b3JUeXBlOjpSZXBseSh2YWx1ZSksIDApOworCisgICAgcmV0dXJuIHZhbHVlOworfQogCiB2b2lk
IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6c2V0U3RyaW5nRm9yVHlwZShjb25zdCBTdHJpbmcmIHN0
cmluZywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkTmFtZSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCmluZGV4IGRhZWRjNGQu
Ljg4Y2VmMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaApAQCAtOTgsNyArOTgs
NiBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBnZXRUeXBlcyhWZWN0b3I8U3RyaW5nPiYg
dHlwZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIE9WRVJSSURFOwogICAgIHZpcnR1
YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGJ1ZmZlckZvclR5cGUoY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgT1ZF
UlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGdldFBhdGhuYW1lc0ZvclR5cGUoVmVjdG9yPFN0cmlu
Zz4mIHBhdGhuYW1lcywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSkgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCBTdHJpbmcgc3RyaW5nRm9y
VHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmROYW1lKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIGludCBjaGFuZ2VDb3VudChjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIFN0cmluZyB1bmlxdWVO
YW1lKCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBXZWJDb3JlOjpDb2xvciBjb2xvcihjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmROYW1lKSBPVkVSUklERTsKQEAgLTEwOSw2ICsxMDgsOSBAQCBwcml2
YXRlOgogICAgIHZpcnR1YWwgdm9pZCBzZXRUeXBlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFz
dGVib2FyZFR5cGVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBPVkVSUklERTsKICAg
ICB2aXJ0dWFsIHZvaWQgc2V0QnVmZmVyRm9yVHlwZShQYXNzUmVmUHRyPFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcj4sIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBzZXRQYXRobmFtZXNGb3JU
eXBlKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwg
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgT1ZFUlJJREU7CisjZW5kaWYKKyNpZiBQTEFU
Rk9STShNQUMpIHx8IFBMQVRGT1JNKEVGTCkKKyAgICB2aXJ0dWFsIFN0cmluZyBzdHJpbmdGb3JU
eXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZE5hbWUpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBzZXRTdHJpbmdGb3JUeXBlKGNvbnN0
IFN0cmluZyYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUpIE9WRVJSSURFOwogI2VuZGlmCiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>211564</attachid>
            <date>2013-09-13 10:57:36 -0700</date>
            <delta_ts>2014-06-12 05:46:20 -0700</delta_ts>
            <desc>rebase after pasteboard changes</desc>
            <filename>pasteboard-efl2.diff</filename>
            <type>text/plain</type>
            <size>31658</size>
            <attacher name="Michal Pakula vel Rutka">mpakulavelrutka</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBkNjc2YWZiLi5hMzBmOGUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzgg
QEAKKzIwMTMtMDktMTMgIE1pY2hhxYIgUGFrdcWCYSB2ZWwgUnV0a2EgIDxtLnBha3VsYUBzYW1z
dW5nLmNvbT4KKworICAgICAgICBbRUZMXVtXSzJdIEltcGxlbWVudGF0aW9uIG9mIHBhc3RlYm9h
cmQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMjQ4
NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEVGTCBk
b2VzIG5vdCBwcm92aWRlIHBsYXRmb3JtLXdpZGUgY29weSBhbmQgcGFzdGUgc3VwcG9ydCwgYnV0
IGFuIEFQSSBpbiBVSSB0b29sa2l0IC0gRWxlbWVudGFyeS4KKyAgICAgICAgV2ViS2l0IEVGTCBz
aG91bGQgYmUgZWxlbWVudGFyeSBpbmRlcGVuZGVudCwgYWxzbyBFbGVtZW50YXJ5IGNvcHkgYW5k
IHBhc3RlIEFQSSBuZWVkcyBhIFVJIHdpZGdldAorICAgICAgICBhcyBvbmUgb2YgaXRzIGFyZ3Vt
ZW50LiBUaHVzLCB3ZSBjYW5ub3QgaW1wbGVtZW50IHBhc3RlYm9hcmQgaW5zaWRlIFdlYkNvcmUg
bGlrZSBvdGhlciBwb3J0cywKKyAgICAgICAgYnV0IHRoZSBpbXBsZW1lbnRhdGlvbiBoYXMgdG8g
YmUgZG9uZSBvbiBhcHBsaWNhdGlvbiBzaWRlLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyAtIGFs
cmVhZHkgY292ZXJlZCBieSBleGlzdGluZyB0ZXN0cy4KKworICAgICAgICAqIGVkaXRpbmcvRWRp
dG9yLmg6CisgICAgICAgICogZWRpdGluZy9FZGl0b3JDb21tYW5kLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OmNyZWF0ZUNvbW1hbmRNYXApOgorICAgICAgICAqIGVkaXRpbmcvZWZsL0VkaXRvckVm
bC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OndyaXRlU2VsZWN0aW9uVG9QYXN0ZWJv
YXJkKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6d3JpdGVVUkxUb1Bhc3RlYm9hcmQpOgor
ICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpyZWFkUGxhaW5UZXh0RnJvbVBhc3RlYm9hcmQpOgor
ICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpwYXN0ZVdpdGhQYXN0ZWJvYXJkKToKKyAgICAgICAg
KFdlYkNvcmU6OkVkaXRvcjo6V2ViQ29udGVudFJlYWRlcjo6cmVhZFBsYWluVGV4dCk6CisgICAg
ICAgIChXZWJDb3JlOjpFZGl0b3I6OldlYkNvbnRlbnRSZWFkZXI6OnJlYWRIVE1MKToKKyAgICAg
ICAgKFdlYkNvcmU6OkVkaXRvcjo6d2ViQ29udGVudEZyb21QYXN0ZWJvYXJkKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9QYXN0ZWJvYXJkLmg6CisgICAgICAgICogcGxhdGZvcm0vUGFzdGVib2FyZFN0
cmF0ZWd5Lmg6CisgICAgICAgICogcGxhdGZvcm0vZWZsL0VmbFBhc3RlYm9hcmRVdGlsaXRpZXMu
aDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvZWRpdGluZy9lZmwvRWRpdG9yRWZsLmNwcC4K
KyAgICAgICAgKiBwbGF0Zm9ybS9lZmwvUGFzdGVib2FyZEVmbC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpQYXN0ZWJvYXJkOjpQYXN0ZWJvYXJkKToKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9h
cmQ6OndyaXRlUGxhaW5UZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OmNyZWF0
ZUZvckdsb2JhbFNlbGVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjpyZWFk
KToKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OndyaXRlKToKKwogMjAxMy0wOS0xMyAg
QW5kcmVhcyBLbGluZyAgPGFrbGluZ0BhcHBsZS5jb20+CiAKICAgICAgICAgW0NUVEVdIFJlbmRl
clNWR1RyYW5zZm9ybWFibGVDb250YWluZXIgaXMgbmV2ZXIgYW5vbnltb3VzLgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvRWRpdG9yLmgKaW5kZXggNDBmZDA2Yi4uYjE1NTBiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9FZGl0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRv
ci5oCkBAIC00MDMsNyArNDAzLDYgQEAgcHVibGljOgogICAgIFN0cmluZyBzdHJpbmdTZWxlY3Rp
b25Gb3JQYXN0ZWJvYXJkKCk7CiAgICAgU3RyaW5nIHN0cmluZ1NlbGVjdGlvbkZvclBhc3RlYm9h
cmRXaXRoSW1hZ2VBbHRUZXh0KCk7CiAgICAgUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGFT
ZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpOwotICAg
IFBhc3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gd2ViQ29udGVudEZyb21QYXN0ZWJvYXJkKFBh
c3RlYm9hcmQmLCBSYW5nZSYgY29udGV4dCwgYm9vbCBhbGxvd1BsYWluVGV4dCwgYm9vbCYgY2hv
c2VQbGFpblRleHQpOwogI2VuZGlmCiAKICNpZiBQTEFURk9STShNQUMpIHx8IFBMQVRGT1JNKEVG
TCkKQEAgLTQxMSw2ICs0MTAsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCB3cml0ZVVSTFRvUGFzdGVi
b2FyZChQYXN0ZWJvYXJkJiwgY29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYgdGl0bGUpOwogICAg
IHZvaWQgd3JpdGVJbWFnZVRvUGFzdGVib2FyZChQYXN0ZWJvYXJkJiwgRWxlbWVudCYgaW1hZ2VF
bGVtZW50LCBjb25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJiB0aXRsZSk7CiAgICAgU3RyaW5nIHJl
YWRQbGFpblRleHRGcm9tUGFzdGVib2FyZChQYXN0ZWJvYXJkJik7CisgICAgUGFzc1JlZlB0cjxE
b2N1bWVudEZyYWdtZW50PiB3ZWJDb250ZW50RnJvbVBhc3RlYm9hcmQoUGFzdGVib2FyZCYsIFJh
bmdlJiBjb250ZXh0LCBib29sIGFsbG93UGxhaW5UZXh0LCBib29sJiBjaG9zZVBsYWluVGV4dCk7
CiAjZW5kaWYKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
RWRpdG9yQ29tbWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvckNvbW1hbmQu
Y3BwCmluZGV4IDE2NzdjNDYuLjc5ZmUzMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvRWRpdG9yQ29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0
b3JDb21tYW5kLmNwcApAQCAtOTI1LDcgKzkyNSw3IEBAIHN0YXRpYyBib29sIGV4ZWN1dGVQYXN0
ZShGcmFtZSYgZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSBzb3VyY2UsIGNvbnN0
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLSNpZiBQTEFURk9STShHVEspIHx8IFBMQVRGT1JNKFFU
KQorI2lmIFBMQVRGT1JNKEdUSykgfHwgUExBVEZPUk0oUVQpIHx8IFBMQVRGT1JNKEVGTCkKIAog
c3RhdGljIGJvb2wgZXhlY3V0ZVBhc3RlR2xvYmFsU2VsZWN0aW9uKEZyYW1lJiBmcmFtZSwgRXZl
bnQqLCBFZGl0b3JDb21tYW5kU291cmNlIHNvdXJjZSwgY29uc3QgU3RyaW5nJikKIHsKQEAgLTE2
MDMsNyArMTYwMyw3IEBAIHN0YXRpYyBjb25zdCBDb21tYW5kTWFwJiBjcmVhdGVDb21tYW5kTWFw
KCkKICAgICAgICAgeyAiWWFuayIsIHsgZXhlY3V0ZVlhbmssIHN1cHBvcnRlZEZyb21NZW51T3JL
ZXlCaW5kaW5nLCBlbmFibGVkSW5FZGl0YWJsZVRleHQsIHN0YXRlTm9uZSwgdmFsdWVOdWxsLCBu
b3RUZXh0SW5zZXJ0aW9uLCBkb05vdEFsbG93RXhlY3V0aW9uV2hlbkRpc2FibGVkIH0gfSwKICAg
ICAgICAgeyAiWWFua0FuZFNlbGVjdCIsIHsgZXhlY3V0ZVlhbmtBbmRTZWxlY3QsIHN1cHBvcnRl
ZEZyb21NZW51T3JLZXlCaW5kaW5nLCBlbmFibGVkSW5FZGl0YWJsZVRleHQsIHN0YXRlTm9uZSwg
dmFsdWVOdWxsLCBub3RUZXh0SW5zZXJ0aW9uLCBkb05vdEFsbG93RXhlY3V0aW9uV2hlbkRpc2Fi
bGVkIH0gfSwKIAotI2lmIFBMQVRGT1JNKEdUSykgfHwgUExBVEZPUk0oUVQpCisjaWYgUExBVEZP
Uk0oR1RLKSB8fCBQTEFURk9STShRVCkgfHwgUExBVEZPUk0oRUZMKQogICAgICAgICB7ICJQYXN0
ZUdsb2JhbFNlbGVjdGlvbiIsIHsgZXhlY3V0ZVBhc3RlR2xvYmFsU2VsZWN0aW9uLCBzdXBwb3J0
ZWRGcm9tTWVudU9yS2V5QmluZGluZywgZW5hYmxlZFBhc3RlLCBzdGF0ZU5vbmUsIHZhbHVlTnVs
bCwgbm90VGV4dEluc2VydGlvbiwgYWxsb3dFeGVjdXRpb25XaGVuRGlzYWJsZWQgfSB9LAogI2Vu
ZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvZWZsL0VkaXRvckVmbC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2VmbC9FZGl0b3JFZmwuY3BwCmluZGV4IDA2MDA1
N2MuLmRlNGRmOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvZWZsL0VkaXRv
ckVmbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9lZmwvRWRpdG9yRWZsLmNwcApA
QCAtMjcsMTkgKzI3LDI4IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiRWRpdG9y
LmgiCiAKKyNpbmNsdWRlICJEb2N1bWVudEZyYWdtZW50LmgiCisjaW5jbHVkZSAiRnJhbWUuaCIK
ICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgogI2luY2x1ZGUgIlBhc3RlYm9hcmQuaCIKKyNp
bmNsdWRlICJtYXJrdXAuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi12b2lkIEVkaXRvcjo6
d3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoUGFzdGVib2FyZCYpCit2b2lkIEVkaXRvcjo6d3Jp
dGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoUGFzdGVib2FyZCYgcGFzdGVib2FyZCkKIHsKLSAgICBu
b3RJbXBsZW1lbnRlZCgpOworICAgIFBhc3RlYm9hcmRXZWJDb250ZW50IHBhc3RlYm9hcmRXZWJD
b250ZW50OworICAgIHBhc3RlYm9hcmRXZWJDb250ZW50LmRhdGFJblN0cmluZ0Zvcm1hdCA9IGNy
ZWF0ZU1hcmt1cChzZWxlY3RlZFJhbmdlKCkuZ2V0KCksIDAsIEFubm90YXRlRm9ySW50ZXJjaGFu
Z2UsIGZhbHNlLCBSZXNvbHZlTm9uTG9jYWxVUkxzKTsKKworICAgIHBhc3RlYm9hcmQud3JpdGUo
cGFzdGVib2FyZFdlYkNvbnRlbnQpOwogfQogCi12b2lkIEVkaXRvcjo6d3JpdGVVUkxUb1Bhc3Rl
Ym9hcmQoUGFzdGVib2FyZCYsIGNvbnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmKQordm9pZCBFZGl0
b3I6OndyaXRlVVJMVG9QYXN0ZWJvYXJkKFBhc3RlYm9hcmQmIHBhc3RlYm9hcmQsIGNvbnN0IEtV
UkwmIHVybCwgY29uc3QgU3RyaW5nJikKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIFBh
c3RlYm9hcmRVUkwgcGFzdGVib2FyZFVSTDsKKyAgICBwYXN0ZWJvYXJkVVJMLnVybCA9IHVybDsK
KworICAgIHBhc3RlYm9hcmQud3JpdGUocGFzdGVib2FyZFVSTCk7CiB9CiAKIHZvaWQgRWRpdG9y
Ojp3cml0ZUltYWdlVG9QYXN0ZWJvYXJkKFBhc3RlYm9hcmQmLCBFbGVtZW50JiwgY29uc3QgS1VS
TCYsIGNvbnN0IFN0cmluZyYpCkBAIC00NywxNSArNTYsNzIgQEAgdm9pZCBFZGl0b3I6OndyaXRl
SW1hZ2VUb1Bhc3RlYm9hcmQoUGFzdGVib2FyZCYsIEVsZW1lbnQmLCBjb25zdCBLVVJMJiwgY29u
c3QgU3QKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCi1TdHJpbmcgRWRpdG9yOjpyZWFkUGxh
aW5UZXh0RnJvbVBhc3RlYm9hcmQoUGFzdGVib2FyZCYpCitTdHJpbmcgRWRpdG9yOjpyZWFkUGxh
aW5UZXh0RnJvbVBhc3RlYm9hcmQoUGFzdGVib2FyZCYgcGFzdGVib2FyZCkKIHsKLSAgICBub3RJ
bXBsZW1lbnRlZCgpOwotICAgIHJldHVybiBTdHJpbmcoKTsKKyAgICBQYXN0ZWJvYXJkUGxhaW5U
ZXh0IHBhc3RlYm9hcmRQbGFpblRleHQ7CisgICAgcGFzdGVib2FyZC5yZWFkKHBhc3RlYm9hcmRQ
bGFpblRleHQpOworCisgICAgcmV0dXJuIHBhc3RlYm9hcmRQbGFpblRleHQudGV4dDsKIH0KIAot
dm9pZCBFZGl0b3I6OnBhc3RlV2l0aFBhc3RlYm9hcmQoUGFzdGVib2FyZCosIGJvb2wpCit2b2lk
IEVkaXRvcjo6cGFzdGVXaXRoUGFzdGVib2FyZChQYXN0ZWJvYXJkKiBwYXN0ZWJvYXJkLCBib29s
IGFsbG93UGxhaW5UZXh0KQogewotICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgUmVmUHRyPFJh
bmdlPiByYW5nZSA9IHNlbGVjdGVkUmFuZ2UoKTsKKworICAgIGJvb2wgY2hvc2VQbGFpblRleHQ7
CisgICAgUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGZyYWdtZW50ID0gd2ViQ29udGVudEZyb21Q
YXN0ZWJvYXJkKCpwYXN0ZWJvYXJkLCAqcmFuZ2UsIGFsbG93UGxhaW5UZXh0LCBjaG9zZVBsYWlu
VGV4dCk7CisKKyAgICBpZiAoZnJhZ21lbnQgJiYgc2hvdWxkSW5zZXJ0RnJhZ21lbnQoZnJhZ21l
bnQsIHJhbmdlLCBFZGl0b3JJbnNlcnRBY3Rpb25QYXN0ZWQpKQorICAgICAgICBwYXN0ZUFzRnJh
Z21lbnQoZnJhZ21lbnQsIGNhblNtYXJ0UmVwbGFjZVdpdGhQYXN0ZWJvYXJkKHBhc3RlYm9hcmQp
LCBmYWxzZSk7Cit9CisKK2NsYXNzIEVkaXRvcjo6V2ViQ29udGVudFJlYWRlciBGSU5BTCA6IHB1
YmxpYyBQYXN0ZWJvYXJkV2ViQ29udGVudFJlYWRlciB7CitwdWJsaWM6CisgICAgRnJhbWUmIGZy
YW1lOworICAgIFJhbmdlJiBjb250ZXh0OworICAgIGNvbnN0IGJvb2wgYWxsb3dQbGFpblRleHQ7
CisKKyAgICBSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gZnJhZ21lbnQ7CisgICAgYm9vbCBtYWRl
RnJhZ21lbnRGcm9tUGxhaW5UZXh0OworCisgICAgV2ViQ29udGVudFJlYWRlcihGcmFtZSYgZnJh
bWUsIFJhbmdlJiBjb250ZXh0LCBib29sIGFsbG93UGxhaW5UZXh0KQorICAgICAgICA6IGZyYW1l
KGZyYW1lKQorICAgICAgICAsIGNvbnRleHQoY29udGV4dCkKKyAgICAgICAgLCBhbGxvd1BsYWlu
VGV4dChhbGxvd1BsYWluVGV4dCkKKyAgICAgICAgLCBtYWRlRnJhZ21lbnRGcm9tUGxhaW5UZXh0
KGZhbHNlKQorICAgIHsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgdmlydHVhbCBib29sIHJlYWRI
VE1MKGNvbnN0IFN0cmluZyYpIE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9vbCByZWFkUGxhaW5U
ZXh0KGNvbnN0IFN0cmluZyYpIE9WRVJSSURFOworfTsKKworYm9vbCBFZGl0b3I6OldlYkNvbnRl
bnRSZWFkZXI6OnJlYWRQbGFpblRleHQoY29uc3QgU3RyaW5nJiB0ZXh0KQoreworICAgIGlmICgh
YWxsb3dQbGFpblRleHQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGZyYWdtZW50ID0g
Y3JlYXRlRnJhZ21lbnRGcm9tVGV4dCgmY29udGV4dCwgdGV4dCk7CisgICAgaWYgKCFmcmFnbWVu
dCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgbWFkZUZyYWdtZW50RnJvbVBsYWluVGV4
dCA9IHRydWU7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgRWRpdG9yOjpXZWJDb250ZW50
UmVhZGVyOjpyZWFkSFRNTChjb25zdCBTdHJpbmcmIHN0cmluZykKK3sKKyAgICBmcmFnbWVudCA9
IGNyZWF0ZUZyYWdtZW50RnJvbU1hcmt1cChmcmFtZS5kb2N1bWVudCgpLCBzdHJpbmcsIGVtcHR5
U3RyaW5nKCksIERpc2FsbG93U2NyaXB0aW5nQW5kUGx1Z2luQ29udGVudCk7CisgICAgcmV0dXJu
IGZyYWdtZW50OworfQorCitQYXNzUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IEVkaXRvcjo6d2Vi
Q29udGVudEZyb21QYXN0ZWJvYXJkKFBhc3RlYm9hcmQmIHBhc3RlYm9hcmQsIFJhbmdlJiBjb250
ZXh0LCBib29sIGFsbG93UGxhaW5UZXh0LCBib29sJiBjaG9zZVBsYWluVGV4dCkKK3sKKyAgICBX
ZWJDb250ZW50UmVhZGVyIHJlYWRlcihtX2ZyYW1lLCBjb250ZXh0LCBhbGxvd1BsYWluVGV4dCk7
CisgICAgcGFzdGVib2FyZC5yZWFkKHJlYWRlcik7CisgICAgY2hvc2VQbGFpblRleHQgPSByZWFk
ZXIubWFkZUZyYWdtZW50RnJvbVBsYWluVGV4dDsKKyAgICByZXR1cm4gcmVhZGVyLmZyYWdtZW50
LnJlbGVhc2UoKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vUGFzdGVib2FyZC5oCmluZGV4IDg0YjZlMWEuLmY1MGZjZTc5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vUGFzdGVib2FyZC5oCkBAIC03NiwxMCArNzYsMTMgQEAgc3RydWN0IFBhc3RlYm9hcmRX
ZWJDb250ZW50IHsKICAgICBWZWN0b3I8U3RyaW5nPiBjbGllbnRUeXBlczsKICAgICBWZWN0b3I8
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+IGNsaWVudERhdGE7CiAjZW5kaWYKKyNpZiBQTEFURk9STShF
RkwpCisgICAgU3RyaW5nIGRhdGFJblN0cmluZ0Zvcm1hdDsKKyNlbmRpZgogfTsKIAogc3RydWN0
IFBhc3RlYm9hcmRVUkwgewotI2lmICEoUExBVEZPUk0oRUZMKSB8fCBQTEFURk9STShHVEspIHx8
IFBMQVRGT1JNKElPUykgfHwgUExBVEZPUk0oUVQpIHx8IFBMQVRGT1JNKFdJTikpCisjaWYgIShQ
TEFURk9STShHVEspIHx8IFBMQVRGT1JNKElPUykgfHwgUExBVEZPUk0oUVQpIHx8IFBMQVRGT1JN
KFdJTikpCiAgICAgS1VSTCB1cmw7CiAgICAgU3RyaW5nIHRpdGxlOwogICAgIFN0cmluZyB1c2Vy
VmlzaWJsZUZvcm07CkBAIC0xMDYsMTIgKzEwOSwxNCBAQCBwdWJsaWM6CiAjaWYgIShQTEFURk9S
TShFRkwpIHx8IFBMQVRGT1JNKEdUSykgfHwgUExBVEZPUk0oSU9TKSB8fCBQTEFURk9STShRVCkg
fHwgUExBVEZPUk0oV0lOKSkKICAgICB2aXJ0dWFsIGJvb2wgcmVhZFdlYkFyY2hpdmUoUGFzc1Jl
ZlB0cjxTaGFyZWRCdWZmZXI+KSA9IDA7CiAgICAgdmlydHVhbCBib29sIHJlYWRGaWxlbmFtZXMo
Y29uc3QgVmVjdG9yPFN0cmluZz4mKSA9IDA7Ci0gICAgdmlydHVhbCBib29sIHJlYWRIVE1MKGNv
bnN0IFN0cmluZyYpID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgcmVhZFJURkQoUGFzc1JlZlB0cjxT
aGFyZWRCdWZmZXI+KSA9IDA7CiAgICAgdmlydHVhbCBib29sIHJlYWRSVEYoUGFzc1JlZlB0cjxT
aGFyZWRCdWZmZXI+KSA9IDA7CiAgICAgdmlydHVhbCBib29sIHJlYWRJbWFnZShQYXNzUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4sIGNvbnN0IFN0cmluZyYgdHlwZSkgPSAwOwogICAgIHZpcnR1YWwgYm9v
bCByZWFkVVJMKGNvbnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmIHRpdGxlKSA9IDA7CiAjZW5kaWYK
KyNpZiBQTEFURk9STShNQUMpIHx8IFBMQVRGT1JNKEVGTCkKKyAgICB2aXJ0dWFsIGJvb2wgcmVh
ZEhUTUwoY29uc3QgU3RyaW5nJikgPSAwOworI2VuZGlmCiAgICAgdmlydHVhbCBib29sIHJlYWRQ
bGFpblRleHQoY29uc3QgU3RyaW5nJikgPSAwOwogfTsKIApAQCAtMTgyLDcgKzE4Nyw3IEBAIHB1
YmxpYzoKICAgICBQYXNzUmVmUHRyPERhdGFPYmplY3RHdGs+IGRhdGFPYmplY3QoKSBjb25zdDsK
ICNlbmRpZgogCi0jaWYgUExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShRVCkKKyNpZiBQTEFURk9S
TShHVEspIHx8IFBMQVRGT1JNKFFUKSB8fCBQTEFURk9STShFRkwpCiAgICAgc3RhdGljIFBhc3NP
d25QdHI8UGFzdGVib2FyZD4gY3JlYXRlRm9yR2xvYmFsU2VsZWN0aW9uKCk7CiAjZW5kaWYKIApA
QCAtMjY0LDcgKzI2OSw2IEBAIHByaXZhdGU6CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKFFUKQot
ICAgIGJvb2wgbV9zZWxlY3Rpb25Nb2RlOwogICAgIGNvbnN0IFFNaW1lRGF0YSogbV9yZWFkYWJs
ZURhdGE7CiAgICAgbXV0YWJsZSBRTWltZURhdGEqIG1fd3JpdGFibGVEYXRhOwogICAgIGJvb2wg
bV9pc0ZvckRyYWdBbmREcm9wOwpAQCAtMjc2LDYgKzI4MCwxMCBAQCBwcml2YXRlOgogICAgIENP
TVB0cjxXQ0RhdGFPYmplY3Q+IG1fd3JpdGFibGVEYXRhT2JqZWN0OwogICAgIERyYWdEYXRhTWFw
IG1fZHJhZ0RhdGFNYXA7CiAjZW5kaWYKKworI2lmIFBMQVRGT1JNKFFUKSB8fCBQTEFURk9STShF
RkwpCisgICAgYm9vbCBtX3NlbGVjdGlvbk1vZGU7CisjZW5kaWYKIH07CiAKICNpZiBQTEFURk9S
TShJT1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkU3Ry
YXRlZ3kuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRTdHJhdGVneS5oCmlu
ZGV4IDE4NzI2NGMuLjU1Y2EzYTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1Bhc3RlYm9hcmRTdHJhdGVneS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3Rl
Ym9hcmRTdHJhdGVneS5oCkBAIC00Miw3ICs0Miw2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZv
aWQgZ2V0VHlwZXMoVmVjdG9yPFN0cmluZz4mIHR5cGVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmROYW1lKSA9IDA7CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVy
Rm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGdldFBhdGhuYW1lc0ZvclR5cGUoVmVj
dG9yPFN0cmluZz4mIHBhdGhuYW1lcywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgPSAwOwotICAgIHZpcnR1YWwgU3RyaW5nIHN0cmlu
Z0ZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkTmFtZSkgPSAwOwogICAgIHZpcnR1YWwgbG9uZyBjaGFuZ2VDb3VudChjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lKSA9IDA7CiAgICAgdmlydHVhbCBTdHJpbmcgdW5pcXVlTmFtZSgp
ID0gMDsKICAgICB2aXJ0dWFsIENvbG9yIGNvbG9yKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUpID0gMDsKQEAgLTU1LDYgKzU0LDEyIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGxvbmcgc2V0
UGF0aG5hbWVzRm9yVHlwZShjb25zdCBWZWN0b3I8U3RyaW5nPiYsIGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpID0gMDsKICAgICB2aXJ0
dWFsIGxvbmcgc2V0U3RyaW5nRm9yVHlwZShjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSA9IDA7CiAjZW5kaWYK
KyNpZiBQTEFURk9STShNQUMpIHx8IFBMQVRGT1JNKEVGTCkKKyAgICB2aXJ0dWFsIFN0cmluZyBz
dHJpbmdGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZE5hbWUpID0gMDsKKyNlbmRpZgorI2lmIFBMQVRGT1JNKEVGTCkKKyAgICB2aXJ0
dWFsIHZvaWQgc2V0U3RyaW5nRm9yVHlwZShjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSA9IDA7CisjZW5kaWYK
IHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIH5QYXN0ZWJvYXJkU3RyYXRlZ3koKQogICAgIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9FZmxQYXN0ZWJvYXJkVXRpbGl0
aWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvRWZsUGFzdGVib2FyZFV0aWxpdGll
cy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIwMGUxNDEKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvRWZsUGFzdGVib2FyZFV0aWxp
dGllcy5oCkBAIC0wLDAgKzEsNDIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgU2Ftc3Vu
ZyBFbGVjdHJvbmljcworICoKKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisg
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRl
ZiBFZmxQYXN0ZWJvYXJkVXRpbGl0aWVzX2gKKyNkZWZpbmUgRWZsUGFzdGVib2FyZFV0aWxpdGll
c19oCisKKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCitjb25zdCBTdHJpbmcgc2VsZWN0aW9uRm9ybWF0VGV4dCA9IEFTQ0lJTGl0ZXJhbCgi
VGV4dCIpOworY29uc3QgU3RyaW5nIHNlbGVjdGlvbkZvcm1hdE1hcmt1cCA9IEFTQ0lJTGl0ZXJh
bCgiTWFya3VwIik7Citjb25zdCBTdHJpbmcgc2VsZWN0aW9uVHlwZVByaW1hcnkgPSBBU0NJSUxp
dGVyYWwoIlByaW1hcnkiKTsKK2NvbnN0IFN0cmluZyBzZWxlY3Rpb25UeXBlQ2xpcGJvYXJkID0g
QVNDSUlMaXRlcmFsKCJDbGlwYm9hcmQiKTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisj
ZW5kaWYgLy8gRWZsUGFzdGVib2FyZFV0aWxpdGllc19oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9lZmwvUGFzdGVib2FyZEVmbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9lZmwvUGFzdGVib2FyZEVmbC5jcHAKaW5kZXggYzg0ZDdlMS4uNWM4OTdlMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZsL1Bhc3RlYm9hcmRFZmwuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9QYXN0ZWJvYXJkRWZsLmNwcApAQCAtMjMsMTgg
KzIzLDI1IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiUGFzdGVib2FyZC5oIgog
CisjaW5jbHVkZSAiRWZsUGFzdGVib2FyZFV0aWxpdGllcy5oIgorI2luY2x1ZGUgIktVUkwuaCIK
ICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgorI2luY2x1ZGUgIlBhc3RlYm9hcmRTdHJhdGVn
eS5oIgorI2luY2x1ZGUgIlBsYXRmb3JtU3RyYXRlZ2llcy5oIgogI2luY2x1ZGUgPHd0Zi9QYXNz
T3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgorI2luY2x1ZGUgPHd0Zi90
ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFBhc3RlYm9hcmQ6OlBh
c3RlYm9hcmQoKQorICAgIDogbV9zZWxlY3Rpb25Nb2RlKGZhbHNlKQogewogfQogCi12b2lkIFBh
c3RlYm9hcmQ6OndyaXRlUGxhaW5UZXh0KGNvbnN0IFN0cmluZyYsIFNtYXJ0UmVwbGFjZU9wdGlv
bikKK3ZvaWQgUGFzdGVib2FyZDo6d3JpdGVQbGFpblRleHQoY29uc3QgU3RyaW5nJiB0ZXh0LCBT
bWFydFJlcGxhY2VPcHRpb24pCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBwbGF0Zm9y
bVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPnNldFN0cmluZ0ZvclR5cGUodGV4
dCwgc2VsZWN0aW9uRm9ybWF0VGV4dCwgbV9zZWxlY3Rpb25Nb2RlID8gc2VsZWN0aW9uVHlwZVBy
aW1hcnkgOiBzZWxlY3Rpb25UeXBlQ2xpcGJvYXJkKTsKIH0KIAogdm9pZCBQYXN0ZWJvYXJkOjpj
bGVhcigpCkBAIC01Myw2ICs2MCwxMyBAQCBQYXNzT3duUHRyPFBhc3RlYm9hcmQ+IFBhc3RlYm9h
cmQ6OmNyZWF0ZUZvckNvcHlBbmRQYXN0ZSgpCiAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBQYXN0
ZWJvYXJkKTsKIH0KIAorUGFzc093blB0cjxQYXN0ZWJvYXJkPiBQYXN0ZWJvYXJkOjpjcmVhdGVG
b3JHbG9iYWxTZWxlY3Rpb24oKQoreworICAgIE93blB0cjxQYXN0ZWJvYXJkPiBwYXN0ZWJvYXJk
ID0gY3JlYXRlRm9yQ29weUFuZFBhc3RlKCk7CisgICAgcGFzdGVib2FyZC0+bV9zZWxlY3Rpb25N
b2RlID0gdHJ1ZTsKKyAgICByZXR1cm4gcGFzdGVib2FyZC5yZWxlYXNlKCk7Cit9CisKIFBhc3NP
d25QdHI8UGFzdGVib2FyZD4gUGFzdGVib2FyZDo6Y3JlYXRlUHJpdmF0ZSgpCiB7CiAgICAgcmV0
dXJuIGNyZWF0ZUZvckNvcHlBbmRQYXN0ZSgpOwpAQCAtMTE3LDQgKzEzMSwzMiBAQCB2b2lkIFBh
c3RlYm9hcmQ6OndyaXRlUGFzdGVib2FyZChjb25zdCBQYXN0ZWJvYXJkJikKICAgICBub3RJbXBs
ZW1lbnRlZCgpOwogfQogCit2b2lkIFBhc3RlYm9hcmQ6OnJlYWQoUGFzdGVib2FyZFBsYWluVGV4
dCYgcGFzdGVib2FyZFBsYWluVGV4dCkKK3sKKyAgICBwYXN0ZWJvYXJkUGxhaW5UZXh0LnRleHQg
PSBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPnN0cmluZ0ZvclR5
cGUoc2VsZWN0aW9uRm9ybWF0VGV4dCwgbV9zZWxlY3Rpb25Nb2RlID8gc2VsZWN0aW9uVHlwZVBy
aW1hcnkgOiBzZWxlY3Rpb25UeXBlQ2xpcGJvYXJkKTsKK30KKwordm9pZCBQYXN0ZWJvYXJkOjpy
ZWFkKFBhc3RlYm9hcmRXZWJDb250ZW50UmVhZGVyJiBwYXN0ZWJvYXJkQ29udGVudFJlYWRlcikK
K3sKKyAgICBTdHJpbmcgc3RyaW5nID0gcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRT
dHJhdGVneSgpLT5zdHJpbmdGb3JUeXBlKHNlbGVjdGlvbkZvcm1hdE1hcmt1cCwgbV9zZWxlY3Rp
b25Nb2RlID8gc2VsZWN0aW9uVHlwZVByaW1hcnkgOiBzZWxlY3Rpb25UeXBlQ2xpcGJvYXJkKTsK
KworICAgIGlmIChwYXN0ZWJvYXJkQ29udGVudFJlYWRlci5yZWFkSFRNTChzdHJpbmcpKQorICAg
ICAgICByZXR1cm47CisKKyAgICBwYXN0ZWJvYXJkQ29udGVudFJlYWRlci5yZWFkUGxhaW5UZXh0
KHN0cmluZyk7Cit9CisKK3ZvaWQgUGFzdGVib2FyZDo6d3JpdGUoY29uc3QgUGFzdGVib2FyZFVS
TCYgcGFzdGVib2FyZFVybCkKK3sKKyAgICBpZiAocGFzdGVib2FyZFVybC51cmwuaXNFbXB0eSgp
KQorICAgICAgICByZXR1cm47CisKKyAgICBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2Fy
ZFN0cmF0ZWd5KCktPnNldFN0cmluZ0ZvclR5cGUocGFzdGVib2FyZFVybC51cmwuc3RyaW5nKCks
IHNlbGVjdGlvbkZvcm1hdFRleHQsIG1fc2VsZWN0aW9uTW9kZSA/IHNlbGVjdGlvblR5cGVQcmlt
YXJ5IDogc2VsZWN0aW9uVHlwZUNsaXBib2FyZCk7Cit9CisKK3ZvaWQgUGFzdGVib2FyZDo6d3Jp
dGUoY29uc3QgUGFzdGVib2FyZFdlYkNvbnRlbnQmIHBhc3RlYm9hcmRDb250ZW50KQoreworICAg
IHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+c2V0U3RyaW5nRm9y
VHlwZShwYXN0ZWJvYXJkQ29udGVudC5kYXRhSW5TdHJpbmdGb3JtYXQsIHNlbGVjdGlvbkZvcm1h
dE1hcmt1cCwgbV9zZWxlY3Rpb25Nb2RlID8gc2VsZWN0aW9uVHlwZVByaW1hcnkgOiBzZWxlY3Rp
b25UeXBlQ2xpcGJvYXJkKTsKK30KKwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCmluZGV4IDY3NGUwZTkuLmJj
N2M0ZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMSBAQAorMjAxMy0wOS0xMyAgTWlj
aGHFgiBQYWt1xYJhIHZlbCBSdXRrYSAgPG0ucGFrdWxhQHNhbXN1bmcuY29tPgorCisgICAgICAg
IFtFRkxdW1dLMl0gSW1wbGVtZW50YXRpb24gb2YgcGFzdGVib2FyZAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAyNDg0CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRUZMIGRvZXMgbm90IHByb3ZpZGUgcGxh
dGZvcm0td2lkZSBjb3B5IGFuZCBwYXN0ZSBzdXBwb3J0LCBidXQgYW4gQVBJIGluIFVJIHRvb2xr
aXQgLSBFbGVtZW50YXJ5LgorICAgICAgICBXZWJLaXQgRUZMIHNob3VsZCBiZSBlbGVtZW50YXJ5
IGluZGVwZW5kZW50LCBhbHNvIEVsZW1lbnRhcnkgY29weSBhbmQgcGFzdGUgQVBJIG5lZWRzIGEg
VUkgd2lkZ2V0CisgICAgICAgIGFzIG9uZSBvZiBpdHMgYXJndW1lbnQuIFRodXMsIHdlIGNhbm5v
dCBpbXBsZW1lbnQgcGFzdGVib2FyZCBpbnNpZGUgV2ViQ29yZSBsaWtlIG90aGVyIHBvcnRzLAor
ICAgICAgICBidXQgdGhlIGltcGxlbWVudGF0aW9uIGhhcyB0byBiZSBkb25lIG9uIGFwcGxpY2F0
aW9uIHNpZGUuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9QbGF0Zm9ybVN0cmF0ZWdpZXNF
ZmwuY3BwOgorICAgICAgICAoUGxhdGZvcm1TdHJhdGVnaWVzRWZsOjpjcmVhdGVQYXN0ZWJvYXJk
U3RyYXRlZ3kpOgorICAgICAgICAoUGxhdGZvcm1TdHJhdGVnaWVzRWZsOjpzZXRTdHJpbmdGb3JU
eXBlKToKKyAgICAgICAgKFBsYXRmb3JtU3RyYXRlZ2llc0VmbDo6c3RyaW5nRm9yVHlwZSk6Cisg
ICAgICAgICogV2ViQ29yZVN1cHBvcnQvUGxhdGZvcm1TdHJhdGVnaWVzRWZsLmg6CisKIDIwMTMt
MDktMTIgIE1pa2hhaWwgUG96ZG55YWtvdiAgPG1pa2hhaWwucG96ZG55YWtvdkBpbnRlbC5jb20+
CiAKICAgICAgICAgUmVtb3ZlIGhvbWUtYnJld2VkIG51bGxwdHIKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L1BsYXRmb3JtU3RyYXRlZ2llc0VmbC5jcHAgYi9T
b3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9QbGF0Zm9ybVN0cmF0ZWdpZXNFZmwuY3Bw
CmluZGV4IDQ5YWEzNTcuLjYwMWY3NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL1dl
YkNvcmVTdXBwb3J0L1BsYXRmb3JtU3RyYXRlZ2llc0VmbC5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9lZmwvV2ViQ29yZVN1cHBvcnQvUGxhdGZvcm1TdHJhdGVnaWVzRWZsLmNwcApAQCAtNjIsOCAr
NjIsNyBAQCBMb2FkZXJTdHJhdGVneSogUGxhdGZvcm1TdHJhdGVnaWVzRWZsOjpjcmVhdGVMb2Fk
ZXJTdHJhdGVneSgpCiAKIFBhc3RlYm9hcmRTdHJhdGVneSogUGxhdGZvcm1TdHJhdGVnaWVzRWZs
OjpjcmVhdGVQYXN0ZWJvYXJkU3RyYXRlZ3koKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0g
ICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIHRoaXM7CiB9CiAKIFBsdWdpblN0cmF0ZWd5KiBQbGF0
Zm9ybVN0cmF0ZWdpZXNFZmw6OmNyZWF0ZVBsdWdpblN0cmF0ZWd5KCkKQEAgLTE2NywzICsxNjYs
MTUgQEAgdm9pZCBQbGF0Zm9ybVN0cmF0ZWdpZXNFZmw6OmFkZFZpc2l0ZWRMaW5rKFBhZ2UqIHBh
Z2UsIExpbmtIYXNoIGhhc2gpCiB7CiAgICAgcGFnZS0+Z3JvdXAoKS5hZGRWaXNpdGVkTGlua0hh
c2goaGFzaCk7CiB9CisKKy8vIFBhc3RlYm9hcmRTdHJhdGVneQordm9pZCBQbGF0Zm9ybVN0cmF0
ZWdpZXNFZmw6OnNldFN0cmluZ0ZvclR5cGUoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwg
Y29uc3QgU3RyaW5nJikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCitTdHJpbmcgUGxh
dGZvcm1TdHJhdGVnaWVzRWZsOjpzdHJpbmdGb3JUeXBlKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0
cmluZyYpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gU3RyaW5nKCk7Cit9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9QbGF0Zm9ybVN0
cmF0ZWdpZXNFZmwuaCBiL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L1BsYXRmb3Jt
U3RyYXRlZ2llc0VmbC5oCmluZGV4IDc0NzBjMmMuLmFhZjE3MGEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L1BsYXRmb3JtU3RyYXRlZ2llc0VmbC5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L1BsYXRmb3JtU3RyYXRlZ2llc0VmbC5o
CkBAIC0zMCw3ICszMCw3IEBACiAjaW5jbHVkZSAiU3RvcmFnZVN0cmF0ZWd5LmgiCiAjaW5jbHVk
ZSAiVmlzaXRlZExpbmtTdHJhdGVneS5oIgogCi1jbGFzcyBQbGF0Zm9ybVN0cmF0ZWdpZXNFZmwg
OiBwdWJsaWMgV2ViQ29yZTo6UGxhdGZvcm1TdHJhdGVnaWVzLCBwcml2YXRlIFdlYkNvcmU6OkNv
b2tpZXNTdHJhdGVneSwgcHJpdmF0ZSBXZWJDb3JlOjpEYXRhYmFzZVN0cmF0ZWd5LCBwcml2YXRl
IFdlYkNvcmU6OkxvYWRlclN0cmF0ZWd5LCBwcml2YXRlIFdlYkNvcmU6OlBsdWdpblN0cmF0ZWd5
LCBwcml2YXRlIFdlYkNvcmU6OlNoYXJlZFdvcmtlclN0cmF0ZWd5LCBwcml2YXRlIFdlYkNvcmU6
OlN0b3JhZ2VTdHJhdGVneSwgcHJpdmF0ZSBXZWJDb3JlOjpWaXNpdGVkTGlua1N0cmF0ZWd5IHsK
K2NsYXNzIFBsYXRmb3JtU3RyYXRlZ2llc0VmbCA6IHB1YmxpYyBXZWJDb3JlOjpQbGF0Zm9ybVN0
cmF0ZWdpZXMsIHByaXZhdGUgV2ViQ29yZTo6Q29va2llc1N0cmF0ZWd5LCBwcml2YXRlIFdlYkNv
cmU6OkRhdGFiYXNlU3RyYXRlZ3ksIHByaXZhdGUgV2ViQ29yZTo6TG9hZGVyU3RyYXRlZ3ksIHBy
aXZhdGUgV2ViQ29yZTo6UGx1Z2luU3RyYXRlZ3ksIHByaXZhdGUgV2ViQ29yZTo6U2hhcmVkV29y
a2VyU3RyYXRlZ3ksIHByaXZhdGUgV2ViQ29yZTo6U3RvcmFnZVN0cmF0ZWd5LCBwcml2YXRlIFdl
YkNvcmU6OlZpc2l0ZWRMaW5rU3RyYXRlZ3ksIHByaXZhdGUgV2ViQ29yZTo6UGFzdGVib2FyZFN0
cmF0ZWd5IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgdm9pZCBpbml0aWFsaXplKCk7CiAKQEAgLTY1
LDYgKzY1LDEwIEBAIHByaXZhdGU6CiAgICAgLy8gV2ViQ29yZTo6VmlzaXRlZExpbmtTdHJhdGVn
eQogICAgIHZpcnR1YWwgYm9vbCBpc0xpbmtWaXNpdGVkKFdlYkNvcmU6OlBhZ2UqLCBXZWJDb3Jl
OjpMaW5rSGFzaCwgY29uc3QgV2ViQ29yZTo6S1VSTCYgYmFzZVVSTCwgY29uc3QgV1RGOjpBdG9t
aWNTdHJpbmcmIGF0dHJpYnV0ZVVSTCk7CiAgICAgdmlydHVhbCB2b2lkIGFkZFZpc2l0ZWRMaW5r
KFdlYkNvcmU6OlBhZ2UqLCBXZWJDb3JlOjpMaW5rSGFzaCk7CisKKyAgICAvLyBXZWJDb3JlOjpQ
YXN0ZWJvYXJkU3RyYXRlZ3kKKyAgICB2aXJ0dWFsIFN0cmluZyBzdHJpbmdGb3JUeXBlKGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpOwor
ICAgIHZpcnR1YWwgdm9pZCBzZXRTdHJpbmdGb3JUeXBlKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpOwogfTsK
IAogI2VuZGlmIC8vIFBsYXRmb3JtU3RyYXRlZ2llc0VmbF9oCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggNWU2NzUz
YS4uMmM0YWZhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDEzLTA5LTEzICBNaWNo
YcWCIFBha3XFgmEgdmVsIFJ1dGthICA8bS5wYWt1bGFAc2Ftc3VuZy5jb20+CisKKyAgICAgICAg
W0VGTF1bV0syXSBJbXBsZW1lbnRhdGlvbiBvZiBwYXN0ZWJvYXJkCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDI0ODQKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIGlzIGFuIGluaXRpYWwgYXBwcm9h
Y2ggdG8gUGFzdGVib2FyZCBpbXBsZW1lbnRhdGlvbiBpbiBXZWJLaXQyLAorICAgICAgICBmb2N1
c2luZyBvbiBiYXNpYyBjb3B5IGFuZCBwYXN0ZSBmZWF0dXJlcy4gSXQgcGFzc2VzcyBkYXRhIGFs
b25nIHdpdGggZGF0YQorICAgICAgICB0eXBlIGZyb20gV2ViQ29yZSB0byBXS0NvbnRleHRQYXN0
ZWJvYXJkQ2xpZW50LgorCisgICAgICAgICogVUlQcm9jZXNzL1dlYkNvbnRleHQuaDoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvV2ViQ29udGV4dC5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBVSVByb2Nl
c3MvZWZsL1dlYkNvbnRleHRFZmwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0Ojpn
ZXRQYXN0ZWJvYXJkU3RyaW5nRm9yVHlwZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHQ6
OnNldFBhc3RlYm9hcmRTdHJpbmdGb3JUeXBlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkVkaXRv
ckNsaWVudDo6cmVzcG9uZFRvQ2hhbmdlZFNlbGVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6Oldl
YkVkaXRvckNsaWVudDo6dXBkYXRlR2xvYmFsU2VsZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6
V2ViRWRpdG9yQ2xpZW50OjpzdXBwb3J0c0dsb2JhbFNlbGVjdGlvbik6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaDoKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYlBsYXRmb3JtU3RyYXRlZ2llczo6c2V0UGF0aG5hbWVzRm9yVHlwZSk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBsYXRmb3JtU3RyYXRlZ2llczo6c3RyaW5nRm9yVHlwZSk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBsYXRmb3JtU3RyYXRlZ2llczo6c2V0U3RyaW5nRm9yVHlwZSk6
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXMuaDoKKwogMjAxMy0wOS0xMyAgQWxsYW4gU2FuZGZlbGQgSmVuc2VuICA8YWxsYW4uamVuc2Vu
QGRpZ2lhLmNvbT4KIAogICAgICAgICBGaXggYnVpbGQgd2l0aCBuYW1lc3BhY2VkIFF0LgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuaCBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0LmgKaW5kZXggMDdjOTJkOS4uMjUzN2EyOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5oCkBAIC0zMjMsNyArMzIzLDYgQEAgcHJp
dmF0ZToKICNpZiBQTEFURk9STShNQUMpCiAgICAgdm9pZCBnZXRQYXN0ZWJvYXJkVHlwZXMoY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBl
cyk7CiAgICAgdm9pZCBnZXRQYXN0ZWJvYXJkUGF0aG5hbWVzRm9yVHlwZShjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBWZWN0b3I8U3Ry
aW5nPiYgcGF0aG5hbWVzKTsKLSAgICB2b2lkIGdldFBhc3RlYm9hcmRTdHJpbmdGb3JUeXBlKGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUs
IFN0cmluZyYpOwogICAgIHZvaWQgZ2V0UGFzdGVib2FyZEJ1ZmZlckZvclR5cGUoY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgU2hhcmVk
TWVtb3J5OjpIYW5kbGUmLCB1aW50NjRfdCYgc2l6ZSk7CiAgICAgdm9pZCBwYXN0ZWJvYXJkQ29w
eShjb25zdCBTdHJpbmcmIGZyb21QYXN0ZWJvYXJkLCBjb25zdCBTdHJpbmcmIHRvUGFzdGVib2Fy
ZCwgdWludDY0X3QmIG5ld0NoYW5nZUNvdW50KTsKICAgICB2b2lkIGdldFBhc3RlYm9hcmRDaGFu
Z2VDb3VudChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCB1aW50NjRfdCYgY2hhbmdlQ291
bnQpOwpAQCAtMzM2LDYgKzMzNSwxMiBAQCBwcml2YXRlOgogICAgIHZvaWQgc2V0UGFzdGVib2Fy
ZFN0cmluZ0ZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiwgdWludDY0X3QmIG5ld0NoYW5nZUNvdW50
KTsKICAgICB2b2lkIHNldFBhc3RlYm9hcmRCdWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFNoYXJlZE1l
bW9yeTo6SGFuZGxlJiwgdWludDY0X3Qgc2l6ZSwgdWludDY0X3QmIG5ld0NoYW5nZUNvdW50KTsK
ICNlbmRpZgorI2lmIFBMQVRGT1JNKE1BQykgfHwgUExBVEZPUk0oRUZMKQorICAgIHZvaWQgZ2V0
UGFzdGVib2FyZFN0cmluZ0ZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgU3RyaW5nJik7CisjZW5kaWYKKyNpZiBQTEFURk9S
TShFRkwpCisgICAgdm9pZCBzZXRQYXN0ZWJvYXJkU3RyaW5nRm9yVHlwZShjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJp
bmcmKTsKKyNlbmRpZgogCiAjaWYgIVBMQVRGT1JNKE1BQykKICAgICAvLyBGSVhNRTogVGhpcyBh
IGR1bW15IG1lc3NhZ2UsIHRvIGF2b2lkIGJyZWFraW5nIHRoZSBidWlsZCBmb3IgcGxhdGZvcm1z
IHRoYXQgZG9uJ3QgcmVxdWlyZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYkNvbnRleHQubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29u
dGV4dC5tZXNzYWdlcy5pbgppbmRleCA0NzFiZGU4Li5kZTBmZWJlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5tZXNzYWdlcy5pbgpAQCAtMzIsNyArMzIsNiBA
QCBtZXNzYWdlcyAtPiBXZWJDb250ZXh0IExlZ2FjeVJlY2VpdmVyIHsKICAgICAKICAgICBHZXRQ
YXN0ZWJvYXJkVHlwZXMoV1RGOjpTdHJpbmcgcGFzdGVib2FyZE5hbWUpIC0+IChWZWN0b3I8V1RG
OjpTdHJpbmc+IHR5cGVzKQogICAgIEdldFBhc3RlYm9hcmRQYXRobmFtZXNGb3JUeXBlKFdURjo6
U3RyaW5nIHBhc3RlYm9hcmROYW1lLCBXVEY6OlN0cmluZyBwYXN0ZWJvYXJkVHlwZSkgLT4gKFZl
Y3RvcjxXVEY6OlN0cmluZz4gcGF0aG5hbWVzKQotICAgIEdldFBhc3RlYm9hcmRTdHJpbmdGb3JU
eXBlKFdURjo6U3RyaW5nIHBhc3RlYm9hcmROYW1lLCBXVEY6OlN0cmluZyBwYXN0ZWJvYXJkVHlw
ZSkgLT4gKFdURjo6U3RyaW5nIHN0cmluZykKICAgICBHZXRQYXN0ZWJvYXJkQnVmZmVyRm9yVHlw
ZShXVEY6OlN0cmluZyBwYXN0ZWJvYXJkTmFtZSwgV1RGOjpTdHJpbmcgcGFzdGVib2FyZFR5cGUp
IC0+IChXZWJLaXQ6OlNoYXJlZE1lbW9yeTo6SGFuZGxlIGhhbmRsZSwgdWludDY0X3Qgc2l6ZSkK
ICAgICBQYXN0ZWJvYXJkQ29weShXVEY6OlN0cmluZyBmcm9tUGFzdGVib2FyZCwgV1RGOjpTdHJp
bmcgdG9QYXN0ZWJvYXJkKSAtPiAodWludDY0X3QgY2hhbmdlQ291bnQpCiAgICAgR2V0UGFzdGVi
b2FyZENoYW5nZUNvdW50KFdURjo6U3RyaW5nIHBhc3RlYm9hcmROYW1lKSAtPiAodWludDY0X3Qg
Y2hhbmdlQ291bnQpCkBAIC00NSw2ICs0NCwxMyBAQCBtZXNzYWdlcyAtPiBXZWJDb250ZXh0IExl
Z2FjeVJlY2VpdmVyIHsKICAgICBTZXRQYXN0ZWJvYXJkU3RyaW5nRm9yVHlwZShXVEY6OlN0cmlu
ZyBwYXN0ZWJvYXJkTmFtZSwgV1RGOjpTdHJpbmcgcGFzdGVib2FyZFR5cGUsIFdURjo6U3RyaW5n
IHN0cmluZykgLT4gKHVpbnQ2NF90IGNoYW5nZUNvdW50KQogICAgIFNldFBhc3RlYm9hcmRCdWZm
ZXJGb3JUeXBlKFdURjo6U3RyaW5nIHBhc3RlYm9hcmROYW1lLCBXVEY6OlN0cmluZyBwYXN0ZWJv
YXJkVHlwZSwgV2ViS2l0OjpTaGFyZWRNZW1vcnk6OkhhbmRsZSBoYW5kbGUsIHVpbnQ2NF90IHNp
emUpIC0+ICh1aW50NjRfdCBjaGFuZ2VDb3VudCkKICNlbmRpZgorI2lmIFBMQVRGT1JNKE1BQykg
fHwgUExBVEZPUk0oRUZMKQorICAgIEdldFBhc3RlYm9hcmRTdHJpbmdGb3JUeXBlKFdURjo6U3Ry
aW5nIHBhc3RlYm9hcmROYW1lLCBXVEY6OlN0cmluZyBwYXN0ZWJvYXJkVHlwZSkgLT4gKFdURjo6
U3RyaW5nIHN0cmluZykKKyNlbmRpZgorI2lmIFBMQVRGT1JNKEVGTCkKKyAgICBTZXRQYXN0ZWJv
YXJkU3RyaW5nRm9yVHlwZShXVEY6OlN0cmluZyBwYXN0ZWJvYXJkTmFtZSwgV1RGOjpTdHJpbmcg
cGFzdGVib2FyZFR5cGUsIFdURjo6U3RyaW5nIHN0cmluZykKKyNlbmRpZgorCiAKICNpZiAhUExB
VEZPUk0oTUFDKQogICAgIC8vIEZJWE1FOiBUaGlzIGEgZHVtbXkgbWVzc2FnZSwgdG8gYXZvaWQg
YnJlYWtpbmcgdGhlIGJ1aWxkIGZvciBwbGF0Zm9ybXMgdGhhdCBkb24ndCByZXF1aXJlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYkNvbnRleHRFZmwuY3BwIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJDb250ZXh0RWZsLmNwcAppbmRleCBkMmRj
YTNkLi5iMjZhZWYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dl
YkNvbnRleHRFZmwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViQ29u
dGV4dEVmbC5jcHAKQEAgLTEzMiw0ICsxMzIsMTQgQEAgdm9pZCBXZWJDb250ZXh0OjpzZXRJZ25v
cmVUTFNFcnJvcnMoYm9vbCBpZ25vcmVUTFNFcnJvcnMpCiAgICAgc2VuZFRvQWxsUHJvY2Vzc2Vz
KE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpTZXRJZ25vcmVUTFNFcnJvcnMobV9pZ25vcmVUTFNFcnJv
cnMpKTsKIH0KIAordm9pZCBXZWJDb250ZXh0OjpnZXRQYXN0ZWJvYXJkU3RyaW5nRm9yVHlwZShj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBl
LCBTdHJpbmcmIHN0cmluZykKK3sKKyAgICBzdHJpbmcgPSBtX3Bhc3RlYm9hcmRDbGllbnQuc3Ry
aW5nRm9yVHlwZSh0aGlzLCBwYXN0ZWJvYXJkVHlwZSwgcGFzdGVib2FyZE5hbWUpOworfQorCit2
b2lkIFdlYkNvbnRleHQ6OnNldFBhc3RlYm9hcmRTdHJpbmdGb3JUeXBlKGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZE5hbWUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmlu
ZyYgc3RyaW5nKQoreworICAgIG1fcGFzdGVib2FyZENsaWVudC5zZXRTdHJpbmdGb3JUeXBlKHRo
aXMsIHN0cmluZywgcGFzdGVib2FyZFR5cGUsIHBhc3RlYm9hcmROYW1lKTsKK30KKwogfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAKaW5kZXggNWQwNzFlMS4uYzk2
YjFmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJFZGl0b3JDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcApAQCAtNTQsNiArNTQsOCBAQAogI2lmIFBM
QVRGT1JNKFFUKQogI2luY2x1ZGUgPFFDbGlwYm9hcmQ+CiAjaW5jbHVkZSA8UUd1aUFwcGxpY2F0
aW9uPgorI2VuZGlmCisjaWYgUExBVEZPUk0oUVQpIHx8IFBMQVRGT1JNKEVGTCkKICNpbmNsdWRl
IDxXZWJDb3JlL1Bhc3RlYm9hcmQuaD4KICNlbmRpZgogCkBAIC0xOTcsNyArMTk5LDcgQEAgdm9p
ZCBXZWJFZGl0b3JDbGllbnQ6OnJlc3BvbmRUb0NoYW5nZWRTZWxlY3Rpb24oRnJhbWUqIGZyYW1l
KQogCiAgICAgbV9wYWdlLT5kaWRDaGFuZ2VTZWxlY3Rpb24oKTsKIAotI2lmIFBMQVRGT1JNKEdU
SykgfHwgUExBVEZPUk0oUVQpCisjaWYgUExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShRVCkgfHwg
UExBVEZPUk0oRUZMKQogICAgIHVwZGF0ZUdsb2JhbFNlbGVjdGlvbihmcmFtZSk7CiAjZW5kaWYK
IH0KQEAgLTIxMCw3ICsyMTIsMTEgQEAgdm9pZCBXZWJFZGl0b3JDbGllbnQ6OnVwZGF0ZUdsb2Jh
bFNlbGVjdGlvbihGcmFtZSogZnJhbWUpCiAgICAgaWYgKHN1cHBvcnRzR2xvYmFsU2VsZWN0aW9u
KCkgJiYgZnJhbWUtPnNlbGVjdGlvbigpLmlzUmFuZ2UoKSkKICAgICAgICAgUGFzdGVib2FyZDo6
Y3JlYXRlRm9yR2xvYmFsU2VsZWN0aW9uKCktPndyaXRlU2VsZWN0aW9uKGZyYW1lLT5zZWxlY3Rp
b24oKS50b05vcm1hbGl6ZWRSYW5nZSgpLmdldCgpLCBmcmFtZS0+ZWRpdG9yKCkuY2FuU21hcnRD
b3B5T3JEZWxldGUoKSwgZnJhbWUpOwogfQotCisjZWxpZiBQTEFURk9STShFRkwpCit2b2lkIFdl
YkVkaXRvckNsaWVudDo6dXBkYXRlR2xvYmFsU2VsZWN0aW9uKEZyYW1lKiBmcmFtZSkKK3sKKyAg
ICBmcmFtZS0+ZWRpdG9yKCkud3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoKlBhc3RlYm9hcmQ6
OmNyZWF0ZUZvckdsb2JhbFNlbGVjdGlvbigpKTsKK30KICNlbmRpZgogCiB2b2lkIFdlYkVkaXRv
ckNsaWVudDo6ZGlkRW5kRWRpdGluZygpCkBAIC01MjUsNyArNTMxLDcgQEAgYm9vbCBXZWJFZGl0
b3JDbGllbnQ6OnN1cHBvcnRzR2xvYmFsU2VsZWN0aW9uKCkKIHsKICNpZiBQTEFURk9STShRVCkg
JiYgIWRlZmluZWQoUVRfTk9fQ0xJUEJPQVJEKQogICAgIHJldHVybiBxQXBwLT5jbGlwYm9hcmQo
KS0+c3VwcG9ydHNTZWxlY3Rpb24oKTsKLSNlbGlmIFBMQVRGT1JNKEdUSykgJiYgUExBVEZPUk0o
WDExKQorI2VsaWYgUExBVEZPUk0oR1RLKSAmJiBQTEFURk9STShYMTEpIHx8IFBMQVRGT1JNKEVG
TCkKICAgICByZXR1cm4gdHJ1ZTsKICNlbHNlCiAgICAgLy8gRklYTUU6IFJldHVybiB0cnVlIG9u
IG90aGVyIFgxMSBwbGF0Zm9ybXMgd2hlbiB0aGV5IHN1cHBvcnQgZ2xvYmFsIHNlbGVjdGlvbi4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
RWRpdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYkVkaXRvckNsaWVudC5oCmluZGV4IDQ5NDI4MGMuLjFiZDI3ZmQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgK
KysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JD
bGllbnQuaApAQCAtMTI5LDcgKzEyOSw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBleGVjdXRlUGVu
ZGluZ0VkaXRvckNvbW1hbmRzKFdlYkNvcmU6OkZyYW1lKiwgVmVjdG9yPFdURjo6U3RyaW5nPiwg
Ym9vbCk7CiAgICAgdm9pZCBnZXRFZGl0b3JDb21tYW5kc0ZvcktleUV2ZW50KGNvbnN0IFdlYkNv
cmU6OktleWJvYXJkRXZlbnQqLCBWZWN0b3I8V1RGOjpTdHJpbmc+Jik7CiAjZW5kaWYKLSNpZiBQ
TEFURk9STShHVEspIHx8IFBMQVRGT1JNKFFUKQorI2lmIFBMQVRGT1JNKEdUSykgfHwgUExBVEZP
Uk0oUVQpIHx8IFBMQVRGT1JNKEVGTCkKICAgICB2b2lkIHVwZGF0ZUdsb2JhbFNlbGVjdGlvbihX
ZWJDb3JlOjpGcmFtZSopOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVz
LmNwcAppbmRleCAwOGY1Mjg5Li4wZjA0ZWNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAKKysrIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0
ZWdpZXMuY3BwCkBAIC00MDgsMTQgKzQwOCw2IEBAIHZvaWQgV2ViUGxhdGZvcm1TdHJhdGVnaWVz
OjpnZXRQYXRobmFtZXNGb3JUeXBlKFZlY3RvcjxTdHJpbmc+JiBwYXRobmFtZXMsIGNvbnN0CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdlczo6
V2ViQ29udGV4dDo6R2V0UGFzdGVib2FyZFBhdGhuYW1lc0ZvclR5cGU6OlJlcGx5KHBhdGhuYW1l
cyksIDApOwogfQogCi1TdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpzdHJpbmdGb3JUeXBl
KGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUpCi17Ci0gICAgU3RyaW5nIHZhbHVlOwotICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLnBhcmVu
dFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJDb250ZXh0OjpHZXRQ
YXN0ZWJvYXJkU3RyaW5nRm9yVHlwZShwYXN0ZWJvYXJkTmFtZSwgcGFzdGVib2FyZFR5cGUpLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnZXM6
OldlYkNvbnRleHQ6OkdldFBhc3RlYm9hcmRTdHJpbmdGb3JUeXBlOjpSZXBseSh2YWx1ZSksIDAp
OwotICAgIHJldHVybiB2YWx1ZTsKLX0KLQogbG9uZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNv
cHkoY29uc3QgU3RyaW5nJiBmcm9tUGFzdGVib2FyZCwgY29uc3QgU3RyaW5nJiB0b1Bhc3RlYm9h
cmQpCiB7CiAgICAgdWludDY0X3QgbmV3Q2hhbmdlQ291bnQ7CkBAIC01MDIsNSArNDk0LDIwIEBA
IGxvbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpzZXRTdHJpbmdGb3JUeXBlKGNvbnN0IFN0cmlu
ZyYgc3RyaW5nLCBjb25zdCBTdHJpbmcmCiAgICAgcmV0dXJuIG5ld0NoYW5nZUNvdW50OwogfQog
I2VuZGlmCisjaWYgUExBVEZPUk0oTUFDKSB8fCBQTEFURk9STShFRkwpCitTdHJpbmcgV2ViUGxh
dGZvcm1TdHJhdGVnaWVzOjpzdHJpbmdGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5
cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCit7CisgICAgU3RyaW5nIHZhbHVlOwor
ICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmRT
eW5jKE1lc3NhZ2VzOjpXZWJDb250ZXh0OjpHZXRQYXN0ZWJvYXJkU3RyaW5nRm9yVHlwZShwYXN0
ZWJvYXJkTmFtZSwgcGFzdGVib2FyZFR5cGUpLAorICAgICAgICBNZXNzYWdlczo6V2ViQ29udGV4
dDo6R2V0UGFzdGVib2FyZFN0cmluZ0ZvclR5cGU6OlJlcGx5KHZhbHVlKSwgMCk7CisgICAgcmV0
dXJuIHZhbHVlOworfQorI2VuZGlmCisjaWYgUExBVEZPUk0oRUZMKQordm9pZCBXZWJQbGF0Zm9y
bVN0cmF0ZWdpZXM6OnNldFN0cmluZ0ZvclR5cGUoY29uc3QgU3RyaW5nJiBzdHJpbmcsIGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCit7
CisgICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2Vu
ZChNZXNzYWdlczo6V2ViQ29udGV4dDo6U2V0UGFzdGVib2FyZFN0cmluZ0ZvclR5cGUocGFzdGVi
b2FyZE5hbWUsIHBhc3RlYm9hcmRUeXBlLCBzdHJpbmcpLCAwKTsKK30KKyNlbmRpZgogCiB9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmggYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCmluZGV4IDlh
MDA5YjguLmRhM2NkYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgKKysrIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaApAQCAtOTgs
NyArOTgsNiBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBnZXRUeXBlcyhWZWN0b3I8U3Ry
aW5nPiYgdHlwZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIE9WRVJSSURFOwogICAg
IHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGJ1ZmZlckZvclR5cGUo
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGdldFBhdGhuYW1lc0ZvclR5cGUoVmVjdG9y
PFN0cmluZz4mIHBhdGhuYW1lcywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCBTdHJpbmcgc3Ry
aW5nRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIGxvbmcgY2hhbmdlQ291bnQoY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBTdHJpbmcg
dW5pcXVlTmFtZSgpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgV2ViQ29yZTo6Q29sb3IgY29sb3Io
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgT1ZFUlJJREU7CkBAIC0xMTEsNiArMTEwLDEy
IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBsb25nIHNldFBhdGhuYW1lc0ZvclR5cGUoY29uc3Qg
VmVjdG9yPFN0cmluZz4mLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIGxvbmcgc2V0U3RyaW5n
Rm9yVHlwZShjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBPVkVSUklERTsKICNlbmRpZgorI2lmIFBMQVRGT1JN
KE1BQykgfHwgUExBVEZPUk0oRUZMKQorICAgIHZpcnR1YWwgU3RyaW5nIHN0cmluZ0ZvclR5cGUo
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSkgT1ZFUlJJREU7CisjZW5kaWYKKyNpZiBQTEFURk9STShFRkwpCisgICAgdmlydHVhbCB2b2lk
IHNldFN0cmluZ0ZvclR5cGUoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
VHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgT1ZFUlJJREU7CisjZW5kaWYKIAog
I2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQogICAgIC8vIFdlYkNvcmU6OlBsdWdpblN0
cmF0ZWd5IGltcGxlbWVudGF0aW9uLgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>232949</attachid>
            <date>2014-06-12 05:46:20 -0700</date>
            <delta_ts>2014-06-12 05:46:20 -0700</delta_ts>
            <desc>rebased patch</desc>
            <filename>pasteboardwebcore.diff</filename>
            <type>text/plain</type>
            <size>18815</size>
            <attacher name="Michal Pakula vel Rutka">mpakulavelrutka</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBlYjVkZjc4Li5hZDgwYTE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDAg
QEAKKzIwMTQtMDYtMTIgIE1pY2hhxYIgUGFrdcWCYSB2ZWwgUnV0a2EgIDxtLnBha3VsYUBzYW1z
dW5nLmNvbT4KKworICAgICAgICBbRUZMXSBJbXBsZW1lbnRhdGlvbiBvZiBwYXN0ZWJvYXJkCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDI0ODQKKwor
ICAgICAgICBFRkwgZG9lcyBub3QgcHJvdmlkZSBwbGF0Zm9ybS13aWRlIGNvcHkgYW5kIHBhc3Rl
IHN1cHBvcnQsIGJ1dCBhbiBBUEkgaW4gVUkgdG9vbGtpdCAtIEVsZW1lbnRhcnkuCisgICAgICAg
IFdlYktpdCBFRkwgc2hvdWxkIGJlIGVsZW1lbnRhcnkgaW5kZXBlbmRlbnQsIGFsc28gRWxlbWVu
dGFyeSBjb3B5IGFuZCBwYXN0ZSBBUEkgbmVlZHMgYSBVSSB3aWRnZXQKKyAgICAgICAgYXMgb25l
IG9mIGl0cyBhcmd1bWVudC4gVGh1cywgd2UgY2Fubm90IGltcGxlbWVudCBwYXN0ZWJvYXJkIGlu
c2lkZSBXZWJDb3JlIGxpa2Ugb3RoZXIgcG9ydHMsCisgICAgICAgIGJ1dCB0aGUgaW1wbGVtZW50
YXRpb24gaGFzIHRvIGJlIGRvbmUgb24gYXBwbGljYXRpb24gc2lkZS4KKworICAgICAgICBObyBu
ZXcgdGVzdHMgLSBhbHJlYWR5IGNvdmVyZWQgYnkgZXhpc3RpbmcgdGVzdHMuCisKKyAgICAgICAg
KiBlZGl0aW5nL0VkaXRvci5oOgorICAgICAgICAqIGVkaXRpbmcvRWRpdG9yQ29tbWFuZC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVDb21tYW5kTWFwKToKKyAgICAgICAgKiBlZGl0aW5n
L2VmbC9FZGl0b3JFZmwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjp3cml0ZVNlbGVj
dGlvblRvUGFzdGVib2FyZCk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnBhc3RlV2l0aFBh
c3RlYm9hcmQpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpXZWJDb250ZW50UmVhZGVyOjpy
ZWFkUGxhaW5UZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6V2ViQ29udGVudFJlYWRl
cjo6cmVhZEhUTUwpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjp3ZWJDb250ZW50RnJvbVBh
c3RlYm9hcmQpOgorICAgICAgICAqIHBsYXRmb3JtL1Bhc3RlYm9hcmQuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9lZmwvRWZsUGFzdGVib2FyZFV0aWxpdGllcy5oOiBBZGRlZC4KKyAgICAgICAgKiBw
bGF0Zm9ybS9lZmwvUGFzdGVib2FyZEVmbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJv
YXJkOjpjcmVhdGVGb3JDb3B5QW5kUGFzdGUpOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2Fy
ZDo6Y3JlYXRlRm9yR2xvYmFsU2VsZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9h
cmQ6OlBhc3RlYm9hcmQpOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6aGFzRGF0YSk6
CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjp0eXBlcyk6CisgICAgICAgIChXZWJDb3Jl
OjpQYXN0ZWJvYXJkOjp3cml0ZVN0cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJk
OjpjbGVhcik6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjpyZWFkKToKKyAgICAgICAg
KFdlYkNvcmU6OlBhc3RlYm9hcmQ6OndyaXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9h
cmQ6OmNhblNtYXJ0UmVwbGFjZSk6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjp3cml0
ZVBsYWluVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjpzZXREcmFnSW1hZ2Up
OgorCiAyMDE0LTA2LTEyICBTZXJnaW8gVmlsbGFyIFNlbmluICA8c3ZpbGxhckBpZ2FsaWEuY29t
PgogCiAgICAgICAgIFtHVEtdIFVuc3VwcG9ydGVkIGJyb3dzZXIgaW4gd3d3LmljbG91ZC5jb20K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmggYi9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL0VkaXRvci5oCmluZGV4IDVjMjA2OGMuLjhlN2YzODIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9FZGl0b3IuaApAQCAtNDMyLDcgKzQzMiw2IEBAIHB1YmxpYzoKICAgICBOU0RpY3Rpb25h
cnkqIGZvbnRBdHRyaWJ1dGVzRm9yU2VsZWN0aW9uU3RhcnQoKSBjb25zdDsKICAgICBTdHJpbmcg
c3RyaW5nU2VsZWN0aW9uRm9yUGFzdGVib2FyZCgpOwogICAgIFN0cmluZyBzdHJpbmdTZWxlY3Rp
b25Gb3JQYXN0ZWJvYXJkV2l0aEltYWdlQWx0VGV4dCgpOwotICAgIFBhc3NSZWZQdHI8RG9jdW1l
bnRGcmFnbWVudD4gd2ViQ29udGVudEZyb21QYXN0ZWJvYXJkKFBhc3RlYm9hcmQmLCBSYW5nZSYg
Y29udGV4dCwgYm9vbCBhbGxvd1BsYWluVGV4dCwgYm9vbCYgY2hvc2VQbGFpblRleHQpOwogI2lm
ICFQTEFURk9STShJT1MpCiAgICAgYm9vbCBjYW5Db3B5RXhjbHVkaW5nU3RhbmRhbG9uZUltYWdl
cygpOwogICAgIHZvaWQgdGFrZUZpbmRTdHJpbmdGcm9tU2VsZWN0aW9uKCk7CkBAIC00NDUsNiAr
NDQ0LDcgQEAgcHVibGljOgogI2lmIFBMQVRGT1JNKENPQ09BKSB8fCBQTEFURk9STShFRkwpCiAg
ICAgdm9pZCB3cml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZChQYXN0ZWJvYXJkJik7CiAgICAgdm9p
ZCB3cml0ZUltYWdlVG9QYXN0ZWJvYXJkKFBhc3RlYm9hcmQmLCBFbGVtZW50JiBpbWFnZUVsZW1l
bnQsIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgdGl0bGUpOworICAgIFBhc3NSZWZQdHI8RG9j
dW1lbnRGcmFnbWVudD4gd2ViQ29udGVudEZyb21QYXN0ZWJvYXJkKFBhc3RlYm9hcmQmLCBSYW5n
ZSYgY29udGV4dCwgYm9vbCBhbGxvd1BsYWluVGV4dCwgYm9vbCYgY2hvc2VQbGFpblRleHQpOwog
I2VuZGlmCiAKICNpZiBFTkFCTEUoVEVMRVBIT05FX05VTUJFUl9ERVRFQ1RJT04pICYmICFQTEFU
Rk9STShJT1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvckNvbW1h
bmQuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3JDb21tYW5kLmNwcAppbmRleCAy
ZmE4YjgyLi4xNWY5OTVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRv
ckNvbW1hbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yQ29tbWFuZC5j
cHAKQEAgLTkyOSw3ICs5MjksNyBAQCBzdGF0aWMgYm9vbCBleGVjdXRlUGFzdGUoRnJhbWUmIGZy
YW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2Ugc291cmNlLCBjb25zdAogICAgIHJldHVy
biB0cnVlOwogfQogCi0jaWYgUExBVEZPUk0oR1RLKQorI2lmIFBMQVRGT1JNKEdUSykgfHwgUExB
VEZPUk0oRUZMKQogCiBzdGF0aWMgYm9vbCBleGVjdXRlUGFzdGVHbG9iYWxTZWxlY3Rpb24oRnJh
bWUmIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2Ugc291cmNlLCBjb25zdCBTdHJp
bmcmKQogewpAQCAtMTYyNCw3ICsxNjI0LDcgQEAgc3RhdGljIGNvbnN0IENvbW1hbmRNYXAmIGNy
ZWF0ZUNvbW1hbmRNYXAoKQogICAgICAgICB7ICJZYW5rIiwgeyBleGVjdXRlWWFuaywgc3VwcG9y
dGVkRnJvbU1lbnVPcktleUJpbmRpbmcsIGVuYWJsZWRJbkVkaXRhYmxlVGV4dCwgc3RhdGVOb25l
LCB2YWx1ZU51bGwsIG5vdFRleHRJbnNlcnRpb24sIGRvTm90QWxsb3dFeGVjdXRpb25XaGVuRGlz
YWJsZWQgfSB9LAogICAgICAgICB7ICJZYW5rQW5kU2VsZWN0IiwgeyBleGVjdXRlWWFua0FuZFNl
bGVjdCwgc3VwcG9ydGVkRnJvbU1lbnVPcktleUJpbmRpbmcsIGVuYWJsZWRJbkVkaXRhYmxlVGV4
dCwgc3RhdGVOb25lLCB2YWx1ZU51bGwsIG5vdFRleHRJbnNlcnRpb24sIGRvTm90QWxsb3dFeGVj
dXRpb25XaGVuRGlzYWJsZWQgfSB9LAogCi0jaWYgUExBVEZPUk0oR1RLKQorI2lmIFBMQVRGT1JN
KEdUSykgfHwgUExBVEZPUk0oRUZMKQogICAgICAgICB7ICJQYXN0ZUdsb2JhbFNlbGVjdGlvbiIs
IHsgZXhlY3V0ZVBhc3RlR2xvYmFsU2VsZWN0aW9uLCBzdXBwb3J0ZWRGcm9tTWVudU9yS2V5Qmlu
ZGluZywgZW5hYmxlZFBhc3RlLCBzdGF0ZU5vbmUsIHZhbHVlTnVsbCwgbm90VGV4dEluc2VydGlv
biwgYWxsb3dFeGVjdXRpb25XaGVuRGlzYWJsZWQgfSB9LAogI2VuZGlmCiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvZWZsL0VkaXRvckVmbC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL2VmbC9FZGl0b3JFZmwuY3BwCmluZGV4IGEwNDE2MmYuLjlkMTUwN2YgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvZWZsL0VkaXRvckVmbC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9lZmwvRWRpdG9yRWZsLmNwcApAQCAtMjcsMTQgKzI3LDIxIEBA
CiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiRWRpdG9yLmgiCiAKKyNpbmNsdWRlICJE
b2N1bWVudC5oIgorI2luY2x1ZGUgIkRvY3VtZW50RnJhZ21lbnQuaCIKKyNpbmNsdWRlICJGcmFt
ZS5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAjaW5jbHVkZSAiUGFzdGVib2FyZC5o
IgorI2luY2x1ZGUgIm1hcmt1cC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXZvaWQgRWRp
dG9yOjp3cml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZChQYXN0ZWJvYXJkJikKK3ZvaWQgRWRpdG9y
Ojp3cml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZChQYXN0ZWJvYXJkJiBwYXN0ZWJvYXJkKQogewot
ICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgUGFzdGVib2FyZFdlYkNvbnRlbnQgcGFzdGVib2Fy
ZFdlYkNvbnRlbnQ7CisgICAgcGFzdGVib2FyZFdlYkNvbnRlbnQuZGF0YUluU3RyaW5nRm9ybWF0
ID0gY3JlYXRlTWFya3VwKCpzZWxlY3RlZFJhbmdlKCksIDAsIEFubm90YXRlRm9ySW50ZXJjaGFu
Z2UsIGZhbHNlLCBSZXNvbHZlTm9uTG9jYWxVUkxzKTsKKworICAgIHBhc3RlYm9hcmQud3JpdGUo
cGFzdGVib2FyZFdlYkNvbnRlbnQpOwogfQogCiB2b2lkIEVkaXRvcjo6d3JpdGVJbWFnZVRvUGFz
dGVib2FyZChQYXN0ZWJvYXJkJiwgRWxlbWVudCYsIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYp
CkBAIC00Miw5ICs0OSw2NyBAQCB2b2lkIEVkaXRvcjo6d3JpdGVJbWFnZVRvUGFzdGVib2FyZChQ
YXN0ZWJvYXJkJiwgRWxlbWVudCYsIGNvbnN0IFVSTCYsIGNvbnN0IFN0cgogICAgIG5vdEltcGxl
bWVudGVkKCk7CiB9CiAKLXZvaWQgRWRpdG9yOjpwYXN0ZVdpdGhQYXN0ZWJvYXJkKFBhc3RlYm9h
cmQqLCBib29sLCBNYWlsQmxvY2txdW90ZUhhbmRsaW5nKQordm9pZCBFZGl0b3I6OnBhc3RlV2l0
aFBhc3RlYm9hcmQoUGFzdGVib2FyZCogcGFzdGVib2FyZCwgYm9vbCBhbGxvd1BsYWluVGV4dCwg
TWFpbEJsb2NrcXVvdGVIYW5kbGluZykKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIFJl
ZlB0cjxSYW5nZT4gcmFuZ2UgPSBzZWxlY3RlZFJhbmdlKCk7CisKKyAgICBib29sIGNob3NlUGxh
aW5UZXh0OworICAgIFJlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBmcmFnbWVudCA9IHdlYkNvbnRl
bnRGcm9tUGFzdGVib2FyZCgqcGFzdGVib2FyZCwgKnJhbmdlLCBhbGxvd1BsYWluVGV4dCwgY2hv
c2VQbGFpblRleHQpOworCisgICAgaWYgKGZyYWdtZW50ICYmIHNob3VsZEluc2VydEZyYWdtZW50
KGZyYWdtZW50LCByYW5nZSwgRWRpdG9ySW5zZXJ0QWN0aW9uUGFzdGVkKSkKKyAgICAgICAgcGFz
dGVBc0ZyYWdtZW50KGZyYWdtZW50LCBjYW5TbWFydFJlcGxhY2VXaXRoUGFzdGVib2FyZCgqcGFz
dGVib2FyZCksIGZhbHNlKTsKK30KKworY2xhc3MgRWRpdG9yOjpXZWJDb250ZW50UmVhZGVyIGZp
bmFsIDogcHVibGljIFBhc3RlYm9hcmRXZWJDb250ZW50UmVhZGVyIHsKK3B1YmxpYzoKKyAgICBG
cmFtZSYgZnJhbWU7CisgICAgUmFuZ2UmIGNvbnRleHQ7CisgICAgY29uc3QgYm9vbCBhbGxvd1Bs
YWluVGV4dDsKKworICAgIFJlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBmcmFnbWVudDsKKyAgICBi
b29sIG1hZGVGcmFnbWVudEZyb21QbGFpblRleHQ7CisKKyAgICBXZWJDb250ZW50UmVhZGVyKEZy
YW1lJiBmcmFtZSwgUmFuZ2UmIGNvbnRleHQsIGJvb2wgYWxsb3dQbGFpblRleHQpCisgICAgICAg
IDogZnJhbWUoZnJhbWUpCisgICAgICAgICwgY29udGV4dChjb250ZXh0KQorICAgICAgICAsIGFs
bG93UGxhaW5UZXh0KGFsbG93UGxhaW5UZXh0KQorICAgICAgICAsIG1hZGVGcmFnbWVudEZyb21Q
bGFpblRleHQoZmFsc2UpCisgICAgeworICAgIH0KKworcHJpdmF0ZToKKyAgICB2aXJ0dWFsIGJv
b2wgcmVhZEhUTUwoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBib29sIHJl
YWRQbGFpblRleHQoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7Cit9OworCitib29sIEVkaXRvcjo6
V2ViQ29udGVudFJlYWRlcjo6cmVhZFBsYWluVGV4dChjb25zdCBTdHJpbmcmIHRleHQpCit7Cisg
ICAgaWYgKCFhbGxvd1BsYWluVGV4dCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgZnJh
Z21lbnQgPSBjcmVhdGVGcmFnbWVudEZyb21UZXh0KGNvbnRleHQsIHRleHQpOworICAgIGlmICgh
ZnJhZ21lbnQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIG1hZGVGcmFnbWVudEZyb21Q
bGFpblRleHQgPSB0cnVlOworCisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgRWRpdG9yOjpX
ZWJDb250ZW50UmVhZGVyOjpyZWFkSFRNTChjb25zdCBTdHJpbmcmIHN0cmluZykKK3sKKyAgICBm
cmFnbWVudCA9IGNyZWF0ZUZyYWdtZW50RnJvbU1hcmt1cCgqZnJhbWUuZG9jdW1lbnQoKSwgc3Ry
aW5nLCBlbXB0eVN0cmluZygpLCBEaXNhbGxvd1NjcmlwdGluZ0FuZFBsdWdpbkNvbnRlbnQpOwor
CisgICAgcmV0dXJuIGZyYWdtZW50OworfQorCitQYXNzUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+
IEVkaXRvcjo6d2ViQ29udGVudEZyb21QYXN0ZWJvYXJkKFBhc3RlYm9hcmQmIHBhc3RlYm9hcmQs
IFJhbmdlJiBjb250ZXh0LCBib29sIGFsbG93UGxhaW5UZXh0LCBib29sJiBjaG9zZVBsYWluVGV4
dCkKK3sKKyAgICBXZWJDb250ZW50UmVhZGVyIHJlYWRlcihtX2ZyYW1lLCBjb250ZXh0LCBhbGxv
d1BsYWluVGV4dCk7CisgICAgcGFzdGVib2FyZC5yZWFkKHJlYWRlcik7CisgICAgY2hvc2VQbGFp
blRleHQgPSByZWFkZXIubWFkZUZyYWdtZW50RnJvbVBsYWluVGV4dDsKKworICAgIHJldHVybiBy
ZWFkZXIuZnJhZ21lbnQucmVsZWFzZSgpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmgKaW5kZXggNWU2MTYxNy4uYzliY2FjMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuaApAQCAtNzQsMTAgKzc0LDEyIEBAIHN0cnVj
dCBQYXN0ZWJvYXJkV2ViQ29udGVudCB7CiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YUlu
V2ViQXJjaGl2ZUZvcm1hdDsKICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhSW5SVEZERm9y
bWF0OwogICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGFJblJURkZvcm1hdDsKLSAgICBTdHJp
bmcgZGF0YUluU3RyaW5nRm9ybWF0OwogICAgIFZlY3RvcjxTdHJpbmc+IGNsaWVudFR5cGVzOwog
ICAgIFZlY3RvcjxSZWZQdHI8U2hhcmVkQnVmZmVyPj4gY2xpZW50RGF0YTsKICNlbmRpZgorI2lm
ICEoUExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShXSU4pKQorICAgIFN0cmluZyBkYXRhSW5TdHJp
bmdGb3JtYXQ7CisjZW5kaWYKIH07CiAKIHN0cnVjdCBQYXN0ZWJvYXJkVVJMIHsKQEAgLTEwOCwx
MiArMTEwLDE0IEBAIHB1YmxpYzoKICNpZiAhKFBMQVRGT1JNKEVGTCkgfHwgUExBVEZPUk0oR1RL
KSB8fCBQTEFURk9STShXSU4pKQogICAgIHZpcnR1YWwgYm9vbCByZWFkV2ViQXJjaGl2ZShQYXNz
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4pID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgcmVhZEZpbGVuYW1l
cyhjb25zdCBWZWN0b3I8U3RyaW5nPiYpID0gMDsKLSAgICB2aXJ0dWFsIGJvb2wgcmVhZEhUTUwo
Y29uc3QgU3RyaW5nJikgPSAwOwogICAgIHZpcnR1YWwgYm9vbCByZWFkUlRGRChQYXNzUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4pID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgcmVhZFJURihQYXNzUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4pID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgcmVhZEltYWdlKFBhc3NSZWZQ
dHI8U2hhcmVkQnVmZmVyPiwgY29uc3QgU3RyaW5nJiB0eXBlKSA9IDA7CiAgICAgdmlydHVhbCBi
b29sIHJlYWRVUkwoY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiB0aXRsZSkgPSAwOwogI2VuZGlm
CisjaWYgIShQTEFURk9STShHVEspIHx8IFBMQVRGT1JNKFdJTikpCisgICAgdmlydHVhbCBib29s
IHJlYWRIVE1MKGNvbnN0IFN0cmluZyYpID0gMDsKKyNlbmRpZgogICAgIHZpcnR1YWwgYm9vbCBy
ZWFkUGxhaW5UZXh0KGNvbnN0IFN0cmluZyYpID0gMDsKIH07CiAKQEAgLTE3Miw2ICsxNzYsOSBA
QCBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NPd25QdHI8UGFzdGVib2FyZD4gY3JlYXRlKFBhc3NS
ZWZQdHI8RGF0YU9iamVjdEd0az4pOwogICAgIHN0YXRpYyBQYXNzT3duUHRyPFBhc3RlYm9hcmQ+
IGNyZWF0ZShHdGtDbGlwYm9hcmQqKTsKICAgICBQYXNzUmVmUHRyPERhdGFPYmplY3RHdGs+IGRh
dGFPYmplY3QoKSBjb25zdDsKKyNlbmRpZgorCisjaWYgUExBVEZPUk0oR1RLKSB8fCBQTEFURk9S
TShFRkwpCiAgICAgc3RhdGljIFBhc3NPd25QdHI8UGFzdGVib2FyZD4gY3JlYXRlRm9yR2xvYmFs
U2VsZWN0aW9uKCk7CiAjZW5kaWYKIApAQCAtMjM0LDYgKzI0MSwxMSBAQCBwcml2YXRlOgogICAg
IENPTVB0cjxXQ0RhdGFPYmplY3Q+IG1fd3JpdGFibGVEYXRhT2JqZWN0OwogICAgIERyYWdEYXRh
TWFwIG1fZHJhZ0RhdGFNYXA7CiAjZW5kaWYKKworI2lmIFBMQVRGT1JNKEVGTCkKKyAgICBib29s
IG1fc2VsZWN0aW9uTW9kZTsKKyNlbmRpZgorCiB9OwogCiAjaWYgUExBVEZPUk0oSU9TKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZsL0VmbFBhc3RlYm9hcmRVdGlsaXRp
ZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9FZmxQYXN0ZWJvYXJkVXRpbGl0aWVz
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODY3MzA0ZAotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9FZmxQYXN0ZWJvYXJkVXRpbGl0
aWVzLmgKQEAgLTAsMCArMSw0MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBTYW1zdW5n
IEVsZWN0cm9uaWNzLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVIgT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORworICogTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEVmbFBhc3RlYm9h
cmRVdGlsaXRpZXNfaAorI2RlZmluZSBFZmxQYXN0ZWJvYXJkVXRpbGl0aWVzX2gKKworI2luY2x1
ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NvbnN0
IFN0cmluZyBzZWxlY3Rpb25Gb3JtYXRUZXh0ID0gQVNDSUlMaXRlcmFsKCJUZXh0Iik7Citjb25z
dCBTdHJpbmcgc2VsZWN0aW9uRm9ybWF0TWFya3VwID0gQVNDSUlMaXRlcmFsKCJNYXJrdXAiKTsK
K2NvbnN0IFN0cmluZyBzZWxlY3Rpb25UeXBlUHJpbWFyeSA9IEFTQ0lJTGl0ZXJhbCgiUHJpbWFy
eSIpOworY29uc3QgU3RyaW5nIHNlbGVjdGlvblR5cGVDbGlwYm9hcmQgPSBBU0NJSUxpdGVyYWwo
IkNsaXBib2FyZCIpOworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFZmxQ
YXN0ZWJvYXJkVXRpbGl0aWVzX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2VmbC9QYXN0ZWJvYXJkRWZsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9QYXN0
ZWJvYXJkRWZsLmNwcAppbmRleCA4YTA4MTBmLi5lOGQ0Mjg4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9lZmwvUGFzdGVib2FyZEVmbC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZWZsL1Bhc3RlYm9hcmRFZmwuY3BwCkBAIC0yMywzNCArMjMsMjUgQEAKICNp
bmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJQYXN0ZWJvYXJkLmgiCiAKKyNpbmNsdWRlICJF
ZmxQYXN0ZWJvYXJkVXRpbGl0aWVzLmgiCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKKyNp
bmNsdWRlICJQYXN0ZWJvYXJkU3RyYXRlZ3kuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybVN0cmF0ZWdp
ZXMuaCIKICNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLVBhc3RlYm9hcmQ6OlBhc3RlYm9hcmQoKQotewotfQotCi12b2lkIFBhc3RlYm9hcmQ6Ondy
aXRlUGxhaW5UZXh0KGNvbnN0IFN0cmluZyYsIFNtYXJ0UmVwbGFjZU9wdGlvbikKLXsKLSAgICBu
b3RJbXBsZW1lbnRlZCgpOwotfQotCi12b2lkIFBhc3RlYm9hcmQ6OmNsZWFyKCkKK1Bhc3NPd25Q
dHI8UGFzdGVib2FyZD4gUGFzdGVib2FyZDo6Y3JlYXRlRm9yQ29weUFuZFBhc3RlKCkKIHsKLSAg
ICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBhZG9wdFB0cihuZXcgUGFzdGVib2FyZCk7
CiB9CiAKLWJvb2wgUGFzdGVib2FyZDo6Y2FuU21hcnRSZXBsYWNlKCkKK1Bhc3NPd25QdHI8UGFz
dGVib2FyZD4gUGFzdGVib2FyZDo6Y3JlYXRlRm9yR2xvYmFsU2VsZWN0aW9uKCkKIHsKLSAgICBu
b3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiBmYWxzZTsKLX0KKyAgICBPd25QdHI8UGFzdGVi
b2FyZD4gcGFzdGVib2FyZCA9IGNyZWF0ZUZvckNvcHlBbmRQYXN0ZSgpOworICAgIHBhc3RlYm9h
cmQtPm1fc2VsZWN0aW9uTW9kZSA9IHRydWU7CiAKLVBhc3NPd25QdHI8UGFzdGVib2FyZD4gUGFz
dGVib2FyZDo6Y3JlYXRlRm9yQ29weUFuZFBhc3RlKCkKLXsKLSAgICByZXR1cm4gYWRvcHRQdHIo
bmV3IFBhc3RlYm9hcmQpOworICAgIHJldHVybiBwYXN0ZWJvYXJkLnJlbGVhc2UoKTsKIH0KIAog
UGFzc093blB0cjxQYXN0ZWJvYXJkPiBQYXN0ZWJvYXJkOjpjcmVhdGVQcml2YXRlKCkKQEAgLTcw
LDIwICs2MSwyMSBAQCBQYXNzT3duUHRyPFBhc3RlYm9hcmQ+IFBhc3RlYm9hcmQ6OmNyZWF0ZUZv
ckRyYWdBbmREcm9wKGNvbnN0IERyYWdEYXRhJikKIH0KICNlbmRpZgogCi1ib29sIFBhc3RlYm9h
cmQ6Omhhc0RhdGEoKQorUGFzdGVib2FyZDo6UGFzdGVib2FyZCgpCisgICAgOiBtX3NlbGVjdGlv
bk1vZGUoZmFsc2UpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gZmFsc2U7
CiB9CiAKLXZvaWQgUGFzdGVib2FyZDo6Y2xlYXIoY29uc3QgU3RyaW5nJikKK2Jvb2wgUGFzdGVi
b2FyZDo6aGFzRGF0YSgpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gZmFs
c2U7CiB9CiAKLXZvaWQgUGFzdGVib2FyZDo6cmVhZChQYXN0ZWJvYXJkUGxhaW5UZXh0JikKK1Zl
Y3RvcjxTdHJpbmc+IFBhc3RlYm9hcmQ6OnR5cGVzKCkKIHsKICAgICBub3RJbXBsZW1lbnRlZCgp
OworICAgIHJldHVybiBWZWN0b3I8U3RyaW5nPigpOwogfQogCiBTdHJpbmcgUGFzdGVib2FyZDo6
cmVhZFN0cmluZyhjb25zdCBTdHJpbmcmKQpAQCAtOTIsMjAgKzg0LDQ3IEBAIFN0cmluZyBQYXN0
ZWJvYXJkOjpyZWFkU3RyaW5nKGNvbnN0IFN0cmluZyYpCiAgICAgcmV0dXJuIFN0cmluZygpOwog
fQogCi12b2lkIFBhc3RlYm9hcmQ6OndyaXRlKGNvbnN0IFBhc3RlYm9hcmRVUkwmKQordm9pZCBQ
YXN0ZWJvYXJkOjp3cml0ZVN0cmluZyhjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmKQogewog
ICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKLXZvaWQgUGFzdGVib2FyZDo6d3JpdGVTdHJpbmco
Y29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJikKK3ZvaWQgUGFzdGVib2FyZDo6Y2xlYXIoKQog
ewogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKLVZlY3RvcjxTdHJpbmc+IFBhc3RlYm9hcmQ6
OnR5cGVzKCkKK3ZvaWQgUGFzdGVib2FyZDo6Y2xlYXIoY29uc3QgU3RyaW5nJikKIHsKICAgICBu
b3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiBWZWN0b3I8U3RyaW5nPigpOworfQorCit2b2lk
IFBhc3RlYm9hcmQ6OnJlYWQoUGFzdGVib2FyZFBsYWluVGV4dCYgdGV4dCkKK3sKKyAgICB0ZXh0
LnRleHQgPSBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPnJlYWRG
cm9tUGFzdGVib2FyZChtX3NlbGVjdGlvbk1vZGUgPyBzZWxlY3Rpb25UeXBlUHJpbWFyeSA6IHNl
bGVjdGlvblR5cGVDbGlwYm9hcmQsIHNlbGVjdGlvbkZvcm1hdFRleHQpOworfQorCit2b2lkIFBh
c3RlYm9hcmQ6OnJlYWQoUGFzdGVib2FyZFdlYkNvbnRlbnRSZWFkZXImIHJlYWRlcikKK3sKKyAg
ICBTdHJpbmcgc3RyaW5nID0gcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVn
eSgpLT5yZWFkRnJvbVBhc3RlYm9hcmQobV9zZWxlY3Rpb25Nb2RlID8gc2VsZWN0aW9uVHlwZVBy
aW1hcnkgOiBzZWxlY3Rpb25UeXBlQ2xpcGJvYXJkLCBzZWxlY3Rpb25Gb3JtYXRNYXJrdXApOwor
CisgICAgaWYgKHJlYWRlci5yZWFkSFRNTChzdHJpbmcpKQorICAgICAgICByZXR1cm47CisKKyAg
ICByZWFkZXIucmVhZFBsYWluVGV4dChzdHJpbmcpOworfQorCit2b2lkIFBhc3RlYm9hcmQ6Ondy
aXRlKGNvbnN0IFBhc3RlYm9hcmRVUkwmIHBhc3RlYm9hcmRVUkwpCit7CisgICAgaWYgKHBhc3Rl
Ym9hcmRVUkwudXJsLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgcGxhdGZvcm1T
dHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT53cml0ZVRvUGFzdGVib2FyZChwYXN0
ZWJvYXJkVVJMLnVybC5zdHJpbmcoKSwgbV9zZWxlY3Rpb25Nb2RlID8gc2VsZWN0aW9uVHlwZVBy
aW1hcnkgOiBzZWxlY3Rpb25UeXBlQ2xpcGJvYXJkLCBzZWxlY3Rpb25Gb3JtYXRUZXh0KTsKK30K
Kwordm9pZCBQYXN0ZWJvYXJkOjp3cml0ZShjb25zdCBQYXN0ZWJvYXJkV2ViQ29udGVudCYgY29u
dGVudCkKK3sKKyAgICBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCkt
PndyaXRlVG9QYXN0ZWJvYXJkKGNvbnRlbnQuZGF0YUluU3RyaW5nRm9ybWF0LCBtX3NlbGVjdGlv
bk1vZGUgPyBzZWxlY3Rpb25UeXBlUHJpbWFyeSA6IHNlbGVjdGlvblR5cGVDbGlwYm9hcmQsIHNl
bGVjdGlvbkZvcm1hdE1hcmt1cCk7CiB9CiAKIFZlY3RvcjxTdHJpbmc+IFBhc3RlYm9hcmQ6OnJl
YWRGaWxlbmFtZXMoKQpAQCAtMTE0LDE2ICsxMzMsMjggQEAgVmVjdG9yPFN0cmluZz4gUGFzdGVi
b2FyZDo6cmVhZEZpbGVuYW1lcygpCiAgICAgcmV0dXJuIFZlY3RvcjxTdHJpbmc+KCk7CiB9CiAK
LSNpZiBFTkFCTEUoRFJBR19TVVBQT1JUKQotdm9pZCBQYXN0ZWJvYXJkOjpzZXREcmFnSW1hZ2Uo
RHJhZ0ltYWdlUmVmLCBjb25zdCBJbnRQb2ludCYpCitib29sIFBhc3RlYm9hcmQ6OmNhblNtYXJ0
UmVwbGFjZSgpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9
CisKK3ZvaWQgUGFzdGVib2FyZDo6d3JpdGVQbGFpblRleHQoY29uc3QgU3RyaW5nJiwgU21hcnRS
ZXBsYWNlT3B0aW9uKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9Ci0jZW5kaWYKKwogCiB2
b2lkIFBhc3RlYm9hcmQ6OndyaXRlUGFzdGVib2FyZChjb25zdCBQYXN0ZWJvYXJkJikKIHsKICAg
ICBub3RJbXBsZW1lbnRlZCgpOwogfQogCisjaWYgRU5BQkxFKERSQUdfU1VQUE9SVCkKK3ZvaWQg
UGFzdGVib2FyZDo6c2V0RHJhZ0ltYWdlKERyYWdJbWFnZVJlZiwgY29uc3QgSW50UG9pbnQmKQor
eworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisjZW5kaWYKKwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCmlu
ZGV4IDQxMDc2OGYuLmY1NTBmNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMSBAQAor
MjAxNC0wNi0xMiAgTWljaGHFgiBQYWt1xYJhIHZlbCBSdXRrYSAgPG0ucGFrdWxhQHNhbXN1bmcu
Y29tPgorCisgICAgICAgIFtFRkxdIEltcGxlbWVudGF0aW9uIG9mIHBhc3RlYm9hcmQKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMjQ4NAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEVGTCBkb2VzIG5vdCBw
cm92aWRlIHBsYXRmb3JtLXdpZGUgY29weSBhbmQgcGFzdGUgc3VwcG9ydCwgYnV0IGFuIEFQSSBp
biBVSSB0b29sa2l0IC0gRWxlbWVudGFyeS4KKyAgICAgICAgV2ViS2l0IEVGTCBzaG91bGQgYmUg
ZWxlbWVudGFyeSBpbmRlcGVuZGVudCwgYWxzbyBFbGVtZW50YXJ5IGNvcHkgYW5kIHBhc3RlIEFQ
SSBuZWVkcyBhIFVJIHdpZGdldAorICAgICAgICBhcyBvbmUgb2YgaXRzIGFyZ3VtZW50LiBUaHVz
LCB3ZSBjYW5ub3QgaW1wbGVtZW50IHBhc3RlYm9hcmQgaW5zaWRlIFdlYkNvcmUgbGlrZSBvdGhl
ciBwb3J0cywKKyAgICAgICAgYnV0IHRoZSBpbXBsZW1lbnRhdGlvbiBoYXMgdG8gYmUgZG9uZSBv
biBhcHBsaWNhdGlvbiBzaWRlLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvUGxhdGZvcm1T
dHJhdGVnaWVzRWZsLmNwcDoKKyAgICAgICAgKFBsYXRmb3JtU3RyYXRlZ2llc0VmbDo6Y3JlYXRl
UGFzdGVib2FyZFN0cmF0ZWd5KToKKyAgICAgICAgKFBsYXRmb3JtU3RyYXRlZ2llc0VmbDo6cmVh
ZEZyb21QYXN0ZWJvYXJkKToKKyAgICAgICAgKFBsYXRmb3JtU3RyYXRlZ2llc0VmbDo6d3JpdGVU
b1Bhc3RlYm9hcmQpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1BsYXRmb3JtU3RyYXRlZ2ll
c0VmbC5oOgorCiAyMDE0LTA1LTE2ICBNYXJ0aW4gUm9iaW5zb24gIDxtcm9iaW5zb25AaWdhbGlh
LmNvbT4KIAogICAgICAgICBbQ01ha2VdIEltcHJvdmUgaGFuZGxpbmcgb2YgTElCX0lOU1RBTExf
RElSLCBFWEVDX0lOU1RBTExfRElSLCBhbmQgTElCRVhFQ19JTlNUQUxMX0RJUgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvUGxhdGZvcm1TdHJhdGVnaWVzRWZs
LmNwcCBiL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L1BsYXRmb3JtU3RyYXRlZ2ll
c0VmbC5jcHAKaW5kZXggZTQ0ZGZhNC4uMjlhMDQ5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9lZmwvV2ViQ29yZVN1cHBvcnQvUGxhdGZvcm1TdHJhdGVnaWVzRWZsLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9QbGF0Zm9ybVN0cmF0ZWdpZXNFZmwuY3BwCkBA
IC02Miw4ICs2Miw3IEBAIExvYWRlclN0cmF0ZWd5KiBQbGF0Zm9ybVN0cmF0ZWdpZXNFZmw6OmNy
ZWF0ZUxvYWRlclN0cmF0ZWd5KCkKIAogUGFzdGVib2FyZFN0cmF0ZWd5KiBQbGF0Zm9ybVN0cmF0
ZWdpZXNFZmw6OmNyZWF0ZVBhc3RlYm9hcmRTdHJhdGVneSgpCiB7Ci0gICAgbm90SW1wbGVtZW50
ZWQoKTsKLSAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gdGhpczsKIH0KIAogUGx1Z2luU3RyYXRl
Z3kqIFBsYXRmb3JtU3RyYXRlZ2llc0VmbDo6Y3JlYXRlUGx1Z2luU3RyYXRlZ3koKQpAQCAtMTUx
LDMgKzE1MCwxNSBAQCB2b2lkIFBsYXRmb3JtU3RyYXRlZ2llc0VmbDo6Z2V0UGx1Z2luSW5mbyhj
b25zdCBQYWdlKiwgVmVjdG9yPFBsdWdpbkluZm8+JiBvdXRQbAogICAgIFVOVVNFRF9QQVJBTShv
dXRQbHVnaW5zKTsKICNlbmRpZgogfQorCisvLyBQYXN0ZWJvYXJkU3RyYXRlZ3kKK1N0cmluZyBQ
bGF0Zm9ybVN0cmF0ZWdpZXNFZmw6OnJlYWRGcm9tUGFzdGVib2FyZChjb25zdCBTdHJpbmcmLCBj
b25zdCBTdHJpbmcmKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIFN0cmlu
ZygpOworfQorCit2b2lkIFBsYXRmb3JtU3RyYXRlZ2llc0VmbDo6d3JpdGVUb1Bhc3RlYm9hcmQo
Y29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJikKK3sKKyAgICBub3RJ
bXBsZW1lbnRlZCgpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1
cHBvcnQvUGxhdGZvcm1TdHJhdGVnaWVzRWZsLmggYi9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3Jl
U3VwcG9ydC9QbGF0Zm9ybVN0cmF0ZWdpZXNFZmwuaAppbmRleCA1NzM3YTRmLi4xMDc1NjMyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9QbGF0Zm9ybVN0cmF0
ZWdpZXNFZmwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9QbGF0Zm9y
bVN0cmF0ZWdpZXNFZmwuaApAQCAtMjksNyArMjksNyBAQAogI2luY2x1ZGUgIlNoYXJlZFdvcmtl
clN0cmF0ZWd5LmgiCiAjaW5jbHVkZSAiU3RvcmFnZVN0cmF0ZWd5LmgiCiAKLWNsYXNzIFBsYXRm
b3JtU3RyYXRlZ2llc0VmbCA6IHB1YmxpYyBXZWJDb3JlOjpQbGF0Zm9ybVN0cmF0ZWdpZXMsIHBy
aXZhdGUgV2ViQ29yZTo6Q29va2llc1N0cmF0ZWd5LCBwcml2YXRlIFdlYkNvcmU6OkRhdGFiYXNl
U3RyYXRlZ3ksIHByaXZhdGUgV2ViQ29yZTo6TG9hZGVyU3RyYXRlZ3ksIHByaXZhdGUgV2ViQ29y
ZTo6UGx1Z2luU3RyYXRlZ3ksIHByaXZhdGUgV2ViQ29yZTo6U2hhcmVkV29ya2VyU3RyYXRlZ3ks
IHByaXZhdGUgV2ViQ29yZTo6U3RvcmFnZVN0cmF0ZWd5IHsKK2NsYXNzIFBsYXRmb3JtU3RyYXRl
Z2llc0VmbCA6IHB1YmxpYyBXZWJDb3JlOjpQbGF0Zm9ybVN0cmF0ZWdpZXMsIHByaXZhdGUgV2Vi
Q29yZTo6Q29va2llc1N0cmF0ZWd5LCBwcml2YXRlIFdlYkNvcmU6OkRhdGFiYXNlU3RyYXRlZ3ks
IHByaXZhdGUgV2ViQ29yZTo6TG9hZGVyU3RyYXRlZ3ksIHByaXZhdGUgV2ViQ29yZTo6UGx1Z2lu
U3RyYXRlZ3ksIHByaXZhdGUgV2ViQ29yZTo6U2hhcmVkV29ya2VyU3RyYXRlZ3ksIHByaXZhdGUg
V2ViQ29yZTo6U3RvcmFnZVN0cmF0ZWd5LCBwcml2YXRlIFdlYkNvcmU6OlBhc3RlYm9hcmRTdHJh
dGVneSB7CiBwdWJsaWM6CiAgICAgc3RhdGljIHZvaWQgaW5pdGlhbGl6ZSgpOwogCkBAIC01OSw2
ICs1OSwxMCBAQCBwcml2YXRlOgogICAgIC8vIFdlYkNvcmU6OlBsdWdpblN0cmF0ZWd5CiAgICAg
dmlydHVhbCB2b2lkIHJlZnJlc2hQbHVnaW5zKCk7CiAgICAgdmlydHVhbCB2b2lkIGdldFBsdWdp
bkluZm8oY29uc3QgV2ViQ29yZTo6UGFnZSosIFZlY3RvcjxXZWJDb3JlOjpQbHVnaW5JbmZvPiYp
OworCisgICAgLy8gV2ViQ29yZTo6UGFzdGVib2FyZFN0cmF0ZWd5CisgICAgdmlydHVhbCBTdHJp
bmcgcmVhZEZyb21QYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYpOworICAg
IHZpcnR1YWwgdm9pZCB3cml0ZVRvUGFzdGVib2FyZChjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJp
bmcmLCBjb25zdCBTdHJpbmcmKTsKIH07CiAKICNlbmRpZiAvLyBQbGF0Zm9ybVN0cmF0ZWdpZXNF
ZmxfaAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>