<?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>91832</bug_id>
          
          <creation_ts>2012-07-20 01:26:26 -0700</creation_ts>
          <short_desc>[EFL][WK2] Implemented color picker API</short_desc>
          <delta_ts>2012-09-25 01:58:31 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit EFL</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>90454</dependson>
    
    <dependson>94589</dependson>
    
    <dependson>95058</dependson>
          <blocked>94583</blocked>
    
    <blocked>97522</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="KwangYong Choi">ky0.choi</reporter>
          <assigned_to name="KwangYong Choi">ky0.choi</assigned_to>
          <cc>cdumez</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>hausmann</cc>
    
    <cc>kenneth</cc>
    
    <cc>lucas.de.marchi</cc>
    
    <cc>rakuco</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sam</cc>
    
    <cc>sw0524.lee</cc>
    
    <cc>tmpsantos</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>674314</commentid>
    <comment_count>0</comment_count>
    <who name="KwangYong Choi">ky0.choi</who>
    <bug_when>2012-07-20 01:26:26 -0700</bug_when>
    <thetext>Implement color chooser proxy for EFL. The ewk API related color chooser should be implemented after this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>674320</commentid>
    <comment_count>1</comment_count>
      <attachid>153448</attachid>
    <who name="KwangYong Choi">ky0.choi</who>
    <bug_when>2012-07-20 01:34:39 -0700</bug_when>
    <thetext>Created attachment 153448
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>676133</commentid>
    <comment_count>2</comment_count>
      <attachid>153448</attachid>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2012-07-23 16:07:40 -0700</bug_when>
    <thetext>Comment on attachment 153448
Patch

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

&gt; Source/WebKit2/UIProcess/efl/WebColorChooserProxyEfl.cpp:37
&gt; +    endChooser(); // FIXME: Remove this. Call the ewk API to show color chooser after implemented.

If I am right, this patch looks not complete to support color chooser.

Why don&apos;t you implement all instead of temporal blocking?

&gt; Source/WebKit2/UIProcess/efl/WebColorChooserProxyEfl.h:60
&gt; +#endif // ENABLE(INPUT_TYPE_COLOR)
&gt; +

unnecessary empty line.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>677608</commentid>
    <comment_count>3</comment_count>
      <attachid>154248</attachid>
    <who name="KwangYong Choi">ky0.choi</who>
    <bug_when>2012-07-24 22:00:31 -0700</bug_when>
    <thetext>Created attachment 154248
Patch

1. Additional implementation on ewk_view. But UI is missing. InputPicker UI will be contributed by someone else.

2. An empty line is also exist on other files. (WebColorChooserProxy.h, WebColorChooser.h, ...) So, I didn&apos;t remove the empty line.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>677664</commentid>
    <comment_count>4</comment_count>
      <attachid>154248</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-07-24 23:09:19 -0700</bug_when>
    <thetext>Comment on attachment 154248
Patch

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

&gt; Source/WebKit2/UIProcess/API/efl/InputPicker.cpp:4
&gt; + * Redistribution and use in source and binary forms, with or without

I&apos;m checking which license we use. So, I don&apos;t know which license is best for us.

&gt; Source/WebKit2/UIProcess/API/efl/InputPicker.h:37
&gt; +    InputPicker(Evas_Object*);

Use *explicit* keyword.

&gt; Source/WebKit2/UIProcess/API/efl/ewk_view.h:87
&gt; +typedef enum _Ewk_Input_Type Ewk_Input_Type;

Please add below comment for above type definition.

/** Creates a type name for _Ewk_Input_Type_Ewk_Input_Type */

&gt; Source/WebKit2/UIProcess/API/efl/ewk_view.h:472
&gt; +EAPI void ewk_view_color_chooser_color_set(Evas_Object* o, const char* color);

Nit: Move &apos;*&apos; to variable side.

&gt; Source/WebKit2/UIProcess/API/efl/ewk_view.h:479
&gt; +EAPI void ewk_view_color_chooser_close(Evas_Object* o);

ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>677693</commentid>
    <comment_count>5</comment_count>
      <attachid>154272</attachid>
    <who name="KwangYong Choi">ky0.choi</who>
    <bug_when>2012-07-24 23:40:09 -0700</bug_when>
    <thetext>Created attachment 154272
Patch

1. Added explicit keyword.

2. Added comment for type definition.

3. Moved &apos;*&apos; to variable side.

I just applied BSD license most files in webkit uses. It can be changed to another one if it&apos;s required.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>677761</commentid>
    <comment_count>6</comment_count>
      <attachid>154272</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-07-25 01:02:10 -0700</bug_when>
    <thetext>Comment on attachment 154272
Patch

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

&gt; Source/WebKit2/UIProcess/API/efl/ewk_view.cpp:301
&gt; +    priv-&gt;inputPicker = adoptPtr&lt;InputPicker&gt;(new InputPicker(smartData-&gt;self));

This should be moved to the Ewk_View_Private_Data constructor.

&gt; Source/WebKit2/UIProcess/API/efl/ewk_view.cpp:308
&gt; +    priv-&gt;inputPicker = nullptr;

Useless, please remove.

&gt; Source/WebKit2/UIProcess/API/efl/ewk_view.cpp:1049
&gt; +    if (priv-&gt;colorChooser)

You should return early. if (!priv-&gt;colorChooser) return;

&gt; Source/WebKit2/UIProcess/API/efl/ewk_view.h:108
&gt; +    Eina_Bool (*input_picker_show)(Ewk_View_Smart_Data *sd, Ewk_Input_Type inputType, const char* inputValue);

star on wrong side.

&gt; Source/WebKit2/UIProcess/API/efl/ewk_view.h:469
&gt; + *

We should document the format of the color argument? Hexadecimal only?

&gt; Source/WebKit2/UIProcess/API/efl/ewk_view.h:473
&gt; +EAPI void ewk_view_color_chooser_color_set(Evas_Object *o, const char *color);

You can set but not get the color?
Also, we usually return Eina_Bool for setters.

&gt; Source/WebKit2/UIProcess/API/efl/ewk_view.h:480
&gt; +EAPI void ewk_view_color_chooser_close(Evas_Object *o);

We usually return Eina_Bool.

&gt; Source/WebKit2/UIProcess/efl/WebColorChooserProxyEfl.h:46
&gt; +    ~WebColorChooserProxyEfl();

You have virtual methods, the destructor needs to be virtual.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>677762</commentid>
    <comment_count>7</comment_count>
      <attachid>154272</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-07-25 01:05:20 -0700</bug_when>
    <thetext>Comment on attachment 154272
Patch

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

Could you explain how to implement color picker by application based on this new APIs ?

&gt; Source/WebKit2/ChangeLog:3
&gt; +        [EFL][WK2] Implement color chooser interface for EFL

I think this patch implements input picker as well. So, I think it is better to mention input picker as well.

&gt; Source/WebKit2/UIProcess/API/efl/ewk_view.cpp:73
&gt; +    OwnPtr&lt;InputPicker&gt; inputPicker;

I think below location is proper place for this variable definition.

http://trac.webkit.org/browser/trunk/Source/WebKit2/UIProcess/API/efl/ewk_view.cpp#L55

&gt; Source/WebKit2/UIProcess/API/efl/ewk_view.cpp:308
&gt; +    priv-&gt;inputPicker = nullptr;

You don&apos;t need to delete data based on OwnPtr. OwnPtr calls &quot;delete&quot; on that pointer when it goes out of scope.

&gt; Source/WebKit2/UIProcess/API/efl/ewk_view.h:108
&gt; +    Eina_Bool (*input_picker_show)(Ewk_View_Smart_Data *sd, Ewk_Input_Type inputType, const char* inputValue);

I&apos;m sorry I missed this previous review.

s/inputType/input_type/g and s/inputValue/input_value/g

Move &apos;*&apos; to variable side.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>677846</commentid>
    <comment_count>8</comment_count>
      <attachid>154305</attachid>
    <who name="KwangYong Choi">ky0.choi</who>
    <bug_when>2012-07-25 02:50:32 -0700</bug_when>
    <thetext>Created attachment 154305
Patch

1. Changed bug title.

2. Moved member variables to proper position.

3. Removed priv-&gt;inputPicker = nullptr;

4. Moved &quot;*&quot; to proper position and changed variable names.

5. Moved allocation of InputPicker routine to Ewk_View_Private_Data constructor.

6. Made early return.

7. ewk_view_color_chooser_color_set() function accepts all color formats webkit can recognize. For example, named color can be used. So, I removed color format example.

8. The initial value is passed when the InputPicker::show() is called. After that, UI can change values and sets the value user choose. I think the function to get the value is not necessary right now.

9. Added Eina_Bool return type for external api functions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>677850</commentid>
    <comment_count>9</comment_count>
      <attachid>154308</attachid>
    <who name="KwangYong Choi">ky0.choi</who>
    <bug_when>2012-07-25 03:00:28 -0700</bug_when>
    <thetext>Created attachment 154308
Patch

Moved &quot;*&quot; to proper position in ewk_view.h which follows efl coding rules.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>677859</commentid>
    <comment_count>10</comment_count>
      <attachid>154310</attachid>
    <who name="KwangYong Choi">ky0.choi</who>
    <bug_when>2012-07-25 03:16:42 -0700</bug_when>
    <thetext>Created attachment 154310
Patch

Rebased.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>677917</commentid>
    <comment_count>11</comment_count>
      <attachid>154310</attachid>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2012-07-25 04:33:27 -0700</bug_when>
    <thetext>Comment on attachment 154310
Patch

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

&gt; Source/WebKit2/UIProcess/API/efl/InputPicker.h:31
&gt; +#include &quot;ewk_view.h&quot;
&gt; +
&gt; +typedef struct _Evas_Object Evas_Object;

ewk_view.h already have Evas.h. so typedef is not needed.

&gt; Source/WebKit2/UIProcess/API/efl/InputPicker.h:35
&gt; +class InputPicker {

I don&apos;t have idea how to implement input picker because we can not use elementary and edj approach is too expensive.

So,  exposing interface as member of smart class looks enough to me.

&gt; Source/WebKit2/UIProcess/API/efl/ewk_view.cpp:1146
&gt; +    return EINA_TRUE;
&gt; +#endif // ENABLE(INPUT_TYPE_COLOR)
&gt; +    return EINA_FALSE;

macro is wrong.

And remove // ...

&gt; Source/WebKit2/UIProcess/API/efl/ewk_view.cpp:1163
&gt; +    return EINA_TRUE;
&gt; +#endif // ENABLE(INPUT_TYPE_COLOR)
&gt; +    return EINA_FALSE;

Ditto.

&gt; Source/WebKit2/UIProcess/API/efl/ewk_view.h:75
&gt; +    EWK_INPUT_TYPE_TELEPHONE = 1, 

I am not sure. but webkit does not use = 1 for enum.

please check whether I am right.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>677930</commentid>
    <comment_count>12</comment_count>
    <who name="KwangYong Choi">ky0.choi</who>
    <bug_when>2012-07-25 04:49:59 -0700</bug_when>
    <thetext>&gt; Could you explain how to implement color picker by application based on this new APIs ?

There are two ways using input picker interface:

1. Internal implementation

UI implementation in internal webkit will be used by default. The start of implementation location is InputPicker::show().

2. External application implementation

The application can use their own view_add function instead of ewk_view_add(). And it can set the smart class its own using ewk_view_smart_class_set().

Eina_Bool browser_view_smart_class_set(Ewk_View_Smart_Class* api)
{
    if (!ewk_view_smart_class_set(api))
        return false;

    api-&gt;input_picker_show = _browser_input_picker_show; // override

    return true;
}

The overrided function will be called when the input picker is required.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>677939</commentid>
    <comment_count>13</comment_count>
      <attachid>154310</attachid>
    <who name="KwangYong Choi">ky0.choi</who>
    <bug_when>2012-07-25 05:07:28 -0700</bug_when>
    <thetext>Comment on attachment 154310
Patch

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

&gt;&gt; Source/WebKit2/UIProcess/API/efl/InputPicker.h:35
&gt;&gt; +class InputPicker {
&gt; 
&gt; I don&apos;t have idea how to implement input picker because we can not use elementary and edj approach is too expensive.
&gt; 
&gt; So,  exposing interface as member of smart class looks enough to me.

I agree with you. I&apos;ll remove this.

&gt;&gt; Source/WebKit2/UIProcess/API/efl/ewk_view.cpp:1146
&gt;&gt; +    return EINA_FALSE;
&gt; 
&gt; macro is wrong.
&gt; 
&gt; And remove // ...

Can you explain why it&apos;s wrong?

And &quot;//&quot; is used in many places.

&gt;&gt; Source/WebKit2/UIProcess/API/efl/ewk_view.h:75
&gt;&gt; +    EWK_INPUT_TYPE_TELEPHONE = 1, 
&gt; 
&gt; I am not sure. but webkit does not use = 1 for enum.
&gt; 
&gt; please check whether I am right.

It can be used, I think.

enum AccessibilityRole {
    AnnotationRole = 1,
    ApplicationRole,
    ApplicationAlertRole,</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>678567</commentid>
    <comment_count>14</comment_count>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2012-07-25 16:02:53 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; (From update of attachment 154310 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=154310&amp;action=review
&gt; 
&gt; &gt;&gt; Source/WebKit2/UIProcess/API/efl/InputPicker.h:35
&gt; &gt;&gt; +class InputPicker {
&gt; &gt; 
&gt; &gt; I don&apos;t have idea how to implement input picker because we can not use elementary and edj approach is too expensive.
&gt; &gt; 
&gt; &gt; So,  exposing interface as member of smart class looks enough to me.
&gt; 
&gt; I agree with you. I&apos;ll remove this.
&gt; 
&gt; &gt;&gt; Source/WebKit2/UIProcess/API/efl/ewk_view.cpp:1146
&gt; &gt;&gt; +    return EINA_FALSE;
&gt; &gt; 
&gt; &gt; macro is wrong.
&gt; &gt; 
&gt; &gt; And remove // ...
&gt; 
&gt; Can you explain why it&apos;s wrong?

Sure, when enabled INPUT_TYPE_COLOR, this function have two return statement.
Although compile ignore last one, he probably complain it as warning.

&gt; 
&gt; And &quot;//&quot; is used in many places.
I don&apos;t know whether we have rules for this.
But, I believe that &quot;// ENABLE(XXX)&quot; is used to reduce confusion from big fence of macro or overlapped macro.

IMO, this is not necessary and bad with readibility for the small guard.

&gt; 
&gt; &gt;&gt; Source/WebKit2/UIProcess/API/efl/ewk_view.h:75
&gt; &gt;&gt; +    EWK_INPUT_TYPE_TELEPHONE = 1, 
&gt; &gt; 
&gt; &gt; I am not sure. but webkit does not use = 1 for enum.
&gt; &gt; 
&gt; &gt; please check whether I am right.
&gt; 
&gt; It can be used, I think.
&gt; 
&gt; enum AccessibilityRole {
&gt;     AnnotationRole = 1,
&gt;     ApplicationRole,
&gt;     ApplicationAlertRole,

OK if then, I don&apos;t have objection for this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>678599</commentid>
    <comment_count>15</comment_count>
      <attachid>154474</attachid>
    <who name="KwangYong Choi">ky0.choi</who>
    <bug_when>2012-07-25 16:37:24 -0700</bug_when>
    <thetext>Created attachment 154474
Patch

1. Removed InputPicker class for internal implementation.

2. Used #else for macro block

3. Removed needless &quot;//&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>678884</commentid>
    <comment_count>16</comment_count>
      <attachid>154474</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-07-25 23:08:29 -0700</bug_when>
    <thetext>Comment on attachment 154474
Patch

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

&gt; Source/WebKit2/UIProcess/API/efl/ewk_view.cpp:1102
&gt; +    EINA_SAFETY_ON_NULL_RETURN(smartData-&gt;api-&gt;input_picker_show);

Don&apos;t you need to check if inputValue is null ?

&gt; Source/WebKit2/UIProcess/API/efl/ewk_view.cpp:1122
&gt; +    EWK_VIEW_SD_GET_OR_RETURN(ewkView, smartData, EINA_FALSE);

Use standard boolean instead of EINA_FALSE.

&gt; Source/WebKit2/UIProcess/API/efl/ewk_view.cpp:1123
&gt; +    EWK_VIEW_PRIV_GET_OR_RETURN(smartData, priv, EINA_FALSE);

ditto.

&gt; Source/WebKit2/UIProcess/API/efl/ewk_view.cpp:1126
&gt; +        return EINA_FALSE;

ditto.

&gt; Source/WebKit2/UIProcess/API/efl/ewk_view.cpp:1130
&gt; +    return EINA_TRUE;

ditto.

&gt; Source/WebKit2/UIProcess/API/efl/ewk_view.cpp:1132
&gt; +    return EINA_FALSE;

ditto.

&gt; Source/WebKit2/UIProcess/API/efl/ewk_view.cpp:1139
&gt; +    EWK_VIEW_SD_GET_OR_RETURN(ewkView, smartData, EINA_FALSE);

ditto.

&gt; Source/WebKit2/UIProcess/API/efl/ewk_view.cpp:1140
&gt; +    EWK_VIEW_PRIV_GET_OR_RETURN(smartData, priv, EINA_FALSE);

ditto.

&gt; Source/WebKit2/UIProcess/API/efl/ewk_view.cpp:1143
&gt; +        return EINA_FALSE;

ditto.

&gt; Source/WebKit2/UIProcess/API/efl/ewk_view.cpp:1148
&gt; +    return EINA_TRUE;

ditto.

&gt; Source/WebKit2/UIProcess/API/efl/ewk_view.cpp:1150
&gt; +    return EINA_FALSE;

ditto.

&gt; Source/WebKit2/UIProcess/API/efl/ewk_view.h:109
&gt; +    Eina_Bool (*input_picker_show)(Ewk_View_Smart_Data *sd, Ewk_Input_Type input_type, const char *input_value);

Whenever you change this public smart class, you should update EWK_VIEW_SMART_CLASS_VERSION.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>678969</commentid>
    <comment_count>17</comment_count>
      <attachid>154565</attachid>
    <who name="KwangYong Choi">ky0.choi</who>
    <bug_when>2012-07-26 00:48:40 -0700</bug_when>
    <thetext>Created attachment 154565
Patch

1. Modified to use standard boolean value instead of EINA_TRUE/EINA_FALSE.

The input value is color.serialized(). It can not be null, I think.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>680041</commentid>
    <comment_count>18</comment_count>
      <attachid>154565</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-07-26 19:54:14 -0700</bug_when>
    <thetext>Comment on attachment 154565
Patch

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

Almost looks fine except for my comment.

&gt; Source/WebKit2/UIProcess/API/efl/ewk_view.cpp:70
&gt; +    WebColorChooserProxyEfl* colorChooser;

Don&apos;t you need to initialize this variable ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>680094</commentid>
    <comment_count>19</comment_count>
      <attachid>154833</attachid>
    <who name="KwangYong Choi">ky0.choi</who>
    <bug_when>2012-07-26 21:37:52 -0700</bug_when>
    <thetext>Created attachment 154833
Patch

Added initialization code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>680095</commentid>
    <comment_count>20</comment_count>
      <attachid>154833</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-07-26 21:39:08 -0700</bug_when>
    <thetext>Comment on attachment 154833
Patch

LGTM now, thanks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>690276</commentid>
    <comment_count>21</comment_count>
      <attachid>154833</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-08-08 06:57:58 -0700</bug_when>
    <thetext>Comment on attachment 154833
Patch

Can you make some test or at least show that it is possible to easily inherit to implement the picker.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>690295</commentid>
    <comment_count>22</comment_count>
    <who name="KwangYong Choi">ky0.choi</who>
    <bug_when>2012-08-08 07:27:53 -0700</bug_when>
    <thetext>(In reply to comment #21)
&gt; (From update of attachment 154833 [details])
&gt; Can you make some test or at least show that it is possible to easily inherit to implement the picker.

As you know, this patch is an interface from UI to the color chooser on WebCore.

This implementation has 3 interfaces.

1. Show color picker
2. Set color changed
3. Close color picker

The application(browser app, etc) using webkit should provide color picker. It should show color picker dialog or popup when it receives show color picker call. The color picker implementation can be anything including color selector of EFL. I think, it&apos;s similar to color dialog on Windows. After showing the color picker, the user can select color from color dialog or popup.

Below is pseudo example for using color picker.

Eina_Bool browser_view_smart_class_set(Ewk_View_Smart_Class* api)
{
    if (!ewk_view_smart_class_set(api))
        return false;

    // register show color picker callback to smart class
    api-&gt;input_picker_show = _browser_input_picker_show;

    return true;
}

void _browser_input_picker_show(smartData, type, value)
{
    // display input picker by type and register callback functions
    elm_color_selector_show(); // this is for example
    register_changed_callback(callback_color_selected);
    register_close_callback(callback_color_picker_closed);
}

void callback_color_selected(color)
{
    // set color changed
    ewk_view_color_chooser_color_set(color);
}

void callback_color_picker_closed()
{
    // close color picker
    ewk_view_color_chooser_close();

    // unregister callback functions and destroy color picker
}</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>690313</commentid>
    <comment_count>23</comment_count>
      <attachid>154833</attachid>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2012-08-08 07:50:08 -0700</bug_when>
    <thetext>Comment on attachment 154833
Patch

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

&gt; Source/WebKit2/UIProcess/API/efl/ewk_view.cpp:1105
&gt; +    EINA_SAFETY_ON_NULL_RETURN(smartData-&gt;api-&gt;input_picker_show);

EINA_SAFETY_ON_NULL_RETURN will complain when input_picker_show is null.

please change this as `if () return;`

&gt; Source/WebKit2/UIProcess/efl/WebColorChooserProxyEfl.cpp:43
&gt; +WebColorChooserProxyEfl::~WebColorChooserProxyEfl()
&gt; +{
&gt; +}

I am not sure whether we don&apos;t need to clear colorChooser of ewk_view.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>691078</commentid>
    <comment_count>24</comment_count>
    <who name="KwangYong Choi">ky0.choi</who>
    <bug_when>2012-08-08 18:45:58 -0700</bug_when>
    <thetext>(In reply to comment #23)
&gt; (From update of attachment 154833 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=154833&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/efl/ewk_view.cpp:1105
&gt; &gt; +    EINA_SAFETY_ON_NULL_RETURN(smartData-&gt;api-&gt;input_picker_show);
&gt; 
&gt; EINA_SAFETY_ON_NULL_RETURN will complain when input_picker_show is null.
&gt; 
&gt; please change this as `if () return;`

OK.

&gt; 
&gt; &gt; Source/WebKit2/UIProcess/efl/WebColorChooserProxyEfl.cpp:43
&gt; &gt; +WebColorChooserProxyEfl::~WebColorChooserProxyEfl()
&gt; &gt; +{
&gt; &gt; +}
&gt; 
&gt; I am not sure whether we don&apos;t need to clear colorChooser of ewk_view.

I think it should be required. Color chooser can be destroyed before color picker closed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>691112</commentid>
    <comment_count>25</comment_count>
      <attachid>157372</attachid>
    <who name="KwangYong Choi">ky0.choi</who>
    <bug_when>2012-08-08 19:32:14 -0700</bug_when>
    <thetext>Created attachment 157372
Patch

Added destroy api to close input picker on ewk_view.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>691187</commentid>
    <comment_count>26</comment_count>
      <attachid>157372</attachid>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2012-08-08 21:59:49 -0700</bug_when>
    <thetext>Comment on attachment 157372
Patch

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

I think that patch itself is almost done.
If possible, I want to add test cases for this.

&gt; Source/WebKit2/UIProcess/API/efl/ewk_view.cpp:72
&gt; +#if ENABLE(INPUT_TYPE_COLOR)
&gt; +    WebColorChooserProxyEfl* colorChooser;
&gt; +#endif
&gt; +

I think that you should rebase.

&gt; Source/WebKit2/UIProcess/API/efl/ewk_view.cpp:1154
&gt; +    priv-&gt;colorChooser-&gt;setSelectedColor(Color(color));

You should check whether color is null and valid.
If color is null, it will be crashed.

please fix and make test case.

&gt; Source/WebKit2/UIProcess/API/efl/ewk_view.h:75
&gt; +    EWK_INPUT_TYPE_TELEPHONE = 1, 

White space in last letter.

&gt; Source/WebKit2/UIProcess/API/efl/ewk_view.h:473
&gt; + * @param color the color value to be set

Could you address which kinds of string is allowed.

&gt; Source/WebKit2/UIProcess/API/efl/ewk_view_private.h:82
&gt; +void ewk_view_input_picker_close(Evas_Object* ewkView, Ewk_Input_Type inputType);
&gt; +#if ENABLE(INPUT_TYPE_COLOR)

I prefer to add empty line.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>691223</commentid>
    <comment_count>27</comment_count>
      <attachid>157372</attachid>
    <who name="KwangYong Choi">ky0.choi</who>
    <bug_when>2012-08-08 22:45:28 -0700</bug_when>
    <thetext>Comment on attachment 157372
Patch

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

I will find available test for this patch. It changes layout of &lt;input type=&quot;color&quot;&gt;. So, it will change some test related color type of input.

&gt;&gt; Source/WebKit2/UIProcess/API/efl/ewk_view.cpp:72
&gt;&gt; +
&gt; 
&gt; I think that you should rebase.

OK.

&gt;&gt; Source/WebKit2/UIProcess/API/efl/ewk_view.cpp:1154
&gt;&gt; +    priv-&gt;colorChooser-&gt;setSelectedColor(Color(color));
&gt; 
&gt; You should check whether color is null and valid.
&gt; If color is null, it will be crashed.
&gt; 
&gt; please fix and make test case.

OK.

&gt;&gt; Source/WebKit2/UIProcess/API/efl/ewk_view.h:75
&gt;&gt; +    EWK_INPUT_TYPE_TELEPHONE = 1, 
&gt; 
&gt; White space in last letter.

OK.

&gt;&gt; Source/WebKit2/UIProcess/API/efl/ewk_view.h:473
&gt;&gt; + * @param color the color value to be set
&gt; 
&gt; Could you address which kinds of string is allowed.

It is possible to set color by named color or #000000 style.

Do you think it&apos;s better to mention this on parameter description?

&gt;&gt; Source/WebKit2/UIProcess/API/efl/ewk_view_private.h:82
&gt;&gt; +#if ENABLE(INPUT_TYPE_COLOR)
&gt; 
&gt; I prefer to add empty line.

OK.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>691229</commentid>
    <comment_count>28</comment_count>
      <attachid>157372</attachid>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2012-08-08 22:52:52 -0700</bug_when>
    <thetext>Comment on attachment 157372
Patch

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

&gt;&gt;&gt; Source/WebKit2/UIProcess/API/efl/ewk_view.h:473
&gt;&gt;&gt; + * @param color the color value to be set
&gt;&gt; 
&gt;&gt; Could you address which kinds of string is allowed.
&gt; 
&gt; It is possible to set color by named color or #000000 style.
&gt; 
&gt; Do you think it&apos;s better to mention this on parameter description?

Yes, I want to update description.

If I am right, named color, #RRGGBB and #RGB are possible.

Can I know whether alpha is also supported for this tag?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>691247</commentid>
    <comment_count>29</comment_count>
      <attachid>157372</attachid>
    <who name="KwangYong Choi">ky0.choi</who>
    <bug_when>2012-08-08 23:10:18 -0700</bug_when>
    <thetext>Comment on attachment 157372
Patch

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

&gt;&gt;&gt;&gt; Source/WebKit2/UIProcess/API/efl/ewk_view.h:473
&gt;&gt;&gt;&gt; + * @param color the color value to be set
&gt;&gt;&gt; 
&gt;&gt;&gt; Could you address which kinds of string is allowed.
&gt;&gt; 
&gt;&gt; It is possible to set color by named color or #000000 style.
&gt;&gt; 
&gt;&gt; Do you think it&apos;s better to mention this on parameter description?
&gt; 
&gt; Yes, I want to update description.
&gt; 
&gt; If I am right, named color, #RRGGBB and #RGB are possible.
&gt; 
&gt; Can I know whether alpha is also supported for this tag?

OK. I will update the description.

Color input type does not support alpha value.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>691277</commentid>
    <comment_count>30</comment_count>
      <attachid>157372</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-08-09 00:13:10 -0700</bug_when>
    <thetext>Comment on attachment 157372
Patch

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

&gt; Source/WebKit2/UIProcess/API/efl/ewk_view.cpp:1106
&gt; +    if (!smartData-&gt;api-&gt;input_picker_show)

I think EINA_SAFETY_ON_NULL_RETURN(smartData-&gt;api-&gt;input_picker_show) is more simple.

&gt; Source/WebKit2/UIProcess/API/efl/ewk_view.cpp:1117
&gt; +    if (!smartData-&gt;api-&gt;input_picker_hide)

ditto.

&gt; Source/WebKit2/UIProcess/API/efl/ewk_view.cpp:1151
&gt; +    if (!priv-&gt;colorChooser)

ditto.

&gt; Source/WebKit2/UIProcess/API/efl/ewk_view.cpp:1168
&gt; +    if (!priv-&gt;colorChooser)

ditto.

&gt; Source/WebKit2/UIProcess/efl/WebColorChooserProxyEfl.cpp:49
&gt; +    if (m_client)

Generally, WebKit prefers to use early return as below,
   if (!m_client)
       return;

If this function will have more function calls, I think early return is better.

See also, WebColorChooserProxyQt.cpp

&gt; Source/WebKit2/UIProcess/efl/WebColorChooserProxyEfl.cpp:55
&gt; +    if (m_client)

ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>691356</commentid>
    <comment_count>31</comment_count>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-08-09 01:53:25 -0700</bug_when>
    <thetext>(In reply to comment #23)
&gt; (From update of attachment 154833 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=154833&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/efl/ewk_view.cpp:1105
&gt; &gt; +    EINA_SAFETY_ON_NULL_RETURN(smartData-&gt;api-&gt;input_picker_show);
&gt; 
&gt; EINA_SAFETY_ON_NULL_RETURN will complain when input_picker_show is null.
&gt; 
&gt; please change this as `if () return;

Ryuan, EINA_SAFETY_ON_NULL_RETURN() is already being used by WK2 ewk_view.cpp as below,

 EINA_SAFETY_ON_NULL_RETURN(smartData-&gt;api-&gt;focus_in);

Is it better to complain when input_picker_show is null ? How do you think about it ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>691364</commentid>
    <comment_count>32</comment_count>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2012-08-09 02:06:36 -0700</bug_when>
    <thetext>(In reply to comment #31)
&gt; (In reply to comment #23)
&gt; &gt; (From update of attachment 154833 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=154833&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/WebKit2/UIProcess/API/efl/ewk_view.cpp:1105
&gt; &gt; &gt; +    EINA_SAFETY_ON_NULL_RETURN(smartData-&gt;api-&gt;input_picker_show);
&gt; &gt; 
&gt; &gt; EINA_SAFETY_ON_NULL_RETURN will complain when input_picker_show is null.
&gt; &gt; 
&gt; &gt; please change this as `if () return;
&gt; 
&gt; Ryuan, EINA_SAFETY_ON_NULL_RETURN() is already being used by WK2 ewk_view.cpp as below,
&gt; 
&gt;  EINA_SAFETY_ON_NULL_RETURN(smartData-&gt;api-&gt;focus_in);
&gt; 
&gt; Is it better to complain when input_picker_show is null ? How do you think about it ?

OK, I wanted not for minibrowser to complain.
But now, it looks reasonable.
When input_picker_show is null, clicking &lt;input type=&quot;color&quot;&gt; will not be working.
So, I agree with you.


KwangYoung, sorry for the confusion.
Could you keep your previous one like gyuyoung mentioned.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>696152</commentid>
    <comment_count>33</comment_count>
    <who name="Thiago Marcos P. Santos">tmpsantos</who>
    <bug_when>2012-08-15 11:04:33 -0700</bug_when>
    <thetext>Could you please add some tests (preferable EFL WK2 unit tests) for this API.

These are the instructions of how to write new tests:
http://trac.webkit.org/wiki/EFLWebKitTests

I wrote the QtWebkit2 implementation of ColorPicker. If you are not sure of how to write the tests, you can use as inspiration (see bug 87989).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>696615</commentid>
    <comment_count>34</comment_count>
    <who name="KwangYong Choi">ky0.choi</who>
    <bug_when>2012-08-15 18:47:47 -0700</bug_when>
    <thetext>(In reply to comment #33)
&gt; Could you please add some tests (preferable EFL WK2 unit tests) for this API.
&gt; 
&gt; These are the instructions of how to write new tests:
&gt; http://trac.webkit.org/wiki/EFLWebKitTests
&gt; 
&gt; I wrote the QtWebkit2 implementation of ColorPicker. If you are not sure of how to write the tests, you can use as inspiration (see bug 87989).

I have a plan to add a new test for this patch.

Thank you for your comment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>698178</commentid>
    <comment_count>35</comment_count>
      <attachid>159079</attachid>
    <who name="KwangYong Choi">ky0.choi</who>
    <bug_when>2012-08-17 04:04:22 -0700</bug_when>
    <thetext>Created attachment 159079
Patch

Applied Gyuyoung mentioned.

I tried to add a test to test_ewk2_view.cpp.

&lt;script&gt;
function show()
{
    document.getElementById(&quot;color&quot;).click();
}
&lt;/script&gt;

&lt;body onload=&quot;show()&quot;&gt;
&lt;input type=&quot;color&quot; id=&quot;color&quot;&gt;
&lt;/body&gt;

But, DOMActivateEvent does not create color chooser because user gesture is missing. I think, an api to control user gesture is required to implement color chooser test on EFL. It&apos;s not exist yet.

So, I wrote example code for this patch. I will attach it for reference.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>698179</commentid>
    <comment_count>36</comment_count>
      <attachid>159080</attachid>
    <who name="KwangYong Choi">ky0.choi</who>
    <bug_when>2012-08-17 04:06:48 -0700</bug_when>
    <thetext>Created attachment 159080
example

Color picker example.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>698180</commentid>
    <comment_count>37</comment_count>
      <attachid>159081</attachid>
    <who name="KwangYong Choi">ky0.choi</who>
    <bug_when>2012-08-17 04:07:41 -0700</bug_when>
    <thetext>Created attachment 159081
screenshot

Screenshot.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>698215</commentid>
    <comment_count>38</comment_count>
      <attachid>159079</attachid>
    <who name="Thiago Marcos P. Santos">tmpsantos</who>
    <bug_when>2012-08-17 05:02:40 -0700</bug_when>
    <thetext>Comment on attachment 159079
Patch

Please add API tests like in bug 88101.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>698240</commentid>
    <comment_count>39</comment_count>
    <who name="KwangYong Choi">ky0.choi</who>
    <bug_when>2012-08-17 05:21:32 -0700</bug_when>
    <thetext>(In reply to comment #38)
&gt; (From update of attachment 159079 [details])
&gt; Please add API tests like in bug 88101.

To implement a test for this patch, it should be required new api to set user gesture. Do you think the new api for test should be implemented?

As you know, EFL port uses gtest. And this test framework can not pass user action like QT or eventSender in layout test, as I know.

With my observation, it&apos;s not possible to create color chooser without user gesture.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>698267</commentid>
    <comment_count>40</comment_count>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2012-08-17 05:57:27 -0700</bug_when>
    <thetext>(In reply to comment #39)
&gt; (In reply to comment #38)
&gt; &gt; (From update of attachment 159079 [details] [details])
&gt; &gt; Please add API tests like in bug 88101.
&gt; 
&gt; To implement a test for this patch, it should be required new api to set user gesture. Do you think the new api for test should be implemented?
&gt; 
&gt; As you know, EFL port uses gtest. And this test framework can not pass user action like QT or eventSender in layout test, as I know.
&gt; 
&gt; With my observation, it&apos;s not possible to create color chooser without user gesture.

I believe that test is important, so we&apos;d better to make it.

but because we can not make test case now,
I suggest creating new bug to catch up when it is available.

tmpsantos, kwangyong,
How do you think about it?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>698744</commentid>
    <comment_count>41</comment_count>
    <who name="Thiago Marcos P. Santos">tmpsantos</who>
    <bug_when>2012-08-17 16:09:51 -0700</bug_when>
    <thetext>(In reply to comment #40)
&gt; (In reply to comment #39)
&gt; &gt; (In reply to comment #38)
&gt; &gt; &gt; (From update of attachment 159079 [details] [details] [details])
&gt; &gt; &gt; Please add API tests like in bug 88101.
&gt; &gt; 
&gt; &gt; To implement a test for this patch, it should be required new api to set user gesture. Do you think the new api for test should be implemented?
&gt; &gt; 
&gt; &gt; As you know, EFL port uses gtest. And this test framework can not pass user action like QT or eventSender in layout test, as I know.
&gt; &gt; 
&gt; &gt; With my observation, it&apos;s not possible to create color chooser without user gesture.
&gt; 
&gt; I believe that test is important, so we&apos;d better to make it.
&gt; 
&gt; but because we can not make test case now,
&gt; I suggest creating new bug to catch up when it is available.
&gt; 
&gt; tmpsantos, kwangyong,
&gt; How do you think about it?

Christophe has a patch that adds click support to the utest framework. I added it as dependency of this bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>698924</commentid>
    <comment_count>42</comment_count>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-08-17 23:29:25 -0700</bug_when>
    <thetext>&gt;&gt; Christophe has a patch that adds click support to the utest framework. I added it as dependency of this bug.

It looks this patch can simulate user gesture as Bug 90454. But, I&apos;d like to recommend to support this test in new bug because of review convenience. KwangYoung, could you file a bug for this patch&apos;s unit test ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>698925</commentid>
    <comment_count>43</comment_count>
      <attachid>159079</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-08-17 23:29:48 -0700</bug_when>
    <thetext>Comment on attachment 159079
Patch

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

&gt; Source/WebKit2/UIProcess/efl/WebColorChooserProxyEfl.h:35
&gt; +

Don&apos;t you need to declare Color namespace as Qt port ?

http://trac.webkit.org/browser/trunk/Source/WebKit2/UIProcess/qt/WebColorChooserProxyQt.h#L36

&gt; Source/WebKit2/UIProcess/efl/WebColorChooserProxyEfl.h:46
&gt; +    virtual ~WebColorChooserProxyEfl();

I think we don&apos;t need to use virtual keyword in derived class. Look at Qt port. 
http://trac.webkit.org/browser/trunk/Source/WebKit2/UIProcess/qt/WebColorChooserProxyQt.h#L50</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>699025</commentid>
    <comment_count>44</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-08-19 06:47:12 -0700</bug_when>
    <thetext>(In reply to comment #42)
&gt; &gt;&gt; Christophe has a patch that adds click support to the utest framework. I added it as dependency of this bug.
&gt; 
&gt; It looks this patch can simulate user gesture as Bug 90454. But, I&apos;d like to recommend to support this test in new bug because of review convenience. KwangYoung, could you file a bug for this patch&apos;s unit test ?

tmpsantos can confirm but I believe he prefers that the unit tests lands in the same patch and the feature. This avoids forgetting about the utests later and the functionality is tested as soon as it lands and we know it works for sure when it lands.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>699026</commentid>
    <comment_count>45</comment_count>
      <attachid>159079</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-08-19 06:51:36 -0700</bug_when>
    <thetext>Comment on attachment 159079
Patch

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

&gt;&gt; Source/WebKit2/UIProcess/efl/WebColorChooserProxyEfl.h:46
&gt;&gt; +    virtual ~WebColorChooserProxyEfl();
&gt; 
&gt; I think we don&apos;t need to use virtual keyword in derived class. Look at Qt port. 
&gt; http://trac.webkit.org/browser/trunk/Source/WebKit2/UIProcess/qt/WebColorChooserProxyQt.h#L50

Yes, it is unlikely that we subclass WebColorChooserProxyEfl so I tend to agree with Gyugyoung (although not really an issue).

&gt; Source/WebKit2/UIProcess/efl/WebColorChooserProxyEfl.h:48
&gt; +    virtual void endChooser();

If you follow Gyuyoung&apos;s advice and remove virtual destructor from the destructor then please do the same for this method (or it would be confusing).

&gt; Source/WebKit2/UIProcess/efl/WebColorChooserProxyEfl.h:49
&gt; +    virtual void setSelectedColor(const WebCore::Color&amp;);

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>699027</commentid>
    <comment_count>46</comment_count>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-08-19 06:56:15 -0700</bug_when>
    <thetext>(In reply to comment #44)
&gt; (In reply to comment #42)
&gt; &gt; &gt;&gt; Christophe has a patch that adds click support to the utest framework. I added it as dependency of this bug.
&gt; &gt; 
&gt; &gt; It looks this patch can simulate user gesture as Bug 90454. But, I&apos;d like to recommend to support this test in new bug because of review convenience. KwangYoung, could you file a bug for this patch&apos;s unit test ?
&gt; 
&gt; tmpsantos can confirm but I believe he prefers that the unit tests lands in the same patch and the feature. This avoids forgetting about the utests later and the functionality is tested as soon as it lands and we know it works for sure when it lands.

If we link a bug for unit test to this bug, we can remember to add unit test. IIRC, did you add unit tests in new bug ? In addition, I think review thread in this bug is already long. But, if KwangYong want to add unit test to this patch, I don&apos;t mind.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>699028</commentid>
    <comment_count>47</comment_count>
    <who name="Thiago Marcos P. Santos">tmpsantos</who>
    <bug_when>2012-08-19 07:18:38 -0700</bug_when>
    <thetext>(In reply to comment #46)
&gt; (In reply to comment #44)
&gt; &gt; (In reply to comment #42)
&gt; &gt; &gt; &gt;&gt; Christophe has a patch that adds click support to the utest framework. I added it as dependency of this bug.
&gt; &gt; &gt; 
&gt; &gt; &gt; It looks this patch can simulate user gesture as Bug 90454. But, I&apos;d like to recommend to support this test in new bug because of review convenience. KwangYoung, could you file a bug for this patch&apos;s unit test ?
&gt; &gt; 
&gt; &gt; tmpsantos can confirm but I believe he prefers that the unit tests lands in the same patch and the feature. This avoids forgetting about the utests later and the functionality is tested as soon as it lands and we know it works for sure when it lands.
&gt; 
&gt; If we link a bug for unit test to this bug, we can remember to add unit test. IIRC, did you add unit tests in new bug ? In addition, I think review thread in this bug is already long. But, if KwangYong want to add unit test to this patch, I don&apos;t mind.

When developers adds new features to WebCore, they have to write layout tests at the same patch. With EFL API, we should do the same. The only exception would be if, before landing this patch, the bug for the utests has a patch with r+. That was my case when I was writing ColorPicker for Qt and the reason I did that was because the test was QML and had to be reviewed by a QML expert.

New EFL features without tests should not be accepted anymore. We have a pretty decent test framework, bots are running the tests for every commit, documentation about how to write tests, etc.

Untested features are a nightmare when things start to fail, you are completely clueless about where to start looking. EFL WK2 is new, we have unique opportunity to have an API with 100% of test coverage.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>699035</commentid>
    <comment_count>48</comment_count>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-08-19 08:50:06 -0700</bug_when>
    <thetext>(In reply to comment #47)
&gt; When developers adds new features to WebCore, they have to write layout tests at the same patch. With EFL API, we should do the same. The only exception would be if, before landing this patch, the bug for the utests has a patch with r+. That was my case when I was writing ColorPicker for Qt and the reason I did that was because the test was QML and had to be reviewed by a QML expert.
&gt; 
&gt; New EFL features without tests should not be accepted anymore. We have a pretty decent test framework, bots are running the tests for every commit, documentation about how to write tests, etc.
&gt; 
&gt; Untested features are a nightmare when things start to fail, you are completely clueless about where to start looking. EFL WK2 is new, we have unique opportunity to have an API with 100% of test coverage.

Yes, we should add new feature with test case. I agree with your opinion 100%. But, recently some other patches weren&apos;t added with test cases AFAIK. I just didn&apos;t want to add new files because this patch was already reviewed many things. As you guys had added test cases in new bug (For example, Bug 90454), I think this patch can have a new bug for unit test because unit test problem wasn&apos;t addressed so far. Of course, I say again, I agree to land new functionality with test cases from now.

Because it looks many efl contributors don&apos;t know this issue well yet, please notify this to webkit-efl well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>699154</commentid>
    <comment_count>49</comment_count>
      <attachid>159079</attachid>
    <who name="KwangYong Choi">ky0.choi</who>
    <bug_when>2012-08-19 19:09:19 -0700</bug_when>
    <thetext>Comment on attachment 159079
Patch

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

Well, I will apply new patch with a test. I think, it&apos;s better to submit a feature with a test at the same time.

&gt;&gt; Source/WebKit2/UIProcess/efl/WebColorChooserProxyEfl.h:35
&gt;&gt; +
&gt; 
&gt; Don&apos;t you need to declare Color namespace as Qt port ?
&gt; 
&gt; http://trac.webkit.org/browser/trunk/Source/WebKit2/UIProcess/qt/WebColorChooserProxyQt.h#L36

#include &quot;Color.h&quot; is enough to use WebCore::Color.

&gt;&gt;&gt; Source/WebKit2/UIProcess/efl/WebColorChooserProxyEfl.h:46
&gt;&gt;&gt; +    virtual ~WebColorChooserProxyEfl();
&gt;&gt; 
&gt;&gt; I think we don&apos;t need to use virtual keyword in derived class. Look at Qt port. 
&gt;&gt; http://trac.webkit.org/browser/trunk/Source/WebKit2/UIProcess/qt/WebColorChooserProxyQt.h#L50
&gt; 
&gt; Yes, it is unlikely that we subclass WebColorChooserProxyEfl so I tend to agree with Gyugyoung (although not really an issue).

OK. I will remove virtual keyword.

&gt;&gt; Source/WebKit2/UIProcess/efl/WebColorChooserProxyEfl.h:48
&gt;&gt; +    virtual void endChooser();
&gt; 
&gt; If you follow Gyuyoung&apos;s advice and remove virtual destructor from the destructor then please do the same for this method (or it would be confusing).

OK

&gt;&gt; Source/WebKit2/UIProcess/efl/WebColorChooserProxyEfl.h:49
&gt;&gt; +    virtual void setSelectedColor(const WebCore::Color&amp;);
&gt; 
&gt; Ditto.

OK</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>699257</commentid>
    <comment_count>50</comment_count>
      <attachid>159343</attachid>
    <who name="KwangYong Choi">ky0.choi</who>
    <bug_when>2012-08-19 23:44:39 -0700</bug_when>
    <thetext>Created attachment 159343
Patch with test

1. Removed virtual keyword.

2. Added &quot;EINA_SAFETY_ON_NULL_RETURN(priv-&gt;colorChooser);&quot; in ewk_view_color_chooser_hide_request().

3. Test is implemented.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>699267</commentid>
    <comment_count>51</comment_count>
      <attachid>159343</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-08-19 23:54:00 -0700</bug_when>
    <thetext>Comment on attachment 159343
Patch with test

Attachment 159343 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/13527858</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>699270</commentid>
    <comment_count>52</comment_count>
      <attachid>159343</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-08-19 23:59:31 -0700</bug_when>
    <thetext>Comment on attachment 159343
Patch with test

General question, the input picker covers a whole lot, time, date, email, etc and is all kept together. Why is color different? and warrants a api on its own? API legacy? Can it be fixed?

Second question, why not make a proper WebKit2 C api for setting these which can be shared across ports and easily wrapped if needed. It feels pretty much like something which should be part of the UIClient. Have you looked into what kind of similar API we might get in the near future? File picker? Media picker?

I think you need to consider all these picker API&apos;s and figure out where they differ and which ones deserve an API on their own and which ones can be shared. Also you need to consider future changes in these APIs. How do we make an API that is more or less future proof? Do we need to?

What do we need really?

Media picker? (photos, files, etc)
Date and Time picker (date, time, month, week, etc)
Color picker?

That seems to cover most what is needed now.

telephone, number, email, url, password etc will probably not be implemented using pickers (they might, they might not). As we don&apos;t know how to handle these now, maybe we should leave them for later?

Lots of questions which I think should be looked at before diving into the code</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>699380</commentid>
    <comment_count>53</comment_count>
    <who name="KwangYong Choi">ky0.choi</who>
    <bug_when>2012-08-20 03:43:30 -0700</bug_when>
    <thetext>As I know, there are three kinds of input type. One is file, another is color and the other is date and time related. These types are handled differently in webkit. File type is using file chooser(openPanel), color type is using color chooser(has own proxy) and the others are handled as text field.

So, I think, it&apos;s required three kinds of api; the api for file input type, the api for color input type and the api for other types. This patch is one of these apis for color input type.

Date and time picker can be implemented by 1 api which is set the value. But color picker has 2 apis. One is set the value and the other is close the color chooser. It&apos;s allowed to call set api multiple times before close the color chooser. I think it&apos;s a difference between EFL and QT.

Why I am not make it as WK2 C api is because I&apos;m not sure it&apos;s required for all ports. I&apos;m working on EFL port and it&apos;s required, so I just implemented it for EFL. Actually, it&apos;s been implemented for Tizen first. I think it can be contributed, so I uploaded this patch.

As you mentioned, file picker, color picker and the date and time picker is most what we need for now. File picker and date and time picker should be implemented for EFL soon.

Rest of the types in ewk_view.h like tel, number, email, etc are for the reserved use. These values can be used by application, in the future. I may remove these values for now, and add again when these values are used.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>699526</commentid>
    <comment_count>54</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-08-20 08:09:33 -0700</bug_when>
    <thetext>(In reply to comment #53)
&gt; As I know, there are three kinds of input type. One is file, another is color and the other is date and time related. These types are handled differently in webkit. File type is using file chooser(openPanel), color type is using color chooser(has own proxy) and the others are handled as text field.
&gt; 
&gt; So, I think, it&apos;s required three kinds of api; the api for file input type, the api for color input type and the api for other types. This patch is one of these apis for color input type.

Could we make it only do that then? and file bugs for the others?

&gt; Date and time picker can be implemented by 1 api which is set the value. But color picker has 2 apis. One is set the value and the other is close the color chooser. It&apos;s allowed to call set api multiple times before close the color chooser. I think it&apos;s a difference between EFL and QT.

Why shouldn&apos;t that be possible for a date? Shouldn&apos;t it have select and close as well? I think it should.

&gt; Why I am not make it as WK2 C api is because I&apos;m not sure it&apos;s required for all ports. I&apos;m working on EFL port and it&apos;s required, so I just implemented it for EFL. Actually, it&apos;s been implemented for Tizen first. I think it can be contributed, so I uploaded this patch.

I am pretty sure that Qt and GTK would like this as well, it would be cool if you could give it a try

&gt; As you mentioned, file picker, color picker and the date and time picker is most what we need for now. File picker and date and time picker should be implemented for EFL soon.
&gt; 
&gt; Rest of the types in ewk_view.h like tel, number, email, etc are for the reserved use. These values can be used by application, in the future. I may remove these values for now, and add again when these values are used.

I think you should remove them for now, they can be handled in the future.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>700313</commentid>
    <comment_count>55</comment_count>
    <who name="KwangYong Choi">ky0.choi</who>
    <bug_when>2012-08-20 18:31:52 -0700</bug_when>
    <thetext>(In reply to comment #54)
&gt; (In reply to comment #53)
&gt; &gt; As I know, there are three kinds of input type. One is file, another is color and the other is date and time related. These types are handled differently in webkit. File type is using file chooser(openPanel), color type is using color chooser(has own proxy) and the others are handled as text field.
&gt; &gt; 
&gt; &gt; So, I think, it&apos;s required three kinds of api; the api for file input type, the api for color input type and the api for other types. This patch is one of these apis for color input type.
&gt; 
&gt; Could we make it only do that then? and file bugs for the others?

I think it&apos;s possible to file bugs for the others in the future. The features are separately implemented on Tizen.

&gt; &gt; Date and time picker can be implemented by 1 api which is set the value. But color picker has 2 apis. One is set the value and the other is close the color chooser. It&apos;s allowed to call set api multiple times before close the color chooser. I think it&apos;s a difference between EFL and QT.
&gt; 
&gt; Why shouldn&apos;t that be possible for a date? Shouldn&apos;t it have select and close as well? I think it should.

You&apos;re right. It can be possible. I just think about local implementation. In case of date and time picker, only one api which is set the value is implemented. I think, it&apos;s possible to implement for color type as well.

Do you think only one api which is set the value is required for all input pickers? I designed input_picker_show/input_picker_hide function can be used for all input types, but not for the set apis. Is it better to provide one api for the all types?

&gt; &gt; Why I am not make it as WK2 C api is because I&apos;m not sure it&apos;s required for all ports. I&apos;m working on EFL port and it&apos;s required, so I just implemented it for EFL. Actually, it&apos;s been implemented for Tizen first. I think it can be contributed, so I uploaded this patch.
&gt; 
&gt; I am pretty sure that Qt and GTK would like this as well, it would be cool if you could give it a try

Well, at first, I want just to implement color chooser proxy for EFL. For now, apis are added and a test is included. This patch is larger and larger. And it takes long time.

I wish WK2 C api could be handled by separate bug.

&gt; &gt; As you mentioned, file picker, color picker and the date and time picker is most what we need for now. File picker and date and time picker should be implemented for EFL soon.
&gt; &gt; 
&gt; &gt; Rest of the types in ewk_view.h like tel, number, email, etc are for the reserved use. These values can be used by application, in the future. I may remove these values for now, and add again when these values are used.
&gt; 
&gt; I think you should remove them for now, they can be handled in the future.

OK. You&apos;re right. I remove them for now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>700557</commentid>
    <comment_count>56</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-08-21 01:00:18 -0700</bug_when>
    <thetext>
&gt; I think it&apos;s possible to file bugs for the others in the future. The features are separately implemented on Tizen.

Please do so and make a master bug, cc me.

&gt; You&apos;re right. It can be possible. I just think about local implementation. In case of date and time picker, only one api which is set the value is implemented. I think, it&apos;s possible to implement for color type as well.

I think all should have a similar API. It should only differ if there is a valid reason to!
 
&gt; Do you think only one api which is set the value is required for all input pickers? I designed input_picker_show/input_picker_hide function can be used for all input types, but not for the set apis. Is it better to provide one api for the all types?

I think it is more future proof to make it say 3 sets of API calls, like one set for color, one for media (file, photos etc) and one for time and date.

&gt; Well, at first, I want just to implement color chooser proxy for EFL. For now, apis are added and a test is included. This patch is larger and larger. And it takes long time.
&gt; 
&gt; I wish WK2 C api could be handled by separate bug.

It can.

&gt; OK. You&apos;re right. I remove them for now.

Good</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>700620</commentid>
    <comment_count>57</comment_count>
      <attachid>159657</attachid>
    <who name="KwangYong Choi">ky0.choi</who>
    <bug_when>2012-08-21 04:42:40 -0700</bug_when>
    <thetext>Created attachment 159657
Patch

This patch has only 1 api named ewk_view_input_picker_color_set() for setting color, now. Similar apis can be implemented for the other types later.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>700628</commentid>
    <comment_count>58</comment_count>
      <attachid>159657</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-08-21 04:58:41 -0700</bug_when>
    <thetext>Comment on attachment 159657
Patch

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

&gt; Source/WebKit2/UIProcess/API/efl/ewk_view.h:615
&gt; +EAPI Eina_Bool ewk_view_input_picker_color_set(Evas_Object *o, const char *color);

it sounds as you can set color on any input picker which is not the case... wouldn&apos;t ewk_view_color_picker_color_set() ont be better?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>700632</commentid>
    <comment_count>59</comment_count>
      <attachid>159657</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-08-21 05:03:33 -0700</bug_when>
    <thetext>Comment on attachment 159657
Patch

Attachment 159657 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/13550297</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>700637</commentid>
    <comment_count>60</comment_count>
    <who name="KwangYong Choi">ky0.choi</who>
    <bug_when>2012-08-21 05:09:02 -0700</bug_when>
    <thetext>(In reply to comment #58)
&gt; (From update of attachment 159657 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=159657&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/efl/ewk_view.h:615
&gt; &gt; +EAPI Eina_Bool ewk_view_input_picker_color_set(Evas_Object *o, const char *color);
&gt; 
&gt; it sounds as you can set color on any input picker which is not the case... wouldn&apos;t ewk_view_color_picker_color_set() ont be better?

OK. I will change the api name.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>700638</commentid>
    <comment_count>61</comment_count>
    <who name="KwangYong Choi">ky0.choi</who>
    <bug_when>2012-08-21 05:11:53 -0700</bug_when>
    <thetext>(In reply to comment #59)
&gt; (From update of attachment 159657 [details])
&gt; Attachment 159657 [details] did not pass efl-ews (efl):
&gt; Output: http://queues.webkit.org/results/13550297

Gyuyoung, I&apos;m not sure why EWS fails on EFL. It has no problem on my local 32 bit and 64 bit Ubuntu. Can you see anything strange in this patch?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>700642</commentid>
    <comment_count>62</comment_count>
    <who name="Thiago Marcos P. Santos">tmpsantos</who>
    <bug_when>2012-08-21 05:18:42 -0700</bug_when>
    <thetext>(In reply to comment #61)
&gt; (In reply to comment #59)
&gt; &gt; (From update of attachment 159657 [details] [details])
&gt; &gt; Attachment 159657 [details] [details] did not pass efl-ews (efl):
&gt; &gt; Output: http://queues.webkit.org/results/13550297
&gt; 
&gt; Gyuyoung, I&apos;m not sure why EWS fails on EFL. It has no problem on my local 32 bit and 64 bit Ubuntu. Can you see anything strange in this patch?

../../lib/libewk2UnitTestUtils.a(EWK2UnitTestBase.cpp.o): In function `EWK2UnitTest::EWK2UnitTestBase::SetUp()&apos;:
EWK2UnitTestBase.cpp:(.text+0xef): undefined reference to `ewk_view_smart_add&apos;
collect2: ld returned 1 exit status
make[2]: *** [bin/test_ewk2_cookie_manager] Error 1
make[1]: *** [Source/WebKit2/CMakeFiles/test_ewk2_cookie_manager.dir/all] Error 2
make: *** [all] Error 2

The problem here is:
ewk_view_smart_add is not prefixed with EAPI on WebKit2/UIProcess/API/efl/ewk_view.h</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>700643</commentid>
    <comment_count>63</comment_count>
    <who name="Thiago Marcos P. Santos">tmpsantos</who>
    <bug_when>2012-08-21 05:19:54 -0700</bug_when>
    <thetext>(In reply to comment #62)
&gt; (In reply to comment #61)
&gt; &gt; (In reply to comment #59)
&gt; &gt; &gt; (From update of attachment 159657 [details] [details] [details])
&gt; &gt; &gt; Attachment 159657 [details] [details] [details] did not pass efl-ews (efl):
&gt; &gt; &gt; Output: http://queues.webkit.org/results/13550297
&gt; &gt; 
&gt; &gt; Gyuyoung, I&apos;m not sure why EWS fails on EFL. It has no problem on my local 32 bit and 64 bit Ubuntu. Can you see anything strange in this patch?
&gt; 
&gt; ../../lib/libewk2UnitTestUtils.a(EWK2UnitTestBase.cpp.o): In function `EWK2UnitTest::EWK2UnitTestBase::SetUp()&apos;:
&gt; EWK2UnitTestBase.cpp:(.text+0xef): undefined reference to `ewk_view_smart_add&apos;
&gt; collect2: ld returned 1 exit status
&gt; make[2]: *** [bin/test_ewk2_cookie_manager] Error 1
&gt; make[1]: *** [Source/WebKit2/CMakeFiles/test_ewk2_cookie_manager.dir/all] Error 2
&gt; make: *** [all] Error 2
&gt; 
&gt; The problem here is:
&gt; ewk_view_smart_add is not prefixed with EAPI on WebKit2/UIProcess/API/efl/ewk_view.h

Actually many of the public API&apos;s are not. I&apos;m going to fix this in a separated bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>700647</commentid>
    <comment_count>64</comment_count>
    <who name="KwangYong Choi">ky0.choi</who>
    <bug_when>2012-08-21 05:24:16 -0700</bug_when>
    <thetext>(In reply to comment #63)
&gt; (In reply to comment #62)
&gt; &gt; (In reply to comment #61)
&gt; &gt; &gt; (In reply to comment #59)
&gt; &gt; &gt; &gt; (From update of attachment 159657 [details] [details] [details] [details])
&gt; &gt; &gt; &gt; Attachment 159657 [details] [details] [details] [details] did not pass efl-ews (efl):
&gt; &gt; &gt; &gt; Output: http://queues.webkit.org/results/13550297
&gt; &gt; &gt; 
&gt; &gt; &gt; Gyuyoung, I&apos;m not sure why EWS fails on EFL. It has no problem on my local 32 bit and 64 bit Ubuntu. Can you see anything strange in this patch?
&gt; &gt; 
&gt; &gt; ../../lib/libewk2UnitTestUtils.a(EWK2UnitTestBase.cpp.o): In function `EWK2UnitTest::EWK2UnitTestBase::SetUp()&apos;:
&gt; &gt; EWK2UnitTestBase.cpp:(.text+0xef): undefined reference to `ewk_view_smart_add&apos;
&gt; &gt; collect2: ld returned 1 exit status
&gt; &gt; make[2]: *** [bin/test_ewk2_cookie_manager] Error 1
&gt; &gt; make[1]: *** [Source/WebKit2/CMakeFiles/test_ewk2_cookie_manager.dir/all] Error 2
&gt; &gt; make: *** [all] Error 2
&gt; &gt; 
&gt; &gt; The problem here is:
&gt; &gt; ewk_view_smart_add is not prefixed with EAPI on WebKit2/UIProcess/API/efl/ewk_view.h
&gt; 
&gt; Actually many of the public API&apos;s are not. I&apos;m going to fix this in a separated bug.

I see now. Thank you for your comment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>701384</commentid>
    <comment_count>65</comment_count>
      <attachid>159817</attachid>
    <who name="KwangYong Choi">ky0.choi</who>
    <bug_when>2012-08-21 17:44:06 -0700</bug_when>
    <thetext>Created attachment 159817
Patch

ewk_view_input_picker_color_set() -&gt; ewk_view_color_picker_color_set()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>701668</commentid>
    <comment_count>66</comment_count>
      <attachid>159817</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-08-22 01:31:48 -0700</bug_when>
    <thetext>Comment on attachment 159817
Patch

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

&gt; Source/WebKit2/UIProcess/API/efl/tests/test_ewk2_view.cpp:246
&gt; +    loadUrlSync(environment-&gt;urlForResource(&quot;input-type-color.html&quot;).data());

Personally, I would have used ewk_view_html_string_load() to avoid adding a input-type-color.html resource just for this.

&gt; Source/WebKit2/UIProcess/API/efl/tests/test_ewk2_view.cpp:257
&gt; +    mouseClick(30, 20);

Shouldn&apos;t the input element be positioned absolutely in CSS to ensure this works?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>701669</commentid>
    <comment_count>67</comment_count>
      <attachid>159817</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-08-22 01:34:50 -0700</bug_when>
    <thetext>Comment on attachment 159817
Patch

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

&gt; Source/WebKit2/UIProcess/API/efl/tests/resources/input-type-color.html:4
&gt; +&lt;input type=&quot;color&quot; value=&quot;#ff0000&quot;&gt;

you could load this as simple &quot;data:text/html,&lt;input type=&apos;color&apos; value=&apos;#ff0000&apos;&gt;&quot; WebKit will fill out the rest

&gt; Source/WebKit2/UIProcess/API/efl/tests/test_ewk2_view.cpp:246
&gt; +    loadUrlSync(environment-&gt;urlForResource(&quot;input-type-color.html&quot;).data());

loadUrlSync(&quot;data:text/html,&lt;input type=&apos;color&apos; value=&apos;#ff0000&apos;&gt;&quot;);</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>701685</commentid>
    <comment_count>68</comment_count>
      <attachid>159817</attachid>
    <who name="KwangYong Choi">ky0.choi</who>
    <bug_when>2012-08-22 01:50:12 -0700</bug_when>
    <thetext>Comment on attachment 159817
Patch

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

&gt;&gt;&gt; Source/WebKit2/UIProcess/API/efl/tests/test_ewk2_view.cpp:246
&gt;&gt;&gt; +    loadUrlSync(environment-&gt;urlForResource(&quot;input-type-color.html&quot;).data());
&gt;&gt; 
&gt;&gt; Personally, I would have used ewk_view_html_string_load() to avoid adding a input-type-color.html resource just for this.
&gt; 
&gt; loadUrlSync(&quot;data:text/html,&lt;input type=&apos;color&apos; value=&apos;#ff0000&apos;&gt;&quot;);

OK. I will change.

&gt;&gt; Source/WebKit2/UIProcess/API/efl/tests/test_ewk2_view.cpp:257
&gt;&gt; +    mouseClick(30, 20);
&gt; 
&gt; Shouldn&apos;t the input element be positioned absolutely in CSS to ensure this works?

This is a simple html. So, I think, the element can not avoid my click. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>701687</commentid>
    <comment_count>69</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-08-22 01:53:01 -0700</bug_when>
    <thetext>(In reply to comment #68)
&gt; (From update of attachment 159817 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=159817&amp;action=review
&gt; 
&gt; &gt;&gt;&gt; Source/WebKit2/UIProcess/API/efl/tests/test_ewk2_view.cpp:246
&gt; &gt;&gt;&gt; +    loadUrlSync(environment-&gt;urlForResource(&quot;input-type-color.html&quot;).data());
&gt; &gt;&gt; 
&gt; &gt;&gt; Personally, I would have used ewk_view_html_string_load() to avoid adding a input-type-color.html resource just for this.
&gt; &gt; 
&gt; &gt; loadUrlSync(&quot;data:text/html,&lt;input type=&apos;color&apos; value=&apos;#ff0000&apos;&gt;&quot;);
&gt; 
&gt; OK. I will change.
&gt; 
&gt; &gt;&gt; Source/WebKit2/UIProcess/API/efl/tests/test_ewk2_view.cpp:257
&gt; &gt;&gt; +    mouseClick(30, 20);
&gt; &gt; 
&gt; &gt; Shouldn&apos;t the input element be positioned absolutely in CSS to ensure this works?
&gt; 
&gt; This is a simple html. So, I think, the element can not avoid my click. :)

QtWebKit2 has api for sending events from the page to the ui and the other way around using a window.navigator.qt bridge and also an evaluateJavaScript.

At least evaluateJavaScript would be a nice addition so you can actually query the right coordinates. (That is of course another patch)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>701690</commentid>
    <comment_count>70</comment_count>
    <who name="KwangYong Choi">ky0.choi</who>
    <bug_when>2012-08-22 02:00:26 -0700</bug_when>
    <thetext>(In reply to comment #69)
&gt; (In reply to comment #68)
&gt; &gt; (From update of attachment 159817 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=159817&amp;action=review
&gt; &gt; 
&gt; &gt; &gt;&gt;&gt; Source/WebKit2/UIProcess/API/efl/tests/test_ewk2_view.cpp:246
&gt; &gt; &gt;&gt;&gt; +    loadUrlSync(environment-&gt;urlForResource(&quot;input-type-color.html&quot;).data());
&gt; &gt; &gt;&gt; 
&gt; &gt; &gt;&gt; Personally, I would have used ewk_view_html_string_load() to avoid adding a input-type-color.html resource just for this.
&gt; &gt; &gt; 
&gt; &gt; &gt; loadUrlSync(&quot;data:text/html,&lt;input type=&apos;color&apos; value=&apos;#ff0000&apos;&gt;&quot;);
&gt; &gt; 
&gt; &gt; OK. I will change.
&gt; &gt; 
&gt; &gt; &gt;&gt; Source/WebKit2/UIProcess/API/efl/tests/test_ewk2_view.cpp:257
&gt; &gt; &gt;&gt; +    mouseClick(30, 20);
&gt; &gt; &gt; 
&gt; &gt; &gt; Shouldn&apos;t the input element be positioned absolutely in CSS to ensure this works?
&gt; &gt; 
&gt; &gt; This is a simple html. So, I think, the element can not avoid my click. :)
&gt; 
&gt; QtWebKit2 has api for sending events from the page to the ui and the other way around using a window.navigator.qt bridge and also an evaluateJavaScript.
&gt; 
&gt; At least evaluateJavaScript would be a nice addition so you can actually query the right coordinates. (That is of course another patch)

That&apos;s a great idea for choosing the coordinate. I will find the way to use javascript execution. Maybe later?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>701692</commentid>
    <comment_count>71</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-08-22 02:01:39 -0700</bug_when>
    <thetext>&gt; That&apos;s a great idea for choosing the coordinate. I will find the way to use javascript execution. Maybe later?

Yes, later is fine</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>701694</commentid>
    <comment_count>72</comment_count>
      <attachid>159883</attachid>
    <who name="KwangYong Choi">ky0.choi</who>
    <bug_when>2012-08-22 02:04:08 -0700</bug_when>
    <thetext>Created attachment 159883
Patch

Modified to use html string instead of resource html file.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>701698</commentid>
    <comment_count>73</comment_count>
      <attachid>159883</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-08-22 02:11:32 -0700</bug_when>
    <thetext>Comment on attachment 159883
Patch

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

&gt; Source/WebKit2/UIProcess/API/efl/tests/test_ewk2_view.cpp:238
&gt; +static Eina_Bool hideColorPicker(Ewk_View_Smart_Data*, Ewk_Input_Type inputType)
&gt; +{
&gt; +    EXPECT_EQ(inputType, EWK_INPUT_TYPE_COLOR);
&gt; +}

Isn&apos;t it more important knowing that it was actually asked to hide, than whether it being the right type. Could you test the former?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>701705</commentid>
    <comment_count>74</comment_count>
      <attachid>159883</attachid>
    <who name="KwangYong Choi">ky0.choi</who>
    <bug_when>2012-08-22 02:22:59 -0700</bug_when>
    <thetext>Comment on attachment 159883
Patch

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

&gt;&gt; Source/WebKit2/UIProcess/API/efl/tests/test_ewk2_view.cpp:238
&gt;&gt; +}
&gt; 
&gt; Isn&apos;t it more important knowing that it was actually asked to hide, than whether it being the right type. Could you test the former?

Well, may I test the picker status here? I mean, whether showcolorPicker() is called or not.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>701709</commentid>
    <comment_count>75</comment_count>
      <attachid>159883</attachid>
    <who name="KwangYong Choi">ky0.choi</who>
    <bug_when>2012-08-22 02:35:40 -0700</bug_when>
    <thetext>Comment on attachment 159883
Patch

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

&gt;&gt;&gt; Source/WebKit2/UIProcess/API/efl/tests/test_ewk2_view.cpp:238
&gt;&gt;&gt; +}
&gt;&gt; 
&gt;&gt; Isn&apos;t it more important knowing that it was actually asked to hide, than whether it being the right type. Could you test the former?
&gt; 
&gt; Well, may I test the picker status here? I mean, whether showcolorPicker() is called or not.

Or, I can check ewk_view_color_picker_color_set() returns false here.

The application should do something here, so I&apos;m not making many test here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>701713</commentid>
    <comment_count>76</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-08-22 02:46:43 -0700</bug_when>
    <thetext>(In reply to comment #75)
&gt; (From update of attachment 159883 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=159883&amp;action=review
&gt; 
&gt; &gt;&gt;&gt; Source/WebKit2/UIProcess/API/efl/tests/test_ewk2_view.cpp:238
&gt; &gt;&gt;&gt; +}
&gt; &gt;&gt; 
&gt; &gt;&gt; Isn&apos;t it more important knowing that it was actually asked to hide, than whether it being the right type. Could you test the former?
&gt; &gt; 
&gt; &gt; Well, may I test the picker status here? I mean, whether showcolorPicker() is called or not.
&gt; 
&gt; Or, I can check ewk_view_color_picker_color_set() returns false here.
&gt; 
&gt; The application should do something here, so I&apos;m not making many test here.

Why not just add a static bool wasHidden = false; then set it to true and test later</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>701714</commentid>
    <comment_count>77</comment_count>
      <attachid>159883</attachid>
    <who name="KwangYong Choi">ky0.choi</who>
    <bug_when>2012-08-22 02:52:48 -0700</bug_when>
    <thetext>Comment on attachment 159883
Patch

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

&gt;&gt;&gt;&gt;&gt; Source/WebKit2/UIProcess/API/efl/tests/test_ewk2_view.cpp:238
&gt;&gt;&gt;&gt;&gt; +}
&gt;&gt;&gt;&gt; 
&gt;&gt;&gt;&gt; Isn&apos;t it more important knowing that it was actually asked to hide, than whether it being the right type. Could you test the former?
&gt;&gt;&gt; 
&gt;&gt;&gt; Well, may I test the picker status here? I mean, whether showcolorPicker() is called or not.
&gt;&gt; 
&gt;&gt; Or, I can check ewk_view_color_picker_color_set() returns false here.
&gt;&gt; 
&gt;&gt; The application should do something here, so I&apos;m not making many test here.
&gt; 
&gt; Why not just add a static bool wasHidden = false; then set it to true and test later

Actually, this function should be called twice because color picker is shown twice. So, I think, global variable is needed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>701717</commentid>
    <comment_count>78</comment_count>
      <attachid>159889</attachid>
    <who name="KwangYong Choi">ky0.choi</who>
    <bug_when>2012-08-22 03:00:52 -0700</bug_when>
    <thetext>Created attachment 159889
Patch

Added a test to check color picker is shown or not when it is closed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>701828</commentid>
    <comment_count>79</comment_count>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2012-08-22 06:20:36 -0700</bug_when>
    <thetext>(In reply to comment #52)
&gt; Second question, why not make a proper WebKit2 C api for setting these which can be shared across ports and easily wrapped if needed. It feels pretty much like something which should be part of the UIClient. Have you looked into what kind of similar API we might get in the near future? File picker? Media picker?

I agree with Kenneth here. It might be tricky to get it right with regards to the actual picker &quot;values&quot; and how to represent them properly in the C API, but conceptually I think it&apos;s definitely worth a try to come up with a C API here. And even then, the C API can consist of common parts and port specific parts (when certain types are needed).

I agree though that this can be a separate patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>705071</commentid>
    <comment_count>80</comment_count>
    <who name="KwangYong Choi">ky0.choi</who>
    <bug_when>2012-08-27 02:05:04 -0700</bug_when>
    <thetext>(In reply to comment #79)
&gt; (In reply to comment #52)
&gt; &gt; Second question, why not make a proper WebKit2 C api for setting these which can be shared across ports and easily wrapped if needed. It feels pretty much like something which should be part of the UIClient. Have you looked into what kind of similar API we might get in the near future? File picker? Media picker?
&gt; 
&gt; I agree with Kenneth here. It might be tricky to get it right with regards to the actual picker &quot;values&quot; and how to represent them properly in the C API, but conceptually I think it&apos;s definitely worth a try to come up with a C API here. And even then, the C API can consist of common parts and port specific parts (when certain types are needed).
&gt; 
&gt; I agree though that this can be a separate patch.

I created bug 95058 for implementing WK2 C API.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>708529</commentid>
    <comment_count>81</comment_count>
      <attachid>161452</attachid>
    <who name="KwangYong Choi">ky0.choi</who>
    <bug_when>2012-08-30 05:41:44 -0700</bug_when>
    <thetext>Created attachment 161452
Patch

Implemented WK2 C API.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>708551</commentid>
    <comment_count>82</comment_count>
      <attachid>161452</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-08-30 06:09:59 -0700</bug_when>
    <thetext>Comment on attachment 161452
Patch

Attachment 161452 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/13685728</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>708558</commentid>
    <comment_count>83</comment_count>
      <attachid>161452</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-08-30 06:18:29 -0700</bug_when>
    <thetext>Comment on attachment 161452
Patch

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

&gt; Source/WebKit2/UIProcess/WebPageProxy.cpp:2716
&gt;      m_colorChooser = m_pageClient-&gt;createColorChooserProxy(this, initialColor);
&gt; +
&gt; +    m_uiClient.showColorPicker(this, initialColor.serialized());

So shouldn&apos;t it be like if no showColorPicker method exists you use the m_colorChooser line? if not, you use this? So there is some kind of default fallback for platforms that wants that?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>708564</commentid>
    <comment_count>84</comment_count>
      <attachid>161452</attachid>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2012-08-30 06:35:16 -0700</bug_when>
    <thetext>Comment on attachment 161452
Patch

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

&gt; Source/WebKit2/UIProcess/API/C/WKPage.h:289
&gt; +    WKPageShowColorPickerCallback                                       showColorPicker;
&gt; +    WKPageHideColorPickerCallback                                       hideColorPicker;

These additions will require changing QtWebPageUIClient in order to build the Qt port.

&gt; Source/WebKit2/UIProcess/API/C/WKPage.h:500
&gt; +WK_EXPORT void WKPageSetColorPickerColor(WKPageRef pageRef, WKStringRef selectedColor);

I&apos;m not 1000% sure, but I think a more common pattern would be to give the showColorPicker callback another parameter to use for setting the color instead of adding a function to the page. A bit like with WKFramePolicyListenerRef. What do you think? Maybe that&apos;s overkill?

&gt; Source/WebKit2/UIProcess/efl/WebColorChooserProxyEfl.h:40
&gt; +class WebColorChooserProxyEfl : public WebColorChooserProxy {

I don&apos;t understand why you need this *Efl class when you have a C API that is responsible for the entire delegation.

Do you plan to generalize this in a next step, i.e. we could port the Qt implementation to use the C API, too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>708601</commentid>
    <comment_count>85</comment_count>
      <attachid>161452</attachid>
    <who name="KwangYong Choi">ky0.choi</who>
    <bug_when>2012-08-30 07:31:32 -0700</bug_when>
    <thetext>Comment on attachment 161452
Patch

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

&gt;&gt; Source/WebKit2/UIProcess/API/C/WKPage.h:289
&gt;&gt; +    WKPageHideColorPickerCallback                                       hideColorPicker;
&gt; 
&gt; These additions will require changing QtWebPageUIClient in order to build the Qt port.

OK. I will check.

&gt;&gt; Source/WebKit2/UIProcess/API/C/WKPage.h:500
&gt;&gt; +WK_EXPORT void WKPageSetColorPickerColor(WKPageRef pageRef, WKStringRef selectedColor);
&gt; 
&gt; I&apos;m not 1000% sure, but I think a more common pattern would be to give the showColorPicker callback another parameter to use for setting the color instead of adding a function to the page. A bit like with WKFramePolicyListenerRef. What do you think? Maybe that&apos;s overkill?

OK. I will check this, too.

&gt;&gt; Source/WebKit2/UIProcess/WebPageProxy.cpp:2716
&gt;&gt; +    m_uiClient.showColorPicker(this, initialColor.serialized());
&gt; 
&gt; So shouldn&apos;t it be like if no showColorPicker method exists you use the m_colorChooser line? if not, you use this? So there is some kind of default fallback for platforms that wants that?

Use colorChooserProxy if showColorPicker is not exist? These two are not required at once?

&gt;&gt; Source/WebKit2/UIProcess/efl/WebColorChooserProxyEfl.h:40
&gt;&gt; +class WebColorChooserProxyEfl : public WebColorChooserProxy {
&gt; 
&gt; I don&apos;t understand why you need this *Efl class when you have a C API that is responsible for the entire delegation.
&gt; 
&gt; Do you plan to generalize this in a next step, i.e. we could port the Qt implementation to use the C API, too.

Well.. I think, the member variable m_webView is not necessary and this class can be generalized.

I tend to keep the previous implementation, so I just added it for EFL. If I use C API, then color picker can be implemented without WebColorChooserProxy.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>708622</commentid>
    <comment_count>86</comment_count>
      <attachid>161452</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-08-30 08:01:53 -0700</bug_when>
    <thetext>Comment on attachment 161452
Patch

Attachment 161452 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/13695694</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>708762</commentid>
    <comment_count>87</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2012-08-30 10:04:22 -0700</bug_when>
    <thetext>This touches cross-platform files, so removing [EFL] from title.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>718021</commentid>
    <comment_count>88</comment_count>
    <who name="KwangYong Choi">ky0.choi</who>
    <bug_when>2012-09-12 00:59:20 -0700</bug_when>
    <thetext>WK2 C API part is handled on bug 95058.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>720410</commentid>
    <comment_count>89</comment_count>
      <attachid>164067</attachid>
    <who name="KwangYong Choi">ky0.choi</who>
    <bug_when>2012-09-14 00:38:25 -0700</bug_when>
    <thetext>Created attachment 164067
Patch

Implemented color picker API for EFL port with WK2 C API.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>720459</commentid>
    <comment_count>90</comment_count>
      <attachid>164067</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-09-14 02:18:04 -0700</bug_when>
    <thetext>Comment on attachment 164067
Patch

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

&gt; Source/WebKit2/UIProcess/API/efl/ewk_view.cpp:137
&gt; +#if ENABLE(INPUT_TYPE_COLOR)

Will we ever allow people to build EFL without color picker? if not im not sure it makes so much sense adding all these

&gt; Source/WebKit2/UIProcess/API/efl/ewk_view.cpp:1657
&gt; +#if ENABLE(INPUT_TYPE_COLOR)
&gt; +void ewk_view_color_picker_show(Evas_Object* ewkView, const String&amp; inputValue, WKColorPickerResultListenerRef listener)

#if outside

If not build with INPUT_TYPE_COLOR you dont have this api

&gt; Source/WebKit2/UIProcess/API/efl/ewk_view.cpp:1670
&gt; +Eina_Bool ewk_view_color_picker_color_set(Evas_Object* ewkView, const char* color)
&gt; +{
&gt; +#if ENABLE(INPUT_TYPE_COLOR)

#if inside

But you have this one??? very inconsistent

Impossible to see from the code what is internal and not. Qt had

/*! \internal
 */</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>720492</commentid>
    <comment_count>91</comment_count>
      <attachid>164067</attachid>
    <who name="KwangYong Choi">ky0.choi</who>
    <bug_when>2012-09-14 03:07:21 -0700</bug_when>
    <thetext>Comment on attachment 164067
Patch

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

&gt;&gt; Source/WebKit2/UIProcess/API/efl/ewk_view.cpp:137
&gt;&gt; +#if ENABLE(INPUT_TYPE_COLOR)
&gt; 
&gt; Will we ever allow people to build EFL without color picker? if not im not sure it makes so much sense adding all these

OK. I will check I can remove INPUT_TYPE_COLOR in ewk_* files.

&gt;&gt; Source/WebKit2/UIProcess/API/efl/ewk_view.cpp:1657
&gt;&gt; +void ewk_view_color_picker_show(Evas_Object* ewkView, const String&amp; inputValue, WKColorPickerResultListenerRef listener)
&gt; 
&gt; #if outside
&gt; 
&gt; If not build with INPUT_TYPE_COLOR you dont have this api

Yes. It&apos;s an internal function which is not used without INPUT_TYPE_COLOR.

&gt;&gt; Source/WebKit2/UIProcess/API/efl/ewk_view.cpp:1670
&gt;&gt; +#if ENABLE(INPUT_TYPE_COLOR)
&gt; 
&gt; #if inside
&gt; 
&gt; But you have this one??? very inconsistent
&gt; 
&gt; Impossible to see from the code what is internal and not. Qt had
&gt; 
&gt; /*! \internal
&gt;  */

This is a public API. I think, it&apos;s not possible to add featuring to public API. So I featured inside of the function.

There is no difference between internal and public APIs in ewk_view.cpp.

May I add internal mark to internal function?
Is there any syntax meaning for marking internal like this?

/*!
    \internal
 */</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>721657</commentid>
    <comment_count>92</comment_count>
      <attachid>164333</attachid>
    <who name="KwangYong Choi">ky0.choi</who>
    <bug_when>2012-09-16 18:32:55 -0700</bug_when>
    <thetext>Created attachment 164333
Patch

Removed #if ENABLE(INPUT_TYPE_COLOR).

Added internal comment to internal APIs.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>721699</commentid>
    <comment_count>93</comment_count>
      <attachid>164333</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-09-16 23:33:03 -0700</bug_when>
    <thetext>Comment on attachment 164333
Patch

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

&gt;&gt; Will we ever allow people to build EFL without color picker? if not im not sure it makes so much sense adding all these

First of all, I don&apos;t like to use macro too much personally. However, EFL port has used macros for public function and internal function if the functionality is able to be supported only when feature macro is enabled. In input color picker case, it looks this feature needs to be enabled always. However, IMO, we need to use macro for some functions which I point out at least because this feature can be disabled by user.

&gt; Source/WebKit2/UIProcess/API/efl/ewk_view.cpp:1652
&gt; +

We has wrapped internal function with ENABLE(XXX) macro so far.

&gt; Source/WebKit2/UIProcess/API/efl/ewk_view.cpp:1692
&gt; +

#endif ?

&gt; Source/WebKit2/UIProcess/API/efl/ewk_view.cpp:1694
&gt; +{

EFL port has used #if ENABLE() for public function inside. If we don&apos;t use this macro, this API can return &quot;true&quot; though WKColorPickerResultListenerSetColor doesn&apos;t set color when ENABLE(INPUT_TYPE_COLOR) is disabled.

void WKColorPickerResultListenerSetColor(WKColorPickerResultListenerRef listenerRef, const WKStringRef color)
{
#if ENABLE(INPUT_TYPE_COLOR)
    toImpl(listenerRef)-&gt;setColor(toWTFString(color));
#endif
}</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>721720</commentid>
    <comment_count>94</comment_count>
      <attachid>164348</attachid>
    <who name="KwangYong Choi">ky0.choi</who>
    <bug_when>2012-09-17 00:27:52 -0700</bug_when>
    <thetext>Created attachment 164348
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>721723</commentid>
    <comment_count>95</comment_count>
    <who name="KwangYong Choi">ky0.choi</who>
    <bug_when>2012-09-17 00:30:46 -0700</bug_when>
    <thetext>(In reply to comment #94)
&gt; Created an attachment (id=164348) [details]
&gt; Patch

Added #if ENABLE(INPUT_TYPE_COLOR) to the APIs.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>721753</commentid>
    <comment_count>96</comment_count>
      <attachid>164348</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-09-17 01:46:32 -0700</bug_when>
    <thetext>Comment on attachment 164348
Patch

Is there any unskip test cases in layout test ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>721763</commentid>
    <comment_count>97</comment_count>
    <who name="KwangYong Choi">ky0.choi</who>
    <bug_when>2012-09-17 02:09:46 -0700</bug_when>
    <thetext>(In reply to comment #96)
&gt; (From update of attachment 164348 [details])
&gt; Is there any unskip test cases in layout test ?

Actually, this patch does not change layout.

The test fast/forms/color/input-appearance-color.html is still failing because of rendering problem. It can be handled with another bug. This test is written in platform/efl/Skipped file.

344 # BUG: rendering problems
345 fast/forms/color/input-appearance-color.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>721770</commentid>
    <comment_count>98</comment_count>
      <attachid>164348</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-09-17 02:29:52 -0700</bug_when>
    <thetext>Comment on attachment 164348
Patch

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

&gt; Source/WebKit2/UIProcess/API/efl/tests/test_ewk2_view.cpp:432
&gt; +    evas_object_smart_callback_add(webView(), &quot;input,type,color,request&quot;, colorPickerDoneCallback, &amp;handled);

In unit test case, we have used *on* prefix for callback function.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>721842</commentid>
    <comment_count>99</comment_count>
      <attachid>164348</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-09-17 06:12:12 -0700</bug_when>
    <thetext>Comment on attachment 164348
Patch

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

&gt; Source/WebKit2/UIProcess/API/efl/ewk_view.h:130
&gt; +    Eina_Bool (*input_picker_show)(Ewk_View_Smart_Data *sd, Ewk_Input_Type type, const char *value);

I guess this isn&apos;t so future proof. What is other start values are needed? void* data?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>722486</commentid>
    <comment_count>100</comment_count>
      <attachid>164348</attachid>
    <who name="KwangYong Choi">ky0.choi</who>
    <bug_when>2012-09-17 22:11:28 -0700</bug_when>
    <thetext>Comment on attachment 164348
Patch

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

&gt;&gt; Source/WebKit2/UIProcess/API/efl/ewk_view.h:130
&gt;&gt; +    Eina_Bool (*input_picker_show)(Ewk_View_Smart_Data *sd, Ewk_Input_Type type, const char *value);
&gt; 
&gt; I guess this isn&apos;t so future proof. What is other start values are needed? void* data?

You&apos;re right. It&apos;s not enough to use &apos;char*&apos; for initialization in case of file picker. &apos;void*&apos; looks better.

&gt;&gt; Source/WebKit2/UIProcess/API/efl/tests/test_ewk2_view.cpp:432
&gt;&gt; +    evas_object_smart_callback_add(webView(), &quot;input,type,color,request&quot;, colorPickerDoneCallback, &amp;handled);
&gt; 
&gt; In unit test case, we have used *on* prefix for callback function.

OK. I will change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>722506</commentid>
    <comment_count>101</comment_count>
      <attachid>164496</attachid>
    <who name="KwangYong Choi">ky0.choi</who>
    <bug_when>2012-09-17 23:26:24 -0700</bug_when>
    <thetext>Created attachment 164496
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>722611</commentid>
    <comment_count>102</comment_count>
      <attachid>164496</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-09-18 02:27:42 -0700</bug_when>
    <thetext>Comment on attachment 164496
Patch

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

&gt; Source/WebKit2/UIProcess/API/efl/ewk_view.h:131
&gt; +    // Input Picker API
&gt; +    Eina_Bool (*input_picker_show)(Ewk_View_Smart_Data *sd, Ewk_Input_Type type, const void *data);
&gt; +    Eina_Bool (*input_picker_hide)(Ewk_View_Smart_Data *sd, Ewk_Input_Type type);

Where is the documentation for these? How to use, how to free the data etc?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>722623</commentid>
    <comment_count>103</comment_count>
      <attachid>164524</attachid>
    <who name="KwangYong Choi">ky0.choi</who>
    <bug_when>2012-09-18 03:23:18 -0700</bug_when>
    <thetext>Created attachment 164524
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>722648</commentid>
    <comment_count>104</comment_count>
      <attachid>164524</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-09-18 04:14:48 -0700</bug_when>
    <thetext>Comment on attachment 164524
Patch

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

&gt; Source/WebKit2/UIProcess/API/efl/ewk_view.h:136
&gt; +    //   - For the EWK_INPUT_TYPE_COLOR type, data is the initial color value of char* type.

so is that like rgc(122, 23, 53), ff00ff etc? There are many ways to represent colors. Can it be any of these? Why not actually give a color? How to free this? (// which should be free&apos;ed using free().

&gt; Source/WebKit2/UIProcess/API/efl/ewk_view.h:138
&gt; +    Eina_Bool (*input_picker_show)(Ewk_View_Smart_Data *sd, Ewk_Input_Type type, const void *data);
&gt; +    Eina_Bool (*input_picker_hide)(Ewk_View_Smart_Data *sd, Ewk_Input_Type type);

When can the page request hiding it? it would be nice to document? like are we requesting to hide it if the web process crashes for instance? Should we?

Can we ever have more than one input picker open at the same time? I mean is the type in the second function even needed?

Wouldn&apos;t multiple methods not be better?

like

Eina_bool (*input_picker_color_request(Ewk_View_Smart_Data *sd, Ewk_Input_Type type, char* current_color_string);
Eina_bool (*input_picker_date_request(Ewk_View_Smart_Data *sd, Ewk_Input_Type type, char* current_date_string);
Eina_Bool (*input_picker_dismiss)(Ewk_View_Smart_Data *sd);

But maybe as an EFL api the below makes more sense

Eina_bool (*input_picker_color_request(Ewk_View_Smart_Data *sd, Ewk_Input_Type type, int r, int g, int b, int a);</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>722663</commentid>
    <comment_count>105</comment_count>
    <who name="KwangYong Choi">ky0.choi</who>
    <bug_when>2012-09-18 04:44:27 -0700</bug_when>
    <thetext>Multiple methods are looks better.

Each type of input element is handled separately in WebCore. So, I think, request and dismiss functions are required for each type. I will check it more.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>723309</commentid>
    <comment_count>106</comment_count>
      <attachid>164669</attachid>
    <who name="KwangYong Choi">ky0.choi</who>
    <bug_when>2012-09-18 23:21:53 -0700</bug_when>
    <thetext>Created attachment 164669
Patch

Used request/dismiss pair of smart class API for color picker. The APIs for other pickers may be implemented like this.

Changed color picker request and set APIs to take 4 int parameters instead of char*.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>723667</commentid>
    <comment_count>107</comment_count>
      <attachid>164669</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-09-19 11:01:27 -0700</bug_when>
    <thetext>Comment on attachment 164669
Patch

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

Almost there! Getting very nice.

&gt; Source/WebKit2/UIProcess/API/efl/ewk_view.h:122
&gt; +    Eina_Bool (*input_picker_color_dismiss)(Ewk_View_Smart_Data *sd);

I think we should call dismiss automatically if the process crashes, in the case it was requested.

&gt; Source/WebKit2/UIProcess/API/efl/ewk_view.h:673
&gt; +/*
&gt; + * Sets the color value of color chooser
&gt; + *
&gt; + * @param o view object contains color chooser
&gt; + * @param r red channel value to be set
&gt; + * @param g green channel value to be set
&gt; + * @param b blue channel value to be set
&gt; + * @param a alpha channel value to be set
&gt; + *
&gt; + * @return @c EINA_TRUE on success @c EINA_FALSE otherwise
&gt; + */

I think it should be said that you can only call this when color has been requested and until it is dismissed.

Also don&apos;t call it color chooser, the api says color picker

// Sets the user chosen color. To be used when implementing a color picker.


// The function should only be called when a color has been requested by the document.
// If called when this is not the case or when the input picker has been dismissed, this
// function will fail and return EINA_FALSE.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>724173</commentid>
    <comment_count>108</comment_count>
      <attachid>164669</attachid>
    <who name="KwangYong Choi">ky0.choi</who>
    <bug_when>2012-09-19 22:48:10 -0700</bug_when>
    <thetext>Comment on attachment 164669
Patch

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

&gt;&gt; Source/WebKit2/UIProcess/API/efl/ewk_view.h:122
&gt;&gt; +    Eina_Bool (*input_picker_color_dismiss)(Ewk_View_Smart_Data *sd);
&gt; 
&gt; I think we should call dismiss automatically if the process crashes, in the case it was requested.

The input element can be removed during the color picker shown. So, I think, the application should know this to close their color picker.

&gt;&gt; Source/WebKit2/UIProcess/API/efl/ewk_view.h:673
&gt;&gt; + */
&gt; 
&gt; I think it should be said that you can only call this when color has been requested and until it is dismissed.
&gt; 
&gt; Also don&apos;t call it color chooser, the api says color picker
&gt; 
&gt; // Sets the user chosen color. To be used when implementing a color picker.
&gt; 
&gt; 
&gt; // The function should only be called when a color has been requested by the document.
&gt; // If called when this is not the case or when the input picker has been dismissed, this
&gt; // function will fail and return EINA_FALSE.

OK. I will update the description.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>724300</commentid>
    <comment_count>109</comment_count>
      <attachid>164863</attachid>
    <who name="KwangYong Choi">ky0.choi</who>
    <bug_when>2012-09-20 01:58:32 -0700</bug_when>
    <thetext>Created attachment 164863
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>724333</commentid>
    <comment_count>110</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-09-20 03:04:44 -0700</bug_when>
    <thetext>
&gt; The input element can be removed during the color picker shown. So, I think, the application should know this to close their color picker.

So that is no excuse. Either it should be handled automatically or documented.

Also, we need to test this case where the input element gets removed during showing the input picker. Why can&apos;t we handle that? Maybe we should suspend javascript for the document while the picker is open?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>724382</commentid>
    <comment_count>111</comment_count>
    <who name="KwangYong Choi">ky0.choi</who>
    <bug_when>2012-09-20 03:42:43 -0700</bug_when>
    <thetext>(In reply to comment #110)
&gt; &gt; The input element can be removed during the color picker shown. So, I think, the application should know this to close their color picker.
&gt; 
&gt; So that is no excuse. Either it should be handled automatically or documented.
&gt; 
&gt; Also, we need to test this case where the input element gets removed during showing the input picker. Why can&apos;t we handle that? Maybe we should suspend javascript for the document while the picker is open?

Do you think one show request API and one set API are enough to implement this? If the application receives show request then it shows a color picker with suspending javascript. After that set the color and dismiss the picker and resume javascript?

I think, I have to change WK2 C API to suspend javascript for the document. May I change WK2 C API before change this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>724385</commentid>
    <comment_count>112</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-09-20 03:47:47 -0700</bug_when>
    <thetext>Lets land this as it is, then you create tests requesting multiple pickers at the same time, one removing the element etc and then we fix those cases together with the tests, ok?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>724389</commentid>
    <comment_count>113</comment_count>
    <who name="KwangYong Choi">ky0.choi</who>
    <bug_when>2012-09-20 03:54:06 -0700</bug_when>
    <thetext>(In reply to comment #112)
&gt; Lets land this as it is, then you create tests requesting multiple pickers at the same time, one removing the element etc and then we fix those cases together with the tests, ok?

OK. :)

Thank you Kenneth, I&apos;ve learned a lot from this bug thread.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>724428</commentid>
    <comment_count>114</comment_count>
    <who name="KwangYong Choi">ky0.choi</who>
    <bug_when>2012-09-20 05:02:11 -0700</bug_when>
    <thetext>Unit test test_ewk2_view passed on both Release and Debug build.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>724434</commentid>
    <comment_count>115</comment_count>
      <attachid>164863</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-20 05:08:47 -0700</bug_when>
    <thetext>Comment on attachment 164863
Patch

Clearing flags on attachment: 164863

Committed r129121: &lt;http://trac.webkit.org/changeset/129121&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>724435</commentid>
    <comment_count>116</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-20 05:08:59 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>153448</attachid>
            <date>2012-07-20 01:34:39 -0700</date>
            <delta_ts>2012-07-24 22:00:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch-[20120720]-[ky0.choi@samsung.com]-[[EFL][WK2] Implement color chooser proxy].patch</filename>
            <type>text/plain</type>
            <size>8153</size>
            <attacher name="KwangYong Choi">ky0.choi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCAyN2RmNTBhLi4yYTNiZTIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjcg
QEAKKzIwMTItMDctMjAgIEt3YW5nWW9uZyBDaG9pICA8a3kwLmNob2lAc2Ftc3VuZy5jb20+CisK
KyAgICAgICAgW0VGTF1bV0syXSBJbXBsZW1lbnQgY29sb3IgY2hvb3NlciBwcm94eSBmb3IgRUZM
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MTgzMgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEltcGxlbWVu
dGVkIGNvbG9yIGNob29zZXIgcHJveHkgZm9yIEVGTC4gVGhlIGV3ayBBUEkgcmVsYXRlZCBjb2xv
cgorICAgICAgICBjaG9vc2VyIHNob3VsZCBiZSBpbXBsZW1lbnRlZCBhZnRlciB0aGlzLgorCisg
ICAgICAgICogUGxhdGZvcm1FZmwuY21ha2U6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwv
UGFnZUNsaWVudEltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6Y3Jl
YXRlQ29sb3JDaG9vc2VyUHJveHkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9lZmwvV2ViQ29sb3JD
aG9vc2VyUHJveHlFZmwuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChX
ZWJLaXQ6OldlYkNvbG9yQ2hvb3NlclByb3h5RWZsOjpXZWJDb2xvckNob29zZXJQcm94eUVmbCk6
CisgICAgICAgIChXZWJLaXQ6OldlYkNvbG9yQ2hvb3NlclByb3h5RWZsOjp+V2ViQ29sb3JDaG9v
c2VyUHJveHlFZmwpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb2xvckNob29zZXJQcm94eUVmbDo6
ZW5kQ2hvb3Nlcik6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbG9yQ2hvb3NlclByb3h5RWZsOjpz
ZXRTZWxlY3RlZENvbG9yKToKKyAgICAgICAgKiBVSVByb2Nlc3MvZWZsL1dlYkNvbG9yQ2hvb3Nl
clByb3h5RWZsLmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYkNvbG9y
Q2hvb3NlclByb3h5RWZsKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29sb3JDaG9vc2VyUHJveHlF
Zmw6OmNyZWF0ZSk6CisKIDIwMTItMDctMTkgIFN1ZGFyc2FuYSBOYWdpbmVuaSAgPHN1ZGFyc2Fu
YS5uYWdpbmVuaUBsaW51eC5pbnRlbC5jb20+CiAKICAgICAgICAgW0VGTF0gW1dLMl0gQWRkIG1l
dGhvZHMgdG8gZ2V0L3NldCBhIGN1c3RvbSB0ZXh0IGVuY29kaW5nCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZSBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZs
LmNtYWtlCmluZGV4IDk3ZjcwOTUuLjg5ZWY2MzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1BsYXRmb3JtRWZsLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtl
CkBAIC01Myw2ICs1Myw3IEBAIExJU1QoQVBQRU5EIFdlYktpdDJfU09VUkNFUwogICAgIFVJUHJv
Y2Vzcy9jYWlyby9CYWNraW5nU3RvcmVDYWlyby5jcHAKIAogICAgIFVJUHJvY2Vzcy9lZmwvVGV4
dENoZWNrZXJFZmwuY3BwCisgICAgVUlQcm9jZXNzL2VmbC9XZWJDb2xvckNob29zZXJQcm94eUVm
bC5jcHAKICAgICBVSVByb2Nlc3MvZWZsL1dlYkNvbnRleHRFZmwuY3BwCiAgICAgVUlQcm9jZXNz
L2VmbC9XZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5RWZsLmNwcAogICAgIFVJUHJvY2Vzcy9lZmwv
V2ViSW5zcGVjdG9yUHJveHlFZmwuY3BwCkBAIC0xMDgsNiArMTA5LDcgQEAgTElTVChBUFBFTkQg
V2ViS2l0Ml9JTkNMVURFX0RJUkVDVE9SSUVTCiAgICAgIiR7V0VCS0lUMl9ESVJ9L1VJUHJvY2Vz
cy9BUEkvQy9lZmwiCiAgICAgIiR7V0VCS0lUMl9ESVJ9L1VJUHJvY2Vzcy9BUEkvQy9zb3VwIgog
ICAgICIke1dFQktJVDJfRElSfS9VSVByb2Nlc3MvQVBJL2VmbCIKKyAgICAiJHtXRUJLSVQyX0RJ
Un0vVUlQcm9jZXNzL2VmbCIKICAgICAiJHtXRUJLSVQyX0RJUn0vVUlQcm9jZXNzL3NvdXAiCiAg
ICAgIiR7V0VCS0lUMl9ESVJ9L1dlYlByb2Nlc3MvRG93bmxvYWRzL3NvdXAiCiAgICAgIiR7V0VC
S0lUMl9ESVJ9L1dlYlByb2Nlc3MvZWZsIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9lZmwvUGFnZUNsaWVudEltcGwuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9lZmwvUGFnZUNsaWVudEltcGwuY3BwCmluZGV4IGU2OWY4N2QuLjU3NTljYjEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL1BhZ2VDbGllbnRJbXBs
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9QYWdlQ2xpZW50SW1w
bC5jcHAKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJEcmF3aW5nQXJlYVByb3h5SW1wbC5o
IgogI2luY2x1ZGUgIk5hdGl2ZVdlYktleWJvYXJkRXZlbnQuaCIKICNpbmNsdWRlICJOb3RJbXBs
ZW1lbnRlZC5oIgorI2luY2x1ZGUgIldlYkNvbG9yQ2hvb3NlclByb3h5RWZsLmgiCiAjaW5jbHVk
ZSAiV2ViQ29udGV4dC5oIgogI2luY2x1ZGUgIldlYkNvbnRleHRNZW51UHJveHkuaCIKICNpbmNs
dWRlICJXZWJQYWdlUHJveHkuaCIKQEAgLTIwNiwxMCArMjA3LDkgQEAgUGFzc1JlZlB0cjxXZWJD
b250ZXh0TWVudVByb3h5PiBQYWdlQ2xpZW50SW1wbDo6Y3JlYXRlQ29udGV4dE1lbnVQcm94eShX
ZWJQYWdlUHIKIH0KIAogI2lmIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9SKQotUGFzc1JlZlB0cjxX
ZWJDb2xvckNob29zZXJQcm94eT4gUGFnZUNsaWVudEltcGw6OmNyZWF0ZUNvbG9yQ2hvb3NlclBy
b3h5KFdlYlBhZ2VQcm94eSosIGNvbnN0IFdlYkNvcmU6OkNvbG9yJikKK1Bhc3NSZWZQdHI8V2Vi
Q29sb3JDaG9vc2VyUHJveHk+IFBhZ2VDbGllbnRJbXBsOjpjcmVhdGVDb2xvckNob29zZXJQcm94
eShXZWJQYWdlUHJveHkqIHBhZ2UsIGNvbnN0IFdlYkNvcmU6OkNvbG9yJiBpbml0aWFsQ29sb3Ip
CiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gV2Vi
Q29sb3JDaG9vc2VyUHJveHlFZmw6OmNyZWF0ZShtX3ZpZXdXaWRnZXQsIHBhZ2UsIGluaXRpYWxD
b2xvcik7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L2VmbC9XZWJDb2xvckNob29zZXJQcm94eUVmbC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvZWZsL1dlYkNvbG9yQ2hvb3NlclByb3h5RWZsLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwLi45NTQ2MTNmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL2VmbC9XZWJDb2xvckNob29zZXJQcm94eUVmbC5jcHAKQEAgLTAsMCArMSw1OCBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNzCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViQ29sb3JDaG9vc2VyUHJveHlFZmwu
aCIKKworI2lmIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9SKQorCituYW1lc3BhY2UgV2ViS2l0IHsK
KworV2ViQ29sb3JDaG9vc2VyUHJveHlFZmw6OldlYkNvbG9yQ2hvb3NlclByb3h5RWZsKEV2YXNf
T2JqZWN0KiB3ZWJWaWV3LCBXZWJDb2xvckNob29zZXJQcm94eTo6Q2xpZW50KiBjbGllbnQsIGNv
bnN0IFdlYkNvcmU6OkNvbG9yJiBjb2xvcikKKyAgICA6IFdlYkNvbG9yQ2hvb3NlclByb3h5KGNs
aWVudCkKKyAgICAsIG1fd2ViVmlldyh3ZWJWaWV3KQoreworICAgIGVuZENob29zZXIoKTsgLy8g
RklYTUU6IFJlbW92ZSB0aGlzLiBDYWxsIHRoZSBld2sgQVBJIHRvIHNob3cgY29sb3IgY2hvb3Nl
ciBhZnRlciBpbXBsZW1lbnRlZC4KK30KKworV2ViQ29sb3JDaG9vc2VyUHJveHlFZmw6On5XZWJD
b2xvckNob29zZXJQcm94eUVmbCgpCit7Cit9CisKK3ZvaWQgV2ViQ29sb3JDaG9vc2VyUHJveHlF
Zmw6OmVuZENob29zZXIoKQoreworICAgIGlmIChtX2NsaWVudCkKKyAgICAgICAgbV9jbGllbnQt
PmRpZEVuZENvbG9yQ2hvb3NlcigpOworfQorCit2b2lkIFdlYkNvbG9yQ2hvb3NlclByb3h5RWZs
OjpzZXRTZWxlY3RlZENvbG9yKGNvbnN0IFdlYkNvcmU6OkNvbG9yJiBjb2xvcikKK3sKKyAgICBp
ZiAobV9jbGllbnQpCisgICAgICAgIG1fY2xpZW50LT5kaWRDaG9vc2VDb2xvcihjb2xvcik7Cit9
CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKElOUFVUX1RZUEVf
Q09MT1IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYkNvbG9y
Q2hvb3NlclByb3h5RWZsLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYkNvbG9y
Q2hvb3NlclByb3h5RWZsLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODdl
ODBiMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2Vi
Q29sb3JDaG9vc2VyUHJveHlFZmwuaApAQCAtMCwwICsxLDYxIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDEyIFNhbXN1bmcgRWxlY3Ryb25pY3MKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViQ29sb3JD
aG9vc2VyUHJveHlFZmxfaAorI2RlZmluZSBXZWJDb2xvckNob29zZXJQcm94eUVmbF9oCisKKyNp
ZiBFTkFCTEUoSU5QVVRfVFlQRV9DT0xPUikKKworI2luY2x1ZGUgIkNvbG9yLmgiCisjaW5jbHVk
ZSAiV2ViQ29sb3JDaG9vc2VyUHJveHkuaCIKKwordHlwZWRlZiBzdHJ1Y3QgX0V2YXNfT2JqZWN0
IEV2YXNfT2JqZWN0OworCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2ViUGFnZVByb3h5
OworCitjbGFzcyBXZWJDb2xvckNob29zZXJQcm94eUVmbCA6IHB1YmxpYyBXZWJDb2xvckNob29z
ZXJQcm94eSB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViQ29sb3JDaG9vc2Vy
UHJveHlFZmw+IGNyZWF0ZShFdmFzX09iamVjdCogd2ViVmlldywgV2ViQ29sb3JDaG9vc2VyUHJv
eHk6OkNsaWVudCogY2xpZW50LCBjb25zdCBXZWJDb3JlOjpDb2xvciYgY29sb3IpCisgICAgewor
ICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYkNvbG9yQ2hvb3NlclByb3h5RWZsKHdlYlZp
ZXcsIGNsaWVudCwgY29sb3IpKTsKKyAgICB9CisgICAgfldlYkNvbG9yQ2hvb3NlclByb3h5RWZs
KCk7CisKKyAgICB2aXJ0dWFsIHZvaWQgZW5kQ2hvb3NlcigpOworICAgIHZpcnR1YWwgdm9pZCBz
ZXRTZWxlY3RlZENvbG9yKGNvbnN0IFdlYkNvcmU6OkNvbG9yJik7CisKK3ByaXZhdGU6CisgICAg
V2ViQ29sb3JDaG9vc2VyUHJveHlFZmwoRXZhc19PYmplY3QqLCBXZWJDb2xvckNob29zZXJQcm94
eTo6Q2xpZW50KiwgY29uc3QgV2ViQ29yZTo6Q29sb3ImKTsKKworICAgIEV2YXNfT2JqZWN0KiBt
X3dlYlZpZXc7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJM
RShJTlBVVF9UWVBFX0NPTE9SKQorCisjZW5kaWYgLy8gV2ViQ29sb3JDaG9vc2VyUHJveHlFZmxf
aAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>154248</attachid>
            <date>2012-07-24 22:00:31 -0700</date>
            <delta_ts>2012-07-24 23:40:09 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>20956</size>
            <attacher name="KwangYong Choi">ky0.choi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCAyN2RmNTBhLi4zNGI2YTM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTAg
QEAKKzIwMTItMDctMjQgIEt3YW5nWW9uZyBDaG9pICA8a3kwLmNob2lAc2Ftc3VuZy5jb20+CisK
KyAgICAgICAgW0VGTF1bV0syXSBJbXBsZW1lbnQgY29sb3IgY2hvb3NlciBpbnRlcmZhY2UgZm9y
IEVGTAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTE4
MzIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbXBs
ZW1lbnRlZCBjb2xvciBjaG9vc2VyIHByb3h5IGFuZCBpbnB1dCBwaWNrZXIgaW50ZXJmYWNlIGZv
ciBFRkwuCisgICAgICAgIElucHV0IHBpY2tlciBpbnRlcmZhY2UgaXMgZm9yIGdlbmVyYWwgdXNl
IG9mIGFsbCB0aGUgaW5wdXQgdHlwZXMKKyAgICAgICAgaW5jbHVkaW5nIGNvbG9yIGlucHV0IHR5
cGUuCisKKyAgICAgICAgSW5wdXQgcGlja2VyIHVzZXIgaW50ZXJmYWNlIHNob3VsZCBiZSBpbXBs
ZW1lbnRlZCBhZnRlciB0aGlzLgorCisgICAgICAgICogUGxhdGZvcm1FZmwuY21ha2U6CisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9lZmwvSW5wdXRQaWNrZXIuY3BwOiBBZGRlZC4KKyAgICAgICAg
KFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6OklucHV0UGlja2VyOjpJbnB1dFBpY2tlcik6Cisg
ICAgICAgIChXZWJLaXQ6OklucHV0UGlja2VyOjp+SW5wdXRQaWNrZXIpOgorICAgICAgICAoV2Vi
S2l0OjpJbnB1dFBpY2tlcjo6c2hvdyk6IFNob3dzIHVzZXIgaW50ZXJmYWNlIG9mIHNwZWNpZmlj
IGlucHV0IHR5cGUuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvSW5wdXRQaWNrZXIuaDog
QWRkZWQuCisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoSW5wdXRQaWNrZXIpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvZWZsL1BhZ2VDbGllbnRJbXBsLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6UGFnZUNsaWVudEltcGw6OmNyZWF0ZUNvbG9yQ2hvb3NlclByb3h5KToKKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5jcHA6CisgICAgICAgIChfRXdrX1ZpZXdfUHJpdmF0
ZV9EYXRhKToKKyAgICAgICAgKF9ld2tfdmlld19pbnB1dF9waWNrZXJfc2hvdyk6CisgICAgICAg
IChfZXdrX3ZpZXdfcHJpdl9uZXcpOgorICAgICAgICAoX2V3a192aWV3X3ByaXZfZGVsKToKKyAg
ICAgICAgKGV3a192aWV3X3NtYXJ0X2NsYXNzX2luaXQpOgorICAgICAgICAoZXdrX3ZpZXdfaW5w
dXRfcGlja2VyX3JlcXVlc3QpOiBSZXF1ZXN0cyBpbnB1dCBwaWNrZXIuCisgICAgICAgIChld2tf
dmlld19jb2xvcl9jaG9vc2VyX3JlcXVlc3QpOiBSZXF1ZXN0IGNvbG9yIHBpY2tlci4KKyAgICAg
ICAgKGV3a192aWV3X2NvbG9yX2Nob29zZXJfY29sb3Jfc2V0KTogU2V0cyB0aGUgY29sb3IgYnkg
Y2FsbGluZyBXZWJDb2xvckNob29zZXJQcm94eUVmbDo6c2V0U2VsZWN0ZWRDb2xvci4KKyAgICAg
ICAgKGV3a192aWV3X2NvbG9yX2Nob29zZXJfY2xvc2UpOiBDYWxscyBXZWJDb2xvckNob29zZXJQ
cm94eUVmbDo6ZW5kQ2hvb3NlcgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3
Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXdfcHJpdmF0ZS5oOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9lZmwvV2ViQ29sb3JDaG9vc2VyUHJveHlFZmwuY3BwOiBBZGRlZC4K
KyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbG9yQ2hvb3NlclByb3h5
RWZsOjpXZWJDb2xvckNob29zZXJQcm94eUVmbCk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbG9y
Q2hvb3NlclByb3h5RWZsOjp+V2ViQ29sb3JDaG9vc2VyUHJveHlFZmwpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJDb2xvckNob29zZXJQcm94eUVmbDo6ZW5kQ2hvb3Nlcik6CisgICAgICAgIChXZWJL
aXQ6OldlYkNvbG9yQ2hvb3NlclByb3h5RWZsOjpzZXRTZWxlY3RlZENvbG9yKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvZWZsL1dlYkNvbG9yQ2hvb3NlclByb3h5RWZsLmg6IEFkZGVkLgorICAgICAg
ICAoV2ViS2l0KToKKyAgICAgICAgKFdlYkNvbG9yQ2hvb3NlclByb3h5RWZsKToKKyAgICAgICAg
KFdlYktpdDo6V2ViQ29sb3JDaG9vc2VyUHJveHlFZmw6OmNyZWF0ZSk6CisKIDIwMTItMDctMTkg
IFN1ZGFyc2FuYSBOYWdpbmVuaSAgPHN1ZGFyc2FuYS5uYWdpbmVuaUBsaW51eC5pbnRlbC5jb20+
CiAKICAgICAgICAgW0VGTF0gW1dLMl0gQWRkIG1ldGhvZHMgdG8gZ2V0L3NldCBhIGN1c3RvbSB0
ZXh0IGVuY29kaW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFr
ZSBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlCmluZGV4IDk3ZjcwOTUuLjllNDli
MTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlCkBAIC0zNSw2ICszNSw3IEBAIExJU1QoQVBQ
RU5EIFdlYktpdDJfU09VUkNFUwogICAgIFVJUHJvY2Vzcy9BUEkvQy9zb3VwL1dLU291cFJlcXVl
c3RNYW5hZ2VyLmNwcAogCiAgICAgVUlQcm9jZXNzL0FQSS9lZmwvQmF0dGVyeVByb3ZpZGVyLmNw
cAorICAgIFVJUHJvY2Vzcy9BUEkvZWZsL0lucHV0UGlja2VyLmNwcAogICAgIFVJUHJvY2Vzcy9B
UEkvZWZsL1BhZ2VDbGllbnRJbXBsLmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250
ZXh0LmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb29raWVfbWFuYWdlci5jcHAKQEAg
LTUzLDYgKzU0LDcgQEAgTElTVChBUFBFTkQgV2ViS2l0Ml9TT1VSQ0VTCiAgICAgVUlQcm9jZXNz
L2NhaXJvL0JhY2tpbmdTdG9yZUNhaXJvLmNwcAogCiAgICAgVUlQcm9jZXNzL2VmbC9UZXh0Q2hl
Y2tlckVmbC5jcHAKKyAgICBVSVByb2Nlc3MvZWZsL1dlYkNvbG9yQ2hvb3NlclByb3h5RWZsLmNw
cAogICAgIFVJUHJvY2Vzcy9lZmwvV2ViQ29udGV4dEVmbC5jcHAKICAgICBVSVByb2Nlc3MvZWZs
L1dlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHlFZmwuY3BwCiAgICAgVUlQcm9jZXNzL2VmbC9XZWJJ
bnNwZWN0b3JQcm94eUVmbC5jcHAKQEAgLTEwOCw2ICsxMTAsNyBAQCBMSVNUKEFQUEVORCBXZWJL
aXQyX0lOQ0xVREVfRElSRUNUT1JJRVMKICAgICAiJHtXRUJLSVQyX0RJUn0vVUlQcm9jZXNzL0FQ
SS9DL2VmbCIKICAgICAiJHtXRUJLSVQyX0RJUn0vVUlQcm9jZXNzL0FQSS9DL3NvdXAiCiAgICAg
IiR7V0VCS0lUMl9ESVJ9L1VJUHJvY2Vzcy9BUEkvZWZsIgorICAgICIke1dFQktJVDJfRElSfS9V
SVByb2Nlc3MvZWZsIgogICAgICIke1dFQktJVDJfRElSfS9VSVByb2Nlc3Mvc291cCIKICAgICAi
JHtXRUJLSVQyX0RJUn0vV2ViUHJvY2Vzcy9Eb3dubG9hZHMvc291cCIKICAgICAiJHtXRUJLSVQy
X0RJUn0vV2ViUHJvY2Vzcy9lZmwiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2VmbC9JbnB1dFBpY2tlci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2VmbC9JbnB1dFBpY2tlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u
MmQwYzdlMQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
ZWZsL0lucHV0UGlja2VyLmNwcApAQCAtMCwwICsxLDQ4IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDEyIFNhbXN1bmcgRWxlY3Ryb25pY3MuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSW5wdXRQaWNrZXIuaCIKKworI2luY2x1
ZGUgIk5vdEltcGxlbWVudGVkLmgiCisjaW5jbHVkZSAiZXdrX3ZpZXcuaCIKKworbmFtZXNwYWNl
IFdlYktpdCB7CisKK0lucHV0UGlja2VyOjpJbnB1dFBpY2tlcihFdmFzX09iamVjdCogZXdrVmll
dykKKyAgICA6IG1fZXdrVmlldyhld2tWaWV3KQoreworfQorCitJbnB1dFBpY2tlcjo6fklucHV0
UGlja2VyKCkKK3sKK30KKwordm9pZCBJbnB1dFBpY2tlcjo6c2hvdyhFd2tfSW5wdXRfVHlwZSBp
bnB1dFR5cGUsIGNvbnN0IGNoYXIqIGlucHV0VmFsdWUpCit7CisgICAgbm90SW1wbGVtZW50ZWQo
KTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2VmbC9JbnB1dFBpY2tlci5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9lZmwvSW5wdXRQaWNrZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwLi44YTY1NDU2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9lZmwvSW5wdXRQaWNrZXIuaApAQCAtMCwwICsxLDQ4IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDEyIFNhbXN1bmcgRWxlY3Ryb25pY3MuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaWZuZGVmIElucHV0UGlja2VyX2gKKyNkZWZpbmUgSW5wdXRQaWNrZXJfaAorCisjaW5j
bHVkZSAiZXdrX3ZpZXcuaCIKKwordHlwZWRlZiBzdHJ1Y3QgX0V2YXNfT2JqZWN0IEV2YXNfT2Jq
ZWN0OworCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgSW5wdXRQaWNrZXIgeworcHVibGlj
OgorICAgIElucHV0UGlja2VyKEV2YXNfT2JqZWN0Kik7CisgICAgfklucHV0UGlja2VyKCk7CisK
KyAgICB2b2lkIHNob3coRXdrX0lucHV0X1R5cGUsIGNvbnN0IGNoYXIqKTsKKworcHJpdmF0ZToK
KyAgICBFdmFzX09iamVjdCogbV9ld2tWaWV3OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CisKKyNlbmRpZiAvLyBJbnB1dFBpY2tlcl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2VmbC9QYWdlQ2xpZW50SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2VmbC9QYWdlQ2xpZW50SW1wbC5jcHAKaW5kZXggZTY5Zjg3ZC4uNTc1OWNiMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvUGFnZUNsaWVudElt
cGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL1BhZ2VDbGllbnRJ
bXBsLmNwcApAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIkRyYXdpbmdBcmVhUHJveHlJbXBs
LmgiCiAjaW5jbHVkZSAiTmF0aXZlV2ViS2V5Ym9hcmRFdmVudC5oIgogI2luY2x1ZGUgIk5vdElt
cGxlbWVudGVkLmgiCisjaW5jbHVkZSAiV2ViQ29sb3JDaG9vc2VyUHJveHlFZmwuaCIKICNpbmNs
dWRlICJXZWJDb250ZXh0LmgiCiAjaW5jbHVkZSAiV2ViQ29udGV4dE1lbnVQcm94eS5oIgogI2lu
Y2x1ZGUgIldlYlBhZ2VQcm94eS5oIgpAQCAtMjA2LDEwICsyMDcsOSBAQCBQYXNzUmVmUHRyPFdl
YkNvbnRleHRNZW51UHJveHk+IFBhZ2VDbGllbnRJbXBsOjpjcmVhdGVDb250ZXh0TWVudVByb3h5
KFdlYlBhZ2VQcgogfQogCiAjaWYgRU5BQkxFKElOUFVUX1RZUEVfQ09MT1IpCi1QYXNzUmVmUHRy
PFdlYkNvbG9yQ2hvb3NlclByb3h5PiBQYWdlQ2xpZW50SW1wbDo6Y3JlYXRlQ29sb3JDaG9vc2Vy
UHJveHkoV2ViUGFnZVByb3h5KiwgY29uc3QgV2ViQ29yZTo6Q29sb3ImKQorUGFzc1JlZlB0cjxX
ZWJDb2xvckNob29zZXJQcm94eT4gUGFnZUNsaWVudEltcGw6OmNyZWF0ZUNvbG9yQ2hvb3NlclBy
b3h5KFdlYlBhZ2VQcm94eSogcGFnZSwgY29uc3QgV2ViQ29yZTo6Q29sb3ImIGluaXRpYWxDb2xv
cikKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiAwOworICAgIHJldHVybiBX
ZWJDb2xvckNob29zZXJQcm94eUVmbDo6Y3JlYXRlKG1fdmlld1dpZGdldCwgcGFnZSwgaW5pdGlh
bENvbG9yKTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2VmbC9ld2tfdmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2Vm
bC9ld2tfdmlldy5jcHAKaW5kZXggM2Y4MGFhMS4uODU0NDA5MiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmNwcApAQCAtMjEsNiArMjEsNyBAQAogI2lu
Y2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgImV3a192aWV3LmgiCiAKKyNpbmNsdWRlICJJbnB1
dFBpY2tlci5oIgogI2luY2x1ZGUgIk5hdGl2ZVdlYktleWJvYXJkRXZlbnQuaCIKICNpbmNsdWRl
ICJOYXRpdmVXZWJNb3VzZUV2ZW50LmgiCiAjaW5jbHVkZSAiTmF0aXZlV2ViV2hlZWxFdmVudC5o
IgpAQCAtNjgsNiArNjksMTEgQEAgc3RydWN0IF9Fd2tfVmlld19Qcml2YXRlX0RhdGEgewogICAg
ICAgICBlaW5hX3N0cmluZ3NoYXJlX2RlbCh0aGVtZSk7CiAgICAgICAgIGVpbmFfc3RyaW5nc2hh
cmVfZGVsKGN1c3RvbUVuY29kaW5nKTsKICAgICB9CisKKyAgICBPd25QdHI8SW5wdXRQaWNrZXI+
IGlucHV0UGlja2VyOworI2lmIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9SKQorICAgIFdlYkNvbG9y
Q2hvb3NlclByb3h5RWZsKiBjb2xvckNob29zZXI7CisjZW5kaWYgLy8gRU5BQkxFKElOUFVUX1RZ
UEVfQ09MT1IpCiB9OwogCiAjZGVmaW5lIEVXS19WSUVXX1RZUEVfQ0hFQ0soZXdrVmlldywgcmVz
dWx0KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXApAQCAtMjAzLDYgKzIwOSwx
NCBAQCBzdGF0aWMgRWluYV9Cb29sIF9ld2tfdmlld19zbWFydF9rZXlfdXAoRXdrX1ZpZXdfU21h
cnRfRGF0YSogc21hcnREYXRhLCBjb25zdCBFdgogICAgIHJldHVybiB0cnVlOwogfQogCitzdGF0
aWMgRWluYV9Cb29sIF9ld2tfdmlld19pbnB1dF9waWNrZXJfc2hvdyhFd2tfVmlld19TbWFydF9E
YXRhKiBzbWFydERhdGEsIEV3a19JbnB1dF9UeXBlIGlucHV0VHlwZSwgY29uc3QgY2hhciogaW5w
dXRWYWx1ZSkKK3sKKyAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBw
cml2LCBmYWxzZSk7CisKKyAgICBwcml2LT5pbnB1dFBpY2tlci0+c2hvdyhpbnB1dFR5cGUsIGlu
cHV0VmFsdWUpOworICAgIHJldHVybiB0cnVlOworfQorCiAvLyBFdmVudCBIYW5kbGluZy4KIHN0
YXRpYyB2b2lkIF9ld2tfdmlld19vbl9mb2N1c19pbih2b2lkKiBkYXRhLCBFdmFzKiBjYW52YXMs
IEV2YXNfT2JqZWN0KiBld2tWaWV3LCB2b2lkKiBldmVudEluZm8pCiB7CkBAIC0yODQsMTEgKzI5
OCwxNSBAQCBzdGF0aWMgRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKiBfZXdrX3ZpZXdfcHJpdl9uZXco
RXdrX1ZpZXdfU21hcnRfRGF0YSogc21hcnREYXRhKQogICAgICAgICByZXR1cm4gMDsKICAgICB9
CiAKKyAgICBwcml2LT5pbnB1dFBpY2tlciA9IGFkb3B0UHRyPElucHV0UGlja2VyPihuZXcgSW5w
dXRQaWNrZXIoc21hcnREYXRhLT5zZWxmKSk7CisKICAgICByZXR1cm4gcHJpdjsKIH0KIAogc3Rh
dGljIHZvaWQgX2V3a192aWV3X3ByaXZfZGVsKEV3a19WaWV3X1ByaXZhdGVfRGF0YSogcHJpdikK
IHsKKyAgICBwcml2LT5pbnB1dFBpY2tlciA9IG51bGxwdHI7CisKICAgICBkZWxldGUgcHJpdjsK
IH0KIApAQCAtNDc0LDYgKzQ5Miw3IEBAIEVpbmFfQm9vbCBld2tfdmlld19zbWFydF9jbGFzc19p
bml0KEV3a19WaWV3X1NtYXJ0X0NsYXNzKiBhcGkpCiAgICAgYXBpLT5tb3VzZV9tb3ZlID0gX2V3
a192aWV3X3NtYXJ0X21vdXNlX21vdmU7CiAgICAgYXBpLT5rZXlfZG93biA9IF9ld2tfdmlld19z
bWFydF9rZXlfZG93bjsKICAgICBhcGktPmtleV91cCA9IF9ld2tfdmlld19zbWFydF9rZXlfdXA7
CisgICAgYXBpLT5pbnB1dF9waWNrZXJfc2hvdyA9IF9ld2tfdmlld19pbnB1dF9waWNrZXJfc2hv
dzsKIAogICAgIHJldHVybiB0cnVlOwogfQpAQCAtOTg4LDMgKzEwMDcsNDggQEAgRWluYV9Cb29s
IGV3a192aWV3X3NldHRpbmdfZW5jb2RpbmdfY3VzdG9tX3NldChFdmFzX09iamVjdCogZXdrVmll
dywgY29uc3QgY2hhcioKICAgICAgICAgV0tQYWdlU2V0Q3VzdG9tVGV4dEVuY29kaW5nTmFtZSh0
b0FQSShwcml2LT5wYWdlQ2xpZW50LT5wYWdlKCkpLCB3a0VuY29kaW5nTmFtZS5nZXQoKSk7CiAg
ICAgcmV0dXJuIHRydWU7CiB9CisKK3ZvaWQgZXdrX3ZpZXdfaW5wdXRfcGlja2VyX3JlcXVlc3Qo
RXZhc19PYmplY3QqIGV3a1ZpZXcsIEV3a19JbnB1dF9UeXBlIGlucHV0VHlwZSwgY29uc3QgU3Ry
aW5nJiBpbnB1dFZhbHVlKQoreworICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmll
dywgc21hcnREYXRhKTsKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTihzbWFydERhdGEt
PmFwaSk7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oc21hcnREYXRhLT5hcGktPmlu
cHV0X3BpY2tlcl9zaG93KTsKKworICAgIHNtYXJ0RGF0YS0+YXBpLT5pbnB1dF9waWNrZXJfc2hv
dyhzbWFydERhdGEsIGlucHV0VHlwZSwgaW5wdXRWYWx1ZS51dGY4KCkuZGF0YSgpKTsKK30KKwor
I2lmIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9SKQordm9pZCBld2tfdmlld19jb2xvcl9jaG9vc2Vy
X3JlcXVlc3QoRXZhc19PYmplY3QqIGV3a1ZpZXcsIFdlYktpdDo6V2ViQ29sb3JDaG9vc2VyUHJv
eHlFZmwqIGNvbG9yQ2hvb3NlciwgY29uc3QgU3RyaW5nJiBpbnB1dFZhbHVlKQoreworICAgIEVX
S19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhKTsKKyAgICBFV0tfVklF
V19QUklWX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBwcml2KTsKKworICAgIHByaXYtPmNvbG9y
Q2hvb3NlciA9IGNvbG9yQ2hvb3NlcjsKKworICAgIGV3a192aWV3X2lucHV0X3BpY2tlcl9yZXF1
ZXN0KGV3a1ZpZXcsIEVXS19JTlBVVF9UWVBFX0NPTE9SLCBpbnB1dFZhbHVlKTsKK30KKyNlbmRp
ZiAvLyBFTkFCTEUoSU5QVVRfVFlQRV9DT0xPUikKKwordm9pZCBld2tfdmlld19jb2xvcl9jaG9v
c2VyX2NvbG9yX3NldChFdmFzX09iamVjdCogZXdrVmlldywgY29uc3QgY2hhciogY29sb3IpCit7
CisjaWYgRU5BQkxFKElOUFVUX1RZUEVfQ09MT1IpCisgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JF
VFVSTihld2tWaWV3LCBzbWFydERhdGEpOworICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVS
TihzbWFydERhdGEsIHByaXYpOworCisgICAgaWYgKHByaXYtPmNvbG9yQ2hvb3NlcikKKyAgICAg
ICAgcHJpdi0+Y29sb3JDaG9vc2VyLT5zZXRTZWxlY3RlZENvbG9yKENvbG9yKGNvbG9yKSk7Cisj
ZW5kaWYgLy8gRU5BQkxFKElOUFVUX1RZUEVfQ09MT1IpCit9CisKK3ZvaWQgZXdrX3ZpZXdfY29s
b3JfY2hvb3Nlcl9jbG9zZShFdmFzX09iamVjdCogZXdrVmlldykKK3sKKyNpZiBFTkFCTEUoSU5Q
VVRfVFlQRV9DT0xPUikKKyAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNt
YXJ0RGF0YSk7CisgICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgcHJp
dik7CisKKyAgICBpZiAocHJpdi0+Y29sb3JDaG9vc2VyKQorICAgICAgICBwcml2LT5jb2xvckNo
b29zZXItPmVuZENob29zZXIoKTsKKworICAgIHByaXYtPmNvbG9yQ2hvb3NlciA9IDA7CisjZW5k
aWYgLy8gRU5BQkxFKElOUFVUX1RZUEVfQ09MT1IpCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9lZmwvZXdrX3ZpZXcuaAppbmRleCA2YThlNzRmLi5hMDJlZGZjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmgKQEAgLTY2LDYgKzY2LDI2IEBA
IGV4dGVybiAiQyIgewogdHlwZWRlZiBzdHJ1Y3QgX0V3a19WaWV3X1NtYXJ0X0RhdGEgRXdrX1Zp
ZXdfU21hcnRfRGF0YTsKIHR5cGVkZWYgc3RydWN0IF9Fd2tfVmlld19TbWFydF9DbGFzcyBFd2tf
Vmlld19TbWFydF9DbGFzczsKIAorLyoqCisgKiBcZW51bSAgICBFd2tfSW5wdXRfVHlwZQorICog
QGJyaWVmICAgUHJvdmlkZXMgdHlwZSBvZiBpbnB1dCBlbGVtZW50CisgKi8KK2VudW0gX0V3a19J
bnB1dF9UeXBlIHsKKyAgICBFV0tfSU5QVVRfVFlQRV9URUxFUEhPTkUgPSAxLCAKKyAgICBFV0tf
SU5QVVRfVFlQRV9OVU1CRVIsCisgICAgRVdLX0lOUFVUX1RZUEVfRU1BSUwsCisgICAgRVdLX0lO
UFVUX1RZUEVfVVJMLAorICAgIEVXS19JTlBVVF9UWVBFX1BBU1NXT1JELAorICAgIEVXS19JTlBV
VF9UWVBFX0NPTE9SLAorICAgIEVXS19JTlBVVF9UWVBFX0RBVEUsCisgICAgRVdLX0lOUFVUX1RZ
UEVfREFURVRJTUUsCisgICAgRVdLX0lOUFVUX1RZUEVfREFURVRJTUVMT0NBTCwKKyAgICBFV0tf
SU5QVVRfVFlQRV9NT05USCwKKyAgICBFV0tfSU5QVVRfVFlQRV9USU1FLAorICAgIEVXS19JTlBV
VF9UWVBFX1dFRUsKK307Cit0eXBlZGVmIGVudW0gX0V3a19JbnB1dF9UeXBlIEV3a19JbnB1dF9U
eXBlOworCiAvLy8gRXdrIHZpZXcncyBjbGFzcywgdG8gYmUgb3ZlcnJpZGRlbiBieSBzdWItY2xh
c3Nlcy4KIHN0cnVjdCBfRXdrX1ZpZXdfU21hcnRfQ2xhc3MgewogICAgIEV2YXNfU21hcnRfQ2xh
c3Mgc2M7IC8qKjwgYWxsIGJ1dCAnZGF0YScgaXMgZnJlZSB0byBiZSBjaGFuZ2VkLiAqLwpAQCAt
ODIsNiArMTAyLDkgQEAgc3RydWN0IF9Fd2tfVmlld19TbWFydF9DbGFzcyB7CiAgICAgRWluYV9C
b29sICgqbW91c2VfbW92ZSkoRXdrX1ZpZXdfU21hcnRfRGF0YSAqc2QsIGNvbnN0IEV2YXNfRXZl
bnRfTW91c2VfTW92ZSAqZXYpOwogICAgIEVpbmFfQm9vbCAoKmtleV9kb3duKShFd2tfVmlld19T
bWFydF9EYXRhICpzZCwgY29uc3QgRXZhc19FdmVudF9LZXlfRG93biAqZXYpOwogICAgIEVpbmFf
Qm9vbCAoKmtleV91cCkoRXdrX1ZpZXdfU21hcnRfRGF0YSAqc2QsIGNvbnN0IEV2YXNfRXZlbnRf
S2V5X1VwICpldik7CisKKyAgICAvLyBTaG93cyBpbnB1dCBwaWNrZXIgYmFzZWQgb24gaW5wdXQg
dHlwZSB3aXRoIGluaXRpYWwgdmFsdWUuCisgICAgRWluYV9Cb29sICgqaW5wdXRfcGlja2VyX3No
b3cpKEV3a19WaWV3X1NtYXJ0X0RhdGEgKnNkLCBFd2tfSW5wdXRfVHlwZSBpbnB1dFR5cGUsIGNv
bnN0IGNoYXIqIGlucHV0VmFsdWUpOwogfTsKIAogLyoqCkBAIC0xMDAsNyArMTIzLDcgQEAgc3Ry
dWN0IF9Fd2tfVmlld19TbWFydF9DbGFzcyB7CiAgKiBAc2VlIEVXS19WSUVXX1NNQVJUX0NMQVNT
X0lOSVRfVkVSU0lPTgogICogQHNlZSBFV0tfVklFV19TTUFSVF9DTEFTU19JTklUX05BTUVfVkVS
U0lPTgogICovCi0jZGVmaW5lIEVXS19WSUVXX1NNQVJUX0NMQVNTX0lOSVQoc21hcnRfY2xhc3Nf
aW5pdCkge3NtYXJ0X2NsYXNzX2luaXQsIEVXS19WSUVXX1NNQVJUX0NMQVNTX1ZFUlNJT04sIDAs
IDAsIDAsIDAsIDAsIDAsIDAsIDB9CisjZGVmaW5lIEVXS19WSUVXX1NNQVJUX0NMQVNTX0lOSVQo
c21hcnRfY2xhc3NfaW5pdCkge3NtYXJ0X2NsYXNzX2luaXQsIEVXS19WSUVXX1NNQVJUX0NMQVNT
X1ZFUlNJT04sIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDB9CiAKIC8qKgogICogSW5pdGlhbGl6
ZXIgdG8gemVybyBhIHdob2xlIEV3a19WaWV3X1NtYXJ0X0NsYXNzIHN0cnVjdHVyZS4KQEAgLTQ0
MCw2ICs0NjMsMjEgQEAgRUFQSSBjb25zdCBjaGFyICAqZXdrX3ZpZXdfc2V0dGluZ19lbmNvZGlu
Z19jdXN0b21fZ2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpvKTsKICAqLwogRUFQSSBFaW5hX0Jvb2wg
ICAgZXdrX3ZpZXdfc2V0dGluZ19lbmNvZGluZ19jdXN0b21fc2V0KEV2YXNfT2JqZWN0ICpvLCBj
b25zdCBjaGFyICplbmNvZGluZyk7CiAKKy8qKgorICogU2V0cyB0aGUgY29sb3IgdmFsdWUgb2Yg
Y29sb3IgY2hvb3NlcgorICoKKyAqIEBwYXJhbSBvIHZpZXcgb2JqZWN0IGNvbnRhaW5zIGNvbG9y
IGNob29zZXIKKyAqIEBwYXJhbSBjb2xvciB0aGUgY29sb3IgdmFsdWUgdG8gYmUgc2V0IChleDog
IzAwMDAwMCkKKyAqLworRUFQSSB2b2lkIGV3a192aWV3X2NvbG9yX2Nob29zZXJfY29sb3Jfc2V0
KEV2YXNfT2JqZWN0KiBvLCBjb25zdCBjaGFyKiBjb2xvcik7CisKKy8qKgorICogQ2xvc2VzIGNv
bG9yIGNob29zZXIKKyAqCisgKiBAcGFyYW0gbyB2aWV3IG9iamVjdCBjb250YWlucyBjb2xvciBj
aG9vc2VyCisgKi8KK0VBUEkgdm9pZCBld2tfdmlld19jb2xvcl9jaG9vc2VyX2Nsb3NlKEV2YXNf
T2JqZWN0KiBvKTsKKwogI2lmZGVmIF9fY3BsdXNwbHVzCiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3X3ByaXZhdGUuaCBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3X3ByaXZhdGUuaAppbmRleCAz
YzljZTk0Li4wMDMzYThiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2VmbC9ld2tfdmlld19wcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9lZmwvZXdrX3ZpZXdfcHJpdmF0ZS5oCkBAIC0yMiw5ICsyMiwxNCBAQAogI2RlZmluZSBld2tf
dmlld19wcml2YXRlX2gKIAogI2luY2x1ZGUgIldlYlBhZ2VQcm94eS5oIgorI2luY2x1ZGUgImV3
a192aWV3LmgiCiAjaW5jbHVkZSA8RXZhcy5oPgogI2luY2x1ZGUgPFdlYktpdDIvV0tCYXNlLmg+
CiAKKyNpZiBFTkFCTEUoSU5QVVRfVFlQRV9DT0xPUikKKyNpbmNsdWRlICJXZWJDb2xvckNob29z
ZXJQcm94eUVmbC5oIgorI2VuZGlmIC8vIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9SKQorCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBJbnRSZWN0OwogY2xhc3MgSW50U2l6ZTsKQEAgLTcwLDQg
Kzc1LDkgQEAgdm9pZCBld2tfdmlld19pbnRlbnRfc2VydmljZV9yZWdpc3RlcihFdmFzX09iamVj
dCogZXdrVmlldywgY29uc3QgRXdrX0ludGVudF9TZXIKIAogV2ViS2l0OjpXZWJQYWdlUHJveHkq
IGV3a192aWV3X3BhZ2VfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBld2tWaWV3KTsKIAordm9pZCBl
d2tfdmlld19pbnB1dF9waWNrZXJfcmVxdWVzdChFdmFzX09iamVjdCogZXdrVmlldywgRXdrX0lu
cHV0X1R5cGUgaW5wdXRUeXBlLCBjb25zdCBTdHJpbmcmIGlucHV0VmFsdWUpOworI2lmIEVOQUJM
RShJTlBVVF9UWVBFX0NPTE9SKQordm9pZCBld2tfdmlld19jb2xvcl9jaG9vc2VyX3JlcXVlc3Qo
RXZhc19PYmplY3QqIGV3a1ZpZXcsIFdlYktpdDo6V2ViQ29sb3JDaG9vc2VyUHJveHlFZmwqIGNv
bG9yQ2hvb3NlciwgY29uc3QgU3RyaW5nJiBpbnB1dFZhbHVlKTsKKyNlbmRpZiAvLyBFTkFCTEUo
SU5QVVRfVFlQRV9DT0xPUikKKwogI2VuZGlmIC8vIGV3a192aWV3X3ByaXZhdGVfaApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJDb2xvckNob29zZXJQcm94eUVm
bC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYkNvbG9yQ2hvb3NlclByb3h5
RWZsLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNGUxMjM5Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJDb2xvckNob29z
ZXJQcm94eUVmbC5jcHAKQEAgLTAsMCArMSw1OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MiBTYW1zdW5nIEVsZWN0cm9uaWNzCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiV2ViQ29sb3JDaG9vc2VyUHJveHlFZmwuaCIKKworI2lmIEVOQUJMRShJTlBVVF9UWVBF
X0NPTE9SKQorCisjaW5jbHVkZSAiZXdrX3ZpZXdfcHJpdmF0ZS5oIgorCituYW1lc3BhY2UgV2Vi
S2l0IHsKKworV2ViQ29sb3JDaG9vc2VyUHJveHlFZmw6OldlYkNvbG9yQ2hvb3NlclByb3h5RWZs
KEV2YXNfT2JqZWN0KiB3ZWJWaWV3LCBXZWJDb2xvckNob29zZXJQcm94eTo6Q2xpZW50KiBjbGll
bnQsIGNvbnN0IFdlYkNvcmU6OkNvbG9yJiBjb2xvcikKKyAgICA6IFdlYkNvbG9yQ2hvb3NlclBy
b3h5KGNsaWVudCkKK3sKKyAgICBld2tfdmlld19jb2xvcl9jaG9vc2VyX3JlcXVlc3Qod2ViVmll
dywgdGhpcywgY29sb3Iuc2VyaWFsaXplZCgpKTsKK30KKworV2ViQ29sb3JDaG9vc2VyUHJveHlF
Zmw6On5XZWJDb2xvckNob29zZXJQcm94eUVmbCgpCit7Cit9CisKK3ZvaWQgV2ViQ29sb3JDaG9v
c2VyUHJveHlFZmw6OmVuZENob29zZXIoKQoreworICAgIGlmIChtX2NsaWVudCkKKyAgICAgICAg
bV9jbGllbnQtPmRpZEVuZENvbG9yQ2hvb3NlcigpOworfQorCit2b2lkIFdlYkNvbG9yQ2hvb3Nl
clByb3h5RWZsOjpzZXRTZWxlY3RlZENvbG9yKGNvbnN0IFdlYkNvcmU6OkNvbG9yJiBjb2xvcikK
K3sKKyAgICBpZiAobV9jbGllbnQpCisgICAgICAgIG1fY2xpZW50LT5kaWRDaG9vc2VDb2xvcihj
b2xvcik7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKElO
UFVUX1RZUEVfQ09MT1IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZs
L1dlYkNvbG9yQ2hvb3NlclByb3h5RWZsLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZs
L1dlYkNvbG9yQ2hvb3NlclByb3h5RWZsLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMC4uM2Q2MTc2OQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9lZmwvV2ViQ29sb3JDaG9vc2VyUHJveHlFZmwuaApAQCAtMCwwICsxLDU5IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDEyIFNhbXN1bmcgRWxlY3Ryb25pY3MKKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYg
V2ViQ29sb3JDaG9vc2VyUHJveHlFZmxfaAorI2RlZmluZSBXZWJDb2xvckNob29zZXJQcm94eUVm
bF9oCisKKyNpZiBFTkFCTEUoSU5QVVRfVFlQRV9DT0xPUikKKworI2luY2x1ZGUgIkNvbG9yLmgi
CisjaW5jbHVkZSAiV2ViQ29sb3JDaG9vc2VyUHJveHkuaCIKKwordHlwZWRlZiBzdHJ1Y3QgX0V2
YXNfT2JqZWN0IEV2YXNfT2JqZWN0OworCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2Vi
UGFnZVByb3h5OworCitjbGFzcyBXZWJDb2xvckNob29zZXJQcm94eUVmbCA6IHB1YmxpYyBXZWJD
b2xvckNob29zZXJQcm94eSB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViQ29s
b3JDaG9vc2VyUHJveHlFZmw+IGNyZWF0ZShFdmFzX09iamVjdCogd2ViVmlldywgV2ViQ29sb3JD
aG9vc2VyUHJveHk6OkNsaWVudCogY2xpZW50LCBjb25zdCBXZWJDb3JlOjpDb2xvciYgY29sb3Ip
CisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYkNvbG9yQ2hvb3NlclByb3h5
RWZsKHdlYlZpZXcsIGNsaWVudCwgY29sb3IpKTsKKyAgICB9CisgICAgfldlYkNvbG9yQ2hvb3Nl
clByb3h5RWZsKCk7CisKKyAgICB2aXJ0dWFsIHZvaWQgZW5kQ2hvb3NlcigpOworICAgIHZpcnR1
YWwgdm9pZCBzZXRTZWxlY3RlZENvbG9yKGNvbnN0IFdlYkNvcmU6OkNvbG9yJik7CisKK3ByaXZh
dGU6CisgICAgV2ViQ29sb3JDaG9vc2VyUHJveHlFZmwoRXZhc19PYmplY3QqLCBXZWJDb2xvckNo
b29zZXJQcm94eTo6Q2xpZW50KiwgY29uc3QgV2ViQ29yZTo6Q29sb3ImKTsKK307CisKK30gLy8g
bmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKElOUFVUX1RZUEVfQ09MT1IpCisK
KyNlbmRpZiAvLyBXZWJDb2xvckNob29zZXJQcm94eUVmbF9oCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>154272</attachid>
            <date>2012-07-24 23:40:09 -0700</date>
            <delta_ts>2012-07-25 02:50:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>21073</size>
            <attacher name="KwangYong Choi">ky0.choi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCAyN2RmNTBhLi4yNGYzYTYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTAg
QEAKKzIwMTItMDctMjQgIEt3YW5nWW9uZyBDaG9pICA8a3kwLmNob2lAc2Ftc3VuZy5jb20+CisK
KyAgICAgICAgW0VGTF1bV0syXSBJbXBsZW1lbnQgY29sb3IgY2hvb3NlciBpbnRlcmZhY2UgZm9y
IEVGTAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTE4
MzIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbXBs
ZW1lbnRlZCBjb2xvciBjaG9vc2VyIHByb3h5IGFuZCBpbnB1dCBwaWNrZXIgaW50ZXJmYWNlIGZv
ciBFRkwuCisgICAgICAgIElucHV0IHBpY2tlciBpbnRlcmZhY2UgaXMgZm9yIGdlbmVyYWwgdXNl
IG9mIGFsbCB0aGUgaW5wdXQgdHlwZXMKKyAgICAgICAgaW5jbHVkaW5nIGNvbG9yIGlucHV0IHR5
cGUuCisKKyAgICAgICAgSW5wdXQgcGlja2VyIHVzZXIgaW50ZXJmYWNlIHNob3VsZCBiZSBpbXBs
ZW1lbnRlZCBhZnRlciB0aGlzLgorCisgICAgICAgICogUGxhdGZvcm1FZmwuY21ha2U6CisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9lZmwvSW5wdXRQaWNrZXIuY3BwOiBBZGRlZC4KKyAgICAgICAg
KFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6OklucHV0UGlja2VyOjpJbnB1dFBpY2tlcik6Cisg
ICAgICAgIChXZWJLaXQ6OklucHV0UGlja2VyOjp+SW5wdXRQaWNrZXIpOgorICAgICAgICAoV2Vi
S2l0OjpJbnB1dFBpY2tlcjo6c2hvdyk6IFNob3dzIHVzZXIgaW50ZXJmYWNlIG9mIHNwZWNpZmlj
IGlucHV0IHR5cGUuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvSW5wdXRQaWNrZXIuaDog
QWRkZWQuCisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoSW5wdXRQaWNrZXIpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvZWZsL1BhZ2VDbGllbnRJbXBsLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6UGFnZUNsaWVudEltcGw6OmNyZWF0ZUNvbG9yQ2hvb3NlclByb3h5KToKKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5jcHA6CisgICAgICAgIChfRXdrX1ZpZXdfUHJpdmF0
ZV9EYXRhKToKKyAgICAgICAgKF9ld2tfdmlld19pbnB1dF9waWNrZXJfc2hvdyk6CisgICAgICAg
IChfZXdrX3ZpZXdfcHJpdl9uZXcpOgorICAgICAgICAoX2V3a192aWV3X3ByaXZfZGVsKToKKyAg
ICAgICAgKGV3a192aWV3X3NtYXJ0X2NsYXNzX2luaXQpOgorICAgICAgICAoZXdrX3ZpZXdfaW5w
dXRfcGlja2VyX3JlcXVlc3QpOiBSZXF1ZXN0cyBpbnB1dCBwaWNrZXIuCisgICAgICAgIChld2tf
dmlld19jb2xvcl9jaG9vc2VyX3JlcXVlc3QpOiBSZXF1ZXN0cyBjb2xvciBwaWNrZXIuCisgICAg
ICAgIChld2tfdmlld19jb2xvcl9jaG9vc2VyX2NvbG9yX3NldCk6IFNldHMgdGhlIGNvbG9yIGJ5
IGNhbGxpbmcgV2ViQ29sb3JDaG9vc2VyUHJveHlFZmw6OnNldFNlbGVjdGVkQ29sb3IuCisgICAg
ICAgIChld2tfdmlld19jb2xvcl9jaG9vc2VyX2Nsb3NlKTogQ2FsbHMgV2ViQ29sb3JDaG9vc2Vy
UHJveHlFZmw6OmVuZENob29zZXIKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmll
dy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3X3ByaXZhdGUuaDoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvZWZsL1dlYkNvbG9yQ2hvb3NlclByb3h5RWZsLmNwcDogQWRkZWQu
CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb2xvckNob29zZXJQcm94
eUVmbDo6V2ViQ29sb3JDaG9vc2VyUHJveHlFZmwpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb2xv
ckNob29zZXJQcm94eUVmbDo6fldlYkNvbG9yQ2hvb3NlclByb3h5RWZsKToKKyAgICAgICAgKFdl
YktpdDo6V2ViQ29sb3JDaG9vc2VyUHJveHlFZmw6OmVuZENob29zZXIpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJDb2xvckNob29zZXJQcm94eUVmbDo6c2V0U2VsZWN0ZWRDb2xvcik6CisgICAgICAg
ICogVUlQcm9jZXNzL2VmbC9XZWJDb2xvckNob29zZXJQcm94eUVmbC5oOiBBZGRlZC4KKyAgICAg
ICAgKFdlYktpdCk6CisgICAgICAgIChXZWJDb2xvckNob29zZXJQcm94eUVmbCk6CisgICAgICAg
IChXZWJLaXQ6OldlYkNvbG9yQ2hvb3NlclByb3h5RWZsOjpjcmVhdGUpOgorCiAyMDEyLTA3LTE5
ICBTdWRhcnNhbmEgTmFnaW5lbmkgIDxzdWRhcnNhbmEubmFnaW5lbmlAbGludXguaW50ZWwuY29t
PgogCiAgICAgICAgIFtFRkxdIFtXSzJdIEFkZCBtZXRob2RzIHRvIGdldC9zZXQgYSBjdXN0b20g
dGV4dCBlbmNvZGluZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21h
a2UgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQppbmRleCA5N2Y3MDk1Li45ZTQ5
YjEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQorKysgYi9T
b3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQpAQCAtMzUsNiArMzUsNyBAQCBMSVNUKEFQ
UEVORCBXZWJLaXQyX1NPVVJDRVMKICAgICBVSVByb2Nlc3MvQVBJL0Mvc291cC9XS1NvdXBSZXF1
ZXN0TWFuYWdlci5jcHAKIAogICAgIFVJUHJvY2Vzcy9BUEkvZWZsL0JhdHRlcnlQcm92aWRlci5j
cHAKKyAgICBVSVByb2Nlc3MvQVBJL2VmbC9JbnB1dFBpY2tlci5jcHAKICAgICBVSVByb2Nlc3Mv
QVBJL2VmbC9QYWdlQ2xpZW50SW1wbC5jcHAKICAgICBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29u
dGV4dC5jcHAKICAgICBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29va2llX21hbmFnZXIuY3BwCkBA
IC01Myw2ICs1NCw3IEBAIExJU1QoQVBQRU5EIFdlYktpdDJfU09VUkNFUwogICAgIFVJUHJvY2Vz
cy9jYWlyby9CYWNraW5nU3RvcmVDYWlyby5jcHAKIAogICAgIFVJUHJvY2Vzcy9lZmwvVGV4dENo
ZWNrZXJFZmwuY3BwCisgICAgVUlQcm9jZXNzL2VmbC9XZWJDb2xvckNob29zZXJQcm94eUVmbC5j
cHAKICAgICBVSVByb2Nlc3MvZWZsL1dlYkNvbnRleHRFZmwuY3BwCiAgICAgVUlQcm9jZXNzL2Vm
bC9XZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5RWZsLmNwcAogICAgIFVJUHJvY2Vzcy9lZmwvV2Vi
SW5zcGVjdG9yUHJveHlFZmwuY3BwCkBAIC0xMDgsNiArMTEwLDcgQEAgTElTVChBUFBFTkQgV2Vi
S2l0Ml9JTkNMVURFX0RJUkVDVE9SSUVTCiAgICAgIiR7V0VCS0lUMl9ESVJ9L1VJUHJvY2Vzcy9B
UEkvQy9lZmwiCiAgICAgIiR7V0VCS0lUMl9ESVJ9L1VJUHJvY2Vzcy9BUEkvQy9zb3VwIgogICAg
ICIke1dFQktJVDJfRElSfS9VSVByb2Nlc3MvQVBJL2VmbCIKKyAgICAiJHtXRUJLSVQyX0RJUn0v
VUlQcm9jZXNzL2VmbCIKICAgICAiJHtXRUJLSVQyX0RJUn0vVUlQcm9jZXNzL3NvdXAiCiAgICAg
IiR7V0VCS0lUMl9ESVJ9L1dlYlByb2Nlc3MvRG93bmxvYWRzL3NvdXAiCiAgICAgIiR7V0VCS0lU
Ml9ESVJ9L1dlYlByb2Nlc3MvZWZsIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9lZmwvSW5wdXRQaWNrZXIuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9lZmwvSW5wdXRQaWNrZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu
LjJkMGM3ZTEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2VmbC9JbnB1dFBpY2tlci5jcHAKQEAgLTAsMCArMSw0OCBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIklucHV0UGlja2VyLmgiCisKKyNpbmNs
dWRlICJOb3RJbXBsZW1lbnRlZC5oIgorI2luY2x1ZGUgImV3a192aWV3LmgiCisKK25hbWVzcGFj
ZSBXZWJLaXQgeworCitJbnB1dFBpY2tlcjo6SW5wdXRQaWNrZXIoRXZhc19PYmplY3QqIGV3a1Zp
ZXcpCisgICAgOiBtX2V3a1ZpZXcoZXdrVmlldykKK3sKK30KKworSW5wdXRQaWNrZXI6On5JbnB1
dFBpY2tlcigpCit7Cit9CisKK3ZvaWQgSW5wdXRQaWNrZXI6OnNob3coRXdrX0lucHV0X1R5cGUg
aW5wdXRUeXBlLCBjb25zdCBjaGFyKiBpbnB1dFZhbHVlKQoreworICAgIG5vdEltcGxlbWVudGVk
KCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9lZmwvSW5wdXRQaWNrZXIuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZWZsL0lucHV0UGlja2VyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMC4uMjJjMGM2MQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZWZsL0lucHV0UGlja2VyLmgKQEAgLTAsMCArMSw0OCBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2lmbmRlZiBJbnB1dFBpY2tlcl9oCisjZGVmaW5lIElucHV0UGlja2VyX2gKKworI2lu
Y2x1ZGUgImV3a192aWV3LmgiCisKK3R5cGVkZWYgc3RydWN0IF9FdmFzX09iamVjdCBFdmFzX09i
amVjdDsKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIElucHV0UGlja2VyIHsKK3B1Ymxp
YzoKKyAgICBleHBsaWNpdCBJbnB1dFBpY2tlcihFdmFzX09iamVjdCopOworICAgIH5JbnB1dFBp
Y2tlcigpOworCisgICAgdm9pZCBzaG93KEV3a19JbnB1dF9UeXBlLCBjb25zdCBjaGFyKik7CisK
K3ByaXZhdGU6CisgICAgRXZhc19PYmplY3QqIG1fZXdrVmlldzsKK307CisKK30gLy8gbmFtZXNw
YWNlIFdlYktpdAorCisjZW5kaWYgLy8gSW5wdXRQaWNrZXJfaApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvUGFnZUNsaWVudEltcGwuY3BwIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvUGFnZUNsaWVudEltcGwuY3BwCmluZGV4IGU2OWY4N2Qu
LjU3NTljYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL1Bh
Z2VDbGllbnRJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9Q
YWdlQ2xpZW50SW1wbC5jcHAKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJEcmF3aW5nQXJl
YVByb3h5SW1wbC5oIgogI2luY2x1ZGUgIk5hdGl2ZVdlYktleWJvYXJkRXZlbnQuaCIKICNpbmNs
dWRlICJOb3RJbXBsZW1lbnRlZC5oIgorI2luY2x1ZGUgIldlYkNvbG9yQ2hvb3NlclByb3h5RWZs
LmgiCiAjaW5jbHVkZSAiV2ViQ29udGV4dC5oIgogI2luY2x1ZGUgIldlYkNvbnRleHRNZW51UHJv
eHkuaCIKICNpbmNsdWRlICJXZWJQYWdlUHJveHkuaCIKQEAgLTIwNiwxMCArMjA3LDkgQEAgUGFz
c1JlZlB0cjxXZWJDb250ZXh0TWVudVByb3h5PiBQYWdlQ2xpZW50SW1wbDo6Y3JlYXRlQ29udGV4
dE1lbnVQcm94eShXZWJQYWdlUHIKIH0KIAogI2lmIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9SKQot
UGFzc1JlZlB0cjxXZWJDb2xvckNob29zZXJQcm94eT4gUGFnZUNsaWVudEltcGw6OmNyZWF0ZUNv
bG9yQ2hvb3NlclByb3h5KFdlYlBhZ2VQcm94eSosIGNvbnN0IFdlYkNvcmU6OkNvbG9yJikKK1Bh
c3NSZWZQdHI8V2ViQ29sb3JDaG9vc2VyUHJveHk+IFBhZ2VDbGllbnRJbXBsOjpjcmVhdGVDb2xv
ckNob29zZXJQcm94eShXZWJQYWdlUHJveHkqIHBhZ2UsIGNvbnN0IFdlYkNvcmU6OkNvbG9yJiBp
bml0aWFsQ29sb3IpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gMDsKKyAg
ICByZXR1cm4gV2ViQ29sb3JDaG9vc2VyUHJveHlFZmw6OmNyZWF0ZShtX3ZpZXdXaWRnZXQsIHBh
Z2UsIGluaXRpYWxDb2xvcik7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9lZmwvZXdrX3ZpZXcuY3BwCmluZGV4IDNmODBhYTEuLjg1NDQwOTIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5jcHAKQEAgLTIxLDYgKzIx
LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJld2tfdmlldy5oIgogCisjaW5j
bHVkZSAiSW5wdXRQaWNrZXIuaCIKICNpbmNsdWRlICJOYXRpdmVXZWJLZXlib2FyZEV2ZW50Lmgi
CiAjaW5jbHVkZSAiTmF0aXZlV2ViTW91c2VFdmVudC5oIgogI2luY2x1ZGUgIk5hdGl2ZVdlYldo
ZWVsRXZlbnQuaCIKQEAgLTY4LDYgKzY5LDExIEBAIHN0cnVjdCBfRXdrX1ZpZXdfUHJpdmF0ZV9E
YXRhIHsKICAgICAgICAgZWluYV9zdHJpbmdzaGFyZV9kZWwodGhlbWUpOwogICAgICAgICBlaW5h
X3N0cmluZ3NoYXJlX2RlbChjdXN0b21FbmNvZGluZyk7CiAgICAgfQorCisgICAgT3duUHRyPElu
cHV0UGlja2VyPiBpbnB1dFBpY2tlcjsKKyNpZiBFTkFCTEUoSU5QVVRfVFlQRV9DT0xPUikKKyAg
ICBXZWJDb2xvckNob29zZXJQcm94eUVmbCogY29sb3JDaG9vc2VyOworI2VuZGlmIC8vIEVOQUJM
RShJTlBVVF9UWVBFX0NPTE9SKQogfTsKIAogI2RlZmluZSBFV0tfVklFV19UWVBFX0NIRUNLKGV3
a1ZpZXcsIHJlc3VsdCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKQEAgLTIw
Myw2ICsyMDksMTQgQEAgc3RhdGljIEVpbmFfQm9vbCBfZXdrX3ZpZXdfc21hcnRfa2V5X3VwKEV3
a19WaWV3X1NtYXJ0X0RhdGEqIHNtYXJ0RGF0YSwgY29uc3QgRXYKICAgICByZXR1cm4gdHJ1ZTsK
IH0KIAorc3RhdGljIEVpbmFfQm9vbCBfZXdrX3ZpZXdfaW5wdXRfcGlja2VyX3Nob3coRXdrX1Zp
ZXdfU21hcnRfRGF0YSogc21hcnREYXRhLCBFd2tfSW5wdXRfVHlwZSBpbnB1dFR5cGUsIGNvbnN0
IGNoYXIqIGlucHV0VmFsdWUpCit7CisgICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNt
YXJ0RGF0YSwgcHJpdiwgZmFsc2UpOworCisgICAgcHJpdi0+aW5wdXRQaWNrZXItPnNob3coaW5w
dXRUeXBlLCBpbnB1dFZhbHVlKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogLy8gRXZlbnQgSGFu
ZGxpbmcuCiBzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfb25fZm9jdXNfaW4odm9pZCogZGF0YSwgRXZh
cyogY2FudmFzLCBFdmFzX09iamVjdCogZXdrVmlldywgdm9pZCogZXZlbnRJbmZvKQogewpAQCAt
Mjg0LDExICsyOTgsMTUgQEAgc3RhdGljIEV3a19WaWV3X1ByaXZhdGVfRGF0YSogX2V3a192aWV3
X3ByaXZfbmV3KEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNtYXJ0RGF0YSkKICAgICAgICAgcmV0dXJu
IDA7CiAgICAgfQogCisgICAgcHJpdi0+aW5wdXRQaWNrZXIgPSBhZG9wdFB0cjxJbnB1dFBpY2tl
cj4obmV3IElucHV0UGlja2VyKHNtYXJ0RGF0YS0+c2VsZikpOworCiAgICAgcmV0dXJuIHByaXY7
CiB9CiAKIHN0YXRpYyB2b2lkIF9ld2tfdmlld19wcml2X2RlbChFd2tfVmlld19Qcml2YXRlX0Rh
dGEqIHByaXYpCiB7CisgICAgcHJpdi0+aW5wdXRQaWNrZXIgPSBudWxscHRyOworCiAgICAgZGVs
ZXRlIHByaXY7CiB9CiAKQEAgLTQ3NCw2ICs0OTIsNyBAQCBFaW5hX0Jvb2wgZXdrX3ZpZXdfc21h
cnRfY2xhc3NfaW5pdChFd2tfVmlld19TbWFydF9DbGFzcyogYXBpKQogICAgIGFwaS0+bW91c2Vf
bW92ZSA9IF9ld2tfdmlld19zbWFydF9tb3VzZV9tb3ZlOwogICAgIGFwaS0+a2V5X2Rvd24gPSBf
ZXdrX3ZpZXdfc21hcnRfa2V5X2Rvd247CiAgICAgYXBpLT5rZXlfdXAgPSBfZXdrX3ZpZXdfc21h
cnRfa2V5X3VwOworICAgIGFwaS0+aW5wdXRfcGlja2VyX3Nob3cgPSBfZXdrX3ZpZXdfaW5wdXRf
cGlja2VyX3Nob3c7CiAKICAgICByZXR1cm4gdHJ1ZTsKIH0KQEAgLTk4OCwzICsxMDA3LDQ4IEBA
IEVpbmFfQm9vbCBld2tfdmlld19zZXR0aW5nX2VuY29kaW5nX2N1c3RvbV9zZXQoRXZhc19PYmpl
Y3QqIGV3a1ZpZXcsIGNvbnN0IGNoYXIqCiAgICAgICAgIFdLUGFnZVNldEN1c3RvbVRleHRFbmNv
ZGluZ05hbWUodG9BUEkocHJpdi0+cGFnZUNsaWVudC0+cGFnZSgpKSwgd2tFbmNvZGluZ05hbWUu
Z2V0KCkpOwogICAgIHJldHVybiB0cnVlOwogfQorCit2b2lkIGV3a192aWV3X2lucHV0X3BpY2tl
cl9yZXF1ZXN0KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBFd2tfSW5wdXRfVHlwZSBpbnB1dFR5cGUs
IGNvbnN0IFN0cmluZyYgaW5wdXRWYWx1ZSkKK3sKKyAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVU
VVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSk7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4o
c21hcnREYXRhLT5hcGkpOworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKHNtYXJ0RGF0
YS0+YXBpLT5pbnB1dF9waWNrZXJfc2hvdyk7CisKKyAgICBzbWFydERhdGEtPmFwaS0+aW5wdXRf
cGlja2VyX3Nob3coc21hcnREYXRhLCBpbnB1dFR5cGUsIGlucHV0VmFsdWUudXRmOCgpLmRhdGEo
KSk7Cit9CisKKyNpZiBFTkFCTEUoSU5QVVRfVFlQRV9DT0xPUikKK3ZvaWQgZXdrX3ZpZXdfY29s
b3JfY2hvb3Nlcl9yZXF1ZXN0KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBXZWJLaXQ6OldlYkNvbG9y
Q2hvb3NlclByb3h5RWZsKiBjb2xvckNob29zZXIsIGNvbnN0IFN0cmluZyYgaW5wdXRWYWx1ZSkK
K3sKKyAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSk7Cisg
ICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgcHJpdik7CisKKyAgICBw
cml2LT5jb2xvckNob29zZXIgPSBjb2xvckNob29zZXI7CisKKyAgICBld2tfdmlld19pbnB1dF9w
aWNrZXJfcmVxdWVzdChld2tWaWV3LCBFV0tfSU5QVVRfVFlQRV9DT0xPUiwgaW5wdXRWYWx1ZSk7
Cit9CisjZW5kaWYgLy8gRU5BQkxFKElOUFVUX1RZUEVfQ09MT1IpCisKK3ZvaWQgZXdrX3ZpZXdf
Y29sb3JfY2hvb3Nlcl9jb2xvcl9zZXQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIGNvbnN0IGNoYXIq
IGNvbG9yKQoreworI2lmIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9SKQorICAgIEVXS19WSUVXX1NE
X0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhKTsKKyAgICBFV0tfVklFV19QUklWX0dF
VF9PUl9SRVRVUk4oc21hcnREYXRhLCBwcml2KTsKKworICAgIGlmIChwcml2LT5jb2xvckNob29z
ZXIpCisgICAgICAgIHByaXYtPmNvbG9yQ2hvb3Nlci0+c2V0U2VsZWN0ZWRDb2xvcihDb2xvcihj
b2xvcikpOworI2VuZGlmIC8vIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9SKQorfQorCit2b2lkIGV3
a192aWV3X2NvbG9yX2Nob29zZXJfY2xvc2UoRXZhc19PYmplY3QqIGV3a1ZpZXcpCit7CisjaWYg
RU5BQkxFKElOUFVUX1RZUEVfQ09MT1IpCisgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihl
d2tWaWV3LCBzbWFydERhdGEpOworICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzbWFy
dERhdGEsIHByaXYpOworCisgICAgaWYgKHByaXYtPmNvbG9yQ2hvb3NlcikKKyAgICAgICAgcHJp
di0+Y29sb3JDaG9vc2VyLT5lbmRDaG9vc2VyKCk7CisKKyAgICBwcml2LT5jb2xvckNob29zZXIg
PSAwOworI2VuZGlmIC8vIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9SKQorfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuaCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmgKaW5kZXggNmE4ZTc0Zi4uYmQ4MmNmMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuaAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5oCkBAIC02Niw2
ICs2NiwyNyBAQCBleHRlcm4gIkMiIHsKIHR5cGVkZWYgc3RydWN0IF9Fd2tfVmlld19TbWFydF9E
YXRhIEV3a19WaWV3X1NtYXJ0X0RhdGE7CiB0eXBlZGVmIHN0cnVjdCBfRXdrX1ZpZXdfU21hcnRf
Q2xhc3MgRXdrX1ZpZXdfU21hcnRfQ2xhc3M7CiAKKy8qKgorICogXGVudW0gICAgRXdrX0lucHV0
X1R5cGUKKyAqIEBicmllZiAgIFByb3ZpZGVzIHR5cGUgb2YgaW5wdXQgZWxlbWVudAorICovCitl
bnVtIF9Fd2tfSW5wdXRfVHlwZSB7CisgICAgRVdLX0lOUFVUX1RZUEVfVEVMRVBIT05FID0gMSwg
CisgICAgRVdLX0lOUFVUX1RZUEVfTlVNQkVSLAorICAgIEVXS19JTlBVVF9UWVBFX0VNQUlMLAor
ICAgIEVXS19JTlBVVF9UWVBFX1VSTCwKKyAgICBFV0tfSU5QVVRfVFlQRV9QQVNTV09SRCwKKyAg
ICBFV0tfSU5QVVRfVFlQRV9DT0xPUiwKKyAgICBFV0tfSU5QVVRfVFlQRV9EQVRFLAorICAgIEVX
S19JTlBVVF9UWVBFX0RBVEVUSU1FLAorICAgIEVXS19JTlBVVF9UWVBFX0RBVEVUSU1FTE9DQUws
CisgICAgRVdLX0lOUFVUX1RZUEVfTU9OVEgsCisgICAgRVdLX0lOUFVUX1RZUEVfVElNRSwKKyAg
ICBFV0tfSU5QVVRfVFlQRV9XRUVLCit9OworLyoqIENyZWF0ZXMgYSB0eXBlIG5hbWUgZm9yIF9F
d2tfSW5wdXRfVHlwZV9Fd2tfSW5wdXRfVHlwZSAqLwordHlwZWRlZiBlbnVtIF9Fd2tfSW5wdXRf
VHlwZSBFd2tfSW5wdXRfVHlwZTsKKwogLy8vIEV3ayB2aWV3J3MgY2xhc3MsIHRvIGJlIG92ZXJy
aWRkZW4gYnkgc3ViLWNsYXNzZXMuCiBzdHJ1Y3QgX0V3a19WaWV3X1NtYXJ0X0NsYXNzIHsKICAg
ICBFdmFzX1NtYXJ0X0NsYXNzIHNjOyAvKio8IGFsbCBidXQgJ2RhdGEnIGlzIGZyZWUgdG8gYmUg
Y2hhbmdlZC4gKi8KQEAgLTgyLDYgKzEwMyw5IEBAIHN0cnVjdCBfRXdrX1ZpZXdfU21hcnRfQ2xh
c3MgewogICAgIEVpbmFfQm9vbCAoKm1vdXNlX21vdmUpKEV3a19WaWV3X1NtYXJ0X0RhdGEgKnNk
LCBjb25zdCBFdmFzX0V2ZW50X01vdXNlX01vdmUgKmV2KTsKICAgICBFaW5hX0Jvb2wgKCprZXlf
ZG93bikoRXdrX1ZpZXdfU21hcnRfRGF0YSAqc2QsIGNvbnN0IEV2YXNfRXZlbnRfS2V5X0Rvd24g
KmV2KTsKICAgICBFaW5hX0Jvb2wgKCprZXlfdXApKEV3a19WaWV3X1NtYXJ0X0RhdGEgKnNkLCBj
b25zdCBFdmFzX0V2ZW50X0tleV9VcCAqZXYpOworCisgICAgLy8gU2hvd3MgaW5wdXQgcGlja2Vy
IGJhc2VkIG9uIGlucHV0IHR5cGUgd2l0aCBpbml0aWFsIHZhbHVlLgorICAgIEVpbmFfQm9vbCAo
KmlucHV0X3BpY2tlcl9zaG93KShFd2tfVmlld19TbWFydF9EYXRhICpzZCwgRXdrX0lucHV0X1R5
cGUgaW5wdXRUeXBlLCBjb25zdCBjaGFyKiBpbnB1dFZhbHVlKTsKIH07CiAKIC8qKgpAQCAtMTAw
LDcgKzEyNCw3IEBAIHN0cnVjdCBfRXdrX1ZpZXdfU21hcnRfQ2xhc3MgewogICogQHNlZSBFV0tf
VklFV19TTUFSVF9DTEFTU19JTklUX1ZFUlNJT04KICAqIEBzZWUgRVdLX1ZJRVdfU01BUlRfQ0xB
U1NfSU5JVF9OQU1FX1ZFUlNJT04KICAqLwotI2RlZmluZSBFV0tfVklFV19TTUFSVF9DTEFTU19J
TklUKHNtYXJ0X2NsYXNzX2luaXQpIHtzbWFydF9jbGFzc19pbml0LCBFV0tfVklFV19TTUFSVF9D
TEFTU19WRVJTSU9OLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwfQorI2RlZmluZSBFV0tfVklFV19T
TUFSVF9DTEFTU19JTklUKHNtYXJ0X2NsYXNzX2luaXQpIHtzbWFydF9jbGFzc19pbml0LCBFV0tf
VklFV19TTUFSVF9DTEFTU19WRVJTSU9OLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwfQogCiAv
KioKICAqIEluaXRpYWxpemVyIHRvIHplcm8gYSB3aG9sZSBFd2tfVmlld19TbWFydF9DbGFzcyBz
dHJ1Y3R1cmUuCkBAIC00NDAsNiArNDY0LDIxIEBAIEVBUEkgY29uc3QgY2hhciAgKmV3a192aWV3
X3NldHRpbmdfZW5jb2RpbmdfY3VzdG9tX2dldChjb25zdCBFdmFzX09iamVjdCAqbyk7CiAgKi8K
IEVBUEkgRWluYV9Cb29sICAgIGV3a192aWV3X3NldHRpbmdfZW5jb2RpbmdfY3VzdG9tX3NldChF
dmFzX09iamVjdCAqbywgY29uc3QgY2hhciAqZW5jb2RpbmcpOwogCisvKioKKyAqIFNldHMgdGhl
IGNvbG9yIHZhbHVlIG9mIGNvbG9yIGNob29zZXIKKyAqCisgKiBAcGFyYW0gbyB2aWV3IG9iamVj
dCBjb250YWlucyBjb2xvciBjaG9vc2VyCisgKiBAcGFyYW0gY29sb3IgdGhlIGNvbG9yIHZhbHVl
IHRvIGJlIHNldCAoZXg6ICMwMDAwMDApCisgKi8KK0VBUEkgdm9pZCBld2tfdmlld19jb2xvcl9j
aG9vc2VyX2NvbG9yX3NldChFdmFzX09iamVjdCAqbywgY29uc3QgY2hhciAqY29sb3IpOworCisv
KioKKyAqIENsb3NlcyBjb2xvciBjaG9vc2VyCisgKgorICogQHBhcmFtIG8gdmlldyBvYmplY3Qg
Y29udGFpbnMgY29sb3IgY2hvb3NlcgorICovCitFQVBJIHZvaWQgZXdrX3ZpZXdfY29sb3JfY2hv
b3Nlcl9jbG9zZShFdmFzX09iamVjdCAqbyk7CisKICNpZmRlZiBfX2NwbHVzcGx1cwogfQogI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmll
d19wcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlld19w
cml2YXRlLmgKaW5kZXggM2M5Y2U5NC4uMDAzM2E4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXdfcHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3X3ByaXZhdGUuaApAQCAtMjIsOSArMjIsMTQg
QEAKICNkZWZpbmUgZXdrX3ZpZXdfcHJpdmF0ZV9oCiAKICNpbmNsdWRlICJXZWJQYWdlUHJveHku
aCIKKyNpbmNsdWRlICJld2tfdmlldy5oIgogI2luY2x1ZGUgPEV2YXMuaD4KICNpbmNsdWRlIDxX
ZWJLaXQyL1dLQmFzZS5oPgogCisjaWYgRU5BQkxFKElOUFVUX1RZUEVfQ09MT1IpCisjaW5jbHVk
ZSAiV2ViQ29sb3JDaG9vc2VyUHJveHlFZmwuaCIKKyNlbmRpZiAvLyBFTkFCTEUoSU5QVVRfVFlQ
RV9DT0xPUikKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgSW50UmVjdDsKIGNsYXNzIElu
dFNpemU7CkBAIC03MCw0ICs3NSw5IEBAIHZvaWQgZXdrX3ZpZXdfaW50ZW50X3NlcnZpY2VfcmVn
aXN0ZXIoRXZhc19PYmplY3QqIGV3a1ZpZXcsIGNvbnN0IEV3a19JbnRlbnRfU2VyCiAKIFdlYktp
dDo6V2ViUGFnZVByb3h5KiBld2tfdmlld19wYWdlX2dldChjb25zdCBFdmFzX09iamVjdCogZXdr
Vmlldyk7CiAKK3ZvaWQgZXdrX3ZpZXdfaW5wdXRfcGlja2VyX3JlcXVlc3QoRXZhc19PYmplY3Qq
IGV3a1ZpZXcsIEV3a19JbnB1dF9UeXBlIGlucHV0VHlwZSwgY29uc3QgU3RyaW5nJiBpbnB1dFZh
bHVlKTsKKyNpZiBFTkFCTEUoSU5QVVRfVFlQRV9DT0xPUikKK3ZvaWQgZXdrX3ZpZXdfY29sb3Jf
Y2hvb3Nlcl9yZXF1ZXN0KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBXZWJLaXQ6OldlYkNvbG9yQ2hv
b3NlclByb3h5RWZsKiBjb2xvckNob29zZXIsIGNvbnN0IFN0cmluZyYgaW5wdXRWYWx1ZSk7Cisj
ZW5kaWYgLy8gRU5BQkxFKElOUFVUX1RZUEVfQ09MT1IpCisKICNlbmRpZiAvLyBld2tfdmlld19w
cml2YXRlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViQ29s
b3JDaG9vc2VyUHJveHlFZmwuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJD
b2xvckNob29zZXJQcm94eUVmbC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MC4uYzllZDk2MQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9l
ZmwvV2ViQ29sb3JDaG9vc2VyUHJveHlFZmwuY3BwCkBAIC0wLDAgKzEsNTkgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTIgU2Ftc3VuZyBFbGVjdHJvbmljcy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJDb2xvckNob29z
ZXJQcm94eUVmbC5oIgorCisjaWYgRU5BQkxFKElOUFVUX1RZUEVfQ09MT1IpCisKKyNpbmNsdWRl
ICJld2tfdmlld19wcml2YXRlLmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitXZWJDb2xvckNo
b29zZXJQcm94eUVmbDo6V2ViQ29sb3JDaG9vc2VyUHJveHlFZmwoRXZhc19PYmplY3QqIHdlYlZp
ZXcsIFdlYkNvbG9yQ2hvb3NlclByb3h5OjpDbGllbnQqIGNsaWVudCwgY29uc3QgV2ViQ29yZTo6
Q29sb3ImIGNvbG9yKQorICAgIDogV2ViQ29sb3JDaG9vc2VyUHJveHkoY2xpZW50KQoreworICAg
IGV3a192aWV3X2NvbG9yX2Nob29zZXJfcmVxdWVzdCh3ZWJWaWV3LCB0aGlzLCBjb2xvci5zZXJp
YWxpemVkKCkpOworfQorCitXZWJDb2xvckNob29zZXJQcm94eUVmbDo6fldlYkNvbG9yQ2hvb3Nl
clByb3h5RWZsKCkKK3sKK30KKwordm9pZCBXZWJDb2xvckNob29zZXJQcm94eUVmbDo6ZW5kQ2hv
b3NlcigpCit7CisgICAgaWYgKG1fY2xpZW50KQorICAgICAgICBtX2NsaWVudC0+ZGlkRW5kQ29s
b3JDaG9vc2VyKCk7Cit9CisKK3ZvaWQgV2ViQ29sb3JDaG9vc2VyUHJveHlFZmw6OnNldFNlbGVj
dGVkQ29sb3IoY29uc3QgV2ViQ29yZTo6Q29sb3ImIGNvbG9yKQoreworICAgIGlmIChtX2NsaWVu
dCkKKyAgICAgICAgbV9jbGllbnQtPmRpZENob29zZUNvbG9yKGNvbG9yKTsKK30KKworfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoSU5QVVRfVFlQRV9DT0xPUikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViQ29sb3JDaG9vc2VyUHJv
eHlFZmwuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViQ29sb3JDaG9vc2VyUHJv
eHlFZmwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45YmRiZmFiCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJDb2xvckNob29z
ZXJQcm94eUVmbC5oCkBAIC0wLDAgKzEsNTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIg
U2Ftc3VuZyBFbGVjdHJvbmljcy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5k
ZWYgV2ViQ29sb3JDaG9vc2VyUHJveHlFZmxfaAorI2RlZmluZSBXZWJDb2xvckNob29zZXJQcm94
eUVmbF9oCisKKyNpZiBFTkFCTEUoSU5QVVRfVFlQRV9DT0xPUikKKworI2luY2x1ZGUgIkNvbG9y
LmgiCisjaW5jbHVkZSAiV2ViQ29sb3JDaG9vc2VyUHJveHkuaCIKKwordHlwZWRlZiBzdHJ1Y3Qg
X0V2YXNfT2JqZWN0IEV2YXNfT2JqZWN0OworCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3Mg
V2ViUGFnZVByb3h5OworCitjbGFzcyBXZWJDb2xvckNob29zZXJQcm94eUVmbCA6IHB1YmxpYyBX
ZWJDb2xvckNob29zZXJQcm94eSB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8V2Vi
Q29sb3JDaG9vc2VyUHJveHlFZmw+IGNyZWF0ZShFdmFzX09iamVjdCogd2ViVmlldywgV2ViQ29s
b3JDaG9vc2VyUHJveHk6OkNsaWVudCogY2xpZW50LCBjb25zdCBXZWJDb3JlOjpDb2xvciYgY29s
b3IpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYkNvbG9yQ2hvb3NlclBy
b3h5RWZsKHdlYlZpZXcsIGNsaWVudCwgY29sb3IpKTsKKyAgICB9CisgICAgfldlYkNvbG9yQ2hv
b3NlclByb3h5RWZsKCk7CisKKyAgICB2aXJ0dWFsIHZvaWQgZW5kQ2hvb3NlcigpOworICAgIHZp
cnR1YWwgdm9pZCBzZXRTZWxlY3RlZENvbG9yKGNvbnN0IFdlYkNvcmU6OkNvbG9yJik7CisKK3By
aXZhdGU6CisgICAgV2ViQ29sb3JDaG9vc2VyUHJveHlFZmwoRXZhc19PYmplY3QqLCBXZWJDb2xv
ckNob29zZXJQcm94eTo6Q2xpZW50KiwgY29uc3QgV2ViQ29yZTo6Q29sb3ImKTsKK307CisKK30g
Ly8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKElOUFVUX1RZUEVfQ09MT1Ip
CisKKyNlbmRpZiAvLyBXZWJDb2xvckNob29zZXJQcm94eUVmbF9oCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>154305</attachid>
            <date>2012-07-25 02:50:32 -0700</date>
            <delta_ts>2012-07-25 03:00:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>21724</size>
            <attacher name="KwangYong Choi">ky0.choi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCAyN2RmNTBhLi5kYjQwNDI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTAg
QEAKKzIwMTItMDctMjQgIEt3YW5nWW9uZyBDaG9pICA8a3kwLmNob2lAc2Ftc3VuZy5jb20+CisK
KyAgICAgICAgW0VGTF1bV0syXSBJbXBsZW1lbnRlZCBjb2xvciBjaG9vc2VyIHByb3h5IGFuZCBp
bnB1dCBwaWNrZXIgaW50ZXJmYWNlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD05MTgzMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEltcGxlbWVudGVkIGNvbG9yIGNob29zZXIgcHJveHkgYW5kIGlucHV0IHBp
Y2tlciBpbnRlcmZhY2UgZm9yIEVGTC4KKyAgICAgICAgSW5wdXQgcGlja2VyIGludGVyZmFjZSBj
YW4gYmUgdXNlZCBmb3IgZ2VuZXJhbCB1c2Ugb2YgYWxsIHRoZSBpbnB1dAorICAgICAgICB0eXBl
cyBpbmNsdWRpbmcgY29sb3IgaW5wdXQgdHlwZS4KKworICAgICAgICBJbnB1dCBwaWNrZXIgdXNl
ciBpbnRlcmZhY2Ugc2hvdWxkIGJlIGltcGxlbWVudGVkIGFmdGVyIHRoaXMuCisKKyAgICAgICAg
KiBQbGF0Zm9ybUVmbC5jbWFrZToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9JbnB1dFBp
Y2tlci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6SW5w
dXRQaWNrZXI6OklucHV0UGlja2VyKToKKyAgICAgICAgKFdlYktpdDo6SW5wdXRQaWNrZXI6On5J
bnB1dFBpY2tlcik6CisgICAgICAgIChXZWJLaXQ6OklucHV0UGlja2VyOjpzaG93KTogU2hvd3Mg
dXNlciBpbnRlcmZhY2Ugb2Ygc3BlY2lmaWMgaW5wdXQgdHlwZS4KKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL2VmbC9JbnB1dFBpY2tlci5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdCk6CisgICAg
ICAgIChJbnB1dFBpY2tlcik6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvUGFnZUNsaWVu
dEltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6Y3JlYXRlQ29sb3JD
aG9vc2VyUHJveHkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmNwcDoK
KyAgICAgICAgKF9Fd2tfVmlld19Qcml2YXRlX0RhdGEpOgorICAgICAgICAoX2V3a192aWV3X2lu
cHV0X3BpY2tlcl9zaG93KToKKyAgICAgICAgKF9ld2tfdmlld19wcml2X25ldyk6CisgICAgICAg
IChfZXdrX3ZpZXdfcHJpdl9kZWwpOgorICAgICAgICAoZXdrX3ZpZXdfc21hcnRfY2xhc3NfaW5p
dCk6CisgICAgICAgIChld2tfdmlld19pbnB1dF9waWNrZXJfcmVxdWVzdCk6IFJlcXVlc3RzIGlu
cHV0IHBpY2tlci4KKyAgICAgICAgKGV3a192aWV3X2NvbG9yX2Nob29zZXJfcmVxdWVzdCk6IFJl
cXVlc3RzIGNvbG9yIHBpY2tlci4KKyAgICAgICAgKGV3a192aWV3X2NvbG9yX2Nob29zZXJfY29s
b3Jfc2V0KTogU2V0cyB0aGUgY29sb3IgYnkgY2FsbGluZyBXZWJDb2xvckNob29zZXJQcm94eUVm
bDo6c2V0U2VsZWN0ZWRDb2xvci4KKyAgICAgICAgKGV3a192aWV3X2NvbG9yX2Nob29zZXJfY2xv
c2UpOiBDYWxscyBXZWJDb2xvckNob29zZXJQcm94eUVmbDo6ZW5kQ2hvb3NlcgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9l
ZmwvZXdrX3ZpZXdfcHJpdmF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9lZmwvV2ViQ29sb3JD
aG9vc2VyUHJveHlFZmwuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChX
ZWJLaXQ6OldlYkNvbG9yQ2hvb3NlclByb3h5RWZsOjpXZWJDb2xvckNob29zZXJQcm94eUVmbCk6
CisgICAgICAgIChXZWJLaXQ6OldlYkNvbG9yQ2hvb3NlclByb3h5RWZsOjp+V2ViQ29sb3JDaG9v
c2VyUHJveHlFZmwpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb2xvckNob29zZXJQcm94eUVmbDo6
ZW5kQ2hvb3Nlcik6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbG9yQ2hvb3NlclByb3h5RWZsOjpz
ZXRTZWxlY3RlZENvbG9yKToKKyAgICAgICAgKiBVSVByb2Nlc3MvZWZsL1dlYkNvbG9yQ2hvb3Nl
clByb3h5RWZsLmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYkNvbG9y
Q2hvb3NlclByb3h5RWZsKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29sb3JDaG9vc2VyUHJveHlF
Zmw6OmNyZWF0ZSk6CisKIDIwMTItMDctMTkgIFN1ZGFyc2FuYSBOYWdpbmVuaSAgPHN1ZGFyc2Fu
YS5uYWdpbmVuaUBsaW51eC5pbnRlbC5jb20+CiAKICAgICAgICAgW0VGTF0gW1dLMl0gQWRkIG1l
dGhvZHMgdG8gZ2V0L3NldCBhIGN1c3RvbSB0ZXh0IGVuY29kaW5nCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZSBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZs
LmNtYWtlCmluZGV4IDk3ZjcwOTUuLjllNDliMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1BsYXRmb3JtRWZsLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtl
CkBAIC0zNSw2ICszNSw3IEBAIExJU1QoQVBQRU5EIFdlYktpdDJfU09VUkNFUwogICAgIFVJUHJv
Y2Vzcy9BUEkvQy9zb3VwL1dLU291cFJlcXVlc3RNYW5hZ2VyLmNwcAogCiAgICAgVUlQcm9jZXNz
L0FQSS9lZmwvQmF0dGVyeVByb3ZpZGVyLmNwcAorICAgIFVJUHJvY2Vzcy9BUEkvZWZsL0lucHV0
UGlja2VyLmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvZWZsL1BhZ2VDbGllbnRJbXBsLmNwcAogICAg
IFVJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0LmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvZWZs
L2V3a19jb29raWVfbWFuYWdlci5jcHAKQEAgLTUzLDYgKzU0LDcgQEAgTElTVChBUFBFTkQgV2Vi
S2l0Ml9TT1VSQ0VTCiAgICAgVUlQcm9jZXNzL2NhaXJvL0JhY2tpbmdTdG9yZUNhaXJvLmNwcAog
CiAgICAgVUlQcm9jZXNzL2VmbC9UZXh0Q2hlY2tlckVmbC5jcHAKKyAgICBVSVByb2Nlc3MvZWZs
L1dlYkNvbG9yQ2hvb3NlclByb3h5RWZsLmNwcAogICAgIFVJUHJvY2Vzcy9lZmwvV2ViQ29udGV4
dEVmbC5jcHAKICAgICBVSVByb2Nlc3MvZWZsL1dlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHlFZmwu
Y3BwCiAgICAgVUlQcm9jZXNzL2VmbC9XZWJJbnNwZWN0b3JQcm94eUVmbC5jcHAKQEAgLTEwOCw2
ICsxMTAsNyBAQCBMSVNUKEFQUEVORCBXZWJLaXQyX0lOQ0xVREVfRElSRUNUT1JJRVMKICAgICAi
JHtXRUJLSVQyX0RJUn0vVUlQcm9jZXNzL0FQSS9DL2VmbCIKICAgICAiJHtXRUJLSVQyX0RJUn0v
VUlQcm9jZXNzL0FQSS9DL3NvdXAiCiAgICAgIiR7V0VCS0lUMl9ESVJ9L1VJUHJvY2Vzcy9BUEkv
ZWZsIgorICAgICIke1dFQktJVDJfRElSfS9VSVByb2Nlc3MvZWZsIgogICAgICIke1dFQktJVDJf
RElSfS9VSVByb2Nlc3Mvc291cCIKICAgICAiJHtXRUJLSVQyX0RJUn0vV2ViUHJvY2Vzcy9Eb3du
bG9hZHMvc291cCIKICAgICAiJHtXRUJLSVQyX0RJUn0vV2ViUHJvY2Vzcy9lZmwiCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9JbnB1dFBpY2tlci5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9JbnB1dFBpY2tlci5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmQwYzdlMQotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0lucHV0UGlja2VyLmNwcApAQCAtMCwwICsx
LDQ4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIFNhbXN1bmcgRWxlY3Ryb25pY3MuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiSW5wdXRQaWNrZXIuaCIKKworI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCisjaW5jbHVk
ZSAiZXdrX3ZpZXcuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK0lucHV0UGlja2VyOjpJbnB1
dFBpY2tlcihFdmFzX09iamVjdCogZXdrVmlldykKKyAgICA6IG1fZXdrVmlldyhld2tWaWV3KQor
eworfQorCitJbnB1dFBpY2tlcjo6fklucHV0UGlja2VyKCkKK3sKK30KKwordm9pZCBJbnB1dFBp
Y2tlcjo6c2hvdyhFd2tfSW5wdXRfVHlwZSBpbnB1dFR5cGUsIGNvbnN0IGNoYXIqIGlucHV0VmFs
dWUpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9JbnB1dFBpY2tl
ci5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvSW5wdXRQaWNrZXIuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMmMwYzYxCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvSW5wdXRQaWNrZXIuaApAQCAtMCww
ICsxLDQ4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIFNhbXN1bmcgRWxlY3Ryb25pY3Mu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIElucHV0UGlja2VyX2gKKyNk
ZWZpbmUgSW5wdXRQaWNrZXJfaAorCisjaW5jbHVkZSAiZXdrX3ZpZXcuaCIKKwordHlwZWRlZiBz
dHJ1Y3QgX0V2YXNfT2JqZWN0IEV2YXNfT2JqZWN0OworCituYW1lc3BhY2UgV2ViS2l0IHsKKwor
Y2xhc3MgSW5wdXRQaWNrZXIgeworcHVibGljOgorICAgIGV4cGxpY2l0IElucHV0UGlja2VyKEV2
YXNfT2JqZWN0Kik7CisgICAgfklucHV0UGlja2VyKCk7CisKKyAgICB2b2lkIHNob3coRXdrX0lu
cHV0X1R5cGUsIGNvbnN0IGNoYXIqKTsKKworcHJpdmF0ZToKKyAgICBFdmFzX09iamVjdCogbV9l
d2tWaWV3OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBJbnB1dFBp
Y2tlcl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9QYWdl
Q2xpZW50SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9QYWdlQ2xp
ZW50SW1wbC5jcHAKaW5kZXggZTY5Zjg3ZC4uNTc1OWNiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvUGFnZUNsaWVudEltcGwuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL1BhZ2VDbGllbnRJbXBsLmNwcApAQCAtMjksNiArMjks
NyBAQAogI2luY2x1ZGUgIkRyYXdpbmdBcmVhUHJveHlJbXBsLmgiCiAjaW5jbHVkZSAiTmF0aXZl
V2ViS2V5Ym9hcmRFdmVudC5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCisjaW5jbHVk
ZSAiV2ViQ29sb3JDaG9vc2VyUHJveHlFZmwuaCIKICNpbmNsdWRlICJXZWJDb250ZXh0LmgiCiAj
aW5jbHVkZSAiV2ViQ29udGV4dE1lbnVQcm94eS5oIgogI2luY2x1ZGUgIldlYlBhZ2VQcm94eS5o
IgpAQCAtMjA2LDEwICsyMDcsOSBAQCBQYXNzUmVmUHRyPFdlYkNvbnRleHRNZW51UHJveHk+IFBh
Z2VDbGllbnRJbXBsOjpjcmVhdGVDb250ZXh0TWVudVByb3h5KFdlYlBhZ2VQcgogfQogCiAjaWYg
RU5BQkxFKElOUFVUX1RZUEVfQ09MT1IpCi1QYXNzUmVmUHRyPFdlYkNvbG9yQ2hvb3NlclByb3h5
PiBQYWdlQ2xpZW50SW1wbDo6Y3JlYXRlQ29sb3JDaG9vc2VyUHJveHkoV2ViUGFnZVByb3h5Kiwg
Y29uc3QgV2ViQ29yZTo6Q29sb3ImKQorUGFzc1JlZlB0cjxXZWJDb2xvckNob29zZXJQcm94eT4g
UGFnZUNsaWVudEltcGw6OmNyZWF0ZUNvbG9yQ2hvb3NlclByb3h5KFdlYlBhZ2VQcm94eSogcGFn
ZSwgY29uc3QgV2ViQ29yZTo6Q29sb3ImIGluaXRpYWxDb2xvcikKIHsKLSAgICBub3RJbXBsZW1l
bnRlZCgpOwotICAgIHJldHVybiAwOworICAgIHJldHVybiBXZWJDb2xvckNob29zZXJQcm94eUVm
bDo6Y3JlYXRlKG1fdmlld1dpZGdldCwgcGFnZSwgaW5pdGlhbENvbG9yKTsKIH0KICNlbmRpZgog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5jcHAKaW5kZXgg
M2Y4MGFhMS4uNTFlMzNlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9lZmwvZXdrX3ZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZs
L2V3a192aWV3LmNwcApAQCAtMjEsNiArMjEsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2lu
Y2x1ZGUgImV3a192aWV3LmgiCiAKKyNpbmNsdWRlICJJbnB1dFBpY2tlci5oIgogI2luY2x1ZGUg
Ik5hdGl2ZVdlYktleWJvYXJkRXZlbnQuaCIKICNpbmNsdWRlICJOYXRpdmVXZWJNb3VzZUV2ZW50
LmgiCiAjaW5jbHVkZSAiTmF0aXZlV2ViV2hlZWxFdmVudC5oIgpAQCAtNTQsMTIgKzU1LDIwIEBA
IHN0cnVjdCBfRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhIHsKICAgICBjb25zdCBjaGFyKiBjdXN0b21F
bmNvZGluZzsKICAgICBMb2FkaW5nUmVzb3VyY2VzTWFwIGxvYWRpbmdSZXNvdXJjZXNNYXA7CiAK
LSAgICBfRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKCkKKyAgICBPd25QdHI8SW5wdXRQaWNrZXI+IGlu
cHV0UGlja2VyOworCisjaWYgRU5BQkxFKElOUFVUX1RZUEVfQ09MT1IpCisgICAgV2ViQ29sb3JD
aG9vc2VyUHJveHlFZmwqIGNvbG9yQ2hvb3NlcjsKKyNlbmRpZiAvLyBFTkFCTEUoSU5QVVRfVFlQ
RV9DT0xPUikKKworICAgIF9Fd2tfVmlld19Qcml2YXRlX0RhdGEoRXdrX1ZpZXdfU21hcnRfRGF0
YSogc21hcnREYXRhKQogICAgICAgICA6IHVyaSgwKQogICAgICAgICAsIHRpdGxlKDApCiAgICAg
ICAgICwgdGhlbWUoMCkKICAgICAgICAgLCBjdXN0b21FbmNvZGluZygwKQotICAgIHsgfQorICAg
IHsKKyAgICAgICAgaW5wdXRQaWNrZXIgPSBhZG9wdFB0cjxJbnB1dFBpY2tlcj4obmV3IElucHV0
UGlja2VyKHNtYXJ0RGF0YS0+c2VsZikpOworICAgIH0KIAogICAgIH5fRXdrX1ZpZXdfUHJpdmF0
ZV9EYXRhKCkKICAgICB7CkBAIC0yMDMsNiArMjEyLDE0IEBAIHN0YXRpYyBFaW5hX0Jvb2wgX2V3
a192aWV3X3NtYXJ0X2tleV91cChFd2tfVmlld19TbWFydF9EYXRhKiBzbWFydERhdGEsIGNvbnN0
IEV2CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK3N0YXRpYyBFaW5hX0Jvb2wgX2V3a192aWV3X2lu
cHV0X3BpY2tlcl9zaG93KEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNtYXJ0RGF0YSwgRXdrX0lucHV0
X1R5cGUgaW5wdXRUeXBlLCBjb25zdCBjaGFyKiBpbnB1dFZhbHVlKQoreworICAgIEVXS19WSUVX
X1BSSVZfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIHByaXYsIGZhbHNlKTsKKworICAgIHByaXYt
PmlucHV0UGlja2VyLT5zaG93KGlucHV0VHlwZSwgaW5wdXRWYWx1ZSk7CisgICAgcmV0dXJuIHRy
dWU7Cit9CisKIC8vIEV2ZW50IEhhbmRsaW5nLgogc3RhdGljIHZvaWQgX2V3a192aWV3X29uX2Zv
Y3VzX2luKHZvaWQqIGRhdGEsIEV2YXMqIGNhbnZhcywgRXZhc19PYmplY3QqIGV3a1ZpZXcsIHZv
aWQqIGV2ZW50SW5mbykKIHsKQEAgLTI3OCw3ICsyOTUsNyBAQCBzdGF0aWMgRXZhc19TbWFydF9D
bGFzcyBnX3BhcmVudFNtYXJ0Q2xhc3MgPSBFVkFTX1NNQVJUX0NMQVNTX0lOSVRfTlVMTDsKIAog
c3RhdGljIEV3a19WaWV3X1ByaXZhdGVfRGF0YSogX2V3a192aWV3X3ByaXZfbmV3KEV3a19WaWV3
X1NtYXJ0X0RhdGEqIHNtYXJ0RGF0YSkKIHsKLSAgICBFd2tfVmlld19Qcml2YXRlX0RhdGEqIHBy
aXYgPSBuZXcgRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhOworICAgIEV3a19WaWV3X1ByaXZhdGVfRGF0
YSogcHJpdiA9IG5ldyBFd2tfVmlld19Qcml2YXRlX0RhdGEoc21hcnREYXRhKTsKICAgICBpZiAo
IXByaXYpIHsKICAgICAgICAgRUlOQV9MT0dfQ1JJVCgiY291bGQgbm90IGFsbG9jYXRlIEV3a19W
aWV3X1ByaXZhdGVfRGF0YSIpOwogICAgICAgICByZXR1cm4gMDsKQEAgLTQ3NCw2ICs0OTEsNyBA
QCBFaW5hX0Jvb2wgZXdrX3ZpZXdfc21hcnRfY2xhc3NfaW5pdChFd2tfVmlld19TbWFydF9DbGFz
cyogYXBpKQogICAgIGFwaS0+bW91c2VfbW92ZSA9IF9ld2tfdmlld19zbWFydF9tb3VzZV9tb3Zl
OwogICAgIGFwaS0+a2V5X2Rvd24gPSBfZXdrX3ZpZXdfc21hcnRfa2V5X2Rvd247CiAgICAgYXBp
LT5rZXlfdXAgPSBfZXdrX3ZpZXdfc21hcnRfa2V5X3VwOworICAgIGFwaS0+aW5wdXRfcGlja2Vy
X3Nob3cgPSBfZXdrX3ZpZXdfaW5wdXRfcGlja2VyX3Nob3c7CiAKICAgICByZXR1cm4gdHJ1ZTsK
IH0KQEAgLTk4OCwzICsxMDA2LDU3IEBAIEVpbmFfQm9vbCBld2tfdmlld19zZXR0aW5nX2VuY29k
aW5nX2N1c3RvbV9zZXQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIGNvbnN0IGNoYXIqCiAgICAgICAg
IFdLUGFnZVNldEN1c3RvbVRleHRFbmNvZGluZ05hbWUodG9BUEkocHJpdi0+cGFnZUNsaWVudC0+
cGFnZSgpKSwgd2tFbmNvZGluZ05hbWUuZ2V0KCkpOwogICAgIHJldHVybiB0cnVlOwogfQorCit2
b2lkIGV3a192aWV3X2lucHV0X3BpY2tlcl9yZXF1ZXN0KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBF
d2tfSW5wdXRfVHlwZSBpbnB1dFR5cGUsIGNvbnN0IFN0cmluZyYgaW5wdXRWYWx1ZSkKK3sKKyAg
ICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSk7CisgICAgRUlO
QV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oc21hcnREYXRhLT5hcGkpOworICAgIEVJTkFfU0FGRVRZ
X09OX05VTExfUkVUVVJOKHNtYXJ0RGF0YS0+YXBpLT5pbnB1dF9waWNrZXJfc2hvdyk7CisKKyAg
ICBzbWFydERhdGEtPmFwaS0+aW5wdXRfcGlja2VyX3Nob3coc21hcnREYXRhLCBpbnB1dFR5cGUs
IGlucHV0VmFsdWUudXRmOCgpLmRhdGEoKSk7Cit9CisKKyNpZiBFTkFCTEUoSU5QVVRfVFlQRV9D
T0xPUikKK3ZvaWQgZXdrX3ZpZXdfY29sb3JfY2hvb3Nlcl9yZXF1ZXN0KEV2YXNfT2JqZWN0KiBl
d2tWaWV3LCBXZWJLaXQ6OldlYkNvbG9yQ2hvb3NlclByb3h5RWZsKiBjb2xvckNob29zZXIsIGNv
bnN0IFN0cmluZyYgaW5wdXRWYWx1ZSkKK3sKKyAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJO
KGV3a1ZpZXcsIHNtYXJ0RGF0YSk7CisgICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNt
YXJ0RGF0YSwgcHJpdik7CisKKyAgICBwcml2LT5jb2xvckNob29zZXIgPSBjb2xvckNob29zZXI7
CisKKyAgICBld2tfdmlld19pbnB1dF9waWNrZXJfcmVxdWVzdChld2tWaWV3LCBFV0tfSU5QVVRf
VFlQRV9DT0xPUiwgaW5wdXRWYWx1ZSk7Cit9CisjZW5kaWYgLy8gRU5BQkxFKElOUFVUX1RZUEVf
Q09MT1IpCisKK0VpbmFfQm9vbCBld2tfdmlld19jb2xvcl9jaG9vc2VyX2NvbG9yX3NldChFdmFz
X09iamVjdCogZXdrVmlldywgY29uc3QgY2hhciogY29sb3IpCit7CisjaWYgRU5BQkxFKElOUFVU
X1RZUEVfQ09MT1IpCisgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFy
dERhdGEsIEVJTkFfRkFMU0UpOworICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzbWFy
dERhdGEsIHByaXYsIEVJTkFfRkFMU0UpOworCisgICAgaWYgKCFwcml2LT5jb2xvckNob29zZXIp
CisgICAgICAgIHJldHVybiBFSU5BX0ZBTFNFOworCisgICAgcHJpdi0+Y29sb3JDaG9vc2VyLT5z
ZXRTZWxlY3RlZENvbG9yKENvbG9yKGNvbG9yKSk7CisKKyAgICByZXR1cm4gRUlOQV9UUlVFOwor
I2VuZGlmIC8vIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9SKQorICAgIHJldHVybiBFSU5BX0ZBTFNF
OworfQorCitFaW5hX0Jvb2wgZXdrX3ZpZXdfY29sb3JfY2hvb3Nlcl9jbG9zZShFdmFzX09iamVj
dCogZXdrVmlldykKK3sKKyNpZiBFTkFCTEUoSU5QVVRfVFlQRV9DT0xPUikKKyAgICBFV0tfVklF
V19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwgRUlOQV9GQUxTRSk7CisgICAg
RVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgcHJpdiwgRUlOQV9GQUxTRSk7
CisKKyAgICBpZiAoIXByaXYtPmNvbG9yQ2hvb3NlcikKKyAgICAgICAgcmV0dXJuIEVJTkFfRkFM
U0U7CisKKyAgICBwcml2LT5jb2xvckNob29zZXItPmVuZENob29zZXIoKTsKKyAgICBwcml2LT5j
b2xvckNob29zZXIgPSAwOworCisgICAgcmV0dXJuIEVJTkFfVFJVRTsKKyNlbmRpZiAvLyBFTkFC
TEUoSU5QVVRfVFlQRV9DT0xPUikKKyAgICByZXR1cm4gRUlOQV9GQUxTRTsKK30KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmggYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5oCmluZGV4IDZhOGU3NGYuLjlkMGJm
YjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3
LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuaApAQCAt
NjYsNiArNjYsMjcgQEAgZXh0ZXJuICJDIiB7CiB0eXBlZGVmIHN0cnVjdCBfRXdrX1ZpZXdfU21h
cnRfRGF0YSBFd2tfVmlld19TbWFydF9EYXRhOwogdHlwZWRlZiBzdHJ1Y3QgX0V3a19WaWV3X1Nt
YXJ0X0NsYXNzIEV3a19WaWV3X1NtYXJ0X0NsYXNzOwogCisvKioKKyAqIFxlbnVtICAgIEV3a19J
bnB1dF9UeXBlCisgKiBAYnJpZWYgICBQcm92aWRlcyB0eXBlIG9mIGlucHV0IGVsZW1lbnQKKyAq
LworZW51bSBfRXdrX0lucHV0X1R5cGUgeworICAgIEVXS19JTlBVVF9UWVBFX1RFTEVQSE9ORSA9
IDEsIAorICAgIEVXS19JTlBVVF9UWVBFX05VTUJFUiwKKyAgICBFV0tfSU5QVVRfVFlQRV9FTUFJ
TCwKKyAgICBFV0tfSU5QVVRfVFlQRV9VUkwsCisgICAgRVdLX0lOUFVUX1RZUEVfUEFTU1dPUkQs
CisgICAgRVdLX0lOUFVUX1RZUEVfQ09MT1IsCisgICAgRVdLX0lOUFVUX1RZUEVfREFURSwKKyAg
ICBFV0tfSU5QVVRfVFlQRV9EQVRFVElNRSwKKyAgICBFV0tfSU5QVVRfVFlQRV9EQVRFVElNRUxP
Q0FMLAorICAgIEVXS19JTlBVVF9UWVBFX01PTlRILAorICAgIEVXS19JTlBVVF9UWVBFX1RJTUUs
CisgICAgRVdLX0lOUFVUX1RZUEVfV0VFSworfTsKKy8qKiBDcmVhdGVzIGEgdHlwZSBuYW1lIGZv
ciBfRXdrX0lucHV0X1R5cGVfRXdrX0lucHV0X1R5cGUgKi8KK3R5cGVkZWYgZW51bSBfRXdrX0lu
cHV0X1R5cGUgRXdrX0lucHV0X1R5cGU7CisKIC8vLyBFd2sgdmlldydzIGNsYXNzLCB0byBiZSBv
dmVycmlkZGVuIGJ5IHN1Yi1jbGFzc2VzLgogc3RydWN0IF9Fd2tfVmlld19TbWFydF9DbGFzcyB7
CiAgICAgRXZhc19TbWFydF9DbGFzcyBzYzsgLyoqPCBhbGwgYnV0ICdkYXRhJyBpcyBmcmVlIHRv
IGJlIGNoYW5nZWQuICovCkBAIC04Miw2ICsxMDMsOSBAQCBzdHJ1Y3QgX0V3a19WaWV3X1NtYXJ0
X0NsYXNzIHsKICAgICBFaW5hX0Jvb2wgKCptb3VzZV9tb3ZlKShFd2tfVmlld19TbWFydF9EYXRh
ICpzZCwgY29uc3QgRXZhc19FdmVudF9Nb3VzZV9Nb3ZlICpldik7CiAgICAgRWluYV9Cb29sICgq
a2V5X2Rvd24pKEV3a19WaWV3X1NtYXJ0X0RhdGEgKnNkLCBjb25zdCBFdmFzX0V2ZW50X0tleV9E
b3duICpldik7CiAgICAgRWluYV9Cb29sICgqa2V5X3VwKShFd2tfVmlld19TbWFydF9EYXRhICpz
ZCwgY29uc3QgRXZhc19FdmVudF9LZXlfVXAgKmV2KTsKKworICAgIC8vIFNob3dzIGlucHV0IHBp
Y2tlciBiYXNlZCBvbiBpbnB1dCB0eXBlIHdpdGggaW5pdGlhbCB2YWx1ZS4KKyAgICBFaW5hX0Jv
b2wgKCppbnB1dF9waWNrZXJfc2hvdykoRXdrX1ZpZXdfU21hcnRfRGF0YSogc2QsIEV3a19JbnB1
dF9UeXBlIGlucHV0X3R5cGUsIGNvbnN0IGNoYXIqIGlucHV0X3ZhbHVlKTsKIH07CiAKIC8qKgpA
QCAtMTAwLDcgKzEyNCw3IEBAIHN0cnVjdCBfRXdrX1ZpZXdfU21hcnRfQ2xhc3MgewogICogQHNl
ZSBFV0tfVklFV19TTUFSVF9DTEFTU19JTklUX1ZFUlNJT04KICAqIEBzZWUgRVdLX1ZJRVdfU01B
UlRfQ0xBU1NfSU5JVF9OQU1FX1ZFUlNJT04KICAqLwotI2RlZmluZSBFV0tfVklFV19TTUFSVF9D
TEFTU19JTklUKHNtYXJ0X2NsYXNzX2luaXQpIHtzbWFydF9jbGFzc19pbml0LCBFV0tfVklFV19T
TUFSVF9DTEFTU19WRVJTSU9OLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwfQorI2RlZmluZSBFV0tf
VklFV19TTUFSVF9DTEFTU19JTklUKHNtYXJ0X2NsYXNzX2luaXQpIHtzbWFydF9jbGFzc19pbml0
LCBFV0tfVklFV19TTUFSVF9DTEFTU19WRVJTSU9OLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAw
fQogCiAvKioKICAqIEluaXRpYWxpemVyIHRvIHplcm8gYSB3aG9sZSBFd2tfVmlld19TbWFydF9D
bGFzcyBzdHJ1Y3R1cmUuCkBAIC00NDAsNiArNDY0LDI1IEBAIEVBUEkgY29uc3QgY2hhciAgKmV3
a192aWV3X3NldHRpbmdfZW5jb2RpbmdfY3VzdG9tX2dldChjb25zdCBFdmFzX09iamVjdCAqbyk7
CiAgKi8KIEVBUEkgRWluYV9Cb29sICAgIGV3a192aWV3X3NldHRpbmdfZW5jb2RpbmdfY3VzdG9t
X3NldChFdmFzX09iamVjdCAqbywgY29uc3QgY2hhciAqZW5jb2RpbmcpOwogCisvKioKKyAqIFNl
dHMgdGhlIGNvbG9yIHZhbHVlIG9mIGNvbG9yIGNob29zZXIKKyAqCisgKiBAcGFyYW0gbyB2aWV3
IG9iamVjdCBjb250YWlucyBjb2xvciBjaG9vc2VyCisgKiBAcGFyYW0gY29sb3IgdGhlIGNvbG9y
IHZhbHVlIHRvIGJlIHNldAorICoKKyAqIEByZXR1cm4gQGMgRUlOQV9UUlVFIG9uIHN1Y2Nlc3Mg
QGMgRUlOQV9GQUxTRSBvdGhlcndpc2UKKyAqLworRUFQSSBFaW5hX0Jvb2wgZXdrX3ZpZXdfY29s
b3JfY2hvb3Nlcl9jb2xvcl9zZXQoRXZhc19PYmplY3QgKm8sIGNvbnN0IGNoYXIgKmNvbG9yKTsK
KworLyoqCisgKiBDbG9zZXMgY29sb3IgY2hvb3NlcgorICoKKyAqIEBwYXJhbSBvIHZpZXcgb2Jq
ZWN0IGNvbnRhaW5zIGNvbG9yIGNob29zZXIKKyAqCisgKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBv
biBzdWNjZXNzIEBjIEVJTkFfRkFMU0Ugb3RoZXJ3aXNlCisgKi8KK0VBUEkgRWluYV9Cb29sIGV3
a192aWV3X2NvbG9yX2Nob29zZXJfY2xvc2UoRXZhc19PYmplY3QgKm8pOworCiAjaWZkZWYgX19j
cGx1c3BsdXMKIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9lZmwvZXdrX3ZpZXdfcHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9lZmwvZXdrX3ZpZXdfcHJpdmF0ZS5oCmluZGV4IDNjOWNlOTQuLjAwMzNhOGIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3X3ByaXZhdGUuaAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlld19wcml2YXRlLmgK
QEAgLTIyLDkgKzIyLDE0IEBACiAjZGVmaW5lIGV3a192aWV3X3ByaXZhdGVfaAogCiAjaW5jbHVk
ZSAiV2ViUGFnZVByb3h5LmgiCisjaW5jbHVkZSAiZXdrX3ZpZXcuaCIKICNpbmNsdWRlIDxFdmFz
Lmg+CiAjaW5jbHVkZSA8V2ViS2l0Mi9XS0Jhc2UuaD4KIAorI2lmIEVOQUJMRShJTlBVVF9UWVBF
X0NPTE9SKQorI2luY2x1ZGUgIldlYkNvbG9yQ2hvb3NlclByb3h5RWZsLmgiCisjZW5kaWYgLy8g
RU5BQkxFKElOUFVUX1RZUEVfQ09MT1IpCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIElu
dFJlY3Q7CiBjbGFzcyBJbnRTaXplOwpAQCAtNzAsNCArNzUsOSBAQCB2b2lkIGV3a192aWV3X2lu
dGVudF9zZXJ2aWNlX3JlZ2lzdGVyKEV2YXNfT2JqZWN0KiBld2tWaWV3LCBjb25zdCBFd2tfSW50
ZW50X1NlcgogCiBXZWJLaXQ6OldlYlBhZ2VQcm94eSogZXdrX3ZpZXdfcGFnZV9nZXQoY29uc3Qg
RXZhc19PYmplY3QqIGV3a1ZpZXcpOwogCit2b2lkIGV3a192aWV3X2lucHV0X3BpY2tlcl9yZXF1
ZXN0KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBFd2tfSW5wdXRfVHlwZSBpbnB1dFR5cGUsIGNvbnN0
IFN0cmluZyYgaW5wdXRWYWx1ZSk7CisjaWYgRU5BQkxFKElOUFVUX1RZUEVfQ09MT1IpCit2b2lk
IGV3a192aWV3X2NvbG9yX2Nob29zZXJfcmVxdWVzdChFdmFzX09iamVjdCogZXdrVmlldywgV2Vi
S2l0OjpXZWJDb2xvckNob29zZXJQcm94eUVmbCogY29sb3JDaG9vc2VyLCBjb25zdCBTdHJpbmcm
IGlucHV0VmFsdWUpOworI2VuZGlmIC8vIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9SKQorCiAjZW5k
aWYgLy8gZXdrX3ZpZXdfcHJpdmF0ZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvZWZsL1dlYkNvbG9yQ2hvb3NlclByb3h5RWZsLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9lZmwvV2ViQ29sb3JDaG9vc2VyUHJveHlFZmwuY3BwCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAuLmM5ZWQ5NjEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvZWZsL1dlYkNvbG9yQ2hvb3NlclByb3h5RWZsLmNwcApAQCAtMCwwICsx
LDU5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIFNhbXN1bmcgRWxlY3Ryb25pY3MuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiV2ViQ29sb3JDaG9vc2VyUHJveHlFZmwuaCIKKworI2lmIEVOQUJMRShJTlBVVF9UWVBFX0NP
TE9SKQorCisjaW5jbHVkZSAiZXdrX3ZpZXdfcHJpdmF0ZS5oIgorCituYW1lc3BhY2UgV2ViS2l0
IHsKKworV2ViQ29sb3JDaG9vc2VyUHJveHlFZmw6OldlYkNvbG9yQ2hvb3NlclByb3h5RWZsKEV2
YXNfT2JqZWN0KiB3ZWJWaWV3LCBXZWJDb2xvckNob29zZXJQcm94eTo6Q2xpZW50KiBjbGllbnQs
IGNvbnN0IFdlYkNvcmU6OkNvbG9yJiBjb2xvcikKKyAgICA6IFdlYkNvbG9yQ2hvb3NlclByb3h5
KGNsaWVudCkKK3sKKyAgICBld2tfdmlld19jb2xvcl9jaG9vc2VyX3JlcXVlc3Qod2ViVmlldywg
dGhpcywgY29sb3Iuc2VyaWFsaXplZCgpKTsKK30KKworV2ViQ29sb3JDaG9vc2VyUHJveHlFZmw6
On5XZWJDb2xvckNob29zZXJQcm94eUVmbCgpCit7Cit9CisKK3ZvaWQgV2ViQ29sb3JDaG9vc2Vy
UHJveHlFZmw6OmVuZENob29zZXIoKQoreworICAgIGlmIChtX2NsaWVudCkKKyAgICAgICAgbV9j
bGllbnQtPmRpZEVuZENvbG9yQ2hvb3NlcigpOworfQorCit2b2lkIFdlYkNvbG9yQ2hvb3NlclBy
b3h5RWZsOjpzZXRTZWxlY3RlZENvbG9yKGNvbnN0IFdlYkNvcmU6OkNvbG9yJiBjb2xvcikKK3sK
KyAgICBpZiAobV9jbGllbnQpCisgICAgICAgIG1fY2xpZW50LT5kaWRDaG9vc2VDb2xvcihjb2xv
cik7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKElOUFVU
X1RZUEVfQ09MT1IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dl
YkNvbG9yQ2hvb3NlclByb3h5RWZsLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dl
YkNvbG9yQ2hvb3NlclByb3h5RWZsLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MC4uMTA3YTNkMQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9l
ZmwvV2ViQ29sb3JDaG9vc2VyUHJveHlFZmwuaApAQCAtMCwwICsxLDU5IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDEyIFNhbXN1bmcgRWxlY3Ryb25pY3MuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaWZuZGVmIFdlYkNvbG9yQ2hvb3NlclByb3h5RWZsX2gKKyNkZWZpbmUgV2Vi
Q29sb3JDaG9vc2VyUHJveHlFZmxfaAorCisjaWYgRU5BQkxFKElOUFVUX1RZUEVfQ09MT1IpCisK
KyNpbmNsdWRlICJDb2xvci5oIgorI2luY2x1ZGUgIldlYkNvbG9yQ2hvb3NlclByb3h5LmgiCisK
K3R5cGVkZWYgc3RydWN0IF9FdmFzX09iamVjdCBFdmFzX09iamVjdDsKKworbmFtZXNwYWNlIFdl
YktpdCB7CisKK2NsYXNzIFdlYlBhZ2VQcm94eTsKKworY2xhc3MgV2ViQ29sb3JDaG9vc2VyUHJv
eHlFZmwgOiBwdWJsaWMgV2ViQ29sb3JDaG9vc2VyUHJveHkgeworcHVibGljOgorICAgIHN0YXRp
YyBQYXNzUmVmUHRyPFdlYkNvbG9yQ2hvb3NlclByb3h5RWZsPiBjcmVhdGUoRXZhc19PYmplY3Qq
IHdlYlZpZXcsIFdlYkNvbG9yQ2hvb3NlclByb3h5OjpDbGllbnQqIGNsaWVudCwgY29uc3QgV2Vi
Q29yZTo6Q29sb3ImIGNvbG9yKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBX
ZWJDb2xvckNob29zZXJQcm94eUVmbCh3ZWJWaWV3LCBjbGllbnQsIGNvbG9yKSk7CisgICAgfQor
ICAgIHZpcnR1YWwgfldlYkNvbG9yQ2hvb3NlclByb3h5RWZsKCk7CisKKyAgICB2aXJ0dWFsIHZv
aWQgZW5kQ2hvb3NlcigpOworICAgIHZpcnR1YWwgdm9pZCBzZXRTZWxlY3RlZENvbG9yKGNvbnN0
IFdlYkNvcmU6OkNvbG9yJik7CisKK3ByaXZhdGU6CisgICAgV2ViQ29sb3JDaG9vc2VyUHJveHlF
ZmwoRXZhc19PYmplY3QqLCBXZWJDb2xvckNob29zZXJQcm94eTo6Q2xpZW50KiwgY29uc3QgV2Vi
Q29yZTo6Q29sb3ImKTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8g
RU5BQkxFKElOUFVUX1RZUEVfQ09MT1IpCisKKyNlbmRpZiAvLyBXZWJDb2xvckNob29zZXJQcm94
eUVmbF9oCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>154308</attachid>
            <date>2012-07-25 03:00:28 -0700</date>
            <delta_ts>2012-07-25 03:16:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>21724</size>
            <attacher name="KwangYong Choi">ky0.choi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCAyN2RmNTBhLi5kYjQwNDI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTAg
QEAKKzIwMTItMDctMjQgIEt3YW5nWW9uZyBDaG9pICA8a3kwLmNob2lAc2Ftc3VuZy5jb20+CisK
KyAgICAgICAgW0VGTF1bV0syXSBJbXBsZW1lbnRlZCBjb2xvciBjaG9vc2VyIHByb3h5IGFuZCBp
bnB1dCBwaWNrZXIgaW50ZXJmYWNlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD05MTgzMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEltcGxlbWVudGVkIGNvbG9yIGNob29zZXIgcHJveHkgYW5kIGlucHV0IHBp
Y2tlciBpbnRlcmZhY2UgZm9yIEVGTC4KKyAgICAgICAgSW5wdXQgcGlja2VyIGludGVyZmFjZSBj
YW4gYmUgdXNlZCBmb3IgZ2VuZXJhbCB1c2Ugb2YgYWxsIHRoZSBpbnB1dAorICAgICAgICB0eXBl
cyBpbmNsdWRpbmcgY29sb3IgaW5wdXQgdHlwZS4KKworICAgICAgICBJbnB1dCBwaWNrZXIgdXNl
ciBpbnRlcmZhY2Ugc2hvdWxkIGJlIGltcGxlbWVudGVkIGFmdGVyIHRoaXMuCisKKyAgICAgICAg
KiBQbGF0Zm9ybUVmbC5jbWFrZToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9JbnB1dFBp
Y2tlci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6SW5w
dXRQaWNrZXI6OklucHV0UGlja2VyKToKKyAgICAgICAgKFdlYktpdDo6SW5wdXRQaWNrZXI6On5J
bnB1dFBpY2tlcik6CisgICAgICAgIChXZWJLaXQ6OklucHV0UGlja2VyOjpzaG93KTogU2hvd3Mg
dXNlciBpbnRlcmZhY2Ugb2Ygc3BlY2lmaWMgaW5wdXQgdHlwZS4KKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL2VmbC9JbnB1dFBpY2tlci5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdCk6CisgICAg
ICAgIChJbnB1dFBpY2tlcik6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvUGFnZUNsaWVu
dEltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6Y3JlYXRlQ29sb3JD
aG9vc2VyUHJveHkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmNwcDoK
KyAgICAgICAgKF9Fd2tfVmlld19Qcml2YXRlX0RhdGEpOgorICAgICAgICAoX2V3a192aWV3X2lu
cHV0X3BpY2tlcl9zaG93KToKKyAgICAgICAgKF9ld2tfdmlld19wcml2X25ldyk6CisgICAgICAg
IChfZXdrX3ZpZXdfcHJpdl9kZWwpOgorICAgICAgICAoZXdrX3ZpZXdfc21hcnRfY2xhc3NfaW5p
dCk6CisgICAgICAgIChld2tfdmlld19pbnB1dF9waWNrZXJfcmVxdWVzdCk6IFJlcXVlc3RzIGlu
cHV0IHBpY2tlci4KKyAgICAgICAgKGV3a192aWV3X2NvbG9yX2Nob29zZXJfcmVxdWVzdCk6IFJl
cXVlc3RzIGNvbG9yIHBpY2tlci4KKyAgICAgICAgKGV3a192aWV3X2NvbG9yX2Nob29zZXJfY29s
b3Jfc2V0KTogU2V0cyB0aGUgY29sb3IgYnkgY2FsbGluZyBXZWJDb2xvckNob29zZXJQcm94eUVm
bDo6c2V0U2VsZWN0ZWRDb2xvci4KKyAgICAgICAgKGV3a192aWV3X2NvbG9yX2Nob29zZXJfY2xv
c2UpOiBDYWxscyBXZWJDb2xvckNob29zZXJQcm94eUVmbDo6ZW5kQ2hvb3NlcgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9l
ZmwvZXdrX3ZpZXdfcHJpdmF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9lZmwvV2ViQ29sb3JD
aG9vc2VyUHJveHlFZmwuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChX
ZWJLaXQ6OldlYkNvbG9yQ2hvb3NlclByb3h5RWZsOjpXZWJDb2xvckNob29zZXJQcm94eUVmbCk6
CisgICAgICAgIChXZWJLaXQ6OldlYkNvbG9yQ2hvb3NlclByb3h5RWZsOjp+V2ViQ29sb3JDaG9v
c2VyUHJveHlFZmwpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb2xvckNob29zZXJQcm94eUVmbDo6
ZW5kQ2hvb3Nlcik6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbG9yQ2hvb3NlclByb3h5RWZsOjpz
ZXRTZWxlY3RlZENvbG9yKToKKyAgICAgICAgKiBVSVByb2Nlc3MvZWZsL1dlYkNvbG9yQ2hvb3Nl
clByb3h5RWZsLmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYkNvbG9y
Q2hvb3NlclByb3h5RWZsKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29sb3JDaG9vc2VyUHJveHlF
Zmw6OmNyZWF0ZSk6CisKIDIwMTItMDctMTkgIFN1ZGFyc2FuYSBOYWdpbmVuaSAgPHN1ZGFyc2Fu
YS5uYWdpbmVuaUBsaW51eC5pbnRlbC5jb20+CiAKICAgICAgICAgW0VGTF0gW1dLMl0gQWRkIG1l
dGhvZHMgdG8gZ2V0L3NldCBhIGN1c3RvbSB0ZXh0IGVuY29kaW5nCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZSBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZs
LmNtYWtlCmluZGV4IDk3ZjcwOTUuLjllNDliMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1BsYXRmb3JtRWZsLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtl
CkBAIC0zNSw2ICszNSw3IEBAIExJU1QoQVBQRU5EIFdlYktpdDJfU09VUkNFUwogICAgIFVJUHJv
Y2Vzcy9BUEkvQy9zb3VwL1dLU291cFJlcXVlc3RNYW5hZ2VyLmNwcAogCiAgICAgVUlQcm9jZXNz
L0FQSS9lZmwvQmF0dGVyeVByb3ZpZGVyLmNwcAorICAgIFVJUHJvY2Vzcy9BUEkvZWZsL0lucHV0
UGlja2VyLmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvZWZsL1BhZ2VDbGllbnRJbXBsLmNwcAogICAg
IFVJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0LmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvZWZs
L2V3a19jb29raWVfbWFuYWdlci5jcHAKQEAgLTUzLDYgKzU0LDcgQEAgTElTVChBUFBFTkQgV2Vi
S2l0Ml9TT1VSQ0VTCiAgICAgVUlQcm9jZXNzL2NhaXJvL0JhY2tpbmdTdG9yZUNhaXJvLmNwcAog
CiAgICAgVUlQcm9jZXNzL2VmbC9UZXh0Q2hlY2tlckVmbC5jcHAKKyAgICBVSVByb2Nlc3MvZWZs
L1dlYkNvbG9yQ2hvb3NlclByb3h5RWZsLmNwcAogICAgIFVJUHJvY2Vzcy9lZmwvV2ViQ29udGV4
dEVmbC5jcHAKICAgICBVSVByb2Nlc3MvZWZsL1dlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHlFZmwu
Y3BwCiAgICAgVUlQcm9jZXNzL2VmbC9XZWJJbnNwZWN0b3JQcm94eUVmbC5jcHAKQEAgLTEwOCw2
ICsxMTAsNyBAQCBMSVNUKEFQUEVORCBXZWJLaXQyX0lOQ0xVREVfRElSRUNUT1JJRVMKICAgICAi
JHtXRUJLSVQyX0RJUn0vVUlQcm9jZXNzL0FQSS9DL2VmbCIKICAgICAiJHtXRUJLSVQyX0RJUn0v
VUlQcm9jZXNzL0FQSS9DL3NvdXAiCiAgICAgIiR7V0VCS0lUMl9ESVJ9L1VJUHJvY2Vzcy9BUEkv
ZWZsIgorICAgICIke1dFQktJVDJfRElSfS9VSVByb2Nlc3MvZWZsIgogICAgICIke1dFQktJVDJf
RElSfS9VSVByb2Nlc3Mvc291cCIKICAgICAiJHtXRUJLSVQyX0RJUn0vV2ViUHJvY2Vzcy9Eb3du
bG9hZHMvc291cCIKICAgICAiJHtXRUJLSVQyX0RJUn0vV2ViUHJvY2Vzcy9lZmwiCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9JbnB1dFBpY2tlci5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9JbnB1dFBpY2tlci5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmQwYzdlMQotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0lucHV0UGlja2VyLmNwcApAQCAtMCwwICsx
LDQ4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIFNhbXN1bmcgRWxlY3Ryb25pY3MuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiSW5wdXRQaWNrZXIuaCIKKworI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCisjaW5jbHVk
ZSAiZXdrX3ZpZXcuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK0lucHV0UGlja2VyOjpJbnB1
dFBpY2tlcihFdmFzX09iamVjdCogZXdrVmlldykKKyAgICA6IG1fZXdrVmlldyhld2tWaWV3KQor
eworfQorCitJbnB1dFBpY2tlcjo6fklucHV0UGlja2VyKCkKK3sKK30KKwordm9pZCBJbnB1dFBp
Y2tlcjo6c2hvdyhFd2tfSW5wdXRfVHlwZSBpbnB1dFR5cGUsIGNvbnN0IGNoYXIqIGlucHV0VmFs
dWUpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9JbnB1dFBpY2tl
ci5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvSW5wdXRQaWNrZXIuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMmMwYzYxCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvSW5wdXRQaWNrZXIuaApAQCAtMCww
ICsxLDQ4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIFNhbXN1bmcgRWxlY3Ryb25pY3Mu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIElucHV0UGlja2VyX2gKKyNk
ZWZpbmUgSW5wdXRQaWNrZXJfaAorCisjaW5jbHVkZSAiZXdrX3ZpZXcuaCIKKwordHlwZWRlZiBz
dHJ1Y3QgX0V2YXNfT2JqZWN0IEV2YXNfT2JqZWN0OworCituYW1lc3BhY2UgV2ViS2l0IHsKKwor
Y2xhc3MgSW5wdXRQaWNrZXIgeworcHVibGljOgorICAgIGV4cGxpY2l0IElucHV0UGlja2VyKEV2
YXNfT2JqZWN0Kik7CisgICAgfklucHV0UGlja2VyKCk7CisKKyAgICB2b2lkIHNob3coRXdrX0lu
cHV0X1R5cGUsIGNvbnN0IGNoYXIqKTsKKworcHJpdmF0ZToKKyAgICBFdmFzX09iamVjdCogbV9l
d2tWaWV3OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBJbnB1dFBp
Y2tlcl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9QYWdl
Q2xpZW50SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9QYWdlQ2xp
ZW50SW1wbC5jcHAKaW5kZXggZTY5Zjg3ZC4uNTc1OWNiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvUGFnZUNsaWVudEltcGwuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL1BhZ2VDbGllbnRJbXBsLmNwcApAQCAtMjksNiArMjks
NyBAQAogI2luY2x1ZGUgIkRyYXdpbmdBcmVhUHJveHlJbXBsLmgiCiAjaW5jbHVkZSAiTmF0aXZl
V2ViS2V5Ym9hcmRFdmVudC5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCisjaW5jbHVk
ZSAiV2ViQ29sb3JDaG9vc2VyUHJveHlFZmwuaCIKICNpbmNsdWRlICJXZWJDb250ZXh0LmgiCiAj
aW5jbHVkZSAiV2ViQ29udGV4dE1lbnVQcm94eS5oIgogI2luY2x1ZGUgIldlYlBhZ2VQcm94eS5o
IgpAQCAtMjA2LDEwICsyMDcsOSBAQCBQYXNzUmVmUHRyPFdlYkNvbnRleHRNZW51UHJveHk+IFBh
Z2VDbGllbnRJbXBsOjpjcmVhdGVDb250ZXh0TWVudVByb3h5KFdlYlBhZ2VQcgogfQogCiAjaWYg
RU5BQkxFKElOUFVUX1RZUEVfQ09MT1IpCi1QYXNzUmVmUHRyPFdlYkNvbG9yQ2hvb3NlclByb3h5
PiBQYWdlQ2xpZW50SW1wbDo6Y3JlYXRlQ29sb3JDaG9vc2VyUHJveHkoV2ViUGFnZVByb3h5Kiwg
Y29uc3QgV2ViQ29yZTo6Q29sb3ImKQorUGFzc1JlZlB0cjxXZWJDb2xvckNob29zZXJQcm94eT4g
UGFnZUNsaWVudEltcGw6OmNyZWF0ZUNvbG9yQ2hvb3NlclByb3h5KFdlYlBhZ2VQcm94eSogcGFn
ZSwgY29uc3QgV2ViQ29yZTo6Q29sb3ImIGluaXRpYWxDb2xvcikKIHsKLSAgICBub3RJbXBsZW1l
bnRlZCgpOwotICAgIHJldHVybiAwOworICAgIHJldHVybiBXZWJDb2xvckNob29zZXJQcm94eUVm
bDo6Y3JlYXRlKG1fdmlld1dpZGdldCwgcGFnZSwgaW5pdGlhbENvbG9yKTsKIH0KICNlbmRpZgog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5jcHAKaW5kZXgg
M2Y4MGFhMS4uNTFlMzNlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9lZmwvZXdrX3ZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZs
L2V3a192aWV3LmNwcApAQCAtMjEsNiArMjEsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2lu
Y2x1ZGUgImV3a192aWV3LmgiCiAKKyNpbmNsdWRlICJJbnB1dFBpY2tlci5oIgogI2luY2x1ZGUg
Ik5hdGl2ZVdlYktleWJvYXJkRXZlbnQuaCIKICNpbmNsdWRlICJOYXRpdmVXZWJNb3VzZUV2ZW50
LmgiCiAjaW5jbHVkZSAiTmF0aXZlV2ViV2hlZWxFdmVudC5oIgpAQCAtNTQsMTIgKzU1LDIwIEBA
IHN0cnVjdCBfRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhIHsKICAgICBjb25zdCBjaGFyKiBjdXN0b21F
bmNvZGluZzsKICAgICBMb2FkaW5nUmVzb3VyY2VzTWFwIGxvYWRpbmdSZXNvdXJjZXNNYXA7CiAK
LSAgICBfRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKCkKKyAgICBPd25QdHI8SW5wdXRQaWNrZXI+IGlu
cHV0UGlja2VyOworCisjaWYgRU5BQkxFKElOUFVUX1RZUEVfQ09MT1IpCisgICAgV2ViQ29sb3JD
aG9vc2VyUHJveHlFZmwqIGNvbG9yQ2hvb3NlcjsKKyNlbmRpZiAvLyBFTkFCTEUoSU5QVVRfVFlQ
RV9DT0xPUikKKworICAgIF9Fd2tfVmlld19Qcml2YXRlX0RhdGEoRXdrX1ZpZXdfU21hcnRfRGF0
YSogc21hcnREYXRhKQogICAgICAgICA6IHVyaSgwKQogICAgICAgICAsIHRpdGxlKDApCiAgICAg
ICAgICwgdGhlbWUoMCkKICAgICAgICAgLCBjdXN0b21FbmNvZGluZygwKQotICAgIHsgfQorICAg
IHsKKyAgICAgICAgaW5wdXRQaWNrZXIgPSBhZG9wdFB0cjxJbnB1dFBpY2tlcj4obmV3IElucHV0
UGlja2VyKHNtYXJ0RGF0YS0+c2VsZikpOworICAgIH0KIAogICAgIH5fRXdrX1ZpZXdfUHJpdmF0
ZV9EYXRhKCkKICAgICB7CkBAIC0yMDMsNiArMjEyLDE0IEBAIHN0YXRpYyBFaW5hX0Jvb2wgX2V3
a192aWV3X3NtYXJ0X2tleV91cChFd2tfVmlld19TbWFydF9EYXRhKiBzbWFydERhdGEsIGNvbnN0
IEV2CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK3N0YXRpYyBFaW5hX0Jvb2wgX2V3a192aWV3X2lu
cHV0X3BpY2tlcl9zaG93KEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNtYXJ0RGF0YSwgRXdrX0lucHV0
X1R5cGUgaW5wdXRUeXBlLCBjb25zdCBjaGFyKiBpbnB1dFZhbHVlKQoreworICAgIEVXS19WSUVX
X1BSSVZfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIHByaXYsIGZhbHNlKTsKKworICAgIHByaXYt
PmlucHV0UGlja2VyLT5zaG93KGlucHV0VHlwZSwgaW5wdXRWYWx1ZSk7CisgICAgcmV0dXJuIHRy
dWU7Cit9CisKIC8vIEV2ZW50IEhhbmRsaW5nLgogc3RhdGljIHZvaWQgX2V3a192aWV3X29uX2Zv
Y3VzX2luKHZvaWQqIGRhdGEsIEV2YXMqIGNhbnZhcywgRXZhc19PYmplY3QqIGV3a1ZpZXcsIHZv
aWQqIGV2ZW50SW5mbykKIHsKQEAgLTI3OCw3ICsyOTUsNyBAQCBzdGF0aWMgRXZhc19TbWFydF9D
bGFzcyBnX3BhcmVudFNtYXJ0Q2xhc3MgPSBFVkFTX1NNQVJUX0NMQVNTX0lOSVRfTlVMTDsKIAog
c3RhdGljIEV3a19WaWV3X1ByaXZhdGVfRGF0YSogX2V3a192aWV3X3ByaXZfbmV3KEV3a19WaWV3
X1NtYXJ0X0RhdGEqIHNtYXJ0RGF0YSkKIHsKLSAgICBFd2tfVmlld19Qcml2YXRlX0RhdGEqIHBy
aXYgPSBuZXcgRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhOworICAgIEV3a19WaWV3X1ByaXZhdGVfRGF0
YSogcHJpdiA9IG5ldyBFd2tfVmlld19Qcml2YXRlX0RhdGEoc21hcnREYXRhKTsKICAgICBpZiAo
IXByaXYpIHsKICAgICAgICAgRUlOQV9MT0dfQ1JJVCgiY291bGQgbm90IGFsbG9jYXRlIEV3a19W
aWV3X1ByaXZhdGVfRGF0YSIpOwogICAgICAgICByZXR1cm4gMDsKQEAgLTQ3NCw2ICs0OTEsNyBA
QCBFaW5hX0Jvb2wgZXdrX3ZpZXdfc21hcnRfY2xhc3NfaW5pdChFd2tfVmlld19TbWFydF9DbGFz
cyogYXBpKQogICAgIGFwaS0+bW91c2VfbW92ZSA9IF9ld2tfdmlld19zbWFydF9tb3VzZV9tb3Zl
OwogICAgIGFwaS0+a2V5X2Rvd24gPSBfZXdrX3ZpZXdfc21hcnRfa2V5X2Rvd247CiAgICAgYXBp
LT5rZXlfdXAgPSBfZXdrX3ZpZXdfc21hcnRfa2V5X3VwOworICAgIGFwaS0+aW5wdXRfcGlja2Vy
X3Nob3cgPSBfZXdrX3ZpZXdfaW5wdXRfcGlja2VyX3Nob3c7CiAKICAgICByZXR1cm4gdHJ1ZTsK
IH0KQEAgLTk4OCwzICsxMDA2LDU3IEBAIEVpbmFfQm9vbCBld2tfdmlld19zZXR0aW5nX2VuY29k
aW5nX2N1c3RvbV9zZXQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIGNvbnN0IGNoYXIqCiAgICAgICAg
IFdLUGFnZVNldEN1c3RvbVRleHRFbmNvZGluZ05hbWUodG9BUEkocHJpdi0+cGFnZUNsaWVudC0+
cGFnZSgpKSwgd2tFbmNvZGluZ05hbWUuZ2V0KCkpOwogICAgIHJldHVybiB0cnVlOwogfQorCit2
b2lkIGV3a192aWV3X2lucHV0X3BpY2tlcl9yZXF1ZXN0KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBF
d2tfSW5wdXRfVHlwZSBpbnB1dFR5cGUsIGNvbnN0IFN0cmluZyYgaW5wdXRWYWx1ZSkKK3sKKyAg
ICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSk7CisgICAgRUlO
QV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oc21hcnREYXRhLT5hcGkpOworICAgIEVJTkFfU0FGRVRZ
X09OX05VTExfUkVUVVJOKHNtYXJ0RGF0YS0+YXBpLT5pbnB1dF9waWNrZXJfc2hvdyk7CisKKyAg
ICBzbWFydERhdGEtPmFwaS0+aW5wdXRfcGlja2VyX3Nob3coc21hcnREYXRhLCBpbnB1dFR5cGUs
IGlucHV0VmFsdWUudXRmOCgpLmRhdGEoKSk7Cit9CisKKyNpZiBFTkFCTEUoSU5QVVRfVFlQRV9D
T0xPUikKK3ZvaWQgZXdrX3ZpZXdfY29sb3JfY2hvb3Nlcl9yZXF1ZXN0KEV2YXNfT2JqZWN0KiBl
d2tWaWV3LCBXZWJLaXQ6OldlYkNvbG9yQ2hvb3NlclByb3h5RWZsKiBjb2xvckNob29zZXIsIGNv
bnN0IFN0cmluZyYgaW5wdXRWYWx1ZSkKK3sKKyAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJO
KGV3a1ZpZXcsIHNtYXJ0RGF0YSk7CisgICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNt
YXJ0RGF0YSwgcHJpdik7CisKKyAgICBwcml2LT5jb2xvckNob29zZXIgPSBjb2xvckNob29zZXI7
CisKKyAgICBld2tfdmlld19pbnB1dF9waWNrZXJfcmVxdWVzdChld2tWaWV3LCBFV0tfSU5QVVRf
VFlQRV9DT0xPUiwgaW5wdXRWYWx1ZSk7Cit9CisjZW5kaWYgLy8gRU5BQkxFKElOUFVUX1RZUEVf
Q09MT1IpCisKK0VpbmFfQm9vbCBld2tfdmlld19jb2xvcl9jaG9vc2VyX2NvbG9yX3NldChFdmFz
X09iamVjdCogZXdrVmlldywgY29uc3QgY2hhciogY29sb3IpCit7CisjaWYgRU5BQkxFKElOUFVU
X1RZUEVfQ09MT1IpCisgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFy
dERhdGEsIEVJTkFfRkFMU0UpOworICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzbWFy
dERhdGEsIHByaXYsIEVJTkFfRkFMU0UpOworCisgICAgaWYgKCFwcml2LT5jb2xvckNob29zZXIp
CisgICAgICAgIHJldHVybiBFSU5BX0ZBTFNFOworCisgICAgcHJpdi0+Y29sb3JDaG9vc2VyLT5z
ZXRTZWxlY3RlZENvbG9yKENvbG9yKGNvbG9yKSk7CisKKyAgICByZXR1cm4gRUlOQV9UUlVFOwor
I2VuZGlmIC8vIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9SKQorICAgIHJldHVybiBFSU5BX0ZBTFNF
OworfQorCitFaW5hX0Jvb2wgZXdrX3ZpZXdfY29sb3JfY2hvb3Nlcl9jbG9zZShFdmFzX09iamVj
dCogZXdrVmlldykKK3sKKyNpZiBFTkFCTEUoSU5QVVRfVFlQRV9DT0xPUikKKyAgICBFV0tfVklF
V19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwgRUlOQV9GQUxTRSk7CisgICAg
RVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgcHJpdiwgRUlOQV9GQUxTRSk7
CisKKyAgICBpZiAoIXByaXYtPmNvbG9yQ2hvb3NlcikKKyAgICAgICAgcmV0dXJuIEVJTkFfRkFM
U0U7CisKKyAgICBwcml2LT5jb2xvckNob29zZXItPmVuZENob29zZXIoKTsKKyAgICBwcml2LT5j
b2xvckNob29zZXIgPSAwOworCisgICAgcmV0dXJuIEVJTkFfVFJVRTsKKyNlbmRpZiAvLyBFTkFC
TEUoSU5QVVRfVFlQRV9DT0xPUikKKyAgICByZXR1cm4gRUlOQV9GQUxTRTsKK30KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmggYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5oCmluZGV4IDZhOGU3NGYuLmFhMzYw
OGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3
LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuaApAQCAt
NjYsNiArNjYsMjcgQEAgZXh0ZXJuICJDIiB7CiB0eXBlZGVmIHN0cnVjdCBfRXdrX1ZpZXdfU21h
cnRfRGF0YSBFd2tfVmlld19TbWFydF9EYXRhOwogdHlwZWRlZiBzdHJ1Y3QgX0V3a19WaWV3X1Nt
YXJ0X0NsYXNzIEV3a19WaWV3X1NtYXJ0X0NsYXNzOwogCisvKioKKyAqIFxlbnVtICAgIEV3a19J
bnB1dF9UeXBlCisgKiBAYnJpZWYgICBQcm92aWRlcyB0eXBlIG9mIGlucHV0IGVsZW1lbnQKKyAq
LworZW51bSBfRXdrX0lucHV0X1R5cGUgeworICAgIEVXS19JTlBVVF9UWVBFX1RFTEVQSE9ORSA9
IDEsIAorICAgIEVXS19JTlBVVF9UWVBFX05VTUJFUiwKKyAgICBFV0tfSU5QVVRfVFlQRV9FTUFJ
TCwKKyAgICBFV0tfSU5QVVRfVFlQRV9VUkwsCisgICAgRVdLX0lOUFVUX1RZUEVfUEFTU1dPUkQs
CisgICAgRVdLX0lOUFVUX1RZUEVfQ09MT1IsCisgICAgRVdLX0lOUFVUX1RZUEVfREFURSwKKyAg
ICBFV0tfSU5QVVRfVFlQRV9EQVRFVElNRSwKKyAgICBFV0tfSU5QVVRfVFlQRV9EQVRFVElNRUxP
Q0FMLAorICAgIEVXS19JTlBVVF9UWVBFX01PTlRILAorICAgIEVXS19JTlBVVF9UWVBFX1RJTUUs
CisgICAgRVdLX0lOUFVUX1RZUEVfV0VFSworfTsKKy8qKiBDcmVhdGVzIGEgdHlwZSBuYW1lIGZv
ciBfRXdrX0lucHV0X1R5cGVfRXdrX0lucHV0X1R5cGUgKi8KK3R5cGVkZWYgZW51bSBfRXdrX0lu
cHV0X1R5cGUgRXdrX0lucHV0X1R5cGU7CisKIC8vLyBFd2sgdmlldydzIGNsYXNzLCB0byBiZSBv
dmVycmlkZGVuIGJ5IHN1Yi1jbGFzc2VzLgogc3RydWN0IF9Fd2tfVmlld19TbWFydF9DbGFzcyB7
CiAgICAgRXZhc19TbWFydF9DbGFzcyBzYzsgLyoqPCBhbGwgYnV0ICdkYXRhJyBpcyBmcmVlIHRv
IGJlIGNoYW5nZWQuICovCkBAIC04Miw2ICsxMDMsOSBAQCBzdHJ1Y3QgX0V3a19WaWV3X1NtYXJ0
X0NsYXNzIHsKICAgICBFaW5hX0Jvb2wgKCptb3VzZV9tb3ZlKShFd2tfVmlld19TbWFydF9EYXRh
ICpzZCwgY29uc3QgRXZhc19FdmVudF9Nb3VzZV9Nb3ZlICpldik7CiAgICAgRWluYV9Cb29sICgq
a2V5X2Rvd24pKEV3a19WaWV3X1NtYXJ0X0RhdGEgKnNkLCBjb25zdCBFdmFzX0V2ZW50X0tleV9E
b3duICpldik7CiAgICAgRWluYV9Cb29sICgqa2V5X3VwKShFd2tfVmlld19TbWFydF9EYXRhICpz
ZCwgY29uc3QgRXZhc19FdmVudF9LZXlfVXAgKmV2KTsKKworICAgIC8vIFNob3dzIGlucHV0IHBp
Y2tlciBiYXNlZCBvbiBpbnB1dCB0eXBlIHdpdGggaW5pdGlhbCB2YWx1ZS4KKyAgICBFaW5hX0Jv
b2wgKCppbnB1dF9waWNrZXJfc2hvdykoRXdrX1ZpZXdfU21hcnRfRGF0YSAqc2QsIEV3a19JbnB1
dF9UeXBlIGlucHV0X3R5cGUsIGNvbnN0IGNoYXIgKmlucHV0X3ZhbHVlKTsKIH07CiAKIC8qKgpA
QCAtMTAwLDcgKzEyNCw3IEBAIHN0cnVjdCBfRXdrX1ZpZXdfU21hcnRfQ2xhc3MgewogICogQHNl
ZSBFV0tfVklFV19TTUFSVF9DTEFTU19JTklUX1ZFUlNJT04KICAqIEBzZWUgRVdLX1ZJRVdfU01B
UlRfQ0xBU1NfSU5JVF9OQU1FX1ZFUlNJT04KICAqLwotI2RlZmluZSBFV0tfVklFV19TTUFSVF9D
TEFTU19JTklUKHNtYXJ0X2NsYXNzX2luaXQpIHtzbWFydF9jbGFzc19pbml0LCBFV0tfVklFV19T
TUFSVF9DTEFTU19WRVJTSU9OLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwfQorI2RlZmluZSBFV0tf
VklFV19TTUFSVF9DTEFTU19JTklUKHNtYXJ0X2NsYXNzX2luaXQpIHtzbWFydF9jbGFzc19pbml0
LCBFV0tfVklFV19TTUFSVF9DTEFTU19WRVJTSU9OLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAw
fQogCiAvKioKICAqIEluaXRpYWxpemVyIHRvIHplcm8gYSB3aG9sZSBFd2tfVmlld19TbWFydF9D
bGFzcyBzdHJ1Y3R1cmUuCkBAIC00NDAsNiArNDY0LDI1IEBAIEVBUEkgY29uc3QgY2hhciAgKmV3
a192aWV3X3NldHRpbmdfZW5jb2RpbmdfY3VzdG9tX2dldChjb25zdCBFdmFzX09iamVjdCAqbyk7
CiAgKi8KIEVBUEkgRWluYV9Cb29sICAgIGV3a192aWV3X3NldHRpbmdfZW5jb2RpbmdfY3VzdG9t
X3NldChFdmFzX09iamVjdCAqbywgY29uc3QgY2hhciAqZW5jb2RpbmcpOwogCisvKioKKyAqIFNl
dHMgdGhlIGNvbG9yIHZhbHVlIG9mIGNvbG9yIGNob29zZXIKKyAqCisgKiBAcGFyYW0gbyB2aWV3
IG9iamVjdCBjb250YWlucyBjb2xvciBjaG9vc2VyCisgKiBAcGFyYW0gY29sb3IgdGhlIGNvbG9y
IHZhbHVlIHRvIGJlIHNldAorICoKKyAqIEByZXR1cm4gQGMgRUlOQV9UUlVFIG9uIHN1Y2Nlc3Mg
QGMgRUlOQV9GQUxTRSBvdGhlcndpc2UKKyAqLworRUFQSSBFaW5hX0Jvb2wgZXdrX3ZpZXdfY29s
b3JfY2hvb3Nlcl9jb2xvcl9zZXQoRXZhc19PYmplY3QgKm8sIGNvbnN0IGNoYXIgKmNvbG9yKTsK
KworLyoqCisgKiBDbG9zZXMgY29sb3IgY2hvb3NlcgorICoKKyAqIEBwYXJhbSBvIHZpZXcgb2Jq
ZWN0IGNvbnRhaW5zIGNvbG9yIGNob29zZXIKKyAqCisgKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBv
biBzdWNjZXNzIEBjIEVJTkFfRkFMU0Ugb3RoZXJ3aXNlCisgKi8KK0VBUEkgRWluYV9Cb29sIGV3
a192aWV3X2NvbG9yX2Nob29zZXJfY2xvc2UoRXZhc19PYmplY3QgKm8pOworCiAjaWZkZWYgX19j
cGx1c3BsdXMKIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9lZmwvZXdrX3ZpZXdfcHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9lZmwvZXdrX3ZpZXdfcHJpdmF0ZS5oCmluZGV4IDNjOWNlOTQuLjAwMzNhOGIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3X3ByaXZhdGUuaAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlld19wcml2YXRlLmgK
QEAgLTIyLDkgKzIyLDE0IEBACiAjZGVmaW5lIGV3a192aWV3X3ByaXZhdGVfaAogCiAjaW5jbHVk
ZSAiV2ViUGFnZVByb3h5LmgiCisjaW5jbHVkZSAiZXdrX3ZpZXcuaCIKICNpbmNsdWRlIDxFdmFz
Lmg+CiAjaW5jbHVkZSA8V2ViS2l0Mi9XS0Jhc2UuaD4KIAorI2lmIEVOQUJMRShJTlBVVF9UWVBF
X0NPTE9SKQorI2luY2x1ZGUgIldlYkNvbG9yQ2hvb3NlclByb3h5RWZsLmgiCisjZW5kaWYgLy8g
RU5BQkxFKElOUFVUX1RZUEVfQ09MT1IpCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIElu
dFJlY3Q7CiBjbGFzcyBJbnRTaXplOwpAQCAtNzAsNCArNzUsOSBAQCB2b2lkIGV3a192aWV3X2lu
dGVudF9zZXJ2aWNlX3JlZ2lzdGVyKEV2YXNfT2JqZWN0KiBld2tWaWV3LCBjb25zdCBFd2tfSW50
ZW50X1NlcgogCiBXZWJLaXQ6OldlYlBhZ2VQcm94eSogZXdrX3ZpZXdfcGFnZV9nZXQoY29uc3Qg
RXZhc19PYmplY3QqIGV3a1ZpZXcpOwogCit2b2lkIGV3a192aWV3X2lucHV0X3BpY2tlcl9yZXF1
ZXN0KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBFd2tfSW5wdXRfVHlwZSBpbnB1dFR5cGUsIGNvbnN0
IFN0cmluZyYgaW5wdXRWYWx1ZSk7CisjaWYgRU5BQkxFKElOUFVUX1RZUEVfQ09MT1IpCit2b2lk
IGV3a192aWV3X2NvbG9yX2Nob29zZXJfcmVxdWVzdChFdmFzX09iamVjdCogZXdrVmlldywgV2Vi
S2l0OjpXZWJDb2xvckNob29zZXJQcm94eUVmbCogY29sb3JDaG9vc2VyLCBjb25zdCBTdHJpbmcm
IGlucHV0VmFsdWUpOworI2VuZGlmIC8vIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9SKQorCiAjZW5k
aWYgLy8gZXdrX3ZpZXdfcHJpdmF0ZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvZWZsL1dlYkNvbG9yQ2hvb3NlclByb3h5RWZsLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9lZmwvV2ViQ29sb3JDaG9vc2VyUHJveHlFZmwuY3BwCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAuLmM5ZWQ5NjEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvZWZsL1dlYkNvbG9yQ2hvb3NlclByb3h5RWZsLmNwcApAQCAtMCwwICsx
LDU5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIFNhbXN1bmcgRWxlY3Ryb25pY3MuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiV2ViQ29sb3JDaG9vc2VyUHJveHlFZmwuaCIKKworI2lmIEVOQUJMRShJTlBVVF9UWVBFX0NP
TE9SKQorCisjaW5jbHVkZSAiZXdrX3ZpZXdfcHJpdmF0ZS5oIgorCituYW1lc3BhY2UgV2ViS2l0
IHsKKworV2ViQ29sb3JDaG9vc2VyUHJveHlFZmw6OldlYkNvbG9yQ2hvb3NlclByb3h5RWZsKEV2
YXNfT2JqZWN0KiB3ZWJWaWV3LCBXZWJDb2xvckNob29zZXJQcm94eTo6Q2xpZW50KiBjbGllbnQs
IGNvbnN0IFdlYkNvcmU6OkNvbG9yJiBjb2xvcikKKyAgICA6IFdlYkNvbG9yQ2hvb3NlclByb3h5
KGNsaWVudCkKK3sKKyAgICBld2tfdmlld19jb2xvcl9jaG9vc2VyX3JlcXVlc3Qod2ViVmlldywg
dGhpcywgY29sb3Iuc2VyaWFsaXplZCgpKTsKK30KKworV2ViQ29sb3JDaG9vc2VyUHJveHlFZmw6
On5XZWJDb2xvckNob29zZXJQcm94eUVmbCgpCit7Cit9CisKK3ZvaWQgV2ViQ29sb3JDaG9vc2Vy
UHJveHlFZmw6OmVuZENob29zZXIoKQoreworICAgIGlmIChtX2NsaWVudCkKKyAgICAgICAgbV9j
bGllbnQtPmRpZEVuZENvbG9yQ2hvb3NlcigpOworfQorCit2b2lkIFdlYkNvbG9yQ2hvb3NlclBy
b3h5RWZsOjpzZXRTZWxlY3RlZENvbG9yKGNvbnN0IFdlYkNvcmU6OkNvbG9yJiBjb2xvcikKK3sK
KyAgICBpZiAobV9jbGllbnQpCisgICAgICAgIG1fY2xpZW50LT5kaWRDaG9vc2VDb2xvcihjb2xv
cik7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKElOUFVU
X1RZUEVfQ09MT1IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dl
YkNvbG9yQ2hvb3NlclByb3h5RWZsLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dl
YkNvbG9yQ2hvb3NlclByb3h5RWZsLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MC4uMTA3YTNkMQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9l
ZmwvV2ViQ29sb3JDaG9vc2VyUHJveHlFZmwuaApAQCAtMCwwICsxLDU5IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDEyIFNhbXN1bmcgRWxlY3Ryb25pY3MuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaWZuZGVmIFdlYkNvbG9yQ2hvb3NlclByb3h5RWZsX2gKKyNkZWZpbmUgV2Vi
Q29sb3JDaG9vc2VyUHJveHlFZmxfaAorCisjaWYgRU5BQkxFKElOUFVUX1RZUEVfQ09MT1IpCisK
KyNpbmNsdWRlICJDb2xvci5oIgorI2luY2x1ZGUgIldlYkNvbG9yQ2hvb3NlclByb3h5LmgiCisK
K3R5cGVkZWYgc3RydWN0IF9FdmFzX09iamVjdCBFdmFzX09iamVjdDsKKworbmFtZXNwYWNlIFdl
YktpdCB7CisKK2NsYXNzIFdlYlBhZ2VQcm94eTsKKworY2xhc3MgV2ViQ29sb3JDaG9vc2VyUHJv
eHlFZmwgOiBwdWJsaWMgV2ViQ29sb3JDaG9vc2VyUHJveHkgeworcHVibGljOgorICAgIHN0YXRp
YyBQYXNzUmVmUHRyPFdlYkNvbG9yQ2hvb3NlclByb3h5RWZsPiBjcmVhdGUoRXZhc19PYmplY3Qq
IHdlYlZpZXcsIFdlYkNvbG9yQ2hvb3NlclByb3h5OjpDbGllbnQqIGNsaWVudCwgY29uc3QgV2Vi
Q29yZTo6Q29sb3ImIGNvbG9yKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBX
ZWJDb2xvckNob29zZXJQcm94eUVmbCh3ZWJWaWV3LCBjbGllbnQsIGNvbG9yKSk7CisgICAgfQor
ICAgIHZpcnR1YWwgfldlYkNvbG9yQ2hvb3NlclByb3h5RWZsKCk7CisKKyAgICB2aXJ0dWFsIHZv
aWQgZW5kQ2hvb3NlcigpOworICAgIHZpcnR1YWwgdm9pZCBzZXRTZWxlY3RlZENvbG9yKGNvbnN0
IFdlYkNvcmU6OkNvbG9yJik7CisKK3ByaXZhdGU6CisgICAgV2ViQ29sb3JDaG9vc2VyUHJveHlF
ZmwoRXZhc19PYmplY3QqLCBXZWJDb2xvckNob29zZXJQcm94eTo6Q2xpZW50KiwgY29uc3QgV2Vi
Q29yZTo6Q29sb3ImKTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8g
RU5BQkxFKElOUFVUX1RZUEVfQ09MT1IpCisKKyNlbmRpZiAvLyBXZWJDb2xvckNob29zZXJQcm94
eUVmbF9oCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>154310</attachid>
            <date>2012-07-25 03:16:42 -0700</date>
            <delta_ts>2012-07-25 16:37:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>21638</size>
            <attacher name="KwangYong Choi">ky0.choi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCBkY2Q4N2Y1Li43MWM5NDIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTAg
QEAKKzIwMTItMDctMjUgIEt3YW5nWW9uZyBDaG9pICA8a3kwLmNob2lAc2Ftc3VuZy5jb20+CisK
KyAgICAgICAgW0VGTF1bV0syXSBJbXBsZW1lbnRlZCBjb2xvciBjaG9vc2VyIHByb3h5IGFuZCBp
bnB1dCBwaWNrZXIgaW50ZXJmYWNlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD05MTgzMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEltcGxlbWVudGVkIGNvbG9yIGNob29zZXIgcHJveHkgYW5kIGlucHV0IHBp
Y2tlciBpbnRlcmZhY2UgZm9yIEVGTC4KKyAgICAgICAgSW5wdXQgcGlja2VyIGludGVyZmFjZSBj
YW4gYmUgdXNlZCBmb3IgZ2VuZXJhbCB1c2Ugb2YgYWxsIHRoZSBpbnB1dAorICAgICAgICB0eXBl
cyBpbmNsdWRpbmcgY29sb3IgaW5wdXQgdHlwZS4KKworICAgICAgICBJbnB1dCBwaWNrZXIgdXNl
ciBpbnRlcmZhY2Ugc2hvdWxkIGJlIGltcGxlbWVudGVkIGFmdGVyIHRoaXMuCisKKyAgICAgICAg
KiBQbGF0Zm9ybUVmbC5jbWFrZToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9JbnB1dFBp
Y2tlci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6SW5w
dXRQaWNrZXI6OklucHV0UGlja2VyKToKKyAgICAgICAgKFdlYktpdDo6SW5wdXRQaWNrZXI6On5J
bnB1dFBpY2tlcik6CisgICAgICAgIChXZWJLaXQ6OklucHV0UGlja2VyOjpzaG93KTogU2hvd3Mg
dXNlciBpbnRlcmZhY2Ugb2Ygc3BlY2lmaWMgaW5wdXQgdHlwZS4KKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL2VmbC9JbnB1dFBpY2tlci5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdCk6CisgICAg
ICAgIChJbnB1dFBpY2tlcik6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvUGFnZUNsaWVu
dEltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6Y3JlYXRlQ29sb3JD
aG9vc2VyUHJveHkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmNwcDoK
KyAgICAgICAgKF9Fd2tfVmlld19Qcml2YXRlX0RhdGEpOgorICAgICAgICAoX2V3a192aWV3X2lu
cHV0X3BpY2tlcl9zaG93KToKKyAgICAgICAgKF9ld2tfdmlld19wcml2X25ldyk6CisgICAgICAg
IChfZXdrX3ZpZXdfcHJpdl9kZWwpOgorICAgICAgICAoZXdrX3ZpZXdfc21hcnRfY2xhc3NfaW5p
dCk6CisgICAgICAgIChld2tfdmlld19pbnB1dF9waWNrZXJfcmVxdWVzdCk6IFJlcXVlc3RzIGlu
cHV0IHBpY2tlci4KKyAgICAgICAgKGV3a192aWV3X2NvbG9yX2Nob29zZXJfcmVxdWVzdCk6IFJl
cXVlc3RzIGNvbG9yIHBpY2tlci4KKyAgICAgICAgKGV3a192aWV3X2NvbG9yX2Nob29zZXJfY29s
b3Jfc2V0KTogU2V0cyB0aGUgY29sb3IgYnkgY2FsbGluZyBXZWJDb2xvckNob29zZXJQcm94eUVm
bDo6c2V0U2VsZWN0ZWRDb2xvci4KKyAgICAgICAgKGV3a192aWV3X2NvbG9yX2Nob29zZXJfY2xv
c2UpOiBDYWxscyBXZWJDb2xvckNob29zZXJQcm94eUVmbDo6ZW5kQ2hvb3NlcgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9l
ZmwvZXdrX3ZpZXdfcHJpdmF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9lZmwvV2ViQ29sb3JD
aG9vc2VyUHJveHlFZmwuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChX
ZWJLaXQ6OldlYkNvbG9yQ2hvb3NlclByb3h5RWZsOjpXZWJDb2xvckNob29zZXJQcm94eUVmbCk6
CisgICAgICAgIChXZWJLaXQ6OldlYkNvbG9yQ2hvb3NlclByb3h5RWZsOjp+V2ViQ29sb3JDaG9v
c2VyUHJveHlFZmwpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb2xvckNob29zZXJQcm94eUVmbDo6
ZW5kQ2hvb3Nlcik6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbG9yQ2hvb3NlclByb3h5RWZsOjpz
ZXRTZWxlY3RlZENvbG9yKToKKyAgICAgICAgKiBVSVByb2Nlc3MvZWZsL1dlYkNvbG9yQ2hvb3Nl
clByb3h5RWZsLmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYkNvbG9y
Q2hvb3NlclByb3h5RWZsKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29sb3JDaG9vc2VyUHJveHlF
Zmw6OmNyZWF0ZSk6CisKIDIwMTItMDctMjUgIFJ5dWFuIENob2kgIDxyeXVhbi5jaG9pQHNhbXN1
bmcuY29tPgogCiAgICAgICAgIFtFRkxdW1dLMl0gQWRkIGV3a192aWV3X2N1cnNvcl9zZXQgdG8g
Y2hhbmdlIGN1cnNvci4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNt
YWtlIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UKaW5kZXggNjZhZDAzNy4uMmQ0
MGQ0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UKKysrIGIv
U291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UKQEAgLTM3LDYgKzM3LDcgQEAgTElTVChB
UFBFTkQgV2ViS2l0Ml9TT1VSQ0VTCiAgICAgVUlQcm9jZXNzL0FQSS9DL3NvdXAvV0tTb3VwUmVx
dWVzdE1hbmFnZXIuY3BwCiAKICAgICBVSVByb2Nlc3MvQVBJL2VmbC9CYXR0ZXJ5UHJvdmlkZXIu
Y3BwCisgICAgVUlQcm9jZXNzL0FQSS9lZmwvSW5wdXRQaWNrZXIuY3BwCiAgICAgVUlQcm9jZXNz
L0FQSS9lZmwvUGFnZUNsaWVudEltcGwuY3BwCiAgICAgVUlQcm9jZXNzL0FQSS9lZmwvVmlicmF0
aW9uUHJvdmlkZXIuY3BwCiAgICAgVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHQuY3BwCkBA
IC01OSw2ICs2MCw3IEBAIExJU1QoQVBQRU5EIFdlYktpdDJfU09VUkNFUwogICAgIFVJUHJvY2Vz
cy9jYWlyby9CYWNraW5nU3RvcmVDYWlyby5jcHAKIAogICAgIFVJUHJvY2Vzcy9lZmwvVGV4dENo
ZWNrZXJFZmwuY3BwCisgICAgVUlQcm9jZXNzL2VmbC9XZWJDb2xvckNob29zZXJQcm94eUVmbC5j
cHAKICAgICBVSVByb2Nlc3MvZWZsL1dlYkNvbnRleHRFZmwuY3BwCiAgICAgVUlQcm9jZXNzL2Vm
bC9XZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5RWZsLmNwcAogICAgIFVJUHJvY2Vzcy9lZmwvV2Vi
SW5zcGVjdG9yUHJveHlFZmwuY3BwCkBAIC0xMTQsNiArMTE2LDcgQEAgTElTVChBUFBFTkQgV2Vi
S2l0Ml9JTkNMVURFX0RJUkVDVE9SSUVTCiAgICAgIiR7V0VCS0lUMl9ESVJ9L1VJUHJvY2Vzcy9B
UEkvQy9lZmwiCiAgICAgIiR7V0VCS0lUMl9ESVJ9L1VJUHJvY2Vzcy9BUEkvQy9zb3VwIgogICAg
ICIke1dFQktJVDJfRElSfS9VSVByb2Nlc3MvQVBJL2VmbCIKKyAgICAiJHtXRUJLSVQyX0RJUn0v
VUlQcm9jZXNzL2VmbCIKICAgICAiJHtXRUJLSVQyX0RJUn0vVUlQcm9jZXNzL3NvdXAiCiAgICAg
IiR7V0VCS0lUMl9ESVJ9L1dlYlByb2Nlc3MvRG93bmxvYWRzL3NvdXAiCiAgICAgIiR7V0VCS0lU
Ml9ESVJ9L1dlYlByb2Nlc3MvZWZsIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9lZmwvSW5wdXRQaWNrZXIuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9lZmwvSW5wdXRQaWNrZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu
LjJkMGM3ZTEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2VmbC9JbnB1dFBpY2tlci5jcHAKQEAgLTAsMCArMSw0OCBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIklucHV0UGlja2VyLmgiCisKKyNpbmNs
dWRlICJOb3RJbXBsZW1lbnRlZC5oIgorI2luY2x1ZGUgImV3a192aWV3LmgiCisKK25hbWVzcGFj
ZSBXZWJLaXQgeworCitJbnB1dFBpY2tlcjo6SW5wdXRQaWNrZXIoRXZhc19PYmplY3QqIGV3a1Zp
ZXcpCisgICAgOiBtX2V3a1ZpZXcoZXdrVmlldykKK3sKK30KKworSW5wdXRQaWNrZXI6On5JbnB1
dFBpY2tlcigpCit7Cit9CisKK3ZvaWQgSW5wdXRQaWNrZXI6OnNob3coRXdrX0lucHV0X1R5cGUg
aW5wdXRUeXBlLCBjb25zdCBjaGFyKiBpbnB1dFZhbHVlKQoreworICAgIG5vdEltcGxlbWVudGVk
KCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9lZmwvSW5wdXRQaWNrZXIuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZWZsL0lucHV0UGlja2VyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMC4uMjJjMGM2MQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZWZsL0lucHV0UGlja2VyLmgKQEAgLTAsMCArMSw0OCBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2lmbmRlZiBJbnB1dFBpY2tlcl9oCisjZGVmaW5lIElucHV0UGlja2VyX2gKKworI2lu
Y2x1ZGUgImV3a192aWV3LmgiCisKK3R5cGVkZWYgc3RydWN0IF9FdmFzX09iamVjdCBFdmFzX09i
amVjdDsKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIElucHV0UGlja2VyIHsKK3B1Ymxp
YzoKKyAgICBleHBsaWNpdCBJbnB1dFBpY2tlcihFdmFzX09iamVjdCopOworICAgIH5JbnB1dFBp
Y2tlcigpOworCisgICAgdm9pZCBzaG93KEV3a19JbnB1dF9UeXBlLCBjb25zdCBjaGFyKik7CisK
K3ByaXZhdGU6CisgICAgRXZhc19PYmplY3QqIG1fZXdrVmlldzsKK307CisKK30gLy8gbmFtZXNw
YWNlIFdlYktpdAorCisjZW5kaWYgLy8gSW5wdXRQaWNrZXJfaApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvUGFnZUNsaWVudEltcGwuY3BwIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvUGFnZUNsaWVudEltcGwuY3BwCmluZGV4IDExOGVkYjEu
LjQzZjk5Y2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL1Bh
Z2VDbGllbnRJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9Q
YWdlQ2xpZW50SW1wbC5jcHAKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJEcmF3aW5nQXJl
YVByb3h5SW1wbC5oIgogI2luY2x1ZGUgIk5hdGl2ZVdlYktleWJvYXJkRXZlbnQuaCIKICNpbmNs
dWRlICJOb3RJbXBsZW1lbnRlZC5oIgorI2luY2x1ZGUgIldlYkNvbG9yQ2hvb3NlclByb3h5RWZs
LmgiCiAjaW5jbHVkZSAiV2ViQ29udGV4dC5oIgogI2luY2x1ZGUgIldlYkNvbnRleHRNZW51UHJv
eHkuaCIKICNpbmNsdWRlICJXZWJQYWdlUHJveHkuaCIKQEAgLTIwNiwxMCArMjA3LDkgQEAgUGFz
c1JlZlB0cjxXZWJDb250ZXh0TWVudVByb3h5PiBQYWdlQ2xpZW50SW1wbDo6Y3JlYXRlQ29udGV4
dE1lbnVQcm94eShXZWJQYWdlUHIKIH0KIAogI2lmIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9SKQot
UGFzc1JlZlB0cjxXZWJDb2xvckNob29zZXJQcm94eT4gUGFnZUNsaWVudEltcGw6OmNyZWF0ZUNv
bG9yQ2hvb3NlclByb3h5KFdlYlBhZ2VQcm94eSosIGNvbnN0IFdlYkNvcmU6OkNvbG9yJikKK1Bh
c3NSZWZQdHI8V2ViQ29sb3JDaG9vc2VyUHJveHk+IFBhZ2VDbGllbnRJbXBsOjpjcmVhdGVDb2xv
ckNob29zZXJQcm94eShXZWJQYWdlUHJveHkqIHBhZ2UsIGNvbnN0IFdlYkNvcmU6OkNvbG9yJiBp
bml0aWFsQ29sb3IpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gMDsKKyAg
ICByZXR1cm4gV2ViQ29sb3JDaG9vc2VyUHJveHlFZmw6OmNyZWF0ZShtX3ZpZXdXaWRnZXQsIHBh
Z2UsIGluaXRpYWxDb2xvcik7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9lZmwvZXdrX3ZpZXcuY3BwCmluZGV4IDg0NDhmZDYuLmRmYmYxZTEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5jcHAKQEAgLTIxLDYgKzIx
LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJld2tfdmlldy5oIgogCisjaW5j
bHVkZSAiSW5wdXRQaWNrZXIuaCIKICNpbmNsdWRlICJOYXRpdmVXZWJLZXlib2FyZEV2ZW50Lmgi
CiAjaW5jbHVkZSAiTmF0aXZlV2ViTW91c2VFdmVudC5oIgogI2luY2x1ZGUgIk5hdGl2ZVdlYldo
ZWVsRXZlbnQuaCIKQEAgLTY2LDcgKzY3LDEzIEBAIHN0cnVjdCBfRXdrX1ZpZXdfUHJpdmF0ZV9E
YXRhIHsKICAgICBib29sIGlzVXNpbmdFY29yZVg7CiAjZW5kaWYKIAotICAgIF9Fd2tfVmlld19Q
cml2YXRlX0RhdGEoKQorICAgIE93blB0cjxJbnB1dFBpY2tlcj4gaW5wdXRQaWNrZXI7CisKKyNp
ZiBFTkFCTEUoSU5QVVRfVFlQRV9DT0xPUikKKyAgICBXZWJDb2xvckNob29zZXJQcm94eUVmbCog
Y29sb3JDaG9vc2VyOworI2VuZGlmIC8vIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9SKQorCisgICAg
X0V3a19WaWV3X1ByaXZhdGVfRGF0YShFd2tfVmlld19TbWFydF9EYXRhKiBzbWFydERhdGEpCiAg
ICAgICAgIDogdXJpKDApCiAgICAgICAgICwgdGl0bGUoMCkKICAgICAgICAgLCB0aGVtZSgwKQpA
QCAtNzYsNyArODMsOSBAQCBzdHJ1Y3QgX0V3a19WaWV3X1ByaXZhdGVfRGF0YSB7CiAjaWZkZWYg
SEFWRV9FQ09SRV9YCiAgICAgICAgICwgaXNVc2luZ0Vjb3JlWChmYWxzZSkKICNlbmRpZgotICAg
IHsgfQorICAgIHsKKyAgICAgICAgaW5wdXRQaWNrZXIgPSBhZG9wdFB0cjxJbnB1dFBpY2tlcj4o
bmV3IElucHV0UGlja2VyKHNtYXJ0RGF0YS0+c2VsZikpOworICAgIH0KIAogICAgIH5fRXdrX1Zp
ZXdfUHJpdmF0ZV9EYXRhKCkKICAgICB7CkBAIC0yMjMsNiArMjMyLDE0IEBAIHN0YXRpYyBFaW5h
X0Jvb2wgX2V3a192aWV3X3NtYXJ0X2tleV91cChFd2tfVmlld19TbWFydF9EYXRhKiBzbWFydERh
dGEsIGNvbnN0IEV2CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK3N0YXRpYyBFaW5hX0Jvb2wgX2V3
a192aWV3X2lucHV0X3BpY2tlcl9zaG93KEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNtYXJ0RGF0YSwg
RXdrX0lucHV0X1R5cGUgaW5wdXRUeXBlLCBjb25zdCBjaGFyKiBpbnB1dFZhbHVlKQoreworICAg
IEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIHByaXYsIGZhbHNlKTsKKwor
ICAgIHByaXYtPmlucHV0UGlja2VyLT5zaG93KGlucHV0VHlwZSwgaW5wdXRWYWx1ZSk7CisgICAg
cmV0dXJuIHRydWU7Cit9CisKIC8vIEV2ZW50IEhhbmRsaW5nLgogc3RhdGljIHZvaWQgX2V3a192
aWV3X29uX2ZvY3VzX2luKHZvaWQqIGRhdGEsIEV2YXMqIGNhbnZhcywgRXZhc19PYmplY3QqIGV3
a1ZpZXcsIHZvaWQqIGV2ZW50SW5mbykKIHsKQEAgLTI5OCw3ICszMTUsNyBAQCBzdGF0aWMgRXZh
c19TbWFydF9DbGFzcyBnX3BhcmVudFNtYXJ0Q2xhc3MgPSBFVkFTX1NNQVJUX0NMQVNTX0lOSVRf
TlVMTDsKIAogc3RhdGljIEV3a19WaWV3X1ByaXZhdGVfRGF0YSogX2V3a192aWV3X3ByaXZfbmV3
KEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNtYXJ0RGF0YSkKIHsKLSAgICBFd2tfVmlld19Qcml2YXRl
X0RhdGEqIHByaXYgPSBuZXcgRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhOworICAgIEV3a19WaWV3X1By
aXZhdGVfRGF0YSogcHJpdiA9IG5ldyBFd2tfVmlld19Qcml2YXRlX0RhdGEoc21hcnREYXRhKTsK
ICAgICBpZiAoIXByaXYpIHsKICAgICAgICAgRUlOQV9MT0dfQ1JJVCgiY291bGQgbm90IGFsbG9j
YXRlIEV3a19WaWV3X1ByaXZhdGVfRGF0YSIpOwogICAgICAgICByZXR1cm4gMDsKQEAgLTQ5OCw2
ICs1MTUsNyBAQCBFaW5hX0Jvb2wgZXdrX3ZpZXdfc21hcnRfY2xhc3NfaW5pdChFd2tfVmlld19T
bWFydF9DbGFzcyogYXBpKQogICAgIGFwaS0+bW91c2VfbW92ZSA9IF9ld2tfdmlld19zbWFydF9t
b3VzZV9tb3ZlOwogICAgIGFwaS0+a2V5X2Rvd24gPSBfZXdrX3ZpZXdfc21hcnRfa2V5X2Rvd247
CiAgICAgYXBpLT5rZXlfdXAgPSBfZXdrX3ZpZXdfc21hcnRfa2V5X3VwOworICAgIGFwaS0+aW5w
dXRfcGlja2VyX3Nob3cgPSBfZXdrX3ZpZXdfaW5wdXRfcGlja2VyX3Nob3c7CiAKICAgICByZXR1
cm4gdHJ1ZTsKIH0KQEAgLTEwOTAsMyArMTEwOCw1NyBAQCBFaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0
dGluZ19lbmNvZGluZ19jdXN0b21fc2V0KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBjb25zdCBjaGFy
KgogCiAgICAgcmV0dXJuIHRydWU7CiB9CisKK3ZvaWQgZXdrX3ZpZXdfaW5wdXRfcGlja2VyX3Jl
cXVlc3QoRXZhc19PYmplY3QqIGV3a1ZpZXcsIEV3a19JbnB1dF9UeXBlIGlucHV0VHlwZSwgY29u
c3QgU3RyaW5nJiBpbnB1dFZhbHVlKQoreworICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4o
ZXdrVmlldywgc21hcnREYXRhKTsKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTihzbWFy
dERhdGEtPmFwaSk7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oc21hcnREYXRhLT5h
cGktPmlucHV0X3BpY2tlcl9zaG93KTsKKworICAgIHNtYXJ0RGF0YS0+YXBpLT5pbnB1dF9waWNr
ZXJfc2hvdyhzbWFydERhdGEsIGlucHV0VHlwZSwgaW5wdXRWYWx1ZS51dGY4KCkuZGF0YSgpKTsK
K30KKworI2lmIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9SKQordm9pZCBld2tfdmlld19jb2xvcl9j
aG9vc2VyX3JlcXVlc3QoRXZhc19PYmplY3QqIGV3a1ZpZXcsIFdlYktpdDo6V2ViQ29sb3JDaG9v
c2VyUHJveHlFZmwqIGNvbG9yQ2hvb3NlciwgY29uc3QgU3RyaW5nJiBpbnB1dFZhbHVlKQorewor
ICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhKTsKKyAgICBF
V0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBwcml2KTsKKworICAgIHByaXYt
PmNvbG9yQ2hvb3NlciA9IGNvbG9yQ2hvb3NlcjsKKworICAgIGV3a192aWV3X2lucHV0X3BpY2tl
cl9yZXF1ZXN0KGV3a1ZpZXcsIEVXS19JTlBVVF9UWVBFX0NPTE9SLCBpbnB1dFZhbHVlKTsKK30K
KyNlbmRpZiAvLyBFTkFCTEUoSU5QVVRfVFlQRV9DT0xPUikKKworRWluYV9Cb29sIGV3a192aWV3
X2NvbG9yX2Nob29zZXJfY29sb3Jfc2V0KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBjb25zdCBjaGFy
KiBjb2xvcikKK3sKKyNpZiBFTkFCTEUoSU5QVVRfVFlQRV9DT0xPUikKKyAgICBFV0tfVklFV19T
RF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwgRUlOQV9GQUxTRSk7CisgICAgRVdL
X1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgcHJpdiwgRUlOQV9GQUxTRSk7CisK
KyAgICBpZiAoIXByaXYtPmNvbG9yQ2hvb3NlcikKKyAgICAgICAgcmV0dXJuIEVJTkFfRkFMU0U7
CisKKyAgICBwcml2LT5jb2xvckNob29zZXItPnNldFNlbGVjdGVkQ29sb3IoQ29sb3IoY29sb3Ip
KTsKKworICAgIHJldHVybiBFSU5BX1RSVUU7CisjZW5kaWYgLy8gRU5BQkxFKElOUFVUX1RZUEVf
Q09MT1IpCisgICAgcmV0dXJuIEVJTkFfRkFMU0U7Cit9CisKK0VpbmFfQm9vbCBld2tfdmlld19j
b2xvcl9jaG9vc2VyX2Nsb3NlKEV2YXNfT2JqZWN0KiBld2tWaWV3KQoreworI2lmIEVOQUJMRShJ
TlBVVF9UWVBFX0NPTE9SKQorICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywg
c21hcnREYXRhLCBFSU5BX0ZBTFNFKTsKKyAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4o
c21hcnREYXRhLCBwcml2LCBFSU5BX0ZBTFNFKTsKKworICAgIGlmICghcHJpdi0+Y29sb3JDaG9v
c2VyKQorICAgICAgICByZXR1cm4gRUlOQV9GQUxTRTsKKworICAgIHByaXYtPmNvbG9yQ2hvb3Nl
ci0+ZW5kQ2hvb3NlcigpOworICAgIHByaXYtPmNvbG9yQ2hvb3NlciA9IDA7CisKKyAgICByZXR1
cm4gRUlOQV9UUlVFOworI2VuZGlmIC8vIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9SKQorICAgIHJl
dHVybiBFSU5BX0ZBTFNFOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9lZmwvZXdrX3ZpZXcuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3
a192aWV3LmgKaW5kZXggNWQ2OWRmNC4uOWQwZjUyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5oCkBAIC02Nyw2ICs2NywyNyBAQCBleHRlcm4gIkMiIHsK
IHR5cGVkZWYgc3RydWN0IF9Fd2tfVmlld19TbWFydF9EYXRhIEV3a19WaWV3X1NtYXJ0X0RhdGE7
CiB0eXBlZGVmIHN0cnVjdCBfRXdrX1ZpZXdfU21hcnRfQ2xhc3MgRXdrX1ZpZXdfU21hcnRfQ2xh
c3M7CiAKKy8qKgorICogXGVudW0gICAgRXdrX0lucHV0X1R5cGUKKyAqIEBicmllZiAgIFByb3Zp
ZGVzIHR5cGUgb2YgaW5wdXQgZWxlbWVudAorICovCitlbnVtIF9Fd2tfSW5wdXRfVHlwZSB7Cisg
ICAgRVdLX0lOUFVUX1RZUEVfVEVMRVBIT05FID0gMSwgCisgICAgRVdLX0lOUFVUX1RZUEVfTlVN
QkVSLAorICAgIEVXS19JTlBVVF9UWVBFX0VNQUlMLAorICAgIEVXS19JTlBVVF9UWVBFX1VSTCwK
KyAgICBFV0tfSU5QVVRfVFlQRV9QQVNTV09SRCwKKyAgICBFV0tfSU5QVVRfVFlQRV9DT0xPUiwK
KyAgICBFV0tfSU5QVVRfVFlQRV9EQVRFLAorICAgIEVXS19JTlBVVF9UWVBFX0RBVEVUSU1FLAor
ICAgIEVXS19JTlBVVF9UWVBFX0RBVEVUSU1FTE9DQUwsCisgICAgRVdLX0lOUFVUX1RZUEVfTU9O
VEgsCisgICAgRVdLX0lOUFVUX1RZUEVfVElNRSwKKyAgICBFV0tfSU5QVVRfVFlQRV9XRUVLCit9
OworLyoqIENyZWF0ZXMgYSB0eXBlIG5hbWUgZm9yIF9Fd2tfSW5wdXRfVHlwZV9Fd2tfSW5wdXRf
VHlwZSAqLwordHlwZWRlZiBlbnVtIF9Fd2tfSW5wdXRfVHlwZSBFd2tfSW5wdXRfVHlwZTsKKwog
Ly8vIEV3ayB2aWV3J3MgY2xhc3MsIHRvIGJlIG92ZXJyaWRkZW4gYnkgc3ViLWNsYXNzZXMuCiBz
dHJ1Y3QgX0V3a19WaWV3X1NtYXJ0X0NsYXNzIHsKICAgICBFdmFzX1NtYXJ0X0NsYXNzIHNjOyAv
Kio8IGFsbCBidXQgJ2RhdGEnIGlzIGZyZWUgdG8gYmUgY2hhbmdlZC4gKi8KQEAgLTgzLDYgKzEw
NCw5IEBAIHN0cnVjdCBfRXdrX1ZpZXdfU21hcnRfQ2xhc3MgewogICAgIEVpbmFfQm9vbCAoKm1v
dXNlX21vdmUpKEV3a19WaWV3X1NtYXJ0X0RhdGEgKnNkLCBjb25zdCBFdmFzX0V2ZW50X01vdXNl
X01vdmUgKmV2KTsKICAgICBFaW5hX0Jvb2wgKCprZXlfZG93bikoRXdrX1ZpZXdfU21hcnRfRGF0
YSAqc2QsIGNvbnN0IEV2YXNfRXZlbnRfS2V5X0Rvd24gKmV2KTsKICAgICBFaW5hX0Jvb2wgKCpr
ZXlfdXApKEV3a19WaWV3X1NtYXJ0X0RhdGEgKnNkLCBjb25zdCBFdmFzX0V2ZW50X0tleV9VcCAq
ZXYpOworCisgICAgLy8gU2hvd3MgaW5wdXQgcGlja2VyIGJhc2VkIG9uIGlucHV0IHR5cGUgd2l0
aCBpbml0aWFsIHZhbHVlLgorICAgIEVpbmFfQm9vbCAoKmlucHV0X3BpY2tlcl9zaG93KShFd2tf
Vmlld19TbWFydF9EYXRhICpzZCwgRXdrX0lucHV0X1R5cGUgaW5wdXRfdHlwZSwgY29uc3QgY2hh
ciAqaW5wdXRfdmFsdWUpOwogfTsKIAogLyoqCkBAIC0xMDEsNyArMTI1LDcgQEAgc3RydWN0IF9F
d2tfVmlld19TbWFydF9DbGFzcyB7CiAgKiBAc2VlIEVXS19WSUVXX1NNQVJUX0NMQVNTX0lOSVRf
VkVSU0lPTgogICogQHNlZSBFV0tfVklFV19TTUFSVF9DTEFTU19JTklUX05BTUVfVkVSU0lPTgog
ICovCi0jZGVmaW5lIEVXS19WSUVXX1NNQVJUX0NMQVNTX0lOSVQoc21hcnRfY2xhc3NfaW5pdCkg
e3NtYXJ0X2NsYXNzX2luaXQsIEVXS19WSUVXX1NNQVJUX0NMQVNTX1ZFUlNJT04sIDAsIDAsIDAs
IDAsIDAsIDAsIDAsIDB9CisjZGVmaW5lIEVXS19WSUVXX1NNQVJUX0NMQVNTX0lOSVQoc21hcnRf
Y2xhc3NfaW5pdCkge3NtYXJ0X2NsYXNzX2luaXQsIEVXS19WSUVXX1NNQVJUX0NMQVNTX1ZFUlNJ
T04sIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDB9CiAKIC8qKgogICogSW5pdGlhbGl6ZXIgdG8g
emVybyBhIHdob2xlIEV3a19WaWV3X1NtYXJ0X0NsYXNzIHN0cnVjdHVyZS4KQEAgLTQ0MSw2ICs0
NjUsMjUgQEAgRUFQSSBjb25zdCBjaGFyICAqZXdrX3ZpZXdfc2V0dGluZ19lbmNvZGluZ19jdXN0
b21fZ2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpvKTsKICAqLwogRUFQSSBFaW5hX0Jvb2wgICAgZXdr
X3ZpZXdfc2V0dGluZ19lbmNvZGluZ19jdXN0b21fc2V0KEV2YXNfT2JqZWN0ICpvLCBjb25zdCBj
aGFyICplbmNvZGluZyk7CiAKKy8qKgorICogU2V0cyB0aGUgY29sb3IgdmFsdWUgb2YgY29sb3Ig
Y2hvb3NlcgorICoKKyAqIEBwYXJhbSBvIHZpZXcgb2JqZWN0IGNvbnRhaW5zIGNvbG9yIGNob29z
ZXIKKyAqIEBwYXJhbSBjb2xvciB0aGUgY29sb3IgdmFsdWUgdG8gYmUgc2V0CisgKgorICogQHJl
dHVybiBAYyBFSU5BX1RSVUUgb24gc3VjY2VzcyBAYyBFSU5BX0ZBTFNFIG90aGVyd2lzZQorICov
CitFQVBJIEVpbmFfQm9vbCBld2tfdmlld19jb2xvcl9jaG9vc2VyX2NvbG9yX3NldChFdmFzX09i
amVjdCAqbywgY29uc3QgY2hhciAqY29sb3IpOworCisvKioKKyAqIENsb3NlcyBjb2xvciBjaG9v
c2VyCisgKgorICogQHBhcmFtIG8gdmlldyBvYmplY3QgY29udGFpbnMgY29sb3IgY2hvb3Nlcgor
ICoKKyAqIEByZXR1cm4gQGMgRUlOQV9UUlVFIG9uIHN1Y2Nlc3MgQGMgRUlOQV9GQUxTRSBvdGhl
cndpc2UKKyAqLworRUFQSSBFaW5hX0Jvb2wgZXdrX3ZpZXdfY29sb3JfY2hvb3Nlcl9jbG9zZShF
dmFzX09iamVjdCAqbyk7CisKICNpZmRlZiBfX2NwbHVzcGx1cwogfQogI2VuZGlmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlld19wcml2YXRlLmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlld19wcml2YXRlLmgKaW5k
ZXggYTBhNjc5MC4uYzM2OTM3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9lZmwvZXdrX3ZpZXdfcHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZWZsL2V3a192aWV3X3ByaXZhdGUuaApAQCAtMjIsOSArMjIsMTQgQEAKICNkZWZpbmUg
ZXdrX3ZpZXdfcHJpdmF0ZV9oCiAKICNpbmNsdWRlICJXZWJQYWdlUHJveHkuaCIKKyNpbmNsdWRl
ICJld2tfdmlldy5oIgogI2luY2x1ZGUgPEV2YXMuaD4KICNpbmNsdWRlIDxXZWJLaXQyL1dLQmFz
ZS5oPgogCisjaWYgRU5BQkxFKElOUFVUX1RZUEVfQ09MT1IpCisjaW5jbHVkZSAiV2ViQ29sb3JD
aG9vc2VyUHJveHlFZmwuaCIKKyNlbmRpZiAvLyBFTkFCTEUoSU5QVVRfVFlQRV9DT0xPUikKKwog
bmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQ3Vyc29yOwogY2xhc3MgSW50UmVjdDsKQEAgLTcy
LDQgKzc3LDkgQEAgdm9pZCBld2tfdmlld19pbnRlbnRfc2VydmljZV9yZWdpc3RlcihFdmFzX09i
amVjdCogZXdrVmlldywgY29uc3QgRXdrX0ludGVudF9TZXIKIAogV2ViS2l0OjpXZWJQYWdlUHJv
eHkqIGV3a192aWV3X3BhZ2VfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBld2tWaWV3KTsKIAordm9p
ZCBld2tfdmlld19pbnB1dF9waWNrZXJfcmVxdWVzdChFdmFzX09iamVjdCogZXdrVmlldywgRXdr
X0lucHV0X1R5cGUgaW5wdXRUeXBlLCBjb25zdCBTdHJpbmcmIGlucHV0VmFsdWUpOworI2lmIEVO
QUJMRShJTlBVVF9UWVBFX0NPTE9SKQordm9pZCBld2tfdmlld19jb2xvcl9jaG9vc2VyX3JlcXVl
c3QoRXZhc19PYmplY3QqIGV3a1ZpZXcsIFdlYktpdDo6V2ViQ29sb3JDaG9vc2VyUHJveHlFZmwq
IGNvbG9yQ2hvb3NlciwgY29uc3QgU3RyaW5nJiBpbnB1dFZhbHVlKTsKKyNlbmRpZiAvLyBFTkFC
TEUoSU5QVVRfVFlQRV9DT0xPUikKKwogI2VuZGlmIC8vIGV3a192aWV3X3ByaXZhdGVfaApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJDb2xvckNob29zZXJQcm94
eUVmbC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYkNvbG9yQ2hvb3NlclBy
b3h5RWZsLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jOWVkOTYxCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJDb2xvckNo
b29zZXJQcm94eUVmbC5jcHAKQEAgLTAsMCArMSw1OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYkNvbG9yQ2hvb3NlclByb3h5RWZsLmgi
CisKKyNpZiBFTkFCTEUoSU5QVVRfVFlQRV9DT0xPUikKKworI2luY2x1ZGUgImV3a192aWV3X3By
aXZhdGUuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK1dlYkNvbG9yQ2hvb3NlclByb3h5RWZs
OjpXZWJDb2xvckNob29zZXJQcm94eUVmbChFdmFzX09iamVjdCogd2ViVmlldywgV2ViQ29sb3JD
aG9vc2VyUHJveHk6OkNsaWVudCogY2xpZW50LCBjb25zdCBXZWJDb3JlOjpDb2xvciYgY29sb3Ip
CisgICAgOiBXZWJDb2xvckNob29zZXJQcm94eShjbGllbnQpCit7CisgICAgZXdrX3ZpZXdfY29s
b3JfY2hvb3Nlcl9yZXF1ZXN0KHdlYlZpZXcsIHRoaXMsIGNvbG9yLnNlcmlhbGl6ZWQoKSk7Cit9
CisKK1dlYkNvbG9yQ2hvb3NlclByb3h5RWZsOjp+V2ViQ29sb3JDaG9vc2VyUHJveHlFZmwoKQor
eworfQorCit2b2lkIFdlYkNvbG9yQ2hvb3NlclByb3h5RWZsOjplbmRDaG9vc2VyKCkKK3sKKyAg
ICBpZiAobV9jbGllbnQpCisgICAgICAgIG1fY2xpZW50LT5kaWRFbmRDb2xvckNob29zZXIoKTsK
K30KKwordm9pZCBXZWJDb2xvckNob29zZXJQcm94eUVmbDo6c2V0U2VsZWN0ZWRDb2xvcihjb25z
dCBXZWJDb3JlOjpDb2xvciYgY29sb3IpCit7CisgICAgaWYgKG1fY2xpZW50KQorICAgICAgICBt
X2NsaWVudC0+ZGlkQ2hvb3NlQ29sb3IoY29sb3IpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKKworI2VuZGlmIC8vIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9SKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJDb2xvckNob29zZXJQcm94eUVmbC5oIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJDb2xvckNob29zZXJQcm94eUVmbC5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEwN2EzZDEKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYkNvbG9yQ2hvb3NlclByb3h5RWZsLmgK
QEAgLTAsMCArMSw1OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBTYW1zdW5nIEVsZWN0
cm9uaWNzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJDb2xvckNo
b29zZXJQcm94eUVmbF9oCisjZGVmaW5lIFdlYkNvbG9yQ2hvb3NlclByb3h5RWZsX2gKKworI2lm
IEVOQUJMRShJTlBVVF9UWVBFX0NPTE9SKQorCisjaW5jbHVkZSAiQ29sb3IuaCIKKyNpbmNsdWRl
ICJXZWJDb2xvckNob29zZXJQcm94eS5oIgorCit0eXBlZGVmIHN0cnVjdCBfRXZhc19PYmplY3Qg
RXZhc19PYmplY3Q7CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJQYWdlUHJveHk7
CisKK2NsYXNzIFdlYkNvbG9yQ2hvb3NlclByb3h5RWZsIDogcHVibGljIFdlYkNvbG9yQ2hvb3Nl
clByb3h5IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJDb2xvckNob29zZXJQ
cm94eUVmbD4gY3JlYXRlKEV2YXNfT2JqZWN0KiB3ZWJWaWV3LCBXZWJDb2xvckNob29zZXJQcm94
eTo6Q2xpZW50KiBjbGllbnQsIGNvbnN0IFdlYkNvcmU6OkNvbG9yJiBjb2xvcikKKyAgICB7Cisg
ICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2ViQ29sb3JDaG9vc2VyUHJveHlFZmwod2ViVmll
dywgY2xpZW50LCBjb2xvcikpOworICAgIH0KKyAgICB2aXJ0dWFsIH5XZWJDb2xvckNob29zZXJQ
cm94eUVmbCgpOworCisgICAgdmlydHVhbCB2b2lkIGVuZENob29zZXIoKTsKKyAgICB2aXJ0dWFs
IHZvaWQgc2V0U2VsZWN0ZWRDb2xvcihjb25zdCBXZWJDb3JlOjpDb2xvciYpOworCitwcml2YXRl
OgorICAgIFdlYkNvbG9yQ2hvb3NlclByb3h5RWZsKEV2YXNfT2JqZWN0KiwgV2ViQ29sb3JDaG9v
c2VyUHJveHk6OkNsaWVudCosIGNvbnN0IFdlYkNvcmU6OkNvbG9yJik7Cit9OworCit9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9SKQorCisj
ZW5kaWYgLy8gV2ViQ29sb3JDaG9vc2VyUHJveHlFZmxfaAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>154474</attachid>
            <date>2012-07-25 16:37:24 -0700</date>
            <delta_ts>2012-07-26 00:48:40 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>14989</size>
            <attacher name="KwangYong Choi">ky0.choi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCBkY2Q4N2Y1Li42MDkwNjlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDEg
QEAKKzIwMTItMDctMjUgIEt3YW5nWW9uZyBDaG9pICA8a3kwLmNob2lAc2Ftc3VuZy5jb20+CisK
KyAgICAgICAgW0VGTF1bV0syXSBJbXBsZW1lbnRlZCBjb2xvciBjaG9vc2VyIHByb3h5IGFuZCBp
bnB1dCBwaWNrZXIgaW50ZXJmYWNlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD05MTgzMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEltcGxlbWVudGVkIGNvbG9yIGNob29zZXIgcHJveHkgYW5kIGlucHV0IHBp
Y2tlciBpbnRlcmZhY2UgZm9yIEVGTC4KKyAgICAgICAgSW5wdXQgcGlja2VyIGludGVyZmFjZSBj
YW4gYmUgdXNlZCBmb3IgZ2VuZXJhbCB1c2Ugb2YgYWxsIHRoZSBpbnB1dAorICAgICAgICB0eXBl
cyBpbmNsdWRpbmcgY29sb3IgaW5wdXQgdHlwZS4KKworICAgICAgICBUaGUgZXh0ZXJuYWwgYXBw
bGljYXRpb24gc2hvdWxkIGltcGxlbWVudCBpbnB1dCBwaWNrZXIgYnkgb3ZlcnJpZGluZworICAg
ICAgICBzbWFydCBjbGFzcyBmdW5jdGlvbi4KKworICAgICAgICAqIFBsYXRmb3JtRWZsLmNtYWtl
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL1BhZ2VDbGllbnRJbXBsLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OmNyZWF0ZUNvbG9yQ2hvb3NlclByb3h5KToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5jcHA6CisgICAgICAgIChfRXdrX1Zp
ZXdfUHJpdmF0ZV9EYXRhKToKKyAgICAgICAgKF9ld2tfdmlld19wcml2X25ldyk6CisgICAgICAg
IChld2tfdmlld19zbWFydF9jbGFzc19pbml0KToKKyAgICAgICAgKGV3a192aWV3X2lucHV0X3Bp
Y2tlcl9yZXF1ZXN0KTogUmVxdWVzdHMgaW5wdXQgcGlja2VyLgorICAgICAgICAoZXdrX3ZpZXdf
Y29sb3JfY2hvb3Nlcl9yZXF1ZXN0KTogUmVxdWVzdHMgY29sb3IgcGlja2VyLgorICAgICAgICAo
ZXdrX3ZpZXdfY29sb3JfY2hvb3Nlcl9jb2xvcl9zZXQpOiBTZXRzIHRoZSBjb2xvciBieSBjYWxs
aW5nIFdlYkNvbG9yQ2hvb3NlclByb3h5RWZsOjpzZXRTZWxlY3RlZENvbG9yLgorICAgICAgICAo
ZXdrX3ZpZXdfY29sb3JfY2hvb3Nlcl9jbG9zZSk6IENhbGxzIFdlYkNvbG9yQ2hvb3NlclByb3h5
RWZsOjplbmRDaG9vc2VyCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuaDoK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlld19wcml2YXRlLmg6CisgICAgICAg
ICogVUlQcm9jZXNzL2VmbC9XZWJDb2xvckNob29zZXJQcm94eUVmbC5jcHA6IEFkZGVkLgorICAg
ICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29sb3JDaG9vc2VyUHJveHlFZmw6
OldlYkNvbG9yQ2hvb3NlclByb3h5RWZsKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29sb3JDaG9v
c2VyUHJveHlFZmw6On5XZWJDb2xvckNob29zZXJQcm94eUVmbCk6CisgICAgICAgIChXZWJLaXQ6
OldlYkNvbG9yQ2hvb3NlclByb3h5RWZsOjplbmRDaG9vc2VyKToKKyAgICAgICAgKFdlYktpdDo6
V2ViQ29sb3JDaG9vc2VyUHJveHlFZmw6OnNldFNlbGVjdGVkQ29sb3IpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9lZmwvV2ViQ29sb3JDaG9vc2VyUHJveHlFZmwuaDogQWRkZWQuCisgICAgICAgIChX
ZWJLaXQpOgorICAgICAgICAoV2ViQ29sb3JDaG9vc2VyUHJveHlFZmwpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJDb2xvckNob29zZXJQcm94eUVmbDo6Y3JlYXRlKToKKwogMjAxMi0wNy0yNSAgUnl1
YW4gQ2hvaSAgPHJ5dWFuLmNob2lAc2Ftc3VuZy5jb20+CiAKICAgICAgICAgW0VGTF1bV0syXSBB
ZGQgZXdrX3ZpZXdfY3Vyc29yX3NldCB0byBjaGFuZ2UgY3Vyc29yLgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVm
bC5jbWFrZQppbmRleCA2NmFkMDM3Li45YmFjMzViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9QbGF0Zm9ybUVmbC5jbWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFr
ZQpAQCAtNTksNiArNTksNyBAQCBMSVNUKEFQUEVORCBXZWJLaXQyX1NPVVJDRVMKICAgICBVSVBy
b2Nlc3MvY2Fpcm8vQmFja2luZ1N0b3JlQ2Fpcm8uY3BwCiAKICAgICBVSVByb2Nlc3MvZWZsL1Rl
eHRDaGVja2VyRWZsLmNwcAorICAgIFVJUHJvY2Vzcy9lZmwvV2ViQ29sb3JDaG9vc2VyUHJveHlF
ZmwuY3BwCiAgICAgVUlQcm9jZXNzL2VmbC9XZWJDb250ZXh0RWZsLmNwcAogICAgIFVJUHJvY2Vz
cy9lZmwvV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eUVmbC5jcHAKICAgICBVSVByb2Nlc3MvZWZs
L1dlYkluc3BlY3RvclByb3h5RWZsLmNwcApAQCAtMTE0LDYgKzExNSw3IEBAIExJU1QoQVBQRU5E
IFdlYktpdDJfSU5DTFVERV9ESVJFQ1RPUklFUwogICAgICIke1dFQktJVDJfRElSfS9VSVByb2Nl
c3MvQVBJL0MvZWZsIgogICAgICIke1dFQktJVDJfRElSfS9VSVByb2Nlc3MvQVBJL0Mvc291cCIK
ICAgICAiJHtXRUJLSVQyX0RJUn0vVUlQcm9jZXNzL0FQSS9lZmwiCisgICAgIiR7V0VCS0lUMl9E
SVJ9L1VJUHJvY2Vzcy9lZmwiCiAgICAgIiR7V0VCS0lUMl9ESVJ9L1VJUHJvY2Vzcy9zb3VwIgog
ICAgICIke1dFQktJVDJfRElSfS9XZWJQcm9jZXNzL0Rvd25sb2Fkcy9zb3VwIgogICAgICIke1dF
QktJVDJfRElSfS9XZWJQcm9jZXNzL2VmbCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZWZsL1BhZ2VDbGllbnRJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZWZsL1BhZ2VDbGllbnRJbXBsLmNwcAppbmRleCAxMThlZGIxLi40M2Y5OWNmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9QYWdlQ2xpZW50SW1w
bC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvUGFnZUNsaWVudElt
cGwuY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiRHJhd2luZ0FyZWFQcm94eUltcGwu
aCIKICNpbmNsdWRlICJOYXRpdmVXZWJLZXlib2FyZEV2ZW50LmgiCiAjaW5jbHVkZSAiTm90SW1w
bGVtZW50ZWQuaCIKKyNpbmNsdWRlICJXZWJDb2xvckNob29zZXJQcm94eUVmbC5oIgogI2luY2x1
ZGUgIldlYkNvbnRleHQuaCIKICNpbmNsdWRlICJXZWJDb250ZXh0TWVudVByb3h5LmgiCiAjaW5j
bHVkZSAiV2ViUGFnZVByb3h5LmgiCkBAIC0yMDYsMTAgKzIwNyw5IEBAIFBhc3NSZWZQdHI8V2Vi
Q29udGV4dE1lbnVQcm94eT4gUGFnZUNsaWVudEltcGw6OmNyZWF0ZUNvbnRleHRNZW51UHJveHko
V2ViUGFnZVByCiB9CiAKICNpZiBFTkFCTEUoSU5QVVRfVFlQRV9DT0xPUikKLVBhc3NSZWZQdHI8
V2ViQ29sb3JDaG9vc2VyUHJveHk+IFBhZ2VDbGllbnRJbXBsOjpjcmVhdGVDb2xvckNob29zZXJQ
cm94eShXZWJQYWdlUHJveHkqLCBjb25zdCBXZWJDb3JlOjpDb2xvciYpCitQYXNzUmVmUHRyPFdl
YkNvbG9yQ2hvb3NlclByb3h5PiBQYWdlQ2xpZW50SW1wbDo6Y3JlYXRlQ29sb3JDaG9vc2VyUHJv
eHkoV2ViUGFnZVByb3h5KiBwYWdlLCBjb25zdCBXZWJDb3JlOjpDb2xvciYgaW5pdGlhbENvbG9y
KQogewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIFdl
YkNvbG9yQ2hvb3NlclByb3h5RWZsOjpjcmVhdGUobV92aWV3V2lkZ2V0LCBwYWdlLCBpbml0aWFs
Q29sb3IpOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZWZsL2V3a192aWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZs
L2V3a192aWV3LmNwcAppbmRleCA4NDQ4ZmQ2Li5mMTM1ZGExIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5jcHAKKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuY3BwCkBAIC02Niw2ICs2NiwxMCBAQCBzdHJ1
Y3QgX0V3a19WaWV3X1ByaXZhdGVfRGF0YSB7CiAgICAgYm9vbCBpc1VzaW5nRWNvcmVYOwogI2Vu
ZGlmCiAKKyNpZiBFTkFCTEUoSU5QVVRfVFlQRV9DT0xPUikKKyAgICBXZWJDb2xvckNob29zZXJQ
cm94eUVmbCogY29sb3JDaG9vc2VyOworI2VuZGlmCisKICAgICBfRXdrX1ZpZXdfUHJpdmF0ZV9E
YXRhKCkKICAgICAgICAgOiB1cmkoMCkKICAgICAgICAgLCB0aXRsZSgwKQpAQCAtMTA5MCwzICsx
MDk0LDU5IEBAIEVpbmFfQm9vbCBld2tfdmlld19zZXR0aW5nX2VuY29kaW5nX2N1c3RvbV9zZXQo
RXZhc19PYmplY3QqIGV3a1ZpZXcsIGNvbnN0IGNoYXIqCiAKICAgICByZXR1cm4gdHJ1ZTsKIH0K
Kwordm9pZCBld2tfdmlld19pbnB1dF9waWNrZXJfcmVxdWVzdChFdmFzX09iamVjdCogZXdrVmll
dywgRXdrX0lucHV0X1R5cGUgaW5wdXRUeXBlLCBjb25zdCBTdHJpbmcmIGlucHV0VmFsdWUpCit7
CisgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEpOworICAg
IEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKHNtYXJ0RGF0YS0+YXBpKTsKKyAgICBFSU5BX1NB
RkVUWV9PTl9OVUxMX1JFVFVSTihzbWFydERhdGEtPmFwaS0+aW5wdXRfcGlja2VyX3Nob3cpOwor
CisgICAgc21hcnREYXRhLT5hcGktPmlucHV0X3BpY2tlcl9zaG93KHNtYXJ0RGF0YSwgaW5wdXRU
eXBlLCBpbnB1dFZhbHVlLnV0ZjgoKS5kYXRhKCkpOworfQorCisjaWYgRU5BQkxFKElOUFVUX1RZ
UEVfQ09MT1IpCit2b2lkIGV3a192aWV3X2NvbG9yX2Nob29zZXJfcmVxdWVzdChFdmFzX09iamVj
dCogZXdrVmlldywgV2ViS2l0OjpXZWJDb2xvckNob29zZXJQcm94eUVmbCogY29sb3JDaG9vc2Vy
LCBjb25zdCBTdHJpbmcmIGlucHV0VmFsdWUpCit7CisgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JF
VFVSTihld2tWaWV3LCBzbWFydERhdGEpOworICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVS
TihzbWFydERhdGEsIHByaXYpOworCisgICAgcHJpdi0+Y29sb3JDaG9vc2VyID0gY29sb3JDaG9v
c2VyOworCisgICAgZXdrX3ZpZXdfaW5wdXRfcGlja2VyX3JlcXVlc3QoZXdrVmlldywgRVdLX0lO
UFVUX1RZUEVfQ09MT1IsIGlucHV0VmFsdWUpOworfQorI2VuZGlmCisKK0VpbmFfQm9vbCBld2tf
dmlld19jb2xvcl9jaG9vc2VyX2NvbG9yX3NldChFdmFzX09iamVjdCogZXdrVmlldywgY29uc3Qg
Y2hhciogY29sb3IpCit7CisjaWYgRU5BQkxFKElOUFVUX1RZUEVfQ09MT1IpCisgICAgRVdLX1ZJ
RVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEsIEVJTkFfRkFMU0UpOworICAg
IEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIHByaXYsIEVJTkFfRkFMU0Up
OworCisgICAgaWYgKCFwcml2LT5jb2xvckNob29zZXIpCisgICAgICAgIHJldHVybiBFSU5BX0ZB
TFNFOworCisgICAgcHJpdi0+Y29sb3JDaG9vc2VyLT5zZXRTZWxlY3RlZENvbG9yKENvbG9yKGNv
bG9yKSk7CisKKyAgICByZXR1cm4gRUlOQV9UUlVFOworI2Vsc2UKKyAgICByZXR1cm4gRUlOQV9G
QUxTRTsKKyNlbmRpZgorfQorCitFaW5hX0Jvb2wgZXdrX3ZpZXdfY29sb3JfY2hvb3Nlcl9jbG9z
ZShFdmFzX09iamVjdCogZXdrVmlldykKK3sKKyNpZiBFTkFCTEUoSU5QVVRfVFlQRV9DT0xPUikK
KyAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwgRUlOQV9G
QUxTRSk7CisgICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgcHJpdiwg
RUlOQV9GQUxTRSk7CisKKyAgICBpZiAoIXByaXYtPmNvbG9yQ2hvb3NlcikKKyAgICAgICAgcmV0
dXJuIEVJTkFfRkFMU0U7CisKKyAgICBwcml2LT5jb2xvckNob29zZXItPmVuZENob29zZXIoKTsK
KyAgICBwcml2LT5jb2xvckNob29zZXIgPSAwOworCisgICAgcmV0dXJuIEVJTkFfVFJVRTsKKyNl
bHNlCisgICAgcmV0dXJuIEVJTkFfRkFMU0U7CisjZW5kaWYKK30KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmggYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5oCmluZGV4IDVkNjlkZjQuLjlkMGY1MjggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmgKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuaApAQCAtNjcsNiArNjcs
MjcgQEAgZXh0ZXJuICJDIiB7CiB0eXBlZGVmIHN0cnVjdCBfRXdrX1ZpZXdfU21hcnRfRGF0YSBF
d2tfVmlld19TbWFydF9EYXRhOwogdHlwZWRlZiBzdHJ1Y3QgX0V3a19WaWV3X1NtYXJ0X0NsYXNz
IEV3a19WaWV3X1NtYXJ0X0NsYXNzOwogCisvKioKKyAqIFxlbnVtICAgIEV3a19JbnB1dF9UeXBl
CisgKiBAYnJpZWYgICBQcm92aWRlcyB0eXBlIG9mIGlucHV0IGVsZW1lbnQKKyAqLworZW51bSBf
RXdrX0lucHV0X1R5cGUgeworICAgIEVXS19JTlBVVF9UWVBFX1RFTEVQSE9ORSA9IDEsIAorICAg
IEVXS19JTlBVVF9UWVBFX05VTUJFUiwKKyAgICBFV0tfSU5QVVRfVFlQRV9FTUFJTCwKKyAgICBF
V0tfSU5QVVRfVFlQRV9VUkwsCisgICAgRVdLX0lOUFVUX1RZUEVfUEFTU1dPUkQsCisgICAgRVdL
X0lOUFVUX1RZUEVfQ09MT1IsCisgICAgRVdLX0lOUFVUX1RZUEVfREFURSwKKyAgICBFV0tfSU5Q
VVRfVFlQRV9EQVRFVElNRSwKKyAgICBFV0tfSU5QVVRfVFlQRV9EQVRFVElNRUxPQ0FMLAorICAg
IEVXS19JTlBVVF9UWVBFX01PTlRILAorICAgIEVXS19JTlBVVF9UWVBFX1RJTUUsCisgICAgRVdL
X0lOUFVUX1RZUEVfV0VFSworfTsKKy8qKiBDcmVhdGVzIGEgdHlwZSBuYW1lIGZvciBfRXdrX0lu
cHV0X1R5cGVfRXdrX0lucHV0X1R5cGUgKi8KK3R5cGVkZWYgZW51bSBfRXdrX0lucHV0X1R5cGUg
RXdrX0lucHV0X1R5cGU7CisKIC8vLyBFd2sgdmlldydzIGNsYXNzLCB0byBiZSBvdmVycmlkZGVu
IGJ5IHN1Yi1jbGFzc2VzLgogc3RydWN0IF9Fd2tfVmlld19TbWFydF9DbGFzcyB7CiAgICAgRXZh
c19TbWFydF9DbGFzcyBzYzsgLyoqPCBhbGwgYnV0ICdkYXRhJyBpcyBmcmVlIHRvIGJlIGNoYW5n
ZWQuICovCkBAIC04Myw2ICsxMDQsOSBAQCBzdHJ1Y3QgX0V3a19WaWV3X1NtYXJ0X0NsYXNzIHsK
ICAgICBFaW5hX0Jvb2wgKCptb3VzZV9tb3ZlKShFd2tfVmlld19TbWFydF9EYXRhICpzZCwgY29u
c3QgRXZhc19FdmVudF9Nb3VzZV9Nb3ZlICpldik7CiAgICAgRWluYV9Cb29sICgqa2V5X2Rvd24p
KEV3a19WaWV3X1NtYXJ0X0RhdGEgKnNkLCBjb25zdCBFdmFzX0V2ZW50X0tleV9Eb3duICpldik7
CiAgICAgRWluYV9Cb29sICgqa2V5X3VwKShFd2tfVmlld19TbWFydF9EYXRhICpzZCwgY29uc3Qg
RXZhc19FdmVudF9LZXlfVXAgKmV2KTsKKworICAgIC8vIFNob3dzIGlucHV0IHBpY2tlciBiYXNl
ZCBvbiBpbnB1dCB0eXBlIHdpdGggaW5pdGlhbCB2YWx1ZS4KKyAgICBFaW5hX0Jvb2wgKCppbnB1
dF9waWNrZXJfc2hvdykoRXdrX1ZpZXdfU21hcnRfRGF0YSAqc2QsIEV3a19JbnB1dF9UeXBlIGlu
cHV0X3R5cGUsIGNvbnN0IGNoYXIgKmlucHV0X3ZhbHVlKTsKIH07CiAKIC8qKgpAQCAtMTAxLDcg
KzEyNSw3IEBAIHN0cnVjdCBfRXdrX1ZpZXdfU21hcnRfQ2xhc3MgewogICogQHNlZSBFV0tfVklF
V19TTUFSVF9DTEFTU19JTklUX1ZFUlNJT04KICAqIEBzZWUgRVdLX1ZJRVdfU01BUlRfQ0xBU1Nf
SU5JVF9OQU1FX1ZFUlNJT04KICAqLwotI2RlZmluZSBFV0tfVklFV19TTUFSVF9DTEFTU19JTklU
KHNtYXJ0X2NsYXNzX2luaXQpIHtzbWFydF9jbGFzc19pbml0LCBFV0tfVklFV19TTUFSVF9DTEFT
U19WRVJTSU9OLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwfQorI2RlZmluZSBFV0tfVklFV19TTUFS
VF9DTEFTU19JTklUKHNtYXJ0X2NsYXNzX2luaXQpIHtzbWFydF9jbGFzc19pbml0LCBFV0tfVklF
V19TTUFSVF9DTEFTU19WRVJTSU9OLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwfQogCiAvKioK
ICAqIEluaXRpYWxpemVyIHRvIHplcm8gYSB3aG9sZSBFd2tfVmlld19TbWFydF9DbGFzcyBzdHJ1
Y3R1cmUuCkBAIC00NDEsNiArNDY1LDI1IEBAIEVBUEkgY29uc3QgY2hhciAgKmV3a192aWV3X3Nl
dHRpbmdfZW5jb2RpbmdfY3VzdG9tX2dldChjb25zdCBFdmFzX09iamVjdCAqbyk7CiAgKi8KIEVB
UEkgRWluYV9Cb29sICAgIGV3a192aWV3X3NldHRpbmdfZW5jb2RpbmdfY3VzdG9tX3NldChFdmFz
X09iamVjdCAqbywgY29uc3QgY2hhciAqZW5jb2RpbmcpOwogCisvKioKKyAqIFNldHMgdGhlIGNv
bG9yIHZhbHVlIG9mIGNvbG9yIGNob29zZXIKKyAqCisgKiBAcGFyYW0gbyB2aWV3IG9iamVjdCBj
b250YWlucyBjb2xvciBjaG9vc2VyCisgKiBAcGFyYW0gY29sb3IgdGhlIGNvbG9yIHZhbHVlIHRv
IGJlIHNldAorICoKKyAqIEByZXR1cm4gQGMgRUlOQV9UUlVFIG9uIHN1Y2Nlc3MgQGMgRUlOQV9G
QUxTRSBvdGhlcndpc2UKKyAqLworRUFQSSBFaW5hX0Jvb2wgZXdrX3ZpZXdfY29sb3JfY2hvb3Nl
cl9jb2xvcl9zZXQoRXZhc19PYmplY3QgKm8sIGNvbnN0IGNoYXIgKmNvbG9yKTsKKworLyoqCisg
KiBDbG9zZXMgY29sb3IgY2hvb3NlcgorICoKKyAqIEBwYXJhbSBvIHZpZXcgb2JqZWN0IGNvbnRh
aW5zIGNvbG9yIGNob29zZXIKKyAqCisgKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBvbiBzdWNjZXNz
IEBjIEVJTkFfRkFMU0Ugb3RoZXJ3aXNlCisgKi8KK0VBUEkgRWluYV9Cb29sIGV3a192aWV3X2Nv
bG9yX2Nob29zZXJfY2xvc2UoRXZhc19PYmplY3QgKm8pOworCiAjaWZkZWYgX19jcGx1c3BsdXMK
IH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwv
ZXdrX3ZpZXdfcHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdr
X3ZpZXdfcHJpdmF0ZS5oCmluZGV4IGEwYTY3OTAuLjJhNzkwOTkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3X3ByaXZhdGUuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlld19wcml2YXRlLmgKQEAgLTIyLDkg
KzIyLDE0IEBACiAjZGVmaW5lIGV3a192aWV3X3ByaXZhdGVfaAogCiAjaW5jbHVkZSAiV2ViUGFn
ZVByb3h5LmgiCisjaW5jbHVkZSAiZXdrX3ZpZXcuaCIKICNpbmNsdWRlIDxFdmFzLmg+CiAjaW5j
bHVkZSA8V2ViS2l0Mi9XS0Jhc2UuaD4KIAorI2lmIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9SKQor
I2luY2x1ZGUgIldlYkNvbG9yQ2hvb3NlclByb3h5RWZsLmgiCisjZW5kaWYKKwogbmFtZXNwYWNl
IFdlYkNvcmUgewogY2xhc3MgQ3Vyc29yOwogY2xhc3MgSW50UmVjdDsKQEAgLTcyLDQgKzc3LDkg
QEAgdm9pZCBld2tfdmlld19pbnRlbnRfc2VydmljZV9yZWdpc3RlcihFdmFzX09iamVjdCogZXdr
VmlldywgY29uc3QgRXdrX0ludGVudF9TZXIKIAogV2ViS2l0OjpXZWJQYWdlUHJveHkqIGV3a192
aWV3X3BhZ2VfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBld2tWaWV3KTsKIAordm9pZCBld2tfdmll
d19pbnB1dF9waWNrZXJfcmVxdWVzdChFdmFzX09iamVjdCogZXdrVmlldywgRXdrX0lucHV0X1R5
cGUgaW5wdXRUeXBlLCBjb25zdCBTdHJpbmcmIGlucHV0VmFsdWUpOworI2lmIEVOQUJMRShJTlBV
VF9UWVBFX0NPTE9SKQordm9pZCBld2tfdmlld19jb2xvcl9jaG9vc2VyX3JlcXVlc3QoRXZhc19P
YmplY3QqIGV3a1ZpZXcsIFdlYktpdDo6V2ViQ29sb3JDaG9vc2VyUHJveHlFZmwqIGNvbG9yQ2hv
b3NlciwgY29uc3QgU3RyaW5nJiBpbnB1dFZhbHVlKTsKKyNlbmRpZgorCiAjZW5kaWYgLy8gZXdr
X3ZpZXdfcHJpdmF0ZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZs
L1dlYkNvbG9yQ2hvb3NlclByb3h5RWZsLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9l
ZmwvV2ViQ29sb3JDaG9vc2VyUHJveHlFZmwuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAuLmM5ZWQ5NjEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvZWZsL1dlYkNvbG9yQ2hvb3NlclByb3h5RWZsLmNwcApAQCAtMCwwICsxLDU5IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDEyIFNhbXN1bmcgRWxlY3Ryb25pY3MuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViQ29s
b3JDaG9vc2VyUHJveHlFZmwuaCIKKworI2lmIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9SKQorCisj
aW5jbHVkZSAiZXdrX3ZpZXdfcHJpdmF0ZS5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworV2Vi
Q29sb3JDaG9vc2VyUHJveHlFZmw6OldlYkNvbG9yQ2hvb3NlclByb3h5RWZsKEV2YXNfT2JqZWN0
KiB3ZWJWaWV3LCBXZWJDb2xvckNob29zZXJQcm94eTo6Q2xpZW50KiBjbGllbnQsIGNvbnN0IFdl
YkNvcmU6OkNvbG9yJiBjb2xvcikKKyAgICA6IFdlYkNvbG9yQ2hvb3NlclByb3h5KGNsaWVudCkK
K3sKKyAgICBld2tfdmlld19jb2xvcl9jaG9vc2VyX3JlcXVlc3Qod2ViVmlldywgdGhpcywgY29s
b3Iuc2VyaWFsaXplZCgpKTsKK30KKworV2ViQ29sb3JDaG9vc2VyUHJveHlFZmw6On5XZWJDb2xv
ckNob29zZXJQcm94eUVmbCgpCit7Cit9CisKK3ZvaWQgV2ViQ29sb3JDaG9vc2VyUHJveHlFZmw6
OmVuZENob29zZXIoKQoreworICAgIGlmIChtX2NsaWVudCkKKyAgICAgICAgbV9jbGllbnQtPmRp
ZEVuZENvbG9yQ2hvb3NlcigpOworfQorCit2b2lkIFdlYkNvbG9yQ2hvb3NlclByb3h5RWZsOjpz
ZXRTZWxlY3RlZENvbG9yKGNvbnN0IFdlYkNvcmU6OkNvbG9yJiBjb2xvcikKK3sKKyAgICBpZiAo
bV9jbGllbnQpCisgICAgICAgIG1fY2xpZW50LT5kaWRDaG9vc2VDb2xvcihjb2xvcik7Cit9CisK
K30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKElOUFVUX1RZUEVfQ09M
T1IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYkNvbG9yQ2hv
b3NlclByb3h5RWZsLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYkNvbG9yQ2hv
b3NlclByb3h5RWZsLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTA3YTNk
MQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViQ29s
b3JDaG9vc2VyUHJveHlFZmwuaApAQCAtMCwwICsxLDU5IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDEyIFNhbXN1bmcgRWxlY3Ryb25pY3MuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaWZuZGVmIFdlYkNvbG9yQ2hvb3NlclByb3h5RWZsX2gKKyNkZWZpbmUgV2ViQ29sb3JDaG9v
c2VyUHJveHlFZmxfaAorCisjaWYgRU5BQkxFKElOUFVUX1RZUEVfQ09MT1IpCisKKyNpbmNsdWRl
ICJDb2xvci5oIgorI2luY2x1ZGUgIldlYkNvbG9yQ2hvb3NlclByb3h5LmgiCisKK3R5cGVkZWYg
c3RydWN0IF9FdmFzX09iamVjdCBFdmFzX09iamVjdDsKKworbmFtZXNwYWNlIFdlYktpdCB7CisK
K2NsYXNzIFdlYlBhZ2VQcm94eTsKKworY2xhc3MgV2ViQ29sb3JDaG9vc2VyUHJveHlFZmwgOiBw
dWJsaWMgV2ViQ29sb3JDaG9vc2VyUHJveHkgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVm
UHRyPFdlYkNvbG9yQ2hvb3NlclByb3h5RWZsPiBjcmVhdGUoRXZhc19PYmplY3QqIHdlYlZpZXcs
IFdlYkNvbG9yQ2hvb3NlclByb3h5OjpDbGllbnQqIGNsaWVudCwgY29uc3QgV2ViQ29yZTo6Q29s
b3ImIGNvbG9yKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJDb2xvckNo
b29zZXJQcm94eUVmbCh3ZWJWaWV3LCBjbGllbnQsIGNvbG9yKSk7CisgICAgfQorICAgIHZpcnR1
YWwgfldlYkNvbG9yQ2hvb3NlclByb3h5RWZsKCk7CisKKyAgICB2aXJ0dWFsIHZvaWQgZW5kQ2hv
b3NlcigpOworICAgIHZpcnR1YWwgdm9pZCBzZXRTZWxlY3RlZENvbG9yKGNvbnN0IFdlYkNvcmU6
OkNvbG9yJik7CisKK3ByaXZhdGU6CisgICAgV2ViQ29sb3JDaG9vc2VyUHJveHlFZmwoRXZhc19P
YmplY3QqLCBXZWJDb2xvckNob29zZXJQcm94eTo6Q2xpZW50KiwgY29uc3QgV2ViQ29yZTo6Q29s
b3ImKTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKElO
UFVUX1RZUEVfQ09MT1IpCisKKyNlbmRpZiAvLyBXZWJDb2xvckNob29zZXJQcm94eUVmbF9oCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>154565</attachid>
            <date>2012-07-26 00:48:40 -0700</date>
            <delta_ts>2012-07-26 21:37:52 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>15196</size>
            <attacher name="KwangYong Choi">ky0.choi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCBkY2Q4N2Y1Li42MDkwNjlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDEg
QEAKKzIwMTItMDctMjUgIEt3YW5nWW9uZyBDaG9pICA8a3kwLmNob2lAc2Ftc3VuZy5jb20+CisK
KyAgICAgICAgW0VGTF1bV0syXSBJbXBsZW1lbnRlZCBjb2xvciBjaG9vc2VyIHByb3h5IGFuZCBp
bnB1dCBwaWNrZXIgaW50ZXJmYWNlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD05MTgzMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEltcGxlbWVudGVkIGNvbG9yIGNob29zZXIgcHJveHkgYW5kIGlucHV0IHBp
Y2tlciBpbnRlcmZhY2UgZm9yIEVGTC4KKyAgICAgICAgSW5wdXQgcGlja2VyIGludGVyZmFjZSBj
YW4gYmUgdXNlZCBmb3IgZ2VuZXJhbCB1c2Ugb2YgYWxsIHRoZSBpbnB1dAorICAgICAgICB0eXBl
cyBpbmNsdWRpbmcgY29sb3IgaW5wdXQgdHlwZS4KKworICAgICAgICBUaGUgZXh0ZXJuYWwgYXBw
bGljYXRpb24gc2hvdWxkIGltcGxlbWVudCBpbnB1dCBwaWNrZXIgYnkgb3ZlcnJpZGluZworICAg
ICAgICBzbWFydCBjbGFzcyBmdW5jdGlvbi4KKworICAgICAgICAqIFBsYXRmb3JtRWZsLmNtYWtl
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL1BhZ2VDbGllbnRJbXBsLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OmNyZWF0ZUNvbG9yQ2hvb3NlclByb3h5KToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5jcHA6CisgICAgICAgIChfRXdrX1Zp
ZXdfUHJpdmF0ZV9EYXRhKToKKyAgICAgICAgKF9ld2tfdmlld19wcml2X25ldyk6CisgICAgICAg
IChld2tfdmlld19zbWFydF9jbGFzc19pbml0KToKKyAgICAgICAgKGV3a192aWV3X2lucHV0X3Bp
Y2tlcl9yZXF1ZXN0KTogUmVxdWVzdHMgaW5wdXQgcGlja2VyLgorICAgICAgICAoZXdrX3ZpZXdf
Y29sb3JfY2hvb3Nlcl9yZXF1ZXN0KTogUmVxdWVzdHMgY29sb3IgcGlja2VyLgorICAgICAgICAo
ZXdrX3ZpZXdfY29sb3JfY2hvb3Nlcl9jb2xvcl9zZXQpOiBTZXRzIHRoZSBjb2xvciBieSBjYWxs
aW5nIFdlYkNvbG9yQ2hvb3NlclByb3h5RWZsOjpzZXRTZWxlY3RlZENvbG9yLgorICAgICAgICAo
ZXdrX3ZpZXdfY29sb3JfY2hvb3Nlcl9jbG9zZSk6IENhbGxzIFdlYkNvbG9yQ2hvb3NlclByb3h5
RWZsOjplbmRDaG9vc2VyCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuaDoK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlld19wcml2YXRlLmg6CisgICAgICAg
ICogVUlQcm9jZXNzL2VmbC9XZWJDb2xvckNob29zZXJQcm94eUVmbC5jcHA6IEFkZGVkLgorICAg
ICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29sb3JDaG9vc2VyUHJveHlFZmw6
OldlYkNvbG9yQ2hvb3NlclByb3h5RWZsKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29sb3JDaG9v
c2VyUHJveHlFZmw6On5XZWJDb2xvckNob29zZXJQcm94eUVmbCk6CisgICAgICAgIChXZWJLaXQ6
OldlYkNvbG9yQ2hvb3NlclByb3h5RWZsOjplbmRDaG9vc2VyKToKKyAgICAgICAgKFdlYktpdDo6
V2ViQ29sb3JDaG9vc2VyUHJveHlFZmw6OnNldFNlbGVjdGVkQ29sb3IpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9lZmwvV2ViQ29sb3JDaG9vc2VyUHJveHlFZmwuaDogQWRkZWQuCisgICAgICAgIChX
ZWJLaXQpOgorICAgICAgICAoV2ViQ29sb3JDaG9vc2VyUHJveHlFZmwpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJDb2xvckNob29zZXJQcm94eUVmbDo6Y3JlYXRlKToKKwogMjAxMi0wNy0yNSAgUnl1
YW4gQ2hvaSAgPHJ5dWFuLmNob2lAc2Ftc3VuZy5jb20+CiAKICAgICAgICAgW0VGTF1bV0syXSBB
ZGQgZXdrX3ZpZXdfY3Vyc29yX3NldCB0byBjaGFuZ2UgY3Vyc29yLgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVm
bC5jbWFrZQppbmRleCA2NmFkMDM3Li45YmFjMzViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9QbGF0Zm9ybUVmbC5jbWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFr
ZQpAQCAtNTksNiArNTksNyBAQCBMSVNUKEFQUEVORCBXZWJLaXQyX1NPVVJDRVMKICAgICBVSVBy
b2Nlc3MvY2Fpcm8vQmFja2luZ1N0b3JlQ2Fpcm8uY3BwCiAKICAgICBVSVByb2Nlc3MvZWZsL1Rl
eHRDaGVja2VyRWZsLmNwcAorICAgIFVJUHJvY2Vzcy9lZmwvV2ViQ29sb3JDaG9vc2VyUHJveHlF
ZmwuY3BwCiAgICAgVUlQcm9jZXNzL2VmbC9XZWJDb250ZXh0RWZsLmNwcAogICAgIFVJUHJvY2Vz
cy9lZmwvV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eUVmbC5jcHAKICAgICBVSVByb2Nlc3MvZWZs
L1dlYkluc3BlY3RvclByb3h5RWZsLmNwcApAQCAtMTE0LDYgKzExNSw3IEBAIExJU1QoQVBQRU5E
IFdlYktpdDJfSU5DTFVERV9ESVJFQ1RPUklFUwogICAgICIke1dFQktJVDJfRElSfS9VSVByb2Nl
c3MvQVBJL0MvZWZsIgogICAgICIke1dFQktJVDJfRElSfS9VSVByb2Nlc3MvQVBJL0Mvc291cCIK
ICAgICAiJHtXRUJLSVQyX0RJUn0vVUlQcm9jZXNzL0FQSS9lZmwiCisgICAgIiR7V0VCS0lUMl9E
SVJ9L1VJUHJvY2Vzcy9lZmwiCiAgICAgIiR7V0VCS0lUMl9ESVJ9L1VJUHJvY2Vzcy9zb3VwIgog
ICAgICIke1dFQktJVDJfRElSfS9XZWJQcm9jZXNzL0Rvd25sb2Fkcy9zb3VwIgogICAgICIke1dF
QktJVDJfRElSfS9XZWJQcm9jZXNzL2VmbCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZWZsL1BhZ2VDbGllbnRJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZWZsL1BhZ2VDbGllbnRJbXBsLmNwcAppbmRleCAxMThlZGIxLi40M2Y5OWNmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9QYWdlQ2xpZW50SW1w
bC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvUGFnZUNsaWVudElt
cGwuY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiRHJhd2luZ0FyZWFQcm94eUltcGwu
aCIKICNpbmNsdWRlICJOYXRpdmVXZWJLZXlib2FyZEV2ZW50LmgiCiAjaW5jbHVkZSAiTm90SW1w
bGVtZW50ZWQuaCIKKyNpbmNsdWRlICJXZWJDb2xvckNob29zZXJQcm94eUVmbC5oIgogI2luY2x1
ZGUgIldlYkNvbnRleHQuaCIKICNpbmNsdWRlICJXZWJDb250ZXh0TWVudVByb3h5LmgiCiAjaW5j
bHVkZSAiV2ViUGFnZVByb3h5LmgiCkBAIC0yMDYsMTAgKzIwNyw5IEBAIFBhc3NSZWZQdHI8V2Vi
Q29udGV4dE1lbnVQcm94eT4gUGFnZUNsaWVudEltcGw6OmNyZWF0ZUNvbnRleHRNZW51UHJveHko
V2ViUGFnZVByCiB9CiAKICNpZiBFTkFCTEUoSU5QVVRfVFlQRV9DT0xPUikKLVBhc3NSZWZQdHI8
V2ViQ29sb3JDaG9vc2VyUHJveHk+IFBhZ2VDbGllbnRJbXBsOjpjcmVhdGVDb2xvckNob29zZXJQ
cm94eShXZWJQYWdlUHJveHkqLCBjb25zdCBXZWJDb3JlOjpDb2xvciYpCitQYXNzUmVmUHRyPFdl
YkNvbG9yQ2hvb3NlclByb3h5PiBQYWdlQ2xpZW50SW1wbDo6Y3JlYXRlQ29sb3JDaG9vc2VyUHJv
eHkoV2ViUGFnZVByb3h5KiBwYWdlLCBjb25zdCBXZWJDb3JlOjpDb2xvciYgaW5pdGlhbENvbG9y
KQogewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIFdl
YkNvbG9yQ2hvb3NlclByb3h5RWZsOjpjcmVhdGUobV92aWV3V2lkZ2V0LCBwYWdlLCBpbml0aWFs
Q29sb3IpOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZWZsL2V3a192aWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZs
L2V3a192aWV3LmNwcAppbmRleCA4NDQ4ZmQ2Li5hZmE5NDFiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5jcHAKKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuY3BwCkBAIC02Niw2ICs2NiwxMCBAQCBzdHJ1
Y3QgX0V3a19WaWV3X1ByaXZhdGVfRGF0YSB7CiAgICAgYm9vbCBpc1VzaW5nRWNvcmVYOwogI2Vu
ZGlmCiAKKyNpZiBFTkFCTEUoSU5QVVRfVFlQRV9DT0xPUikKKyAgICBXZWJDb2xvckNob29zZXJQ
cm94eUVmbCogY29sb3JDaG9vc2VyOworI2VuZGlmCisKICAgICBfRXdrX1ZpZXdfUHJpdmF0ZV9E
YXRhKCkKICAgICAgICAgOiB1cmkoMCkKICAgICAgICAgLCB0aXRsZSgwKQpAQCAtMTA5MCwzICsx
MDk0LDU5IEBAIEVpbmFfQm9vbCBld2tfdmlld19zZXR0aW5nX2VuY29kaW5nX2N1c3RvbV9zZXQo
RXZhc19PYmplY3QqIGV3a1ZpZXcsIGNvbnN0IGNoYXIqCiAKICAgICByZXR1cm4gdHJ1ZTsKIH0K
Kwordm9pZCBld2tfdmlld19pbnB1dF9waWNrZXJfcmVxdWVzdChFdmFzX09iamVjdCogZXdrVmll
dywgRXdrX0lucHV0X1R5cGUgaW5wdXRUeXBlLCBjb25zdCBTdHJpbmcmIGlucHV0VmFsdWUpCit7
CisgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEpOworICAg
IEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKHNtYXJ0RGF0YS0+YXBpKTsKKyAgICBFSU5BX1NB
RkVUWV9PTl9OVUxMX1JFVFVSTihzbWFydERhdGEtPmFwaS0+aW5wdXRfcGlja2VyX3Nob3cpOwor
CisgICAgc21hcnREYXRhLT5hcGktPmlucHV0X3BpY2tlcl9zaG93KHNtYXJ0RGF0YSwgaW5wdXRU
eXBlLCBpbnB1dFZhbHVlLnV0ZjgoKS5kYXRhKCkpOworfQorCisjaWYgRU5BQkxFKElOUFVUX1RZ
UEVfQ09MT1IpCit2b2lkIGV3a192aWV3X2NvbG9yX2Nob29zZXJfcmVxdWVzdChFdmFzX09iamVj
dCogZXdrVmlldywgV2ViS2l0OjpXZWJDb2xvckNob29zZXJQcm94eUVmbCogY29sb3JDaG9vc2Vy
LCBjb25zdCBTdHJpbmcmIGlucHV0VmFsdWUpCit7CisgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JF
VFVSTihld2tWaWV3LCBzbWFydERhdGEpOworICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVS
TihzbWFydERhdGEsIHByaXYpOworCisgICAgcHJpdi0+Y29sb3JDaG9vc2VyID0gY29sb3JDaG9v
c2VyOworCisgICAgZXdrX3ZpZXdfaW5wdXRfcGlja2VyX3JlcXVlc3QoZXdrVmlldywgRVdLX0lO
UFVUX1RZUEVfQ09MT1IsIGlucHV0VmFsdWUpOworfQorI2VuZGlmCisKK0VpbmFfQm9vbCBld2tf
dmlld19jb2xvcl9jaG9vc2VyX2NvbG9yX3NldChFdmFzX09iamVjdCogZXdrVmlldywgY29uc3Qg
Y2hhciogY29sb3IpCit7CisjaWYgRU5BQkxFKElOUFVUX1RZUEVfQ09MT1IpCisgICAgRVdLX1ZJ
RVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEsIGZhbHNlKTsKKyAgICBFV0tf
VklFV19QUklWX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBwcml2LCBmYWxzZSk7CisKKyAgICBp
ZiAoIXByaXYtPmNvbG9yQ2hvb3NlcikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcHJp
di0+Y29sb3JDaG9vc2VyLT5zZXRTZWxlY3RlZENvbG9yKENvbG9yKGNvbG9yKSk7CisKKyAgICBy
ZXR1cm4gdHJ1ZTsKKyNlbHNlCisgICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCit9CisKK0VpbmFf
Qm9vbCBld2tfdmlld19jb2xvcl9jaG9vc2VyX2Nsb3NlKEV2YXNfT2JqZWN0KiBld2tWaWV3KQor
eworI2lmIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9SKQorICAgIEVXS19WSUVXX1NEX0dFVF9PUl9S
RVRVUk4oZXdrVmlldywgc21hcnREYXRhLCBmYWxzZSk7CisgICAgRVdLX1ZJRVdfUFJJVl9HRVRf
T1JfUkVUVVJOKHNtYXJ0RGF0YSwgcHJpdiwgZmFsc2UpOworCisgICAgaWYgKCFwcml2LT5jb2xv
ckNob29zZXIpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHByaXYtPmNvbG9yQ2hvb3Nl
ci0+ZW5kQ2hvb3NlcigpOworICAgIHByaXYtPmNvbG9yQ2hvb3NlciA9IDA7CisKKyAgICByZXR1
cm4gdHJ1ZTsKKyNlbHNlCisgICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCit9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5oIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuaAppbmRleCA1ZDY5ZGY0Li4yNDY5M2M0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5o
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmgKQEAgLTY3
LDYgKzY3LDI3IEBAIGV4dGVybiAiQyIgewogdHlwZWRlZiBzdHJ1Y3QgX0V3a19WaWV3X1NtYXJ0
X0RhdGEgRXdrX1ZpZXdfU21hcnRfRGF0YTsKIHR5cGVkZWYgc3RydWN0IF9Fd2tfVmlld19TbWFy
dF9DbGFzcyBFd2tfVmlld19TbWFydF9DbGFzczsKIAorLyoqCisgKiBcZW51bSAgICBFd2tfSW5w
dXRfVHlwZQorICogQGJyaWVmICAgUHJvdmlkZXMgdHlwZSBvZiBpbnB1dCBlbGVtZW50CisgKi8K
K2VudW0gX0V3a19JbnB1dF9UeXBlIHsKKyAgICBFV0tfSU5QVVRfVFlQRV9URUxFUEhPTkUgPSAx
LCAKKyAgICBFV0tfSU5QVVRfVFlQRV9OVU1CRVIsCisgICAgRVdLX0lOUFVUX1RZUEVfRU1BSUws
CisgICAgRVdLX0lOUFVUX1RZUEVfVVJMLAorICAgIEVXS19JTlBVVF9UWVBFX1BBU1NXT1JELAor
ICAgIEVXS19JTlBVVF9UWVBFX0NPTE9SLAorICAgIEVXS19JTlBVVF9UWVBFX0RBVEUsCisgICAg
RVdLX0lOUFVUX1RZUEVfREFURVRJTUUsCisgICAgRVdLX0lOUFVUX1RZUEVfREFURVRJTUVMT0NB
TCwKKyAgICBFV0tfSU5QVVRfVFlQRV9NT05USCwKKyAgICBFV0tfSU5QVVRfVFlQRV9USU1FLAor
ICAgIEVXS19JTlBVVF9UWVBFX1dFRUsKK307CisvKiogQ3JlYXRlcyBhIHR5cGUgbmFtZSBmb3Ig
X0V3a19JbnB1dF9UeXBlX0V3a19JbnB1dF9UeXBlICovCit0eXBlZGVmIGVudW0gX0V3a19JbnB1
dF9UeXBlIEV3a19JbnB1dF9UeXBlOworCiAvLy8gRXdrIHZpZXcncyBjbGFzcywgdG8gYmUgb3Zl
cnJpZGRlbiBieSBzdWItY2xhc3Nlcy4KIHN0cnVjdCBfRXdrX1ZpZXdfU21hcnRfQ2xhc3Mgewog
ICAgIEV2YXNfU21hcnRfQ2xhc3Mgc2M7IC8qKjwgYWxsIGJ1dCAnZGF0YScgaXMgZnJlZSB0byBi
ZSBjaGFuZ2VkLiAqLwpAQCAtODMsMTMgKzEwNCwxNiBAQCBzdHJ1Y3QgX0V3a19WaWV3X1NtYXJ0
X0NsYXNzIHsKICAgICBFaW5hX0Jvb2wgKCptb3VzZV9tb3ZlKShFd2tfVmlld19TbWFydF9EYXRh
ICpzZCwgY29uc3QgRXZhc19FdmVudF9Nb3VzZV9Nb3ZlICpldik7CiAgICAgRWluYV9Cb29sICgq
a2V5X2Rvd24pKEV3a19WaWV3X1NtYXJ0X0RhdGEgKnNkLCBjb25zdCBFdmFzX0V2ZW50X0tleV9E
b3duICpldik7CiAgICAgRWluYV9Cb29sICgqa2V5X3VwKShFd2tfVmlld19TbWFydF9EYXRhICpz
ZCwgY29uc3QgRXZhc19FdmVudF9LZXlfVXAgKmV2KTsKKworICAgIC8vIFNob3dzIGlucHV0IHBp
Y2tlciBiYXNlZCBvbiBpbnB1dCB0eXBlIHdpdGggaW5pdGlhbCB2YWx1ZS4KKyAgICBFaW5hX0Jv
b2wgKCppbnB1dF9waWNrZXJfc2hvdykoRXdrX1ZpZXdfU21hcnRfRGF0YSAqc2QsIEV3a19JbnB1
dF9UeXBlIGlucHV0X3R5cGUsIGNvbnN0IGNoYXIgKmlucHV0X3ZhbHVlKTsKIH07CiAKIC8qKgog
ICogVGhlIHZlcnNpb24geW91IGhhdmUgdG8gcHV0IGludG8gdGhlIHZlcnNpb24gZmllbGQKICAq
IGluIHRoZSBAYSBFd2tfVmlld19TbWFydF9DbGFzcyBzdHJ1Y3R1cmUuCiAgKi8KLSNkZWZpbmUg
RVdLX1ZJRVdfU01BUlRfQ0xBU1NfVkVSU0lPTiAxVUwKKyNkZWZpbmUgRVdLX1ZJRVdfU01BUlRf
Q0xBU1NfVkVSU0lPTiAyVUwKIAogLyoqCiAgKiBJbml0aWFsaXplciBmb3Igd2hvbGUgRXdrX1Zp
ZXdfU21hcnRfQ2xhc3Mgc3RydWN0dXJlLgpAQCAtMTAxLDcgKzEyNSw3IEBAIHN0cnVjdCBfRXdr
X1ZpZXdfU21hcnRfQ2xhc3MgewogICogQHNlZSBFV0tfVklFV19TTUFSVF9DTEFTU19JTklUX1ZF
UlNJT04KICAqIEBzZWUgRVdLX1ZJRVdfU01BUlRfQ0xBU1NfSU5JVF9OQU1FX1ZFUlNJT04KICAq
LwotI2RlZmluZSBFV0tfVklFV19TTUFSVF9DTEFTU19JTklUKHNtYXJ0X2NsYXNzX2luaXQpIHtz
bWFydF9jbGFzc19pbml0LCBFV0tfVklFV19TTUFSVF9DTEFTU19WRVJTSU9OLCAwLCAwLCAwLCAw
LCAwLCAwLCAwLCAwfQorI2RlZmluZSBFV0tfVklFV19TTUFSVF9DTEFTU19JTklUKHNtYXJ0X2Ns
YXNzX2luaXQpIHtzbWFydF9jbGFzc19pbml0LCBFV0tfVklFV19TTUFSVF9DTEFTU19WRVJTSU9O
LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwfQogCiAvKioKICAqIEluaXRpYWxpemVyIHRvIHpl
cm8gYSB3aG9sZSBFd2tfVmlld19TbWFydF9DbGFzcyBzdHJ1Y3R1cmUuCkBAIC00NDEsNiArNDY1
LDI1IEBAIEVBUEkgY29uc3QgY2hhciAgKmV3a192aWV3X3NldHRpbmdfZW5jb2RpbmdfY3VzdG9t
X2dldChjb25zdCBFdmFzX09iamVjdCAqbyk7CiAgKi8KIEVBUEkgRWluYV9Cb29sICAgIGV3a192
aWV3X3NldHRpbmdfZW5jb2RpbmdfY3VzdG9tX3NldChFdmFzX09iamVjdCAqbywgY29uc3QgY2hh
ciAqZW5jb2RpbmcpOwogCisvKioKKyAqIFNldHMgdGhlIGNvbG9yIHZhbHVlIG9mIGNvbG9yIGNo
b29zZXIKKyAqCisgKiBAcGFyYW0gbyB2aWV3IG9iamVjdCBjb250YWlucyBjb2xvciBjaG9vc2Vy
CisgKiBAcGFyYW0gY29sb3IgdGhlIGNvbG9yIHZhbHVlIHRvIGJlIHNldAorICoKKyAqIEByZXR1
cm4gQGMgRUlOQV9UUlVFIG9uIHN1Y2Nlc3MgQGMgRUlOQV9GQUxTRSBvdGhlcndpc2UKKyAqLwor
RUFQSSBFaW5hX0Jvb2wgZXdrX3ZpZXdfY29sb3JfY2hvb3Nlcl9jb2xvcl9zZXQoRXZhc19PYmpl
Y3QgKm8sIGNvbnN0IGNoYXIgKmNvbG9yKTsKKworLyoqCisgKiBDbG9zZXMgY29sb3IgY2hvb3Nl
cgorICoKKyAqIEBwYXJhbSBvIHZpZXcgb2JqZWN0IGNvbnRhaW5zIGNvbG9yIGNob29zZXIKKyAq
CisgKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBvbiBzdWNjZXNzIEBjIEVJTkFfRkFMU0Ugb3RoZXJ3
aXNlCisgKi8KK0VBUEkgRWluYV9Cb29sIGV3a192aWV3X2NvbG9yX2Nob29zZXJfY2xvc2UoRXZh
c19PYmplY3QgKm8pOworCiAjaWZkZWYgX19jcGx1c3BsdXMKIH0KICNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXdfcHJpdmF0ZS5oIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXdfcHJpdmF0ZS5oCmluZGV4
IGEwYTY3OTAuLjJhNzkwOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZWZsL2V3a192aWV3X3ByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2VmbC9ld2tfdmlld19wcml2YXRlLmgKQEAgLTIyLDkgKzIyLDE0IEBACiAjZGVmaW5lIGV3
a192aWV3X3ByaXZhdGVfaAogCiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5LmgiCisjaW5jbHVkZSAi
ZXdrX3ZpZXcuaCIKICNpbmNsdWRlIDxFdmFzLmg+CiAjaW5jbHVkZSA8V2ViS2l0Mi9XS0Jhc2Uu
aD4KIAorI2lmIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9SKQorI2luY2x1ZGUgIldlYkNvbG9yQ2hv
b3NlclByb3h5RWZsLmgiCisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQ3Vy
c29yOwogY2xhc3MgSW50UmVjdDsKQEAgLTcyLDQgKzc3LDkgQEAgdm9pZCBld2tfdmlld19pbnRl
bnRfc2VydmljZV9yZWdpc3RlcihFdmFzX09iamVjdCogZXdrVmlldywgY29uc3QgRXdrX0ludGVu
dF9TZXIKIAogV2ViS2l0OjpXZWJQYWdlUHJveHkqIGV3a192aWV3X3BhZ2VfZ2V0KGNvbnN0IEV2
YXNfT2JqZWN0KiBld2tWaWV3KTsKIAordm9pZCBld2tfdmlld19pbnB1dF9waWNrZXJfcmVxdWVz
dChFdmFzX09iamVjdCogZXdrVmlldywgRXdrX0lucHV0X1R5cGUgaW5wdXRUeXBlLCBjb25zdCBT
dHJpbmcmIGlucHV0VmFsdWUpOworI2lmIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9SKQordm9pZCBl
d2tfdmlld19jb2xvcl9jaG9vc2VyX3JlcXVlc3QoRXZhc19PYmplY3QqIGV3a1ZpZXcsIFdlYktp
dDo6V2ViQ29sb3JDaG9vc2VyUHJveHlFZmwqIGNvbG9yQ2hvb3NlciwgY29uc3QgU3RyaW5nJiBp
bnB1dFZhbHVlKTsKKyNlbmRpZgorCiAjZW5kaWYgLy8gZXdrX3ZpZXdfcHJpdmF0ZV9oCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYkNvbG9yQ2hvb3NlclByb3h5
RWZsLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViQ29sb3JDaG9vc2VyUHJv
eHlFZmwuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM5ZWQ5NjEKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYkNvbG9yQ2hv
b3NlclByb3h5RWZsLmNwcApAQCAtMCwwICsxLDU5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDEyIFNhbXN1bmcgRWxlY3Ryb25pY3MuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViQ29sb3JDaG9vc2VyUHJveHlFZmwuaCIK
KworI2lmIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9SKQorCisjaW5jbHVkZSAiZXdrX3ZpZXdfcHJp
dmF0ZS5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworV2ViQ29sb3JDaG9vc2VyUHJveHlFZmw6
OldlYkNvbG9yQ2hvb3NlclByb3h5RWZsKEV2YXNfT2JqZWN0KiB3ZWJWaWV3LCBXZWJDb2xvckNo
b29zZXJQcm94eTo6Q2xpZW50KiBjbGllbnQsIGNvbnN0IFdlYkNvcmU6OkNvbG9yJiBjb2xvcikK
KyAgICA6IFdlYkNvbG9yQ2hvb3NlclByb3h5KGNsaWVudCkKK3sKKyAgICBld2tfdmlld19jb2xv
cl9jaG9vc2VyX3JlcXVlc3Qod2ViVmlldywgdGhpcywgY29sb3Iuc2VyaWFsaXplZCgpKTsKK30K
KworV2ViQ29sb3JDaG9vc2VyUHJveHlFZmw6On5XZWJDb2xvckNob29zZXJQcm94eUVmbCgpCit7
Cit9CisKK3ZvaWQgV2ViQ29sb3JDaG9vc2VyUHJveHlFZmw6OmVuZENob29zZXIoKQoreworICAg
IGlmIChtX2NsaWVudCkKKyAgICAgICAgbV9jbGllbnQtPmRpZEVuZENvbG9yQ2hvb3NlcigpOwor
fQorCit2b2lkIFdlYkNvbG9yQ2hvb3NlclByb3h5RWZsOjpzZXRTZWxlY3RlZENvbG9yKGNvbnN0
IFdlYkNvcmU6OkNvbG9yJiBjb2xvcikKK3sKKyAgICBpZiAobV9jbGllbnQpCisgICAgICAgIG1f
Y2xpZW50LT5kaWRDaG9vc2VDb2xvcihjb2xvcik7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktp
dAorCisjZW5kaWYgLy8gRU5BQkxFKElOUFVUX1RZUEVfQ09MT1IpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYkNvbG9yQ2hvb3NlclByb3h5RWZsLmggYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYkNvbG9yQ2hvb3NlclByb3h5RWZsLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTA3YTNkMQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViQ29sb3JDaG9vc2VyUHJveHlFZmwuaApA
QCAtMCwwICsxLDU5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIFNhbXN1bmcgRWxlY3Ry
b25pY3MuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYkNvbG9yQ2hv
b3NlclByb3h5RWZsX2gKKyNkZWZpbmUgV2ViQ29sb3JDaG9vc2VyUHJveHlFZmxfaAorCisjaWYg
RU5BQkxFKElOUFVUX1RZUEVfQ09MT1IpCisKKyNpbmNsdWRlICJDb2xvci5oIgorI2luY2x1ZGUg
IldlYkNvbG9yQ2hvb3NlclByb3h5LmgiCisKK3R5cGVkZWYgc3RydWN0IF9FdmFzX09iamVjdCBF
dmFzX09iamVjdDsKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYlBhZ2VQcm94eTsK
KworY2xhc3MgV2ViQ29sb3JDaG9vc2VyUHJveHlFZmwgOiBwdWJsaWMgV2ViQ29sb3JDaG9vc2Vy
UHJveHkgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYkNvbG9yQ2hvb3NlclBy
b3h5RWZsPiBjcmVhdGUoRXZhc19PYmplY3QqIHdlYlZpZXcsIFdlYkNvbG9yQ2hvb3NlclByb3h5
OjpDbGllbnQqIGNsaWVudCwgY29uc3QgV2ViQ29yZTo6Q29sb3ImIGNvbG9yKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJDb2xvckNob29zZXJQcm94eUVmbCh3ZWJWaWV3
LCBjbGllbnQsIGNvbG9yKSk7CisgICAgfQorICAgIHZpcnR1YWwgfldlYkNvbG9yQ2hvb3NlclBy
b3h5RWZsKCk7CisKKyAgICB2aXJ0dWFsIHZvaWQgZW5kQ2hvb3NlcigpOworICAgIHZpcnR1YWwg
dm9pZCBzZXRTZWxlY3RlZENvbG9yKGNvbnN0IFdlYkNvcmU6OkNvbG9yJik7CisKK3ByaXZhdGU6
CisgICAgV2ViQ29sb3JDaG9vc2VyUHJveHlFZmwoRXZhc19PYmplY3QqLCBXZWJDb2xvckNob29z
ZXJQcm94eTo6Q2xpZW50KiwgY29uc3QgV2ViQ29yZTo6Q29sb3ImKTsKK307CisKK30gLy8gbmFt
ZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKElOUFVUX1RZUEVfQ09MT1IpCisKKyNl
bmRpZiAvLyBXZWJDb2xvckNob29zZXJQcm94eUVmbF9oCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>154833</attachid>
            <date>2012-07-26 21:37:52 -0700</date>
            <delta_ts>2012-08-08 19:32:14 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>diff</filename>
            <type>text/plain</type>
            <size>15414</size>
            <attacher name="KwangYong Choi">ky0.choi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCBkY2Q4N2Y1Li42MDkwNjlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDEg
QEAKKzIwMTItMDctMjUgIEt3YW5nWW9uZyBDaG9pICA8a3kwLmNob2lAc2Ftc3VuZy5jb20+CisK
KyAgICAgICAgW0VGTF1bV0syXSBJbXBsZW1lbnRlZCBjb2xvciBjaG9vc2VyIHByb3h5IGFuZCBp
bnB1dCBwaWNrZXIgaW50ZXJmYWNlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD05MTgzMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEltcGxlbWVudGVkIGNvbG9yIGNob29zZXIgcHJveHkgYW5kIGlucHV0IHBp
Y2tlciBpbnRlcmZhY2UgZm9yIEVGTC4KKyAgICAgICAgSW5wdXQgcGlja2VyIGludGVyZmFjZSBj
YW4gYmUgdXNlZCBmb3IgZ2VuZXJhbCB1c2Ugb2YgYWxsIHRoZSBpbnB1dAorICAgICAgICB0eXBl
cyBpbmNsdWRpbmcgY29sb3IgaW5wdXQgdHlwZS4KKworICAgICAgICBUaGUgZXh0ZXJuYWwgYXBw
bGljYXRpb24gc2hvdWxkIGltcGxlbWVudCBpbnB1dCBwaWNrZXIgYnkgb3ZlcnJpZGluZworICAg
ICAgICBzbWFydCBjbGFzcyBmdW5jdGlvbi4KKworICAgICAgICAqIFBsYXRmb3JtRWZsLmNtYWtl
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL1BhZ2VDbGllbnRJbXBsLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OmNyZWF0ZUNvbG9yQ2hvb3NlclByb3h5KToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5jcHA6CisgICAgICAgIChfRXdrX1Zp
ZXdfUHJpdmF0ZV9EYXRhKToKKyAgICAgICAgKF9ld2tfdmlld19wcml2X25ldyk6CisgICAgICAg
IChld2tfdmlld19zbWFydF9jbGFzc19pbml0KToKKyAgICAgICAgKGV3a192aWV3X2lucHV0X3Bp
Y2tlcl9yZXF1ZXN0KTogUmVxdWVzdHMgaW5wdXQgcGlja2VyLgorICAgICAgICAoZXdrX3ZpZXdf
Y29sb3JfY2hvb3Nlcl9yZXF1ZXN0KTogUmVxdWVzdHMgY29sb3IgcGlja2VyLgorICAgICAgICAo
ZXdrX3ZpZXdfY29sb3JfY2hvb3Nlcl9jb2xvcl9zZXQpOiBTZXRzIHRoZSBjb2xvciBieSBjYWxs
aW5nIFdlYkNvbG9yQ2hvb3NlclByb3h5RWZsOjpzZXRTZWxlY3RlZENvbG9yLgorICAgICAgICAo
ZXdrX3ZpZXdfY29sb3JfY2hvb3Nlcl9jbG9zZSk6IENhbGxzIFdlYkNvbG9yQ2hvb3NlclByb3h5
RWZsOjplbmRDaG9vc2VyCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuaDoK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlld19wcml2YXRlLmg6CisgICAgICAg
ICogVUlQcm9jZXNzL2VmbC9XZWJDb2xvckNob29zZXJQcm94eUVmbC5jcHA6IEFkZGVkLgorICAg
ICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29sb3JDaG9vc2VyUHJveHlFZmw6
OldlYkNvbG9yQ2hvb3NlclByb3h5RWZsKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29sb3JDaG9v
c2VyUHJveHlFZmw6On5XZWJDb2xvckNob29zZXJQcm94eUVmbCk6CisgICAgICAgIChXZWJLaXQ6
OldlYkNvbG9yQ2hvb3NlclByb3h5RWZsOjplbmRDaG9vc2VyKToKKyAgICAgICAgKFdlYktpdDo6
V2ViQ29sb3JDaG9vc2VyUHJveHlFZmw6OnNldFNlbGVjdGVkQ29sb3IpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9lZmwvV2ViQ29sb3JDaG9vc2VyUHJveHlFZmwuaDogQWRkZWQuCisgICAgICAgIChX
ZWJLaXQpOgorICAgICAgICAoV2ViQ29sb3JDaG9vc2VyUHJveHlFZmwpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJDb2xvckNob29zZXJQcm94eUVmbDo6Y3JlYXRlKToKKwogMjAxMi0wNy0yNSAgUnl1
YW4gQ2hvaSAgPHJ5dWFuLmNob2lAc2Ftc3VuZy5jb20+CiAKICAgICAgICAgW0VGTF1bV0syXSBB
ZGQgZXdrX3ZpZXdfY3Vyc29yX3NldCB0byBjaGFuZ2UgY3Vyc29yLgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVm
bC5jbWFrZQppbmRleCA2NmFkMDM3Li45YmFjMzViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9QbGF0Zm9ybUVmbC5jbWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFr
ZQpAQCAtNTksNiArNTksNyBAQCBMSVNUKEFQUEVORCBXZWJLaXQyX1NPVVJDRVMKICAgICBVSVBy
b2Nlc3MvY2Fpcm8vQmFja2luZ1N0b3JlQ2Fpcm8uY3BwCiAKICAgICBVSVByb2Nlc3MvZWZsL1Rl
eHRDaGVja2VyRWZsLmNwcAorICAgIFVJUHJvY2Vzcy9lZmwvV2ViQ29sb3JDaG9vc2VyUHJveHlF
ZmwuY3BwCiAgICAgVUlQcm9jZXNzL2VmbC9XZWJDb250ZXh0RWZsLmNwcAogICAgIFVJUHJvY2Vz
cy9lZmwvV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eUVmbC5jcHAKICAgICBVSVByb2Nlc3MvZWZs
L1dlYkluc3BlY3RvclByb3h5RWZsLmNwcApAQCAtMTE0LDYgKzExNSw3IEBAIExJU1QoQVBQRU5E
IFdlYktpdDJfSU5DTFVERV9ESVJFQ1RPUklFUwogICAgICIke1dFQktJVDJfRElSfS9VSVByb2Nl
c3MvQVBJL0MvZWZsIgogICAgICIke1dFQktJVDJfRElSfS9VSVByb2Nlc3MvQVBJL0Mvc291cCIK
ICAgICAiJHtXRUJLSVQyX0RJUn0vVUlQcm9jZXNzL0FQSS9lZmwiCisgICAgIiR7V0VCS0lUMl9E
SVJ9L1VJUHJvY2Vzcy9lZmwiCiAgICAgIiR7V0VCS0lUMl9ESVJ9L1VJUHJvY2Vzcy9zb3VwIgog
ICAgICIke1dFQktJVDJfRElSfS9XZWJQcm9jZXNzL0Rvd25sb2Fkcy9zb3VwIgogICAgICIke1dF
QktJVDJfRElSfS9XZWJQcm9jZXNzL2VmbCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZWZsL1BhZ2VDbGllbnRJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZWZsL1BhZ2VDbGllbnRJbXBsLmNwcAppbmRleCAxMThlZGIxLi40M2Y5OWNmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9QYWdlQ2xpZW50SW1w
bC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvUGFnZUNsaWVudElt
cGwuY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiRHJhd2luZ0FyZWFQcm94eUltcGwu
aCIKICNpbmNsdWRlICJOYXRpdmVXZWJLZXlib2FyZEV2ZW50LmgiCiAjaW5jbHVkZSAiTm90SW1w
bGVtZW50ZWQuaCIKKyNpbmNsdWRlICJXZWJDb2xvckNob29zZXJQcm94eUVmbC5oIgogI2luY2x1
ZGUgIldlYkNvbnRleHQuaCIKICNpbmNsdWRlICJXZWJDb250ZXh0TWVudVByb3h5LmgiCiAjaW5j
bHVkZSAiV2ViUGFnZVByb3h5LmgiCkBAIC0yMDYsMTAgKzIwNyw5IEBAIFBhc3NSZWZQdHI8V2Vi
Q29udGV4dE1lbnVQcm94eT4gUGFnZUNsaWVudEltcGw6OmNyZWF0ZUNvbnRleHRNZW51UHJveHko
V2ViUGFnZVByCiB9CiAKICNpZiBFTkFCTEUoSU5QVVRfVFlQRV9DT0xPUikKLVBhc3NSZWZQdHI8
V2ViQ29sb3JDaG9vc2VyUHJveHk+IFBhZ2VDbGllbnRJbXBsOjpjcmVhdGVDb2xvckNob29zZXJQ
cm94eShXZWJQYWdlUHJveHkqLCBjb25zdCBXZWJDb3JlOjpDb2xvciYpCitQYXNzUmVmUHRyPFdl
YkNvbG9yQ2hvb3NlclByb3h5PiBQYWdlQ2xpZW50SW1wbDo6Y3JlYXRlQ29sb3JDaG9vc2VyUHJv
eHkoV2ViUGFnZVByb3h5KiBwYWdlLCBjb25zdCBXZWJDb3JlOjpDb2xvciYgaW5pdGlhbENvbG9y
KQogewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIFdl
YkNvbG9yQ2hvb3NlclByb3h5RWZsOjpjcmVhdGUobV92aWV3V2lkZ2V0LCBwYWdlLCBpbml0aWFs
Q29sb3IpOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZWZsL2V3a192aWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZs
L2V3a192aWV3LmNwcAppbmRleCA4NDQ4ZmQ2Li5lYzhiMDMxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5jcHAKKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuY3BwCkBAIC02Niw2ICs2NiwxMCBAQCBzdHJ1
Y3QgX0V3a19WaWV3X1ByaXZhdGVfRGF0YSB7CiAgICAgYm9vbCBpc1VzaW5nRWNvcmVYOwogI2Vu
ZGlmCiAKKyNpZiBFTkFCTEUoSU5QVVRfVFlQRV9DT0xPUikKKyAgICBXZWJDb2xvckNob29zZXJQ
cm94eUVmbCogY29sb3JDaG9vc2VyOworI2VuZGlmCisKICAgICBfRXdrX1ZpZXdfUHJpdmF0ZV9E
YXRhKCkKICAgICAgICAgOiB1cmkoMCkKICAgICAgICAgLCB0aXRsZSgwKQpAQCAtNzYsNiArODAs
OSBAQCBzdHJ1Y3QgX0V3a19WaWV3X1ByaXZhdGVfRGF0YSB7CiAjaWZkZWYgSEFWRV9FQ09SRV9Y
CiAgICAgICAgICwgaXNVc2luZ0Vjb3JlWChmYWxzZSkKICNlbmRpZgorI2lmIEVOQUJMRShJTlBV
VF9UWVBFX0NPTE9SKQorICAgICAgICAsIGNvbG9yQ2hvb3NlcigwKQorI2VuZGlmCiAgICAgeyB9
CiAKICAgICB+X0V3a19WaWV3X1ByaXZhdGVfRGF0YSgpCkBAIC0xMDkwLDMgKzEwOTcsNTkgQEAg
RWluYV9Cb29sIGV3a192aWV3X3NldHRpbmdfZW5jb2RpbmdfY3VzdG9tX3NldChFdmFzX09iamVj
dCogZXdrVmlldywgY29uc3QgY2hhcioKIAogICAgIHJldHVybiB0cnVlOwogfQorCit2b2lkIGV3
a192aWV3X2lucHV0X3BpY2tlcl9yZXF1ZXN0KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBFd2tfSW5w
dXRfVHlwZSBpbnB1dFR5cGUsIGNvbnN0IFN0cmluZyYgaW5wdXRWYWx1ZSkKK3sKKyAgICBFV0tf
VklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSk7CisgICAgRUlOQV9TQUZF
VFlfT05fTlVMTF9SRVRVUk4oc21hcnREYXRhLT5hcGkpOworICAgIEVJTkFfU0FGRVRZX09OX05V
TExfUkVUVVJOKHNtYXJ0RGF0YS0+YXBpLT5pbnB1dF9waWNrZXJfc2hvdyk7CisKKyAgICBzbWFy
dERhdGEtPmFwaS0+aW5wdXRfcGlja2VyX3Nob3coc21hcnREYXRhLCBpbnB1dFR5cGUsIGlucHV0
VmFsdWUudXRmOCgpLmRhdGEoKSk7Cit9CisKKyNpZiBFTkFCTEUoSU5QVVRfVFlQRV9DT0xPUikK
K3ZvaWQgZXdrX3ZpZXdfY29sb3JfY2hvb3Nlcl9yZXF1ZXN0KEV2YXNfT2JqZWN0KiBld2tWaWV3
LCBXZWJLaXQ6OldlYkNvbG9yQ2hvb3NlclByb3h5RWZsKiBjb2xvckNob29zZXIsIGNvbnN0IFN0
cmluZyYgaW5wdXRWYWx1ZSkKK3sKKyAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1Zp
ZXcsIHNtYXJ0RGF0YSk7CisgICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0
YSwgcHJpdik7CisKKyAgICBwcml2LT5jb2xvckNob29zZXIgPSBjb2xvckNob29zZXI7CisKKyAg
ICBld2tfdmlld19pbnB1dF9waWNrZXJfcmVxdWVzdChld2tWaWV3LCBFV0tfSU5QVVRfVFlQRV9D
T0xPUiwgaW5wdXRWYWx1ZSk7Cit9CisjZW5kaWYKKworRWluYV9Cb29sIGV3a192aWV3X2NvbG9y
X2Nob29zZXJfY29sb3Jfc2V0KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBjb25zdCBjaGFyKiBjb2xv
cikKK3sKKyNpZiBFTkFCTEUoSU5QVVRfVFlQRV9DT0xPUikKKyAgICBFV0tfVklFV19TRF9HRVRf
T1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwgZmFsc2UpOworICAgIEVXS19WSUVXX1BSSVZf
R0VUX09SX1JFVFVSTihzbWFydERhdGEsIHByaXYsIGZhbHNlKTsKKworICAgIGlmICghcHJpdi0+
Y29sb3JDaG9vc2VyKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBwcml2LT5jb2xvckNo
b29zZXItPnNldFNlbGVjdGVkQ29sb3IoQ29sb3IoY29sb3IpKTsKKworICAgIHJldHVybiB0cnVl
OworI2Vsc2UKKyAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYKK30KKworRWluYV9Cb29sIGV3a192
aWV3X2NvbG9yX2Nob29zZXJfY2xvc2UoRXZhc19PYmplY3QqIGV3a1ZpZXcpCit7CisjaWYgRU5B
QkxFKElOUFVUX1RZUEVfQ09MT1IpCisgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tW
aWV3LCBzbWFydERhdGEsIGZhbHNlKTsKKyAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4o
c21hcnREYXRhLCBwcml2LCBmYWxzZSk7CisKKyAgICBpZiAoIXByaXYtPmNvbG9yQ2hvb3NlcikK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcHJpdi0+Y29sb3JDaG9vc2VyLT5lbmRDaG9v
c2VyKCk7CisgICAgcHJpdi0+Y29sb3JDaG9vc2VyID0gMDsKKworICAgIHJldHVybiB0cnVlOwor
I2Vsc2UKKyAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5oCmluZGV4IDVkNjlkZjQuLjI0NjkzYzQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmgKKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuaApAQCAtNjcsNiArNjcsMjcg
QEAgZXh0ZXJuICJDIiB7CiB0eXBlZGVmIHN0cnVjdCBfRXdrX1ZpZXdfU21hcnRfRGF0YSBFd2tf
Vmlld19TbWFydF9EYXRhOwogdHlwZWRlZiBzdHJ1Y3QgX0V3a19WaWV3X1NtYXJ0X0NsYXNzIEV3
a19WaWV3X1NtYXJ0X0NsYXNzOwogCisvKioKKyAqIFxlbnVtICAgIEV3a19JbnB1dF9UeXBlCisg
KiBAYnJpZWYgICBQcm92aWRlcyB0eXBlIG9mIGlucHV0IGVsZW1lbnQKKyAqLworZW51bSBfRXdr
X0lucHV0X1R5cGUgeworICAgIEVXS19JTlBVVF9UWVBFX1RFTEVQSE9ORSA9IDEsIAorICAgIEVX
S19JTlBVVF9UWVBFX05VTUJFUiwKKyAgICBFV0tfSU5QVVRfVFlQRV9FTUFJTCwKKyAgICBFV0tf
SU5QVVRfVFlQRV9VUkwsCisgICAgRVdLX0lOUFVUX1RZUEVfUEFTU1dPUkQsCisgICAgRVdLX0lO
UFVUX1RZUEVfQ09MT1IsCisgICAgRVdLX0lOUFVUX1RZUEVfREFURSwKKyAgICBFV0tfSU5QVVRf
VFlQRV9EQVRFVElNRSwKKyAgICBFV0tfSU5QVVRfVFlQRV9EQVRFVElNRUxPQ0FMLAorICAgIEVX
S19JTlBVVF9UWVBFX01PTlRILAorICAgIEVXS19JTlBVVF9UWVBFX1RJTUUsCisgICAgRVdLX0lO
UFVUX1RZUEVfV0VFSworfTsKKy8qKiBDcmVhdGVzIGEgdHlwZSBuYW1lIGZvciBfRXdrX0lucHV0
X1R5cGVfRXdrX0lucHV0X1R5cGUgKi8KK3R5cGVkZWYgZW51bSBfRXdrX0lucHV0X1R5cGUgRXdr
X0lucHV0X1R5cGU7CisKIC8vLyBFd2sgdmlldydzIGNsYXNzLCB0byBiZSBvdmVycmlkZGVuIGJ5
IHN1Yi1jbGFzc2VzLgogc3RydWN0IF9Fd2tfVmlld19TbWFydF9DbGFzcyB7CiAgICAgRXZhc19T
bWFydF9DbGFzcyBzYzsgLyoqPCBhbGwgYnV0ICdkYXRhJyBpcyBmcmVlIHRvIGJlIGNoYW5nZWQu
ICovCkBAIC04MywxMyArMTA0LDE2IEBAIHN0cnVjdCBfRXdrX1ZpZXdfU21hcnRfQ2xhc3Mgewog
ICAgIEVpbmFfQm9vbCAoKm1vdXNlX21vdmUpKEV3a19WaWV3X1NtYXJ0X0RhdGEgKnNkLCBjb25z
dCBFdmFzX0V2ZW50X01vdXNlX01vdmUgKmV2KTsKICAgICBFaW5hX0Jvb2wgKCprZXlfZG93biko
RXdrX1ZpZXdfU21hcnRfRGF0YSAqc2QsIGNvbnN0IEV2YXNfRXZlbnRfS2V5X0Rvd24gKmV2KTsK
ICAgICBFaW5hX0Jvb2wgKCprZXlfdXApKEV3a19WaWV3X1NtYXJ0X0RhdGEgKnNkLCBjb25zdCBF
dmFzX0V2ZW50X0tleV9VcCAqZXYpOworCisgICAgLy8gU2hvd3MgaW5wdXQgcGlja2VyIGJhc2Vk
IG9uIGlucHV0IHR5cGUgd2l0aCBpbml0aWFsIHZhbHVlLgorICAgIEVpbmFfQm9vbCAoKmlucHV0
X3BpY2tlcl9zaG93KShFd2tfVmlld19TbWFydF9EYXRhICpzZCwgRXdrX0lucHV0X1R5cGUgaW5w
dXRfdHlwZSwgY29uc3QgY2hhciAqaW5wdXRfdmFsdWUpOwogfTsKIAogLyoqCiAgKiBUaGUgdmVy
c2lvbiB5b3UgaGF2ZSB0byBwdXQgaW50byB0aGUgdmVyc2lvbiBmaWVsZAogICogaW4gdGhlIEBh
IEV3a19WaWV3X1NtYXJ0X0NsYXNzIHN0cnVjdHVyZS4KICAqLwotI2RlZmluZSBFV0tfVklFV19T
TUFSVF9DTEFTU19WRVJTSU9OIDFVTAorI2RlZmluZSBFV0tfVklFV19TTUFSVF9DTEFTU19WRVJT
SU9OIDJVTAogCiAvKioKICAqIEluaXRpYWxpemVyIGZvciB3aG9sZSBFd2tfVmlld19TbWFydF9D
bGFzcyBzdHJ1Y3R1cmUuCkBAIC0xMDEsNyArMTI1LDcgQEAgc3RydWN0IF9Fd2tfVmlld19TbWFy
dF9DbGFzcyB7CiAgKiBAc2VlIEVXS19WSUVXX1NNQVJUX0NMQVNTX0lOSVRfVkVSU0lPTgogICog
QHNlZSBFV0tfVklFV19TTUFSVF9DTEFTU19JTklUX05BTUVfVkVSU0lPTgogICovCi0jZGVmaW5l
IEVXS19WSUVXX1NNQVJUX0NMQVNTX0lOSVQoc21hcnRfY2xhc3NfaW5pdCkge3NtYXJ0X2NsYXNz
X2luaXQsIEVXS19WSUVXX1NNQVJUX0NMQVNTX1ZFUlNJT04sIDAsIDAsIDAsIDAsIDAsIDAsIDAs
IDB9CisjZGVmaW5lIEVXS19WSUVXX1NNQVJUX0NMQVNTX0lOSVQoc21hcnRfY2xhc3NfaW5pdCkg
e3NtYXJ0X2NsYXNzX2luaXQsIEVXS19WSUVXX1NNQVJUX0NMQVNTX1ZFUlNJT04sIDAsIDAsIDAs
IDAsIDAsIDAsIDAsIDAsIDB9CiAKIC8qKgogICogSW5pdGlhbGl6ZXIgdG8gemVybyBhIHdob2xl
IEV3a19WaWV3X1NtYXJ0X0NsYXNzIHN0cnVjdHVyZS4KQEAgLTQ0MSw2ICs0NjUsMjUgQEAgRUFQ
SSBjb25zdCBjaGFyICAqZXdrX3ZpZXdfc2V0dGluZ19lbmNvZGluZ19jdXN0b21fZ2V0KGNvbnN0
IEV2YXNfT2JqZWN0ICpvKTsKICAqLwogRUFQSSBFaW5hX0Jvb2wgICAgZXdrX3ZpZXdfc2V0dGlu
Z19lbmNvZGluZ19jdXN0b21fc2V0KEV2YXNfT2JqZWN0ICpvLCBjb25zdCBjaGFyICplbmNvZGlu
Zyk7CiAKKy8qKgorICogU2V0cyB0aGUgY29sb3IgdmFsdWUgb2YgY29sb3IgY2hvb3NlcgorICoK
KyAqIEBwYXJhbSBvIHZpZXcgb2JqZWN0IGNvbnRhaW5zIGNvbG9yIGNob29zZXIKKyAqIEBwYXJh
bSBjb2xvciB0aGUgY29sb3IgdmFsdWUgdG8gYmUgc2V0CisgKgorICogQHJldHVybiBAYyBFSU5B
X1RSVUUgb24gc3VjY2VzcyBAYyBFSU5BX0ZBTFNFIG90aGVyd2lzZQorICovCitFQVBJIEVpbmFf
Qm9vbCBld2tfdmlld19jb2xvcl9jaG9vc2VyX2NvbG9yX3NldChFdmFzX09iamVjdCAqbywgY29u
c3QgY2hhciAqY29sb3IpOworCisvKioKKyAqIENsb3NlcyBjb2xvciBjaG9vc2VyCisgKgorICog
QHBhcmFtIG8gdmlldyBvYmplY3QgY29udGFpbnMgY29sb3IgY2hvb3NlcgorICoKKyAqIEByZXR1
cm4gQGMgRUlOQV9UUlVFIG9uIHN1Y2Nlc3MgQGMgRUlOQV9GQUxTRSBvdGhlcndpc2UKKyAqLwor
RUFQSSBFaW5hX0Jvb2wgZXdrX3ZpZXdfY29sb3JfY2hvb3Nlcl9jbG9zZShFdmFzX09iamVjdCAq
byk7CisKICNpZmRlZiBfX2NwbHVzcGx1cwogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlld19wcml2YXRlLmggYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlld19wcml2YXRlLmgKaW5kZXggYTBhNjc5MC4u
MmE3OTA5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdr
X3ZpZXdfcHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3
a192aWV3X3ByaXZhdGUuaApAQCAtMjIsOSArMjIsMTQgQEAKICNkZWZpbmUgZXdrX3ZpZXdfcHJp
dmF0ZV9oCiAKICNpbmNsdWRlICJXZWJQYWdlUHJveHkuaCIKKyNpbmNsdWRlICJld2tfdmlldy5o
IgogI2luY2x1ZGUgPEV2YXMuaD4KICNpbmNsdWRlIDxXZWJLaXQyL1dLQmFzZS5oPgogCisjaWYg
RU5BQkxFKElOUFVUX1RZUEVfQ09MT1IpCisjaW5jbHVkZSAiV2ViQ29sb3JDaG9vc2VyUHJveHlF
ZmwuaCIKKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBDdXJzb3I7CiBjbGFz
cyBJbnRSZWN0OwpAQCAtNzIsNCArNzcsOSBAQCB2b2lkIGV3a192aWV3X2ludGVudF9zZXJ2aWNl
X3JlZ2lzdGVyKEV2YXNfT2JqZWN0KiBld2tWaWV3LCBjb25zdCBFd2tfSW50ZW50X1NlcgogCiBX
ZWJLaXQ6OldlYlBhZ2VQcm94eSogZXdrX3ZpZXdfcGFnZV9nZXQoY29uc3QgRXZhc19PYmplY3Qq
IGV3a1ZpZXcpOwogCit2b2lkIGV3a192aWV3X2lucHV0X3BpY2tlcl9yZXF1ZXN0KEV2YXNfT2Jq
ZWN0KiBld2tWaWV3LCBFd2tfSW5wdXRfVHlwZSBpbnB1dFR5cGUsIGNvbnN0IFN0cmluZyYgaW5w
dXRWYWx1ZSk7CisjaWYgRU5BQkxFKElOUFVUX1RZUEVfQ09MT1IpCit2b2lkIGV3a192aWV3X2Nv
bG9yX2Nob29zZXJfcmVxdWVzdChFdmFzX09iamVjdCogZXdrVmlldywgV2ViS2l0OjpXZWJDb2xv
ckNob29zZXJQcm94eUVmbCogY29sb3JDaG9vc2VyLCBjb25zdCBTdHJpbmcmIGlucHV0VmFsdWUp
OworI2VuZGlmCisKICNlbmRpZiAvLyBld2tfdmlld19wcml2YXRlX2gKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViQ29sb3JDaG9vc2VyUHJveHlFZmwuY3BwIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJDb2xvckNob29zZXJQcm94eUVmbC5jcHAK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzllZDk2MQotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViQ29sb3JDaG9vc2VyUHJveHlF
ZmwuY3BwCkBAIC0wLDAgKzEsNTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgU2Ftc3Vu
ZyBFbGVjdHJvbmljcy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJXZWJDb2xvckNob29zZXJQcm94eUVmbC5oIgorCisjaWYgRU5B
QkxFKElOUFVUX1RZUEVfQ09MT1IpCisKKyNpbmNsdWRlICJld2tfdmlld19wcml2YXRlLmgiCisK
K25hbWVzcGFjZSBXZWJLaXQgeworCitXZWJDb2xvckNob29zZXJQcm94eUVmbDo6V2ViQ29sb3JD
aG9vc2VyUHJveHlFZmwoRXZhc19PYmplY3QqIHdlYlZpZXcsIFdlYkNvbG9yQ2hvb3NlclByb3h5
OjpDbGllbnQqIGNsaWVudCwgY29uc3QgV2ViQ29yZTo6Q29sb3ImIGNvbG9yKQorICAgIDogV2Vi
Q29sb3JDaG9vc2VyUHJveHkoY2xpZW50KQoreworICAgIGV3a192aWV3X2NvbG9yX2Nob29zZXJf
cmVxdWVzdCh3ZWJWaWV3LCB0aGlzLCBjb2xvci5zZXJpYWxpemVkKCkpOworfQorCitXZWJDb2xv
ckNob29zZXJQcm94eUVmbDo6fldlYkNvbG9yQ2hvb3NlclByb3h5RWZsKCkKK3sKK30KKwordm9p
ZCBXZWJDb2xvckNob29zZXJQcm94eUVmbDo6ZW5kQ2hvb3NlcigpCit7CisgICAgaWYgKG1fY2xp
ZW50KQorICAgICAgICBtX2NsaWVudC0+ZGlkRW5kQ29sb3JDaG9vc2VyKCk7Cit9CisKK3ZvaWQg
V2ViQ29sb3JDaG9vc2VyUHJveHlFZmw6OnNldFNlbGVjdGVkQ29sb3IoY29uc3QgV2ViQ29yZTo6
Q29sb3ImIGNvbG9yKQoreworICAgIGlmIChtX2NsaWVudCkKKyAgICAgICAgbV9jbGllbnQtPmRp
ZENob29zZUNvbG9yKGNvbG9yKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRp
ZiAvLyBFTkFCTEUoSU5QVVRfVFlQRV9DT0xPUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9lZmwvV2ViQ29sb3JDaG9vc2VyUHJveHlFZmwuaCBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9lZmwvV2ViQ29sb3JDaG9vc2VyUHJveHlFZmwuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwLi4xMDdhM2QxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL2VmbC9XZWJDb2xvckNob29zZXJQcm94eUVmbC5oCkBAIC0wLDAgKzEs
NTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgU2Ftc3VuZyBFbGVjdHJvbmljcy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViQ29sb3JDaG9vc2VyUHJveHlF
ZmxfaAorI2RlZmluZSBXZWJDb2xvckNob29zZXJQcm94eUVmbF9oCisKKyNpZiBFTkFCTEUoSU5Q
VVRfVFlQRV9DT0xPUikKKworI2luY2x1ZGUgIkNvbG9yLmgiCisjaW5jbHVkZSAiV2ViQ29sb3JD
aG9vc2VyUHJveHkuaCIKKwordHlwZWRlZiBzdHJ1Y3QgX0V2YXNfT2JqZWN0IEV2YXNfT2JqZWN0
OworCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2ViUGFnZVByb3h5OworCitjbGFzcyBX
ZWJDb2xvckNob29zZXJQcm94eUVmbCA6IHB1YmxpYyBXZWJDb2xvckNob29zZXJQcm94eSB7Citw
dWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViQ29sb3JDaG9vc2VyUHJveHlFZmw+IGNy
ZWF0ZShFdmFzX09iamVjdCogd2ViVmlldywgV2ViQ29sb3JDaG9vc2VyUHJveHk6OkNsaWVudCog
Y2xpZW50LCBjb25zdCBXZWJDb3JlOjpDb2xvciYgY29sb3IpCisgICAgeworICAgICAgICByZXR1
cm4gYWRvcHRSZWYobmV3IFdlYkNvbG9yQ2hvb3NlclByb3h5RWZsKHdlYlZpZXcsIGNsaWVudCwg
Y29sb3IpKTsKKyAgICB9CisgICAgdmlydHVhbCB+V2ViQ29sb3JDaG9vc2VyUHJveHlFZmwoKTsK
KworICAgIHZpcnR1YWwgdm9pZCBlbmRDaG9vc2VyKCk7CisgICAgdmlydHVhbCB2b2lkIHNldFNl
bGVjdGVkQ29sb3IoY29uc3QgV2ViQ29yZTo6Q29sb3ImKTsKKworcHJpdmF0ZToKKyAgICBXZWJD
b2xvckNob29zZXJQcm94eUVmbChFdmFzX09iamVjdCosIFdlYkNvbG9yQ2hvb3NlclByb3h5OjpD
bGllbnQqLCBjb25zdCBXZWJDb3JlOjpDb2xvciYpOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoSU5QVVRfVFlQRV9DT0xPUikKKworI2VuZGlmIC8vIFdl
YkNvbG9yQ2hvb3NlclByb3h5RWZsX2gK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>157372</attachid>
            <date>2012-08-08 19:32:14 -0700</date>
            <delta_ts>2012-08-17 04:04:22 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>diff</filename>
            <type>text/plain</type>
            <size>16302</size>
            <attacher name="KwangYong Choi">ky0.choi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCBkY2Q4N2Y1Li42MDkwNjlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDEg
QEAKKzIwMTItMDctMjUgIEt3YW5nWW9uZyBDaG9pICA8a3kwLmNob2lAc2Ftc3VuZy5jb20+CisK
KyAgICAgICAgW0VGTF1bV0syXSBJbXBsZW1lbnRlZCBjb2xvciBjaG9vc2VyIHByb3h5IGFuZCBp
bnB1dCBwaWNrZXIgaW50ZXJmYWNlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD05MTgzMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEltcGxlbWVudGVkIGNvbG9yIGNob29zZXIgcHJveHkgYW5kIGlucHV0IHBp
Y2tlciBpbnRlcmZhY2UgZm9yIEVGTC4KKyAgICAgICAgSW5wdXQgcGlja2VyIGludGVyZmFjZSBj
YW4gYmUgdXNlZCBmb3IgZ2VuZXJhbCB1c2Ugb2YgYWxsIHRoZSBpbnB1dAorICAgICAgICB0eXBl
cyBpbmNsdWRpbmcgY29sb3IgaW5wdXQgdHlwZS4KKworICAgICAgICBUaGUgZXh0ZXJuYWwgYXBw
bGljYXRpb24gc2hvdWxkIGltcGxlbWVudCBpbnB1dCBwaWNrZXIgYnkgb3ZlcnJpZGluZworICAg
ICAgICBzbWFydCBjbGFzcyBmdW5jdGlvbi4KKworICAgICAgICAqIFBsYXRmb3JtRWZsLmNtYWtl
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL1BhZ2VDbGllbnRJbXBsLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OmNyZWF0ZUNvbG9yQ2hvb3NlclByb3h5KToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5jcHA6CisgICAgICAgIChfRXdrX1Zp
ZXdfUHJpdmF0ZV9EYXRhKToKKyAgICAgICAgKF9ld2tfdmlld19wcml2X25ldyk6CisgICAgICAg
IChld2tfdmlld19zbWFydF9jbGFzc19pbml0KToKKyAgICAgICAgKGV3a192aWV3X2lucHV0X3Bp
Y2tlcl9yZXF1ZXN0KTogUmVxdWVzdHMgaW5wdXQgcGlja2VyLgorICAgICAgICAoZXdrX3ZpZXdf
Y29sb3JfY2hvb3Nlcl9yZXF1ZXN0KTogUmVxdWVzdHMgY29sb3IgcGlja2VyLgorICAgICAgICAo
ZXdrX3ZpZXdfY29sb3JfY2hvb3Nlcl9jb2xvcl9zZXQpOiBTZXRzIHRoZSBjb2xvciBieSBjYWxs
aW5nIFdlYkNvbG9yQ2hvb3NlclByb3h5RWZsOjpzZXRTZWxlY3RlZENvbG9yLgorICAgICAgICAo
ZXdrX3ZpZXdfY29sb3JfY2hvb3Nlcl9jbG9zZSk6IENhbGxzIFdlYkNvbG9yQ2hvb3NlclByb3h5
RWZsOjplbmRDaG9vc2VyCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuaDoK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlld19wcml2YXRlLmg6CisgICAgICAg
ICogVUlQcm9jZXNzL2VmbC9XZWJDb2xvckNob29zZXJQcm94eUVmbC5jcHA6IEFkZGVkLgorICAg
ICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29sb3JDaG9vc2VyUHJveHlFZmw6
OldlYkNvbG9yQ2hvb3NlclByb3h5RWZsKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29sb3JDaG9v
c2VyUHJveHlFZmw6On5XZWJDb2xvckNob29zZXJQcm94eUVmbCk6CisgICAgICAgIChXZWJLaXQ6
OldlYkNvbG9yQ2hvb3NlclByb3h5RWZsOjplbmRDaG9vc2VyKToKKyAgICAgICAgKFdlYktpdDo6
V2ViQ29sb3JDaG9vc2VyUHJveHlFZmw6OnNldFNlbGVjdGVkQ29sb3IpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9lZmwvV2ViQ29sb3JDaG9vc2VyUHJveHlFZmwuaDogQWRkZWQuCisgICAgICAgIChX
ZWJLaXQpOgorICAgICAgICAoV2ViQ29sb3JDaG9vc2VyUHJveHlFZmwpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJDb2xvckNob29zZXJQcm94eUVmbDo6Y3JlYXRlKToKKwogMjAxMi0wNy0yNSAgUnl1
YW4gQ2hvaSAgPHJ5dWFuLmNob2lAc2Ftc3VuZy5jb20+CiAKICAgICAgICAgW0VGTF1bV0syXSBB
ZGQgZXdrX3ZpZXdfY3Vyc29yX3NldCB0byBjaGFuZ2UgY3Vyc29yLgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVm
bC5jbWFrZQppbmRleCA2NmFkMDM3Li45YmFjMzViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9QbGF0Zm9ybUVmbC5jbWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFr
ZQpAQCAtNTksNiArNTksNyBAQCBMSVNUKEFQUEVORCBXZWJLaXQyX1NPVVJDRVMKICAgICBVSVBy
b2Nlc3MvY2Fpcm8vQmFja2luZ1N0b3JlQ2Fpcm8uY3BwCiAKICAgICBVSVByb2Nlc3MvZWZsL1Rl
eHRDaGVja2VyRWZsLmNwcAorICAgIFVJUHJvY2Vzcy9lZmwvV2ViQ29sb3JDaG9vc2VyUHJveHlF
ZmwuY3BwCiAgICAgVUlQcm9jZXNzL2VmbC9XZWJDb250ZXh0RWZsLmNwcAogICAgIFVJUHJvY2Vz
cy9lZmwvV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eUVmbC5jcHAKICAgICBVSVByb2Nlc3MvZWZs
L1dlYkluc3BlY3RvclByb3h5RWZsLmNwcApAQCAtMTE0LDYgKzExNSw3IEBAIExJU1QoQVBQRU5E
IFdlYktpdDJfSU5DTFVERV9ESVJFQ1RPUklFUwogICAgICIke1dFQktJVDJfRElSfS9VSVByb2Nl
c3MvQVBJL0MvZWZsIgogICAgICIke1dFQktJVDJfRElSfS9VSVByb2Nlc3MvQVBJL0Mvc291cCIK
ICAgICAiJHtXRUJLSVQyX0RJUn0vVUlQcm9jZXNzL0FQSS9lZmwiCisgICAgIiR7V0VCS0lUMl9E
SVJ9L1VJUHJvY2Vzcy9lZmwiCiAgICAgIiR7V0VCS0lUMl9ESVJ9L1VJUHJvY2Vzcy9zb3VwIgog
ICAgICIke1dFQktJVDJfRElSfS9XZWJQcm9jZXNzL0Rvd25sb2Fkcy9zb3VwIgogICAgICIke1dF
QktJVDJfRElSfS9XZWJQcm9jZXNzL2VmbCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZWZsL1BhZ2VDbGllbnRJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZWZsL1BhZ2VDbGllbnRJbXBsLmNwcAppbmRleCAxMThlZGIxLi40M2Y5OWNmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9QYWdlQ2xpZW50SW1w
bC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvUGFnZUNsaWVudElt
cGwuY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiRHJhd2luZ0FyZWFQcm94eUltcGwu
aCIKICNpbmNsdWRlICJOYXRpdmVXZWJLZXlib2FyZEV2ZW50LmgiCiAjaW5jbHVkZSAiTm90SW1w
bGVtZW50ZWQuaCIKKyNpbmNsdWRlICJXZWJDb2xvckNob29zZXJQcm94eUVmbC5oIgogI2luY2x1
ZGUgIldlYkNvbnRleHQuaCIKICNpbmNsdWRlICJXZWJDb250ZXh0TWVudVByb3h5LmgiCiAjaW5j
bHVkZSAiV2ViUGFnZVByb3h5LmgiCkBAIC0yMDYsMTAgKzIwNyw5IEBAIFBhc3NSZWZQdHI8V2Vi
Q29udGV4dE1lbnVQcm94eT4gUGFnZUNsaWVudEltcGw6OmNyZWF0ZUNvbnRleHRNZW51UHJveHko
V2ViUGFnZVByCiB9CiAKICNpZiBFTkFCTEUoSU5QVVRfVFlQRV9DT0xPUikKLVBhc3NSZWZQdHI8
V2ViQ29sb3JDaG9vc2VyUHJveHk+IFBhZ2VDbGllbnRJbXBsOjpjcmVhdGVDb2xvckNob29zZXJQ
cm94eShXZWJQYWdlUHJveHkqLCBjb25zdCBXZWJDb3JlOjpDb2xvciYpCitQYXNzUmVmUHRyPFdl
YkNvbG9yQ2hvb3NlclByb3h5PiBQYWdlQ2xpZW50SW1wbDo6Y3JlYXRlQ29sb3JDaG9vc2VyUHJv
eHkoV2ViUGFnZVByb3h5KiBwYWdlLCBjb25zdCBXZWJDb3JlOjpDb2xvciYgaW5pdGlhbENvbG9y
KQogewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIFdl
YkNvbG9yQ2hvb3NlclByb3h5RWZsOjpjcmVhdGUobV92aWV3V2lkZ2V0LCBwYWdlLCBpbml0aWFs
Q29sb3IpOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZWZsL2V3a192aWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZs
L2V3a192aWV3LmNwcAppbmRleCA4NDQ4ZmQ2Li5iY2NjYTUxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5jcHAKKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuY3BwCkBAIC02Niw2ICs2NiwxMCBAQCBzdHJ1
Y3QgX0V3a19WaWV3X1ByaXZhdGVfRGF0YSB7CiAgICAgYm9vbCBpc1VzaW5nRWNvcmVYOwogI2Vu
ZGlmCiAKKyNpZiBFTkFCTEUoSU5QVVRfVFlQRV9DT0xPUikKKyAgICBXZWJDb2xvckNob29zZXJQ
cm94eUVmbCogY29sb3JDaG9vc2VyOworI2VuZGlmCisKICAgICBfRXdrX1ZpZXdfUHJpdmF0ZV9E
YXRhKCkKICAgICAgICAgOiB1cmkoMCkKICAgICAgICAgLCB0aXRsZSgwKQpAQCAtNzYsNiArODAs
OSBAQCBzdHJ1Y3QgX0V3a19WaWV3X1ByaXZhdGVfRGF0YSB7CiAjaWZkZWYgSEFWRV9FQ09SRV9Y
CiAgICAgICAgICwgaXNVc2luZ0Vjb3JlWChmYWxzZSkKICNlbmRpZgorI2lmIEVOQUJMRShJTlBV
VF9UWVBFX0NPTE9SKQorICAgICAgICAsIGNvbG9yQ2hvb3NlcigwKQorI2VuZGlmCiAgICAgeyB9
CiAKICAgICB+X0V3a19WaWV3X1ByaXZhdGVfRGF0YSgpCkBAIC0xMDkwLDMgKzEwOTcsODIgQEAg
RWluYV9Cb29sIGV3a192aWV3X3NldHRpbmdfZW5jb2RpbmdfY3VzdG9tX3NldChFdmFzX09iamVj
dCogZXdrVmlldywgY29uc3QgY2hhcioKIAogICAgIHJldHVybiB0cnVlOwogfQorCit2b2lkIGV3
a192aWV3X2lucHV0X3BpY2tlcl9yZXF1ZXN0KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBFd2tfSW5w
dXRfVHlwZSBpbnB1dFR5cGUsIGNvbnN0IFN0cmluZyYgaW5wdXRWYWx1ZSkKK3sKKyAgICBFV0tf
VklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSk7CisgICAgRUlOQV9TQUZF
VFlfT05fTlVMTF9SRVRVUk4oc21hcnREYXRhLT5hcGkpOworCisgICAgaWYgKCFzbWFydERhdGEt
PmFwaS0+aW5wdXRfcGlja2VyX3Nob3cpCisgICAgICAgIHJldHVybjsKKworICAgIHNtYXJ0RGF0
YS0+YXBpLT5pbnB1dF9waWNrZXJfc2hvdyhzbWFydERhdGEsIGlucHV0VHlwZSwgaW5wdXRWYWx1
ZS51dGY4KCkuZGF0YSgpKTsKK30KKwordm9pZCBld2tfdmlld19pbnB1dF9waWNrZXJfZGVzdHJv
eShFdmFzX09iamVjdCogZXdrVmlldywgRXdrX0lucHV0X1R5cGUgaW5wdXRUeXBlKQoreworICAg
IEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhKTsKKyAgICBFSU5B
X1NBRkVUWV9PTl9OVUxMX1JFVFVSTihzbWFydERhdGEtPmFwaSk7CisKKyAgICBpZiAoIXNtYXJ0
RGF0YS0+YXBpLT5pbnB1dF9waWNrZXJfaGlkZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgc21h
cnREYXRhLT5hcGktPmlucHV0X3BpY2tlcl9oaWRlKHNtYXJ0RGF0YSwgaW5wdXRUeXBlKTsKK30K
KworI2lmIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9SKQordm9pZCBld2tfdmlld19jb2xvcl9jaG9v
c2VyX3JlcXVlc3QoRXZhc19PYmplY3QqIGV3a1ZpZXcsIFdlYktpdDo6V2ViQ29sb3JDaG9vc2Vy
UHJveHlFZmwqIGNvbG9yQ2hvb3NlciwgY29uc3QgU3RyaW5nJiBpbnB1dFZhbHVlKQoreworICAg
IEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhKTsKKyAgICBFV0tf
VklFV19QUklWX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBwcml2KTsKKworICAgIHByaXYtPmNv
bG9yQ2hvb3NlciA9IGNvbG9yQ2hvb3NlcjsKKworICAgIGV3a192aWV3X2lucHV0X3BpY2tlcl9y
ZXF1ZXN0KGV3a1ZpZXcsIEVXS19JTlBVVF9UWVBFX0NPTE9SLCBpbnB1dFZhbHVlKTsKK30KKwor
dm9pZCBld2tfdmlld19jb2xvcl9jaG9vc2VyX2Rlc3Ryb3koRXZhc19PYmplY3QqIGV3a1ZpZXcp
Cit7CisgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEpOwor
ICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIHByaXYpOworCisgICAg
cHJpdi0+Y29sb3JDaG9vc2VyID0gMDsKKworICAgIGV3a192aWV3X2lucHV0X3BpY2tlcl9kZXN0
cm95KGV3a1ZpZXcsIEVXS19JTlBVVF9UWVBFX0NPTE9SKTsKK30KKyNlbmRpZgorCitFaW5hX0Jv
b2wgZXdrX3ZpZXdfY29sb3JfY2hvb3Nlcl9jb2xvcl9zZXQoRXZhc19PYmplY3QqIGV3a1ZpZXcs
IGNvbnN0IGNoYXIqIGNvbG9yKQoreworI2lmIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9SKQorICAg
IEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhLCBmYWxzZSk7Cisg
ICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgcHJpdiwgZmFsc2UpOwor
CisgICAgaWYgKCFwcml2LT5jb2xvckNob29zZXIpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwor
ICAgIHByaXYtPmNvbG9yQ2hvb3Nlci0+c2V0U2VsZWN0ZWRDb2xvcihDb2xvcihjb2xvcikpOwor
CisgICAgcmV0dXJuIHRydWU7CisjZWxzZQorICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgorfQor
CitFaW5hX0Jvb2wgZXdrX3ZpZXdfY29sb3JfY2hvb3Nlcl9jbG9zZShFdmFzX09iamVjdCogZXdr
VmlldykKK3sKKyNpZiBFTkFCTEUoSU5QVVRfVFlQRV9DT0xPUikKKyAgICBFV0tfVklFV19TRF9H
RVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwgZmFsc2UpOworICAgIEVXS19WSUVXX1BS
SVZfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIHByaXYsIGZhbHNlKTsKKworICAgIGlmICghcHJp
di0+Y29sb3JDaG9vc2VyKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBwcml2LT5jb2xv
ckNob29zZXItPmVuZENob29zZXIoKTsKKyAgICBwcml2LT5jb2xvckNob29zZXIgPSAwOworCisg
ICAgcmV0dXJuIHRydWU7CisjZWxzZQorICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgorfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuaCBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmgKaW5kZXggNWQ2OWRmNC4u
Yzc2YzZmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdr
X3ZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5o
CkBAIC02Nyw2ICs2NywyNyBAQCBleHRlcm4gIkMiIHsKIHR5cGVkZWYgc3RydWN0IF9Fd2tfVmll
d19TbWFydF9EYXRhIEV3a19WaWV3X1NtYXJ0X0RhdGE7CiB0eXBlZGVmIHN0cnVjdCBfRXdrX1Zp
ZXdfU21hcnRfQ2xhc3MgRXdrX1ZpZXdfU21hcnRfQ2xhc3M7CiAKKy8qKgorICogXGVudW0gICAg
RXdrX0lucHV0X1R5cGUKKyAqIEBicmllZiAgIFByb3ZpZGVzIHR5cGUgb2YgaW5wdXQgZWxlbWVu
dAorICovCitlbnVtIF9Fd2tfSW5wdXRfVHlwZSB7CisgICAgRVdLX0lOUFVUX1RZUEVfVEVMRVBI
T05FID0gMSwgCisgICAgRVdLX0lOUFVUX1RZUEVfTlVNQkVSLAorICAgIEVXS19JTlBVVF9UWVBF
X0VNQUlMLAorICAgIEVXS19JTlBVVF9UWVBFX1VSTCwKKyAgICBFV0tfSU5QVVRfVFlQRV9QQVNT
V09SRCwKKyAgICBFV0tfSU5QVVRfVFlQRV9DT0xPUiwKKyAgICBFV0tfSU5QVVRfVFlQRV9EQVRF
LAorICAgIEVXS19JTlBVVF9UWVBFX0RBVEVUSU1FLAorICAgIEVXS19JTlBVVF9UWVBFX0RBVEVU
SU1FTE9DQUwsCisgICAgRVdLX0lOUFVUX1RZUEVfTU9OVEgsCisgICAgRVdLX0lOUFVUX1RZUEVf
VElNRSwKKyAgICBFV0tfSU5QVVRfVFlQRV9XRUVLCit9OworLyoqIENyZWF0ZXMgYSB0eXBlIG5h
bWUgZm9yIF9Fd2tfSW5wdXRfVHlwZV9Fd2tfSW5wdXRfVHlwZSAqLwordHlwZWRlZiBlbnVtIF9F
d2tfSW5wdXRfVHlwZSBFd2tfSW5wdXRfVHlwZTsKKwogLy8vIEV3ayB2aWV3J3MgY2xhc3MsIHRv
IGJlIG92ZXJyaWRkZW4gYnkgc3ViLWNsYXNzZXMuCiBzdHJ1Y3QgX0V3a19WaWV3X1NtYXJ0X0Ns
YXNzIHsKICAgICBFdmFzX1NtYXJ0X0NsYXNzIHNjOyAvKio8IGFsbCBidXQgJ2RhdGEnIGlzIGZy
ZWUgdG8gYmUgY2hhbmdlZC4gKi8KQEAgLTgzLDEzICsxMDQsMTcgQEAgc3RydWN0IF9Fd2tfVmll
d19TbWFydF9DbGFzcyB7CiAgICAgRWluYV9Cb29sICgqbW91c2VfbW92ZSkoRXdrX1ZpZXdfU21h
cnRfRGF0YSAqc2QsIGNvbnN0IEV2YXNfRXZlbnRfTW91c2VfTW92ZSAqZXYpOwogICAgIEVpbmFf
Qm9vbCAoKmtleV9kb3duKShFd2tfVmlld19TbWFydF9EYXRhICpzZCwgY29uc3QgRXZhc19FdmVu
dF9LZXlfRG93biAqZXYpOwogICAgIEVpbmFfQm9vbCAoKmtleV91cCkoRXdrX1ZpZXdfU21hcnRf
RGF0YSAqc2QsIGNvbnN0IEV2YXNfRXZlbnRfS2V5X1VwICpldik7CisKKyAgICAvLyBJbnB1dCBQ
aWNrZXIgQVBJCisgICAgRWluYV9Cb29sICgqaW5wdXRfcGlja2VyX3Nob3cpKEV3a19WaWV3X1Nt
YXJ0X0RhdGEgKnNkLCBFd2tfSW5wdXRfVHlwZSBpbnB1dF90eXBlLCBjb25zdCBjaGFyICppbnB1
dF92YWx1ZSk7CisgICAgRWluYV9Cb29sICgqaW5wdXRfcGlja2VyX2hpZGUpKEV3a19WaWV3X1Nt
YXJ0X0RhdGEgKnNkLCBFd2tfSW5wdXRfVHlwZSBpbnB1dF90eXBlKTsKIH07CiAKIC8qKgogICog
VGhlIHZlcnNpb24geW91IGhhdmUgdG8gcHV0IGludG8gdGhlIHZlcnNpb24gZmllbGQKICAqIGlu
IHRoZSBAYSBFd2tfVmlld19TbWFydF9DbGFzcyBzdHJ1Y3R1cmUuCiAgKi8KLSNkZWZpbmUgRVdL
X1ZJRVdfU01BUlRfQ0xBU1NfVkVSU0lPTiAxVUwKKyNkZWZpbmUgRVdLX1ZJRVdfU01BUlRfQ0xB
U1NfVkVSU0lPTiAyVUwKIAogLyoqCiAgKiBJbml0aWFsaXplciBmb3Igd2hvbGUgRXdrX1ZpZXdf
U21hcnRfQ2xhc3Mgc3RydWN0dXJlLgpAQCAtMTAxLDcgKzEyNiw3IEBAIHN0cnVjdCBfRXdrX1Zp
ZXdfU21hcnRfQ2xhc3MgewogICogQHNlZSBFV0tfVklFV19TTUFSVF9DTEFTU19JTklUX1ZFUlNJ
T04KICAqIEBzZWUgRVdLX1ZJRVdfU01BUlRfQ0xBU1NfSU5JVF9OQU1FX1ZFUlNJT04KICAqLwot
I2RlZmluZSBFV0tfVklFV19TTUFSVF9DTEFTU19JTklUKHNtYXJ0X2NsYXNzX2luaXQpIHtzbWFy
dF9jbGFzc19pbml0LCBFV0tfVklFV19TTUFSVF9DTEFTU19WRVJTSU9OLCAwLCAwLCAwLCAwLCAw
LCAwLCAwLCAwfQorI2RlZmluZSBFV0tfVklFV19TTUFSVF9DTEFTU19JTklUKHNtYXJ0X2NsYXNz
X2luaXQpIHtzbWFydF9jbGFzc19pbml0LCBFV0tfVklFV19TTUFSVF9DTEFTU19WRVJTSU9OLCAw
LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwfQogCiAvKioKICAqIEluaXRpYWxpemVyIHRvIHpl
cm8gYSB3aG9sZSBFd2tfVmlld19TbWFydF9DbGFzcyBzdHJ1Y3R1cmUuCkBAIC00NDEsNiArNDY2
LDI1IEBAIEVBUEkgY29uc3QgY2hhciAgKmV3a192aWV3X3NldHRpbmdfZW5jb2RpbmdfY3VzdG9t
X2dldChjb25zdCBFdmFzX09iamVjdCAqbyk7CiAgKi8KIEVBUEkgRWluYV9Cb29sICAgIGV3a192
aWV3X3NldHRpbmdfZW5jb2RpbmdfY3VzdG9tX3NldChFdmFzX09iamVjdCAqbywgY29uc3QgY2hh
ciAqZW5jb2RpbmcpOwogCisvKioKKyAqIFNldHMgdGhlIGNvbG9yIHZhbHVlIG9mIGNvbG9yIGNo
b29zZXIKKyAqCisgKiBAcGFyYW0gbyB2aWV3IG9iamVjdCBjb250YWlucyBjb2xvciBjaG9vc2Vy
CisgKiBAcGFyYW0gY29sb3IgdGhlIGNvbG9yIHZhbHVlIHRvIGJlIHNldAorICoKKyAqIEByZXR1
cm4gQGMgRUlOQV9UUlVFIG9uIHN1Y2Nlc3MgQGMgRUlOQV9GQUxTRSBvdGhlcndpc2UKKyAqLwor
RUFQSSBFaW5hX0Jvb2wgZXdrX3ZpZXdfY29sb3JfY2hvb3Nlcl9jb2xvcl9zZXQoRXZhc19PYmpl
Y3QgKm8sIGNvbnN0IGNoYXIgKmNvbG9yKTsKKworLyoqCisgKiBDbG9zZXMgY29sb3IgY2hvb3Nl
cgorICoKKyAqIEBwYXJhbSBvIHZpZXcgb2JqZWN0IGNvbnRhaW5zIGNvbG9yIGNob29zZXIKKyAq
CisgKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBvbiBzdWNjZXNzIEBjIEVJTkFfRkFMU0Ugb3RoZXJ3
aXNlCisgKi8KK0VBUEkgRWluYV9Cb29sIGV3a192aWV3X2NvbG9yX2Nob29zZXJfY2xvc2UoRXZh
c19PYmplY3QgKm8pOworCiAjaWZkZWYgX19jcGx1c3BsdXMKIH0KICNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXdfcHJpdmF0ZS5oIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXdfcHJpdmF0ZS5oCmluZGV4
IGEwYTY3OTAuLmIyMjI2ODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZWZsL2V3a192aWV3X3ByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2VmbC9ld2tfdmlld19wcml2YXRlLmgKQEAgLTIyLDkgKzIyLDE0IEBACiAjZGVmaW5lIGV3
a192aWV3X3ByaXZhdGVfaAogCiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5LmgiCisjaW5jbHVkZSAi
ZXdrX3ZpZXcuaCIKICNpbmNsdWRlIDxFdmFzLmg+CiAjaW5jbHVkZSA8V2ViS2l0Mi9XS0Jhc2Uu
aD4KIAorI2lmIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9SKQorI2luY2x1ZGUgIldlYkNvbG9yQ2hv
b3NlclByb3h5RWZsLmgiCisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQ3Vy
c29yOwogY2xhc3MgSW50UmVjdDsKQEAgLTcyLDQgKzc3LDExIEBAIHZvaWQgZXdrX3ZpZXdfaW50
ZW50X3NlcnZpY2VfcmVnaXN0ZXIoRXZhc19PYmplY3QqIGV3a1ZpZXcsIGNvbnN0IEV3a19JbnRl
bnRfU2VyCiAKIFdlYktpdDo6V2ViUGFnZVByb3h5KiBld2tfdmlld19wYWdlX2dldChjb25zdCBF
dmFzX09iamVjdCogZXdrVmlldyk7CiAKK3ZvaWQgZXdrX3ZpZXdfaW5wdXRfcGlja2VyX3JlcXVl
c3QoRXZhc19PYmplY3QqIGV3a1ZpZXcsIEV3a19JbnB1dF9UeXBlIGlucHV0VHlwZSwgY29uc3Qg
U3RyaW5nJiBpbnB1dFZhbHVlKTsKK3ZvaWQgZXdrX3ZpZXdfaW5wdXRfcGlja2VyX2Nsb3NlKEV2
YXNfT2JqZWN0KiBld2tWaWV3LCBFd2tfSW5wdXRfVHlwZSBpbnB1dFR5cGUpOworI2lmIEVOQUJM
RShJTlBVVF9UWVBFX0NPTE9SKQordm9pZCBld2tfdmlld19jb2xvcl9jaG9vc2VyX3JlcXVlc3Qo
RXZhc19PYmplY3QqIGV3a1ZpZXcsIFdlYktpdDo6V2ViQ29sb3JDaG9vc2VyUHJveHlFZmwqIGNv
bG9yQ2hvb3NlciwgY29uc3QgU3RyaW5nJiBpbnB1dFZhbHVlKTsKK3ZvaWQgZXdrX3ZpZXdfY29s
b3JfY2hvb3Nlcl9kZXN0cm95KEV2YXNfT2JqZWN0KiBld2tWaWV3KTsKKyNlbmRpZgorCiAjZW5k
aWYgLy8gZXdrX3ZpZXdfcHJpdmF0ZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvZWZsL1dlYkNvbG9yQ2hvb3NlclByb3h5RWZsLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9lZmwvV2ViQ29sb3JDaG9vc2VyUHJveHlFZmwuY3BwCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAuLjE3NGZiZjQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvZWZsL1dlYkNvbG9yQ2hvb3NlclByb3h5RWZsLmNwcApAQCAtMCwwICsx
LDYxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIFNhbXN1bmcgRWxlY3Ryb25pY3MuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiV2ViQ29sb3JDaG9vc2VyUHJveHlFZmwuaCIKKworI2lmIEVOQUJMRShJTlBVVF9UWVBFX0NP
TE9SKQorCisjaW5jbHVkZSAiZXdrX3ZpZXdfcHJpdmF0ZS5oIgorCituYW1lc3BhY2UgV2ViS2l0
IHsKKworV2ViQ29sb3JDaG9vc2VyUHJveHlFZmw6OldlYkNvbG9yQ2hvb3NlclByb3h5RWZsKEV2
YXNfT2JqZWN0KiB3ZWJWaWV3LCBXZWJDb2xvckNob29zZXJQcm94eTo6Q2xpZW50KiBjbGllbnQs
IGNvbnN0IFdlYkNvcmU6OkNvbG9yJiBjb2xvcikKKyAgICA6IFdlYkNvbG9yQ2hvb3NlclByb3h5
KGNsaWVudCkKKyAgICAsIG1fd2ViVmlldyh3ZWJWaWV3KQoreworICAgIGV3a192aWV3X2NvbG9y
X2Nob29zZXJfcmVxdWVzdChtX3dlYlZpZXcsIHRoaXMsIGNvbG9yLnNlcmlhbGl6ZWQoKSk7Cit9
CisKK1dlYkNvbG9yQ2hvb3NlclByb3h5RWZsOjp+V2ViQ29sb3JDaG9vc2VyUHJveHlFZmwoKQor
eworICAgIGV3a192aWV3X2NvbG9yX2Nob29zZXJfZGVzdHJveShtX3dlYlZpZXcpOworfQorCit2
b2lkIFdlYkNvbG9yQ2hvb3NlclByb3h5RWZsOjplbmRDaG9vc2VyKCkKK3sKKyAgICBpZiAobV9j
bGllbnQpCisgICAgICAgIG1fY2xpZW50LT5kaWRFbmRDb2xvckNob29zZXIoKTsKK30KKwordm9p
ZCBXZWJDb2xvckNob29zZXJQcm94eUVmbDo6c2V0U2VsZWN0ZWRDb2xvcihjb25zdCBXZWJDb3Jl
OjpDb2xvciYgY29sb3IpCit7CisgICAgaWYgKG1fY2xpZW50KQorICAgICAgICBtX2NsaWVudC0+
ZGlkQ2hvb3NlQ29sb3IoY29sb3IpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2Vu
ZGlmIC8vIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9SKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL2VmbC9XZWJDb2xvckNob29zZXJQcm94eUVmbC5oIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL2VmbC9XZWJDb2xvckNob29zZXJQcm94eUVmbC5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNmOWM0YjEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYkNvbG9yQ2hvb3NlclByb3h5RWZsLmgKQEAgLTAsMCAr
MSw2MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNzLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJDb2xvckNob29zZXJQcm94
eUVmbF9oCisjZGVmaW5lIFdlYkNvbG9yQ2hvb3NlclByb3h5RWZsX2gKKworI2lmIEVOQUJMRShJ
TlBVVF9UWVBFX0NPTE9SKQorCisjaW5jbHVkZSAiQ29sb3IuaCIKKyNpbmNsdWRlICJXZWJDb2xv
ckNob29zZXJQcm94eS5oIgorCit0eXBlZGVmIHN0cnVjdCBfRXZhc19PYmplY3QgRXZhc19PYmpl
Y3Q7CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJQYWdlUHJveHk7CisKK2NsYXNz
IFdlYkNvbG9yQ2hvb3NlclByb3h5RWZsIDogcHVibGljIFdlYkNvbG9yQ2hvb3NlclByb3h5IHsK
K3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJDb2xvckNob29zZXJQcm94eUVmbD4g
Y3JlYXRlKEV2YXNfT2JqZWN0KiB3ZWJWaWV3LCBXZWJDb2xvckNob29zZXJQcm94eTo6Q2xpZW50
KiBjbGllbnQsIGNvbnN0IFdlYkNvcmU6OkNvbG9yJiBjb2xvcikKKyAgICB7CisgICAgICAgIHJl
dHVybiBhZG9wdFJlZihuZXcgV2ViQ29sb3JDaG9vc2VyUHJveHlFZmwod2ViVmlldywgY2xpZW50
LCBjb2xvcikpOworICAgIH0KKyAgICB2aXJ0dWFsIH5XZWJDb2xvckNob29zZXJQcm94eUVmbCgp
OworCisgICAgdmlydHVhbCB2b2lkIGVuZENob29zZXIoKTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0
U2VsZWN0ZWRDb2xvcihjb25zdCBXZWJDb3JlOjpDb2xvciYpOworCitwcml2YXRlOgorICAgIFdl
YkNvbG9yQ2hvb3NlclByb3h5RWZsKEV2YXNfT2JqZWN0KiwgV2ViQ29sb3JDaG9vc2VyUHJveHk6
OkNsaWVudCosIGNvbnN0IFdlYkNvcmU6OkNvbG9yJik7CisKKyAgICBFdmFzX09iamVjdCogbV93
ZWJWaWV3OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUo
SU5QVVRfVFlQRV9DT0xPUikKKworI2VuZGlmIC8vIFdlYkNvbG9yQ2hvb3NlclByb3h5RWZsX2gK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>159079</attachid>
            <date>2012-08-17 04:04:22 -0700</date>
            <delta_ts>2012-08-19 23:44:39 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>diff</filename>
            <type>text/plain</type>
            <size>16513</size>
            <attacher name="KwangYong Choi">ky0.choi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCA3YmY4MDI5Li5kZDEzYjgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDIg
QEAKKzIwMTItMDgtMTcgIEt3YW5nWW9uZyBDaG9pICA8a3kwLmNob2lAc2Ftc3VuZy5jb20+CisK
KyAgICAgICAgW0VGTF1bV0syXSBJbXBsZW1lbnRlZCBjb2xvciBjaG9vc2VyIHByb3h5IGFuZCBp
bnB1dCBwaWNrZXIgaW50ZXJmYWNlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD05MTgzMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEltcGxlbWVudGVkIGNvbG9yIGNob29zZXIgcHJveHkgYW5kIGlucHV0IHBp
Y2tlciBpbnRlcmZhY2UgZm9yIEVGTC4KKyAgICAgICAgSW5wdXQgcGlja2VyIGludGVyZmFjZSBj
YW4gYmUgdXNlZCBmb3IgZ2VuZXJhbCB1c2Ugb2YgYWxsIHRoZSBpbnB1dAorICAgICAgICB0eXBl
cyBpbmNsdWRpbmcgY29sb3IgaW5wdXQgdHlwZS4KKworICAgICAgICBUaGUgZXh0ZXJuYWwgYXBw
bGljYXRpb24gc2hvdWxkIGltcGxlbWVudCBpbnB1dCBwaWNrZXIgYnkgb3ZlcnJpZGluZworICAg
ICAgICBzbWFydCBjbGFzcyBmdW5jdGlvbi4KKworICAgICAgICAqIFBsYXRmb3JtRWZsLmNtYWtl
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL1BhZ2VDbGllbnRJbXBsLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OmNyZWF0ZUNvbG9yQ2hvb3NlclByb3h5KToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5jcHA6CisgICAgICAgIChfRXdrX1Zp
ZXdfUHJpdmF0ZV9EYXRhKToKKyAgICAgICAgKF9Fd2tfVmlld19Qcml2YXRlX0RhdGE6Ol9Fd2tf
Vmlld19Qcml2YXRlX0RhdGEpOgorICAgICAgICAoZXdrX3ZpZXdfaW5wdXRfcGlja2VyX3Nob3df
cmVxdWVzdCk6CisgICAgICAgIChld2tfdmlld19pbnB1dF9waWNrZXJfaGlkZV9yZXF1ZXN0KToK
KyAgICAgICAgKGV3a192aWV3X2NvbG9yX2Nob29zZXJfc2hvd19yZXF1ZXN0KToKKyAgICAgICAg
KGV3a192aWV3X2NvbG9yX2Nob29zZXJfaGlkZV9yZXF1ZXN0KToKKyAgICAgICAgKGV3a192aWV3
X2NvbG9yX2Nob29zZXJfY29sb3Jfc2V0KToKKyAgICAgICAgKGV3a192aWV3X2NvbG9yX2Nob29z
ZXJfY2xvc2UpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3Lmg6CisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXdfcHJpdmF0ZS5oOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9lZmwvV2ViQ29sb3JDaG9vc2VyUHJveHlFZmwuY3BwOiBBZGRlZC4KKyAgICAgICAg
KFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbG9yQ2hvb3NlclByb3h5RWZsOjpXZWJD
b2xvckNob29zZXJQcm94eUVmbCk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbG9yQ2hvb3NlclBy
b3h5RWZsOjp+V2ViQ29sb3JDaG9vc2VyUHJveHlFZmwpOgorICAgICAgICAoV2ViS2l0OjpXZWJD
b2xvckNob29zZXJQcm94eUVmbDo6ZW5kQ2hvb3Nlcik6CisgICAgICAgIChXZWJLaXQ6OldlYkNv
bG9yQ2hvb3NlclByb3h5RWZsOjpzZXRTZWxlY3RlZENvbG9yKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvZWZsL1dlYkNvbG9yQ2hvb3NlclByb3h5RWZsLmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0
KToKKyAgICAgICAgKFdlYkNvbG9yQ2hvb3NlclByb3h5RWZsKToKKyAgICAgICAgKFdlYktpdDo6
V2ViQ29sb3JDaG9vc2VyUHJveHlFZmw6OmNyZWF0ZSk6CisKIDIwMTItMDgtMTYgIENocmlzdG9w
aGUgRHVtZXogIDxjaHJpc3RvcGhlLmR1bWV6QGludGVsLmNvbT4KIAogICAgICAgICBbRUZMXVtX
SzJdIEFkZCB1bml0IHRlc3RzIGZvciBXZWIgaW50ZW50IHJlZ2lzdHJhdGlvbgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0
Zm9ybUVmbC5jbWFrZQppbmRleCAxZjVmZmE5Li5kZDJhZTA4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVm
bC5jbWFrZQpAQCAtNzEsNiArNzEsNyBAQCBMSVNUKEFQUEVORCBXZWJLaXQyX1NPVVJDRVMKICAg
ICBVSVByb2Nlc3MvY2Fpcm8vQmFja2luZ1N0b3JlQ2Fpcm8uY3BwCiAKICAgICBVSVByb2Nlc3Mv
ZWZsL1RleHRDaGVja2VyRWZsLmNwcAorICAgIFVJUHJvY2Vzcy9lZmwvV2ViQ29sb3JDaG9vc2Vy
UHJveHlFZmwuY3BwCiAgICAgVUlQcm9jZXNzL2VmbC9XZWJDb250ZXh0RWZsLmNwcAogICAgIFVJ
UHJvY2Vzcy9lZmwvV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eUVmbC5jcHAKICAgICBVSVByb2Nl
c3MvZWZsL1dlYkluc3BlY3RvclByb3h5RWZsLmNwcApAQCAtMTI2LDYgKzEyNyw3IEBAIExJU1Qo
QVBQRU5EIFdlYktpdDJfSU5DTFVERV9ESVJFQ1RPUklFUwogICAgICIke1dFQktJVDJfRElSfS9V
SVByb2Nlc3MvQVBJL0Mvc291cCIKICAgICAiJHtXRUJLSVQyX0RJUn0vVUlQcm9jZXNzL0FQSS9j
cHAvZWZsIgogICAgICIke1dFQktJVDJfRElSfS9VSVByb2Nlc3MvQVBJL2VmbCIKKyAgICAiJHtX
RUJLSVQyX0RJUn0vVUlQcm9jZXNzL2VmbCIKICAgICAiJHtXRUJLSVQyX0RJUn0vVUlQcm9jZXNz
L3NvdXAiCiAgICAgIiR7V0VCS0lUMl9ESVJ9L1dlYlByb2Nlc3MvRG93bmxvYWRzL3NvdXAiCiAg
ICAgIiR7V0VCS0lUMl9ESVJ9L1dlYlByb2Nlc3MvZWZsIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvUGFnZUNsaWVudEltcGwuY3BwIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9lZmwvUGFnZUNsaWVudEltcGwuY3BwCmluZGV4IDcyNmNhYWEuLjFm
NWJmMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL1BhZ2VD
bGllbnRJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9QYWdl
Q2xpZW50SW1wbC5jcHAKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJEcmF3aW5nQXJlYVBy
b3h5SW1wbC5oIgogI2luY2x1ZGUgIk5hdGl2ZVdlYktleWJvYXJkRXZlbnQuaCIKICNpbmNsdWRl
ICJOb3RJbXBsZW1lbnRlZC5oIgorI2luY2x1ZGUgIldlYkNvbG9yQ2hvb3NlclByb3h5RWZsLmgi
CiAjaW5jbHVkZSAiV2ViQ29udGV4dC5oIgogI2luY2x1ZGUgIldlYkNvbnRleHRNZW51UHJveHku
aCIKICNpbmNsdWRlICJXZWJQYWdlR3JvdXAuaCIKQEAgLTIxNywxMCArMjE4LDkgQEAgUGFzc1Jl
ZlB0cjxXZWJDb250ZXh0TWVudVByb3h5PiBQYWdlQ2xpZW50SW1wbDo6Y3JlYXRlQ29udGV4dE1l
bnVQcm94eShXZWJQYWdlUHIKIH0KIAogI2lmIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9SKQotUGFz
c1JlZlB0cjxXZWJDb2xvckNob29zZXJQcm94eT4gUGFnZUNsaWVudEltcGw6OmNyZWF0ZUNvbG9y
Q2hvb3NlclByb3h5KFdlYlBhZ2VQcm94eSosIGNvbnN0IFdlYkNvcmU6OkNvbG9yJikKK1Bhc3NS
ZWZQdHI8V2ViQ29sb3JDaG9vc2VyUHJveHk+IFBhZ2VDbGllbnRJbXBsOjpjcmVhdGVDb2xvckNo
b29zZXJQcm94eShXZWJQYWdlUHJveHkqIHBhZ2UsIGNvbnN0IFdlYkNvcmU6OkNvbG9yJiBpbml0
aWFsQ29sb3IpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gMDsKKyAgICBy
ZXR1cm4gV2ViQ29sb3JDaG9vc2VyUHJveHlFZmw6OmNyZWF0ZShtX3ZpZXdXaWRnZXQsIHBhZ2Us
IGluaXRpYWxDb2xvcik7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9lZmwvZXdrX3ZpZXcuY3BwCmluZGV4IGNlN2Y3YjQuLjViNjEzNTYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5jcHAKQEAgLTkzLDYgKzkzLDEw
IEBAIHN0cnVjdCBfRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhIHsKICAgICBFdmFzX0dMX1N1cmZhY2Uq
IGV2YXNHbFN1cmZhY2U7CiAjZW5kaWYKIAorI2lmIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9SKQor
ICAgIFdlYkNvbG9yQ2hvb3NlclByb3h5RWZsKiBjb2xvckNob29zZXI7CisjZW5kaWYKKwogICAg
IF9Fd2tfVmlld19Qcml2YXRlX0RhdGEoKQogICAgICAgICA6IGN1cnNvck9iamVjdCgwKQogICAg
ICAgICAsIGJhY2tGb3J3YXJkTGlzdCgwKQpAQCAtMTA0LDYgKzEwOCw5IEBAIHN0cnVjdCBfRXdr
X1ZpZXdfUHJpdmF0ZV9EYXRhIHsKICAgICAgICAgLCBldmFzR2xDb250ZXh0KDApCiAgICAgICAg
ICwgZXZhc0dsU3VyZmFjZSgwKQogI2VuZGlmCisjaWYgRU5BQkxFKElOUFVUX1RZUEVfQ09MT1Ip
CisgICAgICAgICwgY29sb3JDaG9vc2VyKDApCisjZW5kaWYKICAgICB7IH0KIAogICAgIH5fRXdr
X1ZpZXdfUHJpdmF0ZV9EYXRhKCkKQEAgLTE0NDgsMyArMTQ1NSw3NSBAQCB2b2lkIGV3a192aWV3
X2NvbnRlbnRzX3NpemVfY2hhbmdlZChjb25zdCBFdmFzX09iamVjdCogZXdrVmlldywgY29uc3Qg
SW50U2l6ZSYgcwogICAgIHByaXYtPnZpZXdwb3J0SGFuZGxlci0+ZGlkQ2hhbmdlQ29udGVudHNT
aXplKHNpemUpOwogI2VuZGlmCiB9CisKK3ZvaWQgZXdrX3ZpZXdfaW5wdXRfcGlja2VyX3Nob3df
cmVxdWVzdChFdmFzX09iamVjdCogZXdrVmlldywgRXdrX0lucHV0X1R5cGUgaW5wdXRUeXBlLCBj
b25zdCBTdHJpbmcmIGlucHV0VmFsdWUpCit7CisgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVS
Tihld2tWaWV3LCBzbWFydERhdGEpOworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKHNt
YXJ0RGF0YS0+YXBpKTsKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTihzbWFydERhdGEt
PmFwaS0+aW5wdXRfcGlja2VyX3Nob3cpOworCisgICAgc21hcnREYXRhLT5hcGktPmlucHV0X3Bp
Y2tlcl9zaG93KHNtYXJ0RGF0YSwgaW5wdXRUeXBlLCBpbnB1dFZhbHVlLnV0ZjgoKS5kYXRhKCkp
OworfQorCit2b2lkIGV3a192aWV3X2lucHV0X3BpY2tlcl9oaWRlX3JlcXVlc3QoRXZhc19PYmpl
Y3QqIGV3a1ZpZXcsIEV3a19JbnB1dF9UeXBlIGlucHV0VHlwZSkKK3sKKyAgICBFV0tfVklFV19T
RF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSk7CisgICAgRUlOQV9TQUZFVFlfT05f
TlVMTF9SRVRVUk4oc21hcnREYXRhLT5hcGkpOworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVU
VVJOKHNtYXJ0RGF0YS0+YXBpLT5pbnB1dF9waWNrZXJfaGlkZSk7CisKKyAgICBzbWFydERhdGEt
PmFwaS0+aW5wdXRfcGlja2VyX2hpZGUoc21hcnREYXRhLCBpbnB1dFR5cGUpOworfQorCisjaWYg
RU5BQkxFKElOUFVUX1RZUEVfQ09MT1IpCit2b2lkIGV3a192aWV3X2NvbG9yX2Nob29zZXJfc2hv
d19yZXF1ZXN0KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBXZWJLaXQ6OldlYkNvbG9yQ2hvb3NlclBy
b3h5RWZsKiBjb2xvckNob29zZXIsIGNvbnN0IFN0cmluZyYgaW5wdXRWYWx1ZSkKK3sKKyAgICBF
V0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSk7CisgICAgRVdLX1ZJ
RVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgcHJpdik7CisKKyAgICBwcml2LT5jb2xv
ckNob29zZXIgPSBjb2xvckNob29zZXI7CisKKyAgICBld2tfdmlld19pbnB1dF9waWNrZXJfc2hv
d19yZXF1ZXN0KGV3a1ZpZXcsIEVXS19JTlBVVF9UWVBFX0NPTE9SLCBpbnB1dFZhbHVlKTsKK30K
Kwordm9pZCBld2tfdmlld19jb2xvcl9jaG9vc2VyX2hpZGVfcmVxdWVzdChFdmFzX09iamVjdCog
ZXdrVmlldykKK3sKKyAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0
RGF0YSk7CisgICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgcHJpdik7
CisKKyAgICBwcml2LT5jb2xvckNob29zZXIgPSAwOworCisgICAgZXdrX3ZpZXdfaW5wdXRfcGlj
a2VyX2hpZGVfcmVxdWVzdChld2tWaWV3LCBFV0tfSU5QVVRfVFlQRV9DT0xPUik7Cit9CisjZW5k
aWYKKworRWluYV9Cb29sIGV3a192aWV3X2NvbG9yX2Nob29zZXJfY29sb3Jfc2V0KEV2YXNfT2Jq
ZWN0KiBld2tWaWV3LCBjb25zdCBjaGFyKiBjb2xvcikKK3sKKyNpZiBFTkFCTEUoSU5QVVRfVFlQ
RV9DT0xPUikKKyAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0
YSwgZmFsc2UpOworICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIHBy
aXYsIGZhbHNlKTsKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwocHJpdi0+Y29s
b3JDaG9vc2VyLCBmYWxzZSk7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKGNv
bG9yLCBmYWxzZSk7CisKKyAgICBwcml2LT5jb2xvckNob29zZXItPnNldFNlbGVjdGVkQ29sb3Io
Q29sb3IoY29sb3IpKTsKKworICAgIHJldHVybiB0cnVlOworI2Vsc2UKKyAgICByZXR1cm4gZmFs
c2U7CisjZW5kaWYKK30KKworRWluYV9Cb29sIGV3a192aWV3X2NvbG9yX2Nob29zZXJfY2xvc2Uo
RXZhc19PYmplY3QqIGV3a1ZpZXcpCit7CisjaWYgRU5BQkxFKElOUFVUX1RZUEVfQ09MT1IpCisg
ICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEsIGZhbHNlKTsK
KyAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBwcml2LCBmYWxzZSk7
CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHByaXYtPmNvbG9yQ2hvb3Nlciwg
ZmFsc2UpOworCisgICAgcHJpdi0+Y29sb3JDaG9vc2VyLT5lbmRDaG9vc2VyKCk7CisgICAgcHJp
di0+Y29sb3JDaG9vc2VyID0gMDsKKworICAgIHJldHVybiB0cnVlOworI2Vsc2UKKyAgICByZXR1
cm4gZmFsc2U7CisjZW5kaWYKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZWZsL2V3a192aWV3LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9l
d2tfdmlldy5oCmluZGV4IDQyM2Y5ZTEuLjVlOWE1ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuaApAQCAtODYsNiArODYsMjcgQEAgZXh0ZXJuICJDIiB7
CiB0eXBlZGVmIHN0cnVjdCBfRXdrX1ZpZXdfU21hcnRfRGF0YSBFd2tfVmlld19TbWFydF9EYXRh
OwogdHlwZWRlZiBzdHJ1Y3QgX0V3a19WaWV3X1NtYXJ0X0NsYXNzIEV3a19WaWV3X1NtYXJ0X0Ns
YXNzOwogCisvKioKKyAqIFxlbnVtICAgIEV3a19JbnB1dF9UeXBlCisgKiBAYnJpZWYgICBQcm92
aWRlcyB0eXBlIG9mIGlucHV0IGVsZW1lbnQKKyAqLworZW51bSBfRXdrX0lucHV0X1R5cGUgewor
ICAgIEVXS19JTlBVVF9UWVBFX1RFTEVQSE9ORSA9IDEsCisgICAgRVdLX0lOUFVUX1RZUEVfTlVN
QkVSLAorICAgIEVXS19JTlBVVF9UWVBFX0VNQUlMLAorICAgIEVXS19JTlBVVF9UWVBFX1VSTCwK
KyAgICBFV0tfSU5QVVRfVFlQRV9QQVNTV09SRCwKKyAgICBFV0tfSU5QVVRfVFlQRV9DT0xPUiwK
KyAgICBFV0tfSU5QVVRfVFlQRV9EQVRFLAorICAgIEVXS19JTlBVVF9UWVBFX0RBVEVUSU1FLAor
ICAgIEVXS19JTlBVVF9UWVBFX0RBVEVUSU1FTE9DQUwsCisgICAgRVdLX0lOUFVUX1RZUEVfTU9O
VEgsCisgICAgRVdLX0lOUFVUX1RZUEVfVElNRSwKKyAgICBFV0tfSU5QVVRfVFlQRV9XRUVLCit9
OworLyoqIENyZWF0ZXMgYSB0eXBlIG5hbWUgZm9yIF9Fd2tfSW5wdXRfVHlwZV9Fd2tfSW5wdXRf
VHlwZSAqLwordHlwZWRlZiBlbnVtIF9Fd2tfSW5wdXRfVHlwZSBFd2tfSW5wdXRfVHlwZTsKKwog
Ly8vIEV3ayB2aWV3J3MgY2xhc3MsIHRvIGJlIG92ZXJyaWRkZW4gYnkgc3ViLWNsYXNzZXMuCiBz
dHJ1Y3QgX0V3a19WaWV3X1NtYXJ0X0NsYXNzIHsKICAgICBFdmFzX1NtYXJ0X0NsYXNzIHNjOyAv
Kio8IGFsbCBidXQgJ2RhdGEnIGlzIGZyZWUgdG8gYmUgY2hhbmdlZC4gKi8KQEAgLTEwMiwxMyAr
MTIzLDE3IEBAIHN0cnVjdCBfRXdrX1ZpZXdfU21hcnRfQ2xhc3MgewogICAgIEVpbmFfQm9vbCAo
Km1vdXNlX21vdmUpKEV3a19WaWV3X1NtYXJ0X0RhdGEgKnNkLCBjb25zdCBFdmFzX0V2ZW50X01v
dXNlX01vdmUgKmV2KTsKICAgICBFaW5hX0Jvb2wgKCprZXlfZG93bikoRXdrX1ZpZXdfU21hcnRf
RGF0YSAqc2QsIGNvbnN0IEV2YXNfRXZlbnRfS2V5X0Rvd24gKmV2KTsKICAgICBFaW5hX0Jvb2wg
KCprZXlfdXApKEV3a19WaWV3X1NtYXJ0X0RhdGEgKnNkLCBjb25zdCBFdmFzX0V2ZW50X0tleV9V
cCAqZXYpOworCisgICAgLy8gSW5wdXQgUGlja2VyIEFQSQorICAgIEVpbmFfQm9vbCAoKmlucHV0
X3BpY2tlcl9zaG93KShFd2tfVmlld19TbWFydF9EYXRhICpzZCwgRXdrX0lucHV0X1R5cGUgaW5w
dXRfdHlwZSwgY29uc3QgY2hhciAqaW5wdXRfdmFsdWUpOworICAgIEVpbmFfQm9vbCAoKmlucHV0
X3BpY2tlcl9oaWRlKShFd2tfVmlld19TbWFydF9EYXRhICpzZCwgRXdrX0lucHV0X1R5cGUgaW5w
dXRfdHlwZSk7CiB9OwogCiAvKioKICAqIFRoZSB2ZXJzaW9uIHlvdSBoYXZlIHRvIHB1dCBpbnRv
IHRoZSB2ZXJzaW9uIGZpZWxkCiAgKiBpbiB0aGUgQGEgRXdrX1ZpZXdfU21hcnRfQ2xhc3Mgc3Ry
dWN0dXJlLgogICovCi0jZGVmaW5lIEVXS19WSUVXX1NNQVJUX0NMQVNTX1ZFUlNJT04gMVVMCisj
ZGVmaW5lIEVXS19WSUVXX1NNQVJUX0NMQVNTX1ZFUlNJT04gMlVMCiAKIC8qKgogICogSW5pdGlh
bGl6ZXIgZm9yIHdob2xlIEV3a19WaWV3X1NtYXJ0X0NsYXNzIHN0cnVjdHVyZS4KQEAgLTEyMCw3
ICsxNDUsNyBAQCBzdHJ1Y3QgX0V3a19WaWV3X1NtYXJ0X0NsYXNzIHsKICAqIEBzZWUgRVdLX1ZJ
RVdfU01BUlRfQ0xBU1NfSU5JVF9WRVJTSU9OCiAgKiBAc2VlIEVXS19WSUVXX1NNQVJUX0NMQVNT
X0lOSVRfTkFNRV9WRVJTSU9OCiAgKi8KLSNkZWZpbmUgRVdLX1ZJRVdfU01BUlRfQ0xBU1NfSU5J
VChzbWFydF9jbGFzc19pbml0KSB7c21hcnRfY2xhc3NfaW5pdCwgRVdLX1ZJRVdfU01BUlRfQ0xB
U1NfVkVSU0lPTiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMH0KKyNkZWZpbmUgRVdLX1ZJRVdfU01B
UlRfQ0xBU1NfSU5JVChzbWFydF9jbGFzc19pbml0KSB7c21hcnRfY2xhc3NfaW5pdCwgRVdLX1ZJ
RVdfU01BUlRfQ0xBU1NfVkVSU0lPTiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMH0KIAog
LyoqCiAgKiBJbml0aWFsaXplciB0byB6ZXJvIGEgd2hvbGUgRXdrX1ZpZXdfU21hcnRfQ2xhc3Mg
c3RydWN0dXJlLgpAQCAtNTkwLDYgKzYxNSwyNSBAQCBFQVBJIEVpbmFfQm9vbCBld2tfdmlld190
ZXh0X2ZpbmQoRXZhc19PYmplY3QgKm8sIGNvbnN0IGNoYXIgKnRleHQsIEV3a19GaW5kX09wdAog
Ki8KIEVBUEkgRWluYV9Cb29sIGV3a192aWV3X3RleHRfZmluZF9oaWdobGlnaHRfY2xlYXIoRXZh
c19PYmplY3QgKm8pOwogCisvKioKKyAqIFNldHMgdGhlIGNvbG9yIHZhbHVlIG9mIGNvbG9yIGNo
b29zZXIKKyAqCisgKiBAcGFyYW0gbyB2aWV3IG9iamVjdCBjb250YWlucyBjb2xvciBjaG9vc2Vy
CisgKiBAcGFyYW0gY29sb3IgI1JHQiwgI1JSR0dCQiBvciBuYW1lZCBjb2xvciBzdHJpbmcgdG8g
YmUgc2V0CisgKgorICogQHJldHVybiBAYyBFSU5BX1RSVUUgb24gc3VjY2VzcyBAYyBFSU5BX0ZB
TFNFIG90aGVyd2lzZQorICovCitFQVBJIEVpbmFfQm9vbCBld2tfdmlld19jb2xvcl9jaG9vc2Vy
X2NvbG9yX3NldChFdmFzX09iamVjdCAqbywgY29uc3QgY2hhciAqY29sb3IpOworCisvKioKKyAq
IENsb3NlcyBjb2xvciBjaG9vc2VyCisgKgorICogQHBhcmFtIG8gdmlldyBvYmplY3QgY29udGFp
bnMgY29sb3IgY2hvb3NlcgorICoKKyAqIEByZXR1cm4gQGMgRUlOQV9UUlVFIG9uIHN1Y2Nlc3Mg
QGMgRUlOQV9GQUxTRSBvdGhlcndpc2UKKyAqLworRUFQSSBFaW5hX0Jvb2wgZXdrX3ZpZXdfY29s
b3JfY2hvb3Nlcl9jbG9zZShFdmFzX09iamVjdCAqbyk7CisKICNpZmRlZiBfX2NwbHVzcGx1cwog
fQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9l
d2tfdmlld19wcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tf
dmlld19wcml2YXRlLmgKaW5kZXggZjQwMjk4NS4uNDg5OGIyMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXdfcHJpdmF0ZS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3X3ByaXZhdGUuaApAQCAtMjIsOSAr
MjIsMTQgQEAKICNkZWZpbmUgZXdrX3ZpZXdfcHJpdmF0ZV9oCiAKICNpbmNsdWRlICJXZWJQYWdl
UHJveHkuaCIKKyNpbmNsdWRlICJld2tfdmlldy5oIgogI2luY2x1ZGUgPEV2YXMuaD4KICNpbmNs
dWRlIDxXZWJLaXQyL1dLQmFzZS5oPgogCisjaWYgRU5BQkxFKElOUFVUX1RZUEVfQ09MT1IpCisj
aW5jbHVkZSAiV2ViQ29sb3JDaG9vc2VyUHJveHlFZmwuaCIKKyNlbmRpZgorCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiBjbGFzcyBDdXJzb3I7CiBjbGFzcyBJbnRSZWN0OwpAQCAtODksNCArOTQsMTIg
QEAgYm9vbCBld2tfdmlld19hY2NlbGVyYXRlZF9jb21wb3NpdGluZ19tb2RlX2VudGVyKGNvbnN0
IEV2YXNfT2JqZWN0KiBld2tWaWV3KTsKIGJvb2wgZXdrX3ZpZXdfYWNjZWxlcmF0ZWRfY29tcG9z
aXRpbmdfbW9kZV9leGl0KGNvbnN0IEV2YXNfT2JqZWN0KiBld2tWaWV3KTsKICNlbmRpZgogCit2
b2lkIGV3a192aWV3X2lucHV0X3BpY2tlcl9zaG93X3JlcXVlc3QoRXZhc19PYmplY3QqIGV3a1Zp
ZXcsIEV3a19JbnB1dF9UeXBlIGlucHV0VHlwZSwgY29uc3QgU3RyaW5nJiBpbnB1dFZhbHVlKTsK
K3ZvaWQgZXdrX3ZpZXdfaW5wdXRfcGlja2VyX2hpZGVfcmVxdWVzdChFdmFzX09iamVjdCogZXdr
VmlldywgRXdrX0lucHV0X1R5cGUgaW5wdXRUeXBlKTsKKworI2lmIEVOQUJMRShJTlBVVF9UWVBF
X0NPTE9SKQordm9pZCBld2tfdmlld19jb2xvcl9jaG9vc2VyX3Nob3dfcmVxdWVzdChFdmFzX09i
amVjdCogZXdrVmlldywgV2ViS2l0OjpXZWJDb2xvckNob29zZXJQcm94eUVmbCogY29sb3JDaG9v
c2VyLCBjb25zdCBTdHJpbmcmIGlucHV0VmFsdWUpOwordm9pZCBld2tfdmlld19jb2xvcl9jaG9v
c2VyX2hpZGVfcmVxdWVzdChFdmFzX09iamVjdCogZXdrVmlldyk7CisjZW5kaWYKKwogI2VuZGlm
IC8vIGV3a192aWV3X3ByaXZhdGVfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL2VmbC9XZWJDb2xvckNob29zZXJQcm94eUVmbC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvZWZsL1dlYkNvbG9yQ2hvb3NlclByb3h5RWZsLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwLi5iNmNkNmNjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL2VmbC9XZWJDb2xvckNob29zZXJQcm94eUVmbC5jcHAKQEAgLTAsMCArMSw2
NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNzLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
IldlYkNvbG9yQ2hvb3NlclByb3h5RWZsLmgiCisKKyNpZiBFTkFCTEUoSU5QVVRfVFlQRV9DT0xP
UikKKworI2luY2x1ZGUgImV3a192aWV3X3ByaXZhdGUuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7
CisKK1dlYkNvbG9yQ2hvb3NlclByb3h5RWZsOjpXZWJDb2xvckNob29zZXJQcm94eUVmbChFdmFz
X09iamVjdCogd2ViVmlldywgV2ViQ29sb3JDaG9vc2VyUHJveHk6OkNsaWVudCogY2xpZW50LCBj
b25zdCBXZWJDb3JlOjpDb2xvciYgY29sb3IpCisgICAgOiBXZWJDb2xvckNob29zZXJQcm94eShj
bGllbnQpCisgICAgLCBtX3dlYlZpZXcod2ViVmlldykKK3sKKyAgICBld2tfdmlld19jb2xvcl9j
aG9vc2VyX3Nob3dfcmVxdWVzdChtX3dlYlZpZXcsIHRoaXMsIGNvbG9yLnNlcmlhbGl6ZWQoKSk7
Cit9CisKK1dlYkNvbG9yQ2hvb3NlclByb3h5RWZsOjp+V2ViQ29sb3JDaG9vc2VyUHJveHlFZmwo
KQoreworICAgIGV3a192aWV3X2NvbG9yX2Nob29zZXJfaGlkZV9yZXF1ZXN0KG1fd2ViVmlldyk7
Cit9CisKK3ZvaWQgV2ViQ29sb3JDaG9vc2VyUHJveHlFZmw6OmVuZENob29zZXIoKQoreworICAg
IGlmICghbV9jbGllbnQpCisgICAgICAgIHJldHVybjsKKworICAgIG1fY2xpZW50LT5kaWRFbmRD
b2xvckNob29zZXIoKTsKK30KKwordm9pZCBXZWJDb2xvckNob29zZXJQcm94eUVmbDo6c2V0U2Vs
ZWN0ZWRDb2xvcihjb25zdCBXZWJDb3JlOjpDb2xvciYgY29sb3IpCit7CisgICAgaWYgKCFtX2Ns
aWVudCkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9jbGllbnQtPmRpZENob29zZUNvbG9yKGNv
bG9yKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoSU5Q
VVRfVFlQRV9DT0xPUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwv
V2ViQ29sb3JDaG9vc2VyUHJveHlFZmwuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwv
V2ViQ29sb3JDaG9vc2VyUHJveHlFZmwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwLi4zZjljNGIxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L2VmbC9XZWJDb2xvckNob29zZXJQcm94eUVmbC5oCkBAIC0wLDAgKzEsNjEgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTIgU2Ftc3VuZyBFbGVjdHJvbmljcy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpZm5kZWYgV2ViQ29sb3JDaG9vc2VyUHJveHlFZmxfaAorI2RlZmluZSBX
ZWJDb2xvckNob29zZXJQcm94eUVmbF9oCisKKyNpZiBFTkFCTEUoSU5QVVRfVFlQRV9DT0xPUikK
KworI2luY2x1ZGUgIkNvbG9yLmgiCisjaW5jbHVkZSAiV2ViQ29sb3JDaG9vc2VyUHJveHkuaCIK
KwordHlwZWRlZiBzdHJ1Y3QgX0V2YXNfT2JqZWN0IEV2YXNfT2JqZWN0OworCituYW1lc3BhY2Ug
V2ViS2l0IHsKKworY2xhc3MgV2ViUGFnZVByb3h5OworCitjbGFzcyBXZWJDb2xvckNob29zZXJQ
cm94eUVmbCA6IHB1YmxpYyBXZWJDb2xvckNob29zZXJQcm94eSB7CitwdWJsaWM6CisgICAgc3Rh
dGljIFBhc3NSZWZQdHI8V2ViQ29sb3JDaG9vc2VyUHJveHlFZmw+IGNyZWF0ZShFdmFzX09iamVj
dCogd2ViVmlldywgV2ViQ29sb3JDaG9vc2VyUHJveHk6OkNsaWVudCogY2xpZW50LCBjb25zdCBX
ZWJDb3JlOjpDb2xvciYgY29sb3IpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3
IFdlYkNvbG9yQ2hvb3NlclByb3h5RWZsKHdlYlZpZXcsIGNsaWVudCwgY29sb3IpKTsKKyAgICB9
CisgICAgdmlydHVhbCB+V2ViQ29sb3JDaG9vc2VyUHJveHlFZmwoKTsKKworICAgIHZpcnR1YWwg
dm9pZCBlbmRDaG9vc2VyKCk7CisgICAgdmlydHVhbCB2b2lkIHNldFNlbGVjdGVkQ29sb3IoY29u
c3QgV2ViQ29yZTo6Q29sb3ImKTsKKworcHJpdmF0ZToKKyAgICBXZWJDb2xvckNob29zZXJQcm94
eUVmbChFdmFzX09iamVjdCosIFdlYkNvbG9yQ2hvb3NlclByb3h5OjpDbGllbnQqLCBjb25zdCBX
ZWJDb3JlOjpDb2xvciYpOworCisgICAgRXZhc19PYmplY3QqIG1fd2ViVmlldzsKK307CisKK30g
Ly8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKElOUFVUX1RZUEVfQ09MT1Ip
CisKKyNlbmRpZiAvLyBXZWJDb2xvckNob29zZXJQcm94eUVmbF9oCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>159080</attachid>
            <date>2012-08-17 04:06:48 -0700</date>
            <delta_ts>2012-08-19 23:44:39 -0700</delta_ts>
            <desc>example</desc>
            <filename>example</filename>
            <type>text/plain</type>
            <size>6490</size>
            <attacher name="KwangYong Choi">ky0.choi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlIGIvU291cmNlL1dl
YktpdDIvUGxhdGZvcm1FZmwuY21ha2UKaW5kZXggZGQyYWUwOC4uMjY3ZWNlMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UKKysrIGIvU291cmNlL1dlYktpdDIv
UGxhdGZvcm1FZmwuY21ha2UKQEAgLTE0Niw2ICsxNDYsNyBAQCBMSVNUKEFQUEVORCBXZWJLaXQy
X0lOQ0xVREVfRElSRUNUT1JJRVMKICAgICAke0dMSUJfSU5DTFVERV9ESVJTfQogICAgICR7TElC
U09VUF9JTkNMVURFX0RJUlN9CiAgICAgJHtXVEZfRElSfQorICAgICR7RUxFTUVOVEFSWV9JTkNM
VURFX0RJUlN9CiApCiAKIExJU1QoQVBQRU5EIFdlYktpdDJfTElCUkFSSUVTCkBAIC0xNjUsNiAr
MTY2LDcgQEAgTElTVChBUFBFTkQgV2ViS2l0Ml9MSUJSQVJJRVMKICAgICAke0dMSUJfR0lPX0xJ
QlJBUklFU30KICAgICAke0dMSUJfR09CSkVDVF9MSUJSQVJJRVN9CiAgICAgJHtMSUJTT1VQX0xJ
QlJBUklFU30KKyAgICAke0VMRU1FTlRBUllfTElCUkFSSUVTfQogKQogCiBMSVNUIChBUFBFTkQg
V2ViUHJvY2Vzc19TT1VSQ0VTCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2VmbC9ld2tfdmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9l
d2tfdmlldy5jcHAKaW5kZXggNzg5ZTZjOS4uN2VhZTk3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmNwcApAQCAtNTgsNiArNTgsOCBAQAogI2luY2x1
ZGUgIkVmbFZpZXdwb3J0SGFuZGxlci5oIgogI2VuZGlmCiAKKyNpbmNsdWRlIDxFbGVtZW50YXJ5
Lmg+CisKIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsK
IApAQCAtNjEwLDYgKzYxMiwxMDQgQEAgc3RhdGljIHZvaWQgX2V3a192aWV3X3NtYXJ0X2NvbG9y
X3NldChFdmFzX09iamVjdCogZXdrVmlldywgaW50IHJlZCwgaW50IGdyZWVuLAogICAgIGdfcGFy
ZW50U21hcnRDbGFzcy5jb2xvcl9zZXQoZXdrVmlldywgcmVkLCBncmVlbiwgYmx1ZSwgYWxwaGEp
OwogfQogCitzdHJ1Y3QgY29sb3JMYXlvdXQgeworICAgIEV2YXNfT2JqZWN0KiB3ZWJWaWV3Owor
ICAgIEV2YXNfT2JqZWN0KiB3aW47CisgICAgRXZhc19PYmplY3QqIGJnOworICAgIEV2YXNfT2Jq
ZWN0KiBjczsKKyAgICBFdmFzX09iamVjdCogcmVjdDsKKyAgICBFdmFzX09iamVjdCogYng7Cisg
ICAgRXZhc19PYmplY3QqIGZyOworfTsKKworc3RhdGljIHZvaWQgX2NvbG9ycGFsZXR0ZV9jbGlj
a2VkX2NiKHZvaWQqIGRhdGEsIEV2YXNfT2JqZWN0KiBvYmosIHZvaWQqIGV2ZW50X2luZm8pCit7
CisgICAgaW50IHIgPSAwLCBnID0gMCwgYiA9IDAgLGEgPSAwOworICAgIEVsbV9PYmplY3RfSXRl
bSAqY29sb3JfaXQgPSAoRWxtX09iamVjdF9JdGVtICopIGV2ZW50X2luZm87CisgICAgZWxtX2Nv
bG9yc2VsZWN0b3JfcGFsZXR0ZV9pdGVtX2NvbG9yX2dldChjb2xvcl9pdCwgJnIsICZnLCAmYiwg
JmEpOworICAgIGV2YXNfb2JqZWN0X2NvbG9yX3NldCgoKHN0cnVjdCBjb2xvckxheW91dCopZGF0
YSktPnJlY3QsIHIsIGcsIGIsIGEpOworCisgICAgLy8gc2V0IGNvbG9yCisgICAgY2hhciBjb2xv
clsxMF07CisgICAgc3ByaW50Zihjb2xvciwgIiMlMDJ4JTAyeCUwMngiLCByLCBnLCBiKTsKKyAg
ICBld2tfdmlld19jb2xvcl9jaG9vc2VyX2NvbG9yX3NldCgoKHN0cnVjdCBjb2xvckxheW91dCop
ZGF0YSktPndlYlZpZXcsIGNvbG9yKTsKK30KKworc3RhdGljIHZvaWQgX2NvbG9ycGFsZXR0ZV9s
b25ncHJlc3NlZF9jYih2b2lkKiBkYXRhLCBFdmFzX09iamVjdCogb2JqLCB2b2lkKiBldmVudF9p
bmZvKQoreworICAgIGludCByID0gMCxnID0gMCxiID0gMCAsYSA9IDA7CisgICAgRWxtX09iamVj
dF9JdGVtICpjb2xvcl9pdCA9IChFbG1fT2JqZWN0X0l0ZW0gKikgZXZlbnRfaW5mbzsKKyAgICBl
bG1fY29sb3JzZWxlY3Rvcl9wYWxldHRlX2l0ZW1fY29sb3JfZ2V0KGNvbG9yX2l0LCAmciwgJmcs
ICZiLCAmYSk7CisKKyAgICAvLyBjbG9zZSBjb2xvciBwaWNrZXIKKyAgICBldmFzX29iamVjdF9o
aWRlKCgoc3RydWN0IGNvbG9yTGF5b3V0KilkYXRhKS0+d2luKTsKKyAgICBld2tfdmlld19jb2xv
cl9jaG9vc2VyX2Nsb3NlKCgoc3RydWN0IGNvbG9yTGF5b3V0KilkYXRhKS0+d2ViVmlldyk7Cit9
CisKK3N0YXRpYyBFaW5hX0Jvb2wgX2V3a192aWV3X3NtYXJ0X2NvbG9yX3BpY2tlcl9zaG93KEV3
a19WaWV3X1NtYXJ0X0RhdGEqIHNkLCBFd2tfSW5wdXRfVHlwZSBpbnB1dFR5cGUsIGNvbnN0IGNo
YXIqIGlucHV0VmFsdWUpCit7CisgICAgc3RhdGljIHN0cnVjdCBjb2xvckxheW91dCBsYXlvdXQ7
CisgICAgCisgICAgZWxtX2luaXQoMCwgTlVMTCk7CisKKyAgICBpbnQgciwgZywgYjsKKyAgICBz
c2NhbmYoaW5wdXRWYWx1ZSwgIiMlMDJ4JTAyeCUwMngiLCAmciwgJmcsICZiKTsKKworICAgIGxh
eW91dC53ZWJWaWV3ID0gc2QtPnNlbGY7CisKKyAgICBsYXlvdXQud2luID0gZWxtX3dpbl9hZGQo
TlVMTCwgImNvbG9yIHNlbGVjdG9yIiwgRUxNX1dJTl9CQVNJQyk7CisgICAgZWxtX3dpbl90aXRs
ZV9zZXQobGF5b3V0LndpbiwgIkNvbG9yIHNlbGVjdG9yIik7CisgICAgZWxtX3dpbl9hdXRvZGVs
X3NldChsYXlvdXQud2luLCBFSU5BX1RSVUUpOworICAgIGVsbV9wb2xpY3lfc2V0KEVMTV9QT0xJ
Q1lfUVVJVCwgRUxNX1BPTElDWV9RVUlUX0xBU1RfV0lORE9XX0NMT1NFRCk7CisgICAgCisgICAg
bGF5b3V0LmJnID0gZWxtX2JnX2FkZChsYXlvdXQud2luKTsKKyAgICBldmFzX29iamVjdF9zaXpl
X2hpbnRfd2VpZ2h0X3NldChsYXlvdXQuYmcsIEVWQVNfSElOVF9FWFBBTkQsIEVWQVNfSElOVF9F
WFBBTkQpOworICAgIGVsbV93aW5fcmVzaXplX29iamVjdF9hZGQobGF5b3V0LndpbiwgbGF5b3V0
LmJnKTsKKyAgICBldmFzX29iamVjdF9zaG93KGxheW91dC5iZyk7CisKKyAgICBsYXlvdXQuYngg
PSBlbG1fYm94X2FkZChsYXlvdXQud2luKTsKKyAgICBldmFzX29iamVjdF9zaXplX2hpbnRfd2Vp
Z2h0X3NldChsYXlvdXQuYngsIEVWQVNfSElOVF9FWFBBTkQsIEVWQVNfSElOVF9FWFBBTkQpOwor
ICAgIGV2YXNfb2JqZWN0X3NpemVfaGludF9hbGlnbl9zZXQobGF5b3V0LmJ4LCBFVkFTX0hJTlRf
RklMTCwgRVZBU19ISU5UX0ZJTEwpOworICAgIGVsbV93aW5fcmVzaXplX29iamVjdF9hZGQobGF5
b3V0LndpbiwgbGF5b3V0LmJ4KTsKKyAgICBldmFzX29iamVjdF9zaG93KGxheW91dC5ieCk7Cisg
ICAgCisgICAgbGF5b3V0LmZyID0gZWxtX2ZyYW1lX2FkZChsYXlvdXQud2luKTsKKyAgICBldmFz
X29iamVjdF9zaXplX2hpbnRfd2VpZ2h0X3NldChsYXlvdXQuZnIsIDEuMCwgMC41KTsKKyAgICBl
dmFzX29iamVjdF9zaXplX2hpbnRfYWxpZ25fc2V0KGxheW91dC5mciwgRVZBU19ISU5UX0ZJTEws
IEVWQVNfSElOVF9GSUxMKTsKKyAgICBlbG1fb2JqZWN0X3RleHRfc2V0KGxheW91dC5mciwgIkNv
bG9yIFZpZXciKTsKKyAgICBlbG1fYm94X3BhY2tfZW5kKGxheW91dC5ieCwgbGF5b3V0LmZyKTsK
KyAgICBldmFzX29iamVjdF9zaG93KGxheW91dC5mcik7CisgICAgCisgICAgbGF5b3V0LnJlY3Qg
PSBldmFzX29iamVjdF9yZWN0YW5nbGVfYWRkKGV2YXNfb2JqZWN0X2V2YXNfZ2V0KGxheW91dC53
aW4pKTsKKyAgICBlbG1fb2JqZWN0X2NvbnRlbnRfc2V0KGxheW91dC5mciwgbGF5b3V0LnJlY3Qp
OworICAgIGV2YXNfb2JqZWN0X2NvbG9yX3NldChsYXlvdXQucmVjdCwgciwgZywgYiwgMjU1KTsK
KyAgICBldmFzX29iamVjdF9zaG93KGxheW91dC5yZWN0KTsKKyAgICAKKyAgICBsYXlvdXQuZnIg
PSBlbG1fZnJhbWVfYWRkKGxheW91dC53aW4pOworICAgIGV2YXNfb2JqZWN0X3NpemVfaGludF93
ZWlnaHRfc2V0KGxheW91dC5mciwgMS4wLCAwLjUpOworICAgIGV2YXNfb2JqZWN0X3NpemVfaGlu
dF9hbGlnbl9zZXQobGF5b3V0LmZyLCBFVkFTX0hJTlRfRklMTCwgRVZBU19ISU5UX0ZJTEwpOwor
ICAgIGVsbV9vYmplY3RfdGV4dF9zZXQobGF5b3V0LmZyLCAiQ29sb3IgU2VsZWN0b3IiKTsKKyAg
ICBlbG1fYm94X3BhY2tfZW5kKGxheW91dC5ieCwgbGF5b3V0LmZyKTsKKyAgICBldmFzX29iamVj
dF9zaG93KGxheW91dC5mcik7CisKKyAgICBsYXlvdXQuY3MgPSBlbG1fY29sb3JzZWxlY3Rvcl9h
ZGQobGF5b3V0Lndpbik7CisgICAgZWxtX2NvbG9yc2VsZWN0b3JfcGFsZXR0ZV9uYW1lX3NldChs
YXlvdXQuY3MsICJwYWludGluZyIpOworICAgIGV2YXNfb2JqZWN0X3NpemVfaGludF93ZWlnaHRf
c2V0KGxheW91dC5jcywgRVZBU19ISU5UX0VYUEFORCwgMC4wKTsKKyAgICBldmFzX29iamVjdF9z
aXplX2hpbnRfYWxpZ25fc2V0KGxheW91dC5jcywgRVZBU19ISU5UX0ZJTEwsIDAuMCk7CisgICAg
ZWxtX2NvbG9yc2VsZWN0b3JfY29sb3Jfc2V0KGxheW91dC5jcywgciwgZywgYiwgMjU1KTsKKyAg
ICBlbG1fY29sb3JzZWxlY3Rvcl9tb2RlX3NldChsYXlvdXQuY3MsIEVMTV9DT0xPUlNFTEVDVE9S
X1BBTEVUVEUpOworICAgIGV2YXNfb2JqZWN0X3Nob3cobGF5b3V0LmNzKTsKKworICAgIGV2YXNf
b2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2FkZChsYXlvdXQuY3MsICJjb2xvcixpdGVtLHNlbGVjdGVk
IiwgX2NvbG9ycGFsZXR0ZV9jbGlja2VkX2NiLCAmbGF5b3V0KTsKKyAgICBldmFzX29iamVjdF9z
bWFydF9jYWxsYmFja19hZGQobGF5b3V0LmNzLCAiY29sb3IsaXRlbSxsb25ncHJlc3NlZCIsIF9j
b2xvcnBhbGV0dGVfbG9uZ3ByZXNzZWRfY2IsICZsYXlvdXQpOworICAgIGVsbV9vYmplY3RfY29u
dGVudF9zZXQobGF5b3V0LmZyLCBsYXlvdXQuY3MpOworCisgICAgZXZhc19vYmplY3RfcmVzaXpl
KGxheW91dC53aW4sIDMyMCwgMjYwKTsKKyAgICBldmFzX29iamVjdF9zaG93KGxheW91dC53aW4p
OworCisgICAgcmV0dXJuIHRydWU7Cit9CisKIEVpbmFfQm9vbCBld2tfdmlld19zbWFydF9jbGFz
c19zZXQoRXdrX1ZpZXdfU21hcnRfQ2xhc3MqIGFwaSkKIHsKICAgICBFSU5BX1NBRkVUWV9PTl9O
VUxMX1JFVFVSTl9WQUwoYXBpLCBmYWxzZSk7CkBAIC02NDYsNiArNzQ2LDggQEAgRWluYV9Cb29s
IGV3a192aWV3X3NtYXJ0X2NsYXNzX3NldChFd2tfVmlld19TbWFydF9DbGFzcyogYXBpKQogICAg
IGFwaS0+a2V5X2Rvd24gPSBfZXdrX3ZpZXdfc21hcnRfa2V5X2Rvd247CiAgICAgYXBpLT5rZXlf
dXAgPSBfZXdrX3ZpZXdfc21hcnRfa2V5X3VwOwogCisgICAgYXBpLT5pbnB1dF9waWNrZXJfc2hv
dyA9IF9ld2tfdmlld19zbWFydF9jb2xvcl9waWNrZXJfc2hvdzsKKwogICAgIHJldHVybiB0cnVl
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvY21ha2UvT3B0aW9uc0VmbC5jbWFrZSBiL1NvdXJj
ZS9jbWFrZS9PcHRpb25zRWZsLmNtYWtlCmluZGV4IDNhM2Q5ODAuLmZlMTg5ZDIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9jbWFrZS9PcHRpb25zRWZsLmNtYWtlCisrKyBiL1NvdXJjZS9jbWFrZS9PcHRp
b25zRWZsLmNtYWtlCkBAIC0zMyw2ICszMyw4IEBAIEZJTkRfUEFDS0FHRShKUEVHIFJFUVVJUkVE
KQogRklORF9QQUNLQUdFKFBORyBSRVFVSVJFRCkKIEZJTkRfUEFDS0FHRShaTElCIFJFUVVJUkVE
KQogCitGSU5EX1BBQ0tBR0UoRUxFTUVOVEFSWSBSRVFVSVJFRCkKKwogRklORF9QQUNLQUdFKEdM
SUIgMi4zMS44IFJFUVVJUkVEIENPTVBPTkVOVFMgZ2lvIGdvYmplY3QgZ3RocmVhZCkKIEZJTkRf
UEFDS0FHRShMaWJTb3VwIDIuMzkuNC4xIFJFUVVJUkVEKQogU0VUKEVOQUJMRV9HTElCX1NVUFBP
UlQgT04pCmRpZmYgLS1naXQgYS9Ub29scy9lZmwvamhidWlsZC5tb2R1bGVzIGIvVG9vbHMvZWZs
L2poYnVpbGQubW9kdWxlcwppbmRleCA4MmU1ZGE4Li5iN2RlOTQ1IDEwMDY0NAotLS0gYS9Ub29s
cy9lZmwvamhidWlsZC5tb2R1bGVzCisrKyBiL1Rvb2xzL2VmbC9qaGJ1aWxkLm1vZHVsZXMKQEAg
LTE3LDYgKzE3LDcgQEAKICAgICAgIDxkZXAgcGFja2FnZT0iZV9kYnVzIi8+CiAgICAgICA8ZGVw
IHBhY2thZ2U9ImVlemUiLz4KICAgICAgIDxkZXAgcGFja2FnZT0iZWZyZWV0Ii8+CisgICAgICA8
ZGVwIHBhY2thZ2U9ImVsZW1lbnRhcnkiLz4KICAgICA8L2RlcGVuZGVuY2llcz4KICAgPC9tZXRh
bW9kdWxlPgogCkBAIC0yMzksNCArMjQwLDEyIEBACiAgICAgPC9kZXBlbmRlbmNpZXM+CiAgIDwv
YXV0b3Rvb2xzPgogCisgIDxhdXRvdG9vbHMgaWQ9ImVsZW1lbnRhcnkiPgorICAgIDxicmFuY2gg
bW9kdWxlPSJlbGVtZW50YXJ5IgorICAgICAgICAgICAgcmVwbz0iZW5saWdodGVubWVudC5vcmci
CisgICAgICAgICAgICByZXZpc2lvbj0iNzMwMjciLz4KKyAgICA8ZGVwZW5kZW5jaWVzPgorICAg
IDwvZGVwZW5kZW5jaWVzPgorICA8L2F1dG90b29scz4KKwogPC9tb2R1bGVzZXQ+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>159081</attachid>
            <date>2012-08-17 04:07:41 -0700</date>
            <delta_ts>2012-08-19 23:44:39 -0700</delta_ts>
            <desc>screenshot</desc>
            <filename>screenshot.png</filename>
            <type>image/png</type>
            <size>49325</size>
            <attacher name="KwangYong Choi">ky0.choi</attacher>
            
              <data encoding="base64">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
JGk/lgSTIgESIAESIAESiIzAfsqsyCgwOyRAAiRAAiRAAiTQ7wQos/odKRMkARIgARIgARIgAUWA
Mov1gARIgARIgARIgAQGhABl1oBgZaIkQAIkQAIkQAIkQJnFOkACJEACJEACJEACA0KAMmtAsDJR
EiABEiABEiABEqDMYh0gARIgARIgARIggQEhQJk1IFiZKAmQAAmQAAmQAAlQZrEOkAAJkAAJkAAJ
kMCAEKDMGhCsTJQESIAESIAESIAEKLNYB0iABEiABEiABEhgQAhQZg0IViZKAiRAAiRAAiRAApRZ
rAMkQAIkQAIkQAIkMCAEKLMGBCsTJQESIAESIAESIAHKLNaByAk0NtRwIwESqHACkTdDzF6GCVBm
ZbjwY8+69CsnnXg8tpPddtLYk+12ykljk+3ksaecPA7bRH87ZdxEtZ0wyd8mnjBJb5PVNj7ZJo2f
PGn8lGSbMGXShCmT1XZqajvx1ClqOy1/O/Wk0/O30046/bSTpp52cmo7/eSpp588TW2npLapp5yR
bBPPmKq3aROn526Tpk+bNOOM/G3ymdMLbGfNmHzWjCk529kzppx9pmynuu2cM0895yy3nXbOWWab
efZp6e30mWeffi62c3K2qeedM/W8mbnbrJlTZ82cNuvcQhvC8+KrFM6Zeq7a0umfra6rt5Q9zk69
Y+338qUzqDObx0FjKcxtxhmT8yGDvN5ShYIyMoWliswU4rSp6cJVZa3KXW3p+oAaora8ynPaqSfl
VzOpfqdOxpbUTKmoqsaqzVRj1Ge1+ZXcVn51C3g3Be4Rfaekbh+5oU7BneXdaO7uUzv2rsQdKndr
7G0S85dFApRZWSz1LOQZTfaxY47kRgIkMIgIUGlloXHOWh4ps7JW4pnILxrrMceM4kYCJDDoCFBp
ZaKNzlImKbOyVNqZyStl1qDrXGkwCQgByqzMtNNZyShlVlZKOjv5RDN9zNEjy9yOPmrE6NHDjhw1
bNSotpEjW3vdRoxoQRz8xTZ8ePPw4U3urwTK0Zx0cs8aps4aMaJ55IjW0UcOO2r0cFgLS8q0mdFI
IG4CVFrZaa6zkFPKrCyUcrbyiDYakqXXDeLmyCPbRo1oaWupb2qsqa+rrqutwl/sI2TU8GYcytlG
Dm/GNgLqalhjc1NdY311fe3Q2poj8Bf7CEE4jko0d+7I4S16K3FWE2SZ6K1ezT7gCMNGtjW1NDUM
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
ABIgARIgARIggTgJUGbFWa7MFQmQAAmQAAmQQHAClFnBi4AGkAAJkAAJkAAJxEmAMivOcmWuSIAE
SIAESIAEghOgzApeBDSABEiABEiABEggTgKUWXGWK3NFAiRAAiRAAiQQnABlVvAioAEkQAIkQAIk
QAJxEqDMirNcmSsSIAESIAESIIHgBCizghcBDSABEiABEiABEoiTAGVWnOXKXJEACZAACZAACQQn
QJkVvAhoAAmQAAmQAAmQQJwEKLPiLFfmigRIgARIgARIIDgByqzgRUADSIAESIAESIAE4iRAmRVn
uTJXJEACJEACJEACwQlQZgUvAhpAAiRAAiRAAiQQJwHKrDjLlbkiARIgARIgARIIToAyK3gR0AAS
IAESIAESIIE4CVBmxVmuzBUJkAAJkAAJkEBwApRZwYuABpAACZAACZAACcRJgDIrznJlrkiABEiA
BEiABIIToMwKXgQ0gARIgARIgARIIE4ClFlxlitzRQIkQAIkQAIkEJwAZVbwIqABJEACJEACJEAC
cRKgzIqzXJkrEiABEiABEiCB4AQos4IXAQ0gARIgARIgARKIkwBlVpzlylyRAAmQAAmQAAkEJ0CZ
FbwIaAAJkAAJkAAJkECcBCiz4ixX5ooESIAESIAESCA4Acqs4EVAA0iABEiABEiABOIkQJkVZ7ky
VyRAAiRAAiRAAsEJUGYFLwIaQAIkQAIkQAIkECcByqw4y5W5IgESIAESIAESCE6AMit4EdAAEiAB
EiABEiCBOAlQZsVZrswVCZAACZAACZBAcAKUWcGLgAaQAAmQAAmQAAnESYAyK85yZa5IgARIgARI
gASCE6DMCl4ENIAESIAESIAESCBOApRZcZYrc0UCJEACJEACJBCcAGVW8CKgASRAAiRAAiRAAnES
oMyKs1yZKxIgARIgARIggeAEKLOCFwENIAESIAESIAESiJMAZVac5cpckQAJkAAJkAAJBCdAmRW8
CGgACZAACZAACZBAnAQos+IsV+aKBEiABEiABEggOAHKrOBFQANIgARIgARIgATiJECZFWe5Mlck
QAIkQAIkQALBCVBmBS8CGkACJEACJEACJBAnAcqsOMuVuSIBEiABEiABEghOgDIreBHQABIgARIg
ARIggTgJUGbFWa7MFQmQAAmQAAmQQHAClFnBi4AGkAAJkAAJkAAJxEmAMivOcmWuSIAESIAESIAE
ghOgzApeBDSABEiABEiABEggTgKUWXGWK3NFAiRAAiRAAiQQnABlVvAioAEkQAIkQAIkQAJxEqDM
irNcmSsSIAESIAESIIHgBCizghcBDSABEiABEiABEoiTAGVWnOXKXJEACZAACZAACQQnQJkVvAho
AAmQAAmQAAmQQJwEKLPiLFfmigRIgARIgARIIDgByqzgRUADSIAESIAESIAE4iRAmRVnuTJXJEAC
JEACJEACwQlQZgUvAhpAAiRAAiRAAiQQJwHKrDjLlbkiARIgARIgARIIToAyK3gR0AASIAESIAES
IIE4CVBmxVmuzBUJkAAJkAAJkEBwApRZwYuABpAACZAACZAACcRJgDIrznJlrkiABEiABEiABIIT
oMwKXgQ0gARIgARIgARIIE4ClFlxlitzRQIkQAIkQAIkEJwAZVbwIqABJEACJEACJEACcRKgzIqz
XJkrEiABEiABEiCB4AQos4IXAQ0gARIgARIgARKIkwBlVpzlylyRAAmQAAmQAAkEJ0CZFbwIaAAJ
kAAJkAAJkECcBCiz4ixX5ooESIAESIAESCA4Acqs4EVAA0iABEiABEiABOIkQJkVZ7kyVyRAAiRA
AiRAAsEJUGYFLwIaQAIkQAIkQAIkECcByqw4y5W5IgESIAESIAESCE6AMit4EdAAEiABEiABEiCB
OAlQZsVZrswVCZAACZAACZBAcAKUWcGLgAaQAAmQAAmQAAnESYAyK85yZa5IgARIgARIgASCE6DM
Cl4ENIAESIAESIAESCBOApRZcZYrc0UCJEACJEACJBCcAGVW8CKgASRAAiRAAiRAAnESoMyKs1yZ
KxIgARIgARIggeAEKLOCFwENIAESIAESIAESiJMAZVac5cpckQAJkAAJkAAJBCdAmRW8CGgACZAA
CZAACZBAnAQos+IsV+aKBEiABEiABEggOAHKrOBFQANIgARIgARIgATiJECZFWe5MlckQAIkQAIk
QALBCVBmBS8CGkACJEACJEACJBAnAcqsOMuVuSIBEiABEiABEghOgDIreBHQABIgARIgARIggTgJ
UGbFWa7MFQmQAAmQAAmQQHAClFnBi4AGkAAJkAAJkAAJxEmAMivOcmWuSIAESIAESIAEghOgzApe
BDSABEiABEiABEggTgKUWXGWK3NFAiRAAiRAAiQQnABlVvAioAEkQAIkQAIkQAJxEqDMirNcmSsS
IAESIAESIIHgBCizghcBDSABEiABEiABEoiTAGVWnOXKXJEACZAACZAACQQnQJkVvAhoAAmQAAmQ
AAmQQJwEKLPiLFfmigRIgARIgARIIDgByqzgRUADSIAESIAESIAE4iRAmRVnuTJXJEACJEACJEAC
wQlQZgUvAhpAAiRAAiRAAiQQJwHKrDjLlbkiARIgARIgARIIToAyK3gR0AASIAESIAESIIE4CVBm
xVmuzBUJkAAJkAAJkEBwApRZwYuABpAACZAACZAACcRJgDIrznJlrkiABEiABEiABIIToMwKXgQ0
gARIgARIgARIIE4ClFlxlitzRQIkQAIkQAIkEJwAZVbwIqABJEACJEACJEACcRKgzIqzXJkrEiAB
EiABEiCB4AQos4IXAQ0gARIgARIgARKIkwBlVpzlylyRAAmQAAmQAAkEJ0CZFbwIaAAJkAAJkAAJ
kECcBCiz4ixX5ooESIAESIAESCA4Acqs4EVAA0iABEiABEiABOIkQJkVZ7kyVyRAAiRAAiRAAsEJ
UGYFLwIaQAIkQAIkQAIkECcByqw4y5W5IgESIAESIAESCE6AMit4EdAAEiABEiABEiCBOAlQZsVZ
rswVCZAACZAACZBAcAKUWcGLgAaQAAmQAAmQAAnESYAyK85yZa5IgARIgARIgASCE6DMCl4ENIAE
SIAESIAESCBOApRZcZYrc0UCJEACJEACJBCcAGVW8CKgASRAAiRAAiRAAnESoMyKs1yZKxIgARIg
ARIggeAEKLOCFwENIAESIAESIAESiJMAZVac5cpckQAJkAAJkAAJBCdAmRW8CGgACZAACZAACZBA
nAQos+IsV+aKBEiABEiABEggOAHKrOBFQANIgARIgARIgATiJECZFWe5MlckQAIkQAIkQALBCVBm
BS8CGkACJEACJEACJBAnAcqsOMuVuSIBEiABEiABEghOgDIreBHQABIgARIgARIggTgJUGbFWa7M
FQmQAAmQAAmQQHAClFnBi4AGkAAJkAAJkAAJxEmAMivOcmWuSIAESIAESIAEghOgzApeBDSABEiA
BEiABEggTgKUWXGWK3NFAiRAAiRAAiQQnABlVvAioAEkQAIkQAIkQAJxEqDMirNcmSsSIAESIAES
IIHgBCizghcBDSABEiABEiABEoiTAGVWnOXKXJEACZAACZAACQQnQJkVvAhoAAmQAAmQAAmQQJwE
KLPiLFfmigRIgARIgARIIDgByqzgRUADSIAESIAESIAE4iRgZBbeuJEACZAACZAACZAACfQvgf8f
SEnhqS/RvqEAAAAASUVORK5CYII=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>159343</attachid>
            <date>2012-08-19 23:44:39 -0700</date>
            <delta_ts>2012-08-21 04:42:40 -0700</delta_ts>
            <desc>Patch with test</desc>
            <filename>diff</filename>
            <type>text/plain</type>
            <size>22714</size>
            <attacher name="KwangYong Choi">ky0.choi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCA5ZGExODdkLi5kZjhmNzA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTUg
QEAKKzIwMTItMDgtMTkgIEt3YW5nWW9uZyBDaG9pICA8a3kwLmNob2lAc2Ftc3VuZy5jb20+CisK
KyAgICAgICAgW0VGTF1bV0syXSBJbXBsZW1lbnRlZCBjb2xvciBjaG9vc2VyIHByb3h5IGFuZCBp
bnB1dCBwaWNrZXIgaW50ZXJmYWNlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD05MTgzMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEltcGxlbWVudGVkIGNvbG9yIGNob29zZXIgcHJveHkgYW5kIGlucHV0IHBp
Y2tlciBpbnRlcmZhY2UgZm9yIEVGTC4KKyAgICAgICAgSW5wdXQgcGlja2VyIGludGVyZmFjZSBj
YW4gYmUgdXNlZCBmb3IgZ2VuZXJhbCB1c2Ugb2YgYWxsIHRoZSBpbnB1dAorICAgICAgICB0eXBl
cyBpbmNsdWRpbmcgY29sb3IgaW5wdXQgdHlwZS4KKworICAgICAgICBUaGUgZXh0ZXJuYWwgYXBw
bGljYXRpb24gc2hvdWxkIGltcGxlbWVudCBpbnB1dCBwaWNrZXIgYnkgb3ZlcnJpZGluZworICAg
ICAgICBzbWFydCBjbGFzcyBmdW5jdGlvbi4KKworICAgICAgICAqIFBsYXRmb3JtRWZsLmNtYWtl
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL1BhZ2VDbGllbnRJbXBsLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OmNyZWF0ZUNvbG9yQ2hvb3NlclByb3h5KToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5jcHA6CisgICAgICAgIChfRXdrX1Zp
ZXdfUHJpdmF0ZV9EYXRhKToKKyAgICAgICAgKF9Fd2tfVmlld19Qcml2YXRlX0RhdGE6Ol9Fd2tf
Vmlld19Qcml2YXRlX0RhdGEpOgorICAgICAgICAoZXdrX3ZpZXdfaW5wdXRfcGlja2VyX3Nob3df
cmVxdWVzdCk6CisgICAgICAgIChld2tfdmlld19pbnB1dF9waWNrZXJfaGlkZV9yZXF1ZXN0KToK
KyAgICAgICAgKGV3a192aWV3X2NvbG9yX2Nob29zZXJfc2hvd19yZXF1ZXN0KToKKyAgICAgICAg
KGV3a192aWV3X2NvbG9yX2Nob29zZXJfaGlkZV9yZXF1ZXN0KToKKyAgICAgICAgKGV3a192aWV3
X2NvbG9yX2Nob29zZXJfY29sb3Jfc2V0KToKKyAgICAgICAgKGV3a192aWV3X2NvbG9yX2Nob29z
ZXJfY2xvc2UpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3Lmg6CisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXdfcHJpdmF0ZS5oOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL1VuaXRUZXN0VXRpbHMvRVdLMlVuaXRUZXN0QmFzZS5jcHA6
CisgICAgICAgIChFV0syVW5pdFRlc3Q6OkVXSzJVbml0VGVzdEJhc2U6OkVXSzJVbml0VGVzdEJh
c2UpOgorICAgICAgICAoRVdLMlVuaXRUZXN0OjpFV0syVW5pdFRlc3RCYXNlOjpTZXRVcCk6Cisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvVW5pdFRlc3RVdGlscy9FV0syVW5pdFRl
c3RCYXNlLmg6CisgICAgICAgIChFV0syVW5pdFRlc3Q6OkVXSzJVbml0VGVzdEJhc2U6OmV3a1Zp
ZXdDbGFzcyk6CisgICAgICAgIChFV0syVW5pdFRlc3RCYXNlKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL2VmbC90ZXN0cy9yZXNvdXJjZXMvaW5wdXQtdHlwZS1jb2xvci5odG1sOiBBZGRlZC4K
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy90ZXN0X2V3azJfdmlldy5jcHA6IEFk
ZGVkIGEgdGVzdCBmb3IgY29sb3IgcGlja2VyIGludGVyZmFjZS4KKyAgICAgICAgKGNvbG9yUGlj
a2VyRG9uZUNhbGxiYWNrKToKKyAgICAgICAgKGNvbG9yUGlja2VyQ29sb3JTZWxlY3RlZCk6Cisg
ICAgICAgIChzaG93Q29sb3JQaWNrZXIpOgorICAgICAgICAoaGlkZUNvbG9yUGlja2VyKToKKyAg
ICAgICAgKFRFU1RfRik6CisgICAgICAgICogVUlQcm9jZXNzL2VmbC9XZWJDb2xvckNob29zZXJQ
cm94eUVmbC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6
V2ViQ29sb3JDaG9vc2VyUHJveHlFZmw6OldlYkNvbG9yQ2hvb3NlclByb3h5RWZsKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViQ29sb3JDaG9vc2VyUHJveHlFZmw6On5XZWJDb2xvckNob29zZXJQcm94
eUVmbCk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbG9yQ2hvb3NlclByb3h5RWZsOjplbmRDaG9v
c2VyKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29sb3JDaG9vc2VyUHJveHlFZmw6OnNldFNlbGVj
dGVkQ29sb3IpOgorICAgICAgICAqIFVJUHJvY2Vzcy9lZmwvV2ViQ29sb3JDaG9vc2VyUHJveHlF
ZmwuaDogQWRkZWQuCisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViQ29sb3JDaG9vc2Vy
UHJveHlFZmwpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb2xvckNob29zZXJQcm94eUVmbDo6Y3Jl
YXRlKToKKwogMjAxMi0wOC0xOSAgRGFuIEJlcm5zdGVpbiAgPG1pdHpAYXBwbGUuY29tPgogCiAg
ICAgICAgIFdlYlBhZ2VQcm94eTo6c2V0Q3Vyc29yIGRvZXMgbm90IGNoZWNrIHRoYXQgdGhlIHZp
ZXcgaXMgc3RpbGwgaW4gYW4gYWN0aXZlIHdpbmRvdwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvUGxhdGZvcm1FZmwuY21ha2UgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQpp
bmRleCAxNDM1ZmYyLi4wYzFlNjdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9y
bUVmbC5jbWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQpAQCAtNzEs
NiArNzEsNyBAQCBMSVNUKEFQUEVORCBXZWJLaXQyX1NPVVJDRVMKICAgICBVSVByb2Nlc3MvY2Fp
cm8vQmFja2luZ1N0b3JlQ2Fpcm8uY3BwCiAKICAgICBVSVByb2Nlc3MvZWZsL1RleHRDaGVja2Vy
RWZsLmNwcAorICAgIFVJUHJvY2Vzcy9lZmwvV2ViQ29sb3JDaG9vc2VyUHJveHlFZmwuY3BwCiAg
ICAgVUlQcm9jZXNzL2VmbC9XZWJDb250ZXh0RWZsLmNwcAogICAgIFVJUHJvY2Vzcy9lZmwvV2Vi
RnVsbFNjcmVlbk1hbmFnZXJQcm94eUVmbC5jcHAKICAgICBVSVByb2Nlc3MvZWZsL1dlYkluc3Bl
Y3RvclByb3h5RWZsLmNwcApAQCAtMTI2LDYgKzEyNyw3IEBAIExJU1QoQVBQRU5EIFdlYktpdDJf
SU5DTFVERV9ESVJFQ1RPUklFUwogICAgICIke1dFQktJVDJfRElSfS9VSVByb2Nlc3MvQVBJL0Mv
c291cCIKICAgICAiJHtXRUJLSVQyX0RJUn0vVUlQcm9jZXNzL0FQSS9jcHAvZWZsIgogICAgICIk
e1dFQktJVDJfRElSfS9VSVByb2Nlc3MvQVBJL2VmbCIKKyAgICAiJHtXRUJLSVQyX0RJUn0vVUlQ
cm9jZXNzL2VmbCIKICAgICAiJHtXRUJLSVQyX0RJUn0vVUlQcm9jZXNzL3NvdXAiCiAgICAgIiR7
V0VCS0lUMl9ESVJ9L1dlYlByb2Nlc3MvRG93bmxvYWRzL3NvdXAiCiAgICAgIiR7V0VCS0lUMl9E
SVJ9L1dlYlByb2Nlc3MvZWZsIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9lZmwvUGFnZUNsaWVudEltcGwuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9lZmwvUGFnZUNsaWVudEltcGwuY3BwCmluZGV4IDcyNmNhYWEuLjFmNWJmMzkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL1BhZ2VDbGllbnRJbXBsLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9QYWdlQ2xpZW50SW1wbC5jcHAK
QEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJEcmF3aW5nQXJlYVByb3h5SW1wbC5oIgogI2lu
Y2x1ZGUgIk5hdGl2ZVdlYktleWJvYXJkRXZlbnQuaCIKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRl
ZC5oIgorI2luY2x1ZGUgIldlYkNvbG9yQ2hvb3NlclByb3h5RWZsLmgiCiAjaW5jbHVkZSAiV2Vi
Q29udGV4dC5oIgogI2luY2x1ZGUgIldlYkNvbnRleHRNZW51UHJveHkuaCIKICNpbmNsdWRlICJX
ZWJQYWdlR3JvdXAuaCIKQEAgLTIxNywxMCArMjE4LDkgQEAgUGFzc1JlZlB0cjxXZWJDb250ZXh0
TWVudVByb3h5PiBQYWdlQ2xpZW50SW1wbDo6Y3JlYXRlQ29udGV4dE1lbnVQcm94eShXZWJQYWdl
UHIKIH0KIAogI2lmIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9SKQotUGFzc1JlZlB0cjxXZWJDb2xv
ckNob29zZXJQcm94eT4gUGFnZUNsaWVudEltcGw6OmNyZWF0ZUNvbG9yQ2hvb3NlclByb3h5KFdl
YlBhZ2VQcm94eSosIGNvbnN0IFdlYkNvcmU6OkNvbG9yJikKK1Bhc3NSZWZQdHI8V2ViQ29sb3JD
aG9vc2VyUHJveHk+IFBhZ2VDbGllbnRJbXBsOjpjcmVhdGVDb2xvckNob29zZXJQcm94eShXZWJQ
YWdlUHJveHkqIHBhZ2UsIGNvbnN0IFdlYkNvcmU6OkNvbG9yJiBpbml0aWFsQ29sb3IpCiB7Ci0g
ICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gV2ViQ29sb3JD
aG9vc2VyUHJveHlFZmw6OmNyZWF0ZShtX3ZpZXdXaWRnZXQsIHBhZ2UsIGluaXRpYWxDb2xvcik7
CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9l
ZmwvZXdrX3ZpZXcuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3Zp
ZXcuY3BwCmluZGV4IGNlN2Y3YjQuLmI0OWI4OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5jcHAKQEAgLTkzLDYgKzkzLDEwIEBAIHN0cnVjdCBfRXdr
X1ZpZXdfUHJpdmF0ZV9EYXRhIHsKICAgICBFdmFzX0dMX1N1cmZhY2UqIGV2YXNHbFN1cmZhY2U7
CiAjZW5kaWYKIAorI2lmIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9SKQorICAgIFdlYkNvbG9yQ2hv
b3NlclByb3h5RWZsKiBjb2xvckNob29zZXI7CisjZW5kaWYKKwogICAgIF9Fd2tfVmlld19Qcml2
YXRlX0RhdGEoKQogICAgICAgICA6IGN1cnNvck9iamVjdCgwKQogICAgICAgICAsIGJhY2tGb3J3
YXJkTGlzdCgwKQpAQCAtMTA0LDYgKzEwOCw5IEBAIHN0cnVjdCBfRXdrX1ZpZXdfUHJpdmF0ZV9E
YXRhIHsKICAgICAgICAgLCBldmFzR2xDb250ZXh0KDApCiAgICAgICAgICwgZXZhc0dsU3VyZmFj
ZSgwKQogI2VuZGlmCisjaWYgRU5BQkxFKElOUFVUX1RZUEVfQ09MT1IpCisgICAgICAgICwgY29s
b3JDaG9vc2VyKDApCisjZW5kaWYKICAgICB7IH0KIAogICAgIH5fRXdrX1ZpZXdfUHJpdmF0ZV9E
YXRhKCkKQEAgLTE0NDgsMyArMTQ1NSw3NiBAQCB2b2lkIGV3a192aWV3X2NvbnRlbnRzX3NpemVf
Y2hhbmdlZChjb25zdCBFdmFzX09iamVjdCogZXdrVmlldywgY29uc3QgSW50U2l6ZSYgcwogICAg
IHByaXYtPnZpZXdwb3J0SGFuZGxlci0+ZGlkQ2hhbmdlQ29udGVudHNTaXplKHNpemUpOwogI2Vu
ZGlmCiB9CisKK3ZvaWQgZXdrX3ZpZXdfaW5wdXRfcGlja2VyX3Nob3dfcmVxdWVzdChFdmFzX09i
amVjdCogZXdrVmlldywgRXdrX0lucHV0X1R5cGUgaW5wdXRUeXBlLCBjb25zdCBTdHJpbmcmIGlu
cHV0VmFsdWUpCit7CisgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFy
dERhdGEpOworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKHNtYXJ0RGF0YS0+YXBpKTsK
KyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTihzbWFydERhdGEtPmFwaS0+aW5wdXRfcGlj
a2VyX3Nob3cpOworCisgICAgc21hcnREYXRhLT5hcGktPmlucHV0X3BpY2tlcl9zaG93KHNtYXJ0
RGF0YSwgaW5wdXRUeXBlLCBpbnB1dFZhbHVlLnV0ZjgoKS5kYXRhKCkpOworfQorCit2b2lkIGV3
a192aWV3X2lucHV0X3BpY2tlcl9oaWRlX3JlcXVlc3QoRXZhc19PYmplY3QqIGV3a1ZpZXcsIEV3
a19JbnB1dF9UeXBlIGlucHV0VHlwZSkKK3sKKyAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJO
KGV3a1ZpZXcsIHNtYXJ0RGF0YSk7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oc21h
cnREYXRhLT5hcGkpOworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKHNtYXJ0RGF0YS0+
YXBpLT5pbnB1dF9waWNrZXJfaGlkZSk7CisKKyAgICBzbWFydERhdGEtPmFwaS0+aW5wdXRfcGlj
a2VyX2hpZGUoc21hcnREYXRhLCBpbnB1dFR5cGUpOworfQorCisjaWYgRU5BQkxFKElOUFVUX1RZ
UEVfQ09MT1IpCit2b2lkIGV3a192aWV3X2NvbG9yX2Nob29zZXJfc2hvd19yZXF1ZXN0KEV2YXNf
T2JqZWN0KiBld2tWaWV3LCBXZWJLaXQ6OldlYkNvbG9yQ2hvb3NlclByb3h5RWZsKiBjb2xvckNo
b29zZXIsIGNvbnN0IFN0cmluZyYgaW5wdXRWYWx1ZSkKK3sKKyAgICBFV0tfVklFV19TRF9HRVRf
T1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSk7CisgICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1Jf
UkVUVVJOKHNtYXJ0RGF0YSwgcHJpdik7CisKKyAgICBwcml2LT5jb2xvckNob29zZXIgPSBjb2xv
ckNob29zZXI7CisKKyAgICBld2tfdmlld19pbnB1dF9waWNrZXJfc2hvd19yZXF1ZXN0KGV3a1Zp
ZXcsIEVXS19JTlBVVF9UWVBFX0NPTE9SLCBpbnB1dFZhbHVlKTsKK30KKwordm9pZCBld2tfdmll
d19jb2xvcl9jaG9vc2VyX2hpZGVfcmVxdWVzdChFdmFzX09iamVjdCogZXdrVmlldykKK3sKKyAg
ICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSk7CisgICAgRVdL
X1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgcHJpdik7CisgICAgRUlOQV9TQUZF
VFlfT05fTlVMTF9SRVRVUk4ocHJpdi0+Y29sb3JDaG9vc2VyKTsKKworICAgIHByaXYtPmNvbG9y
Q2hvb3NlciA9IDA7CisKKyAgICBld2tfdmlld19pbnB1dF9waWNrZXJfaGlkZV9yZXF1ZXN0KGV3
a1ZpZXcsIEVXS19JTlBVVF9UWVBFX0NPTE9SKTsKK30KKyNlbmRpZgorCitFaW5hX0Jvb2wgZXdr
X3ZpZXdfY29sb3JfY2hvb3Nlcl9jb2xvcl9zZXQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIGNvbnN0
IGNoYXIqIGNvbG9yKQoreworI2lmIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9SKQorICAgIEVXS19W
SUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhLCBmYWxzZSk7CisgICAgRVdL
X1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgcHJpdiwgZmFsc2UpOworICAgIEVJ
TkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChwcml2LT5jb2xvckNob29zZXIsIGZhbHNlKTsK
KyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoY29sb3IsIGZhbHNlKTsKKworICAg
IHByaXYtPmNvbG9yQ2hvb3Nlci0+c2V0U2VsZWN0ZWRDb2xvcihDb2xvcihjb2xvcikpOworCisg
ICAgcmV0dXJuIHRydWU7CisjZWxzZQorICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgorfQorCitF
aW5hX0Jvb2wgZXdrX3ZpZXdfY29sb3JfY2hvb3Nlcl9jbG9zZShFdmFzX09iamVjdCogZXdrVmll
dykKK3sKKyNpZiBFTkFCTEUoSU5QVVRfVFlQRV9DT0xPUikKKyAgICBFV0tfVklFV19TRF9HRVRf
T1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwgZmFsc2UpOworICAgIEVXS19WSUVXX1BSSVZf
R0VUX09SX1JFVFVSTihzbWFydERhdGEsIHByaXYsIGZhbHNlKTsKKyAgICBFSU5BX1NBRkVUWV9P
Tl9OVUxMX1JFVFVSTl9WQUwocHJpdi0+Y29sb3JDaG9vc2VyLCBmYWxzZSk7CisKKyAgICBwcml2
LT5jb2xvckNob29zZXItPmVuZENob29zZXIoKTsKKyAgICBwcml2LT5jb2xvckNob29zZXIgPSAw
OworCisgICAgcmV0dXJuIHRydWU7CisjZWxzZQorICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgor
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcu
aCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmgKaW5kZXggNjA2
NGNmOC4uNDlmZTBlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9l
ZmwvZXdrX3ZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tf
dmlldy5oCkBAIC04Niw2ICs4NiwyNyBAQCBleHRlcm4gIkMiIHsKIHR5cGVkZWYgc3RydWN0IF9F
d2tfVmlld19TbWFydF9EYXRhIEV3a19WaWV3X1NtYXJ0X0RhdGE7CiB0eXBlZGVmIHN0cnVjdCBf
RXdrX1ZpZXdfU21hcnRfQ2xhc3MgRXdrX1ZpZXdfU21hcnRfQ2xhc3M7CiAKKy8qKgorICogXGVu
dW0gICAgRXdrX0lucHV0X1R5cGUKKyAqIEBicmllZiAgIFByb3ZpZGVzIHR5cGUgb2YgaW5wdXQg
ZWxlbWVudAorICovCitlbnVtIF9Fd2tfSW5wdXRfVHlwZSB7CisgICAgRVdLX0lOUFVUX1RZUEVf
VEVMRVBIT05FID0gMSwKKyAgICBFV0tfSU5QVVRfVFlQRV9OVU1CRVIsCisgICAgRVdLX0lOUFVU
X1RZUEVfRU1BSUwsCisgICAgRVdLX0lOUFVUX1RZUEVfVVJMLAorICAgIEVXS19JTlBVVF9UWVBF
X1BBU1NXT1JELAorICAgIEVXS19JTlBVVF9UWVBFX0NPTE9SLAorICAgIEVXS19JTlBVVF9UWVBF
X0RBVEUsCisgICAgRVdLX0lOUFVUX1RZUEVfREFURVRJTUUsCisgICAgRVdLX0lOUFVUX1RZUEVf
REFURVRJTUVMT0NBTCwKKyAgICBFV0tfSU5QVVRfVFlQRV9NT05USCwKKyAgICBFV0tfSU5QVVRf
VFlQRV9USU1FLAorICAgIEVXS19JTlBVVF9UWVBFX1dFRUsKK307CisvKiogQ3JlYXRlcyBhIHR5
cGUgbmFtZSBmb3IgX0V3a19JbnB1dF9UeXBlX0V3a19JbnB1dF9UeXBlICovCit0eXBlZGVmIGVu
dW0gX0V3a19JbnB1dF9UeXBlIEV3a19JbnB1dF9UeXBlOworCiAvLy8gRXdrIHZpZXcncyBjbGFz
cywgdG8gYmUgb3ZlcnJpZGRlbiBieSBzdWItY2xhc3Nlcy4KIHN0cnVjdCBfRXdrX1ZpZXdfU21h
cnRfQ2xhc3MgewogICAgIEV2YXNfU21hcnRfQ2xhc3Mgc2M7IC8qKjwgYWxsIGJ1dCAnZGF0YScg
aXMgZnJlZSB0byBiZSBjaGFuZ2VkLiAqLwpAQCAtMTAyLDEzICsxMjMsMTcgQEAgc3RydWN0IF9F
d2tfVmlld19TbWFydF9DbGFzcyB7CiAgICAgRWluYV9Cb29sICgqbW91c2VfbW92ZSkoRXdrX1Zp
ZXdfU21hcnRfRGF0YSAqc2QsIGNvbnN0IEV2YXNfRXZlbnRfTW91c2VfTW92ZSAqZXYpOwogICAg
IEVpbmFfQm9vbCAoKmtleV9kb3duKShFd2tfVmlld19TbWFydF9EYXRhICpzZCwgY29uc3QgRXZh
c19FdmVudF9LZXlfRG93biAqZXYpOwogICAgIEVpbmFfQm9vbCAoKmtleV91cCkoRXdrX1ZpZXdf
U21hcnRfRGF0YSAqc2QsIGNvbnN0IEV2YXNfRXZlbnRfS2V5X1VwICpldik7CisKKyAgICAvLyBJ
bnB1dCBQaWNrZXIgQVBJCisgICAgRWluYV9Cb29sICgqaW5wdXRfcGlja2VyX3Nob3cpKEV3a19W
aWV3X1NtYXJ0X0RhdGEgKnNkLCBFd2tfSW5wdXRfVHlwZSBpbnB1dF90eXBlLCBjb25zdCBjaGFy
ICppbnB1dF92YWx1ZSk7CisgICAgRWluYV9Cb29sICgqaW5wdXRfcGlja2VyX2hpZGUpKEV3a19W
aWV3X1NtYXJ0X0RhdGEgKnNkLCBFd2tfSW5wdXRfVHlwZSBpbnB1dF90eXBlKTsKIH07CiAKIC8q
KgogICogVGhlIHZlcnNpb24geW91IGhhdmUgdG8gcHV0IGludG8gdGhlIHZlcnNpb24gZmllbGQK
ICAqIGluIHRoZSBAYSBFd2tfVmlld19TbWFydF9DbGFzcyBzdHJ1Y3R1cmUuCiAgKi8KLSNkZWZp
bmUgRVdLX1ZJRVdfU01BUlRfQ0xBU1NfVkVSU0lPTiAxVUwKKyNkZWZpbmUgRVdLX1ZJRVdfU01B
UlRfQ0xBU1NfVkVSU0lPTiAyVUwKIAogLyoqCiAgKiBJbml0aWFsaXplciBmb3Igd2hvbGUgRXdr
X1ZpZXdfU21hcnRfQ2xhc3Mgc3RydWN0dXJlLgpAQCAtMTIwLDcgKzE0NSw3IEBAIHN0cnVjdCBf
RXdrX1ZpZXdfU21hcnRfQ2xhc3MgewogICogQHNlZSBFV0tfVklFV19TTUFSVF9DTEFTU19JTklU
X1ZFUlNJT04KICAqIEBzZWUgRVdLX1ZJRVdfU01BUlRfQ0xBU1NfSU5JVF9OQU1FX1ZFUlNJT04K
ICAqLwotI2RlZmluZSBFV0tfVklFV19TTUFSVF9DTEFTU19JTklUKHNtYXJ0X2NsYXNzX2luaXQp
IHtzbWFydF9jbGFzc19pbml0LCBFV0tfVklFV19TTUFSVF9DTEFTU19WRVJTSU9OLCAwLCAwLCAw
LCAwLCAwLCAwLCAwLCAwfQorI2RlZmluZSBFV0tfVklFV19TTUFSVF9DTEFTU19JTklUKHNtYXJ0
X2NsYXNzX2luaXQpIHtzbWFydF9jbGFzc19pbml0LCBFV0tfVklFV19TTUFSVF9DTEFTU19WRVJT
SU9OLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwfQogCiAvKioKICAqIEluaXRpYWxpemVy
IHRvIHplcm8gYSB3aG9sZSBFd2tfVmlld19TbWFydF9DbGFzcyBzdHJ1Y3R1cmUuCkBAIC01OTAs
NiArNjE1LDI1IEBAIEVBUEkgRWluYV9Cb29sIGV3a192aWV3X3RleHRfZmluZChFdmFzX09iamVj
dCAqbywgY29uc3QgY2hhciAqdGV4dCwgRXdrX0ZpbmRfT3B0CiAqLwogRUFQSSBFaW5hX0Jvb2wg
ZXdrX3ZpZXdfdGV4dF9maW5kX2hpZ2hsaWdodF9jbGVhcihFdmFzX09iamVjdCAqbyk7CiAKKy8q
KgorICogU2V0cyB0aGUgY29sb3IgdmFsdWUgb2YgY29sb3IgY2hvb3NlcgorICoKKyAqIEBwYXJh
bSBvIHZpZXcgb2JqZWN0IGNvbnRhaW5zIGNvbG9yIGNob29zZXIKKyAqIEBwYXJhbSBjb2xvciAj
UkdCLCAjUlJHR0JCIG9yIG5hbWVkIGNvbG9yIHN0cmluZyB0byBiZSBzZXQKKyAqCisgKiBAcmV0
dXJuIEBjIEVJTkFfVFJVRSBvbiBzdWNjZXNzIEBjIEVJTkFfRkFMU0Ugb3RoZXJ3aXNlCisgKi8K
K0VBUEkgRWluYV9Cb29sIGV3a192aWV3X2NvbG9yX2Nob29zZXJfY29sb3Jfc2V0KEV2YXNfT2Jq
ZWN0ICpvLCBjb25zdCBjaGFyICpjb2xvcik7CisKKy8qKgorICogQ2xvc2VzIGNvbG9yIGNob29z
ZXIKKyAqCisgKiBAcGFyYW0gbyB2aWV3IG9iamVjdCBjb250YWlucyBjb2xvciBjaG9vc2VyCisg
KgorICogQHJldHVybiBAYyBFSU5BX1RSVUUgb24gc3VjY2VzcyBAYyBFSU5BX0ZBTFNFIG90aGVy
d2lzZQorICovCitFQVBJIEVpbmFfQm9vbCBld2tfdmlld19jb2xvcl9jaG9vc2VyX2Nsb3NlKEV2
YXNfT2JqZWN0ICpvKTsKKwogI2lmZGVmIF9fY3BsdXNwbHVzCiB9CiAjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3X3ByaXZhdGUuaCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3X3ByaXZhdGUuaAppbmRl
eCBmNDAyOTg1Li40ODk4YjIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2VmbC9ld2tfdmlld19wcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9lZmwvZXdrX3ZpZXdfcHJpdmF0ZS5oCkBAIC0yMiw5ICsyMiwxNCBAQAogI2RlZmluZSBl
d2tfdmlld19wcml2YXRlX2gKIAogI2luY2x1ZGUgIldlYlBhZ2VQcm94eS5oIgorI2luY2x1ZGUg
ImV3a192aWV3LmgiCiAjaW5jbHVkZSA8RXZhcy5oPgogI2luY2x1ZGUgPFdlYktpdDIvV0tCYXNl
Lmg+CiAKKyNpZiBFTkFCTEUoSU5QVVRfVFlQRV9DT0xPUikKKyNpbmNsdWRlICJXZWJDb2xvckNo
b29zZXJQcm94eUVmbC5oIgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEN1
cnNvcjsKIGNsYXNzIEludFJlY3Q7CkBAIC04OSw0ICs5NCwxMiBAQCBib29sIGV3a192aWV3X2Fj
Y2VsZXJhdGVkX2NvbXBvc2l0aW5nX21vZGVfZW50ZXIoY29uc3QgRXZhc19PYmplY3QqIGV3a1Zp
ZXcpOwogYm9vbCBld2tfdmlld19hY2NlbGVyYXRlZF9jb21wb3NpdGluZ19tb2RlX2V4aXQoY29u
c3QgRXZhc19PYmplY3QqIGV3a1ZpZXcpOwogI2VuZGlmCiAKK3ZvaWQgZXdrX3ZpZXdfaW5wdXRf
cGlja2VyX3Nob3dfcmVxdWVzdChFdmFzX09iamVjdCogZXdrVmlldywgRXdrX0lucHV0X1R5cGUg
aW5wdXRUeXBlLCBjb25zdCBTdHJpbmcmIGlucHV0VmFsdWUpOwordm9pZCBld2tfdmlld19pbnB1
dF9waWNrZXJfaGlkZV9yZXF1ZXN0KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBFd2tfSW5wdXRfVHlw
ZSBpbnB1dFR5cGUpOworCisjaWYgRU5BQkxFKElOUFVUX1RZUEVfQ09MT1IpCit2b2lkIGV3a192
aWV3X2NvbG9yX2Nob29zZXJfc2hvd19yZXF1ZXN0KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBXZWJL
aXQ6OldlYkNvbG9yQ2hvb3NlclByb3h5RWZsKiBjb2xvckNob29zZXIsIGNvbnN0IFN0cmluZyYg
aW5wdXRWYWx1ZSk7Cit2b2lkIGV3a192aWV3X2NvbG9yX2Nob29zZXJfaGlkZV9yZXF1ZXN0KEV2
YXNfT2JqZWN0KiBld2tWaWV3KTsKKyNlbmRpZgorCiAjZW5kaWYgLy8gZXdrX3ZpZXdfcHJpdmF0
ZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy9V
bml0VGVzdFV0aWxzL0VXSzJVbml0VGVzdEJhc2UuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9lZmwvdGVzdHMvVW5pdFRlc3RVdGlscy9FV0syVW5pdFRlc3RCYXNlLmNwcAppbmRl
eCAzOWJjNWE0Li5jN2ZkYWJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2VmbC90ZXN0cy9Vbml0VGVzdFV0aWxzL0VXSzJVbml0VGVzdEJhc2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL1VuaXRUZXN0VXRpbHMvRVdLMlVu
aXRUZXN0QmFzZS5jcHAKQEAgLTIxLDcgKzIxLDYgQEAKICNpbmNsdWRlICJFV0syVW5pdFRlc3RC
YXNlLmgiCiAKICNpbmNsdWRlICJFV0syVW5pdFRlc3RFbnZpcm9ubWVudC5oIgotI2luY2x1ZGUg
PEVXZWJLaXQyLmg+CiAjaW5jbHVkZSA8RWNvcmUuaD4KICNpbmNsdWRlIDxnbGliLW9iamVjdC5o
PgogI2luY2x1ZGUgPHd0Zi9VbnVzZWRQYXJhbS5oPgpAQCAtNDIsNyArNDEsOSBAQCBzdGF0aWMg
dm9pZCBvbkxvYWRGaW5pc2hlZCh2b2lkKiB1c2VyRGF0YSwgRXZhc19PYmplY3QqIHdlYlZpZXcs
IHZvaWQqIGV2ZW50SW5mbwogRVdLMlVuaXRUZXN0QmFzZTo6RVdLMlVuaXRUZXN0QmFzZSgpCiAg
ICAgOiBtX2Vjb3JlRXZhcygwKQogICAgICwgbV93ZWJWaWV3KDApCisgICAgLCBtX2V3a1ZpZXdD
bGFzcyhFV0tfVklFV19TTUFSVF9DTEFTU19JTklUX05BTUVfVkVSU0lPTigiQnJvd3Nlcl9WaWV3
IikpCiB7CisgICAgZXdrX3ZpZXdfc21hcnRfY2xhc3Nfc2V0KCZtX2V3a1ZpZXdDbGFzcyk7CiB9
CiAKIHZvaWQgRVdLMlVuaXRUZXN0QmFzZTo6U2V0VXAoKQpAQCAtNjAsNyArNjEsOCBAQCB2b2lk
IEVXSzJVbml0VGVzdEJhc2U6OlNldFVwKCkKICAgICBlY29yZV9ldmFzX3Nob3cobV9lY29yZUV2
YXMpOwogICAgIEV2YXMqIGV2YXMgPSBlY29yZV9ldmFzX2dldChtX2Vjb3JlRXZhcyk7CiAKLSAg
ICBtX3dlYlZpZXcgPSBld2tfdmlld19hZGQoZXZhcyk7CisgICAgRXZhc19TbWFydCogc21hcnQg
PSBldmFzX3NtYXJ0X2NsYXNzX25ldygmbV9ld2tWaWV3Q2xhc3Muc2MpOworICAgIG1fd2ViVmll
dyA9IGV3a192aWV3X3NtYXJ0X2FkZChldmFzLCBzbWFydCwgZXdrX2NvbnRleHRfZGVmYXVsdF9n
ZXQoKSk7CiAgICAgZXdrX3ZpZXdfdGhlbWVfc2V0KG1fd2ViVmlldywgZW52aXJvbm1lbnQtPmRl
ZmF1bHRUaGVtZSgpKTsKIAogICAgIGV2YXNfb2JqZWN0X3Jlc2l6ZShtX3dlYlZpZXcsIHdpZHRo
LCBoZWlnaHQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwv
dGVzdHMvVW5pdFRlc3RVdGlscy9FV0syVW5pdFRlc3RCYXNlLmggYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2VmbC90ZXN0cy9Vbml0VGVzdFV0aWxzL0VXSzJVbml0VGVzdEJhc2UuaApp
bmRleCAyOWQ1NWJlLi4zNjhlODFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2VmbC90ZXN0cy9Vbml0VGVzdFV0aWxzL0VXSzJVbml0VGVzdEJhc2UuaAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy9Vbml0VGVzdFV0aWxzL0VXSzJV
bml0VGVzdEJhc2UuaApAQCAtMjAsNiArMjAsNyBAQAogI2lmbmRlZiBFV0syVW5pdFRlc3RCYXNl
X2gKICNkZWZpbmUgRVdLMlVuaXRUZXN0QmFzZV9oCiAKKyNpbmNsdWRlIDxFV2ViS2l0Mi5oPgog
I2luY2x1ZGUgPEVjb3JlX0V2YXMuaD4KICNpbmNsdWRlIDxFdmFzLmg+CiAjaW5jbHVkZSA8Z3Rl
c3QvZ3Rlc3QuaD4KQEAgLTI5LDYgKzMwLDcgQEAgbmFtZXNwYWNlIEVXSzJVbml0VGVzdCB7CiBj
bGFzcyBFV0syVW5pdFRlc3RCYXNlIDogcHVibGljIDo6dGVzdGluZzo6VGVzdCB7CiBwdWJsaWM6
CiAgICAgRXZhc19PYmplY3QqIHdlYlZpZXcoKSB7IHJldHVybiBtX3dlYlZpZXc7IH0KKyAgICBF
d2tfVmlld19TbWFydF9DbGFzcyogZXdrVmlld0NsYXNzKCkgeyByZXR1cm4gJm1fZXdrVmlld0Ns
YXNzOyB9CiAKIHByb3RlY3RlZDoKICAgICBFV0syVW5pdFRlc3RCYXNlKCk7CkBAIC00Myw2ICs0
NSw4IEBAIHByb3RlY3RlZDoKIHByaXZhdGU6CiAgICAgRXZhc19PYmplY3QqIG1fd2ViVmlldzsK
ICAgICBFY29yZV9FdmFzKiBtX2Vjb3JlRXZhczsKKworICAgIEV3a19WaWV3X1NtYXJ0X0NsYXNz
IG1fZXdrVmlld0NsYXNzOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgRVdLMlVuaXRUZXN0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy9yZXNvdXJjZXMv
aW5wdXQtdHlwZS1jb2xvci5odG1sIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwv
dGVzdHMvcmVzb3VyY2VzL2lucHV0LXR5cGUtY29sb3IuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwLi41Y2U1Y2U3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvcmVzb3VyY2VzL2lucHV0LXR5cGUtY29sb3IuaHRt
bApAQCAtMCwwICsxLDYgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8Ym9keT4KKzxpbnB1
dCB0eXBlPSJjb2xvciIgdmFsdWU9IiNmZjAwMDAiPgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvdGVzdF9ld2syX3Zp
ZXcuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvdGVzdF9ld2sy
X3ZpZXcuY3BwCmluZGV4IDVlZGIwNDMuLjE0ZWFhYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL3Rlc3RfZXdrMl92aWV3LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy90ZXN0X2V3azJfdmlldy5jcHAKQEAg
LTE4OCwzICsxODgsNzggQEAgVEVTVF9GKEVXSzJVbml0VGVzdEJhc2UsIGV3a192aWV3X2Zvcm1f
c3VibWlzc2lvbl9yZXF1ZXN0KQogICAgIEFTU0VSVF9UUlVFKGhhbmRsZWQpOwogICAgIGV2YXNf
b2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2RlbCh3ZWJWaWV3KCksICJmb3JtLHN1Ym1pc3Npb24scmVx
dWVzdCIsIG9uRm9ybUFib3V0VG9CZVN1Ym1pdHRlZCk7CiB9CisKKyNpZiBFTkFCTEUoSU5QVVRf
VFlQRV9DT0xPUikKK3N0YXRpYyBjb25zdCBjaGFyIGluaXRpYWxDb2xvcltdID0gIiNmZjAwMDAi
Oworc3RhdGljIGNvbnN0IGNoYXIgY2hhbmdlZENvbG9yW10gPSAiIzAwMDBmZiI7CisKK3N0YXRp
YyB2b2lkIGNvbG9yUGlja2VyRG9uZUNhbGxiYWNrKHZvaWQqIHVzZXJEYXRhLCBFdmFzX09iamVj
dCogdmlldywgdm9pZCopCit7CisgICAgYm9vbCogaGFuZGxlZCA9IHN0YXRpY19jYXN0PGJvb2wq
Pih1c2VyRGF0YSk7CisKKyAgICAqaGFuZGxlZCA9IHRydWU7Cit9CisKK3N0YXRpYyB1bnNpZ25l
ZCBjaGFyIGNvbG9yUGlja2VyQ29sb3JTZWxlY3RlZCh2b2lkKiBkYXRhKQoreworICAgIEV3a19W
aWV3X1NtYXJ0X0RhdGEqIHNtYXJ0RGF0YSA9IHN0YXRpY19jYXN0PEV3a19WaWV3X1NtYXJ0X0Rh
dGEqPihkYXRhKTsKKworICAgIC8vIDQuIENoYW5nZSBjb2xvciBhcyBjaGFuZ2VkQ29sb3IuCisg
ICAgRVhQRUNUX1RSVUUoZXdrX3ZpZXdfY29sb3JfY2hvb3Nlcl9jb2xvcl9zZXQoc21hcnREYXRh
LT5zZWxmLCBjaGFuZ2VkQ29sb3IpKTsKKyAgICBFWFBFQ1RfVFJVRShld2tfdmlld19jb2xvcl9j
aG9vc2VyX2Nsb3NlKHNtYXJ0RGF0YS0+c2VsZikpOworCisgICAgZXZhc19vYmplY3Rfc21hcnRf
Y2FsbGJhY2tfY2FsbChzbWFydERhdGEtPnNlbGYsICJpbnB1dCx0eXBlLGNvbG9yLHJlcXVlc3Qi
LCAwKTsKKworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgRWluYV9Cb29sIHNob3dDb2xvclBp
Y2tlcihFd2tfVmlld19TbWFydF9EYXRhKiBzbWFydERhdGEsIEV3a19JbnB1dF9UeXBlIGlucHV0
VHlwZSwgY29uc3QgY2hhciogaW5wdXRWYWx1ZSkKK3sKKyAgICBzdGF0aWMgYm9vbCBpc0ZpcnN0
UnVuID0gdHJ1ZTsKKworICAgIGlmIChpc0ZpcnN0UnVuKSB7CisgICAgICAgIC8vIDEuIENoZWNr
IHR5cGUgb2YgaW5wdXQuCisgICAgICAgIEVYUEVDVF9FUShpbnB1dFR5cGUsIEVXS19JTlBVVF9U
WVBFX0NPTE9SKTsKKyAgICAgICAgLy8gMi4gQ2hlY2sgaW5pdGlhbCB2YWx1ZSBmcm9tIGh0bWwg
ZmlsZS4KKyAgICAgICAgRVhQRUNUX1NUUkVRKGlucHV0VmFsdWUsIGluaXRpYWxDb2xvcik7CisK
KyAgICAgICAgaXNGaXJzdFJ1biA9IGZhbHNlOworICAgIH0gZWxzZQorICAgICAgICAvLyA1LiBJ
dCBzaG91bGQgYmUgY2hhbmdlZENvbG9yLgorICAgICAgICBFWFBFQ1RfU1RSRVEoaW5wdXRWYWx1
ZSwgY2hhbmdlZENvbG9yKTsKKworICAgIC8vIDMuIFJldHVybiBhZnRlciBtYWtpbmcgYSBjb2xv
ciBwaWNrZXIuCisgICAgZWNvcmVfdGltZXJfYWRkKDAuMCwgY29sb3JQaWNrZXJDb2xvclNlbGVj
dGVkLCBzbWFydERhdGEpOworICAgIHJldHVybiB0cnVlOworfQorCitzdGF0aWMgRWluYV9Cb29s
IGhpZGVDb2xvclBpY2tlcihFd2tfVmlld19TbWFydF9EYXRhKiBzbWFydERhdGEsIEV3a19JbnB1
dF9UeXBlIGlucHV0VHlwZSkKK3sKKyAgICBFWFBFQ1RfRVEoaW5wdXRUeXBlLCBFV0tfSU5QVVRf
VFlQRV9DT0xPUik7Cit9CisKK1RFU1RfRihFV0syVW5pdFRlc3RCYXNlLCBld2tfdmlld19jb2xv
cl9jaG9vc2VyKQoreworICAgIEV3a19WaWV3X1NtYXJ0X0NsYXNzKiBhcGkgPSBld2tWaWV3Q2xh
c3MoKTsKKyAgICBhcGktPmlucHV0X3BpY2tlcl9zaG93ID0gc2hvd0NvbG9yUGlja2VyOworICAg
IGFwaS0+aW5wdXRfcGlja2VyX2hpZGUgPSBoaWRlQ29sb3JQaWNrZXI7CisKKyAgICBsb2FkVXJs
U3luYyhlbnZpcm9ubWVudC0+dXJsRm9yUmVzb3VyY2UoImlucHV0LXR5cGUtY29sb3IuaHRtbCIp
LmRhdGEoKSk7CisKKyAgICAvLyBDbGljayBpbnB1dCBlbGVtZW50LgorICAgIG1vdXNlQ2xpY2so
MzAsIDIwKTsKKworICAgIGJvb2wgaGFuZGxlZCA9IGZhbHNlOworICAgIGV2YXNfb2JqZWN0X3Nt
YXJ0X2NhbGxiYWNrX2FkZCh3ZWJWaWV3KCksICJpbnB1dCx0eXBlLGNvbG9yLHJlcXVlc3QiLCBj
b2xvclBpY2tlckRvbmVDYWxsYmFjaywgJmhhbmRsZWQpOworICAgIHdoaWxlICghaGFuZGxlZCkK
KyAgICAgICAgZWNvcmVfbWFpbl9sb29wX2l0ZXJhdGUoKTsKKworICAgIC8vIENsaWNrIGlucHV0
IGVsZW1lbnQgYWdhaW4uCisgICAgbW91c2VDbGljaygzMCwgMjApOworCisgICAgaGFuZGxlZCA9
IGZhbHNlOworICAgIHdoaWxlICghaGFuZGxlZCkKKyAgICAgICAgZWNvcmVfbWFpbl9sb29wX2l0
ZXJhdGUoKTsKKyAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19kZWwod2ViVmlldygpLCAi
aW5wdXQsdHlwZSxjb2xvcixyZXF1ZXN0IiwgY29sb3JQaWNrZXJEb25lQ2FsbGJhY2spOworfQor
I2VuZGlmIC8vIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9SKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL2VmbC9XZWJDb2xvckNob29zZXJQcm94eUVmbC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYkNvbG9yQ2hvb3NlclByb3h5RWZsLmNwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNmNkNmNjCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJDb2xvckNob29zZXJQcm94eUVmbC5jcHAK
QEAgLTAsMCArMSw2NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBTYW1zdW5nIEVsZWN0
cm9uaWNzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorI2luY2x1ZGUgIldlYkNvbG9yQ2hvb3NlclByb3h5RWZsLmgiCisKKyNpZiBFTkFCTEUoSU5Q
VVRfVFlQRV9DT0xPUikKKworI2luY2x1ZGUgImV3a192aWV3X3ByaXZhdGUuaCIKKworbmFtZXNw
YWNlIFdlYktpdCB7CisKK1dlYkNvbG9yQ2hvb3NlclByb3h5RWZsOjpXZWJDb2xvckNob29zZXJQ
cm94eUVmbChFdmFzX09iamVjdCogd2ViVmlldywgV2ViQ29sb3JDaG9vc2VyUHJveHk6OkNsaWVu
dCogY2xpZW50LCBjb25zdCBXZWJDb3JlOjpDb2xvciYgY29sb3IpCisgICAgOiBXZWJDb2xvckNo
b29zZXJQcm94eShjbGllbnQpCisgICAgLCBtX3dlYlZpZXcod2ViVmlldykKK3sKKyAgICBld2tf
dmlld19jb2xvcl9jaG9vc2VyX3Nob3dfcmVxdWVzdChtX3dlYlZpZXcsIHRoaXMsIGNvbG9yLnNl
cmlhbGl6ZWQoKSk7Cit9CisKK1dlYkNvbG9yQ2hvb3NlclByb3h5RWZsOjp+V2ViQ29sb3JDaG9v
c2VyUHJveHlFZmwoKQoreworICAgIGV3a192aWV3X2NvbG9yX2Nob29zZXJfaGlkZV9yZXF1ZXN0
KG1fd2ViVmlldyk7Cit9CisKK3ZvaWQgV2ViQ29sb3JDaG9vc2VyUHJveHlFZmw6OmVuZENob29z
ZXIoKQoreworICAgIGlmICghbV9jbGllbnQpCisgICAgICAgIHJldHVybjsKKworICAgIG1fY2xp
ZW50LT5kaWRFbmRDb2xvckNob29zZXIoKTsKK30KKwordm9pZCBXZWJDb2xvckNob29zZXJQcm94
eUVmbDo6c2V0U2VsZWN0ZWRDb2xvcihjb25zdCBXZWJDb3JlOjpDb2xvciYgY29sb3IpCit7Cisg
ICAgaWYgKCFtX2NsaWVudCkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9jbGllbnQtPmRpZENo
b29zZUNvbG9yKGNvbG9yKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAv
LyBFTkFCTEUoSU5QVVRfVFlQRV9DT0xPUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9lZmwvV2ViQ29sb3JDaG9vc2VyUHJveHlFZmwuaCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9lZmwvV2ViQ29sb3JDaG9vc2VyUHJveHlFZmwuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwLi5lNzA2NGE0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL2VmbC9XZWJDb2xvckNob29zZXJQcm94eUVmbC5oCkBAIC0wLDAgKzEsNjEg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgU2Ftc3VuZyBFbGVjdHJvbmljcy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViQ29sb3JDaG9vc2VyUHJveHlFZmxf
aAorI2RlZmluZSBXZWJDb2xvckNob29zZXJQcm94eUVmbF9oCisKKyNpZiBFTkFCTEUoSU5QVVRf
VFlQRV9DT0xPUikKKworI2luY2x1ZGUgIkNvbG9yLmgiCisjaW5jbHVkZSAiV2ViQ29sb3JDaG9v
c2VyUHJveHkuaCIKKwordHlwZWRlZiBzdHJ1Y3QgX0V2YXNfT2JqZWN0IEV2YXNfT2JqZWN0Owor
CituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2ViUGFnZVByb3h5OworCitjbGFzcyBXZWJD
b2xvckNob29zZXJQcm94eUVmbCA6IHB1YmxpYyBXZWJDb2xvckNob29zZXJQcm94eSB7CitwdWJs
aWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViQ29sb3JDaG9vc2VyUHJveHlFZmw+IGNyZWF0
ZShFdmFzX09iamVjdCogd2ViVmlldywgV2ViQ29sb3JDaG9vc2VyUHJveHk6OkNsaWVudCogY2xp
ZW50LCBjb25zdCBXZWJDb3JlOjpDb2xvciYgY29sb3IpCisgICAgeworICAgICAgICByZXR1cm4g
YWRvcHRSZWYobmV3IFdlYkNvbG9yQ2hvb3NlclByb3h5RWZsKHdlYlZpZXcsIGNsaWVudCwgY29s
b3IpKTsKKyAgICB9CisgICAgfldlYkNvbG9yQ2hvb3NlclByb3h5RWZsKCk7CisKKyAgICB2b2lk
IGVuZENob29zZXIoKTsKKyAgICB2b2lkIHNldFNlbGVjdGVkQ29sb3IoY29uc3QgV2ViQ29yZTo6
Q29sb3ImKTsKKworcHJpdmF0ZToKKyAgICBXZWJDb2xvckNob29zZXJQcm94eUVmbChFdmFzX09i
amVjdCosIFdlYkNvbG9yQ2hvb3NlclByb3h5OjpDbGllbnQqLCBjb25zdCBXZWJDb3JlOjpDb2xv
ciYpOworCisgICAgRXZhc19PYmplY3QqIG1fd2ViVmlldzsKK307CisKK30gLy8gbmFtZXNwYWNl
IFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKElOUFVUX1RZUEVfQ09MT1IpCisKKyNlbmRpZiAv
LyBXZWJDb2xvckNob29zZXJQcm94eUVmbF9oCg==
</data>
<flag name="commit-queue"
          id="169636"
          type_id="3"
          status="-"
          setter="gyuyoung.kim"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>159657</attachid>
            <date>2012-08-21 04:42:40 -0700</date>
            <delta_ts>2012-08-21 17:44:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>diff</filename>
            <type>text/plain</type>
            <size>21779</size>
            <attacher name="KwangYong Choi">ky0.choi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCA1NGMwMDU2Li5hYTg5N2VmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTYg
QEAKKzIwMTItMDgtMjEgIEt3YW5nWW9uZyBDaG9pICA8a3kwLmNob2lAc2Ftc3VuZy5jb20+CisK
KyAgICAgICAgW0VGTF1bV0syXSBJbXBsZW1lbnRlZCBjb2xvciBjaG9vc2VyIHByb3h5IGFuZCBp
bnB1dCBwaWNrZXIgaW50ZXJmYWNlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD05MTgzMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEltcGxlbWVudGVkIGNvbG9yIGNob29zZXIgcHJveHkgYW5kIGlucHV0IHBp
Y2tlciBpbnRlcmZhY2UgZm9yIEVGTC4KKyAgICAgICAgSW5wdXQgcGlja2VyIGludGVyZmFjZSBj
YW4gYmUgdXNlZCBmb3IgZ2VuZXJhbCB1c2Ugb2YgYWxsIHRoZSBpbnB1dAorICAgICAgICB0eXBl
cyBpbmNsdWRpbmcgY29sb3IgaW5wdXQgdHlwZS4KKworICAgICAgICBUaGUgZXh0ZXJuYWwgYXBw
bGljYXRpb24gc2hvdWxkIGltcGxlbWVudCBpbnB1dCBwaWNrZXIgYnkgb3ZlcnJpZGluZworICAg
ICAgICBzbWFydCBjbGFzcyBmdW5jdGlvbi4KKworICAgICAgICBJbiBhZGRpdGlvbiwgc2V0dGlu
ZyBhcGkgZm9yIGNvbG9yIHBpY2tlciBpcyBpbXBsZW1lbnRlZC4KKworICAgICAgICAqIFBsYXRm
b3JtRWZsLmNtYWtlOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL1BhZ2VDbGllbnRJbXBs
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OmNyZWF0ZUNvbG9yQ2hvb3Nl
clByb3h5KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5jcHA6CisgICAg
ICAgIChfRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKToKKyAgICAgICAgKF9Fd2tfVmlld19Qcml2YXRl
X0RhdGE6Ol9Fd2tfVmlld19Qcml2YXRlX0RhdGEpOgorICAgICAgICAoZXdrX3ZpZXdfaW5wdXRf
cGlja2VyX3Nob3dfcmVxdWVzdCk6CisgICAgICAgIChld2tfdmlld19pbnB1dF9waWNrZXJfaGlk
ZV9yZXF1ZXN0KToKKyAgICAgICAgKGV3a192aWV3X2NvbG9yX3BpY2tlcl9zaG93X3JlcXVlc3Qp
OgorICAgICAgICAoZXdrX3ZpZXdfY29sb3JfcGlja2VyX2hpZGVfcmVxdWVzdCk6CisgICAgICAg
IChld2tfdmlld19pbnB1dF9waWNrZXJfY29sb3Jfc2V0KToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL2VmbC9ld2tfdmlldy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3
X3ByaXZhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy9Vbml0VGVzdFV0
aWxzL0VXSzJVbml0VGVzdEJhc2UuY3BwOgorICAgICAgICAoRVdLMlVuaXRUZXN0OjpFV0syVW5p
dFRlc3RCYXNlOjpFV0syVW5pdFRlc3RCYXNlKToKKyAgICAgICAgKEVXSzJVbml0VGVzdDo6RVdL
MlVuaXRUZXN0QmFzZTo6U2V0VXApOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL3Rlc3Rz
L1VuaXRUZXN0VXRpbHMvRVdLMlVuaXRUZXN0QmFzZS5oOgorICAgICAgICAoRVdLMlVuaXRUZXN0
OjpFV0syVW5pdFRlc3RCYXNlOjpld2tWaWV3Q2xhc3MpOgorICAgICAgICAoRVdLMlVuaXRUZXN0
QmFzZSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvcmVzb3VyY2VzL2lucHV0
LXR5cGUtY29sb3IuaHRtbDogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvdGVz
dHMvdGVzdF9ld2syX3ZpZXcuY3BwOiBBZGRlZCBhIHRlc3QgZm9yIGNvbG9yIHBpY2tlciBhcGku
CisgICAgICAgIChjb2xvclBpY2tlckRvbmVDYWxsYmFjayk6CisgICAgICAgIChjb2xvclBpY2tl
ckNvbG9yU2VsZWN0ZWQpOgorICAgICAgICAoc2hvd0NvbG9yUGlja2VyKToKKyAgICAgICAgKGhp
ZGVDb2xvclBpY2tlcik6CisgICAgICAgIChURVNUX0YpOgorICAgICAgICAqIFVJUHJvY2Vzcy9l
ZmwvV2ViQ29sb3JDaG9vc2VyUHJveHlFZmwuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdCk6
CisgICAgICAgIChXZWJLaXQ6OldlYkNvbG9yQ2hvb3NlclByb3h5RWZsOjpXZWJDb2xvckNob29z
ZXJQcm94eUVmbCk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbG9yQ2hvb3NlclByb3h5RWZsOjp+
V2ViQ29sb3JDaG9vc2VyUHJveHlFZmwpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb2xvckNob29z
ZXJQcm94eUVmbDo6ZW5kQ2hvb3Nlcik6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbG9yQ2hvb3Nl
clByb3h5RWZsOjpzZXRTZWxlY3RlZENvbG9yKToKKyAgICAgICAgKiBVSVByb2Nlc3MvZWZsL1dl
YkNvbG9yQ2hvb3NlclByb3h5RWZsLmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0KToKKyAgICAg
ICAgKFdlYkNvbG9yQ2hvb3NlclByb3h5RWZsKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29sb3JD
aG9vc2VyUHJveHlFZmw6OmNyZWF0ZSk6CisKIDIwMTItMDgtMTggIEpvaG4gU3VsbGl2YW4gIDxz
dWxsaXZhbkBhcHBsZS5jb20+CiAKICAgICAgICAgPGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD05NDQ4Nj4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3Jt
RWZsLmNtYWtlIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UKaW5kZXggZDRiMDhm
OC4uOWVmOWM4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UK
KysrIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UKQEAgLTcxLDYgKzcxLDcgQEAg
TElTVChBUFBFTkQgV2ViS2l0Ml9TT1VSQ0VTCiAgICAgVUlQcm9jZXNzL2NhaXJvL0JhY2tpbmdT
dG9yZUNhaXJvLmNwcAogCiAgICAgVUlQcm9jZXNzL2VmbC9UZXh0Q2hlY2tlckVmbC5jcHAKKyAg
ICBVSVByb2Nlc3MvZWZsL1dlYkNvbG9yQ2hvb3NlclByb3h5RWZsLmNwcAogICAgIFVJUHJvY2Vz
cy9lZmwvV2ViQ29udGV4dEVmbC5jcHAKICAgICBVSVByb2Nlc3MvZWZsL1dlYkZ1bGxTY3JlZW5N
YW5hZ2VyUHJveHlFZmwuY3BwCiAgICAgVUlQcm9jZXNzL2VmbC9XZWJJbnNwZWN0b3JQcm94eUVm
bC5jcHAKQEAgLTEyNiw2ICsxMjcsNyBAQCBMSVNUKEFQUEVORCBXZWJLaXQyX0lOQ0xVREVfRElS
RUNUT1JJRVMKICAgICAiJHtXRUJLSVQyX0RJUn0vVUlQcm9jZXNzL0FQSS9DL3NvdXAiCiAgICAg
IiR7V0VCS0lUMl9ESVJ9L1VJUHJvY2Vzcy9BUEkvY3BwL2VmbCIKICAgICAiJHtXRUJLSVQyX0RJ
Un0vVUlQcm9jZXNzL0FQSS9lZmwiCisgICAgIiR7V0VCS0lUMl9ESVJ9L1VJUHJvY2Vzcy9lZmwi
CiAgICAgIiR7V0VCS0lUMl9ESVJ9L1VJUHJvY2Vzcy9zb3VwIgogICAgICIke1dFQktJVDJfRElS
fS9XZWJQcm9jZXNzL0Rvd25sb2Fkcy9zb3VwIgogICAgICIke1dFQktJVDJfRElSfS9XZWJQcm9j
ZXNzL2VmbCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL1Bh
Z2VDbGllbnRJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL1BhZ2VD
bGllbnRJbXBsLmNwcAppbmRleCA3MjZjYWFhLi4xZjViZjM5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9QYWdlQ2xpZW50SW1wbC5jcHAKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvUGFnZUNsaWVudEltcGwuY3BwCkBAIC0yOSw2ICsy
OSw3IEBACiAjaW5jbHVkZSAiRHJhd2luZ0FyZWFQcm94eUltcGwuaCIKICNpbmNsdWRlICJOYXRp
dmVXZWJLZXlib2FyZEV2ZW50LmgiCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKKyNpbmNs
dWRlICJXZWJDb2xvckNob29zZXJQcm94eUVmbC5oIgogI2luY2x1ZGUgIldlYkNvbnRleHQuaCIK
ICNpbmNsdWRlICJXZWJDb250ZXh0TWVudVByb3h5LmgiCiAjaW5jbHVkZSAiV2ViUGFnZUdyb3Vw
LmgiCkBAIC0yMTcsMTAgKzIxOCw5IEBAIFBhc3NSZWZQdHI8V2ViQ29udGV4dE1lbnVQcm94eT4g
UGFnZUNsaWVudEltcGw6OmNyZWF0ZUNvbnRleHRNZW51UHJveHkoV2ViUGFnZVByCiB9CiAKICNp
ZiBFTkFCTEUoSU5QVVRfVFlQRV9DT0xPUikKLVBhc3NSZWZQdHI8V2ViQ29sb3JDaG9vc2VyUHJv
eHk+IFBhZ2VDbGllbnRJbXBsOjpjcmVhdGVDb2xvckNob29zZXJQcm94eShXZWJQYWdlUHJveHkq
LCBjb25zdCBXZWJDb3JlOjpDb2xvciYpCitQYXNzUmVmUHRyPFdlYkNvbG9yQ2hvb3NlclByb3h5
PiBQYWdlQ2xpZW50SW1wbDo6Y3JlYXRlQ29sb3JDaG9vc2VyUHJveHkoV2ViUGFnZVByb3h5KiBw
YWdlLCBjb25zdCBXZWJDb3JlOjpDb2xvciYgaW5pdGlhbENvbG9yKQogewotICAgIG5vdEltcGxl
bWVudGVkKCk7Ci0gICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIFdlYkNvbG9yQ2hvb3NlclByb3h5
RWZsOjpjcmVhdGUobV92aWV3V2lkZ2V0LCBwYWdlLCBpbml0aWFsQ29sb3IpOwogfQogI2VuZGlm
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmNwcAppbmRl
eCBjZTdmN2I0Li40MTFiMTFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2VmbC9ld2tfdmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9l
ZmwvZXdrX3ZpZXcuY3BwCkBAIC05Myw2ICs5MywxMCBAQCBzdHJ1Y3QgX0V3a19WaWV3X1ByaXZh
dGVfRGF0YSB7CiAgICAgRXZhc19HTF9TdXJmYWNlKiBldmFzR2xTdXJmYWNlOwogI2VuZGlmCiAK
KyNpZiBFTkFCTEUoSU5QVVRfVFlQRV9DT0xPUikKKyAgICBXZWJDb2xvckNob29zZXJQcm94eUVm
bCogY29sb3JDaG9vc2VyOworI2VuZGlmCisKICAgICBfRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKCkK
ICAgICAgICAgOiBjdXJzb3JPYmplY3QoMCkKICAgICAgICAgLCBiYWNrRm9yd2FyZExpc3QoMCkK
QEAgLTEwNCw2ICsxMDgsOSBAQCBzdHJ1Y3QgX0V3a19WaWV3X1ByaXZhdGVfRGF0YSB7CiAgICAg
ICAgICwgZXZhc0dsQ29udGV4dCgwKQogICAgICAgICAsIGV2YXNHbFN1cmZhY2UoMCkKICNlbmRp
ZgorI2lmIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9SKQorICAgICAgICAsIGNvbG9yQ2hvb3Nlcigw
KQorI2VuZGlmCiAgICAgeyB9CiAKICAgICB+X0V3a19WaWV3X1ByaXZhdGVfRGF0YSgpCkBAIC0x
NDQ4LDMgKzE0NTUsNjIgQEAgdm9pZCBld2tfdmlld19jb250ZW50c19zaXplX2NoYW5nZWQoY29u
c3QgRXZhc19PYmplY3QqIGV3a1ZpZXcsIGNvbnN0IEludFNpemUmIHMKICAgICBwcml2LT52aWV3
cG9ydEhhbmRsZXItPmRpZENoYW5nZUNvbnRlbnRzU2l6ZShzaXplKTsKICNlbmRpZgogfQorCit2
b2lkIGV3a192aWV3X2lucHV0X3BpY2tlcl9zaG93X3JlcXVlc3QoRXZhc19PYmplY3QqIGV3a1Zp
ZXcsIEV3a19JbnB1dF9UeXBlIGlucHV0VHlwZSwgY29uc3QgU3RyaW5nJiBpbnB1dFZhbHVlKQor
eworICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhKTsKKyAg
ICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTihzbWFydERhdGEtPmFwaSk7CisgICAgRUlOQV9T
QUZFVFlfT05fTlVMTF9SRVRVUk4oc21hcnREYXRhLT5hcGktPmlucHV0X3BpY2tlcl9zaG93KTsK
KworICAgIHNtYXJ0RGF0YS0+YXBpLT5pbnB1dF9waWNrZXJfc2hvdyhzbWFydERhdGEsIGlucHV0
VHlwZSwgaW5wdXRWYWx1ZS51dGY4KCkuZGF0YSgpKTsKK30KKwordm9pZCBld2tfdmlld19pbnB1
dF9waWNrZXJfaGlkZV9yZXF1ZXN0KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBFd2tfSW5wdXRfVHlw
ZSBpbnB1dFR5cGUpCit7CisgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBz
bWFydERhdGEpOworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKHNtYXJ0RGF0YS0+YXBp
KTsKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTihzbWFydERhdGEtPmFwaS0+aW5wdXRf
cGlja2VyX2hpZGUpOworCisgICAgc21hcnREYXRhLT5hcGktPmlucHV0X3BpY2tlcl9oaWRlKHNt
YXJ0RGF0YSwgaW5wdXRUeXBlKTsKK30KKworI2lmIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9SKQor
dm9pZCBld2tfdmlld19jb2xvcl9waWNrZXJfc2hvd19yZXF1ZXN0KEV2YXNfT2JqZWN0KiBld2tW
aWV3LCBXZWJLaXQ6OldlYkNvbG9yQ2hvb3NlclByb3h5RWZsKiBjb2xvckNob29zZXIsIGNvbnN0
IFN0cmluZyYgaW5wdXRWYWx1ZSkKK3sKKyAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3
a1ZpZXcsIHNtYXJ0RGF0YSk7CisgICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNtYXJ0
RGF0YSwgcHJpdik7CisKKyAgICBwcml2LT5jb2xvckNob29zZXIgPSBjb2xvckNob29zZXI7CisK
KyAgICBld2tfdmlld19pbnB1dF9waWNrZXJfc2hvd19yZXF1ZXN0KGV3a1ZpZXcsIEVXS19JTlBV
VF9UWVBFX0NPTE9SLCBpbnB1dFZhbHVlKTsKK30KKwordm9pZCBld2tfdmlld19jb2xvcl9waWNr
ZXJfaGlkZV9yZXF1ZXN0KEV2YXNfT2JqZWN0KiBld2tWaWV3KQoreworICAgIEVXS19WSUVXX1NE
X0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhKTsKKyAgICBFV0tfVklFV19QUklWX0dF
VF9PUl9SRVRVUk4oc21hcnREYXRhLCBwcml2KTsKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JF
VFVSTihwcml2LT5jb2xvckNob29zZXIpOworCisgICAgcHJpdi0+Y29sb3JDaG9vc2VyID0gMDsK
KworICAgIGV3a192aWV3X2lucHV0X3BpY2tlcl9oaWRlX3JlcXVlc3QoZXdrVmlldywgRVdLX0lO
UFVUX1RZUEVfQ09MT1IpOworfQorI2VuZGlmCisKK0VpbmFfQm9vbCBld2tfdmlld19pbnB1dF9w
aWNrZXJfY29sb3Jfc2V0KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBjb25zdCBjaGFyKiBjb2xvcikK
K3sKKyNpZiBFTkFCTEUoSU5QVVRfVFlQRV9DT0xPUikKKyAgICBFV0tfVklFV19TRF9HRVRfT1Jf
UkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwgZmFsc2UpOworICAgIEVXS19WSUVXX1BSSVZfR0VU
X09SX1JFVFVSTihzbWFydERhdGEsIHByaXYsIGZhbHNlKTsKKyAgICBFSU5BX1NBRkVUWV9PTl9O
VUxMX1JFVFVSTl9WQUwocHJpdi0+Y29sb3JDaG9vc2VyLCBmYWxzZSk7CisgICAgRUlOQV9TQUZF
VFlfT05fTlVMTF9SRVRVUk5fVkFMKGNvbG9yLCBmYWxzZSk7CisKKyAgICBwcml2LT5jb2xvckNo
b29zZXItPnNldFNlbGVjdGVkQ29sb3IoQ29sb3IoY29sb3IpKTsKKyAgICBwcml2LT5jb2xvckNo
b29zZXItPmVuZENob29zZXIoKTsKKyAgICBwcml2LT5jb2xvckNob29zZXIgPSAwOworCisgICAg
cmV0dXJuIHRydWU7CisjZWxzZQorICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgorfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuaCBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmgKaW5kZXggNjA2NGNmOC4uNTM1
MmYxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3Zp
ZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5oCkBA
IC04Niw2ICs4NiwxNiBAQCBleHRlcm4gIkMiIHsKIHR5cGVkZWYgc3RydWN0IF9Fd2tfVmlld19T
bWFydF9EYXRhIEV3a19WaWV3X1NtYXJ0X0RhdGE7CiB0eXBlZGVmIHN0cnVjdCBfRXdrX1ZpZXdf
U21hcnRfQ2xhc3MgRXdrX1ZpZXdfU21hcnRfQ2xhc3M7CiAKKy8qKgorICogXGVudW0gICAgRXdr
X0lucHV0X1R5cGUKKyAqIEBicmllZiAgIFByb3ZpZGVzIHR5cGUgb2YgaW5wdXQgZWxlbWVudAor
ICovCitlbnVtIF9Fd2tfSW5wdXRfVHlwZSB7CisgICAgRVdLX0lOUFVUX1RZUEVfQ09MT1IKK307
CisvKiogQ3JlYXRlcyBhIHR5cGUgbmFtZSBmb3IgX0V3a19JbnB1dF9UeXBlX0V3a19JbnB1dF9U
eXBlICovCit0eXBlZGVmIGVudW0gX0V3a19JbnB1dF9UeXBlIEV3a19JbnB1dF9UeXBlOworCiAv
Ly8gRXdrIHZpZXcncyBjbGFzcywgdG8gYmUgb3ZlcnJpZGRlbiBieSBzdWItY2xhc3Nlcy4KIHN0
cnVjdCBfRXdrX1ZpZXdfU21hcnRfQ2xhc3MgewogICAgIEV2YXNfU21hcnRfQ2xhc3Mgc2M7IC8q
KjwgYWxsIGJ1dCAnZGF0YScgaXMgZnJlZSB0byBiZSBjaGFuZ2VkLiAqLwpAQCAtMTAyLDEzICsx
MTIsMTcgQEAgc3RydWN0IF9Fd2tfVmlld19TbWFydF9DbGFzcyB7CiAgICAgRWluYV9Cb29sICgq
bW91c2VfbW92ZSkoRXdrX1ZpZXdfU21hcnRfRGF0YSAqc2QsIGNvbnN0IEV2YXNfRXZlbnRfTW91
c2VfTW92ZSAqZXYpOwogICAgIEVpbmFfQm9vbCAoKmtleV9kb3duKShFd2tfVmlld19TbWFydF9E
YXRhICpzZCwgY29uc3QgRXZhc19FdmVudF9LZXlfRG93biAqZXYpOwogICAgIEVpbmFfQm9vbCAo
KmtleV91cCkoRXdrX1ZpZXdfU21hcnRfRGF0YSAqc2QsIGNvbnN0IEV2YXNfRXZlbnRfS2V5X1Vw
ICpldik7CisKKyAgICAvLyBJbnB1dCBQaWNrZXIgQVBJCisgICAgRWluYV9Cb29sICgqaW5wdXRf
cGlja2VyX3Nob3cpKEV3a19WaWV3X1NtYXJ0X0RhdGEgKnNkLCBFd2tfSW5wdXRfVHlwZSBpbnB1
dF90eXBlLCBjb25zdCBjaGFyICppbnB1dF92YWx1ZSk7CisgICAgRWluYV9Cb29sICgqaW5wdXRf
cGlja2VyX2hpZGUpKEV3a19WaWV3X1NtYXJ0X0RhdGEgKnNkLCBFd2tfSW5wdXRfVHlwZSBpbnB1
dF90eXBlKTsKIH07CiAKIC8qKgogICogVGhlIHZlcnNpb24geW91IGhhdmUgdG8gcHV0IGludG8g
dGhlIHZlcnNpb24gZmllbGQKICAqIGluIHRoZSBAYSBFd2tfVmlld19TbWFydF9DbGFzcyBzdHJ1
Y3R1cmUuCiAgKi8KLSNkZWZpbmUgRVdLX1ZJRVdfU01BUlRfQ0xBU1NfVkVSU0lPTiAxVUwKKyNk
ZWZpbmUgRVdLX1ZJRVdfU01BUlRfQ0xBU1NfVkVSU0lPTiAyVUwKIAogLyoqCiAgKiBJbml0aWFs
aXplciBmb3Igd2hvbGUgRXdrX1ZpZXdfU21hcnRfQ2xhc3Mgc3RydWN0dXJlLgpAQCAtMTIwLDcg
KzEzNCw3IEBAIHN0cnVjdCBfRXdrX1ZpZXdfU21hcnRfQ2xhc3MgewogICogQHNlZSBFV0tfVklF
V19TTUFSVF9DTEFTU19JTklUX1ZFUlNJT04KICAqIEBzZWUgRVdLX1ZJRVdfU01BUlRfQ0xBU1Nf
SU5JVF9OQU1FX1ZFUlNJT04KICAqLwotI2RlZmluZSBFV0tfVklFV19TTUFSVF9DTEFTU19JTklU
KHNtYXJ0X2NsYXNzX2luaXQpIHtzbWFydF9jbGFzc19pbml0LCBFV0tfVklFV19TTUFSVF9DTEFT
U19WRVJTSU9OLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwfQorI2RlZmluZSBFV0tfVklFV19TTUFS
VF9DTEFTU19JTklUKHNtYXJ0X2NsYXNzX2luaXQpIHtzbWFydF9jbGFzc19pbml0LCBFV0tfVklF
V19TTUFSVF9DTEFTU19WRVJTSU9OLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwfQogCiAv
KioKICAqIEluaXRpYWxpemVyIHRvIHplcm8gYSB3aG9sZSBFd2tfVmlld19TbWFydF9DbGFzcyBz
dHJ1Y3R1cmUuCkBAIC01OTAsNiArNjA0LDE2IEBAIEVBUEkgRWluYV9Cb29sIGV3a192aWV3X3Rl
eHRfZmluZChFdmFzX09iamVjdCAqbywgY29uc3QgY2hhciAqdGV4dCwgRXdrX0ZpbmRfT3B0CiAq
LwogRUFQSSBFaW5hX0Jvb2wgZXdrX3ZpZXdfdGV4dF9maW5kX2hpZ2hsaWdodF9jbGVhcihFdmFz
X09iamVjdCAqbyk7CiAKKy8qKgorICogU2V0cyB0aGUgY29sb3IgdmFsdWUgb2YgY29sb3IgY2hv
b3NlcgorICoKKyAqIEBwYXJhbSBvIHZpZXcgb2JqZWN0IGNvbnRhaW5zIGNvbG9yIGNob29zZXIK
KyAqIEBwYXJhbSBjb2xvciAjUkdCLCAjUlJHR0JCIG9yIG5hbWVkIGNvbG9yIHN0cmluZyB0byBi
ZSBzZXQKKyAqCisgKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBvbiBzdWNjZXNzIEBjIEVJTkFfRkFM
U0Ugb3RoZXJ3aXNlCisgKi8KK0VBUEkgRWluYV9Cb29sIGV3a192aWV3X2lucHV0X3BpY2tlcl9j
b2xvcl9zZXQoRXZhc19PYmplY3QgKm8sIGNvbnN0IGNoYXIgKmNvbG9yKTsKKwogI2lmZGVmIF9f
Y3BsdXNwbHVzCiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZWZsL2V3a192aWV3X3ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZWZsL2V3a192aWV3X3ByaXZhdGUuaAppbmRleCBmNDAyOTg1Li42Zjk1NDhkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlld19wcml2YXRlLmgK
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXdfcHJpdmF0ZS5o
CkBAIC0yMiw5ICsyMiwxNCBAQAogI2RlZmluZSBld2tfdmlld19wcml2YXRlX2gKIAogI2luY2x1
ZGUgIldlYlBhZ2VQcm94eS5oIgorI2luY2x1ZGUgImV3a192aWV3LmgiCiAjaW5jbHVkZSA8RXZh
cy5oPgogI2luY2x1ZGUgPFdlYktpdDIvV0tCYXNlLmg+CiAKKyNpZiBFTkFCTEUoSU5QVVRfVFlQ
RV9DT0xPUikKKyNpbmNsdWRlICJXZWJDb2xvckNob29zZXJQcm94eUVmbC5oIgorI2VuZGlmCisK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEN1cnNvcjsKIGNsYXNzIEludFJlY3Q7CkBAIC04
OSw0ICs5NCwxMiBAQCBib29sIGV3a192aWV3X2FjY2VsZXJhdGVkX2NvbXBvc2l0aW5nX21vZGVf
ZW50ZXIoY29uc3QgRXZhc19PYmplY3QqIGV3a1ZpZXcpOwogYm9vbCBld2tfdmlld19hY2NlbGVy
YXRlZF9jb21wb3NpdGluZ19tb2RlX2V4aXQoY29uc3QgRXZhc19PYmplY3QqIGV3a1ZpZXcpOwog
I2VuZGlmCiAKK3ZvaWQgZXdrX3ZpZXdfaW5wdXRfcGlja2VyX3Nob3dfcmVxdWVzdChFdmFzX09i
amVjdCogZXdrVmlldywgRXdrX0lucHV0X1R5cGUgaW5wdXRUeXBlLCBjb25zdCBTdHJpbmcmIGlu
cHV0VmFsdWUpOwordm9pZCBld2tfdmlld19pbnB1dF9waWNrZXJfaGlkZV9yZXF1ZXN0KEV2YXNf
T2JqZWN0KiBld2tWaWV3LCBFd2tfSW5wdXRfVHlwZSBpbnB1dFR5cGUpOworCisjaWYgRU5BQkxF
KElOUFVUX1RZUEVfQ09MT1IpCit2b2lkIGV3a192aWV3X2NvbG9yX3BpY2tlcl9zaG93X3JlcXVl
c3QoRXZhc19PYmplY3QqIGV3a1ZpZXcsIFdlYktpdDo6V2ViQ29sb3JDaG9vc2VyUHJveHlFZmwq
IGNvbG9yQ2hvb3NlciwgY29uc3QgU3RyaW5nJiBpbnB1dFZhbHVlKTsKK3ZvaWQgZXdrX3ZpZXdf
Y29sb3JfcGlja2VyX2hpZGVfcmVxdWVzdChFdmFzX09iamVjdCogZXdrVmlldyk7CisjZW5kaWYK
KwogI2VuZGlmIC8vIGV3a192aWV3X3ByaXZhdGVfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvVW5pdFRlc3RVdGlscy9FV0syVW5pdFRlc3RCYXNl
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL1VuaXRUZXN0VXRp
bHMvRVdLMlVuaXRUZXN0QmFzZS5jcHAKaW5kZXggMzliYzVhNC4uYzdmZGFiYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvVW5pdFRlc3RVdGlscy9F
V0syVW5pdFRlc3RCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2Vm
bC90ZXN0cy9Vbml0VGVzdFV0aWxzL0VXSzJVbml0VGVzdEJhc2UuY3BwCkBAIC0yMSw3ICsyMSw2
IEBACiAjaW5jbHVkZSAiRVdLMlVuaXRUZXN0QmFzZS5oIgogCiAjaW5jbHVkZSAiRVdLMlVuaXRU
ZXN0RW52aXJvbm1lbnQuaCIKLSNpbmNsdWRlIDxFV2ViS2l0Mi5oPgogI2luY2x1ZGUgPEVjb3Jl
Lmg+CiAjaW5jbHVkZSA8Z2xpYi1vYmplY3QuaD4KICNpbmNsdWRlIDx3dGYvVW51c2VkUGFyYW0u
aD4KQEAgLTQyLDcgKzQxLDkgQEAgc3RhdGljIHZvaWQgb25Mb2FkRmluaXNoZWQodm9pZCogdXNl
ckRhdGEsIEV2YXNfT2JqZWN0KiB3ZWJWaWV3LCB2b2lkKiBldmVudEluZm8KIEVXSzJVbml0VGVz
dEJhc2U6OkVXSzJVbml0VGVzdEJhc2UoKQogICAgIDogbV9lY29yZUV2YXMoMCkKICAgICAsIG1f
d2ViVmlldygwKQorICAgICwgbV9ld2tWaWV3Q2xhc3MoRVdLX1ZJRVdfU01BUlRfQ0xBU1NfSU5J
VF9OQU1FX1ZFUlNJT04oIkJyb3dzZXJfVmlldyIpKQogeworICAgIGV3a192aWV3X3NtYXJ0X2Ns
YXNzX3NldCgmbV9ld2tWaWV3Q2xhc3MpOwogfQogCiB2b2lkIEVXSzJVbml0VGVzdEJhc2U6OlNl
dFVwKCkKQEAgLTYwLDcgKzYxLDggQEAgdm9pZCBFV0syVW5pdFRlc3RCYXNlOjpTZXRVcCgpCiAg
ICAgZWNvcmVfZXZhc19zaG93KG1fZWNvcmVFdmFzKTsKICAgICBFdmFzKiBldmFzID0gZWNvcmVf
ZXZhc19nZXQobV9lY29yZUV2YXMpOwogCi0gICAgbV93ZWJWaWV3ID0gZXdrX3ZpZXdfYWRkKGV2
YXMpOworICAgIEV2YXNfU21hcnQqIHNtYXJ0ID0gZXZhc19zbWFydF9jbGFzc19uZXcoJm1fZXdr
Vmlld0NsYXNzLnNjKTsKKyAgICBtX3dlYlZpZXcgPSBld2tfdmlld19zbWFydF9hZGQoZXZhcywg
c21hcnQsIGV3a19jb250ZXh0X2RlZmF1bHRfZ2V0KCkpOwogICAgIGV3a192aWV3X3RoZW1lX3Nl
dChtX3dlYlZpZXcsIGVudmlyb25tZW50LT5kZWZhdWx0VGhlbWUoKSk7CiAKICAgICBldmFzX29i
amVjdF9yZXNpemUobV93ZWJWaWV3LCB3aWR0aCwgaGVpZ2h0KTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL1VuaXRUZXN0VXRpbHMvRVdLMlVuaXRU
ZXN0QmFzZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvVW5pdFRl
c3RVdGlscy9FV0syVW5pdFRlc3RCYXNlLmgKaW5kZXggMjlkNTViZS4uMzY4ZTgxYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvVW5pdFRlc3RVdGls
cy9FV0syVW5pdFRlc3RCYXNlLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9l
ZmwvdGVzdHMvVW5pdFRlc3RVdGlscy9FV0syVW5pdFRlc3RCYXNlLmgKQEAgLTIwLDYgKzIwLDcg
QEAKICNpZm5kZWYgRVdLMlVuaXRUZXN0QmFzZV9oCiAjZGVmaW5lIEVXSzJVbml0VGVzdEJhc2Vf
aAogCisjaW5jbHVkZSA8RVdlYktpdDIuaD4KICNpbmNsdWRlIDxFY29yZV9FdmFzLmg+CiAjaW5j
bHVkZSA8RXZhcy5oPgogI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+CkBAIC0yOSw2ICszMCw3IEBA
IG5hbWVzcGFjZSBFV0syVW5pdFRlc3QgewogY2xhc3MgRVdLMlVuaXRUZXN0QmFzZSA6IHB1Ymxp
YyA6OnRlc3Rpbmc6OlRlc3QgewogcHVibGljOgogICAgIEV2YXNfT2JqZWN0KiB3ZWJWaWV3KCkg
eyByZXR1cm4gbV93ZWJWaWV3OyB9CisgICAgRXdrX1ZpZXdfU21hcnRfQ2xhc3MqIGV3a1ZpZXdD
bGFzcygpIHsgcmV0dXJuICZtX2V3a1ZpZXdDbGFzczsgfQogCiBwcm90ZWN0ZWQ6CiAgICAgRVdL
MlVuaXRUZXN0QmFzZSgpOwpAQCAtNDMsNiArNDUsOCBAQCBwcm90ZWN0ZWQ6CiBwcml2YXRlOgog
ICAgIEV2YXNfT2JqZWN0KiBtX3dlYlZpZXc7CiAgICAgRWNvcmVfRXZhcyogbV9lY29yZUV2YXM7
CisKKyAgICBFd2tfVmlld19TbWFydF9DbGFzcyBtX2V3a1ZpZXdDbGFzczsKIH07CiAKIH0gLy8g
bmFtZXNwYWNlIEVXSzJVbml0VGVzdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9lZmwvdGVzdHMvcmVzb3VyY2VzL2lucHV0LXR5cGUtY29sb3IuaHRtbCBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL3Jlc291cmNlcy9pbnB1dC10eXBlLWNv
bG9yLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWNlNWNlNwotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL3Jl
c291cmNlcy9pbnB1dC10eXBlLWNvbG9yLmh0bWwKQEAgLTAsMCArMSw2IEBACis8IURPQ1RZUEUg
aHRtbD4KKzxodG1sPgorPGJvZHk+Cis8aW5wdXQgdHlwZT0iY29sb3IiIHZhbHVlPSIjZmYwMDAw
Ij4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZWZsL3Rlc3RzL3Rlc3RfZXdrMl92aWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZWZsL3Rlc3RzL3Rlc3RfZXdrMl92aWV3LmNwcAppbmRleCA1ZWRiMDQzLi42MTYy
NzdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy90
ZXN0X2V3azJfdmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwv
dGVzdHMvdGVzdF9ld2syX3ZpZXcuY3BwCkBAIC0xODgsMyArMTg4LDc3IEBAIFRFU1RfRihFV0sy
VW5pdFRlc3RCYXNlLCBld2tfdmlld19mb3JtX3N1Ym1pc3Npb25fcmVxdWVzdCkKICAgICBBU1NF
UlRfVFJVRShoYW5kbGVkKTsKICAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19kZWwod2Vi
VmlldygpLCAiZm9ybSxzdWJtaXNzaW9uLHJlcXVlc3QiLCBvbkZvcm1BYm91dFRvQmVTdWJtaXR0
ZWQpOwogfQorCisjaWYgRU5BQkxFKElOUFVUX1RZUEVfQ09MT1IpCitzdGF0aWMgY29uc3QgY2hh
ciBpbml0aWFsQ29sb3JbXSA9ICIjZmYwMDAwIjsKK3N0YXRpYyBjb25zdCBjaGFyIGNoYW5nZWRD
b2xvcltdID0gIiMwMDAwZmYiOworCitzdGF0aWMgdm9pZCBjb2xvclBpY2tlckRvbmVDYWxsYmFj
ayh2b2lkKiB1c2VyRGF0YSwgRXZhc19PYmplY3QqIHZpZXcsIHZvaWQqKQoreworICAgIGJvb2wq
IGhhbmRsZWQgPSBzdGF0aWNfY2FzdDxib29sKj4odXNlckRhdGEpOworCisgICAgKmhhbmRsZWQg
PSB0cnVlOworfQorCitzdGF0aWMgdW5zaWduZWQgY2hhciBjb2xvclBpY2tlckNvbG9yU2VsZWN0
ZWQodm9pZCogZGF0YSkKK3sKKyAgICBFd2tfVmlld19TbWFydF9EYXRhKiBzbWFydERhdGEgPSBz
dGF0aWNfY2FzdDxFd2tfVmlld19TbWFydF9EYXRhKj4oZGF0YSk7CisKKyAgICAvLyA0LiBDaGFu
Z2UgY29sb3IgYXMgY2hhbmdlZENvbG9yLgorICAgIEVYUEVDVF9UUlVFKGV3a192aWV3X2lucHV0
X3BpY2tlcl9jb2xvcl9zZXQoc21hcnREYXRhLT5zZWxmLCBjaGFuZ2VkQ29sb3IpKTsKKworICAg
IGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwoc21hcnREYXRhLT5zZWxmLCAiaW5wdXQs
dHlwZSxjb2xvcixyZXF1ZXN0IiwgMCk7CisKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIEVp
bmFfQm9vbCBzaG93Q29sb3JQaWNrZXIoRXdrX1ZpZXdfU21hcnRfRGF0YSogc21hcnREYXRhLCBF
d2tfSW5wdXRfVHlwZSBpbnB1dFR5cGUsIGNvbnN0IGNoYXIqIGlucHV0VmFsdWUpCit7CisgICAg
c3RhdGljIGJvb2wgaXNGaXJzdFJ1biA9IHRydWU7CisKKyAgICBpZiAoaXNGaXJzdFJ1bikgewor
ICAgICAgICAvLyAxLiBDaGVjayB0eXBlIG9mIGlucHV0LgorICAgICAgICBFWFBFQ1RfRVEoaW5w
dXRUeXBlLCBFV0tfSU5QVVRfVFlQRV9DT0xPUik7CisgICAgICAgIC8vIDIuIENoZWNrIGluaXRp
YWwgdmFsdWUgZnJvbSBodG1sIGZpbGUuCisgICAgICAgIEVYUEVDVF9TVFJFUShpbnB1dFZhbHVl
LCBpbml0aWFsQ29sb3IpOworCisgICAgICAgIGlzRmlyc3RSdW4gPSBmYWxzZTsKKyAgICB9IGVs
c2UKKyAgICAgICAgLy8gNS4gaW5wdXRWYWx1ZSBzaG91bGQgYmUgY2hhbmdlZENvbG9yLgorICAg
ICAgICBFWFBFQ1RfU1RSRVEoaW5wdXRWYWx1ZSwgY2hhbmdlZENvbG9yKTsKKworICAgIC8vIDMu
IFJldHVybiBhZnRlciBtYWtpbmcgYSBjb2xvciBwaWNrZXIuCisgICAgZWNvcmVfdGltZXJfYWRk
KDAuMCwgY29sb3JQaWNrZXJDb2xvclNlbGVjdGVkLCBzbWFydERhdGEpOworICAgIHJldHVybiB0
cnVlOworfQorCitzdGF0aWMgRWluYV9Cb29sIGhpZGVDb2xvclBpY2tlcihFd2tfVmlld19TbWFy
dF9EYXRhKiBzbWFydERhdGEsIEV3a19JbnB1dF9UeXBlIGlucHV0VHlwZSkKK3sKKyAgICBFWFBF
Q1RfRVEoaW5wdXRUeXBlLCBFV0tfSU5QVVRfVFlQRV9DT0xPUik7Cit9CisKK1RFU1RfRihFV0sy
VW5pdFRlc3RCYXNlLCBld2tfdmlld19pbnB1dF9waWNrZXJfY29sb3Jfc2V0KQoreworICAgIEV3
a19WaWV3X1NtYXJ0X0NsYXNzKiBhcGkgPSBld2tWaWV3Q2xhc3MoKTsKKyAgICBhcGktPmlucHV0
X3BpY2tlcl9zaG93ID0gc2hvd0NvbG9yUGlja2VyOworICAgIGFwaS0+aW5wdXRfcGlja2VyX2hp
ZGUgPSBoaWRlQ29sb3JQaWNrZXI7CisKKyAgICBsb2FkVXJsU3luYyhlbnZpcm9ubWVudC0+dXJs
Rm9yUmVzb3VyY2UoImlucHV0LXR5cGUtY29sb3IuaHRtbCIpLmRhdGEoKSk7CisKKyAgICAvLyBD
bGljayBpbnB1dCBlbGVtZW50LgorICAgIG1vdXNlQ2xpY2soMzAsIDIwKTsKKworICAgIGJvb2wg
aGFuZGxlZCA9IGZhbHNlOworICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2FkZCh3ZWJW
aWV3KCksICJpbnB1dCx0eXBlLGNvbG9yLHJlcXVlc3QiLCBjb2xvclBpY2tlckRvbmVDYWxsYmFj
aywgJmhhbmRsZWQpOworICAgIHdoaWxlICghaGFuZGxlZCkKKyAgICAgICAgZWNvcmVfbWFpbl9s
b29wX2l0ZXJhdGUoKTsKKworICAgIC8vIENsaWNrIGlucHV0IGVsZW1lbnQgYWdhaW4uCisgICAg
bW91c2VDbGljaygzMCwgMjApOworCisgICAgaGFuZGxlZCA9IGZhbHNlOworICAgIHdoaWxlICgh
aGFuZGxlZCkKKyAgICAgICAgZWNvcmVfbWFpbl9sb29wX2l0ZXJhdGUoKTsKKyAgICBldmFzX29i
amVjdF9zbWFydF9jYWxsYmFja19kZWwod2ViVmlldygpLCAiaW5wdXQsdHlwZSxjb2xvcixyZXF1
ZXN0IiwgY29sb3JQaWNrZXJEb25lQ2FsbGJhY2spOworfQorI2VuZGlmIC8vIEVOQUJMRShJTlBV
VF9UWVBFX0NPTE9SKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9X
ZWJDb2xvckNob29zZXJQcm94eUVmbC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZs
L1dlYkNvbG9yQ2hvb3NlclByb3h5RWZsLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwLi45MDQwNWZhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL2VmbC9XZWJDb2xvckNob29zZXJQcm94eUVmbC5jcHAKQEAgLTAsMCArMSw2NSBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNzLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYkNvbG9y
Q2hvb3NlclByb3h5RWZsLmgiCisKKyNpZiBFTkFCTEUoSU5QVVRfVFlQRV9DT0xPUikKKworI2lu
Y2x1ZGUgImV3a192aWV3X3ByaXZhdGUuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK1dlYkNv
bG9yQ2hvb3NlclByb3h5RWZsOjpXZWJDb2xvckNob29zZXJQcm94eUVmbChFdmFzX09iamVjdCog
d2ViVmlldywgV2ViQ29sb3JDaG9vc2VyUHJveHk6OkNsaWVudCogY2xpZW50LCBjb25zdCBXZWJD
b3JlOjpDb2xvciYgY29sb3IpCisgICAgOiBXZWJDb2xvckNob29zZXJQcm94eShjbGllbnQpCisg
ICAgLCBtX3dlYlZpZXcod2ViVmlldykKK3sKKyAgICBld2tfdmlld19jb2xvcl9waWNrZXJfc2hv
d19yZXF1ZXN0KG1fd2ViVmlldywgdGhpcywgY29sb3Iuc2VyaWFsaXplZCgpKTsKK30KKworV2Vi
Q29sb3JDaG9vc2VyUHJveHlFZmw6On5XZWJDb2xvckNob29zZXJQcm94eUVmbCgpCit7CisgICAg
ZXdrX3ZpZXdfY29sb3JfcGlja2VyX2hpZGVfcmVxdWVzdChtX3dlYlZpZXcpOworfQorCit2b2lk
IFdlYkNvbG9yQ2hvb3NlclByb3h5RWZsOjplbmRDaG9vc2VyKCkKK3sKKyAgICBpZiAoIW1fY2xp
ZW50KQorICAgICAgICByZXR1cm47CisKKyAgICBtX2NsaWVudC0+ZGlkRW5kQ29sb3JDaG9vc2Vy
KCk7Cit9CisKK3ZvaWQgV2ViQ29sb3JDaG9vc2VyUHJveHlFZmw6OnNldFNlbGVjdGVkQ29sb3Io
Y29uc3QgV2ViQ29yZTo6Q29sb3ImIGNvbG9yKQoreworICAgIGlmICghbV9jbGllbnQpCisgICAg
ICAgIHJldHVybjsKKworICAgIG1fY2xpZW50LT5kaWRDaG9vc2VDb2xvcihjb2xvcik7Cit9CisK
K30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKElOUFVUX1RZUEVfQ09M
T1IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYkNvbG9yQ2hv
b3NlclByb3h5RWZsLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYkNvbG9yQ2hv
b3NlclByb3h5RWZsLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTcwNjRh
NAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViQ29s
b3JDaG9vc2VyUHJveHlFZmwuaApAQCAtMCwwICsxLDYxIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDEyIFNhbXN1bmcgRWxlY3Ryb25pY3MuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaWZuZGVmIFdlYkNvbG9yQ2hvb3NlclByb3h5RWZsX2gKKyNkZWZpbmUgV2ViQ29sb3JDaG9v
c2VyUHJveHlFZmxfaAorCisjaWYgRU5BQkxFKElOUFVUX1RZUEVfQ09MT1IpCisKKyNpbmNsdWRl
ICJDb2xvci5oIgorI2luY2x1ZGUgIldlYkNvbG9yQ2hvb3NlclByb3h5LmgiCisKK3R5cGVkZWYg
c3RydWN0IF9FdmFzX09iamVjdCBFdmFzX09iamVjdDsKKworbmFtZXNwYWNlIFdlYktpdCB7CisK
K2NsYXNzIFdlYlBhZ2VQcm94eTsKKworY2xhc3MgV2ViQ29sb3JDaG9vc2VyUHJveHlFZmwgOiBw
dWJsaWMgV2ViQ29sb3JDaG9vc2VyUHJveHkgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVm
UHRyPFdlYkNvbG9yQ2hvb3NlclByb3h5RWZsPiBjcmVhdGUoRXZhc19PYmplY3QqIHdlYlZpZXcs
IFdlYkNvbG9yQ2hvb3NlclByb3h5OjpDbGllbnQqIGNsaWVudCwgY29uc3QgV2ViQ29yZTo6Q29s
b3ImIGNvbG9yKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJDb2xvckNo
b29zZXJQcm94eUVmbCh3ZWJWaWV3LCBjbGllbnQsIGNvbG9yKSk7CisgICAgfQorICAgIH5XZWJD
b2xvckNob29zZXJQcm94eUVmbCgpOworCisgICAgdm9pZCBlbmRDaG9vc2VyKCk7CisgICAgdm9p
ZCBzZXRTZWxlY3RlZENvbG9yKGNvbnN0IFdlYkNvcmU6OkNvbG9yJik7CisKK3ByaXZhdGU6Cisg
ICAgV2ViQ29sb3JDaG9vc2VyUHJveHlFZmwoRXZhc19PYmplY3QqLCBXZWJDb2xvckNob29zZXJQ
cm94eTo6Q2xpZW50KiwgY29uc3QgV2ViQ29yZTo6Q29sb3ImKTsKKworICAgIEV2YXNfT2JqZWN0
KiBtX3dlYlZpZXc7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVO
QUJMRShJTlBVVF9UWVBFX0NPTE9SKQorCisjZW5kaWYgLy8gV2ViQ29sb3JDaG9vc2VyUHJveHlF
ZmxfaAo=
</data>
<flag name="commit-queue"
          id="170035"
          type_id="3"
          status="-"
          setter="gyuyoung.kim"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>159817</attachid>
            <date>2012-08-21 17:44:06 -0700</date>
            <delta_ts>2012-08-22 02:04:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>diff</filename>
            <type>text/plain</type>
            <size>21780</size>
            <attacher name="KwangYong Choi">ky0.choi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCBmODZjNGY5Li40MjA4ZThkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTYg
QEAKKzIwMTItMDgtMjEgIEt3YW5nWW9uZyBDaG9pICA8a3kwLmNob2lAc2Ftc3VuZy5jb20+CisK
KyAgICAgICAgW0VGTF1bV0syXSBJbXBsZW1lbnRlZCBjb2xvciBjaG9vc2VyIHByb3h5IGFuZCBp
bnB1dCBwaWNrZXIgaW50ZXJmYWNlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD05MTgzMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEltcGxlbWVudGVkIGNvbG9yIGNob29zZXIgcHJveHkgYW5kIGlucHV0IHBp
Y2tlciBpbnRlcmZhY2UgZm9yIEVGTC4KKyAgICAgICAgSW5wdXQgcGlja2VyIGludGVyZmFjZSBj
YW4gYmUgdXNlZCBmb3IgZ2VuZXJhbCB1c2Ugb2YgYWxsIHRoZSBpbnB1dAorICAgICAgICB0eXBl
cyBpbmNsdWRpbmcgY29sb3IgaW5wdXQgdHlwZS4KKworICAgICAgICBUaGUgZXh0ZXJuYWwgYXBw
bGljYXRpb24gc2hvdWxkIGltcGxlbWVudCBpbnB1dCBwaWNrZXIgYnkgb3ZlcnJpZGluZworICAg
ICAgICBzbWFydCBjbGFzcyBmdW5jdGlvbi4KKworICAgICAgICBJbiBhZGRpdGlvbiwgc2V0dGlu
ZyBhcGkgZm9yIGNvbG9yIHBpY2tlciBpcyBpbXBsZW1lbnRlZC4KKworICAgICAgICAqIFBsYXRm
b3JtRWZsLmNtYWtlOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL1BhZ2VDbGllbnRJbXBs
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OmNyZWF0ZUNvbG9yQ2hvb3Nl
clByb3h5KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5jcHA6CisgICAg
ICAgIChfRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKToKKyAgICAgICAgKF9Fd2tfVmlld19Qcml2YXRl
X0RhdGE6Ol9Fd2tfVmlld19Qcml2YXRlX0RhdGEpOgorICAgICAgICAoZXdrX3ZpZXdfaW5wdXRf
cGlja2VyX3Nob3dfcmVxdWVzdCk6CisgICAgICAgIChld2tfdmlld19pbnB1dF9waWNrZXJfaGlk
ZV9yZXF1ZXN0KToKKyAgICAgICAgKGV3a192aWV3X2NvbG9yX3BpY2tlcl9zaG93X3JlcXVlc3Qp
OgorICAgICAgICAoZXdrX3ZpZXdfY29sb3JfcGlja2VyX2hpZGVfcmVxdWVzdCk6CisgICAgICAg
IChld2tfdmlld19jb2xvcl9waWNrZXJfY29sb3Jfc2V0KToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL2VmbC9ld2tfdmlldy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3
X3ByaXZhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy9Vbml0VGVzdFV0
aWxzL0VXSzJVbml0VGVzdEJhc2UuY3BwOgorICAgICAgICAoRVdLMlVuaXRUZXN0OjpFV0syVW5p
dFRlc3RCYXNlOjpFV0syVW5pdFRlc3RCYXNlKToKKyAgICAgICAgKEVXSzJVbml0VGVzdDo6RVdL
MlVuaXRUZXN0QmFzZTo6U2V0VXApOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL3Rlc3Rz
L1VuaXRUZXN0VXRpbHMvRVdLMlVuaXRUZXN0QmFzZS5oOgorICAgICAgICAoRVdLMlVuaXRUZXN0
OjpFV0syVW5pdFRlc3RCYXNlOjpld2tWaWV3Q2xhc3MpOgorICAgICAgICAoRVdLMlVuaXRUZXN0
QmFzZSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvcmVzb3VyY2VzL2lucHV0
LXR5cGUtY29sb3IuaHRtbDogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvdGVz
dHMvdGVzdF9ld2syX3ZpZXcuY3BwOiBBZGRlZCBhIHRlc3QgZm9yIGNvbG9yIHBpY2tlciBhcGku
CisgICAgICAgIChjb2xvclBpY2tlckRvbmVDYWxsYmFjayk6CisgICAgICAgIChjb2xvclBpY2tl
ckNvbG9yU2VsZWN0ZWQpOgorICAgICAgICAoc2hvd0NvbG9yUGlja2VyKToKKyAgICAgICAgKGhp
ZGVDb2xvclBpY2tlcik6CisgICAgICAgIChURVNUX0YpOgorICAgICAgICAqIFVJUHJvY2Vzcy9l
ZmwvV2ViQ29sb3JDaG9vc2VyUHJveHlFZmwuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdCk6
CisgICAgICAgIChXZWJLaXQ6OldlYkNvbG9yQ2hvb3NlclByb3h5RWZsOjpXZWJDb2xvckNob29z
ZXJQcm94eUVmbCk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbG9yQ2hvb3NlclByb3h5RWZsOjp+
V2ViQ29sb3JDaG9vc2VyUHJveHlFZmwpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb2xvckNob29z
ZXJQcm94eUVmbDo6ZW5kQ2hvb3Nlcik6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbG9yQ2hvb3Nl
clByb3h5RWZsOjpzZXRTZWxlY3RlZENvbG9yKToKKyAgICAgICAgKiBVSVByb2Nlc3MvZWZsL1dl
YkNvbG9yQ2hvb3NlclByb3h5RWZsLmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0KToKKyAgICAg
ICAgKFdlYkNvbG9yQ2hvb3NlclByb3h5RWZsKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29sb3JD
aG9vc2VyUHJveHlFZmw6OmNyZWF0ZSk6CisKIDIwMTItMDgtMjEgIEFsZXhleSBQcm9za3VyeWFr
b3YgIDxhcEBhcHBsZS5jb20+CiAKICAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzExMjQxODUwPiBC
bG9jayBhY2Nlc3MgdG8geHBjZCBpbiBXZWJQcm9jZXNzLnNiCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZSBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNt
YWtlCmluZGV4IGQ0YjA4ZjguLjllZjljODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1Bs
YXRmb3JtRWZsLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlCkBA
IC03MSw2ICs3MSw3IEBAIExJU1QoQVBQRU5EIFdlYktpdDJfU09VUkNFUwogICAgIFVJUHJvY2Vz
cy9jYWlyby9CYWNraW5nU3RvcmVDYWlyby5jcHAKIAogICAgIFVJUHJvY2Vzcy9lZmwvVGV4dENo
ZWNrZXJFZmwuY3BwCisgICAgVUlQcm9jZXNzL2VmbC9XZWJDb2xvckNob29zZXJQcm94eUVmbC5j
cHAKICAgICBVSVByb2Nlc3MvZWZsL1dlYkNvbnRleHRFZmwuY3BwCiAgICAgVUlQcm9jZXNzL2Vm
bC9XZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5RWZsLmNwcAogICAgIFVJUHJvY2Vzcy9lZmwvV2Vi
SW5zcGVjdG9yUHJveHlFZmwuY3BwCkBAIC0xMjYsNiArMTI3LDcgQEAgTElTVChBUFBFTkQgV2Vi
S2l0Ml9JTkNMVURFX0RJUkVDVE9SSUVTCiAgICAgIiR7V0VCS0lUMl9ESVJ9L1VJUHJvY2Vzcy9B
UEkvQy9zb3VwIgogICAgICIke1dFQktJVDJfRElSfS9VSVByb2Nlc3MvQVBJL2NwcC9lZmwiCiAg
ICAgIiR7V0VCS0lUMl9ESVJ9L1VJUHJvY2Vzcy9BUEkvZWZsIgorICAgICIke1dFQktJVDJfRElS
fS9VSVByb2Nlc3MvZWZsIgogICAgICIke1dFQktJVDJfRElSfS9VSVByb2Nlc3Mvc291cCIKICAg
ICAiJHtXRUJLSVQyX0RJUn0vV2ViUHJvY2Vzcy9Eb3dubG9hZHMvc291cCIKICAgICAiJHtXRUJL
SVQyX0RJUn0vV2ViUHJvY2Vzcy9lZmwiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2VmbC9QYWdlQ2xpZW50SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2VmbC9QYWdlQ2xpZW50SW1wbC5jcHAKaW5kZXggNzI2Y2FhYS4uMWY1YmYzOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvUGFnZUNsaWVudEltcGwu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL1BhZ2VDbGllbnRJbXBs
LmNwcApAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIkRyYXdpbmdBcmVhUHJveHlJbXBsLmgi
CiAjaW5jbHVkZSAiTmF0aXZlV2ViS2V5Ym9hcmRFdmVudC5oIgogI2luY2x1ZGUgIk5vdEltcGxl
bWVudGVkLmgiCisjaW5jbHVkZSAiV2ViQ29sb3JDaG9vc2VyUHJveHlFZmwuaCIKICNpbmNsdWRl
ICJXZWJDb250ZXh0LmgiCiAjaW5jbHVkZSAiV2ViQ29udGV4dE1lbnVQcm94eS5oIgogI2luY2x1
ZGUgIldlYlBhZ2VHcm91cC5oIgpAQCAtMjE3LDEwICsyMTgsOSBAQCBQYXNzUmVmUHRyPFdlYkNv
bnRleHRNZW51UHJveHk+IFBhZ2VDbGllbnRJbXBsOjpjcmVhdGVDb250ZXh0TWVudVByb3h5KFdl
YlBhZ2VQcgogfQogCiAjaWYgRU5BQkxFKElOUFVUX1RZUEVfQ09MT1IpCi1QYXNzUmVmUHRyPFdl
YkNvbG9yQ2hvb3NlclByb3h5PiBQYWdlQ2xpZW50SW1wbDo6Y3JlYXRlQ29sb3JDaG9vc2VyUHJv
eHkoV2ViUGFnZVByb3h5KiwgY29uc3QgV2ViQ29yZTo6Q29sb3ImKQorUGFzc1JlZlB0cjxXZWJD
b2xvckNob29zZXJQcm94eT4gUGFnZUNsaWVudEltcGw6OmNyZWF0ZUNvbG9yQ2hvb3NlclByb3h5
KFdlYlBhZ2VQcm94eSogcGFnZSwgY29uc3QgV2ViQ29yZTo6Q29sb3ImIGluaXRpYWxDb2xvcikK
IHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiAwOworICAgIHJldHVybiBXZWJD
b2xvckNob29zZXJQcm94eUVmbDo6Y3JlYXRlKG1fdmlld1dpZGdldCwgcGFnZSwgaW5pdGlhbENv
bG9yKTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2VmbC9ld2tfdmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9l
d2tfdmlldy5jcHAKaW5kZXggY2U3ZjdiNC4uZGFkNTdiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmNwcApAQCAtOTMsNiArOTMsMTAgQEAgc3RydWN0
IF9Fd2tfVmlld19Qcml2YXRlX0RhdGEgewogICAgIEV2YXNfR0xfU3VyZmFjZSogZXZhc0dsU3Vy
ZmFjZTsKICNlbmRpZgogCisjaWYgRU5BQkxFKElOUFVUX1RZUEVfQ09MT1IpCisgICAgV2ViQ29s
b3JDaG9vc2VyUHJveHlFZmwqIGNvbG9yQ2hvb3NlcjsKKyNlbmRpZgorCiAgICAgX0V3a19WaWV3
X1ByaXZhdGVfRGF0YSgpCiAgICAgICAgIDogY3Vyc29yT2JqZWN0KDApCiAgICAgICAgICwgYmFj
a0ZvcndhcmRMaXN0KDApCkBAIC0xMDQsNiArMTA4LDkgQEAgc3RydWN0IF9Fd2tfVmlld19Qcml2
YXRlX0RhdGEgewogICAgICAgICAsIGV2YXNHbENvbnRleHQoMCkKICAgICAgICAgLCBldmFzR2xT
dXJmYWNlKDApCiAjZW5kaWYKKyNpZiBFTkFCTEUoSU5QVVRfVFlQRV9DT0xPUikKKyAgICAgICAg
LCBjb2xvckNob29zZXIoMCkKKyNlbmRpZgogICAgIHsgfQogCiAgICAgfl9Fd2tfVmlld19Qcml2
YXRlX0RhdGEoKQpAQCAtMTQ0OCwzICsxNDU1LDYyIEBAIHZvaWQgZXdrX3ZpZXdfY29udGVudHNf
c2l6ZV9jaGFuZ2VkKGNvbnN0IEV2YXNfT2JqZWN0KiBld2tWaWV3LCBjb25zdCBJbnRTaXplJiBz
CiAgICAgcHJpdi0+dmlld3BvcnRIYW5kbGVyLT5kaWRDaGFuZ2VDb250ZW50c1NpemUoc2l6ZSk7
CiAjZW5kaWYKIH0KKwordm9pZCBld2tfdmlld19pbnB1dF9waWNrZXJfc2hvd19yZXF1ZXN0KEV2
YXNfT2JqZWN0KiBld2tWaWV3LCBFd2tfSW5wdXRfVHlwZSBpbnB1dFR5cGUsIGNvbnN0IFN0cmlu
ZyYgaW5wdXRWYWx1ZSkKK3sKKyAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcs
IHNtYXJ0RGF0YSk7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oc21hcnREYXRhLT5h
cGkpOworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKHNtYXJ0RGF0YS0+YXBpLT5pbnB1
dF9waWNrZXJfc2hvdyk7CisKKyAgICBzbWFydERhdGEtPmFwaS0+aW5wdXRfcGlja2VyX3Nob3co
c21hcnREYXRhLCBpbnB1dFR5cGUsIGlucHV0VmFsdWUudXRmOCgpLmRhdGEoKSk7Cit9CisKK3Zv
aWQgZXdrX3ZpZXdfaW5wdXRfcGlja2VyX2hpZGVfcmVxdWVzdChFdmFzX09iamVjdCogZXdrVmll
dywgRXdrX0lucHV0X1R5cGUgaW5wdXRUeXBlKQoreworICAgIEVXS19WSUVXX1NEX0dFVF9PUl9S
RVRVUk4oZXdrVmlldywgc21hcnREYXRhKTsKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVS
TihzbWFydERhdGEtPmFwaSk7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oc21hcnRE
YXRhLT5hcGktPmlucHV0X3BpY2tlcl9oaWRlKTsKKworICAgIHNtYXJ0RGF0YS0+YXBpLT5pbnB1
dF9waWNrZXJfaGlkZShzbWFydERhdGEsIGlucHV0VHlwZSk7Cit9CisKKyNpZiBFTkFCTEUoSU5Q
VVRfVFlQRV9DT0xPUikKK3ZvaWQgZXdrX3ZpZXdfY29sb3JfcGlja2VyX3Nob3dfcmVxdWVzdChF
dmFzX09iamVjdCogZXdrVmlldywgV2ViS2l0OjpXZWJDb2xvckNob29zZXJQcm94eUVmbCogY29s
b3JDaG9vc2VyLCBjb25zdCBTdHJpbmcmIGlucHV0VmFsdWUpCit7CisgICAgRVdLX1ZJRVdfU0Rf
R0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEpOworICAgIEVXS19WSUVXX1BSSVZfR0VU
X09SX1JFVFVSTihzbWFydERhdGEsIHByaXYpOworCisgICAgcHJpdi0+Y29sb3JDaG9vc2VyID0g
Y29sb3JDaG9vc2VyOworCisgICAgZXdrX3ZpZXdfaW5wdXRfcGlja2VyX3Nob3dfcmVxdWVzdChl
d2tWaWV3LCBFV0tfSU5QVVRfVFlQRV9DT0xPUiwgaW5wdXRWYWx1ZSk7Cit9CisKK3ZvaWQgZXdr
X3ZpZXdfY29sb3JfcGlja2VyX2hpZGVfcmVxdWVzdChFdmFzX09iamVjdCogZXdrVmlldykKK3sK
KyAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSk7CisgICAg
RVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgcHJpdik7CisgICAgRUlOQV9T
QUZFVFlfT05fTlVMTF9SRVRVUk4ocHJpdi0+Y29sb3JDaG9vc2VyKTsKKworICAgIHByaXYtPmNv
bG9yQ2hvb3NlciA9IDA7CisKKyAgICBld2tfdmlld19pbnB1dF9waWNrZXJfaGlkZV9yZXF1ZXN0
KGV3a1ZpZXcsIEVXS19JTlBVVF9UWVBFX0NPTE9SKTsKK30KKyNlbmRpZgorCitFaW5hX0Jvb2wg
ZXdrX3ZpZXdfY29sb3JfcGlja2VyX2NvbG9yX3NldChFdmFzX09iamVjdCogZXdrVmlldywgY29u
c3QgY2hhciogY29sb3IpCit7CisjaWYgRU5BQkxFKElOUFVUX1RZUEVfQ09MT1IpCisgICAgRVdL
X1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEsIGZhbHNlKTsKKyAgICBF
V0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBwcml2LCBmYWxzZSk7CisgICAg
RUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHByaXYtPmNvbG9yQ2hvb3NlciwgZmFsc2Up
OworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChjb2xvciwgZmFsc2UpOworCisg
ICAgcHJpdi0+Y29sb3JDaG9vc2VyLT5zZXRTZWxlY3RlZENvbG9yKENvbG9yKGNvbG9yKSk7Cisg
ICAgcHJpdi0+Y29sb3JDaG9vc2VyLT5lbmRDaG9vc2VyKCk7CisgICAgcHJpdi0+Y29sb3JDaG9v
c2VyID0gMDsKKworICAgIHJldHVybiB0cnVlOworI2Vsc2UKKyAgICByZXR1cm4gZmFsc2U7Cisj
ZW5kaWYKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3
a192aWV3LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5oCmlu
ZGV4IGFmYTQ1ODQuLjQyZTIzYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZWZsL2V3a192aWV3LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9l
ZmwvZXdrX3ZpZXcuaApAQCAtODYsNiArODYsMTYgQEAgZXh0ZXJuICJDIiB7CiB0eXBlZGVmIHN0
cnVjdCBfRXdrX1ZpZXdfU21hcnRfRGF0YSBFd2tfVmlld19TbWFydF9EYXRhOwogdHlwZWRlZiBz
dHJ1Y3QgX0V3a19WaWV3X1NtYXJ0X0NsYXNzIEV3a19WaWV3X1NtYXJ0X0NsYXNzOwogCisvKioK
KyAqIFxlbnVtICAgIEV3a19JbnB1dF9UeXBlCisgKiBAYnJpZWYgICBQcm92aWRlcyB0eXBlIG9m
IGlucHV0IGVsZW1lbnQKKyAqLworZW51bSBfRXdrX0lucHV0X1R5cGUgeworICAgIEVXS19JTlBV
VF9UWVBFX0NPTE9SCit9OworLyoqIENyZWF0ZXMgYSB0eXBlIG5hbWUgZm9yIF9Fd2tfSW5wdXRf
VHlwZV9Fd2tfSW5wdXRfVHlwZSAqLwordHlwZWRlZiBlbnVtIF9Fd2tfSW5wdXRfVHlwZSBFd2tf
SW5wdXRfVHlwZTsKKwogLy8vIEV3ayB2aWV3J3MgY2xhc3MsIHRvIGJlIG92ZXJyaWRkZW4gYnkg
c3ViLWNsYXNzZXMuCiBzdHJ1Y3QgX0V3a19WaWV3X1NtYXJ0X0NsYXNzIHsKICAgICBFdmFzX1Nt
YXJ0X0NsYXNzIHNjOyAvKio8IGFsbCBidXQgJ2RhdGEnIGlzIGZyZWUgdG8gYmUgY2hhbmdlZC4g
Ki8KQEAgLTEwMiwxMyArMTEyLDE3IEBAIHN0cnVjdCBfRXdrX1ZpZXdfU21hcnRfQ2xhc3Mgewog
ICAgIEVpbmFfQm9vbCAoKm1vdXNlX21vdmUpKEV3a19WaWV3X1NtYXJ0X0RhdGEgKnNkLCBjb25z
dCBFdmFzX0V2ZW50X01vdXNlX01vdmUgKmV2KTsKICAgICBFaW5hX0Jvb2wgKCprZXlfZG93biko
RXdrX1ZpZXdfU21hcnRfRGF0YSAqc2QsIGNvbnN0IEV2YXNfRXZlbnRfS2V5X0Rvd24gKmV2KTsK
ICAgICBFaW5hX0Jvb2wgKCprZXlfdXApKEV3a19WaWV3X1NtYXJ0X0RhdGEgKnNkLCBjb25zdCBF
dmFzX0V2ZW50X0tleV9VcCAqZXYpOworCisgICAgLy8gSW5wdXQgUGlja2VyIEFQSQorICAgIEVp
bmFfQm9vbCAoKmlucHV0X3BpY2tlcl9zaG93KShFd2tfVmlld19TbWFydF9EYXRhICpzZCwgRXdr
X0lucHV0X1R5cGUgaW5wdXRfdHlwZSwgY29uc3QgY2hhciAqaW5wdXRfdmFsdWUpOworICAgIEVp
bmFfQm9vbCAoKmlucHV0X3BpY2tlcl9oaWRlKShFd2tfVmlld19TbWFydF9EYXRhICpzZCwgRXdr
X0lucHV0X1R5cGUgaW5wdXRfdHlwZSk7CiB9OwogCiAvKioKICAqIFRoZSB2ZXJzaW9uIHlvdSBo
YXZlIHRvIHB1dCBpbnRvIHRoZSB2ZXJzaW9uIGZpZWxkCiAgKiBpbiB0aGUgQGEgRXdrX1ZpZXdf
U21hcnRfQ2xhc3Mgc3RydWN0dXJlLgogICovCi0jZGVmaW5lIEVXS19WSUVXX1NNQVJUX0NMQVNT
X1ZFUlNJT04gMVVMCisjZGVmaW5lIEVXS19WSUVXX1NNQVJUX0NMQVNTX1ZFUlNJT04gMlVMCiAK
IC8qKgogICogSW5pdGlhbGl6ZXIgZm9yIHdob2xlIEV3a19WaWV3X1NtYXJ0X0NsYXNzIHN0cnVj
dHVyZS4KQEAgLTEyMCw3ICsxMzQsNyBAQCBzdHJ1Y3QgX0V3a19WaWV3X1NtYXJ0X0NsYXNzIHsK
ICAqIEBzZWUgRVdLX1ZJRVdfU01BUlRfQ0xBU1NfSU5JVF9WRVJTSU9OCiAgKiBAc2VlIEVXS19W
SUVXX1NNQVJUX0NMQVNTX0lOSVRfTkFNRV9WRVJTSU9OCiAgKi8KLSNkZWZpbmUgRVdLX1ZJRVdf
U01BUlRfQ0xBU1NfSU5JVChzbWFydF9jbGFzc19pbml0KSB7c21hcnRfY2xhc3NfaW5pdCwgRVdL
X1ZJRVdfU01BUlRfQ0xBU1NfVkVSU0lPTiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMH0KKyNkZWZp
bmUgRVdLX1ZJRVdfU01BUlRfQ0xBU1NfSU5JVChzbWFydF9jbGFzc19pbml0KSB7c21hcnRfY2xh
c3NfaW5pdCwgRVdLX1ZJRVdfU01BUlRfQ0xBU1NfVkVSU0lPTiwgMCwgMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMH0KIAogLyoqCiAgKiBJbml0aWFsaXplciB0byB6ZXJvIGEgd2hvbGUgRXdrX1Zp
ZXdfU21hcnRfQ2xhc3Mgc3RydWN0dXJlLgpAQCAtNTkwLDYgKzYwNCwxNiBAQCBFQVBJIEVpbmFf
Qm9vbCBld2tfdmlld190ZXh0X2ZpbmQoRXZhc19PYmplY3QgKm8sIGNvbnN0IGNoYXIgKnRleHQs
IEV3a19GaW5kX09wdAogKi8KIEVBUEkgRWluYV9Cb29sIGV3a192aWV3X3RleHRfZmluZF9oaWdo
bGlnaHRfY2xlYXIoRXZhc19PYmplY3QgKm8pOwogCisvKioKKyAqIFNldHMgdGhlIGNvbG9yIHZh
bHVlIG9mIGNvbG9yIGNob29zZXIKKyAqCisgKiBAcGFyYW0gbyB2aWV3IG9iamVjdCBjb250YWlu
cyBjb2xvciBjaG9vc2VyCisgKiBAcGFyYW0gY29sb3IgI1JHQiwgI1JSR0dCQiBvciBuYW1lZCBj
b2xvciBzdHJpbmcgdG8gYmUgc2V0CisgKgorICogQHJldHVybiBAYyBFSU5BX1RSVUUgb24gc3Vj
Y2VzcyBAYyBFSU5BX0ZBTFNFIG90aGVyd2lzZQorICovCitFQVBJIEVpbmFfQm9vbCBld2tfdmll
d19jb2xvcl9waWNrZXJfY29sb3Jfc2V0KEV2YXNfT2JqZWN0ICpvLCBjb25zdCBjaGFyICpjb2xv
cik7CisKICNpZmRlZiBfX2NwbHVzcGx1cwogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlld19wcml2YXRlLmggYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlld19wcml2YXRlLmgKaW5kZXggZjQwMjk4NS4u
NmY5NTQ4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdr
X3ZpZXdfcHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3
a192aWV3X3ByaXZhdGUuaApAQCAtMjIsOSArMjIsMTQgQEAKICNkZWZpbmUgZXdrX3ZpZXdfcHJp
dmF0ZV9oCiAKICNpbmNsdWRlICJXZWJQYWdlUHJveHkuaCIKKyNpbmNsdWRlICJld2tfdmlldy5o
IgogI2luY2x1ZGUgPEV2YXMuaD4KICNpbmNsdWRlIDxXZWJLaXQyL1dLQmFzZS5oPgogCisjaWYg
RU5BQkxFKElOUFVUX1RZUEVfQ09MT1IpCisjaW5jbHVkZSAiV2ViQ29sb3JDaG9vc2VyUHJveHlF
ZmwuaCIKKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBDdXJzb3I7CiBjbGFz
cyBJbnRSZWN0OwpAQCAtODksNCArOTQsMTIgQEAgYm9vbCBld2tfdmlld19hY2NlbGVyYXRlZF9j
b21wb3NpdGluZ19tb2RlX2VudGVyKGNvbnN0IEV2YXNfT2JqZWN0KiBld2tWaWV3KTsKIGJvb2wg
ZXdrX3ZpZXdfYWNjZWxlcmF0ZWRfY29tcG9zaXRpbmdfbW9kZV9leGl0KGNvbnN0IEV2YXNfT2Jq
ZWN0KiBld2tWaWV3KTsKICNlbmRpZgogCit2b2lkIGV3a192aWV3X2lucHV0X3BpY2tlcl9zaG93
X3JlcXVlc3QoRXZhc19PYmplY3QqIGV3a1ZpZXcsIEV3a19JbnB1dF9UeXBlIGlucHV0VHlwZSwg
Y29uc3QgU3RyaW5nJiBpbnB1dFZhbHVlKTsKK3ZvaWQgZXdrX3ZpZXdfaW5wdXRfcGlja2VyX2hp
ZGVfcmVxdWVzdChFdmFzX09iamVjdCogZXdrVmlldywgRXdrX0lucHV0X1R5cGUgaW5wdXRUeXBl
KTsKKworI2lmIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9SKQordm9pZCBld2tfdmlld19jb2xvcl9w
aWNrZXJfc2hvd19yZXF1ZXN0KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBXZWJLaXQ6OldlYkNvbG9y
Q2hvb3NlclByb3h5RWZsKiBjb2xvckNob29zZXIsIGNvbnN0IFN0cmluZyYgaW5wdXRWYWx1ZSk7
Cit2b2lkIGV3a192aWV3X2NvbG9yX3BpY2tlcl9oaWRlX3JlcXVlc3QoRXZhc19PYmplY3QqIGV3
a1ZpZXcpOworI2VuZGlmCisKICNlbmRpZiAvLyBld2tfdmlld19wcml2YXRlX2gKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL1VuaXRUZXN0VXRpbHMv
RVdLMlVuaXRUZXN0QmFzZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC90
ZXN0cy9Vbml0VGVzdFV0aWxzL0VXSzJVbml0VGVzdEJhc2UuY3BwCmluZGV4IDM5YmM1YTQuLmM3
ZmRhYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL3Rlc3Rz
L1VuaXRUZXN0VXRpbHMvRVdLMlVuaXRUZXN0QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvVW5pdFRlc3RVdGlscy9FV0syVW5pdFRlc3RCYXNlLmNw
cApAQCAtMjEsNyArMjEsNiBAQAogI2luY2x1ZGUgIkVXSzJVbml0VGVzdEJhc2UuaCIKIAogI2lu
Y2x1ZGUgIkVXSzJVbml0VGVzdEVudmlyb25tZW50LmgiCi0jaW5jbHVkZSA8RVdlYktpdDIuaD4K
ICNpbmNsdWRlIDxFY29yZS5oPgogI2luY2x1ZGUgPGdsaWItb2JqZWN0Lmg+CiAjaW5jbHVkZSA8
d3RmL1VudXNlZFBhcmFtLmg+CkBAIC00Miw3ICs0MSw5IEBAIHN0YXRpYyB2b2lkIG9uTG9hZEZp
bmlzaGVkKHZvaWQqIHVzZXJEYXRhLCBFdmFzX09iamVjdCogd2ViVmlldywgdm9pZCogZXZlbnRJ
bmZvCiBFV0syVW5pdFRlc3RCYXNlOjpFV0syVW5pdFRlc3RCYXNlKCkKICAgICA6IG1fZWNvcmVF
dmFzKDApCiAgICAgLCBtX3dlYlZpZXcoMCkKKyAgICAsIG1fZXdrVmlld0NsYXNzKEVXS19WSUVX
X1NNQVJUX0NMQVNTX0lOSVRfTkFNRV9WRVJTSU9OKCJCcm93c2VyX1ZpZXciKSkKIHsKKyAgICBl
d2tfdmlld19zbWFydF9jbGFzc19zZXQoJm1fZXdrVmlld0NsYXNzKTsKIH0KIAogdm9pZCBFV0sy
VW5pdFRlc3RCYXNlOjpTZXRVcCgpCkBAIC02MCw3ICs2MSw4IEBAIHZvaWQgRVdLMlVuaXRUZXN0
QmFzZTo6U2V0VXAoKQogICAgIGVjb3JlX2V2YXNfc2hvdyhtX2Vjb3JlRXZhcyk7CiAgICAgRXZh
cyogZXZhcyA9IGVjb3JlX2V2YXNfZ2V0KG1fZWNvcmVFdmFzKTsKIAotICAgIG1fd2ViVmlldyA9
IGV3a192aWV3X2FkZChldmFzKTsKKyAgICBFdmFzX1NtYXJ0KiBzbWFydCA9IGV2YXNfc21hcnRf
Y2xhc3NfbmV3KCZtX2V3a1ZpZXdDbGFzcy5zYyk7CisgICAgbV93ZWJWaWV3ID0gZXdrX3ZpZXdf
c21hcnRfYWRkKGV2YXMsIHNtYXJ0LCBld2tfY29udGV4dF9kZWZhdWx0X2dldCgpKTsKICAgICBl
d2tfdmlld190aGVtZV9zZXQobV93ZWJWaWV3LCBlbnZpcm9ubWVudC0+ZGVmYXVsdFRoZW1lKCkp
OwogCiAgICAgZXZhc19vYmplY3RfcmVzaXplKG1fd2ViVmlldywgd2lkdGgsIGhlaWdodCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy9Vbml0VGVz
dFV0aWxzL0VXSzJVbml0VGVzdEJhc2UuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
ZWZsL3Rlc3RzL1VuaXRUZXN0VXRpbHMvRVdLMlVuaXRUZXN0QmFzZS5oCmluZGV4IDI5ZDU1YmUu
LjM2OGU4MWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL3Rl
c3RzL1VuaXRUZXN0VXRpbHMvRVdLMlVuaXRUZXN0QmFzZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL1VuaXRUZXN0VXRpbHMvRVdLMlVuaXRUZXN0QmFzZS5o
CkBAIC0yMCw2ICsyMCw3IEBACiAjaWZuZGVmIEVXSzJVbml0VGVzdEJhc2VfaAogI2RlZmluZSBF
V0syVW5pdFRlc3RCYXNlX2gKIAorI2luY2x1ZGUgPEVXZWJLaXQyLmg+CiAjaW5jbHVkZSA8RWNv
cmVfRXZhcy5oPgogI2luY2x1ZGUgPEV2YXMuaD4KICNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgpA
QCAtMjksNiArMzAsNyBAQCBuYW1lc3BhY2UgRVdLMlVuaXRUZXN0IHsKIGNsYXNzIEVXSzJVbml0
VGVzdEJhc2UgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0IHsKIHB1YmxpYzoKICAgICBFdmFzX09i
amVjdCogd2ViVmlldygpIHsgcmV0dXJuIG1fd2ViVmlldzsgfQorICAgIEV3a19WaWV3X1NtYXJ0
X0NsYXNzKiBld2tWaWV3Q2xhc3MoKSB7IHJldHVybiAmbV9ld2tWaWV3Q2xhc3M7IH0KIAogcHJv
dGVjdGVkOgogICAgIEVXSzJVbml0VGVzdEJhc2UoKTsKQEAgLTQzLDYgKzQ1LDggQEAgcHJvdGVj
dGVkOgogcHJpdmF0ZToKICAgICBFdmFzX09iamVjdCogbV93ZWJWaWV3OwogICAgIEVjb3JlX0V2
YXMqIG1fZWNvcmVFdmFzOworCisgICAgRXdrX1ZpZXdfU21hcnRfQ2xhc3MgbV9ld2tWaWV3Q2xh
c3M7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBFV0syVW5pdFRlc3QKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL3Jlc291cmNlcy9pbnB1dC10eXBlLWNv
bG9yLmh0bWwgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy9yZXNvdXJj
ZXMvaW5wdXQtdHlwZS1jb2xvci5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAuLjVjZTVjZTcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2VmbC90ZXN0cy9yZXNvdXJjZXMvaW5wdXQtdHlwZS1jb2xvci5odG1sCkBAIC0wLDAgKzEs
NiBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxib2R5PgorPGlucHV0IHR5cGU9ImNvbG9y
IiB2YWx1ZT0iI2ZmMDAwMCI+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy90ZXN0X2V3azJfdmlldy5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy90ZXN0X2V3azJfdmlldy5jcHAKaW5k
ZXggNWVkYjA0My4uMWYyYWRjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9lZmwvdGVzdHMvdGVzdF9ld2syX3ZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL3Rlc3RfZXdrMl92aWV3LmNwcApAQCAtMTg4LDMgKzE4OCw3
NyBAQCBURVNUX0YoRVdLMlVuaXRUZXN0QmFzZSwgZXdrX3ZpZXdfZm9ybV9zdWJtaXNzaW9uX3Jl
cXVlc3QpCiAgICAgQVNTRVJUX1RSVUUoaGFuZGxlZCk7CiAgICAgZXZhc19vYmplY3Rfc21hcnRf
Y2FsbGJhY2tfZGVsKHdlYlZpZXcoKSwgImZvcm0sc3VibWlzc2lvbixyZXF1ZXN0Iiwgb25Gb3Jt
QWJvdXRUb0JlU3VibWl0dGVkKTsKIH0KKworI2lmIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9SKQor
c3RhdGljIGNvbnN0IGNoYXIgaW5pdGlhbENvbG9yW10gPSAiI2ZmMDAwMCI7CitzdGF0aWMgY29u
c3QgY2hhciBjaGFuZ2VkQ29sb3JbXSA9ICIjMDAwMGZmIjsKKworc3RhdGljIHZvaWQgY29sb3JQ
aWNrZXJEb25lQ2FsbGJhY2sodm9pZCogdXNlckRhdGEsIEV2YXNfT2JqZWN0Kiwgdm9pZCopCit7
CisgICAgYm9vbCogaGFuZGxlZCA9IHN0YXRpY19jYXN0PGJvb2wqPih1c2VyRGF0YSk7CisKKyAg
ICAqaGFuZGxlZCA9IHRydWU7Cit9CisKK3N0YXRpYyB1bnNpZ25lZCBjaGFyIGNvbG9yUGlja2Vy
Q29sb3JTZWxlY3RlZCh2b2lkKiBkYXRhKQoreworICAgIEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNt
YXJ0RGF0YSA9IHN0YXRpY19jYXN0PEV3a19WaWV3X1NtYXJ0X0RhdGEqPihkYXRhKTsKKworICAg
IC8vIDQuIENoYW5nZSBjb2xvciB0byBjaGFuZ2VkQ29sb3IuCisgICAgRVhQRUNUX1RSVUUoZXdr
X3ZpZXdfY29sb3JfcGlja2VyX2NvbG9yX3NldChzbWFydERhdGEtPnNlbGYsIGNoYW5nZWRDb2xv
cikpOworCisgICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfY2FsbChzbWFydERhdGEtPnNl
bGYsICJpbnB1dCx0eXBlLGNvbG9yLHJlcXVlc3QiLCAwKTsKKworICAgIHJldHVybiAwOworfQor
CitzdGF0aWMgRWluYV9Cb29sIHNob3dDb2xvclBpY2tlcihFd2tfVmlld19TbWFydF9EYXRhKiBz
bWFydERhdGEsIEV3a19JbnB1dF9UeXBlIGlucHV0VHlwZSwgY29uc3QgY2hhciogaW5wdXRWYWx1
ZSkKK3sKKyAgICBzdGF0aWMgYm9vbCBpc0ZpcnN0UnVuID0gdHJ1ZTsKKworICAgIGlmIChpc0Zp
cnN0UnVuKSB7CisgICAgICAgIC8vIDEuIENoZWNrIHR5cGUgb2YgaW5wdXQuCisgICAgICAgIEVY
UEVDVF9FUShpbnB1dFR5cGUsIEVXS19JTlBVVF9UWVBFX0NPTE9SKTsKKyAgICAgICAgLy8gMi4g
Q2hlY2sgaW5pdGlhbCB2YWx1ZSBmcm9tIGh0bWwgZmlsZS4KKyAgICAgICAgRVhQRUNUX1NUUkVR
KGlucHV0VmFsdWUsIGluaXRpYWxDb2xvcik7CisKKyAgICAgICAgaXNGaXJzdFJ1biA9IGZhbHNl
OworICAgIH0gZWxzZQorICAgICAgICAvLyA1LiBpbnB1dFZhbHVlIHNob3VsZCBiZSBjaGFuZ2Vk
Q29sb3IuCisgICAgICAgIEVYUEVDVF9TVFJFUShpbnB1dFZhbHVlLCBjaGFuZ2VkQ29sb3IpOwor
CisgICAgLy8gMy4gUmV0dXJuIGFmdGVyIG1ha2luZyBhIGNvbG9yIHBpY2tlci4KKyAgICBlY29y
ZV90aW1lcl9hZGQoMC4wLCBjb2xvclBpY2tlckNvbG9yU2VsZWN0ZWQsIHNtYXJ0RGF0YSk7Cisg
ICAgcmV0dXJuIHRydWU7Cit9CisKK3N0YXRpYyBFaW5hX0Jvb2wgaGlkZUNvbG9yUGlja2VyKEV3
a19WaWV3X1NtYXJ0X0RhdGEqLCBFd2tfSW5wdXRfVHlwZSBpbnB1dFR5cGUpCit7CisgICAgRVhQ
RUNUX0VRKGlucHV0VHlwZSwgRVdLX0lOUFVUX1RZUEVfQ09MT1IpOworfQorCitURVNUX0YoRVdL
MlVuaXRUZXN0QmFzZSwgZXdrX3ZpZXdfY29sb3JfcGlja2VyX2NvbG9yX3NldCkKK3sKKyAgICBF
d2tfVmlld19TbWFydF9DbGFzcyogYXBpID0gZXdrVmlld0NsYXNzKCk7CisgICAgYXBpLT5pbnB1
dF9waWNrZXJfc2hvdyA9IHNob3dDb2xvclBpY2tlcjsKKyAgICBhcGktPmlucHV0X3BpY2tlcl9o
aWRlID0gaGlkZUNvbG9yUGlja2VyOworCisgICAgbG9hZFVybFN5bmMoZW52aXJvbm1lbnQtPnVy
bEZvclJlc291cmNlKCJpbnB1dC10eXBlLWNvbG9yLmh0bWwiKS5kYXRhKCkpOworCisgICAgLy8g
Q2xpY2sgaW5wdXQgZWxlbWVudC4KKyAgICBtb3VzZUNsaWNrKDMwLCAyMCk7CisKKyAgICBib29s
IGhhbmRsZWQgPSBmYWxzZTsKKyAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19hZGQod2Vi
VmlldygpLCAiaW5wdXQsdHlwZSxjb2xvcixyZXF1ZXN0IiwgY29sb3JQaWNrZXJEb25lQ2FsbGJh
Y2ssICZoYW5kbGVkKTsKKyAgICB3aGlsZSAoIWhhbmRsZWQpCisgICAgICAgIGVjb3JlX21haW5f
bG9vcF9pdGVyYXRlKCk7CisKKyAgICAvLyBDbGljayBpbnB1dCBlbGVtZW50IGFnYWluLgorICAg
IG1vdXNlQ2xpY2soMzAsIDIwKTsKKworICAgIGhhbmRsZWQgPSBmYWxzZTsKKyAgICB3aGlsZSAo
IWhhbmRsZWQpCisgICAgICAgIGVjb3JlX21haW5fbG9vcF9pdGVyYXRlKCk7CisgICAgZXZhc19v
YmplY3Rfc21hcnRfY2FsbGJhY2tfZGVsKHdlYlZpZXcoKSwgImlucHV0LHR5cGUsY29sb3IscmVx
dWVzdCIsIGNvbG9yUGlja2VyRG9uZUNhbGxiYWNrKTsKK30KKyNlbmRpZiAvLyBFTkFCTEUoSU5Q
VVRfVFlQRV9DT0xPUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwv
V2ViQ29sb3JDaG9vc2VyUHJveHlFZmwuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2Vm
bC9XZWJDb2xvckNob29zZXJQcm94eUVmbC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMC4uOTA0MDVmYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9lZmwvV2ViQ29sb3JDaG9vc2VyUHJveHlFZmwuY3BwCkBAIC0wLDAgKzEsNjUgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgU2Ftc3VuZyBFbGVjdHJvbmljcy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJDb2xv
ckNob29zZXJQcm94eUVmbC5oIgorCisjaWYgRU5BQkxFKElOUFVUX1RZUEVfQ09MT1IpCisKKyNp
bmNsdWRlICJld2tfdmlld19wcml2YXRlLmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitXZWJD
b2xvckNob29zZXJQcm94eUVmbDo6V2ViQ29sb3JDaG9vc2VyUHJveHlFZmwoRXZhc19PYmplY3Qq
IHdlYlZpZXcsIFdlYkNvbG9yQ2hvb3NlclByb3h5OjpDbGllbnQqIGNsaWVudCwgY29uc3QgV2Vi
Q29yZTo6Q29sb3ImIGNvbG9yKQorICAgIDogV2ViQ29sb3JDaG9vc2VyUHJveHkoY2xpZW50KQor
ICAgICwgbV93ZWJWaWV3KHdlYlZpZXcpCit7CisgICAgZXdrX3ZpZXdfY29sb3JfcGlja2VyX3No
b3dfcmVxdWVzdChtX3dlYlZpZXcsIHRoaXMsIGNvbG9yLnNlcmlhbGl6ZWQoKSk7Cit9CisKK1dl
YkNvbG9yQ2hvb3NlclByb3h5RWZsOjp+V2ViQ29sb3JDaG9vc2VyUHJveHlFZmwoKQoreworICAg
IGV3a192aWV3X2NvbG9yX3BpY2tlcl9oaWRlX3JlcXVlc3QobV93ZWJWaWV3KTsKK30KKwordm9p
ZCBXZWJDb2xvckNob29zZXJQcm94eUVmbDo6ZW5kQ2hvb3NlcigpCit7CisgICAgaWYgKCFtX2Ns
aWVudCkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9jbGllbnQtPmRpZEVuZENvbG9yQ2hvb3Nl
cigpOworfQorCit2b2lkIFdlYkNvbG9yQ2hvb3NlclByb3h5RWZsOjpzZXRTZWxlY3RlZENvbG9y
KGNvbnN0IFdlYkNvcmU6OkNvbG9yJiBjb2xvcikKK3sKKyAgICBpZiAoIW1fY2xpZW50KQorICAg
ICAgICByZXR1cm47CisKKyAgICBtX2NsaWVudC0+ZGlkQ2hvb3NlQ29sb3IoY29sb3IpOworfQor
Cit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShJTlBVVF9UWVBFX0NP
TE9SKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJDb2xvckNo
b29zZXJQcm94eUVmbC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJDb2xvckNo
b29zZXJQcm94eUVmbC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU3MDY0
YTQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYkNv
bG9yQ2hvb3NlclByb3h5RWZsLmgKQEAgLTAsMCArMSw2MSBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2lmbmRlZiBXZWJDb2xvckNob29zZXJQcm94eUVmbF9oCisjZGVmaW5lIFdlYkNvbG9yQ2hv
b3NlclByb3h5RWZsX2gKKworI2lmIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9SKQorCisjaW5jbHVk
ZSAiQ29sb3IuaCIKKyNpbmNsdWRlICJXZWJDb2xvckNob29zZXJQcm94eS5oIgorCit0eXBlZGVm
IHN0cnVjdCBfRXZhc19PYmplY3QgRXZhc19PYmplY3Q7CisKK25hbWVzcGFjZSBXZWJLaXQgewor
CitjbGFzcyBXZWJQYWdlUHJveHk7CisKK2NsYXNzIFdlYkNvbG9yQ2hvb3NlclByb3h5RWZsIDog
cHVibGljIFdlYkNvbG9yQ2hvb3NlclByb3h5IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxXZWJDb2xvckNob29zZXJQcm94eUVmbD4gY3JlYXRlKEV2YXNfT2JqZWN0KiB3ZWJWaWV3
LCBXZWJDb2xvckNob29zZXJQcm94eTo6Q2xpZW50KiBjbGllbnQsIGNvbnN0IFdlYkNvcmU6OkNv
bG9yJiBjb2xvcikKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2ViQ29sb3JD
aG9vc2VyUHJveHlFZmwod2ViVmlldywgY2xpZW50LCBjb2xvcikpOworICAgIH0KKyAgICB+V2Vi
Q29sb3JDaG9vc2VyUHJveHlFZmwoKTsKKworICAgIHZvaWQgZW5kQ2hvb3NlcigpOworICAgIHZv
aWQgc2V0U2VsZWN0ZWRDb2xvcihjb25zdCBXZWJDb3JlOjpDb2xvciYpOworCitwcml2YXRlOgor
ICAgIFdlYkNvbG9yQ2hvb3NlclByb3h5RWZsKEV2YXNfT2JqZWN0KiwgV2ViQ29sb3JDaG9vc2Vy
UHJveHk6OkNsaWVudCosIGNvbnN0IFdlYkNvcmU6OkNvbG9yJik7CisKKyAgICBFdmFzX09iamVj
dCogbV93ZWJWaWV3OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBF
TkFCTEUoSU5QVVRfVFlQRV9DT0xPUikKKworI2VuZGlmIC8vIFdlYkNvbG9yQ2hvb3NlclByb3h5
RWZsX2gK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>159883</attachid>
            <date>2012-08-22 02:04:08 -0700</date>
            <delta_ts>2012-08-22 03:00:52 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>diff</filename>
            <type>text/plain</type>
            <size>21302</size>
            <attacher name="KwangYong Choi">ky0.choi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCBmODZjNGY5Li5lMDQwNzFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTUg
QEAKKzIwMTItMDgtMjEgIEt3YW5nWW9uZyBDaG9pICA8a3kwLmNob2lAc2Ftc3VuZy5jb20+CisK
KyAgICAgICAgW0VGTF1bV0syXSBJbXBsZW1lbnRlZCBjb2xvciBjaG9vc2VyIHByb3h5IGFuZCBp
bnB1dCBwaWNrZXIgaW50ZXJmYWNlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD05MTgzMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEltcGxlbWVudGVkIGNvbG9yIGNob29zZXIgcHJveHkgYW5kIGlucHV0IHBp
Y2tlciBpbnRlcmZhY2UgZm9yIEVGTC4KKyAgICAgICAgSW5wdXQgcGlja2VyIGludGVyZmFjZSBj
YW4gYmUgdXNlZCBmb3IgZ2VuZXJhbCB1c2Ugb2YgYWxsIHRoZSBpbnB1dAorICAgICAgICB0eXBl
cyBpbmNsdWRpbmcgY29sb3IgaW5wdXQgdHlwZS4KKworICAgICAgICBUaGUgZXh0ZXJuYWwgYXBw
bGljYXRpb24gc2hvdWxkIGltcGxlbWVudCBpbnB1dCBwaWNrZXIgYnkgb3ZlcnJpZGluZworICAg
ICAgICBzbWFydCBjbGFzcyBmdW5jdGlvbi4KKworICAgICAgICBJbiBhZGRpdGlvbiwgc2V0dGlu
ZyBhcGkgZm9yIGNvbG9yIHBpY2tlciBpcyBpbXBsZW1lbnRlZC4KKworICAgICAgICAqIFBsYXRm
b3JtRWZsLmNtYWtlOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL1BhZ2VDbGllbnRJbXBs
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OmNyZWF0ZUNvbG9yQ2hvb3Nl
clByb3h5KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5jcHA6CisgICAg
ICAgIChfRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKToKKyAgICAgICAgKF9Fd2tfVmlld19Qcml2YXRl
X0RhdGE6Ol9Fd2tfVmlld19Qcml2YXRlX0RhdGEpOgorICAgICAgICAoZXdrX3ZpZXdfaW5wdXRf
cGlja2VyX3Nob3dfcmVxdWVzdCk6CisgICAgICAgIChld2tfdmlld19pbnB1dF9waWNrZXJfaGlk
ZV9yZXF1ZXN0KToKKyAgICAgICAgKGV3a192aWV3X2NvbG9yX3BpY2tlcl9zaG93X3JlcXVlc3Qp
OgorICAgICAgICAoZXdrX3ZpZXdfY29sb3JfcGlja2VyX2hpZGVfcmVxdWVzdCk6CisgICAgICAg
IChld2tfdmlld19jb2xvcl9waWNrZXJfY29sb3Jfc2V0KToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL2VmbC9ld2tfdmlldy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3
X3ByaXZhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy9Vbml0VGVzdFV0
aWxzL0VXSzJVbml0VGVzdEJhc2UuY3BwOgorICAgICAgICAoRVdLMlVuaXRUZXN0OjpFV0syVW5p
dFRlc3RCYXNlOjpFV0syVW5pdFRlc3RCYXNlKToKKyAgICAgICAgKEVXSzJVbml0VGVzdDo6RVdL
MlVuaXRUZXN0QmFzZTo6U2V0VXApOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL3Rlc3Rz
L1VuaXRUZXN0VXRpbHMvRVdLMlVuaXRUZXN0QmFzZS5oOgorICAgICAgICAoRVdLMlVuaXRUZXN0
OjpFV0syVW5pdFRlc3RCYXNlOjpld2tWaWV3Q2xhc3MpOgorICAgICAgICAoRVdLMlVuaXRUZXN0
QmFzZSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvdGVzdF9ld2syX3ZpZXcu
Y3BwOiBBZGRlZCBhIHRlc3QgZm9yIGNvbG9yIHBpY2tlciBhcGkuCisgICAgICAgIChjb2xvclBp
Y2tlckRvbmVDYWxsYmFjayk6CisgICAgICAgIChjb2xvclBpY2tlckNvbG9yU2VsZWN0ZWQpOgor
ICAgICAgICAoc2hvd0NvbG9yUGlja2VyKToKKyAgICAgICAgKGhpZGVDb2xvclBpY2tlcik6Cisg
ICAgICAgIChURVNUX0YpOgorICAgICAgICAqIFVJUHJvY2Vzcy9lZmwvV2ViQ29sb3JDaG9vc2Vy
UHJveHlFZmwuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6
OldlYkNvbG9yQ2hvb3NlclByb3h5RWZsOjpXZWJDb2xvckNob29zZXJQcm94eUVmbCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYkNvbG9yQ2hvb3NlclByb3h5RWZsOjp+V2ViQ29sb3JDaG9vc2VyUHJv
eHlFZmwpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb2xvckNob29zZXJQcm94eUVmbDo6ZW5kQ2hv
b3Nlcik6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbG9yQ2hvb3NlclByb3h5RWZsOjpzZXRTZWxl
Y3RlZENvbG9yKToKKyAgICAgICAgKiBVSVByb2Nlc3MvZWZsL1dlYkNvbG9yQ2hvb3NlclByb3h5
RWZsLmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYkNvbG9yQ2hvb3Nl
clByb3h5RWZsKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29sb3JDaG9vc2VyUHJveHlFZmw6OmNy
ZWF0ZSk6CisKIDIwMTItMDgtMjEgIEFsZXhleSBQcm9za3VyeWFrb3YgIDxhcEBhcHBsZS5jb20+
CiAKICAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzExMjQxODUwPiBCbG9jayBhY2Nlc3MgdG8geHBj
ZCBpbiBXZWJQcm9jZXNzLnNiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVm
bC5jbWFrZSBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlCmluZGV4IGQ0YjA4Zjgu
LjllZjljODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlCkBAIC03MSw2ICs3MSw3IEBAIExJ
U1QoQVBQRU5EIFdlYktpdDJfU09VUkNFUwogICAgIFVJUHJvY2Vzcy9jYWlyby9CYWNraW5nU3Rv
cmVDYWlyby5jcHAKIAogICAgIFVJUHJvY2Vzcy9lZmwvVGV4dENoZWNrZXJFZmwuY3BwCisgICAg
VUlQcm9jZXNzL2VmbC9XZWJDb2xvckNob29zZXJQcm94eUVmbC5jcHAKICAgICBVSVByb2Nlc3Mv
ZWZsL1dlYkNvbnRleHRFZmwuY3BwCiAgICAgVUlQcm9jZXNzL2VmbC9XZWJGdWxsU2NyZWVuTWFu
YWdlclByb3h5RWZsLmNwcAogICAgIFVJUHJvY2Vzcy9lZmwvV2ViSW5zcGVjdG9yUHJveHlFZmwu
Y3BwCkBAIC0xMjYsNiArMTI3LDcgQEAgTElTVChBUFBFTkQgV2ViS2l0Ml9JTkNMVURFX0RJUkVD
VE9SSUVTCiAgICAgIiR7V0VCS0lUMl9ESVJ9L1VJUHJvY2Vzcy9BUEkvQy9zb3VwIgogICAgICIk
e1dFQktJVDJfRElSfS9VSVByb2Nlc3MvQVBJL2NwcC9lZmwiCiAgICAgIiR7V0VCS0lUMl9ESVJ9
L1VJUHJvY2Vzcy9BUEkvZWZsIgorICAgICIke1dFQktJVDJfRElSfS9VSVByb2Nlc3MvZWZsIgog
ICAgICIke1dFQktJVDJfRElSfS9VSVByb2Nlc3Mvc291cCIKICAgICAiJHtXRUJLSVQyX0RJUn0v
V2ViUHJvY2Vzcy9Eb3dubG9hZHMvc291cCIKICAgICAiJHtXRUJLSVQyX0RJUn0vV2ViUHJvY2Vz
cy9lZmwiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9QYWdl
Q2xpZW50SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9QYWdlQ2xp
ZW50SW1wbC5jcHAKaW5kZXggNzI2Y2FhYS4uMWY1YmYzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvUGFnZUNsaWVudEltcGwuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL1BhZ2VDbGllbnRJbXBsLmNwcApAQCAtMjksNiArMjks
NyBAQAogI2luY2x1ZGUgIkRyYXdpbmdBcmVhUHJveHlJbXBsLmgiCiAjaW5jbHVkZSAiTmF0aXZl
V2ViS2V5Ym9hcmRFdmVudC5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCisjaW5jbHVk
ZSAiV2ViQ29sb3JDaG9vc2VyUHJveHlFZmwuaCIKICNpbmNsdWRlICJXZWJDb250ZXh0LmgiCiAj
aW5jbHVkZSAiV2ViQ29udGV4dE1lbnVQcm94eS5oIgogI2luY2x1ZGUgIldlYlBhZ2VHcm91cC5o
IgpAQCAtMjE3LDEwICsyMTgsOSBAQCBQYXNzUmVmUHRyPFdlYkNvbnRleHRNZW51UHJveHk+IFBh
Z2VDbGllbnRJbXBsOjpjcmVhdGVDb250ZXh0TWVudVByb3h5KFdlYlBhZ2VQcgogfQogCiAjaWYg
RU5BQkxFKElOUFVUX1RZUEVfQ09MT1IpCi1QYXNzUmVmUHRyPFdlYkNvbG9yQ2hvb3NlclByb3h5
PiBQYWdlQ2xpZW50SW1wbDo6Y3JlYXRlQ29sb3JDaG9vc2VyUHJveHkoV2ViUGFnZVByb3h5Kiwg
Y29uc3QgV2ViQ29yZTo6Q29sb3ImKQorUGFzc1JlZlB0cjxXZWJDb2xvckNob29zZXJQcm94eT4g
UGFnZUNsaWVudEltcGw6OmNyZWF0ZUNvbG9yQ2hvb3NlclByb3h5KFdlYlBhZ2VQcm94eSogcGFn
ZSwgY29uc3QgV2ViQ29yZTo6Q29sb3ImIGluaXRpYWxDb2xvcikKIHsKLSAgICBub3RJbXBsZW1l
bnRlZCgpOwotICAgIHJldHVybiAwOworICAgIHJldHVybiBXZWJDb2xvckNob29zZXJQcm94eUVm
bDo6Y3JlYXRlKG1fdmlld1dpZGdldCwgcGFnZSwgaW5pdGlhbENvbG9yKTsKIH0KICNlbmRpZgog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5jcHAKaW5kZXgg
Y2U3ZjdiNC4uZGFkNTdiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9lZmwvZXdrX3ZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZs
L2V3a192aWV3LmNwcApAQCAtOTMsNiArOTMsMTAgQEAgc3RydWN0IF9Fd2tfVmlld19Qcml2YXRl
X0RhdGEgewogICAgIEV2YXNfR0xfU3VyZmFjZSogZXZhc0dsU3VyZmFjZTsKICNlbmRpZgogCisj
aWYgRU5BQkxFKElOUFVUX1RZUEVfQ09MT1IpCisgICAgV2ViQ29sb3JDaG9vc2VyUHJveHlFZmwq
IGNvbG9yQ2hvb3NlcjsKKyNlbmRpZgorCiAgICAgX0V3a19WaWV3X1ByaXZhdGVfRGF0YSgpCiAg
ICAgICAgIDogY3Vyc29yT2JqZWN0KDApCiAgICAgICAgICwgYmFja0ZvcndhcmRMaXN0KDApCkBA
IC0xMDQsNiArMTA4LDkgQEAgc3RydWN0IF9Fd2tfVmlld19Qcml2YXRlX0RhdGEgewogICAgICAg
ICAsIGV2YXNHbENvbnRleHQoMCkKICAgICAgICAgLCBldmFzR2xTdXJmYWNlKDApCiAjZW5kaWYK
KyNpZiBFTkFCTEUoSU5QVVRfVFlQRV9DT0xPUikKKyAgICAgICAgLCBjb2xvckNob29zZXIoMCkK
KyNlbmRpZgogICAgIHsgfQogCiAgICAgfl9Fd2tfVmlld19Qcml2YXRlX0RhdGEoKQpAQCAtMTQ0
OCwzICsxNDU1LDYyIEBAIHZvaWQgZXdrX3ZpZXdfY29udGVudHNfc2l6ZV9jaGFuZ2VkKGNvbnN0
IEV2YXNfT2JqZWN0KiBld2tWaWV3LCBjb25zdCBJbnRTaXplJiBzCiAgICAgcHJpdi0+dmlld3Bv
cnRIYW5kbGVyLT5kaWRDaGFuZ2VDb250ZW50c1NpemUoc2l6ZSk7CiAjZW5kaWYKIH0KKwordm9p
ZCBld2tfdmlld19pbnB1dF9waWNrZXJfc2hvd19yZXF1ZXN0KEV2YXNfT2JqZWN0KiBld2tWaWV3
LCBFd2tfSW5wdXRfVHlwZSBpbnB1dFR5cGUsIGNvbnN0IFN0cmluZyYgaW5wdXRWYWx1ZSkKK3sK
KyAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSk7CisgICAg
RUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oc21hcnREYXRhLT5hcGkpOworICAgIEVJTkFfU0FG
RVRZX09OX05VTExfUkVUVVJOKHNtYXJ0RGF0YS0+YXBpLT5pbnB1dF9waWNrZXJfc2hvdyk7CisK
KyAgICBzbWFydERhdGEtPmFwaS0+aW5wdXRfcGlja2VyX3Nob3coc21hcnREYXRhLCBpbnB1dFR5
cGUsIGlucHV0VmFsdWUudXRmOCgpLmRhdGEoKSk7Cit9CisKK3ZvaWQgZXdrX3ZpZXdfaW5wdXRf
cGlja2VyX2hpZGVfcmVxdWVzdChFdmFzX09iamVjdCogZXdrVmlldywgRXdrX0lucHV0X1R5cGUg
aW5wdXRUeXBlKQoreworICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21h
cnREYXRhKTsKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTihzbWFydERhdGEtPmFwaSk7
CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oc21hcnREYXRhLT5hcGktPmlucHV0X3Bp
Y2tlcl9oaWRlKTsKKworICAgIHNtYXJ0RGF0YS0+YXBpLT5pbnB1dF9waWNrZXJfaGlkZShzbWFy
dERhdGEsIGlucHV0VHlwZSk7Cit9CisKKyNpZiBFTkFCTEUoSU5QVVRfVFlQRV9DT0xPUikKK3Zv
aWQgZXdrX3ZpZXdfY29sb3JfcGlja2VyX3Nob3dfcmVxdWVzdChFdmFzX09iamVjdCogZXdrVmll
dywgV2ViS2l0OjpXZWJDb2xvckNob29zZXJQcm94eUVmbCogY29sb3JDaG9vc2VyLCBjb25zdCBT
dHJpbmcmIGlucHV0VmFsdWUpCit7CisgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tW
aWV3LCBzbWFydERhdGEpOworICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzbWFydERh
dGEsIHByaXYpOworCisgICAgcHJpdi0+Y29sb3JDaG9vc2VyID0gY29sb3JDaG9vc2VyOworCisg
ICAgZXdrX3ZpZXdfaW5wdXRfcGlja2VyX3Nob3dfcmVxdWVzdChld2tWaWV3LCBFV0tfSU5QVVRf
VFlQRV9DT0xPUiwgaW5wdXRWYWx1ZSk7Cit9CisKK3ZvaWQgZXdrX3ZpZXdfY29sb3JfcGlja2Vy
X2hpZGVfcmVxdWVzdChFdmFzX09iamVjdCogZXdrVmlldykKK3sKKyAgICBFV0tfVklFV19TRF9H
RVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSk7CisgICAgRVdLX1ZJRVdfUFJJVl9HRVRf
T1JfUkVUVVJOKHNtYXJ0RGF0YSwgcHJpdik7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRV
Uk4ocHJpdi0+Y29sb3JDaG9vc2VyKTsKKworICAgIHByaXYtPmNvbG9yQ2hvb3NlciA9IDA7CisK
KyAgICBld2tfdmlld19pbnB1dF9waWNrZXJfaGlkZV9yZXF1ZXN0KGV3a1ZpZXcsIEVXS19JTlBV
VF9UWVBFX0NPTE9SKTsKK30KKyNlbmRpZgorCitFaW5hX0Jvb2wgZXdrX3ZpZXdfY29sb3JfcGlj
a2VyX2NvbG9yX3NldChFdmFzX09iamVjdCogZXdrVmlldywgY29uc3QgY2hhciogY29sb3IpCit7
CisjaWYgRU5BQkxFKElOUFVUX1RZUEVfQ09MT1IpCisgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JF
VFVSTihld2tWaWV3LCBzbWFydERhdGEsIGZhbHNlKTsKKyAgICBFV0tfVklFV19QUklWX0dFVF9P
Ul9SRVRVUk4oc21hcnREYXRhLCBwcml2LCBmYWxzZSk7CisgICAgRUlOQV9TQUZFVFlfT05fTlVM
TF9SRVRVUk5fVkFMKHByaXYtPmNvbG9yQ2hvb3NlciwgZmFsc2UpOworICAgIEVJTkFfU0FGRVRZ
X09OX05VTExfUkVUVVJOX1ZBTChjb2xvciwgZmFsc2UpOworCisgICAgcHJpdi0+Y29sb3JDaG9v
c2VyLT5zZXRTZWxlY3RlZENvbG9yKENvbG9yKGNvbG9yKSk7CisgICAgcHJpdi0+Y29sb3JDaG9v
c2VyLT5lbmRDaG9vc2VyKCk7CisgICAgcHJpdi0+Y29sb3JDaG9vc2VyID0gMDsKKworICAgIHJl
dHVybiB0cnVlOworI2Vsc2UKKyAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYKK30KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmggYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5oCmluZGV4IGFmYTQ1ODQuLjQyZTIz
YTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3
LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuaApAQCAt
ODYsNiArODYsMTYgQEAgZXh0ZXJuICJDIiB7CiB0eXBlZGVmIHN0cnVjdCBfRXdrX1ZpZXdfU21h
cnRfRGF0YSBFd2tfVmlld19TbWFydF9EYXRhOwogdHlwZWRlZiBzdHJ1Y3QgX0V3a19WaWV3X1Nt
YXJ0X0NsYXNzIEV3a19WaWV3X1NtYXJ0X0NsYXNzOwogCisvKioKKyAqIFxlbnVtICAgIEV3a19J
bnB1dF9UeXBlCisgKiBAYnJpZWYgICBQcm92aWRlcyB0eXBlIG9mIGlucHV0IGVsZW1lbnQKKyAq
LworZW51bSBfRXdrX0lucHV0X1R5cGUgeworICAgIEVXS19JTlBVVF9UWVBFX0NPTE9SCit9Owor
LyoqIENyZWF0ZXMgYSB0eXBlIG5hbWUgZm9yIF9Fd2tfSW5wdXRfVHlwZV9Fd2tfSW5wdXRfVHlw
ZSAqLwordHlwZWRlZiBlbnVtIF9Fd2tfSW5wdXRfVHlwZSBFd2tfSW5wdXRfVHlwZTsKKwogLy8v
IEV3ayB2aWV3J3MgY2xhc3MsIHRvIGJlIG92ZXJyaWRkZW4gYnkgc3ViLWNsYXNzZXMuCiBzdHJ1
Y3QgX0V3a19WaWV3X1NtYXJ0X0NsYXNzIHsKICAgICBFdmFzX1NtYXJ0X0NsYXNzIHNjOyAvKio8
IGFsbCBidXQgJ2RhdGEnIGlzIGZyZWUgdG8gYmUgY2hhbmdlZC4gKi8KQEAgLTEwMiwxMyArMTEy
LDE3IEBAIHN0cnVjdCBfRXdrX1ZpZXdfU21hcnRfQ2xhc3MgewogICAgIEVpbmFfQm9vbCAoKm1v
dXNlX21vdmUpKEV3a19WaWV3X1NtYXJ0X0RhdGEgKnNkLCBjb25zdCBFdmFzX0V2ZW50X01vdXNl
X01vdmUgKmV2KTsKICAgICBFaW5hX0Jvb2wgKCprZXlfZG93bikoRXdrX1ZpZXdfU21hcnRfRGF0
YSAqc2QsIGNvbnN0IEV2YXNfRXZlbnRfS2V5X0Rvd24gKmV2KTsKICAgICBFaW5hX0Jvb2wgKCpr
ZXlfdXApKEV3a19WaWV3X1NtYXJ0X0RhdGEgKnNkLCBjb25zdCBFdmFzX0V2ZW50X0tleV9VcCAq
ZXYpOworCisgICAgLy8gSW5wdXQgUGlja2VyIEFQSQorICAgIEVpbmFfQm9vbCAoKmlucHV0X3Bp
Y2tlcl9zaG93KShFd2tfVmlld19TbWFydF9EYXRhICpzZCwgRXdrX0lucHV0X1R5cGUgaW5wdXRf
dHlwZSwgY29uc3QgY2hhciAqaW5wdXRfdmFsdWUpOworICAgIEVpbmFfQm9vbCAoKmlucHV0X3Bp
Y2tlcl9oaWRlKShFd2tfVmlld19TbWFydF9EYXRhICpzZCwgRXdrX0lucHV0X1R5cGUgaW5wdXRf
dHlwZSk7CiB9OwogCiAvKioKICAqIFRoZSB2ZXJzaW9uIHlvdSBoYXZlIHRvIHB1dCBpbnRvIHRo
ZSB2ZXJzaW9uIGZpZWxkCiAgKiBpbiB0aGUgQGEgRXdrX1ZpZXdfU21hcnRfQ2xhc3Mgc3RydWN0
dXJlLgogICovCi0jZGVmaW5lIEVXS19WSUVXX1NNQVJUX0NMQVNTX1ZFUlNJT04gMVVMCisjZGVm
aW5lIEVXS19WSUVXX1NNQVJUX0NMQVNTX1ZFUlNJT04gMlVMCiAKIC8qKgogICogSW5pdGlhbGl6
ZXIgZm9yIHdob2xlIEV3a19WaWV3X1NtYXJ0X0NsYXNzIHN0cnVjdHVyZS4KQEAgLTEyMCw3ICsx
MzQsNyBAQCBzdHJ1Y3QgX0V3a19WaWV3X1NtYXJ0X0NsYXNzIHsKICAqIEBzZWUgRVdLX1ZJRVdf
U01BUlRfQ0xBU1NfSU5JVF9WRVJTSU9OCiAgKiBAc2VlIEVXS19WSUVXX1NNQVJUX0NMQVNTX0lO
SVRfTkFNRV9WRVJTSU9OCiAgKi8KLSNkZWZpbmUgRVdLX1ZJRVdfU01BUlRfQ0xBU1NfSU5JVChz
bWFydF9jbGFzc19pbml0KSB7c21hcnRfY2xhc3NfaW5pdCwgRVdLX1ZJRVdfU01BUlRfQ0xBU1Nf
VkVSU0lPTiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMH0KKyNkZWZpbmUgRVdLX1ZJRVdfU01BUlRf
Q0xBU1NfSU5JVChzbWFydF9jbGFzc19pbml0KSB7c21hcnRfY2xhc3NfaW5pdCwgRVdLX1ZJRVdf
U01BUlRfQ0xBU1NfVkVSU0lPTiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMH0KIAogLyoq
CiAgKiBJbml0aWFsaXplciB0byB6ZXJvIGEgd2hvbGUgRXdrX1ZpZXdfU21hcnRfQ2xhc3Mgc3Ry
dWN0dXJlLgpAQCAtNTkwLDYgKzYwNCwxNiBAQCBFQVBJIEVpbmFfQm9vbCBld2tfdmlld190ZXh0
X2ZpbmQoRXZhc19PYmplY3QgKm8sIGNvbnN0IGNoYXIgKnRleHQsIEV3a19GaW5kX09wdAogKi8K
IEVBUEkgRWluYV9Cb29sIGV3a192aWV3X3RleHRfZmluZF9oaWdobGlnaHRfY2xlYXIoRXZhc19P
YmplY3QgKm8pOwogCisvKioKKyAqIFNldHMgdGhlIGNvbG9yIHZhbHVlIG9mIGNvbG9yIGNob29z
ZXIKKyAqCisgKiBAcGFyYW0gbyB2aWV3IG9iamVjdCBjb250YWlucyBjb2xvciBjaG9vc2VyCisg
KiBAcGFyYW0gY29sb3IgI1JHQiwgI1JSR0dCQiBvciBuYW1lZCBjb2xvciBzdHJpbmcgdG8gYmUg
c2V0CisgKgorICogQHJldHVybiBAYyBFSU5BX1RSVUUgb24gc3VjY2VzcyBAYyBFSU5BX0ZBTFNF
IG90aGVyd2lzZQorICovCitFQVBJIEVpbmFfQm9vbCBld2tfdmlld19jb2xvcl9waWNrZXJfY29s
b3Jfc2V0KEV2YXNfT2JqZWN0ICpvLCBjb25zdCBjaGFyICpjb2xvcik7CisKICNpZmRlZiBfX2Nw
bHVzcGx1cwogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2VmbC9ld2tfdmlld19wcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2VmbC9ld2tfdmlld19wcml2YXRlLmgKaW5kZXggZjQwMjk4NS4uNmY5NTQ4ZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXdfcHJpdmF0ZS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3X3ByaXZhdGUuaApA
QCAtMjIsOSArMjIsMTQgQEAKICNkZWZpbmUgZXdrX3ZpZXdfcHJpdmF0ZV9oCiAKICNpbmNsdWRl
ICJXZWJQYWdlUHJveHkuaCIKKyNpbmNsdWRlICJld2tfdmlldy5oIgogI2luY2x1ZGUgPEV2YXMu
aD4KICNpbmNsdWRlIDxXZWJLaXQyL1dLQmFzZS5oPgogCisjaWYgRU5BQkxFKElOUFVUX1RZUEVf
Q09MT1IpCisjaW5jbHVkZSAiV2ViQ29sb3JDaG9vc2VyUHJveHlFZmwuaCIKKyNlbmRpZgorCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBDdXJzb3I7CiBjbGFzcyBJbnRSZWN0OwpAQCAtODks
NCArOTQsMTIgQEAgYm9vbCBld2tfdmlld19hY2NlbGVyYXRlZF9jb21wb3NpdGluZ19tb2RlX2Vu
dGVyKGNvbnN0IEV2YXNfT2JqZWN0KiBld2tWaWV3KTsKIGJvb2wgZXdrX3ZpZXdfYWNjZWxlcmF0
ZWRfY29tcG9zaXRpbmdfbW9kZV9leGl0KGNvbnN0IEV2YXNfT2JqZWN0KiBld2tWaWV3KTsKICNl
bmRpZgogCit2b2lkIGV3a192aWV3X2lucHV0X3BpY2tlcl9zaG93X3JlcXVlc3QoRXZhc19PYmpl
Y3QqIGV3a1ZpZXcsIEV3a19JbnB1dF9UeXBlIGlucHV0VHlwZSwgY29uc3QgU3RyaW5nJiBpbnB1
dFZhbHVlKTsKK3ZvaWQgZXdrX3ZpZXdfaW5wdXRfcGlja2VyX2hpZGVfcmVxdWVzdChFdmFzX09i
amVjdCogZXdrVmlldywgRXdrX0lucHV0X1R5cGUgaW5wdXRUeXBlKTsKKworI2lmIEVOQUJMRShJ
TlBVVF9UWVBFX0NPTE9SKQordm9pZCBld2tfdmlld19jb2xvcl9waWNrZXJfc2hvd19yZXF1ZXN0
KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBXZWJLaXQ6OldlYkNvbG9yQ2hvb3NlclByb3h5RWZsKiBj
b2xvckNob29zZXIsIGNvbnN0IFN0cmluZyYgaW5wdXRWYWx1ZSk7Cit2b2lkIGV3a192aWV3X2Nv
bG9yX3BpY2tlcl9oaWRlX3JlcXVlc3QoRXZhc19PYmplY3QqIGV3a1ZpZXcpOworI2VuZGlmCisK
ICNlbmRpZiAvLyBld2tfdmlld19wcml2YXRlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL1VuaXRUZXN0VXRpbHMvRVdLMlVuaXRUZXN0QmFzZS5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy9Vbml0VGVzdFV0aWxz
L0VXSzJVbml0VGVzdEJhc2UuY3BwCmluZGV4IDM5YmM1YTQuLmM3ZmRhYmEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL1VuaXRUZXN0VXRpbHMvRVdL
MlVuaXRUZXN0QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwv
dGVzdHMvVW5pdFRlc3RVdGlscy9FV0syVW5pdFRlc3RCYXNlLmNwcApAQCAtMjEsNyArMjEsNiBA
QAogI2luY2x1ZGUgIkVXSzJVbml0VGVzdEJhc2UuaCIKIAogI2luY2x1ZGUgIkVXSzJVbml0VGVz
dEVudmlyb25tZW50LmgiCi0jaW5jbHVkZSA8RVdlYktpdDIuaD4KICNpbmNsdWRlIDxFY29yZS5o
PgogI2luY2x1ZGUgPGdsaWItb2JqZWN0Lmg+CiAjaW5jbHVkZSA8d3RmL1VudXNlZFBhcmFtLmg+
CkBAIC00Miw3ICs0MSw5IEBAIHN0YXRpYyB2b2lkIG9uTG9hZEZpbmlzaGVkKHZvaWQqIHVzZXJE
YXRhLCBFdmFzX09iamVjdCogd2ViVmlldywgdm9pZCogZXZlbnRJbmZvCiBFV0syVW5pdFRlc3RC
YXNlOjpFV0syVW5pdFRlc3RCYXNlKCkKICAgICA6IG1fZWNvcmVFdmFzKDApCiAgICAgLCBtX3dl
YlZpZXcoMCkKKyAgICAsIG1fZXdrVmlld0NsYXNzKEVXS19WSUVXX1NNQVJUX0NMQVNTX0lOSVRf
TkFNRV9WRVJTSU9OKCJCcm93c2VyX1ZpZXciKSkKIHsKKyAgICBld2tfdmlld19zbWFydF9jbGFz
c19zZXQoJm1fZXdrVmlld0NsYXNzKTsKIH0KIAogdm9pZCBFV0syVW5pdFRlc3RCYXNlOjpTZXRV
cCgpCkBAIC02MCw3ICs2MSw4IEBAIHZvaWQgRVdLMlVuaXRUZXN0QmFzZTo6U2V0VXAoKQogICAg
IGVjb3JlX2V2YXNfc2hvdyhtX2Vjb3JlRXZhcyk7CiAgICAgRXZhcyogZXZhcyA9IGVjb3JlX2V2
YXNfZ2V0KG1fZWNvcmVFdmFzKTsKIAotICAgIG1fd2ViVmlldyA9IGV3a192aWV3X2FkZChldmFz
KTsKKyAgICBFdmFzX1NtYXJ0KiBzbWFydCA9IGV2YXNfc21hcnRfY2xhc3NfbmV3KCZtX2V3a1Zp
ZXdDbGFzcy5zYyk7CisgICAgbV93ZWJWaWV3ID0gZXdrX3ZpZXdfc21hcnRfYWRkKGV2YXMsIHNt
YXJ0LCBld2tfY29udGV4dF9kZWZhdWx0X2dldCgpKTsKICAgICBld2tfdmlld190aGVtZV9zZXQo
bV93ZWJWaWV3LCBlbnZpcm9ubWVudC0+ZGVmYXVsdFRoZW1lKCkpOwogCiAgICAgZXZhc19vYmpl
Y3RfcmVzaXplKG1fd2ViVmlldywgd2lkdGgsIGhlaWdodCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy9Vbml0VGVzdFV0aWxzL0VXSzJVbml0VGVz
dEJhc2UuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL1VuaXRUZXN0
VXRpbHMvRVdLMlVuaXRUZXN0QmFzZS5oCmluZGV4IDI5ZDU1YmUuLjM2OGU4MWMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL1VuaXRUZXN0VXRpbHMv
RVdLMlVuaXRUZXN0QmFzZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZs
L3Rlc3RzL1VuaXRUZXN0VXRpbHMvRVdLMlVuaXRUZXN0QmFzZS5oCkBAIC0yMCw2ICsyMCw3IEBA
CiAjaWZuZGVmIEVXSzJVbml0VGVzdEJhc2VfaAogI2RlZmluZSBFV0syVW5pdFRlc3RCYXNlX2gK
IAorI2luY2x1ZGUgPEVXZWJLaXQyLmg+CiAjaW5jbHVkZSA8RWNvcmVfRXZhcy5oPgogI2luY2x1
ZGUgPEV2YXMuaD4KICNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgpAQCAtMjksNiArMzAsNyBAQCBu
YW1lc3BhY2UgRVdLMlVuaXRUZXN0IHsKIGNsYXNzIEVXSzJVbml0VGVzdEJhc2UgOiBwdWJsaWMg
Ojp0ZXN0aW5nOjpUZXN0IHsKIHB1YmxpYzoKICAgICBFdmFzX09iamVjdCogd2ViVmlldygpIHsg
cmV0dXJuIG1fd2ViVmlldzsgfQorICAgIEV3a19WaWV3X1NtYXJ0X0NsYXNzKiBld2tWaWV3Q2xh
c3MoKSB7IHJldHVybiAmbV9ld2tWaWV3Q2xhc3M7IH0KIAogcHJvdGVjdGVkOgogICAgIEVXSzJV
bml0VGVzdEJhc2UoKTsKQEAgLTQzLDYgKzQ1LDggQEAgcHJvdGVjdGVkOgogcHJpdmF0ZToKICAg
ICBFdmFzX09iamVjdCogbV93ZWJWaWV3OwogICAgIEVjb3JlX0V2YXMqIG1fZWNvcmVFdmFzOwor
CisgICAgRXdrX1ZpZXdfU21hcnRfQ2xhc3MgbV9ld2tWaWV3Q2xhc3M7CiB9OwogCiB9IC8vIG5h
bWVzcGFjZSBFV0syVW5pdFRlc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZWZsL3Rlc3RzL3Rlc3RfZXdrMl92aWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZWZsL3Rlc3RzL3Rlc3RfZXdrMl92aWV3LmNwcAppbmRleCA1ZWRiMDQzLi40MTY1
YWFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy90
ZXN0X2V3azJfdmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwv
dGVzdHMvdGVzdF9ld2syX3ZpZXcuY3BwCkBAIC0xODgsMyArMTg4LDc3IEBAIFRFU1RfRihFV0sy
VW5pdFRlc3RCYXNlLCBld2tfdmlld19mb3JtX3N1Ym1pc3Npb25fcmVxdWVzdCkKICAgICBBU1NF
UlRfVFJVRShoYW5kbGVkKTsKICAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19kZWwod2Vi
VmlldygpLCAiZm9ybSxzdWJtaXNzaW9uLHJlcXVlc3QiLCBvbkZvcm1BYm91dFRvQmVTdWJtaXR0
ZWQpOwogfQorCisjaWYgRU5BQkxFKElOUFVUX1RZUEVfQ09MT1IpCitzdGF0aWMgY29uc3QgY2hh
ciBpbml0aWFsQ29sb3JbXSA9ICIjZmYwMDAwIjsKK3N0YXRpYyBjb25zdCBjaGFyIGNoYW5nZWRD
b2xvcltdID0gIiMwMDAwZmYiOworCitzdGF0aWMgdm9pZCBjb2xvclBpY2tlckRvbmVDYWxsYmFj
ayh2b2lkKiB1c2VyRGF0YSwgRXZhc19PYmplY3QqLCB2b2lkKikKK3sKKyAgICBib29sKiBoYW5k
bGVkID0gc3RhdGljX2Nhc3Q8Ym9vbCo+KHVzZXJEYXRhKTsKKworICAgICpoYW5kbGVkID0gdHJ1
ZTsKK30KKworc3RhdGljIHVuc2lnbmVkIGNoYXIgY29sb3JQaWNrZXJDb2xvclNlbGVjdGVkKHZv
aWQqIGRhdGEpCit7CisgICAgRXdrX1ZpZXdfU21hcnRfRGF0YSogc21hcnREYXRhID0gc3RhdGlj
X2Nhc3Q8RXdrX1ZpZXdfU21hcnRfRGF0YSo+KGRhdGEpOworCisgICAgLy8gNC4gQ2hhbmdlIGNv
bG9yIHRvIGNoYW5nZWRDb2xvci4KKyAgICBFWFBFQ1RfVFJVRShld2tfdmlld19jb2xvcl9waWNr
ZXJfY29sb3Jfc2V0KHNtYXJ0RGF0YS0+c2VsZiwgY2hhbmdlZENvbG9yKSk7CisKKyAgICBldmFz
X29iamVjdF9zbWFydF9jYWxsYmFja19jYWxsKHNtYXJ0RGF0YS0+c2VsZiwgImlucHV0LHR5cGUs
Y29sb3IscmVxdWVzdCIsIDApOworCisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBFaW5hX0Jv
b2wgc2hvd0NvbG9yUGlja2VyKEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNtYXJ0RGF0YSwgRXdrX0lu
cHV0X1R5cGUgaW5wdXRUeXBlLCBjb25zdCBjaGFyKiBpbnB1dFZhbHVlKQoreworICAgIHN0YXRp
YyBib29sIGlzRmlyc3RSdW4gPSB0cnVlOworCisgICAgaWYgKGlzRmlyc3RSdW4pIHsKKyAgICAg
ICAgLy8gMS4gQ2hlY2sgdHlwZSBvZiBpbnB1dC4KKyAgICAgICAgRVhQRUNUX0VRKGlucHV0VHlw
ZSwgRVdLX0lOUFVUX1RZUEVfQ09MT1IpOworICAgICAgICAvLyAyLiBDaGVjayBpbml0aWFsIHZh
bHVlIGZyb20gaHRtbCBmaWxlLgorICAgICAgICBFWFBFQ1RfU1RSRVEoaW5wdXRWYWx1ZSwgaW5p
dGlhbENvbG9yKTsKKworICAgICAgICBpc0ZpcnN0UnVuID0gZmFsc2U7CisgICAgfSBlbHNlCisg
ICAgICAgIC8vIDUuIGlucHV0VmFsdWUgc2hvdWxkIGJlIGNoYW5nZWRDb2xvci4KKyAgICAgICAg
RVhQRUNUX1NUUkVRKGlucHV0VmFsdWUsIGNoYW5nZWRDb2xvcik7CisKKyAgICAvLyAzLiBSZXR1
cm4gYWZ0ZXIgbWFraW5nIGEgY29sb3IgcGlja2VyLgorICAgIGVjb3JlX3RpbWVyX2FkZCgwLjAs
IGNvbG9yUGlja2VyQ29sb3JTZWxlY3RlZCwgc21hcnREYXRhKTsKKyAgICByZXR1cm4gdHJ1ZTsK
K30KKworc3RhdGljIEVpbmFfQm9vbCBoaWRlQ29sb3JQaWNrZXIoRXdrX1ZpZXdfU21hcnRfRGF0
YSosIEV3a19JbnB1dF9UeXBlIGlucHV0VHlwZSkKK3sKKyAgICBFWFBFQ1RfRVEoaW5wdXRUeXBl
LCBFV0tfSU5QVVRfVFlQRV9DT0xPUik7Cit9CisKK1RFU1RfRihFV0syVW5pdFRlc3RCYXNlLCBl
d2tfdmlld19jb2xvcl9waWNrZXJfY29sb3Jfc2V0KQoreworICAgIEV3a19WaWV3X1NtYXJ0X0Ns
YXNzKiBhcGkgPSBld2tWaWV3Q2xhc3MoKTsKKyAgICBhcGktPmlucHV0X3BpY2tlcl9zaG93ID0g
c2hvd0NvbG9yUGlja2VyOworICAgIGFwaS0+aW5wdXRfcGlja2VyX2hpZGUgPSBoaWRlQ29sb3JQ
aWNrZXI7CisKKyAgICBsb2FkVXJsU3luYygiZGF0YTp0ZXh0L2h0bWwsPGlucHV0IHR5cGU9J2Nv
bG9yJyB2YWx1ZT0nI2ZmMDAwMCc+Iik7CisKKyAgICAvLyBDbGljayBpbnB1dCBlbGVtZW50Lgor
ICAgIG1vdXNlQ2xpY2soMzAsIDIwKTsKKworICAgIGJvb2wgaGFuZGxlZCA9IGZhbHNlOworICAg
IGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2FkZCh3ZWJWaWV3KCksICJpbnB1dCx0eXBlLGNv
bG9yLHJlcXVlc3QiLCBjb2xvclBpY2tlckRvbmVDYWxsYmFjaywgJmhhbmRsZWQpOworICAgIHdo
aWxlICghaGFuZGxlZCkKKyAgICAgICAgZWNvcmVfbWFpbl9sb29wX2l0ZXJhdGUoKTsKKworICAg
IC8vIENsaWNrIGlucHV0IGVsZW1lbnQgYWdhaW4uCisgICAgbW91c2VDbGljaygzMCwgMjApOwor
CisgICAgaGFuZGxlZCA9IGZhbHNlOworICAgIHdoaWxlICghaGFuZGxlZCkKKyAgICAgICAgZWNv
cmVfbWFpbl9sb29wX2l0ZXJhdGUoKTsKKyAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19k
ZWwod2ViVmlldygpLCAiaW5wdXQsdHlwZSxjb2xvcixyZXF1ZXN0IiwgY29sb3JQaWNrZXJEb25l
Q2FsbGJhY2spOworfQorI2VuZGlmIC8vIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9SKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJDb2xvckNob29zZXJQcm94eUVm
bC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYkNvbG9yQ2hvb3NlclByb3h5
RWZsLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MDQwNWZhCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJDb2xvckNob29z
ZXJQcm94eUVmbC5jcHAKQEAgLTAsMCArMSw2NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MiBTYW1zdW5nIEVsZWN0cm9uaWNzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYkNvbG9yQ2hvb3NlclByb3h5RWZsLmgiCisK
KyNpZiBFTkFCTEUoSU5QVVRfVFlQRV9DT0xPUikKKworI2luY2x1ZGUgImV3a192aWV3X3ByaXZh
dGUuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK1dlYkNvbG9yQ2hvb3NlclByb3h5RWZsOjpX
ZWJDb2xvckNob29zZXJQcm94eUVmbChFdmFzX09iamVjdCogd2ViVmlldywgV2ViQ29sb3JDaG9v
c2VyUHJveHk6OkNsaWVudCogY2xpZW50LCBjb25zdCBXZWJDb3JlOjpDb2xvciYgY29sb3IpCisg
ICAgOiBXZWJDb2xvckNob29zZXJQcm94eShjbGllbnQpCisgICAgLCBtX3dlYlZpZXcod2ViVmll
dykKK3sKKyAgICBld2tfdmlld19jb2xvcl9waWNrZXJfc2hvd19yZXF1ZXN0KG1fd2ViVmlldywg
dGhpcywgY29sb3Iuc2VyaWFsaXplZCgpKTsKK30KKworV2ViQ29sb3JDaG9vc2VyUHJveHlFZmw6
On5XZWJDb2xvckNob29zZXJQcm94eUVmbCgpCit7CisgICAgZXdrX3ZpZXdfY29sb3JfcGlja2Vy
X2hpZGVfcmVxdWVzdChtX3dlYlZpZXcpOworfQorCit2b2lkIFdlYkNvbG9yQ2hvb3NlclByb3h5
RWZsOjplbmRDaG9vc2VyKCkKK3sKKyAgICBpZiAoIW1fY2xpZW50KQorICAgICAgICByZXR1cm47
CisKKyAgICBtX2NsaWVudC0+ZGlkRW5kQ29sb3JDaG9vc2VyKCk7Cit9CisKK3ZvaWQgV2ViQ29s
b3JDaG9vc2VyUHJveHlFZmw6OnNldFNlbGVjdGVkQ29sb3IoY29uc3QgV2ViQ29yZTo6Q29sb3Im
IGNvbG9yKQoreworICAgIGlmICghbV9jbGllbnQpCisgICAgICAgIHJldHVybjsKKworICAgIG1f
Y2xpZW50LT5kaWRDaG9vc2VDb2xvcihjb2xvcik7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktp
dAorCisjZW5kaWYgLy8gRU5BQkxFKElOUFVUX1RZUEVfQ09MT1IpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYkNvbG9yQ2hvb3NlclByb3h5RWZsLmggYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYkNvbG9yQ2hvb3NlclByb3h5RWZsLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTcwNjRhNAotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViQ29sb3JDaG9vc2VyUHJveHlFZmwuaApA
QCAtMCwwICsxLDYxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIFNhbXN1bmcgRWxlY3Ry
b25pY3MuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYkNvbG9yQ2hv
b3NlclByb3h5RWZsX2gKKyNkZWZpbmUgV2ViQ29sb3JDaG9vc2VyUHJveHlFZmxfaAorCisjaWYg
RU5BQkxFKElOUFVUX1RZUEVfQ09MT1IpCisKKyNpbmNsdWRlICJDb2xvci5oIgorI2luY2x1ZGUg
IldlYkNvbG9yQ2hvb3NlclByb3h5LmgiCisKK3R5cGVkZWYgc3RydWN0IF9FdmFzX09iamVjdCBF
dmFzX09iamVjdDsKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYlBhZ2VQcm94eTsK
KworY2xhc3MgV2ViQ29sb3JDaG9vc2VyUHJveHlFZmwgOiBwdWJsaWMgV2ViQ29sb3JDaG9vc2Vy
UHJveHkgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYkNvbG9yQ2hvb3NlclBy
b3h5RWZsPiBjcmVhdGUoRXZhc19PYmplY3QqIHdlYlZpZXcsIFdlYkNvbG9yQ2hvb3NlclByb3h5
OjpDbGllbnQqIGNsaWVudCwgY29uc3QgV2ViQ29yZTo6Q29sb3ImIGNvbG9yKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJDb2xvckNob29zZXJQcm94eUVmbCh3ZWJWaWV3
LCBjbGllbnQsIGNvbG9yKSk7CisgICAgfQorICAgIH5XZWJDb2xvckNob29zZXJQcm94eUVmbCgp
OworCisgICAgdm9pZCBlbmRDaG9vc2VyKCk7CisgICAgdm9pZCBzZXRTZWxlY3RlZENvbG9yKGNv
bnN0IFdlYkNvcmU6OkNvbG9yJik7CisKK3ByaXZhdGU6CisgICAgV2ViQ29sb3JDaG9vc2VyUHJv
eHlFZmwoRXZhc19PYmplY3QqLCBXZWJDb2xvckNob29zZXJQcm94eTo6Q2xpZW50KiwgY29uc3Qg
V2ViQ29yZTo6Q29sb3ImKTsKKworICAgIEV2YXNfT2JqZWN0KiBtX3dlYlZpZXc7Cit9OworCit9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9S
KQorCisjZW5kaWYgLy8gV2ViQ29sb3JDaG9vc2VyUHJveHlFZmxfaAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>159889</attachid>
            <date>2012-08-22 03:00:52 -0700</date>
            <delta_ts>2012-08-30 05:41:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>diff</filename>
            <type>text/plain</type>
            <size>21498</size>
            <attacher name="KwangYong Choi">ky0.choi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCBmODZjNGY5Li5lMDQwNzFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTUg
QEAKKzIwMTItMDgtMjEgIEt3YW5nWW9uZyBDaG9pICA8a3kwLmNob2lAc2Ftc3VuZy5jb20+CisK
KyAgICAgICAgW0VGTF1bV0syXSBJbXBsZW1lbnRlZCBjb2xvciBjaG9vc2VyIHByb3h5IGFuZCBp
bnB1dCBwaWNrZXIgaW50ZXJmYWNlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD05MTgzMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEltcGxlbWVudGVkIGNvbG9yIGNob29zZXIgcHJveHkgYW5kIGlucHV0IHBp
Y2tlciBpbnRlcmZhY2UgZm9yIEVGTC4KKyAgICAgICAgSW5wdXQgcGlja2VyIGludGVyZmFjZSBj
YW4gYmUgdXNlZCBmb3IgZ2VuZXJhbCB1c2Ugb2YgYWxsIHRoZSBpbnB1dAorICAgICAgICB0eXBl
cyBpbmNsdWRpbmcgY29sb3IgaW5wdXQgdHlwZS4KKworICAgICAgICBUaGUgZXh0ZXJuYWwgYXBw
bGljYXRpb24gc2hvdWxkIGltcGxlbWVudCBpbnB1dCBwaWNrZXIgYnkgb3ZlcnJpZGluZworICAg
ICAgICBzbWFydCBjbGFzcyBmdW5jdGlvbi4KKworICAgICAgICBJbiBhZGRpdGlvbiwgc2V0dGlu
ZyBhcGkgZm9yIGNvbG9yIHBpY2tlciBpcyBpbXBsZW1lbnRlZC4KKworICAgICAgICAqIFBsYXRm
b3JtRWZsLmNtYWtlOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL1BhZ2VDbGllbnRJbXBs
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OmNyZWF0ZUNvbG9yQ2hvb3Nl
clByb3h5KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5jcHA6CisgICAg
ICAgIChfRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKToKKyAgICAgICAgKF9Fd2tfVmlld19Qcml2YXRl
X0RhdGE6Ol9Fd2tfVmlld19Qcml2YXRlX0RhdGEpOgorICAgICAgICAoZXdrX3ZpZXdfaW5wdXRf
cGlja2VyX3Nob3dfcmVxdWVzdCk6CisgICAgICAgIChld2tfdmlld19pbnB1dF9waWNrZXJfaGlk
ZV9yZXF1ZXN0KToKKyAgICAgICAgKGV3a192aWV3X2NvbG9yX3BpY2tlcl9zaG93X3JlcXVlc3Qp
OgorICAgICAgICAoZXdrX3ZpZXdfY29sb3JfcGlja2VyX2hpZGVfcmVxdWVzdCk6CisgICAgICAg
IChld2tfdmlld19jb2xvcl9waWNrZXJfY29sb3Jfc2V0KToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL2VmbC9ld2tfdmlldy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3
X3ByaXZhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy9Vbml0VGVzdFV0
aWxzL0VXSzJVbml0VGVzdEJhc2UuY3BwOgorICAgICAgICAoRVdLMlVuaXRUZXN0OjpFV0syVW5p
dFRlc3RCYXNlOjpFV0syVW5pdFRlc3RCYXNlKToKKyAgICAgICAgKEVXSzJVbml0VGVzdDo6RVdL
MlVuaXRUZXN0QmFzZTo6U2V0VXApOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL3Rlc3Rz
L1VuaXRUZXN0VXRpbHMvRVdLMlVuaXRUZXN0QmFzZS5oOgorICAgICAgICAoRVdLMlVuaXRUZXN0
OjpFV0syVW5pdFRlc3RCYXNlOjpld2tWaWV3Q2xhc3MpOgorICAgICAgICAoRVdLMlVuaXRUZXN0
QmFzZSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvdGVzdF9ld2syX3ZpZXcu
Y3BwOiBBZGRlZCBhIHRlc3QgZm9yIGNvbG9yIHBpY2tlciBhcGkuCisgICAgICAgIChjb2xvclBp
Y2tlckRvbmVDYWxsYmFjayk6CisgICAgICAgIChjb2xvclBpY2tlckNvbG9yU2VsZWN0ZWQpOgor
ICAgICAgICAoc2hvd0NvbG9yUGlja2VyKToKKyAgICAgICAgKGhpZGVDb2xvclBpY2tlcik6Cisg
ICAgICAgIChURVNUX0YpOgorICAgICAgICAqIFVJUHJvY2Vzcy9lZmwvV2ViQ29sb3JDaG9vc2Vy
UHJveHlFZmwuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6
OldlYkNvbG9yQ2hvb3NlclByb3h5RWZsOjpXZWJDb2xvckNob29zZXJQcm94eUVmbCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYkNvbG9yQ2hvb3NlclByb3h5RWZsOjp+V2ViQ29sb3JDaG9vc2VyUHJv
eHlFZmwpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb2xvckNob29zZXJQcm94eUVmbDo6ZW5kQ2hv
b3Nlcik6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbG9yQ2hvb3NlclByb3h5RWZsOjpzZXRTZWxl
Y3RlZENvbG9yKToKKyAgICAgICAgKiBVSVByb2Nlc3MvZWZsL1dlYkNvbG9yQ2hvb3NlclByb3h5
RWZsLmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYkNvbG9yQ2hvb3Nl
clByb3h5RWZsKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29sb3JDaG9vc2VyUHJveHlFZmw6OmNy
ZWF0ZSk6CisKIDIwMTItMDgtMjEgIEFsZXhleSBQcm9za3VyeWFrb3YgIDxhcEBhcHBsZS5jb20+
CiAKICAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzExMjQxODUwPiBCbG9jayBhY2Nlc3MgdG8geHBj
ZCBpbiBXZWJQcm9jZXNzLnNiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVm
bC5jbWFrZSBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlCmluZGV4IGQ0YjA4Zjgu
LjllZjljODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlCkBAIC03MSw2ICs3MSw3IEBAIExJ
U1QoQVBQRU5EIFdlYktpdDJfU09VUkNFUwogICAgIFVJUHJvY2Vzcy9jYWlyby9CYWNraW5nU3Rv
cmVDYWlyby5jcHAKIAogICAgIFVJUHJvY2Vzcy9lZmwvVGV4dENoZWNrZXJFZmwuY3BwCisgICAg
VUlQcm9jZXNzL2VmbC9XZWJDb2xvckNob29zZXJQcm94eUVmbC5jcHAKICAgICBVSVByb2Nlc3Mv
ZWZsL1dlYkNvbnRleHRFZmwuY3BwCiAgICAgVUlQcm9jZXNzL2VmbC9XZWJGdWxsU2NyZWVuTWFu
YWdlclByb3h5RWZsLmNwcAogICAgIFVJUHJvY2Vzcy9lZmwvV2ViSW5zcGVjdG9yUHJveHlFZmwu
Y3BwCkBAIC0xMjYsNiArMTI3LDcgQEAgTElTVChBUFBFTkQgV2ViS2l0Ml9JTkNMVURFX0RJUkVD
VE9SSUVTCiAgICAgIiR7V0VCS0lUMl9ESVJ9L1VJUHJvY2Vzcy9BUEkvQy9zb3VwIgogICAgICIk
e1dFQktJVDJfRElSfS9VSVByb2Nlc3MvQVBJL2NwcC9lZmwiCiAgICAgIiR7V0VCS0lUMl9ESVJ9
L1VJUHJvY2Vzcy9BUEkvZWZsIgorICAgICIke1dFQktJVDJfRElSfS9VSVByb2Nlc3MvZWZsIgog
ICAgICIke1dFQktJVDJfRElSfS9VSVByb2Nlc3Mvc291cCIKICAgICAiJHtXRUJLSVQyX0RJUn0v
V2ViUHJvY2Vzcy9Eb3dubG9hZHMvc291cCIKICAgICAiJHtXRUJLSVQyX0RJUn0vV2ViUHJvY2Vz
cy9lZmwiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9QYWdl
Q2xpZW50SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9QYWdlQ2xp
ZW50SW1wbC5jcHAKaW5kZXggNzI2Y2FhYS4uMWY1YmYzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvUGFnZUNsaWVudEltcGwuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL1BhZ2VDbGllbnRJbXBsLmNwcApAQCAtMjksNiArMjks
NyBAQAogI2luY2x1ZGUgIkRyYXdpbmdBcmVhUHJveHlJbXBsLmgiCiAjaW5jbHVkZSAiTmF0aXZl
V2ViS2V5Ym9hcmRFdmVudC5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCisjaW5jbHVk
ZSAiV2ViQ29sb3JDaG9vc2VyUHJveHlFZmwuaCIKICNpbmNsdWRlICJXZWJDb250ZXh0LmgiCiAj
aW5jbHVkZSAiV2ViQ29udGV4dE1lbnVQcm94eS5oIgogI2luY2x1ZGUgIldlYlBhZ2VHcm91cC5o
IgpAQCAtMjE3LDEwICsyMTgsOSBAQCBQYXNzUmVmUHRyPFdlYkNvbnRleHRNZW51UHJveHk+IFBh
Z2VDbGllbnRJbXBsOjpjcmVhdGVDb250ZXh0TWVudVByb3h5KFdlYlBhZ2VQcgogfQogCiAjaWYg
RU5BQkxFKElOUFVUX1RZUEVfQ09MT1IpCi1QYXNzUmVmUHRyPFdlYkNvbG9yQ2hvb3NlclByb3h5
PiBQYWdlQ2xpZW50SW1wbDo6Y3JlYXRlQ29sb3JDaG9vc2VyUHJveHkoV2ViUGFnZVByb3h5Kiwg
Y29uc3QgV2ViQ29yZTo6Q29sb3ImKQorUGFzc1JlZlB0cjxXZWJDb2xvckNob29zZXJQcm94eT4g
UGFnZUNsaWVudEltcGw6OmNyZWF0ZUNvbG9yQ2hvb3NlclByb3h5KFdlYlBhZ2VQcm94eSogcGFn
ZSwgY29uc3QgV2ViQ29yZTo6Q29sb3ImIGluaXRpYWxDb2xvcikKIHsKLSAgICBub3RJbXBsZW1l
bnRlZCgpOwotICAgIHJldHVybiAwOworICAgIHJldHVybiBXZWJDb2xvckNob29zZXJQcm94eUVm
bDo6Y3JlYXRlKG1fdmlld1dpZGdldCwgcGFnZSwgaW5pdGlhbENvbG9yKTsKIH0KICNlbmRpZgog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5jcHAKaW5kZXgg
Y2U3ZjdiNC4uZGFkNTdiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9lZmwvZXdrX3ZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZs
L2V3a192aWV3LmNwcApAQCAtOTMsNiArOTMsMTAgQEAgc3RydWN0IF9Fd2tfVmlld19Qcml2YXRl
X0RhdGEgewogICAgIEV2YXNfR0xfU3VyZmFjZSogZXZhc0dsU3VyZmFjZTsKICNlbmRpZgogCisj
aWYgRU5BQkxFKElOUFVUX1RZUEVfQ09MT1IpCisgICAgV2ViQ29sb3JDaG9vc2VyUHJveHlFZmwq
IGNvbG9yQ2hvb3NlcjsKKyNlbmRpZgorCiAgICAgX0V3a19WaWV3X1ByaXZhdGVfRGF0YSgpCiAg
ICAgICAgIDogY3Vyc29yT2JqZWN0KDApCiAgICAgICAgICwgYmFja0ZvcndhcmRMaXN0KDApCkBA
IC0xMDQsNiArMTA4LDkgQEAgc3RydWN0IF9Fd2tfVmlld19Qcml2YXRlX0RhdGEgewogICAgICAg
ICAsIGV2YXNHbENvbnRleHQoMCkKICAgICAgICAgLCBldmFzR2xTdXJmYWNlKDApCiAjZW5kaWYK
KyNpZiBFTkFCTEUoSU5QVVRfVFlQRV9DT0xPUikKKyAgICAgICAgLCBjb2xvckNob29zZXIoMCkK
KyNlbmRpZgogICAgIHsgfQogCiAgICAgfl9Fd2tfVmlld19Qcml2YXRlX0RhdGEoKQpAQCAtMTQ0
OCwzICsxNDU1LDYyIEBAIHZvaWQgZXdrX3ZpZXdfY29udGVudHNfc2l6ZV9jaGFuZ2VkKGNvbnN0
IEV2YXNfT2JqZWN0KiBld2tWaWV3LCBjb25zdCBJbnRTaXplJiBzCiAgICAgcHJpdi0+dmlld3Bv
cnRIYW5kbGVyLT5kaWRDaGFuZ2VDb250ZW50c1NpemUoc2l6ZSk7CiAjZW5kaWYKIH0KKwordm9p
ZCBld2tfdmlld19pbnB1dF9waWNrZXJfc2hvd19yZXF1ZXN0KEV2YXNfT2JqZWN0KiBld2tWaWV3
LCBFd2tfSW5wdXRfVHlwZSBpbnB1dFR5cGUsIGNvbnN0IFN0cmluZyYgaW5wdXRWYWx1ZSkKK3sK
KyAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSk7CisgICAg
RUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oc21hcnREYXRhLT5hcGkpOworICAgIEVJTkFfU0FG
RVRZX09OX05VTExfUkVUVVJOKHNtYXJ0RGF0YS0+YXBpLT5pbnB1dF9waWNrZXJfc2hvdyk7CisK
KyAgICBzbWFydERhdGEtPmFwaS0+aW5wdXRfcGlja2VyX3Nob3coc21hcnREYXRhLCBpbnB1dFR5
cGUsIGlucHV0VmFsdWUudXRmOCgpLmRhdGEoKSk7Cit9CisKK3ZvaWQgZXdrX3ZpZXdfaW5wdXRf
cGlja2VyX2hpZGVfcmVxdWVzdChFdmFzX09iamVjdCogZXdrVmlldywgRXdrX0lucHV0X1R5cGUg
aW5wdXRUeXBlKQoreworICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21h
cnREYXRhKTsKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTihzbWFydERhdGEtPmFwaSk7
CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oc21hcnREYXRhLT5hcGktPmlucHV0X3Bp
Y2tlcl9oaWRlKTsKKworICAgIHNtYXJ0RGF0YS0+YXBpLT5pbnB1dF9waWNrZXJfaGlkZShzbWFy
dERhdGEsIGlucHV0VHlwZSk7Cit9CisKKyNpZiBFTkFCTEUoSU5QVVRfVFlQRV9DT0xPUikKK3Zv
aWQgZXdrX3ZpZXdfY29sb3JfcGlja2VyX3Nob3dfcmVxdWVzdChFdmFzX09iamVjdCogZXdrVmll
dywgV2ViS2l0OjpXZWJDb2xvckNob29zZXJQcm94eUVmbCogY29sb3JDaG9vc2VyLCBjb25zdCBT
dHJpbmcmIGlucHV0VmFsdWUpCit7CisgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tW
aWV3LCBzbWFydERhdGEpOworICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzbWFydERh
dGEsIHByaXYpOworCisgICAgcHJpdi0+Y29sb3JDaG9vc2VyID0gY29sb3JDaG9vc2VyOworCisg
ICAgZXdrX3ZpZXdfaW5wdXRfcGlja2VyX3Nob3dfcmVxdWVzdChld2tWaWV3LCBFV0tfSU5QVVRf
VFlQRV9DT0xPUiwgaW5wdXRWYWx1ZSk7Cit9CisKK3ZvaWQgZXdrX3ZpZXdfY29sb3JfcGlja2Vy
X2hpZGVfcmVxdWVzdChFdmFzX09iamVjdCogZXdrVmlldykKK3sKKyAgICBFV0tfVklFV19TRF9H
RVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSk7CisgICAgRVdLX1ZJRVdfUFJJVl9HRVRf
T1JfUkVUVVJOKHNtYXJ0RGF0YSwgcHJpdik7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRV
Uk4ocHJpdi0+Y29sb3JDaG9vc2VyKTsKKworICAgIHByaXYtPmNvbG9yQ2hvb3NlciA9IDA7CisK
KyAgICBld2tfdmlld19pbnB1dF9waWNrZXJfaGlkZV9yZXF1ZXN0KGV3a1ZpZXcsIEVXS19JTlBV
VF9UWVBFX0NPTE9SKTsKK30KKyNlbmRpZgorCitFaW5hX0Jvb2wgZXdrX3ZpZXdfY29sb3JfcGlj
a2VyX2NvbG9yX3NldChFdmFzX09iamVjdCogZXdrVmlldywgY29uc3QgY2hhciogY29sb3IpCit7
CisjaWYgRU5BQkxFKElOUFVUX1RZUEVfQ09MT1IpCisgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JF
VFVSTihld2tWaWV3LCBzbWFydERhdGEsIGZhbHNlKTsKKyAgICBFV0tfVklFV19QUklWX0dFVF9P
Ul9SRVRVUk4oc21hcnREYXRhLCBwcml2LCBmYWxzZSk7CisgICAgRUlOQV9TQUZFVFlfT05fTlVM
TF9SRVRVUk5fVkFMKHByaXYtPmNvbG9yQ2hvb3NlciwgZmFsc2UpOworICAgIEVJTkFfU0FGRVRZ
X09OX05VTExfUkVUVVJOX1ZBTChjb2xvciwgZmFsc2UpOworCisgICAgcHJpdi0+Y29sb3JDaG9v
c2VyLT5zZXRTZWxlY3RlZENvbG9yKENvbG9yKGNvbG9yKSk7CisgICAgcHJpdi0+Y29sb3JDaG9v
c2VyLT5lbmRDaG9vc2VyKCk7CisgICAgcHJpdi0+Y29sb3JDaG9vc2VyID0gMDsKKworICAgIHJl
dHVybiB0cnVlOworI2Vsc2UKKyAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYKK30KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmggYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5oCmluZGV4IGFmYTQ1ODQuLjQyZTIz
YTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3
LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuaApAQCAt
ODYsNiArODYsMTYgQEAgZXh0ZXJuICJDIiB7CiB0eXBlZGVmIHN0cnVjdCBfRXdrX1ZpZXdfU21h
cnRfRGF0YSBFd2tfVmlld19TbWFydF9EYXRhOwogdHlwZWRlZiBzdHJ1Y3QgX0V3a19WaWV3X1Nt
YXJ0X0NsYXNzIEV3a19WaWV3X1NtYXJ0X0NsYXNzOwogCisvKioKKyAqIFxlbnVtICAgIEV3a19J
bnB1dF9UeXBlCisgKiBAYnJpZWYgICBQcm92aWRlcyB0eXBlIG9mIGlucHV0IGVsZW1lbnQKKyAq
LworZW51bSBfRXdrX0lucHV0X1R5cGUgeworICAgIEVXS19JTlBVVF9UWVBFX0NPTE9SCit9Owor
LyoqIENyZWF0ZXMgYSB0eXBlIG5hbWUgZm9yIF9Fd2tfSW5wdXRfVHlwZV9Fd2tfSW5wdXRfVHlw
ZSAqLwordHlwZWRlZiBlbnVtIF9Fd2tfSW5wdXRfVHlwZSBFd2tfSW5wdXRfVHlwZTsKKwogLy8v
IEV3ayB2aWV3J3MgY2xhc3MsIHRvIGJlIG92ZXJyaWRkZW4gYnkgc3ViLWNsYXNzZXMuCiBzdHJ1
Y3QgX0V3a19WaWV3X1NtYXJ0X0NsYXNzIHsKICAgICBFdmFzX1NtYXJ0X0NsYXNzIHNjOyAvKio8
IGFsbCBidXQgJ2RhdGEnIGlzIGZyZWUgdG8gYmUgY2hhbmdlZC4gKi8KQEAgLTEwMiwxMyArMTEy
LDE3IEBAIHN0cnVjdCBfRXdrX1ZpZXdfU21hcnRfQ2xhc3MgewogICAgIEVpbmFfQm9vbCAoKm1v
dXNlX21vdmUpKEV3a19WaWV3X1NtYXJ0X0RhdGEgKnNkLCBjb25zdCBFdmFzX0V2ZW50X01vdXNl
X01vdmUgKmV2KTsKICAgICBFaW5hX0Jvb2wgKCprZXlfZG93bikoRXdrX1ZpZXdfU21hcnRfRGF0
YSAqc2QsIGNvbnN0IEV2YXNfRXZlbnRfS2V5X0Rvd24gKmV2KTsKICAgICBFaW5hX0Jvb2wgKCpr
ZXlfdXApKEV3a19WaWV3X1NtYXJ0X0RhdGEgKnNkLCBjb25zdCBFdmFzX0V2ZW50X0tleV9VcCAq
ZXYpOworCisgICAgLy8gSW5wdXQgUGlja2VyIEFQSQorICAgIEVpbmFfQm9vbCAoKmlucHV0X3Bp
Y2tlcl9zaG93KShFd2tfVmlld19TbWFydF9EYXRhICpzZCwgRXdrX0lucHV0X1R5cGUgaW5wdXRf
dHlwZSwgY29uc3QgY2hhciAqaW5wdXRfdmFsdWUpOworICAgIEVpbmFfQm9vbCAoKmlucHV0X3Bp
Y2tlcl9oaWRlKShFd2tfVmlld19TbWFydF9EYXRhICpzZCwgRXdrX0lucHV0X1R5cGUgaW5wdXRf
dHlwZSk7CiB9OwogCiAvKioKICAqIFRoZSB2ZXJzaW9uIHlvdSBoYXZlIHRvIHB1dCBpbnRvIHRo
ZSB2ZXJzaW9uIGZpZWxkCiAgKiBpbiB0aGUgQGEgRXdrX1ZpZXdfU21hcnRfQ2xhc3Mgc3RydWN0
dXJlLgogICovCi0jZGVmaW5lIEVXS19WSUVXX1NNQVJUX0NMQVNTX1ZFUlNJT04gMVVMCisjZGVm
aW5lIEVXS19WSUVXX1NNQVJUX0NMQVNTX1ZFUlNJT04gMlVMCiAKIC8qKgogICogSW5pdGlhbGl6
ZXIgZm9yIHdob2xlIEV3a19WaWV3X1NtYXJ0X0NsYXNzIHN0cnVjdHVyZS4KQEAgLTEyMCw3ICsx
MzQsNyBAQCBzdHJ1Y3QgX0V3a19WaWV3X1NtYXJ0X0NsYXNzIHsKICAqIEBzZWUgRVdLX1ZJRVdf
U01BUlRfQ0xBU1NfSU5JVF9WRVJTSU9OCiAgKiBAc2VlIEVXS19WSUVXX1NNQVJUX0NMQVNTX0lO
SVRfTkFNRV9WRVJTSU9OCiAgKi8KLSNkZWZpbmUgRVdLX1ZJRVdfU01BUlRfQ0xBU1NfSU5JVChz
bWFydF9jbGFzc19pbml0KSB7c21hcnRfY2xhc3NfaW5pdCwgRVdLX1ZJRVdfU01BUlRfQ0xBU1Nf
VkVSU0lPTiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMH0KKyNkZWZpbmUgRVdLX1ZJRVdfU01BUlRf
Q0xBU1NfSU5JVChzbWFydF9jbGFzc19pbml0KSB7c21hcnRfY2xhc3NfaW5pdCwgRVdLX1ZJRVdf
U01BUlRfQ0xBU1NfVkVSU0lPTiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMH0KIAogLyoq
CiAgKiBJbml0aWFsaXplciB0byB6ZXJvIGEgd2hvbGUgRXdrX1ZpZXdfU21hcnRfQ2xhc3Mgc3Ry
dWN0dXJlLgpAQCAtNTkwLDYgKzYwNCwxNiBAQCBFQVBJIEVpbmFfQm9vbCBld2tfdmlld190ZXh0
X2ZpbmQoRXZhc19PYmplY3QgKm8sIGNvbnN0IGNoYXIgKnRleHQsIEV3a19GaW5kX09wdAogKi8K
IEVBUEkgRWluYV9Cb29sIGV3a192aWV3X3RleHRfZmluZF9oaWdobGlnaHRfY2xlYXIoRXZhc19P
YmplY3QgKm8pOwogCisvKioKKyAqIFNldHMgdGhlIGNvbG9yIHZhbHVlIG9mIGNvbG9yIGNob29z
ZXIKKyAqCisgKiBAcGFyYW0gbyB2aWV3IG9iamVjdCBjb250YWlucyBjb2xvciBjaG9vc2VyCisg
KiBAcGFyYW0gY29sb3IgI1JHQiwgI1JSR0dCQiBvciBuYW1lZCBjb2xvciBzdHJpbmcgdG8gYmUg
c2V0CisgKgorICogQHJldHVybiBAYyBFSU5BX1RSVUUgb24gc3VjY2VzcyBAYyBFSU5BX0ZBTFNF
IG90aGVyd2lzZQorICovCitFQVBJIEVpbmFfQm9vbCBld2tfdmlld19jb2xvcl9waWNrZXJfY29s
b3Jfc2V0KEV2YXNfT2JqZWN0ICpvLCBjb25zdCBjaGFyICpjb2xvcik7CisKICNpZmRlZiBfX2Nw
bHVzcGx1cwogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2VmbC9ld2tfdmlld19wcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2VmbC9ld2tfdmlld19wcml2YXRlLmgKaW5kZXggZjQwMjk4NS4uNmY5NTQ4ZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXdfcHJpdmF0ZS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3X3ByaXZhdGUuaApA
QCAtMjIsOSArMjIsMTQgQEAKICNkZWZpbmUgZXdrX3ZpZXdfcHJpdmF0ZV9oCiAKICNpbmNsdWRl
ICJXZWJQYWdlUHJveHkuaCIKKyNpbmNsdWRlICJld2tfdmlldy5oIgogI2luY2x1ZGUgPEV2YXMu
aD4KICNpbmNsdWRlIDxXZWJLaXQyL1dLQmFzZS5oPgogCisjaWYgRU5BQkxFKElOUFVUX1RZUEVf
Q09MT1IpCisjaW5jbHVkZSAiV2ViQ29sb3JDaG9vc2VyUHJveHlFZmwuaCIKKyNlbmRpZgorCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBDdXJzb3I7CiBjbGFzcyBJbnRSZWN0OwpAQCAtODks
NCArOTQsMTIgQEAgYm9vbCBld2tfdmlld19hY2NlbGVyYXRlZF9jb21wb3NpdGluZ19tb2RlX2Vu
dGVyKGNvbnN0IEV2YXNfT2JqZWN0KiBld2tWaWV3KTsKIGJvb2wgZXdrX3ZpZXdfYWNjZWxlcmF0
ZWRfY29tcG9zaXRpbmdfbW9kZV9leGl0KGNvbnN0IEV2YXNfT2JqZWN0KiBld2tWaWV3KTsKICNl
bmRpZgogCit2b2lkIGV3a192aWV3X2lucHV0X3BpY2tlcl9zaG93X3JlcXVlc3QoRXZhc19PYmpl
Y3QqIGV3a1ZpZXcsIEV3a19JbnB1dF9UeXBlIGlucHV0VHlwZSwgY29uc3QgU3RyaW5nJiBpbnB1
dFZhbHVlKTsKK3ZvaWQgZXdrX3ZpZXdfaW5wdXRfcGlja2VyX2hpZGVfcmVxdWVzdChFdmFzX09i
amVjdCogZXdrVmlldywgRXdrX0lucHV0X1R5cGUgaW5wdXRUeXBlKTsKKworI2lmIEVOQUJMRShJ
TlBVVF9UWVBFX0NPTE9SKQordm9pZCBld2tfdmlld19jb2xvcl9waWNrZXJfc2hvd19yZXF1ZXN0
KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBXZWJLaXQ6OldlYkNvbG9yQ2hvb3NlclByb3h5RWZsKiBj
b2xvckNob29zZXIsIGNvbnN0IFN0cmluZyYgaW5wdXRWYWx1ZSk7Cit2b2lkIGV3a192aWV3X2Nv
bG9yX3BpY2tlcl9oaWRlX3JlcXVlc3QoRXZhc19PYmplY3QqIGV3a1ZpZXcpOworI2VuZGlmCisK
ICNlbmRpZiAvLyBld2tfdmlld19wcml2YXRlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL1VuaXRUZXN0VXRpbHMvRVdLMlVuaXRUZXN0QmFzZS5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy9Vbml0VGVzdFV0aWxz
L0VXSzJVbml0VGVzdEJhc2UuY3BwCmluZGV4IDM5YmM1YTQuLmM3ZmRhYmEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL1VuaXRUZXN0VXRpbHMvRVdL
MlVuaXRUZXN0QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwv
dGVzdHMvVW5pdFRlc3RVdGlscy9FV0syVW5pdFRlc3RCYXNlLmNwcApAQCAtMjEsNyArMjEsNiBA
QAogI2luY2x1ZGUgIkVXSzJVbml0VGVzdEJhc2UuaCIKIAogI2luY2x1ZGUgIkVXSzJVbml0VGVz
dEVudmlyb25tZW50LmgiCi0jaW5jbHVkZSA8RVdlYktpdDIuaD4KICNpbmNsdWRlIDxFY29yZS5o
PgogI2luY2x1ZGUgPGdsaWItb2JqZWN0Lmg+CiAjaW5jbHVkZSA8d3RmL1VudXNlZFBhcmFtLmg+
CkBAIC00Miw3ICs0MSw5IEBAIHN0YXRpYyB2b2lkIG9uTG9hZEZpbmlzaGVkKHZvaWQqIHVzZXJE
YXRhLCBFdmFzX09iamVjdCogd2ViVmlldywgdm9pZCogZXZlbnRJbmZvCiBFV0syVW5pdFRlc3RC
YXNlOjpFV0syVW5pdFRlc3RCYXNlKCkKICAgICA6IG1fZWNvcmVFdmFzKDApCiAgICAgLCBtX3dl
YlZpZXcoMCkKKyAgICAsIG1fZXdrVmlld0NsYXNzKEVXS19WSUVXX1NNQVJUX0NMQVNTX0lOSVRf
TkFNRV9WRVJTSU9OKCJCcm93c2VyX1ZpZXciKSkKIHsKKyAgICBld2tfdmlld19zbWFydF9jbGFz
c19zZXQoJm1fZXdrVmlld0NsYXNzKTsKIH0KIAogdm9pZCBFV0syVW5pdFRlc3RCYXNlOjpTZXRV
cCgpCkBAIC02MCw3ICs2MSw4IEBAIHZvaWQgRVdLMlVuaXRUZXN0QmFzZTo6U2V0VXAoKQogICAg
IGVjb3JlX2V2YXNfc2hvdyhtX2Vjb3JlRXZhcyk7CiAgICAgRXZhcyogZXZhcyA9IGVjb3JlX2V2
YXNfZ2V0KG1fZWNvcmVFdmFzKTsKIAotICAgIG1fd2ViVmlldyA9IGV3a192aWV3X2FkZChldmFz
KTsKKyAgICBFdmFzX1NtYXJ0KiBzbWFydCA9IGV2YXNfc21hcnRfY2xhc3NfbmV3KCZtX2V3a1Zp
ZXdDbGFzcy5zYyk7CisgICAgbV93ZWJWaWV3ID0gZXdrX3ZpZXdfc21hcnRfYWRkKGV2YXMsIHNt
YXJ0LCBld2tfY29udGV4dF9kZWZhdWx0X2dldCgpKTsKICAgICBld2tfdmlld190aGVtZV9zZXQo
bV93ZWJWaWV3LCBlbnZpcm9ubWVudC0+ZGVmYXVsdFRoZW1lKCkpOwogCiAgICAgZXZhc19vYmpl
Y3RfcmVzaXplKG1fd2ViVmlldywgd2lkdGgsIGhlaWdodCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy9Vbml0VGVzdFV0aWxzL0VXSzJVbml0VGVz
dEJhc2UuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL1VuaXRUZXN0
VXRpbHMvRVdLMlVuaXRUZXN0QmFzZS5oCmluZGV4IDI5ZDU1YmUuLjM2OGU4MWMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL1VuaXRUZXN0VXRpbHMv
RVdLMlVuaXRUZXN0QmFzZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZs
L3Rlc3RzL1VuaXRUZXN0VXRpbHMvRVdLMlVuaXRUZXN0QmFzZS5oCkBAIC0yMCw2ICsyMCw3IEBA
CiAjaWZuZGVmIEVXSzJVbml0VGVzdEJhc2VfaAogI2RlZmluZSBFV0syVW5pdFRlc3RCYXNlX2gK
IAorI2luY2x1ZGUgPEVXZWJLaXQyLmg+CiAjaW5jbHVkZSA8RWNvcmVfRXZhcy5oPgogI2luY2x1
ZGUgPEV2YXMuaD4KICNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgpAQCAtMjksNiArMzAsNyBAQCBu
YW1lc3BhY2UgRVdLMlVuaXRUZXN0IHsKIGNsYXNzIEVXSzJVbml0VGVzdEJhc2UgOiBwdWJsaWMg
Ojp0ZXN0aW5nOjpUZXN0IHsKIHB1YmxpYzoKICAgICBFdmFzX09iamVjdCogd2ViVmlldygpIHsg
cmV0dXJuIG1fd2ViVmlldzsgfQorICAgIEV3a19WaWV3X1NtYXJ0X0NsYXNzKiBld2tWaWV3Q2xh
c3MoKSB7IHJldHVybiAmbV9ld2tWaWV3Q2xhc3M7IH0KIAogcHJvdGVjdGVkOgogICAgIEVXSzJV
bml0VGVzdEJhc2UoKTsKQEAgLTQzLDYgKzQ1LDggQEAgcHJvdGVjdGVkOgogcHJpdmF0ZToKICAg
ICBFdmFzX09iamVjdCogbV93ZWJWaWV3OwogICAgIEVjb3JlX0V2YXMqIG1fZWNvcmVFdmFzOwor
CisgICAgRXdrX1ZpZXdfU21hcnRfQ2xhc3MgbV9ld2tWaWV3Q2xhc3M7CiB9OwogCiB9IC8vIG5h
bWVzcGFjZSBFV0syVW5pdFRlc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZWZsL3Rlc3RzL3Rlc3RfZXdrMl92aWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZWZsL3Rlc3RzL3Rlc3RfZXdrMl92aWV3LmNwcAppbmRleCA1ZWRiMDQzLi5mNDY1
Y2YxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy90
ZXN0X2V3azJfdmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwv
dGVzdHMvdGVzdF9ld2syX3ZpZXcuY3BwCkBAIC0xODgsMyArMTg4LDg1IEBAIFRFU1RfRihFV0sy
VW5pdFRlc3RCYXNlLCBld2tfdmlld19mb3JtX3N1Ym1pc3Npb25fcmVxdWVzdCkKICAgICBBU1NF
UlRfVFJVRShoYW5kbGVkKTsKICAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19kZWwod2Vi
VmlldygpLCAiZm9ybSxzdWJtaXNzaW9uLHJlcXVlc3QiLCBvbkZvcm1BYm91dFRvQmVTdWJtaXR0
ZWQpOwogfQorCisjaWYgRU5BQkxFKElOUFVUX1RZUEVfQ09MT1IpCitzdGF0aWMgY29uc3QgY2hh
ciBpbml0aWFsQ29sb3JbXSA9ICIjZmYwMDAwIjsKK3N0YXRpYyBjb25zdCBjaGFyIGNoYW5nZWRD
b2xvcltdID0gIiMwMDAwZmYiOworCitzdGF0aWMgYm9vbCBpc0NvbG9yUGlja2VyU2hvd24gPSBm
YWxzZTsKKworc3RhdGljIHZvaWQgY29sb3JQaWNrZXJEb25lQ2FsbGJhY2sodm9pZCogdXNlckRh
dGEsIEV2YXNfT2JqZWN0Kiwgdm9pZCopCit7CisgICAgYm9vbCogaGFuZGxlZCA9IHN0YXRpY19j
YXN0PGJvb2wqPih1c2VyRGF0YSk7CisKKyAgICAqaGFuZGxlZCA9IHRydWU7Cit9CisKK3N0YXRp
YyB1bnNpZ25lZCBjaGFyIGNvbG9yUGlja2VyQ29sb3JTZWxlY3RlZCh2b2lkKiBkYXRhKQorewor
ICAgIEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNtYXJ0RGF0YSA9IHN0YXRpY19jYXN0PEV3a19WaWV3
X1NtYXJ0X0RhdGEqPihkYXRhKTsKKworICAgIC8vIDQuIENoYW5nZSBjb2xvciB0byBjaGFuZ2Vk
Q29sb3IuCisgICAgRVhQRUNUX1RSVUUoZXdrX3ZpZXdfY29sb3JfcGlja2VyX2NvbG9yX3NldChz
bWFydERhdGEtPnNlbGYsIGNoYW5nZWRDb2xvcikpOworCisgICAgZXZhc19vYmplY3Rfc21hcnRf
Y2FsbGJhY2tfY2FsbChzbWFydERhdGEtPnNlbGYsICJpbnB1dCx0eXBlLGNvbG9yLHJlcXVlc3Qi
LCAwKTsKKworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgRWluYV9Cb29sIHNob3dDb2xvclBp
Y2tlcihFd2tfVmlld19TbWFydF9EYXRhKiBzbWFydERhdGEsIEV3a19JbnB1dF9UeXBlIGlucHV0
VHlwZSwgY29uc3QgY2hhciogaW5wdXRWYWx1ZSkKK3sKKyAgICBzdGF0aWMgYm9vbCBpc0ZpcnN0
UnVuID0gdHJ1ZTsKKworICAgIGlzQ29sb3JQaWNrZXJTaG93biA9IHRydWU7CisKKyAgICBpZiAo
aXNGaXJzdFJ1bikgeworICAgICAgICAvLyAxLiBDaGVjayB0eXBlIG9mIGlucHV0LgorICAgICAg
ICBFWFBFQ1RfRVEoaW5wdXRUeXBlLCBFV0tfSU5QVVRfVFlQRV9DT0xPUik7CisgICAgICAgIC8v
IDIuIENoZWNrIGluaXRpYWwgdmFsdWUgZnJvbSBodG1sIGZpbGUuCisgICAgICAgIEVYUEVDVF9T
VFJFUShpbnB1dFZhbHVlLCBpbml0aWFsQ29sb3IpOworCisgICAgICAgIGlzRmlyc3RSdW4gPSBm
YWxzZTsKKyAgICB9IGVsc2UKKyAgICAgICAgLy8gNS4gaW5wdXRWYWx1ZSBzaG91bGQgYmUgY2hh
bmdlZENvbG9yLgorICAgICAgICBFWFBFQ1RfU1RSRVEoaW5wdXRWYWx1ZSwgY2hhbmdlZENvbG9y
KTsKKworICAgIC8vIDMuIFJldHVybiBhZnRlciBtYWtpbmcgYSBjb2xvciBwaWNrZXIuCisgICAg
ZWNvcmVfdGltZXJfYWRkKDAuMCwgY29sb3JQaWNrZXJDb2xvclNlbGVjdGVkLCBzbWFydERhdGEp
OworICAgIHJldHVybiB0cnVlOworfQorCitzdGF0aWMgRWluYV9Cb29sIGhpZGVDb2xvclBpY2tl
cihFd2tfVmlld19TbWFydF9EYXRhKiBzbWFydERhdGEsIEV3a19JbnB1dF9UeXBlIGlucHV0VHlw
ZSkKK3sKKyAgICBFWFBFQ1RfRVEoaW5wdXRUeXBlLCBFV0tfSU5QVVRfVFlQRV9DT0xPUik7CisK
KyAgICAvLyBUZXN0IGNvbG9yIHBpY2tlciBpcyBzaG93bi4KKyAgICBFWFBFQ1RfVFJVRShpc0Nv
bG9yUGlja2VyU2hvd24pOworICAgIGlzQ29sb3JQaWNrZXJTaG93biA9IGZhbHNlOworfQorCitU
RVNUX0YoRVdLMlVuaXRUZXN0QmFzZSwgZXdrX3ZpZXdfY29sb3JfcGlja2VyX2NvbG9yX3NldCkK
K3sKKyAgICBFd2tfVmlld19TbWFydF9DbGFzcyogYXBpID0gZXdrVmlld0NsYXNzKCk7CisgICAg
YXBpLT5pbnB1dF9waWNrZXJfc2hvdyA9IHNob3dDb2xvclBpY2tlcjsKKyAgICBhcGktPmlucHV0
X3BpY2tlcl9oaWRlID0gaGlkZUNvbG9yUGlja2VyOworCisgICAgbG9hZFVybFN5bmMoImRhdGE6
dGV4dC9odG1sLDxpbnB1dCB0eXBlPSdjb2xvcicgdmFsdWU9JyNmZjAwMDAnPiIpOworCisgICAg
Ly8gQ2xpY2sgaW5wdXQgZWxlbWVudC4KKyAgICBtb3VzZUNsaWNrKDMwLCAyMCk7CisKKyAgICBi
b29sIGhhbmRsZWQgPSBmYWxzZTsKKyAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19hZGQo
d2ViVmlldygpLCAiaW5wdXQsdHlwZSxjb2xvcixyZXF1ZXN0IiwgY29sb3JQaWNrZXJEb25lQ2Fs
bGJhY2ssICZoYW5kbGVkKTsKKyAgICB3aGlsZSAoIWhhbmRsZWQpCisgICAgICAgIGVjb3JlX21h
aW5fbG9vcF9pdGVyYXRlKCk7CisKKyAgICAvLyBDbGljayBpbnB1dCBlbGVtZW50IGFnYWluLgor
ICAgIG1vdXNlQ2xpY2soMzAsIDIwKTsKKworICAgIGhhbmRsZWQgPSBmYWxzZTsKKyAgICB3aGls
ZSAoIWhhbmRsZWQpCisgICAgICAgIGVjb3JlX21haW5fbG9vcF9pdGVyYXRlKCk7CisgICAgZXZh
c19vYmplY3Rfc21hcnRfY2FsbGJhY2tfZGVsKHdlYlZpZXcoKSwgImlucHV0LHR5cGUsY29sb3Is
cmVxdWVzdCIsIGNvbG9yUGlja2VyRG9uZUNhbGxiYWNrKTsKK30KKyNlbmRpZiAvLyBFTkFCTEUo
SU5QVVRfVFlQRV9DT0xPUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9l
ZmwvV2ViQ29sb3JDaG9vc2VyUHJveHlFZmwuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L2VmbC9XZWJDb2xvckNob29zZXJQcm94eUVmbC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMC4uOTA0MDVmYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9lZmwvV2ViQ29sb3JDaG9vc2VyUHJveHlFZmwuY3BwCkBAIC0wLDAgKzEsNjUgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgU2Ftc3VuZyBFbGVjdHJvbmljcy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJD
b2xvckNob29zZXJQcm94eUVmbC5oIgorCisjaWYgRU5BQkxFKElOUFVUX1RZUEVfQ09MT1IpCisK
KyNpbmNsdWRlICJld2tfdmlld19wcml2YXRlLmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitX
ZWJDb2xvckNob29zZXJQcm94eUVmbDo6V2ViQ29sb3JDaG9vc2VyUHJveHlFZmwoRXZhc19PYmpl
Y3QqIHdlYlZpZXcsIFdlYkNvbG9yQ2hvb3NlclByb3h5OjpDbGllbnQqIGNsaWVudCwgY29uc3Qg
V2ViQ29yZTo6Q29sb3ImIGNvbG9yKQorICAgIDogV2ViQ29sb3JDaG9vc2VyUHJveHkoY2xpZW50
KQorICAgICwgbV93ZWJWaWV3KHdlYlZpZXcpCit7CisgICAgZXdrX3ZpZXdfY29sb3JfcGlja2Vy
X3Nob3dfcmVxdWVzdChtX3dlYlZpZXcsIHRoaXMsIGNvbG9yLnNlcmlhbGl6ZWQoKSk7Cit9CisK
K1dlYkNvbG9yQ2hvb3NlclByb3h5RWZsOjp+V2ViQ29sb3JDaG9vc2VyUHJveHlFZmwoKQorewor
ICAgIGV3a192aWV3X2NvbG9yX3BpY2tlcl9oaWRlX3JlcXVlc3QobV93ZWJWaWV3KTsKK30KKwor
dm9pZCBXZWJDb2xvckNob29zZXJQcm94eUVmbDo6ZW5kQ2hvb3NlcigpCit7CisgICAgaWYgKCFt
X2NsaWVudCkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9jbGllbnQtPmRpZEVuZENvbG9yQ2hv
b3NlcigpOworfQorCit2b2lkIFdlYkNvbG9yQ2hvb3NlclByb3h5RWZsOjpzZXRTZWxlY3RlZENv
bG9yKGNvbnN0IFdlYkNvcmU6OkNvbG9yJiBjb2xvcikKK3sKKyAgICBpZiAoIW1fY2xpZW50KQor
ICAgICAgICByZXR1cm47CisKKyAgICBtX2NsaWVudC0+ZGlkQ2hvb3NlQ29sb3IoY29sb3IpOwor
fQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShJTlBVVF9UWVBF
X0NPTE9SKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJDb2xv
ckNob29zZXJQcm94eUVmbC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJDb2xv
ckNob29zZXJQcm94eUVmbC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU3
MDY0YTQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dl
YkNvbG9yQ2hvb3NlclByb3h5RWZsLmgKQEAgLTAsMCArMSw2MSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2lmbmRlZiBXZWJDb2xvckNob29zZXJQcm94eUVmbF9oCisjZGVmaW5lIFdlYkNvbG9y
Q2hvb3NlclByb3h5RWZsX2gKKworI2lmIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9SKQorCisjaW5j
bHVkZSAiQ29sb3IuaCIKKyNpbmNsdWRlICJXZWJDb2xvckNob29zZXJQcm94eS5oIgorCit0eXBl
ZGVmIHN0cnVjdCBfRXZhc19PYmplY3QgRXZhc19PYmplY3Q7CisKK25hbWVzcGFjZSBXZWJLaXQg
eworCitjbGFzcyBXZWJQYWdlUHJveHk7CisKK2NsYXNzIFdlYkNvbG9yQ2hvb3NlclByb3h5RWZs
IDogcHVibGljIFdlYkNvbG9yQ2hvb3NlclByb3h5IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFz
c1JlZlB0cjxXZWJDb2xvckNob29zZXJQcm94eUVmbD4gY3JlYXRlKEV2YXNfT2JqZWN0KiB3ZWJW
aWV3LCBXZWJDb2xvckNob29zZXJQcm94eTo6Q2xpZW50KiBjbGllbnQsIGNvbnN0IFdlYkNvcmU6
OkNvbG9yJiBjb2xvcikKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2ViQ29s
b3JDaG9vc2VyUHJveHlFZmwod2ViVmlldywgY2xpZW50LCBjb2xvcikpOworICAgIH0KKyAgICB+
V2ViQ29sb3JDaG9vc2VyUHJveHlFZmwoKTsKKworICAgIHZvaWQgZW5kQ2hvb3NlcigpOworICAg
IHZvaWQgc2V0U2VsZWN0ZWRDb2xvcihjb25zdCBXZWJDb3JlOjpDb2xvciYpOworCitwcml2YXRl
OgorICAgIFdlYkNvbG9yQ2hvb3NlclByb3h5RWZsKEV2YXNfT2JqZWN0KiwgV2ViQ29sb3JDaG9v
c2VyUHJveHk6OkNsaWVudCosIGNvbnN0IFdlYkNvcmU6OkNvbG9yJik7CisKKyAgICBFdmFzX09i
amVjdCogbV93ZWJWaWV3OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAv
LyBFTkFCTEUoSU5QVVRfVFlQRV9DT0xPUikKKworI2VuZGlmIC8vIFdlYkNvbG9yQ2hvb3NlclBy
b3h5RWZsX2gK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>161452</attachid>
            <date>2012-08-30 05:41:44 -0700</date>
            <delta_ts>2012-09-14 00:38:25 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>diff</filename>
            <type>text/plain</type>
            <size>26236</size>
            <attacher name="KwangYong Choi">ky0.choi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCA2MjBhN2JlLi5lZmRlNWUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjgg
QEAKKzIwMTItMDgtMzAgIEt3YW5nWW9uZyBDaG9pICA8a3kwLmNob2lAc2Ftc3VuZy5jb20+CisK
KyAgICAgICAgW0VGTF1bV0syXSBJbXBsZW1lbnRlZCBjb2xvciBjaG9vc2VyIHByb3h5IGFuZCBj
b2xvciBwaWNrZXIgQVBJCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD05MTgzMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEltcGxlbWVudGVkIGNvbG9yIGNob29zZXIgcHJveHkgYW5kIGlucHV0IHBpY2tlciBp
bnRlcmZhY2UgZm9yIEVGTC4KKyAgICAgICAgSW5wdXQgcGlja2VyIGludGVyZmFjZSBjYW4gYmUg
dXNlZCBmb3IgZ2VuZXJhbCB1c2Ugb2YgYWxsIHRoZSBpbnB1dAorICAgICAgICB0eXBlcyBpbmNs
dWRpbmcgY29sb3IgaW5wdXQgdHlwZS4KKworICAgICAgICBUaGUgZXh0ZXJuYWwgYXBwbGljYXRp
b24gc2hvdWxkIGltcGxlbWVudCBpbnB1dCBwaWNrZXIgYnkgb3ZlcnJpZGluZworICAgICAgICBz
bWFydCBjbGFzcyBmdW5jdGlvbi4KKworICAgICAgICBJbiBhZGRpdGlvbiwgY29sb3IgcGlja2Vy
IFdLMiBDIEFQSSBpcyBpbXBsZW1lbnRlZC4gVGhlcmUgYXJlIHR3byBVSQorICAgICAgICBjbGll
bnQgY2FsbGJhY2tzIGFuZCBhIHNldHRpbmcgQVBJLgorCisgICAgICAgICogUGxhdGZvcm1FZmwu
Y21ha2U6CisgICAgICAgICogU2hhcmVkL0FQSUNsaWVudFRyYWl0cy5jcHA6CisgICAgICAgIChX
ZWJLaXQpOgorICAgICAgICAqIFNoYXJlZC9BUElDbGllbnRUcmFpdHMuaDoKKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcDoKKyAgICAgICAgKFdLUGFnZVNldENvbG9yUGlja2Vy
Q29sb3IpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuaDoKKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL2VmbC9QYWdlQ2xpZW50SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBh
Z2VDbGllbnRJbXBsOjpjcmVhdGVDb2xvckNob29zZXJQcm94eSk6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9lZmwvZXdrX3ZpZXcuY3BwOgorICAgICAgICAoZXdrX3ZpZXdfaW5wdXRfcGlja2Vy
X3Nob3dfcmVxdWVzdCk6CisgICAgICAgIChld2tfdmlld19pbnB1dF9waWNrZXJfaGlkZV9yZXF1
ZXN0KToKKyAgICAgICAgKGV3a192aWV3X2NvbG9yX3BpY2tlcl9jb2xvcl9zZXQpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9lZmwvZXdrX3ZpZXdfcHJpdmF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL2V3
a192aWV3X3VpX2NsaWVudC5jcHA6CisgICAgICAgIChzaG93Q29sb3JQaWNrZXIpOgorICAgICAg
ICAoaGlkZUNvbG9yUGlja2VyKToKKyAgICAgICAgKGV3a192aWV3X3VpX2NsaWVudF9hdHRhY2gp
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL3Rlc3RfZXdrMl92aWV3LmNwcDog
QWRkZWQgYSB0ZXN0IGZvciBjb2xvciBwaWNrZXIgQVBJLgorICAgICAgICAoY29sb3JQaWNrZXJE
b25lQ2FsbGJhY2spOgorICAgICAgICAoY29sb3JQaWNrZXJDb2xvclNlbGVjdGVkKToKKyAgICAg
ICAgKHNob3dDb2xvclBpY2tlcik6CisgICAgICAgIChoaWRlQ29sb3JQaWNrZXIpOgorICAgICAg
ICAoVEVTVF9GKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzaG93Q29sb3JDaG9vc2VyKToKKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZVByb3h5OjpkaWRFbmRDb2xvckNob29zZXIpOgorICAgICAgICAoV2ViS2l0
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgIChXZWJQYWdl
UHJveHkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJVSUNsaWVudC5jcHA6CisgICAgICAgIChX
ZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJVSUNsaWVudDo6c2hvd0NvbG9yUGlja2VyKToK
KyAgICAgICAgKFdlYktpdDo6V2ViVUlDbGllbnQ6OmhpZGVDb2xvclBpY2tlcik6CisgICAgICAg
ICogVUlQcm9jZXNzL1dlYlVJQ2xpZW50Lmg6CisgICAgICAgIChXZWJVSUNsaWVudCk6CisgICAg
ICAgICogVUlQcm9jZXNzL2VmbC9XZWJDb2xvckNob29zZXJQcm94eUVmbC5jcHA6IEFkZGVkLgor
ICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29sb3JDaG9vc2VyUHJveHlF
Zmw6OldlYkNvbG9yQ2hvb3NlclByb3h5RWZsKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29sb3JD
aG9vc2VyUHJveHlFZmw6On5XZWJDb2xvckNob29zZXJQcm94eUVmbCk6CisgICAgICAgIChXZWJL
aXQ6OldlYkNvbG9yQ2hvb3NlclByb3h5RWZsOjplbmRDaG9vc2VyKToKKyAgICAgICAgKFdlYktp
dDo6V2ViQ29sb3JDaG9vc2VyUHJveHlFZmw6OnNldFNlbGVjdGVkQ29sb3IpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9lZmwvV2ViQ29sb3JDaG9vc2VyUHJveHlFZmwuaDogQWRkZWQuCisgICAgICAg
IChXZWJLaXQpOgorICAgICAgICAoV2ViQ29sb3JDaG9vc2VyUHJveHlFZmwpOgorICAgICAgICAo
V2ViS2l0OjpXZWJDb2xvckNob29zZXJQcm94eUVmbDo6Y3JlYXRlKToKKwogMjAxMi0wOC0yOSAg
S2FuZ2lsIEhhbiAgPGthbmdpbC5oYW5Ac2Ftc3VuZy5jb20+CiAKICAgICAgICAgW0VGTF1bV0sy
XSBSZXBsYWNlIFBhZ2VDbGllbnRJbXBsIHdpdGggZXdrIHZpZXcgaW4gY29uc3RydWN0b3Igb2Yg
RWZsVmlld3BvcnRIYW5kbGVyLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm1F
ZmwuY21ha2UgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQppbmRleCAzYTA1MDVj
Li43ODhiNWI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQpAQCAtNzIsNiArNzIsNyBAQCBM
SVNUKEFQUEVORCBXZWJLaXQyX1NPVVJDRVMKICAgICBVSVByb2Nlc3MvY2Fpcm8vQmFja2luZ1N0
b3JlQ2Fpcm8uY3BwCiAKICAgICBVSVByb2Nlc3MvZWZsL1RleHRDaGVja2VyRWZsLmNwcAorICAg
IFVJUHJvY2Vzcy9lZmwvV2ViQ29sb3JDaG9vc2VyUHJveHlFZmwuY3BwCiAgICAgVUlQcm9jZXNz
L2VmbC9XZWJDb250ZXh0RWZsLmNwcAogICAgIFVJUHJvY2Vzcy9lZmwvV2ViRnVsbFNjcmVlbk1h
bmFnZXJQcm94eUVmbC5jcHAKICAgICBVSVByb2Nlc3MvZWZsL1dlYkluc3BlY3RvclByb3h5RWZs
LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSUNsaWVudFRyYWl0cy5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJQ2xpZW50VHJhaXRzLmNwcAppbmRleCBhZDNk
MjIwLi5iYTM2NGFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJQ2xpZW50
VHJhaXRzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJQ2xpZW50VHJhaXRzLmNw
cApAQCAtNjUsNiArNjUsNyBAQCBjb25zdCBzaXplX3QgQVBJQ2xpZW50VHJhaXRzPFdLUGFnZUxv
YWRlckNsaWVudD46OmludGVyZmFjZVNpemVzQnlWZXJzaW9uW10gPSB7CiAKIGNvbnN0IHNpemVf
dCBBUElDbGllbnRUcmFpdHM8V0tQYWdlVUlDbGllbnQ+OjppbnRlcmZhY2VTaXplc0J5VmVyc2lv
bltdID0gewogICAgIG9mZnNldG9mKFdLUGFnZVVJQ2xpZW50LCBjcmVhdGVOZXdQYWdlKSwKKyAg
ICBvZmZzZXRvZihXS1BhZ2VVSUNsaWVudCwgc2hvd0NvbG9yUGlja2VyKSwKICAgICBzaXplb2Yo
V0tQYWdlVUlDbGllbnQpCiB9OwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hh
cmVkL0FQSUNsaWVudFRyYWl0cy5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSUNsaWVudFRy
YWl0cy5oCmluZGV4IDczNTJiNTYuLjM4OTYyMGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9BUElDbGllbnRUcmFpdHMuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJ
Q2xpZW50VHJhaXRzLmgKQEAgLTYzLDcgKzYzLDcgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgQVBJQ2xp
ZW50VHJhaXRzPFdLUGFnZUxvYWRlckNsaWVudD4gewogfTsKIAogdGVtcGxhdGU8PiBzdHJ1Y3Qg
QVBJQ2xpZW50VHJhaXRzPFdLUGFnZVVJQ2xpZW50PiB7Ci0gICAgc3RhdGljIGNvbnN0IHNpemVf
dCBpbnRlcmZhY2VTaXplc0J5VmVyc2lvblsyXTsKKyAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IGlu
dGVyZmFjZVNpemVzQnlWZXJzaW9uWzNdOwogfTsKIAogdGVtcGxhdGU8PiBzdHJ1Y3QgQVBJQ2xp
ZW50VHJhaXRzPFdLQnVuZGxlUGFnZUZvcm1DbGllbnQ+IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9DL1dLUGFnZS5jcHAKaW5kZXggNDM3MTc5Yi4uMzJkNDg4YyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAKQEAgLTcxOCwzICs3MTgsMTAgQEAgdm9p
ZCBXS1BhZ2VQb3N0TWVzc2FnZVRvSW5qZWN0ZWRCdW5kbGUoV0tQYWdlUmVmIHBhZ2VSZWYsIFdL
U3RyaW5nUmVmIG1lc3NhZ2VOYW0KICAgICB0b0ltcGwocGFnZVJlZiktPnBvc3RNZXNzYWdlVG9J
bmplY3RlZEJ1bmRsZSh0b0ltcGwobWVzc2FnZU5hbWVSZWYpLT5zdHJpbmcoKSwgdG9JbXBsKG1l
c3NhZ2VCb2R5UmVmKSk7CiB9CiAKK3ZvaWQgV0tQYWdlU2V0Q29sb3JQaWNrZXJDb2xvcihXS1Bh
Z2VSZWYgcGFnZVJlZiwgV0tTdHJpbmdSZWYgc2VsZWN0ZWRDb2xvcikKK3sKKyNpZiBFTkFCTEUo
SU5QVVRfVFlQRV9DT0xPUikKKyAgICB0b0ltcGwocGFnZVJlZiktPnNldENvbG9yQ2hvb3NlckNv
bG9yKENvbG9yKHRvV1RGU3RyaW5nKHNlbGVjdGVkQ29sb3IpKSk7CisgICAgdG9JbXBsKHBhZ2VS
ZWYpLT5lbmRDb2xvckNob29zZXIoKTsKKyNlbmRpZgorfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9DL1dLUGFnZS5oCmluZGV4IGY3OTQ2MDguLjEyNWQ3YTIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL0MvV0tQYWdlLmgKQEAgLTIyNSw2ICsyMjUsOCBAQCB0eXBlZGVmIHZvaWQg
KCpXS1BhZ2VTYXZlRGF0YVRvRmlsZUluRG93bmxvYWRzRm9sZGVyQ2FsbGJhY2spKFdLUGFnZVJl
ZiBwYWdlLCBXSwogdHlwZWRlZiBib29sICgqV0tQYWdlU2hvdWxkSW50ZXJydXB0SmF2YVNjcmlw
dENhbGxiYWNrKShXS1BhZ2VSZWYgcGFnZSwgY29uc3Qgdm9pZCAqY2xpZW50SW5mbyk7CiB0eXBl
ZGVmIHZvaWQgKCpXS1BhZ2VEZWNpZGVQb2xpY3lGb3JOb3RpZmljYXRpb25QZXJtaXNzaW9uUmVx
dWVzdENhbGxiYWNrKShXS1BhZ2VSZWYgcGFnZSwgV0tTZWN1cml0eU9yaWdpblJlZiBvcmlnaW4s
IFdLTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3RSZWYgcGVybWlzc2lvblJlcXVlc3QsIGNv
bnN0IHZvaWQgKmNsaWVudEluZm8pOwogdHlwZWRlZiB2b2lkICgqV0tQYWdlVW5hdmFpbGFibGVQ
bHVnaW5CdXR0b25DbGlja2VkQ2FsbGJhY2spKFdLUGFnZVJlZiBwYWdlLCBXS1BsdWdpblVuYXZh
aWxhYmlsaXR5UmVhc29uIHBsdWdpblVuYXZhaWxhYmlsaXR5UmVhc29uLCBXS1N0cmluZ1JlZiBt
aW1lVHlwZSwgV0tTdHJpbmdSZWYgdXJsLCBXS1N0cmluZ1JlZiBwbHVnaW5zUGFnZVVSTCwgY29u
c3Qgdm9pZCogY2xpZW50SW5mbyk7Cit0eXBlZGVmIHZvaWQgKCpXS1BhZ2VTaG93Q29sb3JQaWNr
ZXJDYWxsYmFjaykoV0tQYWdlUmVmIHBhZ2UsIFdLU3RyaW5nUmVmIGluaXRpYWxDb2xvciwgY29u
c3Qgdm9pZCogY2xpZW50SW5mbyk7Cit0eXBlZGVmIHZvaWQgKCpXS1BhZ2VIaWRlQ29sb3JQaWNr
ZXJDYWxsYmFjaykoV0tQYWdlUmVmIHBhZ2UsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pOwogCiAv
LyBEZXByZWNhdGVkICAgIAogdHlwZWRlZiBXS1BhZ2VSZWYgKCpXS1BhZ2VDcmVhdGVOZXdQYWdl
Q2FsbGJhY2tfZGVwcmVjYXRlZEZvclVzZVdpdGhWMCkoV0tQYWdlUmVmIHBhZ2UsIFdLRGljdGlv
bmFyeVJlZiBmZWF0dXJlcywgV0tFdmVudE1vZGlmaWVycyBtb2RpZmllcnMsIFdLRXZlbnRNb3Vz
ZUJ1dHRvbiBtb3VzZUJ1dHRvbiwgY29uc3Qgdm9pZCAqY2xpZW50SW5mbyk7CkBAIC0yODEsMTAg
KzI4MywxNCBAQCBzdHJ1Y3QgV0tQYWdlVUlDbGllbnQgewogICAgIFdLUGFnZU1vdXNlRGlkTW92
ZU92ZXJFbGVtZW50Q2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW91c2VE
aWRNb3ZlT3ZlckVsZW1lbnQ7CiAgICAgV0tQYWdlRGVjaWRlUG9saWN5Rm9yTm90aWZpY2F0aW9u
UGVybWlzc2lvblJlcXVlc3RDYWxsYmFjayAgICAgICAgICBkZWNpZGVQb2xpY3lGb3JOb3RpZmlj
YXRpb25QZXJtaXNzaW9uUmVxdWVzdDsKICAgICBXS1BhZ2VVbmF2YWlsYWJsZVBsdWdpbkJ1dHRv
bkNsaWNrZWRDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgIHVuYXZhaWxhYmxlUGx1Z2lu
QnV0dG9uQ2xpY2tlZDsKKworICAgIC8vIFZlcnNpb24gMgorICAgIFdLUGFnZVNob3dDb2xvclBp
Y2tlckNhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvd0Nv
bG9yUGlja2VyOworICAgIFdLUGFnZUhpZGVDb2xvclBpY2tlckNhbGxiYWNrICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaGlkZUNvbG9yUGlja2VyOwogfTsKIHR5cGVkZWYg
c3RydWN0IFdLUGFnZVVJQ2xpZW50IFdLUGFnZVVJQ2xpZW50OwogCi1lbnVtIHsga1dLUGFnZVVJ
Q2xpZW50Q3VycmVudFZlcnNpb24gPSAxIH07CitlbnVtIHsga1dLUGFnZVVJQ2xpZW50Q3VycmVu
dFZlcnNpb24gPSAyIH07CiAKIC8vIEZpbmQgY2xpZW50LgogdHlwZWRlZiB2b2lkICgqV0tQYWdl
RGlkRmluZFN0cmluZ0NhbGxiYWNrKShXS1BhZ2VSZWYgcGFnZSwgV0tTdHJpbmdSZWYgc3RyaW5n
LCB1bnNpZ25lZCBtYXRjaENvdW50LCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsKQEAgLTQ5MSw2
ICs0OTcsOCBAQCBXS19FWFBPUlQgdm9pZCBXS1BhZ2VFeGVjdXRlQ29tbWFuZChXS1BhZ2VSZWYg
cGFnZSwgV0tTdHJpbmdSZWYgY29tbWFuZCk7CiAKIFdLX0VYUE9SVCB2b2lkIFdLUGFnZVBvc3RN
ZXNzYWdlVG9JbmplY3RlZEJ1bmRsZShXS1BhZ2VSZWYgcGFnZSwgV0tTdHJpbmdSZWYgbWVzc2Fn
ZU5hbWUsIFdLVHlwZVJlZiBtZXNzYWdlQm9keSk7CiAKK1dLX0VYUE9SVCB2b2lkIFdLUGFnZVNl
dENvbG9yUGlja2VyQ29sb3IoV0tQYWdlUmVmIHBhZ2VSZWYsIFdLU3RyaW5nUmVmIHNlbGVjdGVk
Q29sb3IpOworCiAjaWZkZWYgX19jcGx1c3BsdXMKIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvUGFnZUNsaWVudEltcGwuY3BwIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvUGFnZUNsaWVudEltcGwuY3BwCmluZGV4IDliYzNj
ZGUuLjFiMTc5N2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZs
L1BhZ2VDbGllbnRJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2Vm
bC9QYWdlQ2xpZW50SW1wbC5jcHAKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJEcmF3aW5n
QXJlYVByb3h5SW1wbC5oIgogI2luY2x1ZGUgIk5hdGl2ZVdlYktleWJvYXJkRXZlbnQuaCIKICNp
bmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgorI2luY2x1ZGUgIldlYkNvbG9yQ2hvb3NlclByb3h5
RWZsLmgiCiAjaW5jbHVkZSAiV2ViQ29udGV4dC5oIgogI2luY2x1ZGUgIldlYkNvbnRleHRNZW51
UHJveHkuaCIKICNpbmNsdWRlICJXZWJQYWdlR3JvdXAuaCIKQEAgLTIwOCwxMCArMjA5LDkgQEAg
UGFzc1JlZlB0cjxXZWJDb250ZXh0TWVudVByb3h5PiBQYWdlQ2xpZW50SW1wbDo6Y3JlYXRlQ29u
dGV4dE1lbnVQcm94eShXZWJQYWdlUHIKIH0KIAogI2lmIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9S
KQotUGFzc1JlZlB0cjxXZWJDb2xvckNob29zZXJQcm94eT4gUGFnZUNsaWVudEltcGw6OmNyZWF0
ZUNvbG9yQ2hvb3NlclByb3h5KFdlYlBhZ2VQcm94eSosIGNvbnN0IFdlYkNvcmU6OkNvbG9yJikK
K1Bhc3NSZWZQdHI8V2ViQ29sb3JDaG9vc2VyUHJveHk+IFBhZ2VDbGllbnRJbXBsOjpjcmVhdGVD
b2xvckNob29zZXJQcm94eShXZWJQYWdlUHJveHkqIHBhZ2UsIGNvbnN0IFdlYkNvcmU6OkNvbG9y
JiBpbml0aWFsQ29sb3IpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gMDsK
KyAgICByZXR1cm4gV2ViQ29sb3JDaG9vc2VyUHJveHlFZmw6OmNyZWF0ZShtX3ZpZXdXaWRnZXQs
IHBhZ2UsIGluaXRpYWxDb2xvcik7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuY3BwCmluZGV4IGMyOGFlNmQuLjYyY2ZhNTcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5jcHAKQEAgLTE1MzYs
MyArMTUzNiwzNiBAQCBFaW5hX0Jvb2wgZXdrX3ZpZXdfcG9wdXBfbWVudV9zZWxlY3QoRXZhc19P
YmplY3QqIGV3a1ZpZXcsIHVuc2lnbmVkIGludCBzZWxlY3RlZAogCiAgICAgcmV0dXJuIHRydWU7
CiB9CisKK3ZvaWQgZXdrX3ZpZXdfaW5wdXRfcGlja2VyX3Nob3dfcmVxdWVzdChFdmFzX09iamVj
dCogZXdrVmlldywgRXdrX0lucHV0X1R5cGUgaW5wdXRUeXBlLCBjb25zdCBTdHJpbmcmIGlucHV0
VmFsdWUpCit7CisgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERh
dGEpOworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKHNtYXJ0RGF0YS0+YXBpKTsKKyAg
ICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTihzbWFydERhdGEtPmFwaS0+aW5wdXRfcGlja2Vy
X3Nob3cpOworCisgICAgc21hcnREYXRhLT5hcGktPmlucHV0X3BpY2tlcl9zaG93KHNtYXJ0RGF0
YSwgaW5wdXRUeXBlLCBpbnB1dFZhbHVlLnV0ZjgoKS5kYXRhKCkpOworfQorCit2b2lkIGV3a192
aWV3X2lucHV0X3BpY2tlcl9oaWRlX3JlcXVlc3QoRXZhc19PYmplY3QqIGV3a1ZpZXcsIEV3a19J
bnB1dF9UeXBlIGlucHV0VHlwZSkKK3sKKyAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3
a1ZpZXcsIHNtYXJ0RGF0YSk7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oc21hcnRE
YXRhLT5hcGkpOworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKHNtYXJ0RGF0YS0+YXBp
LT5pbnB1dF9waWNrZXJfaGlkZSk7CisKKyAgICBzbWFydERhdGEtPmFwaS0+aW5wdXRfcGlja2Vy
X2hpZGUoc21hcnREYXRhLCBpbnB1dFR5cGUpOworfQorCitFaW5hX0Jvb2wgZXdrX3ZpZXdfY29s
b3JfcGlja2VyX2NvbG9yX3NldChFdmFzX09iamVjdCogZXdrVmlldywgY29uc3QgY2hhciogY29s
b3IpCit7CisjaWYgRU5BQkxFKElOUFVUX1RZUEVfQ09MT1IpCisgICAgRVdLX1ZJRVdfU0RfR0VU
X09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEsIGZhbHNlKTsKKyAgICBFV0tfVklFV19QUklW
X0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBwcml2LCBmYWxzZSk7CisgICAgRUlOQV9TQUZFVFlf
T05fTlVMTF9SRVRVUk5fVkFMKGNvbG9yLCBmYWxzZSk7CisKKyAgICBXS1BhZ2VTZXRDb2xvclBp
Y2tlckNvbG9yKHRvQVBJKHByaXYtPnBhZ2VQcm94eS5nZXQoKSksIHRvQVBJKFN0cmluZyhjb2xv
cikuaW1wbCgpKSk7CisKKyAgICByZXR1cm4gdHJ1ZTsKKyNlbHNlCisgICAgcmV0dXJuIGZhbHNl
OworI2VuZGlmCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2Vm
bC9ld2tfdmlldy5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcu
aAppbmRleCBiNmExZTQ5Li43NDQ2MmY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZWZsL2V3a192aWV3LmgKQEAgLTkyLDYgKzkyLDE2IEBAIHR5cGVkZWYgZW51bSB7CiB0eXBl
ZGVmIHN0cnVjdCBfRXdrX1ZpZXdfU21hcnRfRGF0YSBFd2tfVmlld19TbWFydF9EYXRhOwogdHlw
ZWRlZiBzdHJ1Y3QgX0V3a19WaWV3X1NtYXJ0X0NsYXNzIEV3a19WaWV3X1NtYXJ0X0NsYXNzOwog
CisvKioKKyAqIFxlbnVtICAgIEV3a19JbnB1dF9UeXBlCisgKiBAYnJpZWYgICBQcm92aWRlcyB0
eXBlIG9mIGlucHV0IGVsZW1lbnQKKyAqLworZW51bSBfRXdrX0lucHV0X1R5cGUgeworICAgIEVX
S19JTlBVVF9UWVBFX0NPTE9SCit9OworLyoqIENyZWF0ZXMgYSB0eXBlIG5hbWUgZm9yIF9Fd2tf
SW5wdXRfVHlwZV9Fd2tfSW5wdXRfVHlwZSAqLwordHlwZWRlZiBlbnVtIF9Fd2tfSW5wdXRfVHlw
ZSBFd2tfSW5wdXRfVHlwZTsKKwogLy8vIEV3ayB2aWV3J3MgY2xhc3MsIHRvIGJlIG92ZXJyaWRk
ZW4gYnkgc3ViLWNsYXNzZXMuCiBzdHJ1Y3QgX0V3a19WaWV3X1NtYXJ0X0NsYXNzIHsKICAgICBF
dmFzX1NtYXJ0X0NsYXNzIHNjOyAvKio8IGFsbCBidXQgJ2RhdGEnIGlzIGZyZWUgdG8gYmUgY2hh
bmdlZC4gKi8KQEAgLTExMSwxMyArMTIxLDE3IEBAIHN0cnVjdCBfRXdrX1ZpZXdfU21hcnRfQ2xh
c3MgewogICAgIEVpbmFfQm9vbCAoKm1vdXNlX21vdmUpKEV3a19WaWV3X1NtYXJ0X0RhdGEgKnNk
LCBjb25zdCBFdmFzX0V2ZW50X01vdXNlX01vdmUgKmV2KTsKICAgICBFaW5hX0Jvb2wgKCprZXlf
ZG93bikoRXdrX1ZpZXdfU21hcnRfRGF0YSAqc2QsIGNvbnN0IEV2YXNfRXZlbnRfS2V5X0Rvd24g
KmV2KTsKICAgICBFaW5hX0Jvb2wgKCprZXlfdXApKEV3a19WaWV3X1NtYXJ0X0RhdGEgKnNkLCBj
b25zdCBFdmFzX0V2ZW50X0tleV9VcCAqZXYpOworCisgICAgLy8gSW5wdXQgUGlja2VyIEFQSQor
ICAgIEVpbmFfQm9vbCAoKmlucHV0X3BpY2tlcl9zaG93KShFd2tfVmlld19TbWFydF9EYXRhICpz
ZCwgRXdrX0lucHV0X1R5cGUgaW5wdXRfdHlwZSwgY29uc3QgY2hhciAqaW5wdXRfdmFsdWUpOwor
ICAgIEVpbmFfQm9vbCAoKmlucHV0X3BpY2tlcl9oaWRlKShFd2tfVmlld19TbWFydF9EYXRhICpz
ZCwgRXdrX0lucHV0X1R5cGUgaW5wdXRfdHlwZSk7CiB9OwogCiAvKioKICAqIFRoZSB2ZXJzaW9u
IHlvdSBoYXZlIHRvIHB1dCBpbnRvIHRoZSB2ZXJzaW9uIGZpZWxkCiAgKiBpbiB0aGUgQGEgRXdr
X1ZpZXdfU21hcnRfQ2xhc3Mgc3RydWN0dXJlLgogICovCi0jZGVmaW5lIEVXS19WSUVXX1NNQVJU
X0NMQVNTX1ZFUlNJT04gMlVMCisjZGVmaW5lIEVXS19WSUVXX1NNQVJUX0NMQVNTX1ZFUlNJT04g
M1VMCiAKIC8qKgogICogSW5pdGlhbGl6ZXIgZm9yIHdob2xlIEV3a19WaWV3X1NtYXJ0X0NsYXNz
IHN0cnVjdHVyZS4KQEAgLTEyOSw3ICsxNDMsNyBAQCBzdHJ1Y3QgX0V3a19WaWV3X1NtYXJ0X0Ns
YXNzIHsKICAqIEBzZWUgRVdLX1ZJRVdfU01BUlRfQ0xBU1NfSU5JVF9WRVJTSU9OCiAgKiBAc2Vl
IEVXS19WSUVXX1NNQVJUX0NMQVNTX0lOSVRfTkFNRV9WRVJTSU9OCiAgKi8KLSNkZWZpbmUgRVdL
X1ZJRVdfU01BUlRfQ0xBU1NfSU5JVChzbWFydF9jbGFzc19pbml0KSB7c21hcnRfY2xhc3NfaW5p
dCwgRVdLX1ZJRVdfU01BUlRfQ0xBU1NfVkVSU0lPTiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwg
MCwgMH0KKyNkZWZpbmUgRVdLX1ZJRVdfU01BUlRfQ0xBU1NfSU5JVChzbWFydF9jbGFzc19pbml0
KSB7c21hcnRfY2xhc3NfaW5pdCwgRVdLX1ZJRVdfU01BUlRfQ0xBU1NfVkVSU0lPTiwgMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMH0KIAogLyoqCiAgKiBJbml0aWFsaXplciB0byB6
ZXJvIGEgd2hvbGUgRXdrX1ZpZXdfU21hcnRfQ2xhc3Mgc3RydWN0dXJlLgpAQCAtNjIwLDYgKzYz
NCwxNiBAQCBFQVBJIEVpbmFfQm9vbCBld2tfdmlld19wb3B1cF9tZW51X3NlbGVjdChFdmFzX09i
amVjdCAqbywgdW5zaWduZWQgaW50IGluZGV4KTsKICAqLwogRUFQSSBFaW5hX0Jvb2wgZXdrX3Zp
ZXdfcG9wdXBfbWVudV9jbG9zZShFdmFzX09iamVjdCAqbyk7CiAKKy8qKgorICogU2V0cyB0aGUg
Y29sb3IgdmFsdWUgb2YgY29sb3IgY2hvb3NlcgorICoKKyAqIEBwYXJhbSBvIHZpZXcgb2JqZWN0
IGNvbnRhaW5zIGNvbG9yIGNob29zZXIKKyAqIEBwYXJhbSBjb2xvciAjUkdCLCAjUlJHR0JCIG9y
IG5hbWVkIGNvbG9yIHN0cmluZyB0byBiZSBzZXQKKyAqCisgKiBAcmV0dXJuIEBjIEVJTkFfVFJV
RSBvbiBzdWNjZXNzIEBjIEVJTkFfRkFMU0Ugb3RoZXJ3aXNlCisgKi8KK0VBUEkgRWluYV9Cb29s
IGV3a192aWV3X2NvbG9yX3BpY2tlcl9jb2xvcl9zZXQoRXZhc19PYmplY3QgKm8sIGNvbnN0IGNo
YXIgKmNvbG9yKTsKKwogI2lmZGVmIF9fY3BsdXNwbHVzCiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3X3ByaXZhdGUuaCBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3X3ByaXZhdGUuaAppbmRleCBk
YjhhYjY2Li4yNmViM2I5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2VmbC9ld2tfdmlld19wcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9lZmwvZXdrX3ZpZXdfcHJpdmF0ZS5oCkBAIC0yMiw2ICsyMiw3IEBACiAjZGVmaW5lIGV3a192
aWV3X3ByaXZhdGVfaAogCiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5LmgiCisjaW5jbHVkZSAiZXdr
X3ZpZXcuaCIKICNpbmNsdWRlIDxFdmFzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9UZXh0RGlyZWN0
aW9uLmg+CiAjaW5jbHVkZSA8V2ViS2l0Mi9XS0Jhc2UuaD4KQEAgLTk4LDQgKzk5LDcgQEAgYm9v
bCBld2tfdmlld19hY2NlbGVyYXRlZF9jb21wb3NpdGluZ19tb2RlX2V4aXQoY29uc3QgRXZhc19P
YmplY3QqIGV3a1ZpZXcpOwogCiB2b2lkIGV3a192aWV3X3BvcHVwX21lbnVfcmVxdWVzdChFdmFz
X09iamVjdCogZXdrVmlldywgV2ViS2l0OjpXZWJQb3B1cE1lbnVQcm94eUVmbCogcG9wdXBNZW51
LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiwgV2ViQ29yZTo6VGV4dERpcmVjdGlvbiwgZG91Ymxl
IHBhZ2VTY2FsZUZhY3RvciwgY29uc3QgVmVjdG9yPFdlYktpdDo6V2ViUG9wdXBJdGVtPiYgaXRl
bXMsIGludDMyX3Qgc2VsZWN0ZWRJbmRleCk7CiAKK3ZvaWQgZXdrX3ZpZXdfaW5wdXRfcGlja2Vy
X3Nob3dfcmVxdWVzdChFdmFzX09iamVjdCogZXdrVmlldywgRXdrX0lucHV0X1R5cGUgaW5wdXRU
eXBlLCBjb25zdCBTdHJpbmcmIGlucHV0VmFsdWUpOwordm9pZCBld2tfdmlld19pbnB1dF9waWNr
ZXJfaGlkZV9yZXF1ZXN0KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBFd2tfSW5wdXRfVHlwZSBpbnB1
dFR5cGUpOworCiAjZW5kaWYgLy8gZXdrX3ZpZXdfcHJpdmF0ZV9oCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlld191aV9jbGllbnQuY3BwIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXdfdWlfY2xpZW50LmNwcAppbmRl
eCAxOGVkZTA4Li4xOTAzMWVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2VmbC9ld2tfdmlld191aV9jbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZWZsL2V3a192aWV3X3VpX2NsaWVudC5jcHAKQEAgLTQzLDYgKzQzLDE4IEBAIHN0
YXRpYyBXS1BhZ2VSZWYgY3JlYXRlTmV3UGFnZShXS1BhZ2VSZWYsIFdLVVJMUmVxdWVzdFJlZiwg
V0tEaWN0aW9uYXJ5UmVmLCBXS0V2CiAgICAgIHJldHVybiBld2tfdmlld19wYWdlX2NyZWF0ZSh0
b0V3a1ZpZXcoY2xpZW50SW5mbykpOwogfQogCisjaWYgRU5BQkxFKElOUFVUX1RZUEVfQ09MT1Ip
CitzdGF0aWMgdm9pZCBzaG93Q29sb3JQaWNrZXIoV0tQYWdlUmVmLCBXS1N0cmluZ1JlZiBpbml0
aWFsQ29sb3IsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCit7CisgICAgZXdrX3ZpZXdfaW5wdXRf
cGlja2VyX3Nob3dfcmVxdWVzdCh0b0V3a1ZpZXcoY2xpZW50SW5mbyksIEVXS19JTlBVVF9UWVBF
X0NPTE9SLCBXZWJLaXQ6OnRvV1RGU3RyaW5nKGluaXRpYWxDb2xvcikpOworfQorCitzdGF0aWMg
dm9pZCBoaWRlQ29sb3JQaWNrZXIoV0tQYWdlUmVmLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQor
eworICAgIGV3a192aWV3X2lucHV0X3BpY2tlcl9oaWRlX3JlcXVlc3QodG9Fd2tWaWV3KGNsaWVu
dEluZm8pLCBFV0tfSU5QVVRfVFlQRV9DT0xPUik7Cit9CisjZW5kaWYKKwogdm9pZCBld2tfdmll
d191aV9jbGllbnRfYXR0YWNoKFdLUGFnZVJlZiBwYWdlUmVmLCBFdmFzX09iamVjdCogZXdrVmll
dykKIHsKICAgICBXS1BhZ2VVSUNsaWVudCB1aUNsaWVudDsKQEAgLTUxLDUgKzYzLDExIEBAIHZv
aWQgZXdrX3ZpZXdfdWlfY2xpZW50X2F0dGFjaChXS1BhZ2VSZWYgcGFnZVJlZiwgRXZhc19PYmpl
Y3QqIGV3a1ZpZXcpCiAgICAgdWlDbGllbnQuY2xpZW50SW5mbyA9IGV3a1ZpZXc7CiAgICAgdWlD
bGllbnQuY2xvc2UgPSBjbG9zZVBhZ2U7CiAgICAgdWlDbGllbnQuY3JlYXRlTmV3UGFnZSA9IGNy
ZWF0ZU5ld1BhZ2U7CisKKyNpZiBFTkFCTEUoSU5QVVRfVFlQRV9DT0xPUikKKyAgICB1aUNsaWVu
dC5zaG93Q29sb3JQaWNrZXIgPSBzaG93Q29sb3JQaWNrZXI7CisgICAgdWlDbGllbnQuaGlkZUNv
bG9yUGlja2VyID0gaGlkZUNvbG9yUGlja2VyOworI2VuZGlmCisKICAgICBXS1BhZ2VTZXRQYWdl
VUlDbGllbnQocGFnZVJlZiwgJnVpQ2xpZW50KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL3Rlc3RfZXdrMl92aWV3LmNwcCBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL3Rlc3RfZXdrMl92aWV3LmNwcAppbmRleCA4
OGNkNmI5Li5hMzViMjI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2VmbC90ZXN0cy90ZXN0X2V3azJfdmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9lZmwvdGVzdHMvdGVzdF9ld2syX3ZpZXcuY3BwCkBAIC0yMzAsMyArMjMwLDg1IEBA
IFRFU1RfRihFV0syVW5pdFRlc3RCYXNlLCBld2tfdmlld19wb3B1cF9tZW51X3NlbGVjdCkKICAg
ICBFWFBFQ1RfVFJVRShld2tfdmlld19wb3B1cF9tZW51X2Nsb3NlKHdlYlZpZXcoKSkpOwogICAg
IEVYUEVDVF9GQUxTRShld2tfdmlld19wb3B1cF9tZW51X3NlbGVjdCh3ZWJWaWV3KCksIDApKTsK
IH0KKworI2lmIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9SKQorc3RhdGljIGNvbnN0IGNoYXIgaW5p
dGlhbENvbG9yW10gPSAiI2ZmMDAwMCI7CitzdGF0aWMgY29uc3QgY2hhciBjaGFuZ2VkQ29sb3Jb
XSA9ICIjMDAwMGZmIjsKKworc3RhdGljIGJvb2wgaXNDb2xvclBpY2tlclNob3duID0gZmFsc2U7
CisKK3N0YXRpYyB2b2lkIGNvbG9yUGlja2VyRG9uZUNhbGxiYWNrKHZvaWQqIHVzZXJEYXRhLCBF
dmFzX09iamVjdCosIHZvaWQqKQoreworICAgIGJvb2wqIGhhbmRsZWQgPSBzdGF0aWNfY2FzdDxi
b29sKj4odXNlckRhdGEpOworCisgICAgKmhhbmRsZWQgPSB0cnVlOworfQorCitzdGF0aWMgdW5z
aWduZWQgY2hhciBjb2xvclBpY2tlckNvbG9yU2VsZWN0ZWQodm9pZCogZGF0YSkKK3sKKyAgICBF
d2tfVmlld19TbWFydF9EYXRhKiBzbWFydERhdGEgPSBzdGF0aWNfY2FzdDxFd2tfVmlld19TbWFy
dF9EYXRhKj4oZGF0YSk7CisKKyAgICAvLyA0LiBDaGFuZ2UgY29sb3IgdG8gY2hhbmdlZENvbG9y
LgorICAgIEVYUEVDVF9UUlVFKGV3a192aWV3X2NvbG9yX3BpY2tlcl9jb2xvcl9zZXQoc21hcnRE
YXRhLT5zZWxmLCBjaGFuZ2VkQ29sb3IpKTsKKworICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxi
YWNrX2NhbGwoc21hcnREYXRhLT5zZWxmLCAiaW5wdXQsdHlwZSxjb2xvcixyZXF1ZXN0IiwgMCk7
CisKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIEVpbmFfQm9vbCBzaG93Q29sb3JQaWNrZXIo
RXdrX1ZpZXdfU21hcnRfRGF0YSogc21hcnREYXRhLCBFd2tfSW5wdXRfVHlwZSBpbnB1dFR5cGUs
IGNvbnN0IGNoYXIqIGlucHV0VmFsdWUpCit7CisgICAgc3RhdGljIGJvb2wgaXNGaXJzdFJ1biA9
IHRydWU7CisKKyAgICBpc0NvbG9yUGlja2VyU2hvd24gPSB0cnVlOworCisgICAgaWYgKGlzRmly
c3RSdW4pIHsKKyAgICAgICAgLy8gMS4gQ2hlY2sgdHlwZSBvZiBpbnB1dC4KKyAgICAgICAgRVhQ
RUNUX0VRKGlucHV0VHlwZSwgRVdLX0lOUFVUX1RZUEVfQ09MT1IpOworICAgICAgICAvLyAyLiBD
aGVjayBpbml0aWFsIHZhbHVlIGZyb20gaHRtbCBmaWxlLgorICAgICAgICBFWFBFQ1RfU1RSRVEo
aW5wdXRWYWx1ZSwgaW5pdGlhbENvbG9yKTsKKworICAgICAgICBpc0ZpcnN0UnVuID0gZmFsc2U7
CisgICAgfSBlbHNlCisgICAgICAgIC8vIDUuIGlucHV0VmFsdWUgc2hvdWxkIGJlIGNoYW5nZWRD
b2xvci4KKyAgICAgICAgRVhQRUNUX1NUUkVRKGlucHV0VmFsdWUsIGNoYW5nZWRDb2xvcik7CisK
KyAgICAvLyAzLiBSZXR1cm4gYWZ0ZXIgbWFraW5nIGEgY29sb3IgcGlja2VyLgorICAgIGVjb3Jl
X3RpbWVyX2FkZCgwLjAsIGNvbG9yUGlja2VyQ29sb3JTZWxlY3RlZCwgc21hcnREYXRhKTsKKyAg
ICByZXR1cm4gdHJ1ZTsKK30KKworc3RhdGljIEVpbmFfQm9vbCBoaWRlQ29sb3JQaWNrZXIoRXdr
X1ZpZXdfU21hcnRfRGF0YSogc21hcnREYXRhLCBFd2tfSW5wdXRfVHlwZSBpbnB1dFR5cGUpCit7
CisgICAgRVhQRUNUX0VRKGlucHV0VHlwZSwgRVdLX0lOUFVUX1RZUEVfQ09MT1IpOworCisgICAg
Ly8gVGVzdCBjb2xvciBwaWNrZXIgaXMgc2hvd24uCisgICAgRVhQRUNUX1RSVUUoaXNDb2xvclBp
Y2tlclNob3duKTsKKyAgICBpc0NvbG9yUGlja2VyU2hvd24gPSBmYWxzZTsKK30KKworVEVTVF9G
KEVXSzJVbml0VGVzdEJhc2UsIGV3a192aWV3X2NvbG9yX3BpY2tlcl9jb2xvcl9zZXQpCit7Cisg
ICAgRXdrX1ZpZXdfU21hcnRfQ2xhc3MqIGFwaSA9IGV3a1ZpZXdDbGFzcygpOworICAgIGFwaS0+
aW5wdXRfcGlja2VyX3Nob3cgPSBzaG93Q29sb3JQaWNrZXI7CisgICAgYXBpLT5pbnB1dF9waWNr
ZXJfaGlkZSA9IGhpZGVDb2xvclBpY2tlcjsKKworICAgIGxvYWRVcmxTeW5jKCJkYXRhOnRleHQv
aHRtbCw8aW5wdXQgdHlwZT0nY29sb3InIHZhbHVlPScjZmYwMDAwJz4iKTsKKworICAgIC8vIENs
aWNrIGlucHV0IGVsZW1lbnQuCisgICAgbW91c2VDbGljaygzMCwgMjApOworCisgICAgYm9vbCBo
YW5kbGVkID0gZmFsc2U7CisgICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfYWRkKHdlYlZp
ZXcoKSwgImlucHV0LHR5cGUsY29sb3IscmVxdWVzdCIsIGNvbG9yUGlja2VyRG9uZUNhbGxiYWNr
LCAmaGFuZGxlZCk7CisgICAgd2hpbGUgKCFoYW5kbGVkKQorICAgICAgICBlY29yZV9tYWluX2xv
b3BfaXRlcmF0ZSgpOworCisgICAgLy8gQ2xpY2sgaW5wdXQgZWxlbWVudCBhZ2Fpbi4KKyAgICBt
b3VzZUNsaWNrKDMwLCAyMCk7CisKKyAgICBoYW5kbGVkID0gZmFsc2U7CisgICAgd2hpbGUgKCFo
YW5kbGVkKQorICAgICAgICBlY29yZV9tYWluX2xvb3BfaXRlcmF0ZSgpOworICAgIGV2YXNfb2Jq
ZWN0X3NtYXJ0X2NhbGxiYWNrX2RlbCh3ZWJWaWV3KCksICJpbnB1dCx0eXBlLGNvbG9yLHJlcXVl
c3QiLCBjb2xvclBpY2tlckRvbmVDYWxsYmFjayk7Cit9CisjZW5kaWYgLy8gRU5BQkxFKElOUFVU
X1RZUEVfQ09MT1IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmlu
ZGV4IDk4ODFlYjIuLjY5NjkyOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuY3BwCkBAIC0yNzEyLDYgKzI3MTIsOCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2hvd0Nv
bG9yQ2hvb3Nlcihjb25zdCBXZWJDb3JlOjpDb2xvciYgaW5pdGlhbENvbG9yKQogICAgIEFTU0VS
VCghbV9jb2xvckNob29zZXIpOwogCiAgICAgbV9jb2xvckNob29zZXIgPSBtX3BhZ2VDbGllbnQt
PmNyZWF0ZUNvbG9yQ2hvb3NlclByb3h5KHRoaXMsIGluaXRpYWxDb2xvcik7CisKKyAgICBtX3Vp
Q2xpZW50LnNob3dDb2xvclBpY2tlcih0aGlzLCBpbml0aWFsQ29sb3Iuc2VyaWFsaXplZCgpKTsK
IH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnNldENvbG9yQ2hvb3NlckNvbG9yKGNvbnN0IFdlYkNv
cmU6OkNvbG9yJiBjb2xvcikKQEAgLTI3NDcsNiArMjc0OSw4IEBAIHZvaWQgV2ViUGFnZVByb3h5
OjpkaWRFbmRDb2xvckNob29zZXIoKQogICAgIG1fY29sb3JDaG9vc2VyID0gbnVsbHB0cjsKIAog
ICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RGlkRW5kQ29sb3JDaG9vc2Vy
KCksIG1fcGFnZUlEKTsKKworICAgIG1fdWlDbGllbnQuaGlkZUNvbG9yUGlja2VyKHRoaXMpOwog
fQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCA5
YTE5YTU2Li4xZDVmODcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5o
CkBAIC03MTcsNiArNzE3LDExIEBAIHB1YmxpYzoKIAogICAgIHZvaWQgcG9zdE1lc3NhZ2VUb0lu
amVjdGVkQnVuZGxlKGNvbnN0IFN0cmluZyYgbWVzc2FnZU5hbWUsIEFQSU9iamVjdCogbWVzc2Fn
ZUJvZHkpOwogCisjaWYgRU5BQkxFKElOUFVUX1RZUEVfQ09MT1IpCisgICAgdm9pZCBzZXRDb2xv
ckNob29zZXJDb2xvcihjb25zdCBXZWJDb3JlOjpDb2xvciYpOworICAgIHZvaWQgZW5kQ29sb3JD
aG9vc2VyKCk7CisjZW5kaWYKKwogcHJpdmF0ZToKICAgICBXZWJQYWdlUHJveHkoUGFnZUNsaWVu
dCosIFBhc3NSZWZQdHI8V2ViUHJvY2Vzc1Byb3h5PiwgV2ViUGFnZUdyb3VwKiwgdWludDY0X3Qg
cGFnZUlEKTsKIApAQCAtODQ5LDggKzg1NCw2IEBAIHByaXZhdGU6CiAKICNpZiBFTkFCTEUoSU5Q
VVRfVFlQRV9DT0xPUikKICAgICB2b2lkIHNob3dDb2xvckNob29zZXIoY29uc3QgV2ViQ29yZTo6
Q29sb3ImIGluaXRpYWxDb2xvcik7Ci0gICAgdm9pZCBzZXRDb2xvckNob29zZXJDb2xvcihjb25z
dCBXZWJDb3JlOjpDb2xvciYpOwotICAgIHZvaWQgZW5kQ29sb3JDaG9vc2VyKCk7CiAgICAgdm9p
ZCBkaWRDaG9vc2VDb2xvcihjb25zdCBXZWJDb3JlOjpDb2xvciYpOwogICAgIHZvaWQgZGlkRW5k
Q29sb3JDaG9vc2VyKCk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJVSUNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViVUlDbGll
bnQuY3BwCmluZGV4IGVkMWZiOTMuLmE5MjFhNGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJVSUNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYlVJQ2xpZW50LmNwcApAQCAtNDE3LDQgKzQxNywyMSBAQCBib29sIFdlYlVJQ2xpZW50Ojpz
aG91bGRJbnRlcnJ1cHRKYXZhU2NyaXB0KFdlYlBhZ2VQcm94eSogcGFnZSkKICAgICByZXR1cm4g
bV9jbGllbnQuc2hvdWxkSW50ZXJydXB0SmF2YVNjcmlwdCh0b0FQSShwYWdlKSwgbV9jbGllbnQu
Y2xpZW50SW5mbyk7CiB9CiAKKyNpZiBFTkFCTEUoSU5QVVRfVFlQRV9DT0xPUikKK3ZvaWQgV2Vi
VUlDbGllbnQ6OnNob3dDb2xvclBpY2tlcihXZWJQYWdlUHJveHkqIHBhZ2UsIGNvbnN0IFN0cmlu
ZyYgaW5pdGlhbENvbG9yKQoreworICAgIGlmICghbV9jbGllbnQuc2hvd0NvbG9yUGlja2VyKQor
ICAgICAgICByZXR1cm47CisKKyAgICBtX2NsaWVudC5zaG93Q29sb3JQaWNrZXIodG9BUEkocGFn
ZSksIHRvQVBJKGluaXRpYWxDb2xvci5pbXBsKCkpLCBtX2NsaWVudC5jbGllbnRJbmZvKTsKK30K
Kwordm9pZCBXZWJVSUNsaWVudDo6aGlkZUNvbG9yUGlja2VyKFdlYlBhZ2VQcm94eSogcGFnZSkK
K3sKKyAgICBpZiAoIW1fY2xpZW50LmhpZGVDb2xvclBpY2tlcikKKyAgICAgICAgcmV0dXJuOwor
CisgICAgbV9jbGllbnQuaGlkZUNvbG9yUGlja2VyKHRvQVBJKHBhZ2UpLCBtX2NsaWVudC5jbGll
bnRJbmZvKTsKK30KKyNlbmRpZgogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViVUlDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJVSUNsaWVudC5oCmluZGV4IDI4Y2ZiNjguLmViYzAzYWUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJVSUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJVSUNsaWVudC5oCkBAIC0xMTUsNiArMTE1LDExIEBAIHB1YmxpYzoK
ICAgICB2b2lkIHNhdmVEYXRhVG9GaWxlSW5Eb3dubG9hZHNGb2xkZXIoV2ViUGFnZVByb3h5Kiwg
Y29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlbmFtZSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwg
Y29uc3QgU3RyaW5nJiBvcmlnaW5hdGluZ1VSTFN0cmluZywgV2ViRGF0YSopOwogCiAgICAgYm9v
bCBzaG91bGRJbnRlcnJ1cHRKYXZhU2NyaXB0KFdlYlBhZ2VQcm94eSopOworCisjaWYgRU5BQkxF
KElOUFVUX1RZUEVfQ09MT1IpCisgICAgdm9pZCBzaG93Q29sb3JQaWNrZXIoV2ViUGFnZVByb3h5
KiwgY29uc3QgU3RyaW5nJik7CisgICAgdm9pZCBoaWRlQ29sb3JQaWNrZXIoV2ViUGFnZVByb3h5
Kik7CisjZW5kaWYKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJDb2xvckNob29zZXJQcm94eUVmbC5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYkNvbG9yQ2hvb3NlclByb3h5RWZsLmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42YzI2OWU0Ci0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJDb2xvckNob29zZXJQcm94eUVm
bC5jcHAKQEAgLTAsMCArMSw2MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBTYW1zdW5n
IEVsZWN0cm9uaWNzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIldlYkNvbG9yQ2hvb3NlclByb3h5RWZsLmgiCisKKyNpZiBFTkFC
TEUoSU5QVVRfVFlQRV9DT0xPUikKKworI2luY2x1ZGUgImV3a192aWV3X3ByaXZhdGUuaCIKKwor
bmFtZXNwYWNlIFdlYktpdCB7CisKK1dlYkNvbG9yQ2hvb3NlclByb3h5RWZsOjpXZWJDb2xvckNo
b29zZXJQcm94eUVmbChFdmFzX09iamVjdCogd2ViVmlldywgV2ViQ29sb3JDaG9vc2VyUHJveHk6
OkNsaWVudCogY2xpZW50LCBjb25zdCBXZWJDb3JlOjpDb2xvciYgY29sb3IpCisgICAgOiBXZWJD
b2xvckNob29zZXJQcm94eShjbGllbnQpCisgICAgLCBtX3dlYlZpZXcod2ViVmlldykKK3sKK30K
KworV2ViQ29sb3JDaG9vc2VyUHJveHlFZmw6On5XZWJDb2xvckNob29zZXJQcm94eUVmbCgpCit7
Cit9CisKK3ZvaWQgV2ViQ29sb3JDaG9vc2VyUHJveHlFZmw6OmVuZENob29zZXIoKQoreworICAg
IGlmICghbV9jbGllbnQpCisgICAgICAgIHJldHVybjsKKworICAgIG1fY2xpZW50LT5kaWRFbmRD
b2xvckNob29zZXIoKTsKK30KKwordm9pZCBXZWJDb2xvckNob29zZXJQcm94eUVmbDo6c2V0U2Vs
ZWN0ZWRDb2xvcihjb25zdCBXZWJDb3JlOjpDb2xvciYgY29sb3IpCit7CisgICAgaWYgKCFtX2Ns
aWVudCkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9jbGllbnQtPmRpZENob29zZUNvbG9yKGNv
bG9yKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoSU5Q
VVRfVFlQRV9DT0xPUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwv
V2ViQ29sb3JDaG9vc2VyUHJveHlFZmwuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwv
V2ViQ29sb3JDaG9vc2VyUHJveHlFZmwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwLi5lNzA2NGE0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L2VmbC9XZWJDb2xvckNob29zZXJQcm94eUVmbC5oCkBAIC0wLDAgKzEsNjEgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTIgU2Ftc3VuZyBFbGVjdHJvbmljcy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpZm5kZWYgV2ViQ29sb3JDaG9vc2VyUHJveHlFZmxfaAorI2RlZmluZSBX
ZWJDb2xvckNob29zZXJQcm94eUVmbF9oCisKKyNpZiBFTkFCTEUoSU5QVVRfVFlQRV9DT0xPUikK
KworI2luY2x1ZGUgIkNvbG9yLmgiCisjaW5jbHVkZSAiV2ViQ29sb3JDaG9vc2VyUHJveHkuaCIK
KwordHlwZWRlZiBzdHJ1Y3QgX0V2YXNfT2JqZWN0IEV2YXNfT2JqZWN0OworCituYW1lc3BhY2Ug
V2ViS2l0IHsKKworY2xhc3MgV2ViUGFnZVByb3h5OworCitjbGFzcyBXZWJDb2xvckNob29zZXJQ
cm94eUVmbCA6IHB1YmxpYyBXZWJDb2xvckNob29zZXJQcm94eSB7CitwdWJsaWM6CisgICAgc3Rh
dGljIFBhc3NSZWZQdHI8V2ViQ29sb3JDaG9vc2VyUHJveHlFZmw+IGNyZWF0ZShFdmFzX09iamVj
dCogd2ViVmlldywgV2ViQ29sb3JDaG9vc2VyUHJveHk6OkNsaWVudCogY2xpZW50LCBjb25zdCBX
ZWJDb3JlOjpDb2xvciYgY29sb3IpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3
IFdlYkNvbG9yQ2hvb3NlclByb3h5RWZsKHdlYlZpZXcsIGNsaWVudCwgY29sb3IpKTsKKyAgICB9
CisgICAgfldlYkNvbG9yQ2hvb3NlclByb3h5RWZsKCk7CisKKyAgICB2b2lkIGVuZENob29zZXIo
KTsKKyAgICB2b2lkIHNldFNlbGVjdGVkQ29sb3IoY29uc3QgV2ViQ29yZTo6Q29sb3ImKTsKKwor
cHJpdmF0ZToKKyAgICBXZWJDb2xvckNob29zZXJQcm94eUVmbChFdmFzX09iamVjdCosIFdlYkNv
bG9yQ2hvb3NlclByb3h5OjpDbGllbnQqLCBjb25zdCBXZWJDb3JlOjpDb2xvciYpOworCisgICAg
RXZhc19PYmplY3QqIG1fd2ViVmlldzsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisj
ZW5kaWYgLy8gRU5BQkxFKElOUFVUX1RZUEVfQ09MT1IpCisKKyNlbmRpZiAvLyBXZWJDb2xvckNo
b29zZXJQcm94eUVmbF9oCg==
</data>
<flag name="commit-queue"
          id="172270"
          type_id="3"
          status="-"
          setter="webkit-ews"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>164067</attachid>
            <date>2012-09-14 00:38:25 -0700</date>
            <delta_ts>2012-09-16 18:32:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>diff</filename>
            <type>text/plain</type>
            <size>12312</size>
            <attacher name="KwangYong Choi">ky0.choi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCBmMmFmZDAxLi45NWM0YTI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMzcg
QEAKIDIwMTItMDktMTMgIEt3YW5nWW9uZyBDaG9pICA8a3kwLmNob2lAc2Ftc3VuZy5jb20+CiAK
KyAgICAgICAgW0VGTF1bV0syXSBJbXBsZW1lbnRlZCBjb2xvciBwaWNrZXIgQVBJCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MTgzMgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBzdXBwb3J0IGZvciBj
b2xvciBwaWNrZXIgQVBJIGZvciBFRkwgcG9ydCBpbiBXZWJLaXQyLgorCisgICAgICAgIFRoZSBl
eHRlcm5hbCBhcHBsaWNhdGlvbiBjYW4gaW1wbGVtZW50IGlucHV0IHBpY2tlciBieSBvdmVycmlk
aW5nCisgICAgICAgIHNtYXJ0IGNsYXNzIGZ1bmN0aW9uLgorCisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9lZmwvZXdrX3ZpZXcuY3BwOgorICAgICAgICAoX0V3a19WaWV3X1ByaXZhdGVfRGF0YSk6
CisgICAgICAgIChfRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhOjpfRXdrX1ZpZXdfUHJpdmF0ZV9EYXRh
KToKKyAgICAgICAgKGV3a192aWV3X2lucHV0X3BpY2tlcl9zaG93KToKKyAgICAgICAgKGV3a192
aWV3X2lucHV0X3BpY2tlcl9oaWRlKToKKyAgICAgICAgKGV3a192aWV3X2NvbG9yX3BpY2tlcl9z
aG93KToKKyAgICAgICAgKGV3a192aWV3X2NvbG9yX3BpY2tlcl9jb2xvcl9zZXQpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9lZmwvZXdrX3ZpZXdfcHJpdmF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL2V3
a192aWV3X3VpX2NsaWVudC5jcHA6CisgICAgICAgIChzaG93Q29sb3JQaWNrZXIpOgorICAgICAg
ICAoaGlkZUNvbG9yUGlja2VyKToKKyAgICAgICAgKGV3a192aWV3X3VpX2NsaWVudF9hdHRhY2gp
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL3Rlc3RfZXdrMl92aWV3LmNwcDoK
KyAgICAgICAgKGNvbG9yUGlja2VyRG9uZUNhbGxiYWNrKToKKyAgICAgICAgKGNvbG9yUGlja2Vy
Q29sb3JTZWxlY3RlZCk6CisgICAgICAgIChzaG93Q29sb3JQaWNrZXIpOgorICAgICAgICAoaGlk
ZUNvbG9yUGlja2VyKToKKyAgICAgICAgKFRFU1RfRik6CisKKzIwMTItMDktMTMgIEt3YW5nWW9u
ZyBDaG9pICA8a3kwLmNob2lAc2Ftc3VuZy5jb20+CisKICAgICAgICAgW1dLMl0gQWRkIGNvbG9y
IHBpY2tlciBBUEkgc3VwcG9ydCBmb3IgV2ViS2l0MgogICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTUwNTgKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9lZmwvZXdrX3ZpZXcuY3BwCmluZGV4IGRjNzdmYjIuLjZmOTMxNWEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5jcHAKQEAgLTcxLDYgKzcx
LDEwIEBACiAjaW5jbHVkZSAiRWZsVmlld3BvcnRIYW5kbGVyLmgiCiAjZW5kaWYKIAorI2lmIEVO
QUJMRShJTlBVVF9UWVBFX0NPTE9SKQorI2luY2x1ZGUgIldLQ29sb3JQaWNrZXJSZXN1bHRMaXN0
ZW5lci5oIgorI2VuZGlmCisKIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiB1c2luZyBuYW1lc3Bh
Y2UgV2ViQ29yZTsKIApAQCAtMTEyLDYgKzExNiwxMCBAQCBzdHJ1Y3QgX0V3a19WaWV3X1ByaXZh
dGVfRGF0YSB7CiAgICAgRXZhc19HTF9TdXJmYWNlKiBldmFzR2xTdXJmYWNlOwogI2VuZGlmCiAK
KyNpZiBFTkFCTEUoSU5QVVRfVFlQRV9DT0xPUikKKyAgICBXS0NvbG9yUGlja2VyUmVzdWx0TGlz
dGVuZXJSZWYgY29sb3JQaWNrZXJSZXN1bHRMaXN0ZW5lcjsKKyNlbmRpZgorCiAgICAgX0V3a19W
aWV3X1ByaXZhdGVfRGF0YSgpCiAgICAgICAgIDogY3Vyc29yT2JqZWN0KDApCiAgICAgICAgICwg
YmFja0ZvcndhcmRMaXN0KDApCkBAIC0xMjYsNiArMTM0LDkgQEAgc3RydWN0IF9Fd2tfVmlld19Q
cml2YXRlX0RhdGEgewogICAgICAgICAsIGV2YXNHbENvbnRleHQoMCkKICAgICAgICAgLCBldmFz
R2xTdXJmYWNlKDApCiAjZW5kaWYKKyNpZiBFTkFCTEUoSU5QVVRfVFlQRV9DT0xPUikKKyAgICAg
ICAgLCBjb2xvclBpY2tlclJlc3VsdExpc3RlbmVyKDApCisjZW5kaWYKICAgICB7IH0KIAogICAg
IH5fRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKCkKQEAgLTE2MjMsMyArMTYzNCw1MCBAQCBFaW5hX0Jv
b2wgZXdrX3ZpZXdfbW91c2VfZXZlbnRzX2VuYWJsZWRfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBl
d2tWaWV3KQogCiAgICAgcmV0dXJuIHByaXYtPmFyZU1vdXNlRXZlbnRzRW5hYmxlZDsKIH0KKwor
dm9pZCBld2tfdmlld19pbnB1dF9waWNrZXJfc2hvdyhFdmFzX09iamVjdCogZXdrVmlldywgRXdr
X0lucHV0X1R5cGUgaW5wdXRUeXBlLCBjb25zdCBTdHJpbmcmIGlucHV0VmFsdWUpCit7CisgICAg
RVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEpOworICAgIEVJTkFf
U0FGRVRZX09OX05VTExfUkVUVVJOKHNtYXJ0RGF0YS0+YXBpKTsKKyAgICBFSU5BX1NBRkVUWV9P
Tl9OVUxMX1JFVFVSTihzbWFydERhdGEtPmFwaS0+aW5wdXRfcGlja2VyX3Nob3cpOworCisgICAg
c21hcnREYXRhLT5hcGktPmlucHV0X3BpY2tlcl9zaG93KHNtYXJ0RGF0YSwgaW5wdXRUeXBlLCBp
bnB1dFZhbHVlLnV0ZjgoKS5kYXRhKCkpOworfQorCit2b2lkIGV3a192aWV3X2lucHV0X3BpY2tl
cl9oaWRlKEV2YXNfT2JqZWN0KiBld2tWaWV3LCBFd2tfSW5wdXRfVHlwZSBpbnB1dFR5cGUpCit7
CisgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEpOworICAg
IEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKHNtYXJ0RGF0YS0+YXBpKTsKKyAgICBFSU5BX1NB
RkVUWV9PTl9OVUxMX1JFVFVSTihzbWFydERhdGEtPmFwaS0+aW5wdXRfcGlja2VyX2hpZGUpOwor
CisgICAgc21hcnREYXRhLT5hcGktPmlucHV0X3BpY2tlcl9oaWRlKHNtYXJ0RGF0YSwgaW5wdXRU
eXBlKTsKK30KKworI2lmIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9SKQordm9pZCBld2tfdmlld19j
b2xvcl9waWNrZXJfc2hvdyhFdmFzX09iamVjdCogZXdrVmlldywgY29uc3QgU3RyaW5nJiBpbnB1
dFZhbHVlLCBXS0NvbG9yUGlja2VyUmVzdWx0TGlzdGVuZXJSZWYgbGlzdGVuZXIpCit7CisgICAg
RVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEpOworICAgIEVXS19W
SUVXX1BSSVZfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIHByaXYpOworCisgICAgcHJpdi0+Y29s
b3JQaWNrZXJSZXN1bHRMaXN0ZW5lciA9IGxpc3RlbmVyOworCisgICAgZXdrX3ZpZXdfaW5wdXRf
cGlja2VyX3Nob3coZXdrVmlldywgRVdLX0lOUFVUX1RZUEVfQ09MT1IsIGlucHV0VmFsdWUpOwor
fQorI2VuZGlmCisKK0VpbmFfQm9vbCBld2tfdmlld19jb2xvcl9waWNrZXJfY29sb3Jfc2V0KEV2
YXNfT2JqZWN0KiBld2tWaWV3LCBjb25zdCBjaGFyKiBjb2xvcikKK3sKKyNpZiBFTkFCTEUoSU5Q
VVRfVFlQRV9DT0xPUikKKyAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNt
YXJ0RGF0YSwgZmFsc2UpOworICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzbWFydERh
dGEsIHByaXYsIGZhbHNlKTsKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwocHJp
di0+Y29sb3JQaWNrZXJSZXN1bHRMaXN0ZW5lciwgZmFsc2UpOworICAgIEVJTkFfU0FGRVRZX09O
X05VTExfUkVUVVJOX1ZBTChjb2xvciwgZmFsc2UpOworCisgICAgV0tDb2xvclBpY2tlclJlc3Vs
dExpc3RlbmVyU2V0Q29sb3IocHJpdi0+Y29sb3JQaWNrZXJSZXN1bHRMaXN0ZW5lciwgV0tTdHJp
bmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoY29sb3IpKTsKKyAgICBwcml2LT5jb2xvclBpY2tlclJl
c3VsdExpc3RlbmVyID0gMDsKKworICAgIHJldHVybiB0cnVlOworI2Vsc2UKKyAgICByZXR1cm4g
ZmFsc2U7CisjZW5kaWYKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZWZsL2V3a192aWV3LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tf
dmlldy5oCmluZGV4IGIwNDBmZGYzLi4yM2JkMDhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZWZsL2V3a192aWV3LmgKQEAgLTkzLDYgKzkzLDE2IEBAIHR5cGVkZWYgZW51bSB7
CiB0eXBlZGVmIHN0cnVjdCBfRXdrX1ZpZXdfU21hcnRfRGF0YSBFd2tfVmlld19TbWFydF9EYXRh
OwogdHlwZWRlZiBzdHJ1Y3QgX0V3a19WaWV3X1NtYXJ0X0NsYXNzIEV3a19WaWV3X1NtYXJ0X0Ns
YXNzOwogCisvKioKKyAqIFxlbnVtICAgIEV3a19JbnB1dF9UeXBlCisgKiBAYnJpZWYgICBQcm92
aWRlcyB0eXBlIG9mIGlucHV0IGVsZW1lbnQKKyAqLworZW51bSBfRXdrX0lucHV0X1R5cGUgewor
ICAgIEVXS19JTlBVVF9UWVBFX0NPTE9SCit9OworLyoqIENyZWF0ZXMgYSB0eXBlIG5hbWUgZm9y
IF9Fd2tfSW5wdXRfVHlwZV9Fd2tfSW5wdXRfVHlwZSAqLwordHlwZWRlZiBlbnVtIF9Fd2tfSW5w
dXRfVHlwZSBFd2tfSW5wdXRfVHlwZTsKKwogLy8vIEV3ayB2aWV3J3MgY2xhc3MsIHRvIGJlIG92
ZXJyaWRkZW4gYnkgc3ViLWNsYXNzZXMuCiBzdHJ1Y3QgX0V3a19WaWV3X1NtYXJ0X0NsYXNzIHsK
ICAgICBFdmFzX1NtYXJ0X0NsYXNzIHNjOyAvKio8IGFsbCBidXQgJ2RhdGEnIGlzIGZyZWUgdG8g
YmUgY2hhbmdlZC4gKi8KQEAgLTExNCwxMyArMTI0LDE3IEBAIHN0cnVjdCBfRXdrX1ZpZXdfU21h
cnRfQ2xhc3MgewogICAgIEVpbmFfQm9vbCAoKm1vdXNlX21vdmUpKEV3a19WaWV3X1NtYXJ0X0Rh
dGEgKnNkLCBjb25zdCBFdmFzX0V2ZW50X01vdXNlX01vdmUgKmV2KTsKICAgICBFaW5hX0Jvb2wg
KCprZXlfZG93bikoRXdrX1ZpZXdfU21hcnRfRGF0YSAqc2QsIGNvbnN0IEV2YXNfRXZlbnRfS2V5
X0Rvd24gKmV2KTsKICAgICBFaW5hX0Jvb2wgKCprZXlfdXApKEV3a19WaWV3X1NtYXJ0X0RhdGEg
KnNkLCBjb25zdCBFdmFzX0V2ZW50X0tleV9VcCAqZXYpOworCisgICAgLy8gSW5wdXQgUGlja2Vy
IEFQSQorICAgIEVpbmFfQm9vbCAoKmlucHV0X3BpY2tlcl9zaG93KShFd2tfVmlld19TbWFydF9E
YXRhICpzZCwgRXdrX0lucHV0X1R5cGUgdHlwZSwgY29uc3QgY2hhciAqdmFsdWUpOworICAgIEVp
bmFfQm9vbCAoKmlucHV0X3BpY2tlcl9oaWRlKShFd2tfVmlld19TbWFydF9EYXRhICpzZCwgRXdr
X0lucHV0X1R5cGUgdHlwZSk7CiB9OwogCiAvKioKICAqIFRoZSB2ZXJzaW9uIHlvdSBoYXZlIHRv
IHB1dCBpbnRvIHRoZSB2ZXJzaW9uIGZpZWxkCiAgKiBpbiB0aGUgQGEgRXdrX1ZpZXdfU21hcnRf
Q2xhc3Mgc3RydWN0dXJlLgogICovCi0jZGVmaW5lIEVXS19WSUVXX1NNQVJUX0NMQVNTX1ZFUlNJ
T04gM1VMCisjZGVmaW5lIEVXS19WSUVXX1NNQVJUX0NMQVNTX1ZFUlNJT04gNFVMCiAKIC8qKgog
ICogSW5pdGlhbGl6ZXIgZm9yIHdob2xlIEV3a19WaWV3X1NtYXJ0X0NsYXNzIHN0cnVjdHVyZS4K
QEAgLTEzMiw3ICsxNDYsNyBAQCBzdHJ1Y3QgX0V3a19WaWV3X1NtYXJ0X0NsYXNzIHsKICAqIEBz
ZWUgRVdLX1ZJRVdfU01BUlRfQ0xBU1NfSU5JVF9WRVJTSU9OCiAgKiBAc2VlIEVXS19WSUVXX1NN
QVJUX0NMQVNTX0lOSVRfTkFNRV9WRVJTSU9OCiAgKi8KLSNkZWZpbmUgRVdLX1ZJRVdfU01BUlRf
Q0xBU1NfSU5JVChzbWFydF9jbGFzc19pbml0KSB7c21hcnRfY2xhc3NfaW5pdCwgRVdLX1ZJRVdf
U01BUlRfQ0xBU1NfVkVSU0lPTiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMH0K
KyNkZWZpbmUgRVdLX1ZJRVdfU01BUlRfQ0xBU1NfSU5JVChzbWFydF9jbGFzc19pbml0KSB7c21h
cnRfY2xhc3NfaW5pdCwgRVdLX1ZJRVdfU01BUlRfQ0xBU1NfVkVSU0lPTiwgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMH0KIAogLyoqCiAgKiBJbml0aWFsaXplciB0byB6
ZXJvIGEgd2hvbGUgRXdrX1ZpZXdfU21hcnRfQ2xhc3Mgc3RydWN0dXJlLgpAQCAtNjU0LDYgKzY2
OCwxNiBAQCBFQVBJIEVpbmFfQm9vbCBld2tfdmlld19tb3VzZV9ldmVudHNfZW5hYmxlZF9zZXQo
RXZhc19PYmplY3QgKm8sIEVpbmFfQm9vbCBlbmFibAogICovCiBFQVBJIEVpbmFfQm9vbCBld2tf
dmlld19tb3VzZV9ldmVudHNfZW5hYmxlZF9nZXQoY29uc3QgRXZhc19PYmplY3QgKm8pOwogCisv
KgorICogU2V0cyB0aGUgY29sb3IgdmFsdWUgb2YgY29sb3IgY2hvb3NlcgorICoKKyAqIEBwYXJh
bSBvIHZpZXcgb2JqZWN0IGNvbnRhaW5zIGNvbG9yIGNob29zZXIKKyAqIEBwYXJhbSBjb2xvciAj
UkdCLCAjUlJHR0JCIG9yIG5hbWVkIGNvbG9yIHN0cmluZyB0byBiZSBzZXQKKyAqCisgKiBAcmV0
dXJuIEBjIEVJTkFfVFJVRSBvbiBzdWNjZXNzIEBjIEVJTkFfRkFMU0Ugb3RoZXJ3aXNlCisgKi8K
K0VBUEkgRWluYV9Cb29sIGV3a192aWV3X2NvbG9yX3BpY2tlcl9jb2xvcl9zZXQoRXZhc19PYmpl
Y3QgKm8sIGNvbnN0IGNoYXIgKmNvbG9yKTsKKwogI2lmZGVmIF9fY3BsdXNwbHVzCiB9CiAjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3
X3ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3X3By
aXZhdGUuaAppbmRleCBmY2Q2NWVlLi5hMjljNjBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlld19wcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXdfcHJpdmF0ZS5oCkBAIC0yMiw2ICsyMiw3IEBA
CiAjZGVmaW5lIGV3a192aWV3X3ByaXZhdGVfaAogCiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5Lmgi
CisjaW5jbHVkZSAiZXdrX3ZpZXcuaCIKICNpbmNsdWRlIDxFdmFzLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9UZXh0RGlyZWN0aW9uLmg+CiAjaW5jbHVkZSA8V2ViS2l0Mi9XS0Jhc2UuaD4KQEAgLTEw
MSw1ICsxMDIsMTEgQEAgYm9vbCBld2tfdmlld19hY2NlbGVyYXRlZF9jb21wb3NpdGluZ19tb2Rl
X2V4aXQoY29uc3QgRXZhc19PYmplY3QqIGV3a1ZpZXcpOwogI2VuZGlmCiAKIHZvaWQgZXdrX3Zp
ZXdfcG9wdXBfbWVudV9yZXF1ZXN0KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBXZWJLaXQ6OldlYlBv
cHVwTWVudVByb3h5RWZsKiBwb3B1cE1lbnUsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCBXZWJD
b3JlOjpUZXh0RGlyZWN0aW9uLCBkb3VibGUgcGFnZVNjYWxlRmFjdG9yLCBjb25zdCBWZWN0b3I8
V2ViS2l0OjpXZWJQb3B1cEl0ZW0+JiBpdGVtcywgaW50MzJfdCBzZWxlY3RlZEluZGV4KTsKK3Zv
aWQgZXdrX3ZpZXdfaW5wdXRfcGlja2VyX3Nob3coRXZhc19PYmplY3QqIGV3a1ZpZXcsIEV3a19J
bnB1dF9UeXBlIGlucHV0VHlwZSwgY29uc3QgU3RyaW5nJiBpbnB1dFZhbHVlKTsKK3ZvaWQgZXdr
X3ZpZXdfaW5wdXRfcGlja2VyX2hpZGUoRXZhc19PYmplY3QqIGV3a1ZpZXcsIEV3a19JbnB1dF9U
eXBlIGlucHV0VHlwZSk7CisKKyNpZiBFTkFCTEUoSU5QVVRfVFlQRV9DT0xPUikKK3ZvaWQgZXdr
X3ZpZXdfY29sb3JfcGlja2VyX3Nob3coRXZhc19PYmplY3QqIGV3a1ZpZXcsIGNvbnN0IFN0cmlu
ZyYgaW5wdXRWYWx1ZSwgV0tDb2xvclBpY2tlclJlc3VsdExpc3RlbmVyUmVmIGxpc3RlbmVyKTsK
KyNlbmRpZgogCiAjZW5kaWYgLy8gZXdrX3ZpZXdfcHJpdmF0ZV9oCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlld191aV9jbGllbnQuY3BwIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXdfdWlfY2xpZW50LmNwcAppbmRl
eCAxOGVkZTA4Li5jNWFkOWIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2VmbC9ld2tfdmlld191aV9jbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZWZsL2V3a192aWV3X3VpX2NsaWVudC5jcHAKQEAgLTQzLDYgKzQzLDE4IEBAIHN0
YXRpYyBXS1BhZ2VSZWYgY3JlYXRlTmV3UGFnZShXS1BhZ2VSZWYsIFdLVVJMUmVxdWVzdFJlZiwg
V0tEaWN0aW9uYXJ5UmVmLCBXS0V2CiAgICAgIHJldHVybiBld2tfdmlld19wYWdlX2NyZWF0ZSh0
b0V3a1ZpZXcoY2xpZW50SW5mbykpOwogfQogCisjaWYgRU5BQkxFKElOUFVUX1RZUEVfQ09MT1Ip
CitzdGF0aWMgdm9pZCBzaG93Q29sb3JQaWNrZXIoV0tQYWdlUmVmLCBXS1N0cmluZ1JlZiBpbml0
aWFsQ29sb3IsIFdLQ29sb3JQaWNrZXJSZXN1bHRMaXN0ZW5lclJlZiBsaXN0ZW5lciwgY29uc3Qg
dm9pZCogY2xpZW50SW5mbykKK3sKKyAgICBld2tfdmlld19jb2xvcl9waWNrZXJfc2hvdyh0b0V3
a1ZpZXcoY2xpZW50SW5mbyksIFdlYktpdDo6dG9XVEZTdHJpbmcoaW5pdGlhbENvbG9yKSwgbGlz
dGVuZXIpOworfQorCitzdGF0aWMgdm9pZCBoaWRlQ29sb3JQaWNrZXIoV0tQYWdlUmVmLCBjb25z
dCB2b2lkKiBjbGllbnRJbmZvKQoreworICAgIGV3a192aWV3X2lucHV0X3BpY2tlcl9oaWRlKHRv
RXdrVmlldyhjbGllbnRJbmZvKSwgRVdLX0lOUFVUX1RZUEVfQ09MT1IpOworfQorI2VuZGlmCisK
IHZvaWQgZXdrX3ZpZXdfdWlfY2xpZW50X2F0dGFjaChXS1BhZ2VSZWYgcGFnZVJlZiwgRXZhc19P
YmplY3QqIGV3a1ZpZXcpCiB7CiAgICAgV0tQYWdlVUlDbGllbnQgdWlDbGllbnQ7CkBAIC01MSw1
ICs2MywxMSBAQCB2b2lkIGV3a192aWV3X3VpX2NsaWVudF9hdHRhY2goV0tQYWdlUmVmIHBhZ2VS
ZWYsIEV2YXNfT2JqZWN0KiBld2tWaWV3KQogICAgIHVpQ2xpZW50LmNsaWVudEluZm8gPSBld2tW
aWV3OwogICAgIHVpQ2xpZW50LmNsb3NlID0gY2xvc2VQYWdlOwogICAgIHVpQ2xpZW50LmNyZWF0
ZU5ld1BhZ2UgPSBjcmVhdGVOZXdQYWdlOworCisjaWYgRU5BQkxFKElOUFVUX1RZUEVfQ09MT1Ip
CisgICAgdWlDbGllbnQuc2hvd0NvbG9yUGlja2VyID0gc2hvd0NvbG9yUGlja2VyOworICAgIHVp
Q2xpZW50LmhpZGVDb2xvclBpY2tlciA9IGhpZGVDb2xvclBpY2tlcjsKKyNlbmRpZgorCiAgICAg
V0tQYWdlU2V0UGFnZVVJQ2xpZW50KHBhZ2VSZWYsICZ1aUNsaWVudCk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy90ZXN0X2V3azJfdmlldy5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy90ZXN0X2V3azJfdmll
dy5jcHAKaW5kZXggNmU5MjhlZC4uM2U4OTRlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvdGVzdF9ld2syX3ZpZXcuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL3Rlc3RfZXdrMl92aWV3LmNwcApAQCAtMzYw
LDMgKzM2MCw4NSBAQCBURVNUX0YoRVdLMlVuaXRUZXN0QmFzZSwgZXdrX3ZpZXdfZnVsbF9zY3Jl
ZW5fZXhpdCkKICAgICBBU1NFUlRfVFJVRShmdWxsU2NyZWVuQ2FsbGJhY2tDYWxsZWQpOwogICAg
IGNoZWNrRnVsbFNjcmVlblByb3BlcnR5KHdlYlZpZXcoKSwgZmFsc2UpOwogfQorCisjaWYgRU5B
QkxFKElOUFVUX1RZUEVfQ09MT1IpCitzdGF0aWMgY29uc3QgY2hhciBpbml0aWFsQ29sb3JbXSA9
ICIjZmYwMDAwIjsKK3N0YXRpYyBjb25zdCBjaGFyIGNoYW5nZWRDb2xvcltdID0gIiMwMDAwZmYi
OworCitzdGF0aWMgYm9vbCBpc0NvbG9yUGlja2VyU2hvd24gPSBmYWxzZTsKKworc3RhdGljIHZv
aWQgY29sb3JQaWNrZXJEb25lQ2FsbGJhY2sodm9pZCogdXNlckRhdGEsIEV2YXNfT2JqZWN0Kiwg
dm9pZCopCit7CisgICAgYm9vbCogaGFuZGxlZCA9IHN0YXRpY19jYXN0PGJvb2wqPih1c2VyRGF0
YSk7CisKKyAgICAqaGFuZGxlZCA9IHRydWU7Cit9CisKK3N0YXRpYyB1bnNpZ25lZCBjaGFyIGNv
bG9yUGlja2VyQ29sb3JTZWxlY3RlZCh2b2lkKiBkYXRhKQoreworICAgIEV3a19WaWV3X1NtYXJ0
X0RhdGEqIHNtYXJ0RGF0YSA9IHN0YXRpY19jYXN0PEV3a19WaWV3X1NtYXJ0X0RhdGEqPihkYXRh
KTsKKworICAgIC8vIDQuIENoYW5nZSBjb2xvciB0byBjaGFuZ2VkQ29sb3IuCisgICAgRVhQRUNU
X1RSVUUoZXdrX3ZpZXdfY29sb3JfcGlja2VyX2NvbG9yX3NldChzbWFydERhdGEtPnNlbGYsIGNo
YW5nZWRDb2xvcikpOworCisgICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfY2FsbChzbWFy
dERhdGEtPnNlbGYsICJpbnB1dCx0eXBlLGNvbG9yLHJlcXVlc3QiLCAwKTsKKworICAgIHJldHVy
biAwOworfQorCitzdGF0aWMgRWluYV9Cb29sIHNob3dDb2xvclBpY2tlcihFd2tfVmlld19TbWFy
dF9EYXRhKiBzbWFydERhdGEsIEV3a19JbnB1dF9UeXBlIGlucHV0VHlwZSwgY29uc3QgY2hhciog
aW5wdXRWYWx1ZSkKK3sKKyAgICBzdGF0aWMgYm9vbCBpc0ZpcnN0UnVuID0gdHJ1ZTsKKworICAg
IGlzQ29sb3JQaWNrZXJTaG93biA9IHRydWU7CisKKyAgICBpZiAoaXNGaXJzdFJ1bikgeworICAg
ICAgICAvLyAxLiBDaGVjayB0eXBlIG9mIGlucHV0LgorICAgICAgICBFWFBFQ1RfRVEoaW5wdXRU
eXBlLCBFV0tfSU5QVVRfVFlQRV9DT0xPUik7CisgICAgICAgIC8vIDIuIENoZWNrIGluaXRpYWwg
dmFsdWUgZnJvbSBodG1sIGZpbGUuCisgICAgICAgIEVYUEVDVF9TVFJFUShpbnB1dFZhbHVlLCBp
bml0aWFsQ29sb3IpOworCisgICAgICAgIGlzRmlyc3RSdW4gPSBmYWxzZTsKKyAgICB9IGVsc2UK
KyAgICAgICAgLy8gNS4gaW5wdXRWYWx1ZSBzaG91bGQgYmUgY2hhbmdlZENvbG9yLgorICAgICAg
ICBFWFBFQ1RfU1RSRVEoaW5wdXRWYWx1ZSwgY2hhbmdlZENvbG9yKTsKKworICAgIC8vIDMuIFJl
dHVybiBhZnRlciBtYWtpbmcgYSBjb2xvciBwaWNrZXIuCisgICAgZWNvcmVfdGltZXJfYWRkKDAu
MCwgY29sb3JQaWNrZXJDb2xvclNlbGVjdGVkLCBzbWFydERhdGEpOworICAgIHJldHVybiB0cnVl
OworfQorCitzdGF0aWMgRWluYV9Cb29sIGhpZGVDb2xvclBpY2tlcihFd2tfVmlld19TbWFydF9E
YXRhKiBzbWFydERhdGEsIEV3a19JbnB1dF9UeXBlIGlucHV0VHlwZSkKK3sKKyAgICBFWFBFQ1Rf
RVEoaW5wdXRUeXBlLCBFV0tfSU5QVVRfVFlQRV9DT0xPUik7CisKKyAgICAvLyBUZXN0IGNvbG9y
IHBpY2tlciBpcyBzaG93bi4KKyAgICBFWFBFQ1RfVFJVRShpc0NvbG9yUGlja2VyU2hvd24pOwor
ICAgIGlzQ29sb3JQaWNrZXJTaG93biA9IGZhbHNlOworfQorCitURVNUX0YoRVdLMlVuaXRUZXN0
QmFzZSwgZXdrX3ZpZXdfY29sb3JfcGlja2VyX2NvbG9yX3NldCkKK3sKKyAgICBFd2tfVmlld19T
bWFydF9DbGFzcyogYXBpID0gZXdrVmlld0NsYXNzKCk7CisgICAgYXBpLT5pbnB1dF9waWNrZXJf
c2hvdyA9IHNob3dDb2xvclBpY2tlcjsKKyAgICBhcGktPmlucHV0X3BpY2tlcl9oaWRlID0gaGlk
ZUNvbG9yUGlja2VyOworCisgICAgbG9hZFVybFN5bmMoImRhdGE6dGV4dC9odG1sLDxpbnB1dCB0
eXBlPSdjb2xvcicgdmFsdWU9JyNmZjAwMDAnPiIpOworCisgICAgLy8gQ2xpY2sgaW5wdXQgZWxl
bWVudC4KKyAgICBtb3VzZUNsaWNrKDMwLCAyMCk7CisKKyAgICBib29sIGhhbmRsZWQgPSBmYWxz
ZTsKKyAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19hZGQod2ViVmlldygpLCAiaW5wdXQs
dHlwZSxjb2xvcixyZXF1ZXN0IiwgY29sb3JQaWNrZXJEb25lQ2FsbGJhY2ssICZoYW5kbGVkKTsK
KyAgICB3aGlsZSAoIWhhbmRsZWQpCisgICAgICAgIGVjb3JlX21haW5fbG9vcF9pdGVyYXRlKCk7
CisKKyAgICAvLyBDbGljayBpbnB1dCBlbGVtZW50IGFnYWluLgorICAgIG1vdXNlQ2xpY2soMzAs
IDIwKTsKKworICAgIGhhbmRsZWQgPSBmYWxzZTsKKyAgICB3aGlsZSAoIWhhbmRsZWQpCisgICAg
ICAgIGVjb3JlX21haW5fbG9vcF9pdGVyYXRlKCk7CisgICAgZXZhc19vYmplY3Rfc21hcnRfY2Fs
bGJhY2tfZGVsKHdlYlZpZXcoKSwgImlucHV0LHR5cGUsY29sb3IscmVxdWVzdCIsIGNvbG9yUGlj
a2VyRG9uZUNhbGxiYWNrKTsKK30KKyNlbmRpZiAvLyBFTkFCTEUoSU5QVVRfVFlQRV9DT0xPUikK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>164333</attachid>
            <date>2012-09-16 18:32:55 -0700</date>
            <delta_ts>2012-09-17 00:27:37 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>diff</filename>
            <type>text/plain</type>
            <size>12491</size>
            <attacher name="KwangYong Choi">ky0.choi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCAwZjliZTZkLi5lNWJlY2Q4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzUg
QEAKKzIwMTItMDktMTcgIEt3YW5nWW9uZyBDaG9pICA8a3kwLmNob2lAc2Ftc3VuZy5jb20+CisK
KyAgICAgICAgW0VGTF1bV0syXSBJbXBsZW1lbnRlZCBjb2xvciBwaWNrZXIgQVBJCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MTgzMgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBzdXBwb3J0IGZvciBj
b2xvciBwaWNrZXIgQVBJIGZvciBFRkwgcG9ydCBpbiBXZWJLaXQyLgorCisgICAgICAgIFRoZSBl
eHRlcm5hbCBhcHBsaWNhdGlvbiBjYW4gaW1wbGVtZW50IGlucHV0IHBpY2tlciBieSBvdmVycmlk
aW5nCisgICAgICAgIHNtYXJ0IGNsYXNzIGZ1bmN0aW9uLgorCisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9lZmwvZXdrX3ZpZXcuY3BwOgorICAgICAgICAoX0V3a19WaWV3X1ByaXZhdGVfRGF0YSk6
CisgICAgICAgIChfRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhOjpfRXdrX1ZpZXdfUHJpdmF0ZV9EYXRh
KToKKyAgICAgICAgKGV3a192aWV3X2lucHV0X3BpY2tlcl9zaG93KToKKyAgICAgICAgKGV3a192
aWV3X2lucHV0X3BpY2tlcl9oaWRlKToKKyAgICAgICAgKGV3a192aWV3X2NvbG9yX3BpY2tlcl9z
aG93KToKKyAgICAgICAgKGV3a192aWV3X2NvbG9yX3BpY2tlcl9jb2xvcl9zZXQpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9lZmwvZXdrX3ZpZXdfcHJpdmF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL2V3
a192aWV3X3VpX2NsaWVudC5jcHA6CisgICAgICAgIChzaG93Q29sb3JQaWNrZXIpOgorICAgICAg
ICAoaGlkZUNvbG9yUGlja2VyKToKKyAgICAgICAgKGV3a192aWV3X3VpX2NsaWVudF9hdHRhY2gp
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL3Rlc3RfZXdrMl92aWV3LmNwcDoK
KyAgICAgICAgKGNvbG9yUGlja2VyRG9uZUNhbGxiYWNrKToKKyAgICAgICAgKGNvbG9yUGlja2Vy
Q29sb3JTZWxlY3RlZCk6CisgICAgICAgIChzaG93Q29sb3JQaWNrZXIpOgorICAgICAgICAoaGlk
ZUNvbG9yUGlja2VyKToKKyAgICAgICAgKFRFU1RfRik6CisKIDIwMTItMDktMTUgIFZpdmVrIEdh
bGF0YWdlICA8dml2ZWtnYWxhdGFnZUBnbWFpbC5jb20+CiAKICAgICAgICAgV2luQ2Fpcm8gYnVp
bGQgZml4IGR1ZSB0byBtaXNzaW5nIHN5bWJvbHMgZm9yIHNldEltYWdlc0VuYWJsZWQgYW5kIHNl
dFN0b3JhZ2VCbG9ja2luZ1BvbGljeQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9lZmwvZXdrX3ZpZXcuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9l
ZmwvZXdrX3ZpZXcuY3BwCmluZGV4IDcyN2VhYmEuLjVhZWY5M2UgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5jcHAKQEAgLTI2LDYgKzI2LDcgQEAKICNp
bmNsdWRlICJOYXRpdmVXZWJXaGVlbEV2ZW50LmgiCiAjaW5jbHVkZSAiUGFnZUNsaWVudEltcGwu
aCIKICNpbmNsdWRlICJXS0FQSUNhc3QuaCIKKyNpbmNsdWRlICJXS0NvbG9yUGlja2VyUmVzdWx0
TGlzdGVuZXIuaCIKICNpbmNsdWRlICJXS0VpbmFTaGFyZWRTdHJpbmcuaCIKICNpbmNsdWRlICJX
S0ZpbmRPcHRpb25zLmgiCiAjaW5jbHVkZSAiV0tSZXRhaW5QdHIuaCIKQEAgLTk4LDYgKzk5LDcg
QEAgc3RydWN0IF9Fd2tfVmlld19Qcml2YXRlX0RhdGEgewogICAgIEV3a19CYWNrX0ZvcndhcmRf
TGlzdCogYmFja0ZvcndhcmRMaXN0OwogICAgIE93blB0cjxFd2tfU2V0dGluZ3M+IHNldHRpbmdz
OwogICAgIGJvb2wgYXJlTW91c2VFdmVudHNFbmFibGVkOworICAgIFdLQ29sb3JQaWNrZXJSZXN1
bHRMaXN0ZW5lclJlZiBjb2xvclBpY2tlclJlc3VsdExpc3RlbmVyOwogCiAgICAgV2ViUG9wdXBN
ZW51UHJveHlFZmwqIHBvcHVwTWVudVByb3h5OwogICAgIEVpbmFfTGlzdCogcG9wdXBNZW51SXRl
bXM7CkBAIC0xMTYsNiArMTE4LDcgQEAgc3RydWN0IF9Fd2tfVmlld19Qcml2YXRlX0RhdGEgewog
ICAgICAgICA6IGN1cnNvck9iamVjdCgwKQogICAgICAgICAsIGJhY2tGb3J3YXJkTGlzdCgwKQog
ICAgICAgICAsIGFyZU1vdXNlRXZlbnRzRW5hYmxlZChmYWxzZSkKKyAgICAgICAgLCBjb2xvclBp
Y2tlclJlc3VsdExpc3RlbmVyKDApCiAgICAgICAgICwgcG9wdXBNZW51UHJveHkoMCkKICAgICAg
ICAgLCBwb3B1cE1lbnVJdGVtcygwKQogI2lmZGVmIEhBVkVfRUNPUkVfWApAQCAtMTY0NiwzICsx
NjQ5LDU2IEBAIHZvaWQgZXdrX3ZpZXdfd2VicHJvY2Vzc19jcmFzaGVkKEV2YXNfT2JqZWN0KiBl
d2tWaWV3KQogICAgICAgICBld2tfdmlld19odG1sX3N0cmluZ19sb2FkKGV3a1ZpZXcsICJUaGUg
d2ViIHByb2Nlc3MgaGFzIGNyYXNoZWQuIiwgMCwgdXJsLmRhdGEoKSk7CiAgICAgfQogfQorCisv
KioKKyAqIEBpbnRlcm5hbAorICogUmVxdWVzdHMgdG8gc2hvdyBleHRlcm5hbCBpbnB1dCBwaWNr
ZXIgYmFzZWQgb24gaW5wdXRUeXBlLgorICovCit2b2lkIGV3a192aWV3X2lucHV0X3BpY2tlcl9z
aG93KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBFd2tfSW5wdXRfVHlwZSBpbnB1dFR5cGUsIGNvbnN0
IFN0cmluZyYgaW5wdXRWYWx1ZSkKK3sKKyAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3
a1ZpZXcsIHNtYXJ0RGF0YSk7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oc21hcnRE
YXRhLT5hcGkpOworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKHNtYXJ0RGF0YS0+YXBp
LT5pbnB1dF9waWNrZXJfc2hvdyk7CisKKyAgICBzbWFydERhdGEtPmFwaS0+aW5wdXRfcGlja2Vy
X3Nob3coc21hcnREYXRhLCBpbnB1dFR5cGUsIGlucHV0VmFsdWUudXRmOCgpLmRhdGEoKSk7Cit9
CisKKy8qKgorICogQGludGVybmFsCisgKiBSZXF1ZXN0cyB0byBoaWRlIGV4dGVybmFsIGlucHV0
IHBpY2tlciBiYXNlZCBvbiBpbnB1dFR5cGUuCisgKi8KK3ZvaWQgZXdrX3ZpZXdfaW5wdXRfcGlj
a2VyX2hpZGUoRXZhc19PYmplY3QqIGV3a1ZpZXcsIEV3a19JbnB1dF9UeXBlIGlucHV0VHlwZSkK
K3sKKyAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSk7Cisg
ICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oc21hcnREYXRhLT5hcGkpOworICAgIEVJTkFf
U0FGRVRZX09OX05VTExfUkVUVVJOKHNtYXJ0RGF0YS0+YXBpLT5pbnB1dF9waWNrZXJfaGlkZSk7
CisKKyAgICBzbWFydERhdGEtPmFwaS0+aW5wdXRfcGlja2VyX2hpZGUoc21hcnREYXRhLCBpbnB1
dFR5cGUpOworfQorCisvKioKKyAqIEBpbnRlcm5hbAorICogUmVxZXVzdHMgdG8gc2hvdyBleHRl
cm5hbCBjb2xvciBwaWNrZXIuCisgKi8KK3ZvaWQgZXdrX3ZpZXdfY29sb3JfcGlja2VyX3Nob3co
RXZhc19PYmplY3QqIGV3a1ZpZXcsIGNvbnN0IFN0cmluZyYgaW5wdXRWYWx1ZSwgV0tDb2xvclBp
Y2tlclJlc3VsdExpc3RlbmVyUmVmIGxpc3RlbmVyKQoreworICAgIEVXS19WSUVXX1NEX0dFVF9P
Ul9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhKTsKKyAgICBFV0tfVklFV19QUklWX0dFVF9PUl9S
RVRVUk4oc21hcnREYXRhLCBwcml2KTsKKworICAgIHByaXYtPmNvbG9yUGlja2VyUmVzdWx0TGlz
dGVuZXIgPSBsaXN0ZW5lcjsKKworICAgIGV3a192aWV3X2lucHV0X3BpY2tlcl9zaG93KGV3a1Zp
ZXcsIEVXS19JTlBVVF9UWVBFX0NPTE9SLCBpbnB1dFZhbHVlKTsKK30KKworRWluYV9Cb29sIGV3
a192aWV3X2NvbG9yX3BpY2tlcl9jb2xvcl9zZXQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIGNvbnN0
IGNoYXIqIGNvbG9yKQoreworICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywg
c21hcnREYXRhLCBmYWxzZSk7CisgICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNtYXJ0
RGF0YSwgcHJpdiwgZmFsc2UpOworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChw
cml2LT5jb2xvclBpY2tlclJlc3VsdExpc3RlbmVyLCBmYWxzZSk7CisgICAgRUlOQV9TQUZFVFlf
T05fTlVMTF9SRVRVUk5fVkFMKGNvbG9yLCBmYWxzZSk7CisKKyAgICBXS0NvbG9yUGlja2VyUmVz
dWx0TGlzdGVuZXJTZXRDb2xvcihwcml2LT5jb2xvclBpY2tlclJlc3VsdExpc3RlbmVyLCBXS1N0
cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZyhjb2xvcikpOworICAgIHByaXYtPmNvbG9yUGlja2Vy
UmVzdWx0TGlzdGVuZXIgPSAwOworCisgICAgcmV0dXJuIHRydWU7Cit9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5oIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuaAppbmRleCA5OTZhMmJiLi5kYmU5NGU2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5oCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmgKQEAgLTk0LDYg
Kzk0LDE2IEBAIHR5cGVkZWYgZW51bSB7CiB0eXBlZGVmIHN0cnVjdCBfRXdrX1ZpZXdfU21hcnRf
RGF0YSBFd2tfVmlld19TbWFydF9EYXRhOwogdHlwZWRlZiBzdHJ1Y3QgX0V3a19WaWV3X1NtYXJ0
X0NsYXNzIEV3a19WaWV3X1NtYXJ0X0NsYXNzOwogCisvKioKKyAqIFxlbnVtICAgIEV3a19JbnB1
dF9UeXBlCisgKiBAYnJpZWYgICBQcm92aWRlcyB0eXBlIG9mIGlucHV0IGVsZW1lbnQKKyAqLwor
ZW51bSBfRXdrX0lucHV0X1R5cGUgeworICAgIEVXS19JTlBVVF9UWVBFX0NPTE9SCit9OworLyoq
IENyZWF0ZXMgYSB0eXBlIG5hbWUgZm9yIF9Fd2tfSW5wdXRfVHlwZV9Fd2tfSW5wdXRfVHlwZSAq
LwordHlwZWRlZiBlbnVtIF9Fd2tfSW5wdXRfVHlwZSBFd2tfSW5wdXRfVHlwZTsKKwogLy8vIEV3
ayB2aWV3J3MgY2xhc3MsIHRvIGJlIG92ZXJyaWRkZW4gYnkgc3ViLWNsYXNzZXMuCiBzdHJ1Y3Qg
X0V3a19WaWV3X1NtYXJ0X0NsYXNzIHsKICAgICBFdmFzX1NtYXJ0X0NsYXNzIHNjOyAvKio8IGFs
bCBidXQgJ2RhdGEnIGlzIGZyZWUgdG8gYmUgY2hhbmdlZC4gKi8KQEAgLTExNSwxMyArMTI1LDE3
IEBAIHN0cnVjdCBfRXdrX1ZpZXdfU21hcnRfQ2xhc3MgewogICAgIEVpbmFfQm9vbCAoKm1vdXNl
X21vdmUpKEV3a19WaWV3X1NtYXJ0X0RhdGEgKnNkLCBjb25zdCBFdmFzX0V2ZW50X01vdXNlX01v
dmUgKmV2KTsKICAgICBFaW5hX0Jvb2wgKCprZXlfZG93bikoRXdrX1ZpZXdfU21hcnRfRGF0YSAq
c2QsIGNvbnN0IEV2YXNfRXZlbnRfS2V5X0Rvd24gKmV2KTsKICAgICBFaW5hX0Jvb2wgKCprZXlf
dXApKEV3a19WaWV3X1NtYXJ0X0RhdGEgKnNkLCBjb25zdCBFdmFzX0V2ZW50X0tleV9VcCAqZXYp
OworCisgICAgLy8gSW5wdXQgUGlja2VyIEFQSQorICAgIEVpbmFfQm9vbCAoKmlucHV0X3BpY2tl
cl9zaG93KShFd2tfVmlld19TbWFydF9EYXRhICpzZCwgRXdrX0lucHV0X1R5cGUgdHlwZSwgY29u
c3QgY2hhciAqdmFsdWUpOworICAgIEVpbmFfQm9vbCAoKmlucHV0X3BpY2tlcl9oaWRlKShFd2tf
Vmlld19TbWFydF9EYXRhICpzZCwgRXdrX0lucHV0X1R5cGUgdHlwZSk7CiB9OwogCiAvKioKICAq
IFRoZSB2ZXJzaW9uIHlvdSBoYXZlIHRvIHB1dCBpbnRvIHRoZSB2ZXJzaW9uIGZpZWxkCiAgKiBp
biB0aGUgQGEgRXdrX1ZpZXdfU21hcnRfQ2xhc3Mgc3RydWN0dXJlLgogICovCi0jZGVmaW5lIEVX
S19WSUVXX1NNQVJUX0NMQVNTX1ZFUlNJT04gM1VMCisjZGVmaW5lIEVXS19WSUVXX1NNQVJUX0NM
QVNTX1ZFUlNJT04gNFVMCiAKIC8qKgogICogSW5pdGlhbGl6ZXIgZm9yIHdob2xlIEV3a19WaWV3
X1NtYXJ0X0NsYXNzIHN0cnVjdHVyZS4KQEAgLTEzMyw3ICsxNDcsNyBAQCBzdHJ1Y3QgX0V3a19W
aWV3X1NtYXJ0X0NsYXNzIHsKICAqIEBzZWUgRVdLX1ZJRVdfU01BUlRfQ0xBU1NfSU5JVF9WRVJT
SU9OCiAgKiBAc2VlIEVXS19WSUVXX1NNQVJUX0NMQVNTX0lOSVRfTkFNRV9WRVJTSU9OCiAgKi8K
LSNkZWZpbmUgRVdLX1ZJRVdfU01BUlRfQ0xBU1NfSU5JVChzbWFydF9jbGFzc19pbml0KSB7c21h
cnRfY2xhc3NfaW5pdCwgRVdLX1ZJRVdfU01BUlRfQ0xBU1NfVkVSU0lPTiwgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMH0KKyNkZWZpbmUgRVdLX1ZJRVdfU01BUlRfQ0xBU1NfSU5J
VChzbWFydF9jbGFzc19pbml0KSB7c21hcnRfY2xhc3NfaW5pdCwgRVdLX1ZJRVdfU01BUlRfQ0xB
U1NfVkVSU0lPTiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMH0KIAog
LyoqCiAgKiBJbml0aWFsaXplciB0byB6ZXJvIGEgd2hvbGUgRXdrX1ZpZXdfU21hcnRfQ2xhc3Mg
c3RydWN0dXJlLgpAQCAtNjU1LDYgKzY2OSwxNiBAQCBFQVBJIEVpbmFfQm9vbCBld2tfdmlld19t
b3VzZV9ldmVudHNfZW5hYmxlZF9zZXQoRXZhc19PYmplY3QgKm8sIEVpbmFfQm9vbCBlbmFibAog
ICovCiBFQVBJIEVpbmFfQm9vbCBld2tfdmlld19tb3VzZV9ldmVudHNfZW5hYmxlZF9nZXQoY29u
c3QgRXZhc19PYmplY3QgKm8pOwogCisvKgorICogU2V0cyB0aGUgY29sb3IgdmFsdWUgb2YgY29s
b3IgY2hvb3NlcgorICoKKyAqIEBwYXJhbSBvIHZpZXcgb2JqZWN0IGNvbnRhaW5zIGNvbG9yIGNo
b29zZXIKKyAqIEBwYXJhbSBjb2xvciAjUkdCLCAjUlJHR0JCIG9yIG5hbWVkIGNvbG9yIHN0cmlu
ZyB0byBiZSBzZXQKKyAqCisgKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBvbiBzdWNjZXNzIEBjIEVJ
TkFfRkFMU0Ugb3RoZXJ3aXNlCisgKi8KK0VBUEkgRWluYV9Cb29sIGV3a192aWV3X2NvbG9yX3Bp
Y2tlcl9jb2xvcl9zZXQoRXZhc19PYmplY3QgKm8sIGNvbnN0IGNoYXIgKmNvbG9yKTsKKwogI2lm
ZGVmIF9fY3BsdXNwbHVzCiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3X3ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZWZsL2V3a192aWV3X3ByaXZhdGUuaAppbmRleCA4OGY5YWFiLi41YjM2MGE4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlld19wcml2
YXRlLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXdfcHJp
dmF0ZS5oCkBAIC0yMiw2ICsyMiw3IEBACiAjZGVmaW5lIGV3a192aWV3X3ByaXZhdGVfaAogCiAj
aW5jbHVkZSAiV2ViUGFnZVByb3h5LmgiCisjaW5jbHVkZSAiZXdrX3ZpZXcuaCIKICNpbmNsdWRl
IDxFdmFzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9UZXh0RGlyZWN0aW9uLmg+CiAjaW5jbHVkZSA8
V2ViS2l0Mi9XS0Jhc2UuaD4KQEAgLTEwMiw1ICsxMDMsOCBAQCBib29sIGV3a192aWV3X2FjY2Vs
ZXJhdGVkX2NvbXBvc2l0aW5nX21vZGVfZXhpdChjb25zdCBFdmFzX09iamVjdCogZXdrVmlldyk7
CiAKIHZvaWQgZXdrX3ZpZXdfcG9wdXBfbWVudV9yZXF1ZXN0KEV2YXNfT2JqZWN0KiBld2tWaWV3
LCBXZWJLaXQ6OldlYlBvcHVwTWVudVByb3h5RWZsKiBwb3B1cE1lbnUsIGNvbnN0IFdlYkNvcmU6
OkludFJlY3QmLCBXZWJDb3JlOjpUZXh0RGlyZWN0aW9uLCBkb3VibGUgcGFnZVNjYWxlRmFjdG9y
LCBjb25zdCBWZWN0b3I8V2ViS2l0OjpXZWJQb3B1cEl0ZW0+JiBpdGVtcywgaW50MzJfdCBzZWxl
Y3RlZEluZGV4KTsKIHZvaWQgZXdrX3ZpZXdfd2VicHJvY2Vzc19jcmFzaGVkKEV2YXNfT2JqZWN0
KiBld2tWaWV3KTsKK3ZvaWQgZXdrX3ZpZXdfaW5wdXRfcGlja2VyX3Nob3coRXZhc19PYmplY3Qq
IGV3a1ZpZXcsIEV3a19JbnB1dF9UeXBlIGlucHV0VHlwZSwgY29uc3QgU3RyaW5nJiBpbnB1dFZh
bHVlKTsKK3ZvaWQgZXdrX3ZpZXdfaW5wdXRfcGlja2VyX2hpZGUoRXZhc19PYmplY3QqIGV3a1Zp
ZXcsIEV3a19JbnB1dF9UeXBlIGlucHV0VHlwZSk7Cit2b2lkIGV3a192aWV3X2NvbG9yX3BpY2tl
cl9zaG93KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBjb25zdCBTdHJpbmcmIGlucHV0VmFsdWUsIFdL
Q29sb3JQaWNrZXJSZXN1bHRMaXN0ZW5lclJlZiBsaXN0ZW5lcik7CiAKICNlbmRpZiAvLyBld2tf
dmlld19wcml2YXRlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
ZWZsL2V3a192aWV3X3VpX2NsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2VmbC9ld2tfdmlld191aV9jbGllbnQuY3BwCmluZGV4IDE4ZWRlMDguLjAzYzU4MTAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3X3VpX2NsaWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXdfdWlf
Y2xpZW50LmNwcApAQCAtNDMsNiArNDMsMTYgQEAgc3RhdGljIFdLUGFnZVJlZiBjcmVhdGVOZXdQ
YWdlKFdLUGFnZVJlZiwgV0tVUkxSZXF1ZXN0UmVmLCBXS0RpY3Rpb25hcnlSZWYsIFdLRXYKICAg
ICAgcmV0dXJuIGV3a192aWV3X3BhZ2VfY3JlYXRlKHRvRXdrVmlldyhjbGllbnRJbmZvKSk7CiB9
CiAKK3N0YXRpYyB2b2lkIHNob3dDb2xvclBpY2tlcihXS1BhZ2VSZWYsIFdLU3RyaW5nUmVmIGlu
aXRpYWxDb2xvciwgV0tDb2xvclBpY2tlclJlc3VsdExpc3RlbmVyUmVmIGxpc3RlbmVyLCBjb25z
dCB2b2lkKiBjbGllbnRJbmZvKQoreworICAgIGV3a192aWV3X2NvbG9yX3BpY2tlcl9zaG93KHRv
RXdrVmlldyhjbGllbnRJbmZvKSwgV2ViS2l0Ojp0b1dURlN0cmluZyhpbml0aWFsQ29sb3IpLCBs
aXN0ZW5lcik7Cit9CisKK3N0YXRpYyB2b2lkIGhpZGVDb2xvclBpY2tlcihXS1BhZ2VSZWYsIGNv
bnN0IHZvaWQqIGNsaWVudEluZm8pCit7CisgICAgZXdrX3ZpZXdfaW5wdXRfcGlja2VyX2hpZGUo
dG9Fd2tWaWV3KGNsaWVudEluZm8pLCBFV0tfSU5QVVRfVFlQRV9DT0xPUik7Cit9CisKIHZvaWQg
ZXdrX3ZpZXdfdWlfY2xpZW50X2F0dGFjaChXS1BhZ2VSZWYgcGFnZVJlZiwgRXZhc19PYmplY3Qq
IGV3a1ZpZXcpCiB7CiAgICAgV0tQYWdlVUlDbGllbnQgdWlDbGllbnQ7CkBAIC01MSw1ICs2MSw3
IEBAIHZvaWQgZXdrX3ZpZXdfdWlfY2xpZW50X2F0dGFjaChXS1BhZ2VSZWYgcGFnZVJlZiwgRXZh
c19PYmplY3QqIGV3a1ZpZXcpCiAgICAgdWlDbGllbnQuY2xpZW50SW5mbyA9IGV3a1ZpZXc7CiAg
ICAgdWlDbGllbnQuY2xvc2UgPSBjbG9zZVBhZ2U7CiAgICAgdWlDbGllbnQuY3JlYXRlTmV3UGFn
ZSA9IGNyZWF0ZU5ld1BhZ2U7CisgICAgdWlDbGllbnQuc2hvd0NvbG9yUGlja2VyID0gc2hvd0Nv
bG9yUGlja2VyOworICAgIHVpQ2xpZW50LmhpZGVDb2xvclBpY2tlciA9IGhpZGVDb2xvclBpY2tl
cjsKICAgICBXS1BhZ2VTZXRQYWdlVUlDbGllbnQocGFnZVJlZiwgJnVpQ2xpZW50KTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL3Rlc3RfZXdr
Ml92aWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL3Rlc3Rf
ZXdrMl92aWV3LmNwcAppbmRleCA2ZTkyOGVkLi4zZTg5NGUzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy90ZXN0X2V3azJfdmlldy5jcHAKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvdGVzdF9ld2syX3ZpZXcuY3Bw
CkBAIC0zNjAsMyArMzYwLDg1IEBAIFRFU1RfRihFV0syVW5pdFRlc3RCYXNlLCBld2tfdmlld19m
dWxsX3NjcmVlbl9leGl0KQogICAgIEFTU0VSVF9UUlVFKGZ1bGxTY3JlZW5DYWxsYmFja0NhbGxl
ZCk7CiAgICAgY2hlY2tGdWxsU2NyZWVuUHJvcGVydHkod2ViVmlldygpLCBmYWxzZSk7CiB9CisK
KyNpZiBFTkFCTEUoSU5QVVRfVFlQRV9DT0xPUikKK3N0YXRpYyBjb25zdCBjaGFyIGluaXRpYWxD
b2xvcltdID0gIiNmZjAwMDAiOworc3RhdGljIGNvbnN0IGNoYXIgY2hhbmdlZENvbG9yW10gPSAi
IzAwMDBmZiI7CisKK3N0YXRpYyBib29sIGlzQ29sb3JQaWNrZXJTaG93biA9IGZhbHNlOworCitz
dGF0aWMgdm9pZCBjb2xvclBpY2tlckRvbmVDYWxsYmFjayh2b2lkKiB1c2VyRGF0YSwgRXZhc19P
YmplY3QqLCB2b2lkKikKK3sKKyAgICBib29sKiBoYW5kbGVkID0gc3RhdGljX2Nhc3Q8Ym9vbCo+
KHVzZXJEYXRhKTsKKworICAgICpoYW5kbGVkID0gdHJ1ZTsKK30KKworc3RhdGljIHVuc2lnbmVk
IGNoYXIgY29sb3JQaWNrZXJDb2xvclNlbGVjdGVkKHZvaWQqIGRhdGEpCit7CisgICAgRXdrX1Zp
ZXdfU21hcnRfRGF0YSogc21hcnREYXRhID0gc3RhdGljX2Nhc3Q8RXdrX1ZpZXdfU21hcnRfRGF0
YSo+KGRhdGEpOworCisgICAgLy8gNC4gQ2hhbmdlIGNvbG9yIHRvIGNoYW5nZWRDb2xvci4KKyAg
ICBFWFBFQ1RfVFJVRShld2tfdmlld19jb2xvcl9waWNrZXJfY29sb3Jfc2V0KHNtYXJ0RGF0YS0+
c2VsZiwgY2hhbmdlZENvbG9yKSk7CisKKyAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19j
YWxsKHNtYXJ0RGF0YS0+c2VsZiwgImlucHV0LHR5cGUsY29sb3IscmVxdWVzdCIsIDApOworCisg
ICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBFaW5hX0Jvb2wgc2hvd0NvbG9yUGlja2VyKEV3a19W
aWV3X1NtYXJ0X0RhdGEqIHNtYXJ0RGF0YSwgRXdrX0lucHV0X1R5cGUgaW5wdXRUeXBlLCBjb25z
dCBjaGFyKiBpbnB1dFZhbHVlKQoreworICAgIHN0YXRpYyBib29sIGlzRmlyc3RSdW4gPSB0cnVl
OworCisgICAgaXNDb2xvclBpY2tlclNob3duID0gdHJ1ZTsKKworICAgIGlmIChpc0ZpcnN0UnVu
KSB7CisgICAgICAgIC8vIDEuIENoZWNrIHR5cGUgb2YgaW5wdXQuCisgICAgICAgIEVYUEVDVF9F
UShpbnB1dFR5cGUsIEVXS19JTlBVVF9UWVBFX0NPTE9SKTsKKyAgICAgICAgLy8gMi4gQ2hlY2sg
aW5pdGlhbCB2YWx1ZSBmcm9tIGh0bWwgZmlsZS4KKyAgICAgICAgRVhQRUNUX1NUUkVRKGlucHV0
VmFsdWUsIGluaXRpYWxDb2xvcik7CisKKyAgICAgICAgaXNGaXJzdFJ1biA9IGZhbHNlOworICAg
IH0gZWxzZQorICAgICAgICAvLyA1LiBpbnB1dFZhbHVlIHNob3VsZCBiZSBjaGFuZ2VkQ29sb3Iu
CisgICAgICAgIEVYUEVDVF9TVFJFUShpbnB1dFZhbHVlLCBjaGFuZ2VkQ29sb3IpOworCisgICAg
Ly8gMy4gUmV0dXJuIGFmdGVyIG1ha2luZyBhIGNvbG9yIHBpY2tlci4KKyAgICBlY29yZV90aW1l
cl9hZGQoMC4wLCBjb2xvclBpY2tlckNvbG9yU2VsZWN0ZWQsIHNtYXJ0RGF0YSk7CisgICAgcmV0
dXJuIHRydWU7Cit9CisKK3N0YXRpYyBFaW5hX0Jvb2wgaGlkZUNvbG9yUGlja2VyKEV3a19WaWV3
X1NtYXJ0X0RhdGEqIHNtYXJ0RGF0YSwgRXdrX0lucHV0X1R5cGUgaW5wdXRUeXBlKQoreworICAg
IEVYUEVDVF9FUShpbnB1dFR5cGUsIEVXS19JTlBVVF9UWVBFX0NPTE9SKTsKKworICAgIC8vIFRl
c3QgY29sb3IgcGlja2VyIGlzIHNob3duLgorICAgIEVYUEVDVF9UUlVFKGlzQ29sb3JQaWNrZXJT
aG93bik7CisgICAgaXNDb2xvclBpY2tlclNob3duID0gZmFsc2U7Cit9CisKK1RFU1RfRihFV0sy
VW5pdFRlc3RCYXNlLCBld2tfdmlld19jb2xvcl9waWNrZXJfY29sb3Jfc2V0KQoreworICAgIEV3
a19WaWV3X1NtYXJ0X0NsYXNzKiBhcGkgPSBld2tWaWV3Q2xhc3MoKTsKKyAgICBhcGktPmlucHV0
X3BpY2tlcl9zaG93ID0gc2hvd0NvbG9yUGlja2VyOworICAgIGFwaS0+aW5wdXRfcGlja2VyX2hp
ZGUgPSBoaWRlQ29sb3JQaWNrZXI7CisKKyAgICBsb2FkVXJsU3luYygiZGF0YTp0ZXh0L2h0bWws
PGlucHV0IHR5cGU9J2NvbG9yJyB2YWx1ZT0nI2ZmMDAwMCc+Iik7CisKKyAgICAvLyBDbGljayBp
bnB1dCBlbGVtZW50LgorICAgIG1vdXNlQ2xpY2soMzAsIDIwKTsKKworICAgIGJvb2wgaGFuZGxl
ZCA9IGZhbHNlOworICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2FkZCh3ZWJWaWV3KCks
ICJpbnB1dCx0eXBlLGNvbG9yLHJlcXVlc3QiLCBjb2xvclBpY2tlckRvbmVDYWxsYmFjaywgJmhh
bmRsZWQpOworICAgIHdoaWxlICghaGFuZGxlZCkKKyAgICAgICAgZWNvcmVfbWFpbl9sb29wX2l0
ZXJhdGUoKTsKKworICAgIC8vIENsaWNrIGlucHV0IGVsZW1lbnQgYWdhaW4uCisgICAgbW91c2VD
bGljaygzMCwgMjApOworCisgICAgaGFuZGxlZCA9IGZhbHNlOworICAgIHdoaWxlICghaGFuZGxl
ZCkKKyAgICAgICAgZWNvcmVfbWFpbl9sb29wX2l0ZXJhdGUoKTsKKyAgICBldmFzX29iamVjdF9z
bWFydF9jYWxsYmFja19kZWwod2ViVmlldygpLCAiaW5wdXQsdHlwZSxjb2xvcixyZXF1ZXN0Iiwg
Y29sb3JQaWNrZXJEb25lQ2FsbGJhY2spOworfQorI2VuZGlmIC8vIEVOQUJMRShJTlBVVF9UWVBF
X0NPTE9SKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>164348</attachid>
            <date>2012-09-17 00:27:52 -0700</date>
            <delta_ts>2012-09-17 23:26:13 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-91832-20120917162719.patch</filename>
            <type>text/plain</type>
            <size>13139</size>
            <attacher name="KwangYong Choi">ky0.choi</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI4NzE0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMGY5YmU2ZDBhNmYwNzE3
MGM3Njc0NTQ5Y2Y5NTBkODdlMGFlNGJjYi4uZTViZWNkOGZiYjgwNTQ1Nzk1NTNhZDNjNmNlODYw
ZjVlZDMwZmY1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1IEBACisyMDEyLTA5LTE3ICBLd2Fu
Z1lvbmcgQ2hvaSAgPGt5MC5jaG9pQHNhbXN1bmcuY29tPgorCisgICAgICAgIFtFRkxdW1dLMl0g
SW1wbGVtZW50ZWQgY29sb3IgcGlja2VyIEFQSQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTE4MzIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBBZGQgc3VwcG9ydCBmb3IgY29sb3IgcGlja2VyIEFQSSBmb3Ig
RUZMIHBvcnQgaW4gV2ViS2l0Mi4KKworICAgICAgICBUaGUgZXh0ZXJuYWwgYXBwbGljYXRpb24g
Y2FuIGltcGxlbWVudCBpbnB1dCBwaWNrZXIgYnkgb3ZlcnJpZGluZworICAgICAgICBzbWFydCBj
bGFzcyBmdW5jdGlvbi4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmNw
cDoKKyAgICAgICAgKF9Fd2tfVmlld19Qcml2YXRlX0RhdGEpOgorICAgICAgICAoX0V3a19WaWV3
X1ByaXZhdGVfRGF0YTo6X0V3a19WaWV3X1ByaXZhdGVfRGF0YSk6CisgICAgICAgIChld2tfdmll
d19pbnB1dF9waWNrZXJfc2hvdyk6CisgICAgICAgIChld2tfdmlld19pbnB1dF9waWNrZXJfaGlk
ZSk6CisgICAgICAgIChld2tfdmlld19jb2xvcl9waWNrZXJfc2hvdyk6CisgICAgICAgIChld2tf
dmlld19jb2xvcl9waWNrZXJfY29sb3Jfc2V0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2Vm
bC9ld2tfdmlldy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3X3ByaXZh
dGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlld191aV9jbGllbnQuY3Bw
OgorICAgICAgICAoc2hvd0NvbG9yUGlja2VyKToKKyAgICAgICAgKGhpZGVDb2xvclBpY2tlcik6
CisgICAgICAgIChld2tfdmlld191aV9jbGllbnRfYXR0YWNoKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL2VmbC90ZXN0cy90ZXN0X2V3azJfdmlldy5jcHA6CisgICAgICAgIChjb2xvclBpY2tl
ckRvbmVDYWxsYmFjayk6CisgICAgICAgIChjb2xvclBpY2tlckNvbG9yU2VsZWN0ZWQpOgorICAg
ICAgICAoc2hvd0NvbG9yUGlja2VyKToKKyAgICAgICAgKGhpZGVDb2xvclBpY2tlcik6CisgICAg
ICAgIChURVNUX0YpOgorCiAyMDEyLTA5LTE1ICBWaXZlayBHYWxhdGFnZSAgPHZpdmVrZ2FsYXRh
Z2VAZ21haWwuY29tPgogCiAgICAgICAgIFdpbkNhaXJvIGJ1aWxkIGZpeCBkdWUgdG8gbWlzc2lu
ZyBzeW1ib2xzIGZvciBzZXRJbWFnZXNFbmFibGVkIGFuZCBzZXRTdG9yYWdlQmxvY2tpbmdQb2xp
Y3kKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmNwcAppbmRl
eCA3MjdlYWJhYmU0NGY5NDU2ZjdmMWQwNzRmOTRiZGZmZmYxOWU5Y2YwLi43NGYxNzQ3OTI5MmRh
YzJkOGU5ZjZlMzY0NmI5ZTA3YTExNWE2MjBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9lZmwvZXdrX3ZpZXcuY3BwCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAiTmF0
aXZlV2ViV2hlZWxFdmVudC5oIgogI2luY2x1ZGUgIlBhZ2VDbGllbnRJbXBsLmgiCiAjaW5jbHVk
ZSAiV0tBUElDYXN0LmgiCisjaW5jbHVkZSAiV0tDb2xvclBpY2tlclJlc3VsdExpc3RlbmVyLmgi
CiAjaW5jbHVkZSAiV0tFaW5hU2hhcmVkU3RyaW5nLmgiCiAjaW5jbHVkZSAiV0tGaW5kT3B0aW9u
cy5oIgogI2luY2x1ZGUgIldLUmV0YWluUHRyLmgiCkBAIC05OCw2ICs5OSw3IEBAIHN0cnVjdCBf
RXdrX1ZpZXdfUHJpdmF0ZV9EYXRhIHsKICAgICBFd2tfQmFja19Gb3J3YXJkX0xpc3QqIGJhY2tG
b3J3YXJkTGlzdDsKICAgICBPd25QdHI8RXdrX1NldHRpbmdzPiBzZXR0aW5nczsKICAgICBib29s
IGFyZU1vdXNlRXZlbnRzRW5hYmxlZDsKKyAgICBXS0NvbG9yUGlja2VyUmVzdWx0TGlzdGVuZXJS
ZWYgY29sb3JQaWNrZXJSZXN1bHRMaXN0ZW5lcjsKIAogICAgIFdlYlBvcHVwTWVudVByb3h5RWZs
KiBwb3B1cE1lbnVQcm94eTsKICAgICBFaW5hX0xpc3QqIHBvcHVwTWVudUl0ZW1zOwpAQCAtMTE2
LDYgKzExOCw3IEBAIHN0cnVjdCBfRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhIHsKICAgICAgICAgOiBj
dXJzb3JPYmplY3QoMCkKICAgICAgICAgLCBiYWNrRm9yd2FyZExpc3QoMCkKICAgICAgICAgLCBh
cmVNb3VzZUV2ZW50c0VuYWJsZWQoZmFsc2UpCisgICAgICAgICwgY29sb3JQaWNrZXJSZXN1bHRM
aXN0ZW5lcigwKQogICAgICAgICAsIHBvcHVwTWVudVByb3h5KDApCiAgICAgICAgICwgcG9wdXBN
ZW51SXRlbXMoMCkKICNpZmRlZiBIQVZFX0VDT1JFX1gKQEAgLTE2NDYsMyArMTY0OSw2MiBAQCB2
b2lkIGV3a192aWV3X3dlYnByb2Nlc3NfY3Jhc2hlZChFdmFzX09iamVjdCogZXdrVmlldykKICAg
ICAgICAgZXdrX3ZpZXdfaHRtbF9zdHJpbmdfbG9hZChld2tWaWV3LCAiVGhlIHdlYiBwcm9jZXNz
IGhhcyBjcmFzaGVkLiIsIDAsIHVybC5kYXRhKCkpOwogICAgIH0KIH0KKworLyoqCisgKiBAaW50
ZXJuYWwKKyAqIFJlcXVlc3RzIHRvIHNob3cgZXh0ZXJuYWwgaW5wdXQgcGlja2VyIGJhc2VkIG9u
IGlucHV0VHlwZS4KKyAqLwordm9pZCBld2tfdmlld19pbnB1dF9waWNrZXJfc2hvdyhFdmFzX09i
amVjdCogZXdrVmlldywgRXdrX0lucHV0X1R5cGUgaW5wdXRUeXBlLCBjb25zdCBTdHJpbmcmIGlu
cHV0VmFsdWUpCit7CisgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFy
dERhdGEpOworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKHNtYXJ0RGF0YS0+YXBpKTsK
KyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTihzbWFydERhdGEtPmFwaS0+aW5wdXRfcGlj
a2VyX3Nob3cpOworCisgICAgc21hcnREYXRhLT5hcGktPmlucHV0X3BpY2tlcl9zaG93KHNtYXJ0
RGF0YSwgaW5wdXRUeXBlLCBpbnB1dFZhbHVlLnV0ZjgoKS5kYXRhKCkpOworfQorCisvKioKKyAq
IEBpbnRlcm5hbAorICogUmVxdWVzdHMgdG8gaGlkZSBleHRlcm5hbCBpbnB1dCBwaWNrZXIgYmFz
ZWQgb24gaW5wdXRUeXBlLgorICovCit2b2lkIGV3a192aWV3X2lucHV0X3BpY2tlcl9oaWRlKEV2
YXNfT2JqZWN0KiBld2tWaWV3LCBFd2tfSW5wdXRfVHlwZSBpbnB1dFR5cGUpCit7CisgICAgRVdL
X1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEpOworICAgIEVJTkFfU0FG
RVRZX09OX05VTExfUkVUVVJOKHNtYXJ0RGF0YS0+YXBpKTsKKyAgICBFSU5BX1NBRkVUWV9PTl9O
VUxMX1JFVFVSTihzbWFydERhdGEtPmFwaS0+aW5wdXRfcGlja2VyX2hpZGUpOworCisgICAgc21h
cnREYXRhLT5hcGktPmlucHV0X3BpY2tlcl9oaWRlKHNtYXJ0RGF0YSwgaW5wdXRUeXBlKTsKK30K
KworI2lmIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9SKQorLyoqCisgKiBAaW50ZXJuYWwKKyAqIFJl
cWV1c3RzIHRvIHNob3cgZXh0ZXJuYWwgY29sb3IgcGlja2VyLgorICovCit2b2lkIGV3a192aWV3
X2NvbG9yX3BpY2tlcl9zaG93KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBjb25zdCBTdHJpbmcmIGlu
cHV0VmFsdWUsIFdLQ29sb3JQaWNrZXJSZXN1bHRMaXN0ZW5lclJlZiBsaXN0ZW5lcikKK3sKKyAg
ICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSk7CisgICAgRVdL
X1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgcHJpdik7CisKKyAgICBwcml2LT5j
b2xvclBpY2tlclJlc3VsdExpc3RlbmVyID0gbGlzdGVuZXI7CisKKyAgICBld2tfdmlld19pbnB1
dF9waWNrZXJfc2hvdyhld2tWaWV3LCBFV0tfSU5QVVRfVFlQRV9DT0xPUiwgaW5wdXRWYWx1ZSk7
Cit9CisjZW5kaWYKKworRWluYV9Cb29sIGV3a192aWV3X2NvbG9yX3BpY2tlcl9jb2xvcl9zZXQo
RXZhc19PYmplY3QqIGV3a1ZpZXcsIGNvbnN0IGNoYXIqIGNvbG9yKQoreworI2lmIEVOQUJMRShJ
TlBVVF9UWVBFX0NPTE9SKQorICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywg
c21hcnREYXRhLCBmYWxzZSk7CisgICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNtYXJ0
RGF0YSwgcHJpdiwgZmFsc2UpOworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChw
cml2LT5jb2xvclBpY2tlclJlc3VsdExpc3RlbmVyLCBmYWxzZSk7CisgICAgRUlOQV9TQUZFVFlf
T05fTlVMTF9SRVRVUk5fVkFMKGNvbG9yLCBmYWxzZSk7CisKKyAgICBXS0NvbG9yUGlja2VyUmVz
dWx0TGlzdGVuZXJTZXRDb2xvcihwcml2LT5jb2xvclBpY2tlclJlc3VsdExpc3RlbmVyLCBXS1N0
cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZyhjb2xvcikpOworICAgIHByaXYtPmNvbG9yUGlja2Vy
UmVzdWx0TGlzdGVuZXIgPSAwOworCisgICAgcmV0dXJuIHRydWU7CisjZWxzZQorICAgIHJldHVy
biBmYWxzZTsKKyNlbmRpZgorfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9lZmwvZXdrX3ZpZXcuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3
a192aWV3LmgKaW5kZXggOTk2YTJiYmY1ZGU4ZjY1MGM2MGRjODA0M2YxMDViMmQ3ODhjYjliZS4u
ZGJlOTRlNmY3YmM0YmI5ZTVlNDk2ZmQzYjY3MzIzZWQ2ZjlmNWM4NyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5oCkBAIC05NCw2ICs5NCwxNiBAQCB0eXBl
ZGVmIGVudW0gewogdHlwZWRlZiBzdHJ1Y3QgX0V3a19WaWV3X1NtYXJ0X0RhdGEgRXdrX1ZpZXdf
U21hcnRfRGF0YTsKIHR5cGVkZWYgc3RydWN0IF9Fd2tfVmlld19TbWFydF9DbGFzcyBFd2tfVmll
d19TbWFydF9DbGFzczsKIAorLyoqCisgKiBcZW51bSAgICBFd2tfSW5wdXRfVHlwZQorICogQGJy
aWVmICAgUHJvdmlkZXMgdHlwZSBvZiBpbnB1dCBlbGVtZW50CisgKi8KK2VudW0gX0V3a19JbnB1
dF9UeXBlIHsKKyAgICBFV0tfSU5QVVRfVFlQRV9DT0xPUgorfTsKKy8qKiBDcmVhdGVzIGEgdHlw
ZSBuYW1lIGZvciBfRXdrX0lucHV0X1R5cGVfRXdrX0lucHV0X1R5cGUgKi8KK3R5cGVkZWYgZW51
bSBfRXdrX0lucHV0X1R5cGUgRXdrX0lucHV0X1R5cGU7CisKIC8vLyBFd2sgdmlldydzIGNsYXNz
LCB0byBiZSBvdmVycmlkZGVuIGJ5IHN1Yi1jbGFzc2VzLgogc3RydWN0IF9Fd2tfVmlld19TbWFy
dF9DbGFzcyB7CiAgICAgRXZhc19TbWFydF9DbGFzcyBzYzsgLyoqPCBhbGwgYnV0ICdkYXRhJyBp
cyBmcmVlIHRvIGJlIGNoYW5nZWQuICovCkBAIC0xMTUsMTMgKzEyNSwxNyBAQCBzdHJ1Y3QgX0V3
a19WaWV3X1NtYXJ0X0NsYXNzIHsKICAgICBFaW5hX0Jvb2wgKCptb3VzZV9tb3ZlKShFd2tfVmll
d19TbWFydF9EYXRhICpzZCwgY29uc3QgRXZhc19FdmVudF9Nb3VzZV9Nb3ZlICpldik7CiAgICAg
RWluYV9Cb29sICgqa2V5X2Rvd24pKEV3a19WaWV3X1NtYXJ0X0RhdGEgKnNkLCBjb25zdCBFdmFz
X0V2ZW50X0tleV9Eb3duICpldik7CiAgICAgRWluYV9Cb29sICgqa2V5X3VwKShFd2tfVmlld19T
bWFydF9EYXRhICpzZCwgY29uc3QgRXZhc19FdmVudF9LZXlfVXAgKmV2KTsKKworICAgIC8vIElu
cHV0IFBpY2tlciBBUEkKKyAgICBFaW5hX0Jvb2wgKCppbnB1dF9waWNrZXJfc2hvdykoRXdrX1Zp
ZXdfU21hcnRfRGF0YSAqc2QsIEV3a19JbnB1dF9UeXBlIHR5cGUsIGNvbnN0IGNoYXIgKnZhbHVl
KTsKKyAgICBFaW5hX0Jvb2wgKCppbnB1dF9waWNrZXJfaGlkZSkoRXdrX1ZpZXdfU21hcnRfRGF0
YSAqc2QsIEV3a19JbnB1dF9UeXBlIHR5cGUpOwogfTsKIAogLyoqCiAgKiBUaGUgdmVyc2lvbiB5
b3UgaGF2ZSB0byBwdXQgaW50byB0aGUgdmVyc2lvbiBmaWVsZAogICogaW4gdGhlIEBhIEV3a19W
aWV3X1NtYXJ0X0NsYXNzIHN0cnVjdHVyZS4KICAqLwotI2RlZmluZSBFV0tfVklFV19TTUFSVF9D
TEFTU19WRVJTSU9OIDNVTAorI2RlZmluZSBFV0tfVklFV19TTUFSVF9DTEFTU19WRVJTSU9OIDRV
TAogCiAvKioKICAqIEluaXRpYWxpemVyIGZvciB3aG9sZSBFd2tfVmlld19TbWFydF9DbGFzcyBz
dHJ1Y3R1cmUuCkBAIC0xMzMsNyArMTQ3LDcgQEAgc3RydWN0IF9Fd2tfVmlld19TbWFydF9DbGFz
cyB7CiAgKiBAc2VlIEVXS19WSUVXX1NNQVJUX0NMQVNTX0lOSVRfVkVSU0lPTgogICogQHNlZSBF
V0tfVklFV19TTUFSVF9DTEFTU19JTklUX05BTUVfVkVSU0lPTgogICovCi0jZGVmaW5lIEVXS19W
SUVXX1NNQVJUX0NMQVNTX0lOSVQoc21hcnRfY2xhc3NfaW5pdCkge3NtYXJ0X2NsYXNzX2luaXQs
IEVXS19WSUVXX1NNQVJUX0NMQVNTX1ZFUlNJT04sIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAs
IDAsIDAsIDB9CisjZGVmaW5lIEVXS19WSUVXX1NNQVJUX0NMQVNTX0lOSVQoc21hcnRfY2xhc3Nf
aW5pdCkge3NtYXJ0X2NsYXNzX2luaXQsIEVXS19WSUVXX1NNQVJUX0NMQVNTX1ZFUlNJT04sIDAs
IDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDB9CiAKIC8qKgogICogSW5pdGlh
bGl6ZXIgdG8gemVybyBhIHdob2xlIEV3a19WaWV3X1NtYXJ0X0NsYXNzIHN0cnVjdHVyZS4KQEAg
LTY1NSw2ICs2NjksMTYgQEAgRUFQSSBFaW5hX0Jvb2wgZXdrX3ZpZXdfbW91c2VfZXZlbnRzX2Vu
YWJsZWRfc2V0KEV2YXNfT2JqZWN0ICpvLCBFaW5hX0Jvb2wgZW5hYmwKICAqLwogRUFQSSBFaW5h
X0Jvb2wgZXdrX3ZpZXdfbW91c2VfZXZlbnRzX2VuYWJsZWRfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0
ICpvKTsKIAorLyoKKyAqIFNldHMgdGhlIGNvbG9yIHZhbHVlIG9mIGNvbG9yIGNob29zZXIKKyAq
CisgKiBAcGFyYW0gbyB2aWV3IG9iamVjdCBjb250YWlucyBjb2xvciBjaG9vc2VyCisgKiBAcGFy
YW0gY29sb3IgI1JHQiwgI1JSR0dCQiBvciBuYW1lZCBjb2xvciBzdHJpbmcgdG8gYmUgc2V0Cisg
KgorICogQHJldHVybiBAYyBFSU5BX1RSVUUgb24gc3VjY2VzcyBAYyBFSU5BX0ZBTFNFIG90aGVy
d2lzZQorICovCitFQVBJIEVpbmFfQm9vbCBld2tfdmlld19jb2xvcl9waWNrZXJfY29sb3Jfc2V0
KEV2YXNfT2JqZWN0ICpvLCBjb25zdCBjaGFyICpjb2xvcik7CisKICNpZmRlZiBfX2NwbHVzcGx1
cwogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2Vm
bC9ld2tfdmlld19wcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9l
d2tfdmlld19wcml2YXRlLmgKaW5kZXggODhmOWFhYjA3ZTJhNmE1OTIyNzFmMjQ3YjkyYmFjODg5
OGUxNmU0ZS4uMjc1YWM5ODg0OWIyZDk3NjFjYzkwZTU1MjFiZjU5YTZjMjBhZDlhOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXdfcHJpdmF0ZS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3X3ByaXZhdGUu
aApAQCAtMjIsNiArMjIsNyBAQAogI2RlZmluZSBld2tfdmlld19wcml2YXRlX2gKIAogI2luY2x1
ZGUgIldlYlBhZ2VQcm94eS5oIgorI2luY2x1ZGUgImV3a192aWV3LmgiCiAjaW5jbHVkZSA8RXZh
cy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVGV4dERpcmVjdGlvbi5oPgogI2luY2x1ZGUgPFdlYktp
dDIvV0tCYXNlLmg+CkBAIC0xMDIsNSArMTAzLDExIEBAIGJvb2wgZXdrX3ZpZXdfYWNjZWxlcmF0
ZWRfY29tcG9zaXRpbmdfbW9kZV9leGl0KGNvbnN0IEV2YXNfT2JqZWN0KiBld2tWaWV3KTsKIAog
dm9pZCBld2tfdmlld19wb3B1cF9tZW51X3JlcXVlc3QoRXZhc19PYmplY3QqIGV3a1ZpZXcsIFdl
YktpdDo6V2ViUG9wdXBNZW51UHJveHlFZmwqIHBvcHVwTWVudSwgY29uc3QgV2ViQ29yZTo6SW50
UmVjdCYsIFdlYkNvcmU6OlRleHREaXJlY3Rpb24sIGRvdWJsZSBwYWdlU2NhbGVGYWN0b3IsIGNv
bnN0IFZlY3RvcjxXZWJLaXQ6OldlYlBvcHVwSXRlbT4mIGl0ZW1zLCBpbnQzMl90IHNlbGVjdGVk
SW5kZXgpOwogdm9pZCBld2tfdmlld193ZWJwcm9jZXNzX2NyYXNoZWQoRXZhc19PYmplY3QqIGV3
a1ZpZXcpOwordm9pZCBld2tfdmlld19pbnB1dF9waWNrZXJfc2hvdyhFdmFzX09iamVjdCogZXdr
VmlldywgRXdrX0lucHV0X1R5cGUgaW5wdXRUeXBlLCBjb25zdCBTdHJpbmcmIGlucHV0VmFsdWUp
Owordm9pZCBld2tfdmlld19pbnB1dF9waWNrZXJfaGlkZShFdmFzX09iamVjdCogZXdrVmlldywg
RXdrX0lucHV0X1R5cGUgaW5wdXRUeXBlKTsKKworI2lmIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9S
KQordm9pZCBld2tfdmlld19jb2xvcl9waWNrZXJfc2hvdyhFdmFzX09iamVjdCogZXdrVmlldywg
Y29uc3QgU3RyaW5nJiBpbnB1dFZhbHVlLCBXS0NvbG9yUGlja2VyUmVzdWx0TGlzdGVuZXJSZWYg
bGlzdGVuZXIpOworI2VuZGlmCiAKICNlbmRpZiAvLyBld2tfdmlld19wcml2YXRlX2gKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3X3VpX2NsaWVu
dC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlld191aV9jbGll
bnQuY3BwCmluZGV4IDE4ZWRlMDhhMTQ3MjdkMzZkMDJjMWQ1ZThkYTE2MTZiNjAyNzg3MzYuLmM1
YWQ5YjM5ZTRlZjY0ZGZjODQyYjIwOTVlOTg1ZGExZGQ0NzljY2MgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3X3VpX2NsaWVudC5jcHAKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXdfdWlfY2xpZW50LmNwcApA
QCAtNDMsNiArNDMsMTggQEAgc3RhdGljIFdLUGFnZVJlZiBjcmVhdGVOZXdQYWdlKFdLUGFnZVJl
ZiwgV0tVUkxSZXF1ZXN0UmVmLCBXS0RpY3Rpb25hcnlSZWYsIFdLRXYKICAgICAgcmV0dXJuIGV3
a192aWV3X3BhZ2VfY3JlYXRlKHRvRXdrVmlldyhjbGllbnRJbmZvKSk7CiB9CiAKKyNpZiBFTkFC
TEUoSU5QVVRfVFlQRV9DT0xPUikKK3N0YXRpYyB2b2lkIHNob3dDb2xvclBpY2tlcihXS1BhZ2VS
ZWYsIFdLU3RyaW5nUmVmIGluaXRpYWxDb2xvciwgV0tDb2xvclBpY2tlclJlc3VsdExpc3RlbmVy
UmVmIGxpc3RlbmVyLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQoreworICAgIGV3a192aWV3X2Nv
bG9yX3BpY2tlcl9zaG93KHRvRXdrVmlldyhjbGllbnRJbmZvKSwgV2ViS2l0Ojp0b1dURlN0cmlu
Zyhpbml0aWFsQ29sb3IpLCBsaXN0ZW5lcik7Cit9CisKK3N0YXRpYyB2b2lkIGhpZGVDb2xvclBp
Y2tlcihXS1BhZ2VSZWYsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCit7CisgICAgZXdrX3ZpZXdf
aW5wdXRfcGlja2VyX2hpZGUodG9Fd2tWaWV3KGNsaWVudEluZm8pLCBFV0tfSU5QVVRfVFlQRV9D
T0xPUik7Cit9CisjZW5kaWYKKwogdm9pZCBld2tfdmlld191aV9jbGllbnRfYXR0YWNoKFdLUGFn
ZVJlZiBwYWdlUmVmLCBFdmFzX09iamVjdCogZXdrVmlldykKIHsKICAgICBXS1BhZ2VVSUNsaWVu
dCB1aUNsaWVudDsKQEAgLTUxLDUgKzYzLDExIEBAIHZvaWQgZXdrX3ZpZXdfdWlfY2xpZW50X2F0
dGFjaChXS1BhZ2VSZWYgcGFnZVJlZiwgRXZhc19PYmplY3QqIGV3a1ZpZXcpCiAgICAgdWlDbGll
bnQuY2xpZW50SW5mbyA9IGV3a1ZpZXc7CiAgICAgdWlDbGllbnQuY2xvc2UgPSBjbG9zZVBhZ2U7
CiAgICAgdWlDbGllbnQuY3JlYXRlTmV3UGFnZSA9IGNyZWF0ZU5ld1BhZ2U7CisKKyNpZiBFTkFC
TEUoSU5QVVRfVFlQRV9DT0xPUikKKyAgICB1aUNsaWVudC5zaG93Q29sb3JQaWNrZXIgPSBzaG93
Q29sb3JQaWNrZXI7CisgICAgdWlDbGllbnQuaGlkZUNvbG9yUGlja2VyID0gaGlkZUNvbG9yUGlj
a2VyOworI2VuZGlmCisKICAgICBXS1BhZ2VTZXRQYWdlVUlDbGllbnQocGFnZVJlZiwgJnVpQ2xp
ZW50KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL3Rl
c3RzL3Rlc3RfZXdrMl92aWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZs
L3Rlc3RzL3Rlc3RfZXdrMl92aWV3LmNwcAppbmRleCA2ZTkyOGVkZDkwM2VhYzAwYmVmZGNmNmIx
MzIxMDY0NmYxMDgwYjFiLi4zZTg5NGUzNmI2MGI3YzlhNzZjN2VjMWE0ZGMwNDk3MjIwYWMxYjMw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy90ZXN0
X2V3azJfdmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvdGVz
dHMvdGVzdF9ld2syX3ZpZXcuY3BwCkBAIC0zNjAsMyArMzYwLDg1IEBAIFRFU1RfRihFV0syVW5p
dFRlc3RCYXNlLCBld2tfdmlld19mdWxsX3NjcmVlbl9leGl0KQogICAgIEFTU0VSVF9UUlVFKGZ1
bGxTY3JlZW5DYWxsYmFja0NhbGxlZCk7CiAgICAgY2hlY2tGdWxsU2NyZWVuUHJvcGVydHkod2Vi
VmlldygpLCBmYWxzZSk7CiB9CisKKyNpZiBFTkFCTEUoSU5QVVRfVFlQRV9DT0xPUikKK3N0YXRp
YyBjb25zdCBjaGFyIGluaXRpYWxDb2xvcltdID0gIiNmZjAwMDAiOworc3RhdGljIGNvbnN0IGNo
YXIgY2hhbmdlZENvbG9yW10gPSAiIzAwMDBmZiI7CisKK3N0YXRpYyBib29sIGlzQ29sb3JQaWNr
ZXJTaG93biA9IGZhbHNlOworCitzdGF0aWMgdm9pZCBjb2xvclBpY2tlckRvbmVDYWxsYmFjayh2
b2lkKiB1c2VyRGF0YSwgRXZhc19PYmplY3QqLCB2b2lkKikKK3sKKyAgICBib29sKiBoYW5kbGVk
ID0gc3RhdGljX2Nhc3Q8Ym9vbCo+KHVzZXJEYXRhKTsKKworICAgICpoYW5kbGVkID0gdHJ1ZTsK
K30KKworc3RhdGljIHVuc2lnbmVkIGNoYXIgY29sb3JQaWNrZXJDb2xvclNlbGVjdGVkKHZvaWQq
IGRhdGEpCit7CisgICAgRXdrX1ZpZXdfU21hcnRfRGF0YSogc21hcnREYXRhID0gc3RhdGljX2Nh
c3Q8RXdrX1ZpZXdfU21hcnRfRGF0YSo+KGRhdGEpOworCisgICAgLy8gNC4gQ2hhbmdlIGNvbG9y
IHRvIGNoYW5nZWRDb2xvci4KKyAgICBFWFBFQ1RfVFJVRShld2tfdmlld19jb2xvcl9waWNrZXJf
Y29sb3Jfc2V0KHNtYXJ0RGF0YS0+c2VsZiwgY2hhbmdlZENvbG9yKSk7CisKKyAgICBldmFzX29i
amVjdF9zbWFydF9jYWxsYmFja19jYWxsKHNtYXJ0RGF0YS0+c2VsZiwgImlucHV0LHR5cGUsY29s
b3IscmVxdWVzdCIsIDApOworCisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBFaW5hX0Jvb2wg
c2hvd0NvbG9yUGlja2VyKEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNtYXJ0RGF0YSwgRXdrX0lucHV0
X1R5cGUgaW5wdXRUeXBlLCBjb25zdCBjaGFyKiBpbnB1dFZhbHVlKQoreworICAgIHN0YXRpYyBi
b29sIGlzRmlyc3RSdW4gPSB0cnVlOworCisgICAgaXNDb2xvclBpY2tlclNob3duID0gdHJ1ZTsK
KworICAgIGlmIChpc0ZpcnN0UnVuKSB7CisgICAgICAgIC8vIDEuIENoZWNrIHR5cGUgb2YgaW5w
dXQuCisgICAgICAgIEVYUEVDVF9FUShpbnB1dFR5cGUsIEVXS19JTlBVVF9UWVBFX0NPTE9SKTsK
KyAgICAgICAgLy8gMi4gQ2hlY2sgaW5pdGlhbCB2YWx1ZSBmcm9tIGh0bWwgZmlsZS4KKyAgICAg
ICAgRVhQRUNUX1NUUkVRKGlucHV0VmFsdWUsIGluaXRpYWxDb2xvcik7CisKKyAgICAgICAgaXNG
aXJzdFJ1biA9IGZhbHNlOworICAgIH0gZWxzZQorICAgICAgICAvLyA1LiBpbnB1dFZhbHVlIHNo
b3VsZCBiZSBjaGFuZ2VkQ29sb3IuCisgICAgICAgIEVYUEVDVF9TVFJFUShpbnB1dFZhbHVlLCBj
aGFuZ2VkQ29sb3IpOworCisgICAgLy8gMy4gUmV0dXJuIGFmdGVyIG1ha2luZyBhIGNvbG9yIHBp
Y2tlci4KKyAgICBlY29yZV90aW1lcl9hZGQoMC4wLCBjb2xvclBpY2tlckNvbG9yU2VsZWN0ZWQs
IHNtYXJ0RGF0YSk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3N0YXRpYyBFaW5hX0Jvb2wgaGlk
ZUNvbG9yUGlja2VyKEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNtYXJ0RGF0YSwgRXdrX0lucHV0X1R5
cGUgaW5wdXRUeXBlKQoreworICAgIEVYUEVDVF9FUShpbnB1dFR5cGUsIEVXS19JTlBVVF9UWVBF
X0NPTE9SKTsKKworICAgIC8vIFRlc3QgY29sb3IgcGlja2VyIGlzIHNob3duLgorICAgIEVYUEVD
VF9UUlVFKGlzQ29sb3JQaWNrZXJTaG93bik7CisgICAgaXNDb2xvclBpY2tlclNob3duID0gZmFs
c2U7Cit9CisKK1RFU1RfRihFV0syVW5pdFRlc3RCYXNlLCBld2tfdmlld19jb2xvcl9waWNrZXJf
Y29sb3Jfc2V0KQoreworICAgIEV3a19WaWV3X1NtYXJ0X0NsYXNzKiBhcGkgPSBld2tWaWV3Q2xh
c3MoKTsKKyAgICBhcGktPmlucHV0X3BpY2tlcl9zaG93ID0gc2hvd0NvbG9yUGlja2VyOworICAg
IGFwaS0+aW5wdXRfcGlja2VyX2hpZGUgPSBoaWRlQ29sb3JQaWNrZXI7CisKKyAgICBsb2FkVXJs
U3luYygiZGF0YTp0ZXh0L2h0bWwsPGlucHV0IHR5cGU9J2NvbG9yJyB2YWx1ZT0nI2ZmMDAwMCc+
Iik7CisKKyAgICAvLyBDbGljayBpbnB1dCBlbGVtZW50LgorICAgIG1vdXNlQ2xpY2soMzAsIDIw
KTsKKworICAgIGJvb2wgaGFuZGxlZCA9IGZhbHNlOworICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2Nh
bGxiYWNrX2FkZCh3ZWJWaWV3KCksICJpbnB1dCx0eXBlLGNvbG9yLHJlcXVlc3QiLCBjb2xvclBp
Y2tlckRvbmVDYWxsYmFjaywgJmhhbmRsZWQpOworICAgIHdoaWxlICghaGFuZGxlZCkKKyAgICAg
ICAgZWNvcmVfbWFpbl9sb29wX2l0ZXJhdGUoKTsKKworICAgIC8vIENsaWNrIGlucHV0IGVsZW1l
bnQgYWdhaW4uCisgICAgbW91c2VDbGljaygzMCwgMjApOworCisgICAgaGFuZGxlZCA9IGZhbHNl
OworICAgIHdoaWxlICghaGFuZGxlZCkKKyAgICAgICAgZWNvcmVfbWFpbl9sb29wX2l0ZXJhdGUo
KTsKKyAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19kZWwod2ViVmlldygpLCAiaW5wdXQs
dHlwZSxjb2xvcixyZXF1ZXN0IiwgY29sb3JQaWNrZXJEb25lQ2FsbGJhY2spOworfQorI2VuZGlm
IC8vIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9SKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>164496</attachid>
            <date>2012-09-17 23:26:24 -0700</date>
            <delta_ts>2012-09-18 03:23:07 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-91832-20120918152551.patch</filename>
            <type>text/plain</type>
            <size>13174</size>
            <attacher name="KwangYong Choi">ky0.choi</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI4NzE0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMGY5YmU2ZDBhNmYwNzE3
MGM3Njc0NTQ5Y2Y5NTBkODdlMGFlNGJjYi4uYzFlNzFjY2M1MWFkZTg0ZjI0ODgzNjhiZTEwOWIz
MjVjZDZmZDJhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1IEBACisyMDEyLTA5LTE3ICBLd2Fu
Z1lvbmcgQ2hvaSAgPGt5MC5jaG9pQHNhbXN1bmcuY29tPgorCisgICAgICAgIFtFRkxdW1dLMl0g
SW1wbGVtZW50ZWQgY29sb3IgcGlja2VyIEFQSQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTE4MzIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBBZGQgc3VwcG9ydCBmb3IgY29sb3IgcGlja2VyIEFQSSBmb3Ig
RUZMIHBvcnQgaW4gV2ViS2l0Mi4KKworICAgICAgICBUaGUgZXh0ZXJuYWwgYXBwbGljYXRpb24g
Y2FuIGltcGxlbWVudCBpbnB1dCBwaWNrZXIgYnkgb3ZlcnJpZGluZworICAgICAgICBzbWFydCBj
bGFzcyBmdW5jdGlvbi4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmNw
cDoKKyAgICAgICAgKF9Fd2tfVmlld19Qcml2YXRlX0RhdGEpOgorICAgICAgICAoX0V3a19WaWV3
X1ByaXZhdGVfRGF0YTo6X0V3a19WaWV3X1ByaXZhdGVfRGF0YSk6CisgICAgICAgIChld2tfdmll
d19pbnB1dF9waWNrZXJfc2hvdyk6CisgICAgICAgIChld2tfdmlld19pbnB1dF9waWNrZXJfaGlk
ZSk6CisgICAgICAgIChld2tfdmlld19jb2xvcl9waWNrZXJfc2hvdyk6CisgICAgICAgIChld2tf
dmlld19jb2xvcl9waWNrZXJfY29sb3Jfc2V0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2Vm
bC9ld2tfdmlldy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3X3ByaXZh
dGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlld191aV9jbGllbnQuY3Bw
OgorICAgICAgICAoc2hvd0NvbG9yUGlja2VyKToKKyAgICAgICAgKGhpZGVDb2xvclBpY2tlcik6
CisgICAgICAgIChld2tfdmlld191aV9jbGllbnRfYXR0YWNoKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL2VmbC90ZXN0cy90ZXN0X2V3azJfdmlldy5jcHA6CisgICAgICAgIChvbkNvbG9yUGlj
a2VyRG9uZSk6CisgICAgICAgIChjb2xvclBpY2tlckNvbG9yU2VsZWN0ZWQpOgorICAgICAgICAo
c2hvd0NvbG9yUGlja2VyKToKKyAgICAgICAgKGhpZGVDb2xvclBpY2tlcik6CisgICAgICAgIChU
RVNUX0YpOgorCiAyMDEyLTA5LTE1ICBWaXZlayBHYWxhdGFnZSAgPHZpdmVrZ2FsYXRhZ2VAZ21h
aWwuY29tPgogCiAgICAgICAgIFdpbkNhaXJvIGJ1aWxkIGZpeCBkdWUgdG8gbWlzc2luZyBzeW1i
b2xzIGZvciBzZXRJbWFnZXNFbmFibGVkIGFuZCBzZXRTdG9yYWdlQmxvY2tpbmdQb2xpY3kKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmNwcCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmNwcAppbmRleCA3Mjdl
YWJhYmU0NGY5NDU2ZjdmMWQwNzRmOTRiZGZmZmYxOWU5Y2YwLi4zY2VkYjJjNjExNjVhMDJlMTI0
OTkwZjZmYjkzM2FmMzA4MGU3ZTgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2VmbC9ld2tfdmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9lZmwvZXdrX3ZpZXcuY3BwCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAiTmF0aXZlV2Vi
V2hlZWxFdmVudC5oIgogI2luY2x1ZGUgIlBhZ2VDbGllbnRJbXBsLmgiCiAjaW5jbHVkZSAiV0tB
UElDYXN0LmgiCisjaW5jbHVkZSAiV0tDb2xvclBpY2tlclJlc3VsdExpc3RlbmVyLmgiCiAjaW5j
bHVkZSAiV0tFaW5hU2hhcmVkU3RyaW5nLmgiCiAjaW5jbHVkZSAiV0tGaW5kT3B0aW9ucy5oIgog
I2luY2x1ZGUgIldLUmV0YWluUHRyLmgiCkBAIC05OCw2ICs5OSw3IEBAIHN0cnVjdCBfRXdrX1Zp
ZXdfUHJpdmF0ZV9EYXRhIHsKICAgICBFd2tfQmFja19Gb3J3YXJkX0xpc3QqIGJhY2tGb3J3YXJk
TGlzdDsKICAgICBPd25QdHI8RXdrX1NldHRpbmdzPiBzZXR0aW5nczsKICAgICBib29sIGFyZU1v
dXNlRXZlbnRzRW5hYmxlZDsKKyAgICBXS0NvbG9yUGlja2VyUmVzdWx0TGlzdGVuZXJSZWYgY29s
b3JQaWNrZXJSZXN1bHRMaXN0ZW5lcjsKIAogICAgIFdlYlBvcHVwTWVudVByb3h5RWZsKiBwb3B1
cE1lbnVQcm94eTsKICAgICBFaW5hX0xpc3QqIHBvcHVwTWVudUl0ZW1zOwpAQCAtMTE2LDYgKzEx
OCw3IEBAIHN0cnVjdCBfRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhIHsKICAgICAgICAgOiBjdXJzb3JP
YmplY3QoMCkKICAgICAgICAgLCBiYWNrRm9yd2FyZExpc3QoMCkKICAgICAgICAgLCBhcmVNb3Vz
ZUV2ZW50c0VuYWJsZWQoZmFsc2UpCisgICAgICAgICwgY29sb3JQaWNrZXJSZXN1bHRMaXN0ZW5l
cigwKQogICAgICAgICAsIHBvcHVwTWVudVByb3h5KDApCiAgICAgICAgICwgcG9wdXBNZW51SXRl
bXMoMCkKICNpZmRlZiBIQVZFX0VDT1JFX1gKQEAgLTE2NDYsMyArMTY0OSw2MiBAQCB2b2lkIGV3
a192aWV3X3dlYnByb2Nlc3NfY3Jhc2hlZChFdmFzX09iamVjdCogZXdrVmlldykKICAgICAgICAg
ZXdrX3ZpZXdfaHRtbF9zdHJpbmdfbG9hZChld2tWaWV3LCAiVGhlIHdlYiBwcm9jZXNzIGhhcyBj
cmFzaGVkLiIsIDAsIHVybC5kYXRhKCkpOwogICAgIH0KIH0KKworLyoqCisgKiBAaW50ZXJuYWwK
KyAqIFJlcXVlc3RzIHRvIHNob3cgZXh0ZXJuYWwgaW5wdXQgcGlja2VyIGJhc2VkIG9uIGlucHV0
VHlwZS4KKyAqLwordm9pZCBld2tfdmlld19pbnB1dF9waWNrZXJfc2hvdyhFdmFzX09iamVjdCog
ZXdrVmlldywgRXdrX0lucHV0X1R5cGUgaW5wdXRUeXBlLCBjb25zdCB2b2lkKiBkYXRhKQorewor
ICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhKTsKKyAgICBF
SU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTihzbWFydERhdGEtPmFwaSk7CisgICAgRUlOQV9TQUZF
VFlfT05fTlVMTF9SRVRVUk4oc21hcnREYXRhLT5hcGktPmlucHV0X3BpY2tlcl9zaG93KTsKKwor
ICAgIHNtYXJ0RGF0YS0+YXBpLT5pbnB1dF9waWNrZXJfc2hvdyhzbWFydERhdGEsIGlucHV0VHlw
ZSwgZGF0YSk7Cit9CisKKy8qKgorICogQGludGVybmFsCisgKiBSZXF1ZXN0cyB0byBoaWRlIGV4
dGVybmFsIGlucHV0IHBpY2tlciBiYXNlZCBvbiBpbnB1dFR5cGUuCisgKi8KK3ZvaWQgZXdrX3Zp
ZXdfaW5wdXRfcGlja2VyX2hpZGUoRXZhc19PYmplY3QqIGV3a1ZpZXcsIEV3a19JbnB1dF9UeXBl
IGlucHV0VHlwZSkKK3sKKyAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNt
YXJ0RGF0YSk7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oc21hcnREYXRhLT5hcGkp
OworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKHNtYXJ0RGF0YS0+YXBpLT5pbnB1dF9w
aWNrZXJfaGlkZSk7CisKKyAgICBzbWFydERhdGEtPmFwaS0+aW5wdXRfcGlja2VyX2hpZGUoc21h
cnREYXRhLCBpbnB1dFR5cGUpOworfQorCisjaWYgRU5BQkxFKElOUFVUX1RZUEVfQ09MT1IpCisv
KioKKyAqIEBpbnRlcm5hbAorICogUmVxZXVzdHMgdG8gc2hvdyBleHRlcm5hbCBjb2xvciBwaWNr
ZXIuCisgKi8KK3ZvaWQgZXdrX3ZpZXdfY29sb3JfcGlja2VyX3Nob3coRXZhc19PYmplY3QqIGV3
a1ZpZXcsIGNvbnN0IFN0cmluZyYgaW5wdXRWYWx1ZSwgV0tDb2xvclBpY2tlclJlc3VsdExpc3Rl
bmVyUmVmIGxpc3RlbmVyKQoreworICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmll
dywgc21hcnREYXRhKTsKKyAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc21hcnREYXRh
LCBwcml2KTsKKworICAgIHByaXYtPmNvbG9yUGlja2VyUmVzdWx0TGlzdGVuZXIgPSBsaXN0ZW5l
cjsKKworICAgIGV3a192aWV3X2lucHV0X3BpY2tlcl9zaG93KGV3a1ZpZXcsIEVXS19JTlBVVF9U
WVBFX0NPTE9SLCBzdGF0aWNfY2FzdDxjb25zdCB2b2lkKj4oaW5wdXRWYWx1ZS51dGY4KCkuZGF0
YSgpKSk7Cit9CisjZW5kaWYKKworRWluYV9Cb29sIGV3a192aWV3X2NvbG9yX3BpY2tlcl9jb2xv
cl9zZXQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIGNvbnN0IGNoYXIqIGNvbG9yKQoreworI2lmIEVO
QUJMRShJTlBVVF9UWVBFX0NPTE9SKQorICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdr
Vmlldywgc21hcnREYXRhLCBmYWxzZSk7CisgICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJO
KHNtYXJ0RGF0YSwgcHJpdiwgZmFsc2UpOworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJO
X1ZBTChwcml2LT5jb2xvclBpY2tlclJlc3VsdExpc3RlbmVyLCBmYWxzZSk7CisgICAgRUlOQV9T
QUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKGNvbG9yLCBmYWxzZSk7CisKKyAgICBXS0NvbG9yUGlj
a2VyUmVzdWx0TGlzdGVuZXJTZXRDb2xvcihwcml2LT5jb2xvclBpY2tlclJlc3VsdExpc3RlbmVy
LCBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZyhjb2xvcikpOworICAgIHByaXYtPmNvbG9y
UGlja2VyUmVzdWx0TGlzdGVuZXIgPSAwOworCisgICAgcmV0dXJuIHRydWU7CisjZWxzZQorICAg
IHJldHVybiBmYWxzZTsKKyNlbmRpZgorfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
ZWZsL2V3a192aWV3LmgKaW5kZXggOTk2YTJiYmY1ZGU4ZjY1MGM2MGRjODA0M2YxMDViMmQ3ODhj
YjliZS4uMzgxOGNkZTc4NWMwODBmYjY2ZDAxZTRlMWFkMWJmYTAyODVmYjJkNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5oCkBAIC05NCw2ICs5NCwxNiBA
QCB0eXBlZGVmIGVudW0gewogdHlwZWRlZiBzdHJ1Y3QgX0V3a19WaWV3X1NtYXJ0X0RhdGEgRXdr
X1ZpZXdfU21hcnRfRGF0YTsKIHR5cGVkZWYgc3RydWN0IF9Fd2tfVmlld19TbWFydF9DbGFzcyBF
d2tfVmlld19TbWFydF9DbGFzczsKIAorLyoqCisgKiBcZW51bSAgICBFd2tfSW5wdXRfVHlwZQor
ICogQGJyaWVmICAgUHJvdmlkZXMgdHlwZSBvZiBpbnB1dCBlbGVtZW50CisgKi8KK2VudW0gX0V3
a19JbnB1dF9UeXBlIHsKKyAgICBFV0tfSU5QVVRfVFlQRV9DT0xPUgorfTsKKy8qKiBDcmVhdGVz
IGEgdHlwZSBuYW1lIGZvciBfRXdrX0lucHV0X1R5cGVfRXdrX0lucHV0X1R5cGUgKi8KK3R5cGVk
ZWYgZW51bSBfRXdrX0lucHV0X1R5cGUgRXdrX0lucHV0X1R5cGU7CisKIC8vLyBFd2sgdmlldydz
IGNsYXNzLCB0byBiZSBvdmVycmlkZGVuIGJ5IHN1Yi1jbGFzc2VzLgogc3RydWN0IF9Fd2tfVmll
d19TbWFydF9DbGFzcyB7CiAgICAgRXZhc19TbWFydF9DbGFzcyBzYzsgLyoqPCBhbGwgYnV0ICdk
YXRhJyBpcyBmcmVlIHRvIGJlIGNoYW5nZWQuICovCkBAIC0xMTUsMTMgKzEyNSwxNyBAQCBzdHJ1
Y3QgX0V3a19WaWV3X1NtYXJ0X0NsYXNzIHsKICAgICBFaW5hX0Jvb2wgKCptb3VzZV9tb3ZlKShF
d2tfVmlld19TbWFydF9EYXRhICpzZCwgY29uc3QgRXZhc19FdmVudF9Nb3VzZV9Nb3ZlICpldik7
CiAgICAgRWluYV9Cb29sICgqa2V5X2Rvd24pKEV3a19WaWV3X1NtYXJ0X0RhdGEgKnNkLCBjb25z
dCBFdmFzX0V2ZW50X0tleV9Eb3duICpldik7CiAgICAgRWluYV9Cb29sICgqa2V5X3VwKShFd2tf
Vmlld19TbWFydF9EYXRhICpzZCwgY29uc3QgRXZhc19FdmVudF9LZXlfVXAgKmV2KTsKKworICAg
IC8vIElucHV0IFBpY2tlciBBUEkKKyAgICBFaW5hX0Jvb2wgKCppbnB1dF9waWNrZXJfc2hvdyko
RXdrX1ZpZXdfU21hcnRfRGF0YSAqc2QsIEV3a19JbnB1dF9UeXBlIHR5cGUsIGNvbnN0IHZvaWQg
KmRhdGEpOworICAgIEVpbmFfQm9vbCAoKmlucHV0X3BpY2tlcl9oaWRlKShFd2tfVmlld19TbWFy
dF9EYXRhICpzZCwgRXdrX0lucHV0X1R5cGUgdHlwZSk7CiB9OwogCiAvKioKICAqIFRoZSB2ZXJz
aW9uIHlvdSBoYXZlIHRvIHB1dCBpbnRvIHRoZSB2ZXJzaW9uIGZpZWxkCiAgKiBpbiB0aGUgQGEg
RXdrX1ZpZXdfU21hcnRfQ2xhc3Mgc3RydWN0dXJlLgogICovCi0jZGVmaW5lIEVXS19WSUVXX1NN
QVJUX0NMQVNTX1ZFUlNJT04gM1VMCisjZGVmaW5lIEVXS19WSUVXX1NNQVJUX0NMQVNTX1ZFUlNJ
T04gNFVMCiAKIC8qKgogICogSW5pdGlhbGl6ZXIgZm9yIHdob2xlIEV3a19WaWV3X1NtYXJ0X0Ns
YXNzIHN0cnVjdHVyZS4KQEAgLTEzMyw3ICsxNDcsNyBAQCBzdHJ1Y3QgX0V3a19WaWV3X1NtYXJ0
X0NsYXNzIHsKICAqIEBzZWUgRVdLX1ZJRVdfU01BUlRfQ0xBU1NfSU5JVF9WRVJTSU9OCiAgKiBA
c2VlIEVXS19WSUVXX1NNQVJUX0NMQVNTX0lOSVRfTkFNRV9WRVJTSU9OCiAgKi8KLSNkZWZpbmUg
RVdLX1ZJRVdfU01BUlRfQ0xBU1NfSU5JVChzbWFydF9jbGFzc19pbml0KSB7c21hcnRfY2xhc3Nf
aW5pdCwgRVdLX1ZJRVdfU01BUlRfQ0xBU1NfVkVSU0lPTiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMCwgMH0KKyNkZWZpbmUgRVdLX1ZJRVdfU01BUlRfQ0xBU1NfSU5JVChzbWFydF9j
bGFzc19pbml0KSB7c21hcnRfY2xhc3NfaW5pdCwgRVdLX1ZJRVdfU01BUlRfQ0xBU1NfVkVSU0lP
TiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMH0KIAogLyoqCiAgKiBJ
bml0aWFsaXplciB0byB6ZXJvIGEgd2hvbGUgRXdrX1ZpZXdfU21hcnRfQ2xhc3Mgc3RydWN0dXJl
LgpAQCAtNjU1LDYgKzY2OSwxNiBAQCBFQVBJIEVpbmFfQm9vbCBld2tfdmlld19tb3VzZV9ldmVu
dHNfZW5hYmxlZF9zZXQoRXZhc19PYmplY3QgKm8sIEVpbmFfQm9vbCBlbmFibAogICovCiBFQVBJ
IEVpbmFfQm9vbCBld2tfdmlld19tb3VzZV9ldmVudHNfZW5hYmxlZF9nZXQoY29uc3QgRXZhc19P
YmplY3QgKm8pOwogCisvKgorICogU2V0cyB0aGUgY29sb3IgdmFsdWUgb2YgY29sb3IgY2hvb3Nl
cgorICoKKyAqIEBwYXJhbSBvIHZpZXcgb2JqZWN0IGNvbnRhaW5zIGNvbG9yIGNob29zZXIKKyAq
IEBwYXJhbSBjb2xvciAjUkdCLCAjUlJHR0JCIG9yIG5hbWVkIGNvbG9yIHN0cmluZyB0byBiZSBz
ZXQKKyAqCisgKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBvbiBzdWNjZXNzIEBjIEVJTkFfRkFMU0Ug
b3RoZXJ3aXNlCisgKi8KK0VBUEkgRWluYV9Cb29sIGV3a192aWV3X2NvbG9yX3BpY2tlcl9jb2xv
cl9zZXQoRXZhc19PYmplY3QgKm8sIGNvbnN0IGNoYXIgKmNvbG9yKTsKKwogI2lmZGVmIF9fY3Bs
dXNwbHVzCiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZWZsL2V3a192aWV3X3ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
ZWZsL2V3a192aWV3X3ByaXZhdGUuaAppbmRleCA4OGY5YWFiMDdlMmE2YTU5MjI3MWYyNDdiOTJi
YWM4ODk4ZTE2ZTRlLi44MmY3OTdhNzQzZTQ4NTU5ZTcyY2NjZDY4ZmIwZWJiODBmMTAwYzA3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlld19wcml2
YXRlLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXdfcHJp
dmF0ZS5oCkBAIC0yMiw2ICsyMiw3IEBACiAjZGVmaW5lIGV3a192aWV3X3ByaXZhdGVfaAogCiAj
aW5jbHVkZSAiV2ViUGFnZVByb3h5LmgiCisjaW5jbHVkZSAiZXdrX3ZpZXcuaCIKICNpbmNsdWRl
IDxFdmFzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9UZXh0RGlyZWN0aW9uLmg+CiAjaW5jbHVkZSA8
V2ViS2l0Mi9XS0Jhc2UuaD4KQEAgLTEwMiw1ICsxMDMsMTEgQEAgYm9vbCBld2tfdmlld19hY2Nl
bGVyYXRlZF9jb21wb3NpdGluZ19tb2RlX2V4aXQoY29uc3QgRXZhc19PYmplY3QqIGV3a1ZpZXcp
OwogCiB2b2lkIGV3a192aWV3X3BvcHVwX21lbnVfcmVxdWVzdChFdmFzX09iamVjdCogZXdrVmll
dywgV2ViS2l0OjpXZWJQb3B1cE1lbnVQcm94eUVmbCogcG9wdXBNZW51LCBjb25zdCBXZWJDb3Jl
OjpJbnRSZWN0JiwgV2ViQ29yZTo6VGV4dERpcmVjdGlvbiwgZG91YmxlIHBhZ2VTY2FsZUZhY3Rv
ciwgY29uc3QgVmVjdG9yPFdlYktpdDo6V2ViUG9wdXBJdGVtPiYgaXRlbXMsIGludDMyX3Qgc2Vs
ZWN0ZWRJbmRleCk7CiB2b2lkIGV3a192aWV3X3dlYnByb2Nlc3NfY3Jhc2hlZChFdmFzX09iamVj
dCogZXdrVmlldyk7Cit2b2lkIGV3a192aWV3X2lucHV0X3BpY2tlcl9zaG93KEV2YXNfT2JqZWN0
KiBld2tWaWV3LCBFd2tfSW5wdXRfVHlwZSBpbnB1dFR5cGUsIGNvbnN0IHZvaWQqIGRhdGEpOwor
dm9pZCBld2tfdmlld19pbnB1dF9waWNrZXJfaGlkZShFdmFzX09iamVjdCogZXdrVmlldywgRXdr
X0lucHV0X1R5cGUgaW5wdXRUeXBlKTsKKworI2lmIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9SKQor
dm9pZCBld2tfdmlld19jb2xvcl9waWNrZXJfc2hvdyhFdmFzX09iamVjdCogZXdrVmlldywgY29u
c3QgU3RyaW5nJiBpbnB1dFZhbHVlLCBXS0NvbG9yUGlja2VyUmVzdWx0TGlzdGVuZXJSZWYgbGlz
dGVuZXIpOworI2VuZGlmCiAKICNlbmRpZiAvLyBld2tfdmlld19wcml2YXRlX2gKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3X3VpX2NsaWVudC5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlld191aV9jbGllbnQu
Y3BwCmluZGV4IDE4ZWRlMDhhMTQ3MjdkMzZkMDJjMWQ1ZThkYTE2MTZiNjAyNzg3MzYuLmM1YWQ5
YjM5ZTRlZjY0ZGZjODQyYjIwOTVlOTg1ZGExZGQ0NzljY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3X3VpX2NsaWVudC5jcHAKKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXdfdWlfY2xpZW50LmNwcApAQCAt
NDMsNiArNDMsMTggQEAgc3RhdGljIFdLUGFnZVJlZiBjcmVhdGVOZXdQYWdlKFdLUGFnZVJlZiwg
V0tVUkxSZXF1ZXN0UmVmLCBXS0RpY3Rpb25hcnlSZWYsIFdLRXYKICAgICAgcmV0dXJuIGV3a192
aWV3X3BhZ2VfY3JlYXRlKHRvRXdrVmlldyhjbGllbnRJbmZvKSk7CiB9CiAKKyNpZiBFTkFCTEUo
SU5QVVRfVFlQRV9DT0xPUikKK3N0YXRpYyB2b2lkIHNob3dDb2xvclBpY2tlcihXS1BhZ2VSZWYs
IFdLU3RyaW5nUmVmIGluaXRpYWxDb2xvciwgV0tDb2xvclBpY2tlclJlc3VsdExpc3RlbmVyUmVm
IGxpc3RlbmVyLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQoreworICAgIGV3a192aWV3X2NvbG9y
X3BpY2tlcl9zaG93KHRvRXdrVmlldyhjbGllbnRJbmZvKSwgV2ViS2l0Ojp0b1dURlN0cmluZyhp
bml0aWFsQ29sb3IpLCBsaXN0ZW5lcik7Cit9CisKK3N0YXRpYyB2b2lkIGhpZGVDb2xvclBpY2tl
cihXS1BhZ2VSZWYsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCit7CisgICAgZXdrX3ZpZXdfaW5w
dXRfcGlja2VyX2hpZGUodG9Fd2tWaWV3KGNsaWVudEluZm8pLCBFV0tfSU5QVVRfVFlQRV9DT0xP
Uik7Cit9CisjZW5kaWYKKwogdm9pZCBld2tfdmlld191aV9jbGllbnRfYXR0YWNoKFdLUGFnZVJl
ZiBwYWdlUmVmLCBFdmFzX09iamVjdCogZXdrVmlldykKIHsKICAgICBXS1BhZ2VVSUNsaWVudCB1
aUNsaWVudDsKQEAgLTUxLDUgKzYzLDExIEBAIHZvaWQgZXdrX3ZpZXdfdWlfY2xpZW50X2F0dGFj
aChXS1BhZ2VSZWYgcGFnZVJlZiwgRXZhc19PYmplY3QqIGV3a1ZpZXcpCiAgICAgdWlDbGllbnQu
Y2xpZW50SW5mbyA9IGV3a1ZpZXc7CiAgICAgdWlDbGllbnQuY2xvc2UgPSBjbG9zZVBhZ2U7CiAg
ICAgdWlDbGllbnQuY3JlYXRlTmV3UGFnZSA9IGNyZWF0ZU5ld1BhZ2U7CisKKyNpZiBFTkFCTEUo
SU5QVVRfVFlQRV9DT0xPUikKKyAgICB1aUNsaWVudC5zaG93Q29sb3JQaWNrZXIgPSBzaG93Q29s
b3JQaWNrZXI7CisgICAgdWlDbGllbnQuaGlkZUNvbG9yUGlja2VyID0gaGlkZUNvbG9yUGlja2Vy
OworI2VuZGlmCisKICAgICBXS1BhZ2VTZXRQYWdlVUlDbGllbnQocGFnZVJlZiwgJnVpQ2xpZW50
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL3Rlc3Rz
L3Rlc3RfZXdrMl92aWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL3Rl
c3RzL3Rlc3RfZXdrMl92aWV3LmNwcAppbmRleCA2ZTkyOGVkZDkwM2VhYzAwYmVmZGNmNmIxMzIx
MDY0NmYxMDgwYjFiLi41Mzg5ODVlMzhkMTkxNGJhZjY2Zjk4YjRhYzk2NTUwNGVlY2IwMWU5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy90ZXN0X2V3
azJfdmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMv
dGVzdF9ld2syX3ZpZXcuY3BwCkBAIC0zNjAsMyArMzYwLDg2IEBAIFRFU1RfRihFV0syVW5pdFRl
c3RCYXNlLCBld2tfdmlld19mdWxsX3NjcmVlbl9leGl0KQogICAgIEFTU0VSVF9UUlVFKGZ1bGxT
Y3JlZW5DYWxsYmFja0NhbGxlZCk7CiAgICAgY2hlY2tGdWxsU2NyZWVuUHJvcGVydHkod2ViVmll
dygpLCBmYWxzZSk7CiB9CisKKyNpZiBFTkFCTEUoSU5QVVRfVFlQRV9DT0xPUikKK3N0YXRpYyBj
b25zdCBjaGFyIGluaXRpYWxDb2xvcltdID0gIiNmZjAwMDAiOworc3RhdGljIGNvbnN0IGNoYXIg
Y2hhbmdlZENvbG9yW10gPSAiIzAwMDBmZiI7CisKK3N0YXRpYyBib29sIGlzQ29sb3JQaWNrZXJT
aG93biA9IGZhbHNlOworCitzdGF0aWMgdm9pZCBvbkNvbG9yUGlja2VyRG9uZSh2b2lkKiB1c2Vy
RGF0YSwgRXZhc19PYmplY3QqLCB2b2lkKikKK3sKKyAgICBib29sKiBoYW5kbGVkID0gc3RhdGlj
X2Nhc3Q8Ym9vbCo+KHVzZXJEYXRhKTsKKworICAgICpoYW5kbGVkID0gdHJ1ZTsKK30KKworc3Rh
dGljIHVuc2lnbmVkIGNoYXIgY29sb3JQaWNrZXJDb2xvclNlbGVjdGVkKHZvaWQqIGRhdGEpCit7
CisgICAgRXdrX1ZpZXdfU21hcnRfRGF0YSogc21hcnREYXRhID0gc3RhdGljX2Nhc3Q8RXdrX1Zp
ZXdfU21hcnRfRGF0YSo+KGRhdGEpOworCisgICAgLy8gNC4gQ2hhbmdlIGNvbG9yIHRvIGNoYW5n
ZWRDb2xvci4KKyAgICBFWFBFQ1RfVFJVRShld2tfdmlld19jb2xvcl9waWNrZXJfY29sb3Jfc2V0
KHNtYXJ0RGF0YS0+c2VsZiwgY2hhbmdlZENvbG9yKSk7CisKKyAgICBldmFzX29iamVjdF9zbWFy
dF9jYWxsYmFja19jYWxsKHNtYXJ0RGF0YS0+c2VsZiwgImlucHV0LHR5cGUsY29sb3IscmVxdWVz
dCIsIDApOworCisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBFaW5hX0Jvb2wgc2hvd0NvbG9y
UGlja2VyKEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNtYXJ0RGF0YSwgRXdrX0lucHV0X1R5cGUgaW5w
dXRUeXBlLCBjb25zdCB2b2lkKiBkYXRhKQoreworICAgIHN0YXRpYyBib29sIGlzRmlyc3RSdW4g
PSB0cnVlOworICAgIGNvbnN0IGNoYXIqIGlucHV0VmFsdWUgPSBzdGF0aWNfY2FzdDxjb25zdCBj
aGFyKj4oZGF0YSk7CisKKyAgICBpc0NvbG9yUGlja2VyU2hvd24gPSB0cnVlOworCisgICAgaWYg
KGlzRmlyc3RSdW4pIHsKKyAgICAgICAgLy8gMS4gQ2hlY2sgdHlwZSBvZiBpbnB1dC4KKyAgICAg
ICAgRVhQRUNUX0VRKGlucHV0VHlwZSwgRVdLX0lOUFVUX1RZUEVfQ09MT1IpOworICAgICAgICAv
LyAyLiBDaGVjayBpbml0aWFsIHZhbHVlIGZyb20gaHRtbCBmaWxlLgorICAgICAgICBFWFBFQ1Rf
U1RSRVEoaW5wdXRWYWx1ZSwgaW5pdGlhbENvbG9yKTsKKworICAgICAgICBpc0ZpcnN0UnVuID0g
ZmFsc2U7CisgICAgfSBlbHNlCisgICAgICAgIC8vIDUuIGlucHV0VmFsdWUgc2hvdWxkIGJlIGNo
YW5nZWRDb2xvci4KKyAgICAgICAgRVhQRUNUX1NUUkVRKGlucHV0VmFsdWUsIGNoYW5nZWRDb2xv
cik7CisKKyAgICAvLyAzLiBSZXR1cm4gYWZ0ZXIgbWFraW5nIGEgY29sb3IgcGlja2VyLgorICAg
IGVjb3JlX3RpbWVyX2FkZCgwLjAsIGNvbG9yUGlja2VyQ29sb3JTZWxlY3RlZCwgc21hcnREYXRh
KTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworc3RhdGljIEVpbmFfQm9vbCBoaWRlQ29sb3JQaWNr
ZXIoRXdrX1ZpZXdfU21hcnRfRGF0YSogc21hcnREYXRhLCBFd2tfSW5wdXRfVHlwZSBpbnB1dFR5
cGUpCit7CisgICAgRVhQRUNUX0VRKGlucHV0VHlwZSwgRVdLX0lOUFVUX1RZUEVfQ09MT1IpOwor
CisgICAgLy8gVGVzdCBjb2xvciBwaWNrZXIgaXMgc2hvd24uCisgICAgRVhQRUNUX1RSVUUoaXND
b2xvclBpY2tlclNob3duKTsKKyAgICBpc0NvbG9yUGlja2VyU2hvd24gPSBmYWxzZTsKK30KKwor
VEVTVF9GKEVXSzJVbml0VGVzdEJhc2UsIGV3a192aWV3X2NvbG9yX3BpY2tlcl9jb2xvcl9zZXQp
Cit7CisgICAgRXdrX1ZpZXdfU21hcnRfQ2xhc3MqIGFwaSA9IGV3a1ZpZXdDbGFzcygpOworICAg
IGFwaS0+aW5wdXRfcGlja2VyX3Nob3cgPSBzaG93Q29sb3JQaWNrZXI7CisgICAgYXBpLT5pbnB1
dF9waWNrZXJfaGlkZSA9IGhpZGVDb2xvclBpY2tlcjsKKworICAgIGxvYWRVcmxTeW5jKCJkYXRh
OnRleHQvaHRtbCw8aW5wdXQgdHlwZT0nY29sb3InIHZhbHVlPScjZmYwMDAwJz4iKTsKKworICAg
IC8vIENsaWNrIGlucHV0IGVsZW1lbnQuCisgICAgbW91c2VDbGljaygzMCwgMjApOworCisgICAg
Ym9vbCBoYW5kbGVkID0gZmFsc2U7CisgICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfYWRk
KHdlYlZpZXcoKSwgImlucHV0LHR5cGUsY29sb3IscmVxdWVzdCIsIG9uQ29sb3JQaWNrZXJEb25l
LCAmaGFuZGxlZCk7CisgICAgd2hpbGUgKCFoYW5kbGVkKQorICAgICAgICBlY29yZV9tYWluX2xv
b3BfaXRlcmF0ZSgpOworCisgICAgLy8gQ2xpY2sgaW5wdXQgZWxlbWVudCBhZ2Fpbi4KKyAgICBt
b3VzZUNsaWNrKDMwLCAyMCk7CisKKyAgICBoYW5kbGVkID0gZmFsc2U7CisgICAgd2hpbGUgKCFo
YW5kbGVkKQorICAgICAgICBlY29yZV9tYWluX2xvb3BfaXRlcmF0ZSgpOworICAgIGV2YXNfb2Jq
ZWN0X3NtYXJ0X2NhbGxiYWNrX2RlbCh3ZWJWaWV3KCksICJpbnB1dCx0eXBlLGNvbG9yLHJlcXVl
c3QiLCBvbkNvbG9yUGlja2VyRG9uZSk7Cit9CisjZW5kaWYgLy8gRU5BQkxFKElOUFVUX1RZUEVf
Q09MT1IpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>164524</attachid>
            <date>2012-09-18 03:23:18 -0700</date>
            <delta_ts>2012-09-18 23:21:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-91832-20120918192244.patch</filename>
            <type>text/plain</type>
            <size>13600</size>
            <attacher name="KwangYong Choi">ky0.choi</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI4ODY3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggOGVkOWE5ZjM1ODIyMjE3
MmVhNjQzZDYwMzg4MGNlZTA4NWRkZjYyOS4uYmVlYzc2NzNhMDVkNWI2NTcxY2ViNThmMTE4OTEz
YTI0Y2Q3YmMwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1IEBACisyMDEyLTA5LTE3ICBLd2Fu
Z1lvbmcgQ2hvaSAgPGt5MC5jaG9pQHNhbXN1bmcuY29tPgorCisgICAgICAgIFtFRkxdW1dLMl0g
SW1wbGVtZW50ZWQgY29sb3IgcGlja2VyIEFQSQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTE4MzIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBBZGQgc3VwcG9ydCBmb3IgY29sb3IgcGlja2VyIEFQSSBmb3Ig
RUZMIHBvcnQgaW4gV2ViS2l0Mi4KKworICAgICAgICBUaGUgZXh0ZXJuYWwgYXBwbGljYXRpb24g
Y2FuIGltcGxlbWVudCBpbnB1dCBwaWNrZXIgYnkgb3ZlcnJpZGluZworICAgICAgICBzbWFydCBj
bGFzcyBmdW5jdGlvbi4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmNw
cDoKKyAgICAgICAgKF9Fd2tfVmlld19Qcml2YXRlX0RhdGEpOgorICAgICAgICAoX0V3a19WaWV3
X1ByaXZhdGVfRGF0YTo6X0V3a19WaWV3X1ByaXZhdGVfRGF0YSk6CisgICAgICAgIChld2tfdmll
d19pbnB1dF9waWNrZXJfc2hvdyk6CisgICAgICAgIChld2tfdmlld19pbnB1dF9waWNrZXJfaGlk
ZSk6CisgICAgICAgIChld2tfdmlld19jb2xvcl9waWNrZXJfc2hvdyk6CisgICAgICAgIChld2tf
dmlld19jb2xvcl9waWNrZXJfY29sb3Jfc2V0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2Vm
bC9ld2tfdmlldy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3X3ByaXZh
dGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlld191aV9jbGllbnQuY3Bw
OgorICAgICAgICAoc2hvd0NvbG9yUGlja2VyKToKKyAgICAgICAgKGhpZGVDb2xvclBpY2tlcik6
CisgICAgICAgIChld2tfdmlld191aV9jbGllbnRfYXR0YWNoKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL2VmbC90ZXN0cy90ZXN0X2V3azJfdmlldy5jcHA6CisgICAgICAgIChvbkNvbG9yUGlj
a2VyRG9uZSk6CisgICAgICAgIChzZXRDb2xvclBpY2tlckNvbG9yKToKKyAgICAgICAgKHNob3dD
b2xvclBpY2tlcik6CisgICAgICAgIChoaWRlQ29sb3JQaWNrZXIpOgorICAgICAgICAoVEVTVF9G
KToKKwogMjAxMi0wOS0xNyAgRXVubWkgTGVlICA8ZXVubWkxNS5sZWVAc2Ftc3VuZy5jb20+CiAK
ICAgICAgICAgW0VGTF1bV0syXSBBZGQgTmF0aXZlV2ViVG91Y2hFdmVudCBhbmQgaGFuZGxlIHRo
ZSBUb3VjaCBldmVudC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
ZWZsL2V3a192aWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192
aWV3LmNwcAppbmRleCAzNDJlM2U5MmI0YjZkZGEzZjc5MzEyMDIyMTBkOGQwMzM5M2MxYTU2Li4w
Yzk5NTM4YWI5YmEyMWI4NmFkNGY2OGE3YzY5ODU1YmU5OTI2ZGFlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5jcHAKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuY3BwCkBAIC0yNiw2ICsyNiw3IEBACiAj
aW5jbHVkZSAiTmF0aXZlV2ViV2hlZWxFdmVudC5oIgogI2luY2x1ZGUgIlBhZ2VDbGllbnRJbXBs
LmgiCiAjaW5jbHVkZSAiV0tBUElDYXN0LmgiCisjaW5jbHVkZSAiV0tDb2xvclBpY2tlclJlc3Vs
dExpc3RlbmVyLmgiCiAjaW5jbHVkZSAiV0tFaW5hU2hhcmVkU3RyaW5nLmgiCiAjaW5jbHVkZSAi
V0tGaW5kT3B0aW9ucy5oIgogI2luY2x1ZGUgIldLUmV0YWluUHRyLmgiCkBAIC05OCw2ICs5OSw3
IEBAIHN0cnVjdCBfRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhIHsKICAgICBFd2tfQmFja19Gb3J3YXJk
X0xpc3QqIGJhY2tGb3J3YXJkTGlzdDsKICAgICBPd25QdHI8RXdrX1NldHRpbmdzPiBzZXR0aW5n
czsKICAgICBib29sIGFyZU1vdXNlRXZlbnRzRW5hYmxlZDsKKyAgICBXS0NvbG9yUGlja2VyUmVz
dWx0TGlzdGVuZXJSZWYgY29sb3JQaWNrZXJSZXN1bHRMaXN0ZW5lcjsKIAogICAgIFdlYlBvcHVw
TWVudVByb3h5RWZsKiBwb3B1cE1lbnVQcm94eTsKICAgICBFaW5hX0xpc3QqIHBvcHVwTWVudUl0
ZW1zOwpAQCAtMTE2LDYgKzExOCw3IEBAIHN0cnVjdCBfRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhIHsK
ICAgICAgICAgOiBjdXJzb3JPYmplY3QoMCkKICAgICAgICAgLCBiYWNrRm9yd2FyZExpc3QoMCkK
ICAgICAgICAgLCBhcmVNb3VzZUV2ZW50c0VuYWJsZWQoZmFsc2UpCisgICAgICAgICwgY29sb3JQ
aWNrZXJSZXN1bHRMaXN0ZW5lcigwKQogICAgICAgICAsIHBvcHVwTWVudVByb3h5KDApCiAgICAg
ICAgICwgcG9wdXBNZW51SXRlbXMoMCkKICNpZmRlZiBIQVZFX0VDT1JFX1gKQEAgLTE2OTQsMyAr
MTY5Nyw2MiBAQCBXS0VpbmFTaGFyZWRTdHJpbmcgZXdrX3ZpZXdfcnVuX2phdmFzY3JpcHRfcHJv
bXB0KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBjb25zdCBXSwogCiAgICAgcmV0dXJuIFdLRWluYVNo
YXJlZFN0cmluZzo6YWRvcHQoc21hcnREYXRhLT5hcGktPnJ1bl9qYXZhc2NyaXB0X3Byb21wdChz
bWFydERhdGEsIG1lc3NhZ2UsIGRlZmF1bHRWYWx1ZSkpOwogfQorCisvKioKKyAqIEBpbnRlcm5h
bAorICogUmVxdWVzdHMgdG8gc2hvdyBleHRlcm5hbCBpbnB1dCBwaWNrZXIgYmFzZWQgb24gaW5w
dXRUeXBlLgorICovCit2b2lkIGV3a192aWV3X2lucHV0X3BpY2tlcl9zaG93KEV2YXNfT2JqZWN0
KiBld2tWaWV3LCBFd2tfSW5wdXRfVHlwZSBpbnB1dFR5cGUsIGNvbnN0IHZvaWQqIGRhdGEpCit7
CisgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEpOworICAg
IEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKHNtYXJ0RGF0YS0+YXBpKTsKKyAgICBFSU5BX1NB
RkVUWV9PTl9OVUxMX1JFVFVSTihzbWFydERhdGEtPmFwaS0+aW5wdXRfcGlja2VyX3Nob3cpOwor
CisgICAgc21hcnREYXRhLT5hcGktPmlucHV0X3BpY2tlcl9zaG93KHNtYXJ0RGF0YSwgaW5wdXRU
eXBlLCBkYXRhKTsKK30KKworLyoqCisgKiBAaW50ZXJuYWwKKyAqIFJlcXVlc3RzIHRvIGhpZGUg
ZXh0ZXJuYWwgaW5wdXQgcGlja2VyIGJhc2VkIG9uIGlucHV0VHlwZS4KKyAqLwordm9pZCBld2tf
dmlld19pbnB1dF9waWNrZXJfaGlkZShFdmFzX09iamVjdCogZXdrVmlldywgRXdrX0lucHV0X1R5
cGUgaW5wdXRUeXBlKQoreworICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywg
c21hcnREYXRhKTsKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTihzbWFydERhdGEtPmFw
aSk7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oc21hcnREYXRhLT5hcGktPmlucHV0
X3BpY2tlcl9oaWRlKTsKKworICAgIHNtYXJ0RGF0YS0+YXBpLT5pbnB1dF9waWNrZXJfaGlkZShz
bWFydERhdGEsIGlucHV0VHlwZSk7Cit9CisKKyNpZiBFTkFCTEUoSU5QVVRfVFlQRV9DT0xPUikK
Ky8qKgorICogQGludGVybmFsCisgKiBSZXFldXN0cyB0byBzaG93IGV4dGVybmFsIGNvbG9yIHBp
Y2tlci4KKyAqLwordm9pZCBld2tfdmlld19jb2xvcl9waWNrZXJfc2hvdyhFdmFzX09iamVjdCog
ZXdrVmlldywgY29uc3QgU3RyaW5nJiBpbnB1dFZhbHVlLCBXS0NvbG9yUGlja2VyUmVzdWx0TGlz
dGVuZXJSZWYgbGlzdGVuZXIpCit7CisgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tW
aWV3LCBzbWFydERhdGEpOworICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzbWFydERh
dGEsIHByaXYpOworCisgICAgcHJpdi0+Y29sb3JQaWNrZXJSZXN1bHRMaXN0ZW5lciA9IGxpc3Rl
bmVyOworCisgICAgZXdrX3ZpZXdfaW5wdXRfcGlja2VyX3Nob3coZXdrVmlldywgRVdLX0lOUFVU
X1RZUEVfQ09MT1IsIHN0YXRpY19jYXN0PGNvbnN0IHZvaWQqPihpbnB1dFZhbHVlLnV0ZjgoKS5k
YXRhKCkpKTsKK30KKyNlbmRpZgorCitFaW5hX0Jvb2wgZXdrX3ZpZXdfY29sb3JfcGlja2VyX2Nv
bG9yX3NldChFdmFzX09iamVjdCogZXdrVmlldywgY29uc3QgY2hhciogY29sb3IpCit7CisjaWYg
RU5BQkxFKElOUFVUX1RZUEVfQ09MT1IpCisgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihl
d2tWaWV3LCBzbWFydERhdGEsIGZhbHNlKTsKKyAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRV
Uk4oc21hcnREYXRhLCBwcml2LCBmYWxzZSk7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRV
Uk5fVkFMKHByaXYtPmNvbG9yUGlja2VyUmVzdWx0TGlzdGVuZXIsIGZhbHNlKTsKKyAgICBFSU5B
X1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoY29sb3IsIGZhbHNlKTsKKworICAgIFdLQ29sb3JQ
aWNrZXJSZXN1bHRMaXN0ZW5lclNldENvbG9yKHByaXYtPmNvbG9yUGlja2VyUmVzdWx0TGlzdGVu
ZXIsIFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKGNvbG9yKSk7CisgICAgcHJpdi0+Y29s
b3JQaWNrZXJSZXN1bHRMaXN0ZW5lciA9IDA7CisKKyAgICByZXR1cm4gdHJ1ZTsKKyNlbHNlCisg
ICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9lZmwvZXdrX3ZpZXcuaAppbmRleCBjNDQ5NTE0YWFkMjQ5MjVmMmU5NGM2MWNlZmVlYmEwYWEz
NWY3MjAxLi5jMGYyNGM4ZWE0ZDgzNDQyNjk2ZDI0Mzk0M2I2ZGQ0ZmExNTRkMTFhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmgKQEAgLTk0LDYgKzk0LDE2
IEBAIHR5cGVkZWYgZW51bSB7CiB0eXBlZGVmIHN0cnVjdCBfRXdrX1ZpZXdfU21hcnRfRGF0YSBF
d2tfVmlld19TbWFydF9EYXRhOwogdHlwZWRlZiBzdHJ1Y3QgX0V3a19WaWV3X1NtYXJ0X0NsYXNz
IEV3a19WaWV3X1NtYXJ0X0NsYXNzOwogCisvKioKKyAqIFxlbnVtICAgIEV3a19JbnB1dF9UeXBl
CisgKiBAYnJpZWYgICBQcm92aWRlcyB0eXBlIG9mIGlucHV0IGVsZW1lbnQKKyAqLworZW51bSBf
RXdrX0lucHV0X1R5cGUgeworICAgIEVXS19JTlBVVF9UWVBFX0NPTE9SCit9OworLyoqIENyZWF0
ZXMgYSB0eXBlIG5hbWUgZm9yIF9Fd2tfSW5wdXRfVHlwZV9Fd2tfSW5wdXRfVHlwZSAqLwordHlw
ZWRlZiBlbnVtIF9Fd2tfSW5wdXRfVHlwZSBFd2tfSW5wdXRfVHlwZTsKKwogLy8vIEV3ayB2aWV3
J3MgY2xhc3MsIHRvIGJlIG92ZXJyaWRkZW4gYnkgc3ViLWNsYXNzZXMuCiBzdHJ1Y3QgX0V3a19W
aWV3X1NtYXJ0X0NsYXNzIHsKICAgICBFdmFzX1NtYXJ0X0NsYXNzIHNjOyAvKio8IGFsbCBidXQg
J2RhdGEnIGlzIGZyZWUgdG8gYmUgY2hhbmdlZC4gKi8KQEAgLTEyMSwxMyArMTMxLDE4IEBAIHN0
cnVjdCBfRXdrX1ZpZXdfU21hcnRfQ2xhc3MgewogICAgIHZvaWQgKCpydW5famF2YXNjcmlwdF9h
bGVydCkoRXdrX1ZpZXdfU21hcnRfRGF0YSAqc2QsIGNvbnN0IGNoYXIgKm1lc3NhZ2UpOwogICAg
IEVpbmFfQm9vbCAoKnJ1bl9qYXZhc2NyaXB0X2NvbmZpcm0pKEV3a19WaWV3X1NtYXJ0X0RhdGEg
KnNkLCBjb25zdCBjaGFyICptZXNzYWdlKTsKICAgICBjb25zdCBjaGFyICooKnJ1bl9qYXZhc2Ny
aXB0X3Byb21wdCkoRXdrX1ZpZXdfU21hcnRfRGF0YSAqc2QsIGNvbnN0IGNoYXIgKm1lc3NhZ2Us
IGNvbnN0IGNoYXIgKmRlZmF1bHRfdmFsdWUpOyAvKio8IHJldHVybiBzdHJpbmcgc2hvdWxkIGJl
IHN0cmluZ3NoYXJlZC4gKi8KKworICAgIC8vIGlucHV0IHBpY2tlcjoKKyAgICAvLyAgIC0gRm9y
IHRoZSBFV0tfSU5QVVRfVFlQRV9DT0xPUiB0eXBlLCBkYXRhIGlzIHRoZSBpbml0aWFsIGNvbG9y
IHZhbHVlIG9mIGNoYXIqIHR5cGUuCisgICAgRWluYV9Cb29sICgqaW5wdXRfcGlja2VyX3Nob3cp
KEV3a19WaWV3X1NtYXJ0X0RhdGEgKnNkLCBFd2tfSW5wdXRfVHlwZSB0eXBlLCBjb25zdCB2b2lk
ICpkYXRhKTsKKyAgICBFaW5hX0Jvb2wgKCppbnB1dF9waWNrZXJfaGlkZSkoRXdrX1ZpZXdfU21h
cnRfRGF0YSAqc2QsIEV3a19JbnB1dF9UeXBlIHR5cGUpOwogfTsKIAogLyoqCiAgKiBUaGUgdmVy
c2lvbiB5b3UgaGF2ZSB0byBwdXQgaW50byB0aGUgdmVyc2lvbiBmaWVsZAogICogaW4gdGhlIEBh
IEV3a19WaWV3X1NtYXJ0X0NsYXNzIHN0cnVjdHVyZS4KICAqLwotI2RlZmluZSBFV0tfVklFV19T
TUFSVF9DTEFTU19WRVJTSU9OIDRVTAorI2RlZmluZSBFV0tfVklFV19TTUFSVF9DTEFTU19WRVJT
SU9OIDVVTAogCiAvKioKICAqIEluaXRpYWxpemVyIGZvciB3aG9sZSBFd2tfVmlld19TbWFydF9D
bGFzcyBzdHJ1Y3R1cmUuCkBAIC0xMzksNyArMTU0LDcgQEAgc3RydWN0IF9Fd2tfVmlld19TbWFy
dF9DbGFzcyB7CiAgKiBAc2VlIEVXS19WSUVXX1NNQVJUX0NMQVNTX0lOSVRfVkVSU0lPTgogICog
QHNlZSBFV0tfVklFV19TTUFSVF9DTEFTU19JTklUX05BTUVfVkVSU0lPTgogICovCi0jZGVmaW5l
IEVXS19WSUVXX1NNQVJUX0NMQVNTX0lOSVQoc21hcnRfY2xhc3NfaW5pdCkge3NtYXJ0X2NsYXNz
X2luaXQsIEVXS19WSUVXX1NNQVJUX0NMQVNTX1ZFUlNJT04sIDAsIDAsIDAsIDAsIDAsIDAsIDAs
IDAsIDAsIDAsIDAsIDAsIDAsIDAsIDB9CisjZGVmaW5lIEVXS19WSUVXX1NNQVJUX0NMQVNTX0lO
SVQoc21hcnRfY2xhc3NfaW5pdCkge3NtYXJ0X2NsYXNzX2luaXQsIEVXS19WSUVXX1NNQVJUX0NM
QVNTX1ZFUlNJT04sIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAs
IDAsIDB9CiAKIC8qKgogICogSW5pdGlhbGl6ZXIgdG8gemVybyBhIHdob2xlIEV3a19WaWV3X1Nt
YXJ0X0NsYXNzIHN0cnVjdHVyZS4KQEAgLTY2MSw2ICs2NzYsMTYgQEAgRUFQSSBFaW5hX0Jvb2wg
ZXdrX3ZpZXdfbW91c2VfZXZlbnRzX2VuYWJsZWRfc2V0KEV2YXNfT2JqZWN0ICpvLCBFaW5hX0Jv
b2wgZW5hYmwKICAqLwogRUFQSSBFaW5hX0Jvb2wgZXdrX3ZpZXdfbW91c2VfZXZlbnRzX2VuYWJs
ZWRfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpvKTsKIAorLyoKKyAqIFNldHMgdGhlIGNvbG9yIHZh
bHVlIG9mIGNvbG9yIGNob29zZXIKKyAqCisgKiBAcGFyYW0gbyB2aWV3IG9iamVjdCBjb250YWlu
cyBjb2xvciBjaG9vc2VyCisgKiBAcGFyYW0gY29sb3IgI1JHQiwgI1JSR0dCQiBvciBuYW1lZCBj
b2xvciBzdHJpbmcgdG8gYmUgc2V0CisgKgorICogQHJldHVybiBAYyBFSU5BX1RSVUUgb24gc3Vj
Y2VzcyBAYyBFSU5BX0ZBTFNFIG90aGVyd2lzZQorICovCitFQVBJIEVpbmFfQm9vbCBld2tfdmll
d19jb2xvcl9waWNrZXJfY29sb3Jfc2V0KEV2YXNfT2JqZWN0ICpvLCBjb25zdCBjaGFyICpjb2xv
cik7CisKICNpZmRlZiBfX2NwbHVzcGx1cwogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlld19wcml2YXRlLmggYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlld19wcml2YXRlLmgKaW5kZXggMWNiNDNlYTVj
ZDBhMTk4ZWFlOWUxY2IwOWI3NzM2MGIyODk5NTZlYi4uY2IwZThmMzM1Y2JhZGYxZDAyM2IzYjQ3
Y2ZhZjBhMDAwYmI2N2UyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9lZmwvZXdrX3ZpZXdfcHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZWZsL2V3a192aWV3X3ByaXZhdGUuaApAQCAtMjIsNiArMjIsNyBAQAogI2RlZmluZSBld2tf
dmlld19wcml2YXRlX2gKIAogI2luY2x1ZGUgIldlYlBhZ2VQcm94eS5oIgorI2luY2x1ZGUgImV3
a192aWV3LmgiCiAjaW5jbHVkZSA8RXZhcy5oPgogI2luY2x1ZGUgPFdLRWluYVNoYXJlZFN0cmlu
Zy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVGV4dERpcmVjdGlvbi5oPgpAQCAtMTAzLDYgKzEwNCwx
MiBAQCBib29sIGV3a192aWV3X2FjY2VsZXJhdGVkX2NvbXBvc2l0aW5nX21vZGVfZXhpdChjb25z
dCBFdmFzX09iamVjdCogZXdrVmlldyk7CiAKIHZvaWQgZXdrX3ZpZXdfcG9wdXBfbWVudV9yZXF1
ZXN0KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBXZWJLaXQ6OldlYlBvcHVwTWVudVByb3h5RWZsKiBw
b3B1cE1lbnUsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCBXZWJDb3JlOjpUZXh0RGlyZWN0aW9u
LCBkb3VibGUgcGFnZVNjYWxlRmFjdG9yLCBjb25zdCBWZWN0b3I8V2ViS2l0OjpXZWJQb3B1cEl0
ZW0+JiBpdGVtcywgaW50MzJfdCBzZWxlY3RlZEluZGV4KTsKIHZvaWQgZXdrX3ZpZXdfd2VicHJv
Y2Vzc19jcmFzaGVkKEV2YXNfT2JqZWN0KiBld2tWaWV3KTsKK3ZvaWQgZXdrX3ZpZXdfaW5wdXRf
cGlja2VyX3Nob3coRXZhc19PYmplY3QqIGV3a1ZpZXcsIEV3a19JbnB1dF9UeXBlIGlucHV0VHlw
ZSwgY29uc3Qgdm9pZCogZGF0YSk7Cit2b2lkIGV3a192aWV3X2lucHV0X3BpY2tlcl9oaWRlKEV2
YXNfT2JqZWN0KiBld2tWaWV3LCBFd2tfSW5wdXRfVHlwZSBpbnB1dFR5cGUpOworCisjaWYgRU5B
QkxFKElOUFVUX1RZUEVfQ09MT1IpCit2b2lkIGV3a192aWV3X2NvbG9yX3BpY2tlcl9zaG93KEV2
YXNfT2JqZWN0KiBld2tWaWV3LCBjb25zdCBTdHJpbmcmIGlucHV0VmFsdWUsIFdLQ29sb3JQaWNr
ZXJSZXN1bHRMaXN0ZW5lclJlZiBsaXN0ZW5lcik7CisjZW5kaWYKIAogdm9pZCBld2tfdmlld19y
dW5famF2YXNjcmlwdF9hbGVydChFdmFzX09iamVjdCogZXdrVmlldywgY29uc3QgV0tFaW5hU2hh
cmVkU3RyaW5nJiBtZXNzYWdlKTsKIGJvb2wgZXdrX3ZpZXdfcnVuX2phdmFzY3JpcHRfY29uZmly
bShFdmFzX09iamVjdCogZXdrVmlldywgY29uc3QgV0tFaW5hU2hhcmVkU3RyaW5nJiBtZXNzYWdl
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3
X3VpX2NsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmll
d191aV9jbGllbnQuY3BwCmluZGV4IDhlZGU1MGRkOWU4NzRmZjViNjEwYzU2OWM3OGY5NDc4OWI2
MzEzNzUuLmJmMTI4N2U3NzI4Mzk4NTMzNjVjNDA1NDU2YzI3NTc2MDk5MDRmNGYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3X3VpX2NsaWVudC5j
cHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXdfdWlfY2xp
ZW50LmNwcApAQCAtNjAsNiArNjAsMTggQEAgc3RhdGljIFdLU3RyaW5nUmVmIHJ1bkphdmFTY3Jp
cHRQcm9tcHQoV0tQYWdlUmVmLCBXS1N0cmluZ1JlZiBtZXNzYWdlLCBXS1N0cmluZ1IKICAgICBy
ZXR1cm4gdmFsdWUgPyBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZyh2YWx1ZSkgOiAwOwog
fQogCisjaWYgRU5BQkxFKElOUFVUX1RZUEVfQ09MT1IpCitzdGF0aWMgdm9pZCBzaG93Q29sb3JQ
aWNrZXIoV0tQYWdlUmVmLCBXS1N0cmluZ1JlZiBpbml0aWFsQ29sb3IsIFdLQ29sb3JQaWNrZXJS
ZXN1bHRMaXN0ZW5lclJlZiBsaXN0ZW5lciwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKK3sKKyAg
ICBld2tfdmlld19jb2xvcl9waWNrZXJfc2hvdyh0b0V3a1ZpZXcoY2xpZW50SW5mbyksIFdlYktp
dDo6dG9XVEZTdHJpbmcoaW5pdGlhbENvbG9yKSwgbGlzdGVuZXIpOworfQorCitzdGF0aWMgdm9p
ZCBoaWRlQ29sb3JQaWNrZXIoV0tQYWdlUmVmLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQorewor
ICAgIGV3a192aWV3X2lucHV0X3BpY2tlcl9oaWRlKHRvRXdrVmlldyhjbGllbnRJbmZvKSwgRVdL
X0lOUFVUX1RZUEVfQ09MT1IpOworfQorI2VuZGlmCisKIHZvaWQgZXdrX3ZpZXdfdWlfY2xpZW50
X2F0dGFjaChXS1BhZ2VSZWYgcGFnZVJlZiwgRXZhc19PYmplY3QqIGV3a1ZpZXcpCiB7CiAgICAg
V0tQYWdlVUlDbGllbnQgdWlDbGllbnQ7CkBAIC03MSw1ICs4MywxMSBAQCB2b2lkIGV3a192aWV3
X3VpX2NsaWVudF9hdHRhY2goV0tQYWdlUmVmIHBhZ2VSZWYsIEV2YXNfT2JqZWN0KiBld2tWaWV3
KQogICAgIHVpQ2xpZW50LnJ1bkphdmFTY3JpcHRBbGVydCA9IHJ1bkphdmFTY3JpcHRBbGVydDsK
ICAgICB1aUNsaWVudC5ydW5KYXZhU2NyaXB0Q29uZmlybSA9IHJ1bkphdmFTY3JpcHRDb25maXJt
OwogICAgIHVpQ2xpZW50LnJ1bkphdmFTY3JpcHRQcm9tcHQgPSBydW5KYXZhU2NyaXB0UHJvbXB0
OworCisjaWYgRU5BQkxFKElOUFVUX1RZUEVfQ09MT1IpCisgICAgdWlDbGllbnQuc2hvd0NvbG9y
UGlja2VyID0gc2hvd0NvbG9yUGlja2VyOworICAgIHVpQ2xpZW50LmhpZGVDb2xvclBpY2tlciA9
IGhpZGVDb2xvclBpY2tlcjsKKyNlbmRpZgorCiAgICAgV0tQYWdlU2V0UGFnZVVJQ2xpZW50KHBh
Z2VSZWYsICZ1aUNsaWVudCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2VmbC90ZXN0cy90ZXN0X2V3azJfdmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2VmbC90ZXN0cy90ZXN0X2V3azJfdmlldy5jcHAKaW5kZXggYTFjMDc3NjVlMGE0
ZjQyNzZhNzU4NzE0YWJlNGNkZmUzYzY0NTBlZi4uYWViNTdjZmRjODFmNzdlZWFiZGVhZTk2ODE1
ZDJlZjIxNDQxMjg5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9l
ZmwvdGVzdHMvdGVzdF9ld2syX3ZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZWZsL3Rlc3RzL3Rlc3RfZXdrMl92aWV3LmNwcApAQCAtNTg4LDMgKzU4OCw4NiBAQCBU
RVNUX0YoRVdLMlVuaXRUZXN0QmFzZSwgZXdrX3ZpZXdfcnVuX2phdmFzY3JpcHRfcHJvbXB0KQog
ICAgIEVYUEVDVF9TVFJFUShld2tfdmlld190aXRsZV9nZXQod2ViVmlldygpKSwgIm51bGwiKTsK
ICAgICBFWFBFQ1RfRVEocHJvbXB0Q2FsbGJhY2tEYXRhLmNhbGxlZCwgZmFsc2UpOwogfQorCisj
aWYgRU5BQkxFKElOUFVUX1RZUEVfQ09MT1IpCitzdGF0aWMgY29uc3QgY2hhciBpbml0aWFsQ29s
b3JbXSA9ICIjZmYwMDAwIjsKK3N0YXRpYyBjb25zdCBjaGFyIGNoYW5nZWRDb2xvcltdID0gIiMw
MDAwZmYiOworCitzdGF0aWMgYm9vbCBpc0NvbG9yUGlja2VyU2hvd24gPSBmYWxzZTsKKworc3Rh
dGljIHZvaWQgb25Db2xvclBpY2tlckRvbmUodm9pZCogdXNlckRhdGEsIEV2YXNfT2JqZWN0Kiwg
dm9pZCopCit7CisgICAgYm9vbCogaGFuZGxlZCA9IHN0YXRpY19jYXN0PGJvb2wqPih1c2VyRGF0
YSk7CisKKyAgICAqaGFuZGxlZCA9IHRydWU7Cit9CisKK3N0YXRpYyB1bnNpZ25lZCBjaGFyIHNl
dENvbG9yUGlja2VyQ29sb3Iodm9pZCogZGF0YSkKK3sKKyAgICBFd2tfVmlld19TbWFydF9EYXRh
KiBzbWFydERhdGEgPSBzdGF0aWNfY2FzdDxFd2tfVmlld19TbWFydF9EYXRhKj4oZGF0YSk7CisK
KyAgICAvLyA0LiBDaGFuZ2UgY29sb3IgdG8gY2hhbmdlZENvbG9yLgorICAgIEVYUEVDVF9UUlVF
KGV3a192aWV3X2NvbG9yX3BpY2tlcl9jb2xvcl9zZXQoc21hcnREYXRhLT5zZWxmLCBjaGFuZ2Vk
Q29sb3IpKTsKKworICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwoc21hcnREYXRh
LT5zZWxmLCAiaW5wdXQsdHlwZSxjb2xvcixyZXF1ZXN0IiwgMCk7CisKKyAgICByZXR1cm4gMDsK
K30KKworc3RhdGljIEVpbmFfQm9vbCBzaG93Q29sb3JQaWNrZXIoRXdrX1ZpZXdfU21hcnRfRGF0
YSogc21hcnREYXRhLCBFd2tfSW5wdXRfVHlwZSBpbnB1dFR5cGUsIGNvbnN0IHZvaWQqIGRhdGEp
Cit7CisgICAgc3RhdGljIGJvb2wgaXNGaXJzdFJ1biA9IHRydWU7CisgICAgY29uc3QgY2hhciog
aW5wdXRWYWx1ZSA9IHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihkYXRhKTsKKworICAgIGlzQ29s
b3JQaWNrZXJTaG93biA9IHRydWU7CisKKyAgICBpZiAoaXNGaXJzdFJ1bikgeworICAgICAgICAv
LyAxLiBDaGVjayB0eXBlIG9mIGlucHV0LgorICAgICAgICBFWFBFQ1RfRVEoaW5wdXRUeXBlLCBF
V0tfSU5QVVRfVFlQRV9DT0xPUik7CisgICAgICAgIC8vIDIuIENoZWNrIGluaXRpYWwgdmFsdWUg
ZnJvbSBodG1sIGZpbGUuCisgICAgICAgIEVYUEVDVF9TVFJFUShpbnB1dFZhbHVlLCBpbml0aWFs
Q29sb3IpOworCisgICAgICAgIGlzRmlyc3RSdW4gPSBmYWxzZTsKKyAgICB9IGVsc2UKKyAgICAg
ICAgLy8gNS4gaW5wdXRWYWx1ZSBzaG91bGQgYmUgY2hhbmdlZENvbG9yLgorICAgICAgICBFWFBF
Q1RfU1RSRVEoaW5wdXRWYWx1ZSwgY2hhbmdlZENvbG9yKTsKKworICAgIC8vIDMuIFJldHVybiBh
ZnRlciBtYWtpbmcgYSBjb2xvciBwaWNrZXIuCisgICAgZWNvcmVfdGltZXJfYWRkKDAuMCwgc2V0
Q29sb3JQaWNrZXJDb2xvciwgc21hcnREYXRhKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworc3Rh
dGljIEVpbmFfQm9vbCBoaWRlQ29sb3JQaWNrZXIoRXdrX1ZpZXdfU21hcnRfRGF0YSogc21hcnRE
YXRhLCBFd2tfSW5wdXRfVHlwZSBpbnB1dFR5cGUpCit7CisgICAgRVhQRUNUX0VRKGlucHV0VHlw
ZSwgRVdLX0lOUFVUX1RZUEVfQ09MT1IpOworCisgICAgLy8gVGVzdCBjb2xvciBwaWNrZXIgaXMg
c2hvd24uCisgICAgRVhQRUNUX1RSVUUoaXNDb2xvclBpY2tlclNob3duKTsKKyAgICBpc0NvbG9y
UGlja2VyU2hvd24gPSBmYWxzZTsKK30KKworVEVTVF9GKEVXSzJVbml0VGVzdEJhc2UsIGV3a192
aWV3X2NvbG9yX3BpY2tlcl9jb2xvcl9zZXQpCit7CisgICAgRXdrX1ZpZXdfU21hcnRfQ2xhc3Mq
IGFwaSA9IGV3a1ZpZXdDbGFzcygpOworICAgIGFwaS0+aW5wdXRfcGlja2VyX3Nob3cgPSBzaG93
Q29sb3JQaWNrZXI7CisgICAgYXBpLT5pbnB1dF9waWNrZXJfaGlkZSA9IGhpZGVDb2xvclBpY2tl
cjsKKworICAgIGxvYWRVcmxTeW5jKCJkYXRhOnRleHQvaHRtbCw8aW5wdXQgdHlwZT0nY29sb3In
IHZhbHVlPScjZmYwMDAwJz4iKTsKKworICAgIC8vIENsaWNrIGlucHV0IGVsZW1lbnQuCisgICAg
bW91c2VDbGljaygzMCwgMjApOworCisgICAgYm9vbCBoYW5kbGVkID0gZmFsc2U7CisgICAgZXZh
c19vYmplY3Rfc21hcnRfY2FsbGJhY2tfYWRkKHdlYlZpZXcoKSwgImlucHV0LHR5cGUsY29sb3Is
cmVxdWVzdCIsIG9uQ29sb3JQaWNrZXJEb25lLCAmaGFuZGxlZCk7CisgICAgd2hpbGUgKCFoYW5k
bGVkKQorICAgICAgICBlY29yZV9tYWluX2xvb3BfaXRlcmF0ZSgpOworCisgICAgLy8gQ2xpY2sg
aW5wdXQgZWxlbWVudCBhZ2Fpbi4KKyAgICBtb3VzZUNsaWNrKDMwLCAyMCk7CisKKyAgICBoYW5k
bGVkID0gZmFsc2U7CisgICAgd2hpbGUgKCFoYW5kbGVkKQorICAgICAgICBlY29yZV9tYWluX2xv
b3BfaXRlcmF0ZSgpOworICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2RlbCh3ZWJWaWV3
KCksICJpbnB1dCx0eXBlLGNvbG9yLHJlcXVlc3QiLCBvbkNvbG9yUGlja2VyRG9uZSk7Cit9Cisj
ZW5kaWYgLy8gRU5BQkxFKElOUFVUX1RZUEVfQ09MT1IpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>164669</attachid>
            <date>2012-09-18 23:21:53 -0700</date>
            <delta_ts>2012-09-20 01:58:19 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>diff</filename>
            <type>text/plain</type>
            <size>11955</size>
            <attacher name="KwangYong Choi">ky0.choi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCA2NmY3YzQ5Li4yOWQzNDMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzQg
QEAKKzIwMTItMDktMTggIEt3YW5nWW9uZyBDaG9pICA8a3kwLmNob2lAc2Ftc3VuZy5jb20+CisK
KyAgICAgICAgW0VGTF1bV0syXSBJbXBsZW1lbnRlZCBjb2xvciBwaWNrZXIgQVBJCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MTgzMgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBzdXBwb3J0IGZvciBj
b2xvciBwaWNrZXIgQVBJIGZvciBFRkwgcG9ydCBpbiBXZWJLaXQyLgorCisgICAgICAgIFRoZSBl
eHRlcm5hbCBhcHBsaWNhdGlvbiBjYW4gaW1wbGVtZW50IGlucHV0IHBpY2tlciBieSBvdmVycmlk
aW5nCisgICAgICAgIHNtYXJ0IGNsYXNzIGZ1bmN0aW9uLgorCisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9lZmwvZXdrX3ZpZXcuY3BwOgorICAgICAgICAoX0V3a19WaWV3X1ByaXZhdGVfRGF0YSk6
CisgICAgICAgIChfRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhOjpfRXdrX1ZpZXdfUHJpdmF0ZV9EYXRh
KToKKyAgICAgICAgKGV3a192aWV3X2NvbG9yX3BpY2tlcl9yZXF1ZXN0KToKKyAgICAgICAgKGV3
a192aWV3X2NvbG9yX3BpY2tlcl9kaXNtaXNzKToKKyAgICAgICAgKGV3a192aWV3X2NvbG9yX3Bp
Y2tlcl9jb2xvcl9zZXQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3Lmg6
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXdfcHJpdmF0ZS5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3X3VpX2NsaWVudC5jcHA6CisgICAgICAgIChz
aG93Q29sb3JQaWNrZXIpOgorICAgICAgICAoaGlkZUNvbG9yUGlja2VyKToKKyAgICAgICAgKGV3
a192aWV3X3VpX2NsaWVudF9hdHRhY2gpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL3Rl
c3RzL3Rlc3RfZXdrMl92aWV3LmNwcDoKKyAgICAgICAgKG9uQ29sb3JQaWNrZXJEb25lKToKKyAg
ICAgICAgKHNldENvbG9yUGlja2VyQ29sb3IpOgorICAgICAgICAoc2hvd0NvbG9yUGlja2VyKToK
KyAgICAgICAgKGhpZGVDb2xvclBpY2tlcik6CisgICAgICAgIChURVNUX0YpOgorCiAyMDEyLTA5
LTE4ICBTYWlsZXNoIEFncmF3YWwgIDxzYWlsQGNocm9taXVtLm9yZz4KIAogICAgICAgICBDaHJv
bWl1bTogU2Nyb2xsYmFyIHdpdGggdGlja21hcmtzIGRvZXNuJ3QgcmVzcG9uZCB0byBjbGlja3MK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmNwcAppbmRleCAx
YTBmZDg0Li45MTgzMTAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2VmbC9ld2tfdmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwv
ZXdrX3ZpZXcuY3BwCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAiTmF0aXZlV2ViV2hlZWxF
dmVudC5oIgogI2luY2x1ZGUgIlBhZ2VDbGllbnRJbXBsLmgiCiAjaW5jbHVkZSAiV0tBUElDYXN0
LmgiCisjaW5jbHVkZSAiV0tDb2xvclBpY2tlclJlc3VsdExpc3RlbmVyLmgiCiAjaW5jbHVkZSAi
V0tFaW5hU2hhcmVkU3RyaW5nLmgiCiAjaW5jbHVkZSAiV0tGaW5kT3B0aW9ucy5oIgogI2luY2x1
ZGUgIldLUmV0YWluUHRyLmgiCkBAIC05OCw2ICs5OSw3IEBAIHN0cnVjdCBfRXdrX1ZpZXdfUHJp
dmF0ZV9EYXRhIHsKICAgICBFd2tfQmFja19Gb3J3YXJkX0xpc3QqIGJhY2tGb3J3YXJkTGlzdDsK
ICAgICBPd25QdHI8RXdrX1NldHRpbmdzPiBzZXR0aW5nczsKICAgICBib29sIGFyZU1vdXNlRXZl
bnRzRW5hYmxlZDsKKyAgICBXS0NvbG9yUGlja2VyUmVzdWx0TGlzdGVuZXJSZWYgY29sb3JQaWNr
ZXJSZXN1bHRMaXN0ZW5lcjsKIAogICAgIFdlYlBvcHVwTWVudVByb3h5RWZsKiBwb3B1cE1lbnVQ
cm94eTsKICAgICBFaW5hX0xpc3QqIHBvcHVwTWVudUl0ZW1zOwpAQCAtMTE2LDYgKzExOCw3IEBA
IHN0cnVjdCBfRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhIHsKICAgICAgICAgOiBjdXJzb3JPYmplY3Qo
MCkKICAgICAgICAgLCBiYWNrRm9yd2FyZExpc3QoMCkKICAgICAgICAgLCBhcmVNb3VzZUV2ZW50
c0VuYWJsZWQoZmFsc2UpCisgICAgICAgICwgY29sb3JQaWNrZXJSZXN1bHRMaXN0ZW5lcigwKQog
ICAgICAgICAsIHBvcHVwTWVudVByb3h5KDApCiAgICAgICAgICwgcG9wdXBNZW51SXRlbXMoMCkK
ICNpZmRlZiBIQVZFX0VDT1JFX1gKQEAgLTE2NDksMyArMTY1Miw1MyBAQCB2b2lkIGV3a192aWV3
X3dlYnByb2Nlc3NfY3Jhc2hlZChFdmFzX09iamVjdCogZXdrVmlldykKICAgICAgICAgZXdrX3Zp
ZXdfaHRtbF9zdHJpbmdfbG9hZChld2tWaWV3LCAiVGhlIHdlYiBwcm9jZXNzIGhhcyBjcmFzaGVk
LiIsIDAsIHVybC5kYXRhKCkpOwogICAgIH0KIH0KKworI2lmIEVOQUJMRShJTlBVVF9UWVBFX0NP
TE9SKQorLyoqCisgKiBAaW50ZXJuYWwKKyAqIFJlcWV1c3RzIHRvIHNob3cgZXh0ZXJuYWwgY29s
b3IgcGlja2VyLgorICovCit2b2lkIGV3a192aWV3X2NvbG9yX3BpY2tlcl9yZXF1ZXN0KEV2YXNf
T2JqZWN0KiBld2tWaWV3LCBpbnQgciwgaW50IGcsIGludCBiLCBpbnQgYSwgV0tDb2xvclBpY2tl
clJlc3VsdExpc3RlbmVyUmVmIGxpc3RlbmVyKQoreworICAgIEVXS19WSUVXX1NEX0dFVF9PUl9S
RVRVUk4oZXdrVmlldywgc21hcnREYXRhKTsKKyAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRV
Uk4oc21hcnREYXRhLCBwcml2KTsKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTihzbWFy
dERhdGEtPmFwaS0+aW5wdXRfcGlja2VyX2NvbG9yX3JlcXVlc3QpOworCisgICAgcHJpdi0+Y29s
b3JQaWNrZXJSZXN1bHRMaXN0ZW5lciA9IGxpc3RlbmVyOworCisgICAgc21hcnREYXRhLT5hcGkt
PmlucHV0X3BpY2tlcl9jb2xvcl9yZXF1ZXN0KHNtYXJ0RGF0YSwgciwgZywgYiwgYSk7Cit9CisK
Ky8qKgorICogQGludGVybmFsCisgKiBSZXFldXN0cyB0byBoaWRlIGV4dGVybmFsIGNvbG9yIHBp
Y2tlci4KKyAqLwordm9pZCBld2tfdmlld19jb2xvcl9waWNrZXJfZGlzbWlzcyhFdmFzX09iamVj
dCogZXdrVmlldykKK3sKKyAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNt
YXJ0RGF0YSk7CisgICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgcHJp
dik7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oc21hcnREYXRhLT5hcGktPmlucHV0
X3BpY2tlcl9jb2xvcl9kaXNtaXNzKTsKKworICAgIHByaXYtPmNvbG9yUGlja2VyUmVzdWx0TGlz
dGVuZXIgPSAwOworCisgICAgc21hcnREYXRhLT5hcGktPmlucHV0X3BpY2tlcl9jb2xvcl9kaXNt
aXNzKHNtYXJ0RGF0YSk7Cit9CisjZW5kaWYKKworRWluYV9Cb29sIGV3a192aWV3X2NvbG9yX3Bp
Y2tlcl9jb2xvcl9zZXQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIGludCByLCBpbnQgZywgaW50IGIs
IGludCBhKQoreworI2lmIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9SKQorICAgIEVXS19WSUVXX1NE
X0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhLCBmYWxzZSk7CisgICAgRVdLX1ZJRVdf
UFJJVl9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgcHJpdiwgZmFsc2UpOworICAgIEVJTkFfU0FG
RVRZX09OX05VTExfUkVUVVJOX1ZBTChwcml2LT5jb2xvclBpY2tlclJlc3VsdExpc3RlbmVyLCBm
YWxzZSk7CisKKyAgICBXZWJDb3JlOjpDb2xvciBjb2xvciA9IFdlYkNvcmU6OkNvbG9yKHIsIGcs
IGIsIGEpOworICAgIGNvbnN0IFdLU3RyaW5nUmVmIGNvbG9yU3RyaW5nID0gV0tTdHJpbmdDcmVh
dGVXaXRoVVRGOENTdHJpbmcoY29sb3Iuc2VyaWFsaXplZCgpLnV0ZjgoKS5kYXRhKCkpOworICAg
IFdLQ29sb3JQaWNrZXJSZXN1bHRMaXN0ZW5lclNldENvbG9yKHByaXYtPmNvbG9yUGlja2VyUmVz
dWx0TGlzdGVuZXIsIGNvbG9yU3RyaW5nKTsKKyAgICBwcml2LT5jb2xvclBpY2tlclJlc3VsdExp
c3RlbmVyID0gMDsKKworICAgIHJldHVybiB0cnVlOworI2Vsc2UKKyAgICByZXR1cm4gZmFsc2U7
CisjZW5kaWYKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZs
L2V3a192aWV3LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5o
CmluZGV4IDk5NmEyYmIuLjhjYmI3NmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZWZsL2V3a192aWV3LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9lZmwvZXdrX3ZpZXcuaApAQCAtMTE1LDEzICsxMTUsMTggQEAgc3RydWN0IF9Fd2tfVmlld19T
bWFydF9DbGFzcyB7CiAgICAgRWluYV9Cb29sICgqbW91c2VfbW92ZSkoRXdrX1ZpZXdfU21hcnRf
RGF0YSAqc2QsIGNvbnN0IEV2YXNfRXZlbnRfTW91c2VfTW92ZSAqZXYpOwogICAgIEVpbmFfQm9v
bCAoKmtleV9kb3duKShFd2tfVmlld19TbWFydF9EYXRhICpzZCwgY29uc3QgRXZhc19FdmVudF9L
ZXlfRG93biAqZXYpOwogICAgIEVpbmFfQm9vbCAoKmtleV91cCkoRXdrX1ZpZXdfU21hcnRfRGF0
YSAqc2QsIGNvbnN0IEV2YXNfRXZlbnRfS2V5X1VwICpldik7CisKKyAgICAvLyBjb2xvciBwaWNr
ZXI6CisgICAgLy8gICAtIFNob3dzIGFuZCBoaWRlcyBjb2xvciBwaWNrZXIuCisgICAgRWluYV9C
b29sICgqaW5wdXRfcGlja2VyX2NvbG9yX3JlcXVlc3QpKEV3a19WaWV3X1NtYXJ0X0RhdGEgKnNk
LCBpbnQgciwgaW50IGcsIGludCBiLCBpbnQgYSk7CisgICAgRWluYV9Cb29sICgqaW5wdXRfcGlj
a2VyX2NvbG9yX2Rpc21pc3MpKEV3a19WaWV3X1NtYXJ0X0RhdGEgKnNkKTsKIH07CiAKIC8qKgog
ICogVGhlIHZlcnNpb24geW91IGhhdmUgdG8gcHV0IGludG8gdGhlIHZlcnNpb24gZmllbGQKICAq
IGluIHRoZSBAYSBFd2tfVmlld19TbWFydF9DbGFzcyBzdHJ1Y3R1cmUuCiAgKi8KLSNkZWZpbmUg
RVdLX1ZJRVdfU01BUlRfQ0xBU1NfVkVSU0lPTiAzVUwKKyNkZWZpbmUgRVdLX1ZJRVdfU01BUlRf
Q0xBU1NfVkVSU0lPTiA0VUwKIAogLyoqCiAgKiBJbml0aWFsaXplciBmb3Igd2hvbGUgRXdrX1Zp
ZXdfU21hcnRfQ2xhc3Mgc3RydWN0dXJlLgpAQCAtMTMzLDcgKzEzOCw3IEBAIHN0cnVjdCBfRXdr
X1ZpZXdfU21hcnRfQ2xhc3MgewogICogQHNlZSBFV0tfVklFV19TTUFSVF9DTEFTU19JTklUX1ZF
UlNJT04KICAqIEBzZWUgRVdLX1ZJRVdfU01BUlRfQ0xBU1NfSU5JVF9OQU1FX1ZFUlNJT04KICAq
LwotI2RlZmluZSBFV0tfVklFV19TTUFSVF9DTEFTU19JTklUKHNtYXJ0X2NsYXNzX2luaXQpIHtz
bWFydF9jbGFzc19pbml0LCBFV0tfVklFV19TTUFSVF9DTEFTU19WRVJTSU9OLCAwLCAwLCAwLCAw
LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwfQorI2RlZmluZSBFV0tfVklFV19TTUFSVF9DTEFTU19J
TklUKHNtYXJ0X2NsYXNzX2luaXQpIHtzbWFydF9jbGFzc19pbml0LCBFV0tfVklFV19TTUFSVF9D
TEFTU19WRVJTSU9OLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwfQog
CiAvKioKICAqIEluaXRpYWxpemVyIHRvIHplcm8gYSB3aG9sZSBFd2tfVmlld19TbWFydF9DbGFz
cyBzdHJ1Y3R1cmUuCkBAIC02NTUsNiArNjYwLDE5IEBAIEVBUEkgRWluYV9Cb29sIGV3a192aWV3
X21vdXNlX2V2ZW50c19lbmFibGVkX3NldChFdmFzX09iamVjdCAqbywgRWluYV9Cb29sIGVuYWJs
CiAgKi8KIEVBUEkgRWluYV9Cb29sIGV3a192aWV3X21vdXNlX2V2ZW50c19lbmFibGVkX2dldChj
b25zdCBFdmFzX09iamVjdCAqbyk7CiAKKy8qCisgKiBTZXRzIHRoZSBjb2xvciB2YWx1ZSBvZiBj
b2xvciBjaG9vc2VyCisgKgorICogQHBhcmFtIG8gdmlldyBvYmplY3QgY29udGFpbnMgY29sb3Ig
Y2hvb3NlcgorICogQHBhcmFtIHIgcmVkIGNoYW5uZWwgdmFsdWUgdG8gYmUgc2V0CisgKiBAcGFy
YW0gZyBncmVlbiBjaGFubmVsIHZhbHVlIHRvIGJlIHNldAorICogQHBhcmFtIGIgYmx1ZSBjaGFu
bmVsIHZhbHVlIHRvIGJlIHNldAorICogQHBhcmFtIGEgYWxwaGEgY2hhbm5lbCB2YWx1ZSB0byBi
ZSBzZXQKKyAqCisgKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBvbiBzdWNjZXNzIEBjIEVJTkFfRkFM
U0Ugb3RoZXJ3aXNlCisgKi8KK0VBUEkgRWluYV9Cb29sIGV3a192aWV3X2NvbG9yX3BpY2tlcl9j
b2xvcl9zZXQoRXZhc19PYmplY3QgKm8sIGludCByLCBpbnQgZywgaW50IGIsIGludCBhKTsKKwog
I2lmZGVmIF9fY3BsdXNwbHVzCiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3X3ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3X3ByaXZhdGUuaAppbmRleCA4OGY5YWFiLi40ZGIwYTk2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlld19w
cml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXdf
cHJpdmF0ZS5oCkBAIC0xMDMsNCArMTAzLDkgQEAgYm9vbCBld2tfdmlld19hY2NlbGVyYXRlZF9j
b21wb3NpdGluZ19tb2RlX2V4aXQoY29uc3QgRXZhc19PYmplY3QqIGV3a1ZpZXcpOwogdm9pZCBl
d2tfdmlld19wb3B1cF9tZW51X3JlcXVlc3QoRXZhc19PYmplY3QqIGV3a1ZpZXcsIFdlYktpdDo6
V2ViUG9wdXBNZW51UHJveHlFZmwqIHBvcHVwTWVudSwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYs
IFdlYkNvcmU6OlRleHREaXJlY3Rpb24sIGRvdWJsZSBwYWdlU2NhbGVGYWN0b3IsIGNvbnN0IFZl
Y3RvcjxXZWJLaXQ6OldlYlBvcHVwSXRlbT4mIGl0ZW1zLCBpbnQzMl90IHNlbGVjdGVkSW5kZXgp
Owogdm9pZCBld2tfdmlld193ZWJwcm9jZXNzX2NyYXNoZWQoRXZhc19PYmplY3QqIGV3a1ZpZXcp
OwogCisjaWYgRU5BQkxFKElOUFVUX1RZUEVfQ09MT1IpCit2b2lkIGV3a192aWV3X2NvbG9yX3Bp
Y2tlcl9yZXF1ZXN0KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBpbnQgciwgaW50IGcsIGludCBiLCBp
bnQgYSwgV0tDb2xvclBpY2tlclJlc3VsdExpc3RlbmVyUmVmIGxpc3RlbmVyKTsKK3ZvaWQgZXdr
X3ZpZXdfY29sb3JfcGlja2VyX2Rpc21pc3MoRXZhc19PYmplY3QqIGV3a1ZpZXcpOworI2VuZGlm
CisKICNlbmRpZiAvLyBld2tfdmlld19wcml2YXRlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3X3VpX2NsaWVudC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlld191aV9jbGllbnQuY3BwCmluZGV4IDE4ZWRl
MDguLjM0MTkwMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZs
L2V3a192aWV3X3VpX2NsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9lZmwvZXdrX3ZpZXdfdWlfY2xpZW50LmNwcApAQCAtNDMsNiArNDMsMTkgQEAgc3RhdGljIFdL
UGFnZVJlZiBjcmVhdGVOZXdQYWdlKFdLUGFnZVJlZiwgV0tVUkxSZXF1ZXN0UmVmLCBXS0RpY3Rp
b25hcnlSZWYsIFdLRXYKICAgICAgcmV0dXJuIGV3a192aWV3X3BhZ2VfY3JlYXRlKHRvRXdrVmll
dyhjbGllbnRJbmZvKSk7CiB9CiAKKyNpZiBFTkFCTEUoSU5QVVRfVFlQRV9DT0xPUikKK3N0YXRp
YyB2b2lkIHNob3dDb2xvclBpY2tlcihXS1BhZ2VSZWYsIFdLU3RyaW5nUmVmIGluaXRpYWxDb2xv
ciwgV0tDb2xvclBpY2tlclJlc3VsdExpc3RlbmVyUmVmIGxpc3RlbmVyLCBjb25zdCB2b2lkKiBj
bGllbnRJbmZvKQoreworICAgIFdlYkNvcmU6OkNvbG9yIGNvbG9yID0gV2ViQ29yZTo6Q29sb3Io
V2ViS2l0Ojp0b1dURlN0cmluZyhpbml0aWFsQ29sb3IpKTsKKyAgICBld2tfdmlld19jb2xvcl9w
aWNrZXJfcmVxdWVzdCh0b0V3a1ZpZXcoY2xpZW50SW5mbyksIGNvbG9yLnJlZCgpLCBjb2xvci5n
cmVlbigpLCBjb2xvci5ibHVlKCksIGNvbG9yLmFscGhhKCksIGxpc3RlbmVyKTsKK30KKworc3Rh
dGljIHZvaWQgaGlkZUNvbG9yUGlja2VyKFdLUGFnZVJlZiwgY29uc3Qgdm9pZCogY2xpZW50SW5m
bykKK3sKKyAgICBld2tfdmlld19jb2xvcl9waWNrZXJfZGlzbWlzcyh0b0V3a1ZpZXcoY2xpZW50
SW5mbykpOworfQorI2VuZGlmCisKIHZvaWQgZXdrX3ZpZXdfdWlfY2xpZW50X2F0dGFjaChXS1Bh
Z2VSZWYgcGFnZVJlZiwgRXZhc19PYmplY3QqIGV3a1ZpZXcpCiB7CiAgICAgV0tQYWdlVUlDbGll
bnQgdWlDbGllbnQ7CkBAIC01MSw1ICs2NCwxMSBAQCB2b2lkIGV3a192aWV3X3VpX2NsaWVudF9h
dHRhY2goV0tQYWdlUmVmIHBhZ2VSZWYsIEV2YXNfT2JqZWN0KiBld2tWaWV3KQogICAgIHVpQ2xp
ZW50LmNsaWVudEluZm8gPSBld2tWaWV3OwogICAgIHVpQ2xpZW50LmNsb3NlID0gY2xvc2VQYWdl
OwogICAgIHVpQ2xpZW50LmNyZWF0ZU5ld1BhZ2UgPSBjcmVhdGVOZXdQYWdlOworCisjaWYgRU5B
QkxFKElOUFVUX1RZUEVfQ09MT1IpCisgICAgdWlDbGllbnQuc2hvd0NvbG9yUGlja2VyID0gc2hv
d0NvbG9yUGlja2VyOworICAgIHVpQ2xpZW50LmhpZGVDb2xvclBpY2tlciA9IGhpZGVDb2xvclBp
Y2tlcjsKKyNlbmRpZgorCiAgICAgV0tQYWdlU2V0UGFnZVVJQ2xpZW50KHBhZ2VSZWYsICZ1aUNs
aWVudCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC90
ZXN0cy90ZXN0X2V3azJfdmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2Vm
bC90ZXN0cy90ZXN0X2V3azJfdmlldy5jcHAKaW5kZXggNTEwNDM0ZS4uYTM4ZDAzMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvdGVzdF9ld2syX3Zp
ZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL3Rlc3Rf
ZXdrMl92aWV3LmNwcApAQCAtMzg0LDMgKzM4NCw5NCBAQCBURVNUX0YoRVdLMlVuaXRUZXN0QmFz
ZSwgZXdrX3ZpZXdfdGl0bGVfY2hhbmdlZCkKICAgICB3YWl0VW50aWxUaXRsZUNoYW5nZWRUbygi
Iik7CiAgICAgRVhQRUNUX1NUUkVRKGV3a192aWV3X3RpdGxlX2dldCh3ZWJWaWV3KCkpLCAiIik7
CiB9CisKKyNpZiBFTkFCTEUoSU5QVVRfVFlQRV9DT0xPUikKK3N0YXRpYyBjb25zdCBpbnQgaW5p
dGlhbFJlZCA9IDB4MTI7CitzdGF0aWMgY29uc3QgaW50IGluaXRpYWxHcmVlbiA9IDB4MzQ7Citz
dGF0aWMgY29uc3QgaW50IGluaXRpYWxCbHVlID0gMHg1NjsKK3N0YXRpYyBjb25zdCBpbnQgaW5p
dGlhbEFscGhhID0gMHhmZjsKK3N0YXRpYyBjb25zdCBpbnQgY2hhbmdlZFJlZCA9IDB4OTg7Citz
dGF0aWMgY29uc3QgaW50IGNoYW5nZWRHcmVlbiA9IDB4NzY7CitzdGF0aWMgY29uc3QgaW50IGNo
YW5nZWRCbHVlID0gMHg1NDsKK3N0YXRpYyBjb25zdCBpbnQgY2hhbmdlZEFscGhhID0gMHhmZjsK
Kworc3RhdGljIGJvb2wgaXNDb2xvclBpY2tlclNob3duID0gZmFsc2U7CisKK3N0YXRpYyB2b2lk
IG9uQ29sb3JQaWNrZXJEb25lKHZvaWQqIHVzZXJEYXRhLCBFdmFzX09iamVjdCosIHZvaWQqKQor
eworICAgIGJvb2wqIGhhbmRsZWQgPSBzdGF0aWNfY2FzdDxib29sKj4odXNlckRhdGEpOworCisg
ICAgKmhhbmRsZWQgPSB0cnVlOworfQorCitzdGF0aWMgdW5zaWduZWQgY2hhciBzZXRDb2xvclBp
Y2tlckNvbG9yKHZvaWQqIGRhdGEpCit7CisgICAgRXdrX1ZpZXdfU21hcnRfRGF0YSogc21hcnRE
YXRhID0gc3RhdGljX2Nhc3Q8RXdrX1ZpZXdfU21hcnRfRGF0YSo+KGRhdGEpOworCisgICAgLy8g
My4gQ2hhbmdlIGNvbG9yIHRvIGNoYW5nZWQgY29sb3IuCisgICAgRVhQRUNUX1RSVUUoZXdrX3Zp
ZXdfY29sb3JfcGlja2VyX2NvbG9yX3NldChzbWFydERhdGEtPnNlbGYsIGNoYW5nZWRSZWQsIGNo
YW5nZWRHcmVlbiwgY2hhbmdlZEJsdWUsIGNoYW5nZWRBbHBoYSkpOworCisgICAgZXZhc19vYmpl
Y3Rfc21hcnRfY2FsbGJhY2tfY2FsbChzbWFydERhdGEtPnNlbGYsICJpbnB1dCx0eXBlLGNvbG9y
LHJlcXVlc3QiLCAwKTsKKworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgRWluYV9Cb29sIHNo
b3dDb2xvclBpY2tlcihFd2tfVmlld19TbWFydF9EYXRhKiBzbWFydERhdGEsIGludCByLCBpbnQg
ZywgaW50IGIsIGludCBhKQoreworICAgIHN0YXRpYyBib29sIGlzRmlyc3RSdW4gPSB0cnVlOwor
CisgICAgaXNDb2xvclBpY2tlclNob3duID0gdHJ1ZTsKKworICAgIGlmIChpc0ZpcnN0UnVuKSB7
CisgICAgICAgIC8vIDEuIENoZWNrIGluaXRpYWwgdmFsdWUgZnJvbSBodG1sIGZpbGUuCisgICAg
ICAgIEVYUEVDVF9FUShyLCBpbml0aWFsUmVkKTsKKyAgICAgICAgRVhQRUNUX0VRKGcsIGluaXRp
YWxHcmVlbik7CisgICAgICAgIEVYUEVDVF9FUShiLCBpbml0aWFsQmx1ZSk7CisgICAgICAgIEVY
UEVDVF9FUShhLCBpbml0aWFsQWxwaGEpOworCisgICAgICAgIGlzRmlyc3RSdW4gPSBmYWxzZTsK
KyAgICB9IGVsc2UgeworICAgICAgICAvLyA0LiBJbnB1dCB2YWx1ZXMgc2hvdWxkIGJlIHNhbWUg
YXMgY2hhbmdlZCBjb2xvci4KKyAgICAgICAgRVhQRUNUX0VRKHIsIGNoYW5nZWRSZWQpOworICAg
ICAgICBFWFBFQ1RfRVEoZywgY2hhbmdlZEdyZWVuKTsKKyAgICAgICAgRVhQRUNUX0VRKGIsIGNo
YW5nZWRCbHVlKTsKKyAgICAgICAgRVhQRUNUX0VRKGEsIGNoYW5nZWRBbHBoYSk7CisgICAgfQor
CisgICAgLy8gMi4gUmV0dXJuIGFmdGVyIG1ha2luZyBhIGNvbG9yIHBpY2tlci4KKyAgICBlY29y
ZV90aW1lcl9hZGQoMC4wLCBzZXRDb2xvclBpY2tlckNvbG9yLCBzbWFydERhdGEpOworICAgIHJl
dHVybiB0cnVlOworfQorCitzdGF0aWMgRWluYV9Cb29sIGhpZGVDb2xvclBpY2tlcihFd2tfVmll
d19TbWFydF9EYXRhKikKK3sKKyAgICAvLyBUZXN0IGNvbG9yIHBpY2tlciBpcyBzaG93bi4KKyAg
ICBFWFBFQ1RfVFJVRShpc0NvbG9yUGlja2VyU2hvd24pOworICAgIGlzQ29sb3JQaWNrZXJTaG93
biA9IGZhbHNlOworfQorCitURVNUX0YoRVdLMlVuaXRUZXN0QmFzZSwgZXdrX3ZpZXdfY29sb3Jf
cGlja2VyX2NvbG9yX3NldCkKK3sKKyAgICBFd2tfVmlld19TbWFydF9DbGFzcyogYXBpID0gZXdr
Vmlld0NsYXNzKCk7CisgICAgYXBpLT5pbnB1dF9waWNrZXJfY29sb3JfcmVxdWVzdCA9IHNob3dD
b2xvclBpY2tlcjsKKyAgICBhcGktPmlucHV0X3BpY2tlcl9jb2xvcl9kaXNtaXNzID0gaGlkZUNv
bG9yUGlja2VyOworCisgICAgbG9hZFVybFN5bmMoImRhdGE6dGV4dC9odG1sLDxpbnB1dCB0eXBl
PSdjb2xvcicgdmFsdWU9JyMxMjM0NTYnPiIpOworCisgICAgLy8gQ2xpY2sgaW5wdXQgZWxlbWVu
dC4KKyAgICBtb3VzZUNsaWNrKDMwLCAyMCk7CisKKyAgICBib29sIGhhbmRsZWQgPSBmYWxzZTsK
KyAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19hZGQod2ViVmlldygpLCAiaW5wdXQsdHlw
ZSxjb2xvcixyZXF1ZXN0Iiwgb25Db2xvclBpY2tlckRvbmUsICZoYW5kbGVkKTsKKyAgICB3aGls
ZSAoIWhhbmRsZWQpCisgICAgICAgIGVjb3JlX21haW5fbG9vcF9pdGVyYXRlKCk7CisKKyAgICAv
LyBDbGljayBpbnB1dCBlbGVtZW50IGFnYWluLgorICAgIG1vdXNlQ2xpY2soMzAsIDIwKTsKKwor
ICAgIGhhbmRsZWQgPSBmYWxzZTsKKyAgICB3aGlsZSAoIWhhbmRsZWQpCisgICAgICAgIGVjb3Jl
X21haW5fbG9vcF9pdGVyYXRlKCk7CisgICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfZGVs
KHdlYlZpZXcoKSwgImlucHV0LHR5cGUsY29sb3IscmVxdWVzdCIsIG9uQ29sb3JQaWNrZXJEb25l
KTsKK30KKyNlbmRpZiAvLyBFTkFCTEUoSU5QVVRfVFlQRV9DT0xPUikK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>164863</attachid>
            <date>2012-09-20 01:58:32 -0700</date>
            <delta_ts>2012-09-20 05:08:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-91832-20120920175756.patch</filename>
            <type>text/plain</type>
            <size>12830</size>
            <attacher name="KwangYong Choi">ky0.choi</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI5MDkzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggYjJjMmE5ODdmYzE4NzMx
ZmVkMDM4OGRhMzVjNTk3ZGMyNzg2MGVmZC4uMWRlYmNlY2IzYTM0ZTNhNWZmYjk5OTRlZjczMDVm
NTlmODQxOGM2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBACisyMDEyLTA5LTE5ICBLd2Fu
Z1lvbmcgQ2hvaSAgPGt5MC5jaG9pQHNhbXN1bmcuY29tPgorCisgICAgICAgIFtFRkxdW1dLMl0g
SW1wbGVtZW50ZWQgY29sb3IgcGlja2VyIEFQSQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTE4MzIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBBZGQgc3VwcG9ydCBmb3IgY29sb3IgcGlja2VyIEFQSSBmb3Ig
RUZMIHBvcnQgaW4gV2ViS2l0Mi4KKworICAgICAgICBUaGUgZXh0ZXJuYWwgYXBwbGljYXRpb24g
Y2FuIGltcGxlbWVudCBpbnB1dCBwaWNrZXIgYnkgb3ZlcnJpZGluZworICAgICAgICBzbWFydCBj
bGFzcyBmdW5jdGlvbi4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmNw
cDoKKyAgICAgICAgKF9Fd2tfVmlld19Qcml2YXRlX0RhdGEpOgorICAgICAgICAoX0V3a19WaWV3
X1ByaXZhdGVfRGF0YTo6X0V3a19WaWV3X1ByaXZhdGVfRGF0YSk6CisgICAgICAgIChld2tfdmll
d19jb2xvcl9waWNrZXJfcmVxdWVzdCk6CisgICAgICAgIChld2tfdmlld19jb2xvcl9waWNrZXJf
ZGlzbWlzcyk6CisgICAgICAgIChld2tfdmlld19jb2xvcl9waWNrZXJfY29sb3Jfc2V0KToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5oOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvZWZsL2V3a192aWV3X3ByaXZhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2Vm
bC9ld2tfdmlld191aV9jbGllbnQuY3BwOgorICAgICAgICAoc2hvd0NvbG9yUGlja2VyKToKKyAg
ICAgICAgKGhpZGVDb2xvclBpY2tlcik6CisgICAgICAgIChld2tfdmlld191aV9jbGllbnRfYXR0
YWNoKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy90ZXN0X2V3azJfdmlldy5j
cHA6CisgICAgICAgIChvbkNvbG9yUGlja2VyRG9uZSk6CisgICAgICAgIChzZXRDb2xvclBpY2tl
ckNvbG9yKToKKyAgICAgICAgKHNob3dDb2xvclBpY2tlcik6CisgICAgICAgIChoaWRlQ29sb3JQ
aWNrZXIpOgorICAgICAgICAoVEVTVF9GKToKKwogMjAxMi0wOS0xOSAgUHJhdGlrIFNvbGFua2kg
IDxwc29sYW5raUBhcHBsZS5jb20+CiAKICAgICAgICAgV2FybmluZyBpbiBTYW5kYm94RXh0ZW5z
aW9uLmggaWYgV0VCX1BST0NFU1NfU0FOREJPWCBpcyBub3QgZW5hYmxlZApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuY3BwIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuY3BwCmluZGV4IDVmMDg3ODY2MTdmMTNi
MWY3ZDMzOWM3M2M0N2JjNDA1Mzg0YjFkYWUuLjQ0YjZiM2U3Nzg3YjIwZTEzNzRlYTRkYjg0Njgw
NGI0YjIyZDMyMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZs
L2V3a192aWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tf
dmlldy5jcHAKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJOYXRpdmVXZWJXaGVlbEV2ZW50
LmgiCiAjaW5jbHVkZSAiUGFnZUNsaWVudEltcGwuaCIKICNpbmNsdWRlICJXS0FQSUNhc3QuaCIK
KyNpbmNsdWRlICJXS0NvbG9yUGlja2VyUmVzdWx0TGlzdGVuZXIuaCIKICNpbmNsdWRlICJXS0Vp
bmFTaGFyZWRTdHJpbmcuaCIKICNpbmNsdWRlICJXS0ZpbmRPcHRpb25zLmgiCiAjaW5jbHVkZSAi
V0tSZXRhaW5QdHIuaCIKQEAgLTk4LDYgKzk5LDcgQEAgc3RydWN0IF9Fd2tfVmlld19Qcml2YXRl
X0RhdGEgewogICAgIEV3a19CYWNrX0ZvcndhcmRfTGlzdCogYmFja0ZvcndhcmRMaXN0OwogICAg
IE93blB0cjxFd2tfU2V0dGluZ3M+IHNldHRpbmdzOwogICAgIGJvb2wgYXJlTW91c2VFdmVudHNF
bmFibGVkOworICAgIFdLQ29sb3JQaWNrZXJSZXN1bHRMaXN0ZW5lclJlZiBjb2xvclBpY2tlclJl
c3VsdExpc3RlbmVyOwogCiAgICAgV2ViUG9wdXBNZW51UHJveHlFZmwqIHBvcHVwTWVudVByb3h5
OwogICAgIEVpbmFfTGlzdCogcG9wdXBNZW51SXRlbXM7CkBAIC0xMTYsNiArMTE4LDcgQEAgc3Ry
dWN0IF9Fd2tfVmlld19Qcml2YXRlX0RhdGEgewogICAgICAgICA6IGN1cnNvck9iamVjdCgwKQog
ICAgICAgICAsIGJhY2tGb3J3YXJkTGlzdCgwKQogICAgICAgICAsIGFyZU1vdXNlRXZlbnRzRW5h
YmxlZChmYWxzZSkKKyAgICAgICAgLCBjb2xvclBpY2tlclJlc3VsdExpc3RlbmVyKDApCiAgICAg
ICAgICwgcG9wdXBNZW51UHJveHkoMCkKICAgICAgICAgLCBwb3B1cE1lbnVJdGVtcygwKQogI2lm
ZGVmIEhBVkVfRUNPUkVfWApAQCAtMTY5NCwzICsxNjk3LDUzIEBAIFdLRWluYVNoYXJlZFN0cmlu
ZyBld2tfdmlld19ydW5famF2YXNjcmlwdF9wcm9tcHQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIGNv
bnN0IFdLCiAKICAgICByZXR1cm4gV0tFaW5hU2hhcmVkU3RyaW5nOjphZG9wdChzbWFydERhdGEt
PmFwaS0+cnVuX2phdmFzY3JpcHRfcHJvbXB0KHNtYXJ0RGF0YSwgbWVzc2FnZSwgZGVmYXVsdFZh
bHVlKSk7CiB9CisKKyNpZiBFTkFCTEUoSU5QVVRfVFlQRV9DT0xPUikKKy8qKgorICogQGludGVy
bmFsCisgKiBSZXFldXN0cyB0byBzaG93IGV4dGVybmFsIGNvbG9yIHBpY2tlci4KKyAqLwordm9p
ZCBld2tfdmlld19jb2xvcl9waWNrZXJfcmVxdWVzdChFdmFzX09iamVjdCogZXdrVmlldywgaW50
IHIsIGludCBnLCBpbnQgYiwgaW50IGEsIFdLQ29sb3JQaWNrZXJSZXN1bHRMaXN0ZW5lclJlZiBs
aXN0ZW5lcikKK3sKKyAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0
RGF0YSk7CisgICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgcHJpdik7
CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oc21hcnREYXRhLT5hcGktPmlucHV0X3Bp
Y2tlcl9jb2xvcl9yZXF1ZXN0KTsKKworICAgIHByaXYtPmNvbG9yUGlja2VyUmVzdWx0TGlzdGVu
ZXIgPSBsaXN0ZW5lcjsKKworICAgIHNtYXJ0RGF0YS0+YXBpLT5pbnB1dF9waWNrZXJfY29sb3Jf
cmVxdWVzdChzbWFydERhdGEsIHIsIGcsIGIsIGEpOworfQorCisvKioKKyAqIEBpbnRlcm5hbAor
ICogUmVxZXVzdHMgdG8gaGlkZSBleHRlcm5hbCBjb2xvciBwaWNrZXIuCisgKi8KK3ZvaWQgZXdr
X3ZpZXdfY29sb3JfcGlja2VyX2Rpc21pc3MoRXZhc19PYmplY3QqIGV3a1ZpZXcpCit7CisgICAg
RVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEpOworICAgIEVXS19W
SUVXX1BSSVZfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIHByaXYpOworICAgIEVJTkFfU0FGRVRZ
X09OX05VTExfUkVUVVJOKHNtYXJ0RGF0YS0+YXBpLT5pbnB1dF9waWNrZXJfY29sb3JfZGlzbWlz
cyk7CisKKyAgICBwcml2LT5jb2xvclBpY2tlclJlc3VsdExpc3RlbmVyID0gMDsKKworICAgIHNt
YXJ0RGF0YS0+YXBpLT5pbnB1dF9waWNrZXJfY29sb3JfZGlzbWlzcyhzbWFydERhdGEpOworfQor
I2VuZGlmCisKK0VpbmFfQm9vbCBld2tfdmlld19jb2xvcl9waWNrZXJfY29sb3Jfc2V0KEV2YXNf
T2JqZWN0KiBld2tWaWV3LCBpbnQgciwgaW50IGcsIGludCBiLCBpbnQgYSkKK3sKKyNpZiBFTkFC
TEUoSU5QVVRfVFlQRV9DT0xPUikKKyAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1Zp
ZXcsIHNtYXJ0RGF0YSwgZmFsc2UpOworICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihz
bWFydERhdGEsIHByaXYsIGZhbHNlKTsKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9W
QUwocHJpdi0+Y29sb3JQaWNrZXJSZXN1bHRMaXN0ZW5lciwgZmFsc2UpOworCisgICAgV2ViQ29y
ZTo6Q29sb3IgY29sb3IgPSBXZWJDb3JlOjpDb2xvcihyLCBnLCBiLCBhKTsKKyAgICBjb25zdCBX
S1N0cmluZ1JlZiBjb2xvclN0cmluZyA9IFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKGNv
bG9yLnNlcmlhbGl6ZWQoKS51dGY4KCkuZGF0YSgpKTsKKyAgICBXS0NvbG9yUGlja2VyUmVzdWx0
TGlzdGVuZXJTZXRDb2xvcihwcml2LT5jb2xvclBpY2tlclJlc3VsdExpc3RlbmVyLCBjb2xvclN0
cmluZyk7CisgICAgcHJpdi0+Y29sb3JQaWNrZXJSZXN1bHRMaXN0ZW5lciA9IDA7CisKKyAgICBy
ZXR1cm4gdHJ1ZTsKKyNlbHNlCisgICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCit9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5oIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuaAppbmRleCBjNDQ5NTE0YWFkMjQ5
MjVmMmU5NGM2MWNlZmVlYmEwYWEzNWY3MjAxLi4xM2I4ZGFmMGIyMTc2MmY0ZjJiNDViOGI2OGU5
OTU3OWZmNTM5YTUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2Vm
bC9ld2tfdmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192
aWV3LmgKQEAgLTEyMSwxMyArMTIxLDE4IEBAIHN0cnVjdCBfRXdrX1ZpZXdfU21hcnRfQ2xhc3Mg
ewogICAgIHZvaWQgKCpydW5famF2YXNjcmlwdF9hbGVydCkoRXdrX1ZpZXdfU21hcnRfRGF0YSAq
c2QsIGNvbnN0IGNoYXIgKm1lc3NhZ2UpOwogICAgIEVpbmFfQm9vbCAoKnJ1bl9qYXZhc2NyaXB0
X2NvbmZpcm0pKEV3a19WaWV3X1NtYXJ0X0RhdGEgKnNkLCBjb25zdCBjaGFyICptZXNzYWdlKTsK
ICAgICBjb25zdCBjaGFyICooKnJ1bl9qYXZhc2NyaXB0X3Byb21wdCkoRXdrX1ZpZXdfU21hcnRf
RGF0YSAqc2QsIGNvbnN0IGNoYXIgKm1lc3NhZ2UsIGNvbnN0IGNoYXIgKmRlZmF1bHRfdmFsdWUp
OyAvKio8IHJldHVybiBzdHJpbmcgc2hvdWxkIGJlIHN0cmluZ3NoYXJlZC4gKi8KKworICAgIC8v
IGNvbG9yIHBpY2tlcjoKKyAgICAvLyAgIC0gU2hvd3MgYW5kIGhpZGVzIGNvbG9yIHBpY2tlci4K
KyAgICBFaW5hX0Jvb2wgKCppbnB1dF9waWNrZXJfY29sb3JfcmVxdWVzdCkoRXdrX1ZpZXdfU21h
cnRfRGF0YSAqc2QsIGludCByLCBpbnQgZywgaW50IGIsIGludCBhKTsKKyAgICBFaW5hX0Jvb2wg
KCppbnB1dF9waWNrZXJfY29sb3JfZGlzbWlzcykoRXdrX1ZpZXdfU21hcnRfRGF0YSAqc2QpOwog
fTsKIAogLyoqCiAgKiBUaGUgdmVyc2lvbiB5b3UgaGF2ZSB0byBwdXQgaW50byB0aGUgdmVyc2lv
biBmaWVsZAogICogaW4gdGhlIEBhIEV3a19WaWV3X1NtYXJ0X0NsYXNzIHN0cnVjdHVyZS4KICAq
LwotI2RlZmluZSBFV0tfVklFV19TTUFSVF9DTEFTU19WRVJTSU9OIDRVTAorI2RlZmluZSBFV0tf
VklFV19TTUFSVF9DTEFTU19WRVJTSU9OIDVVTAogCiAvKioKICAqIEluaXRpYWxpemVyIGZvciB3
aG9sZSBFd2tfVmlld19TbWFydF9DbGFzcyBzdHJ1Y3R1cmUuCkBAIC0xMzksNyArMTQ0LDcgQEAg
c3RydWN0IF9Fd2tfVmlld19TbWFydF9DbGFzcyB7CiAgKiBAc2VlIEVXS19WSUVXX1NNQVJUX0NM
QVNTX0lOSVRfVkVSU0lPTgogICogQHNlZSBFV0tfVklFV19TTUFSVF9DTEFTU19JTklUX05BTUVf
VkVSU0lPTgogICovCi0jZGVmaW5lIEVXS19WSUVXX1NNQVJUX0NMQVNTX0lOSVQoc21hcnRfY2xh
c3NfaW5pdCkge3NtYXJ0X2NsYXNzX2luaXQsIEVXS19WSUVXX1NNQVJUX0NMQVNTX1ZFUlNJT04s
IDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDB9CisjZGVmaW5lIEVX
S19WSUVXX1NNQVJUX0NMQVNTX0lOSVQoc21hcnRfY2xhc3NfaW5pdCkge3NtYXJ0X2NsYXNzX2lu
aXQsIEVXS19WSUVXX1NNQVJUX0NMQVNTX1ZFUlNJT04sIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAs
IDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDB9CiAKIC8qKgogICogSW5pdGlhbGl6ZXIgdG8gemVy
byBhIHdob2xlIEV3a19WaWV3X1NtYXJ0X0NsYXNzIHN0cnVjdHVyZS4KQEAgLTY2MSw2ICs2NjYs
MjMgQEAgRUFQSSBFaW5hX0Jvb2wgZXdrX3ZpZXdfbW91c2VfZXZlbnRzX2VuYWJsZWRfc2V0KEV2
YXNfT2JqZWN0ICpvLCBFaW5hX0Jvb2wgZW5hYmwKICAqLwogRUFQSSBFaW5hX0Jvb2wgZXdrX3Zp
ZXdfbW91c2VfZXZlbnRzX2VuYWJsZWRfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpvKTsKIAorLyoK
KyAqIFNldHMgdGhlIHVzZXIgY2hvc2VuIGNvbG9yLiBUbyBiZSB1c2VkIHdoZW4gaW1wbGVtZW50
aW5nIGEgY29sb3IgcGlja2VyLgorICoKKyAqIFRoZSBmdW5jdGlvbiBzaG91bGQgb25seSBiZSBj
YWxsZWQgd2hlbiBhIGNvbG9yIGhhcyBiZWVuIHJlcXVlc3RlZCBieSB0aGUgZG9jdW1lbnQuCisg
KiBJZiBjYWxsZWQgd2hlbiB0aGlzIGlzIG5vdCB0aGUgY2FzZSBvciB3aGVuIHRoZSBpbnB1dCBw
aWNrZXIgaGFzIGJlZW4gZGlzbWlzc2VkLCB0aGlzCisgKiBmdW5jdGlvbiB3aWxsIGZhaWwgYW5k
IHJldHVybiBFSU5BX0ZBTFNFLgorICoKKyAqIEBwYXJhbSBvIHZpZXcgb2JqZWN0IGNvbnRhaW5z
IGNvbG9yIHBpY2tlcgorICogQHBhcmFtIHIgcmVkIGNoYW5uZWwgdmFsdWUgdG8gYmUgc2V0Cisg
KiBAcGFyYW0gZyBncmVlbiBjaGFubmVsIHZhbHVlIHRvIGJlIHNldAorICogQHBhcmFtIGIgYmx1
ZSBjaGFubmVsIHZhbHVlIHRvIGJlIHNldAorICogQHBhcmFtIGEgYWxwaGEgY2hhbm5lbCB2YWx1
ZSB0byBiZSBzZXQKKyAqCisgKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBvbiBzdWNjZXNzIEBjIEVJ
TkFfRkFMU0Ugb3RoZXJ3aXNlCisgKi8KK0VBUEkgRWluYV9Cb29sIGV3a192aWV3X2NvbG9yX3Bp
Y2tlcl9jb2xvcl9zZXQoRXZhc19PYmplY3QgKm8sIGludCByLCBpbnQgZywgaW50IGIsIGludCBh
KTsKKwogI2lmZGVmIF9fY3BsdXNwbHVzCiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3X3ByaXZhdGUuaCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3X3ByaXZhdGUuaAppbmRleCAxY2I0M2VhNWNk
MGExOThlYWU5ZTFjYjA5Yjc3MzYwYjI4OTk1NmViLi5iZDk4ZDJhZDcyNGVhYTM4N2U5YjRiZDRl
ODgwMzdmZGIzN2JhMWRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2VmbC9ld2tfdmlld19wcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9lZmwvZXdrX3ZpZXdfcHJpdmF0ZS5oCkBAIC0xMDgsNCArMTA4LDkgQEAgdm9pZCBld2tfdmll
d19ydW5famF2YXNjcmlwdF9hbGVydChFdmFzX09iamVjdCogZXdrVmlldywgY29uc3QgV0tFaW5h
U2hhcmVkU3RyaW4KIGJvb2wgZXdrX3ZpZXdfcnVuX2phdmFzY3JpcHRfY29uZmlybShFdmFzX09i
amVjdCogZXdrVmlldywgY29uc3QgV0tFaW5hU2hhcmVkU3RyaW5nJiBtZXNzYWdlKTsKIFdLRWlu
YVNoYXJlZFN0cmluZyBld2tfdmlld19ydW5famF2YXNjcmlwdF9wcm9tcHQoRXZhc19PYmplY3Qq
IGV3a1ZpZXcsIGNvbnN0IFdLRWluYVNoYXJlZFN0cmluZyYgbWVzc2FnZSwgY29uc3QgV0tFaW5h
U2hhcmVkU3RyaW5nJiBkZWZhdWx0VmFsdWUpOwogCisjaWYgRU5BQkxFKElOUFVUX1RZUEVfQ09M
T1IpCit2b2lkIGV3a192aWV3X2NvbG9yX3BpY2tlcl9yZXF1ZXN0KEV2YXNfT2JqZWN0KiBld2tW
aWV3LCBpbnQgciwgaW50IGcsIGludCBiLCBpbnQgYSwgV0tDb2xvclBpY2tlclJlc3VsdExpc3Rl
bmVyUmVmIGxpc3RlbmVyKTsKK3ZvaWQgZXdrX3ZpZXdfY29sb3JfcGlja2VyX2Rpc21pc3MoRXZh
c19PYmplY3QqIGV3a1ZpZXcpOworI2VuZGlmCisKICNlbmRpZiAvLyBld2tfdmlld19wcml2YXRl
X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3
X3VpX2NsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmll
d191aV9jbGllbnQuY3BwCmluZGV4IDhlZGU1MGRkOWU4NzRmZjViNjEwYzU2OWM3OGY5NDc4OWI2
MzEzNzUuLjZiYmY4OTU2YzgyY2ZhMzkzYTA2NzRhMWNhNzM3ODVlNWFiNDZiMmEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3X3VpX2NsaWVudC5j
cHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXdfdWlfY2xp
ZW50LmNwcApAQCAtNjAsNiArNjAsMTkgQEAgc3RhdGljIFdLU3RyaW5nUmVmIHJ1bkphdmFTY3Jp
cHRQcm9tcHQoV0tQYWdlUmVmLCBXS1N0cmluZ1JlZiBtZXNzYWdlLCBXS1N0cmluZ1IKICAgICBy
ZXR1cm4gdmFsdWUgPyBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZyh2YWx1ZSkgOiAwOwog
fQogCisjaWYgRU5BQkxFKElOUFVUX1RZUEVfQ09MT1IpCitzdGF0aWMgdm9pZCBzaG93Q29sb3JQ
aWNrZXIoV0tQYWdlUmVmLCBXS1N0cmluZ1JlZiBpbml0aWFsQ29sb3IsIFdLQ29sb3JQaWNrZXJS
ZXN1bHRMaXN0ZW5lclJlZiBsaXN0ZW5lciwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKK3sKKyAg
ICBXZWJDb3JlOjpDb2xvciBjb2xvciA9IFdlYkNvcmU6OkNvbG9yKFdlYktpdDo6dG9XVEZTdHJp
bmcoaW5pdGlhbENvbG9yKSk7CisgICAgZXdrX3ZpZXdfY29sb3JfcGlja2VyX3JlcXVlc3QodG9F
d2tWaWV3KGNsaWVudEluZm8pLCBjb2xvci5yZWQoKSwgY29sb3IuZ3JlZW4oKSwgY29sb3IuYmx1
ZSgpLCBjb2xvci5hbHBoYSgpLCBsaXN0ZW5lcik7Cit9CisKK3N0YXRpYyB2b2lkIGhpZGVDb2xv
clBpY2tlcihXS1BhZ2VSZWYsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCit7CisgICAgZXdrX3Zp
ZXdfY29sb3JfcGlja2VyX2Rpc21pc3ModG9Fd2tWaWV3KGNsaWVudEluZm8pKTsKK30KKyNlbmRp
ZgorCiB2b2lkIGV3a192aWV3X3VpX2NsaWVudF9hdHRhY2goV0tQYWdlUmVmIHBhZ2VSZWYsIEV2
YXNfT2JqZWN0KiBld2tWaWV3KQogewogICAgIFdLUGFnZVVJQ2xpZW50IHVpQ2xpZW50OwpAQCAt
NzEsNSArODQsMTEgQEAgdm9pZCBld2tfdmlld191aV9jbGllbnRfYXR0YWNoKFdLUGFnZVJlZiBw
YWdlUmVmLCBFdmFzX09iamVjdCogZXdrVmlldykKICAgICB1aUNsaWVudC5ydW5KYXZhU2NyaXB0
QWxlcnQgPSBydW5KYXZhU2NyaXB0QWxlcnQ7CiAgICAgdWlDbGllbnQucnVuSmF2YVNjcmlwdENv
bmZpcm0gPSBydW5KYXZhU2NyaXB0Q29uZmlybTsKICAgICB1aUNsaWVudC5ydW5KYXZhU2NyaXB0
UHJvbXB0ID0gcnVuSmF2YVNjcmlwdFByb21wdDsKKworI2lmIEVOQUJMRShJTlBVVF9UWVBFX0NP
TE9SKQorICAgIHVpQ2xpZW50LnNob3dDb2xvclBpY2tlciA9IHNob3dDb2xvclBpY2tlcjsKKyAg
ICB1aUNsaWVudC5oaWRlQ29sb3JQaWNrZXIgPSBoaWRlQ29sb3JQaWNrZXI7CisjZW5kaWYKKwog
ICAgIFdLUGFnZVNldFBhZ2VVSUNsaWVudChwYWdlUmVmLCAmdWlDbGllbnQpOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvdGVzdF9ld2syX3Zp
ZXcuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvdGVzdF9ld2sy
X3ZpZXcuY3BwCmluZGV4IGVlMTJkMzU1NjM3ODI4NTc2MGI5NjAwN2NhN2Y0ZGU4NzEzMGM3ZTEu
LmJkNDg3NzNlY2I3YTcxMjZjMmU3MDYwNTIzOGE2YjBlMDg0YTU5NzEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL3Rlc3RfZXdrMl92aWV3LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy90ZXN0X2V3azJfdmll
dy5jcHAKQEAgLTYxMiwzICs2MTIsOTQgQEAgVEVTVF9GKEVXSzJVbml0VGVzdEJhc2UsIGV3a192
aWV3X3J1bl9qYXZhc2NyaXB0X3Byb21wdCkKICAgICBFWFBFQ1RfU1RSRVEoZXdrX3ZpZXdfdGl0
bGVfZ2V0KHdlYlZpZXcoKSksICJudWxsIik7CiAgICAgRVhQRUNUX0VRKHByb21wdENhbGxiYWNr
RGF0YS5jYWxsZWQsIGZhbHNlKTsKIH0KKworI2lmIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9SKQor
c3RhdGljIGNvbnN0IGludCBpbml0aWFsUmVkID0gMHgxMjsKK3N0YXRpYyBjb25zdCBpbnQgaW5p
dGlhbEdyZWVuID0gMHgzNDsKK3N0YXRpYyBjb25zdCBpbnQgaW5pdGlhbEJsdWUgPSAweDU2Owor
c3RhdGljIGNvbnN0IGludCBpbml0aWFsQWxwaGEgPSAweGZmOworc3RhdGljIGNvbnN0IGludCBj
aGFuZ2VkUmVkID0gMHg5ODsKK3N0YXRpYyBjb25zdCBpbnQgY2hhbmdlZEdyZWVuID0gMHg3NjsK
K3N0YXRpYyBjb25zdCBpbnQgY2hhbmdlZEJsdWUgPSAweDU0Oworc3RhdGljIGNvbnN0IGludCBj
aGFuZ2VkQWxwaGEgPSAweGZmOworCitzdGF0aWMgYm9vbCBpc0NvbG9yUGlja2VyU2hvd24gPSBm
YWxzZTsKKworc3RhdGljIHZvaWQgb25Db2xvclBpY2tlckRvbmUodm9pZCogdXNlckRhdGEsIEV2
YXNfT2JqZWN0Kiwgdm9pZCopCit7CisgICAgYm9vbCogaGFuZGxlZCA9IHN0YXRpY19jYXN0PGJv
b2wqPih1c2VyRGF0YSk7CisKKyAgICAqaGFuZGxlZCA9IHRydWU7Cit9CisKK3N0YXRpYyB1bnNp
Z25lZCBjaGFyIHNldENvbG9yUGlja2VyQ29sb3Iodm9pZCogZGF0YSkKK3sKKyAgICBFd2tfVmll
d19TbWFydF9EYXRhKiBzbWFydERhdGEgPSBzdGF0aWNfY2FzdDxFd2tfVmlld19TbWFydF9EYXRh
Kj4oZGF0YSk7CisKKyAgICAvLyAzLiBDaGFuZ2UgY29sb3IgdG8gY2hhbmdlZCBjb2xvci4KKyAg
ICBFWFBFQ1RfVFJVRShld2tfdmlld19jb2xvcl9waWNrZXJfY29sb3Jfc2V0KHNtYXJ0RGF0YS0+
c2VsZiwgY2hhbmdlZFJlZCwgY2hhbmdlZEdyZWVuLCBjaGFuZ2VkQmx1ZSwgY2hhbmdlZEFscGhh
KSk7CisKKyAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19jYWxsKHNtYXJ0RGF0YS0+c2Vs
ZiwgImlucHV0LHR5cGUsY29sb3IscmVxdWVzdCIsIDApOworCisgICAgcmV0dXJuIDA7Cit9CisK
K3N0YXRpYyBFaW5hX0Jvb2wgc2hvd0NvbG9yUGlja2VyKEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNt
YXJ0RGF0YSwgaW50IHIsIGludCBnLCBpbnQgYiwgaW50IGEpCit7CisgICAgc3RhdGljIGJvb2wg
aXNGaXJzdFJ1biA9IHRydWU7CisKKyAgICBpc0NvbG9yUGlja2VyU2hvd24gPSB0cnVlOworCisg
ICAgaWYgKGlzRmlyc3RSdW4pIHsKKyAgICAgICAgLy8gMS4gQ2hlY2sgaW5pdGlhbCB2YWx1ZSBm
cm9tIGh0bWwgZmlsZS4KKyAgICAgICAgRVhQRUNUX0VRKHIsIGluaXRpYWxSZWQpOworICAgICAg
ICBFWFBFQ1RfRVEoZywgaW5pdGlhbEdyZWVuKTsKKyAgICAgICAgRVhQRUNUX0VRKGIsIGluaXRp
YWxCbHVlKTsKKyAgICAgICAgRVhQRUNUX0VRKGEsIGluaXRpYWxBbHBoYSk7CisKKyAgICAgICAg
aXNGaXJzdFJ1biA9IGZhbHNlOworICAgIH0gZWxzZSB7CisgICAgICAgIC8vIDQuIElucHV0IHZh
bHVlcyBzaG91bGQgYmUgc2FtZSBhcyBjaGFuZ2VkIGNvbG9yLgorICAgICAgICBFWFBFQ1RfRVEo
ciwgY2hhbmdlZFJlZCk7CisgICAgICAgIEVYUEVDVF9FUShnLCBjaGFuZ2VkR3JlZW4pOworICAg
ICAgICBFWFBFQ1RfRVEoYiwgY2hhbmdlZEJsdWUpOworICAgICAgICBFWFBFQ1RfRVEoYSwgY2hh
bmdlZEFscGhhKTsKKyAgICB9CisKKyAgICAvLyAyLiBSZXR1cm4gYWZ0ZXIgbWFraW5nIGEgY29s
b3IgcGlja2VyLgorICAgIGVjb3JlX3RpbWVyX2FkZCgwLjAsIHNldENvbG9yUGlja2VyQ29sb3Is
IHNtYXJ0RGF0YSk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3N0YXRpYyBFaW5hX0Jvb2wgaGlk
ZUNvbG9yUGlja2VyKEV3a19WaWV3X1NtYXJ0X0RhdGEqKQoreworICAgIC8vIFRlc3QgY29sb3Ig
cGlja2VyIGlzIHNob3duLgorICAgIEVYUEVDVF9UUlVFKGlzQ29sb3JQaWNrZXJTaG93bik7Cisg
ICAgaXNDb2xvclBpY2tlclNob3duID0gZmFsc2U7Cit9CisKK1RFU1RfRihFV0syVW5pdFRlc3RC
YXNlLCBld2tfdmlld19jb2xvcl9waWNrZXJfY29sb3Jfc2V0KQoreworICAgIEV3a19WaWV3X1Nt
YXJ0X0NsYXNzKiBhcGkgPSBld2tWaWV3Q2xhc3MoKTsKKyAgICBhcGktPmlucHV0X3BpY2tlcl9j
b2xvcl9yZXF1ZXN0ID0gc2hvd0NvbG9yUGlja2VyOworICAgIGFwaS0+aW5wdXRfcGlja2VyX2Nv
bG9yX2Rpc21pc3MgPSBoaWRlQ29sb3JQaWNrZXI7CisKKyAgICBsb2FkVXJsU3luYygiZGF0YTp0
ZXh0L2h0bWwsPGlucHV0IHR5cGU9J2NvbG9yJyB2YWx1ZT0nIzEyMzQ1Nic+Iik7CisKKyAgICAv
LyBDbGljayBpbnB1dCBlbGVtZW50LgorICAgIG1vdXNlQ2xpY2soMzAsIDIwKTsKKworICAgIGJv
b2wgaGFuZGxlZCA9IGZhbHNlOworICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2FkZCh3
ZWJWaWV3KCksICJpbnB1dCx0eXBlLGNvbG9yLHJlcXVlc3QiLCBvbkNvbG9yUGlja2VyRG9uZSwg
JmhhbmRsZWQpOworICAgIHdoaWxlICghaGFuZGxlZCkKKyAgICAgICAgZWNvcmVfbWFpbl9sb29w
X2l0ZXJhdGUoKTsKKworICAgIC8vIENsaWNrIGlucHV0IGVsZW1lbnQgYWdhaW4uCisgICAgbW91
c2VDbGljaygzMCwgMjApOworCisgICAgaGFuZGxlZCA9IGZhbHNlOworICAgIHdoaWxlICghaGFu
ZGxlZCkKKyAgICAgICAgZWNvcmVfbWFpbl9sb29wX2l0ZXJhdGUoKTsKKyAgICBldmFzX29iamVj
dF9zbWFydF9jYWxsYmFja19kZWwod2ViVmlldygpLCAiaW5wdXQsdHlwZSxjb2xvcixyZXF1ZXN0
Iiwgb25Db2xvclBpY2tlckRvbmUpOworfQorI2VuZGlmIC8vIEVOQUJMRShJTlBVVF9UWVBFX0NP
TE9SKQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>