<?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>62363</bug_id>
          
          <creation_ts>2011-06-09 02:08:02 -0700</creation_ts>
          <short_desc>[EFL][WK2] Add PageClientImpl and WebPageProxyEfl for efl port</short_desc>
          <delta_ts>2011-06-09 22:55:30 -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>WebKit2</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>61838</blocked>
          <everconfirmed>0</everconfirmed>
          <reporter name="Eunmi Lee">enmi.lee</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>antognolli+webkit</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>kenneth</cc>
    
    <cc>leandro</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sangseok.lim</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>youngtaeck.song</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>417909</commentid>
    <comment_count>0</comment_count>
    <who name="Eunmi Lee">enmi.lee</who>
    <bug_when>2011-06-09 02:08:02 -0700</bug_when>
    <thetext>I&apos;ve added PageClientImpl and WebPageProxyEfl for efl port.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>417910</commentid>
    <comment_count>1</comment_count>
      <attachid>96565</attachid>
    <who name="Eunmi Lee">enmi.lee</who>
    <bug_when>2011-06-09 02:12:51 -0700</bug_when>
    <thetext>Created attachment 96565
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>417925</commentid>
    <comment_count>2</comment_count>
      <attachid>96565</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2011-06-09 02:47:01 -0700</bug_when>
    <thetext>Comment on attachment 96565
Patch

LGTM as an initial commit</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>417934</commentid>
    <comment_count>3</comment_count>
      <attachid>96565</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-06-09 03:27:01 -0700</bug_when>
    <thetext>Comment on attachment 96565
Patch

Clearing flags on attachment: 96565

Committed r88440: &lt;http://trac.webkit.org/changeset/88440&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>417935</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-06-09 03:27:06 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>417988</commentid>
    <comment_count>5</comment_count>
      <attachid>96565</attachid>
    <who name="Leandro Pereira">leandro</who>
    <bug_when>2011-06-09 07:03:32 -0700</bug_when>
    <thetext>Comment on attachment 96565
Patch

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

As with other WebKit2 patches, I&apos;m mostly reviewing for style/EFL usage issues.

&gt; Source/WebKit2/UIProcess/API/efl/PageClientImpl.cpp:73
&gt; +#define USE_EWK_TOUCH 1
&gt; +#if USE_EWK_TOUCH
&gt; +    evas_object_move(m_viewObject, 0, 0);
&gt; +#endif

Why this #define/#if?

&gt; Source/WebKit2/UIProcess/API/efl/PageClientImpl.cpp:229
&gt; +void PageClientImpl::findStringInCustomRepresentation(const String&amp;, FindOptions, unsigned maxMatchCount)

maxMatchCount isn&apos;t used. Omit its name. There are other unused parameters that should have its name omitted as well, please review them.

&gt; Source/WebKit2/UIProcess/API/efl/PageClientImpl.h:53
&gt; +    virtual void scrollView(const WebCore::IntRect&amp; scrollRect, const WebCore::IntSize&amp; scrollOffset);

No need to add parameter names on prototypes.

&gt; Source/WebKit2/UIProcess/WebPageProxy.h:668
&gt; -#if PLATFORM(GTK)
&gt; +#if PLATFORM(GTK) || PLATFORM(EFL)
&gt;      void getEditorCommandsForKeyEvent(Vector&lt;String&gt;&amp;);
&gt;  #endif

This function is just a stub below; do we really need the stub and this change here?

&gt; Source/WebKit2/UIProcess/efl/WebPageProxyEfl.cpp:51
&gt; +#if PLATFORM(X11)
&gt; +    platform = &quot;X11&quot;;
&gt; +#else
&gt; +    platform = &quot;Unknown&quot;;
&gt; +#endif

Since Evas/Ecore allows you to use other backends without recompiling your program, this will fail. If the result of WebPageProxy::standardUserAgent() is cached somewhere, it would be nicer if the Evas backend could be queried in runtime. If not, you can leave it like this, as this is unlikely to impact anything anyway.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>418518</commentid>
    <comment_count>6</comment_count>
    <who name="Eunmi Lee">enmi.lee</who>
    <bug_when>2011-06-09 22:55:30 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; (From update of attachment 96565 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=96565&amp;action=review
&gt; 
&gt; As with other WebKit2 patches, I&apos;m mostly reviewing for style/EFL usage issues.
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/efl/PageClientImpl.cpp:73
&gt; &gt; +#define USE_EWK_TOUCH 1
&gt; &gt; +#if USE_EWK_TOUCH
&gt; &gt; +    evas_object_move(m_viewObject, 0, 0);
&gt; &gt; +#endif
&gt; 
&gt; Why this #define/#if?

Done.
I&apos;m sorry it is my mistake and it is unnecessary codes.
I removed above codes.

&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/efl/PageClientImpl.cpp:229
&gt; &gt; +void PageClientImpl::findStringInCustomRepresentation(const String&amp;, FindOptions, unsigned maxMatchCount)
&gt; 
&gt; maxMatchCount isn&apos;t used. Omit its name. There are other unused parameters that should have its name omitted as well, please review them.

Done.
I removed all unused name from PageClientImpl.cpp.
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/efl/PageClientImpl.h:53
&gt; &gt; +    virtual void scrollView(const WebCore::IntRect&amp; scrollRect, const WebCore::IntSize&amp; scrollOffset);
&gt; 
&gt; No need to add parameter names on prototypes.

Done. 
I removed all parameter names from PageClientImpl.h

&gt; 
&gt; &gt; Source/WebKit2/UIProcess/WebPageProxy.h:668
&gt; &gt; -#if PLATFORM(GTK)
&gt; &gt; +#if PLATFORM(GTK) || PLATFORM(EFL)
&gt; &gt;      void getEditorCommandsForKeyEvent(Vector&lt;String&gt;&amp;);
&gt; &gt;  #endif
&gt; 
&gt; This function is just a stub below; do we really need the stub and this change here?

Done.
It is not used now, so I removed that function.

&gt; 
&gt; &gt; Source/WebKit2/UIProcess/efl/WebPageProxyEfl.cpp:51
&gt; &gt; +#if PLATFORM(X11)
&gt; &gt; +    platform = &quot;X11&quot;;
&gt; &gt; +#else
&gt; &gt; +    platform = &quot;Unknown&quot;;
&gt; &gt; +#endif
&gt; 
&gt; Since Evas/Ecore allows you to use other backends without recompiling your program, this will fail. If the result of WebPageProxy::standardUserAgent() is cached somewhere, it would be nicer if the Evas backend could be queried in runtime. If not, you can leave it like this, as this is unlikely to impact anything anyway.

Yes, you are right.
And we can check the Evas/Ecore backends using ecore_evas_engine_name_get().
However, we can not get the Ecore_Evas because standardUserAgent() is static function.
So, I think I have to leave that codes.

You can see the patch in the below url:
https://bugs.webkit.org/show_bug.cgi?id=62429</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>96565</attachid>
            <date>2011-06-09 02:12:51 -0700</date>
            <delta_ts>2011-06-09 07:03:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-62363-20110609181249.patch</filename>
            <type>text/plain</type>
            <size>18347</size>
            <attacher name="Eunmi Lee">enmi.lee</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODgyOTcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCBlYTFiN2U0YjE3NTcwYjlk
MDRiMjJhZTNmNTNhY2Q2NTVjNjU3Njc5Li4wNWE4NzgyOGQ0NmI5ZmI3MjU4MTI2ODk5ODY4MzFi
OGYzYTM0OTYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjAgQEAKKzIwMTEtMDYtMDkgIEV1bm1p
IExlZSAgPGV1bm1pMTUubGVlQHNhbXN1bmcuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFtFRkxdW1dLMl0gQWRkIFBhZ2VDbGllbnRJbXBsIGFu
ZCBXZWJQYWdlUHJveHlFZmwgZm9yIGVmbCBwb3J0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD02MjM2MworCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9l
ZmwvUGFnZUNsaWVudEltcGwuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVu
dEltcGw6OlBhZ2VDbGllbnRJbXBsKToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6
On5QYWdlQ2xpZW50SW1wbCk6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpjcmVh
dGVEcmF3aW5nQXJlYVByb3h5KToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OnNl
dFZpZXdOZWVkc0Rpc3BsYXkpOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6ZGlz
cGxheVZpZXcpOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6c2Nyb2xsVmlldyk6
CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjp2aWV3U2l6ZSk6CisgICAgICAgIChX
ZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjppc1ZpZXdXaW5kb3dBY3RpdmUpOgorICAgICAgICAoV2Vi
S2l0OjpQYWdlQ2xpZW50SW1wbDo6aXNWaWV3Rm9jdXNlZCk6CisgICAgICAgIChXZWJLaXQ6OlBh
Z2VDbGllbnRJbXBsOjppc1ZpZXdWaXNpYmxlKToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVu
dEltcGw6OmlzVmlld0luV2luZG93KToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6
OnByb2Nlc3NEaWRDcmFzaCk6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpkaWRS
ZWxhdW5jaFByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6cGFnZUNs
b3NlZCk6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjp0b29sVGlwQ2hhbmdlZCk6
CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpzZXRDdXJzb3IpOgorICAgICAgICAo
V2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6c2V0Vmlld3BvcnRBcmd1bWVudHMpOgorICAgICAgICAo
V2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6cmVnaXN0ZXJFZGl0Q29tbWFuZCk6CisgICAgICAgIChX
ZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpjbGVhckFsbEVkaXRDb21tYW5kcyk6CisgICAgICAgIChX
ZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpjYW5VbmRvUmVkbyk6CisgICAgICAgIChXZWJLaXQ6OlBh
Z2VDbGllbnRJbXBsOjpleGVjdXRlVW5kb1JlZG8pOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xp
ZW50SW1wbDo6Y29udmVydFRvRGV2aWNlU3BhY2UpOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xp
ZW50SW1wbDo6Y29udmVydFRvVXNlclNwYWNlKToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVu
dEltcGw6OndpbmRvd1RvU2NyZWVuKToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6
OmRvbmVXaXRoS2V5RXZlbnQpOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6Y3Jl
YXRlUG9wdXBNZW51UHJveHkpOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6Y3Jl
YXRlQ29udGV4dE1lbnVQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpz
ZXRGaW5kSW5kaWNhdG9yKToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OmRpZENo
YW5nZVNjcm9sbGJhcnNGb3JNYWluRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50
SW1wbDo6ZGlkQ29tbWl0TG9hZEZvck1haW5GcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VD
bGllbnRJbXBsOjpkaWRGaW5pc2hMb2FkaW5nRGF0YUZvckN1c3RvbVJlcHJlc2VudGF0aW9uKToK
KyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OmN1c3RvbVJlcHJlc2VudGF0aW9uWm9v
bUZhY3Rvcik6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpzZXRDdXN0b21SZXBy
ZXNlbnRhdGlvblpvb21GYWN0b3IpOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6
Zmxhc2hCYWNraW5nU3RvcmVVcGRhdGVzKToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudElt
cGw6OmZpbmRTdHJpbmdJbkN1c3RvbVJlcHJlc2VudGF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6
UGFnZUNsaWVudEltcGw6OmNvdW50U3RyaW5nTWF0Y2hlc0luQ3VzdG9tUmVwcmVzZW50YXRpb24p
OgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6dXNlclNwYWNlU2NhbGVGYWN0b3Ip
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL1BhZ2VDbGllbnRJbXBsLmg6IEFkZGVkLgor
ICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktp
dDo6UGFnZUNsaWVudEltcGw6OnZpZXdPYmplY3QpOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xp
ZW50SW1wbDo6cGFnZSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9lZmwvV2ViUGFnZVByb3h5RWZsLmNwcDogQWRkZWQuCisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6dmlld09iamVjdCk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2VQcm94eTo6c3RhbmRhcmRVc2VyQWdlbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
UHJveHk6OmdldEVkaXRvckNvbW1hbmRzRm9yS2V5RXZlbnQpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlUHJveHk6OnNhdmVSZWNlbnRTZWFyY2hlcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2VQcm94eTo6bG9hZFJlY2VudFNlYXJjaGVzKToKKwogMjAxMS0wNi0wNyAgU2FtIFdlaW5pZyAg
PHNhbUB3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFuZGVycyBDYXJsc3Nvbi4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL1BhZ2VDbGllbnRJ
bXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL1BhZ2VDbGllbnRJbXBs
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5hMmNkN2MwMDUwZmIxZWMwYjBmMjU5NjMxZTQ1OWUyNTc1Y2ZhYWI0
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvUGFn
ZUNsaWVudEltcGwuY3BwCkBAIC0wLDAgKzEsMjQ0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDExIFNhbXN1bmcgRWxlY3Ryb25pY3MKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgIlBhZ2VDbGllbnRJbXBsLmgiCisKKyNpbmNsdWRlICJEcmF3aW5nQXJlYVByb3h5
SW1wbC5oIgorI2luY2x1ZGUgIk5hdGl2ZVdlYktleWJvYXJkRXZlbnQuaCIKKyNpbmNsdWRlICJO
b3RJbXBsZW1lbnRlZC5oIgorI2luY2x1ZGUgIldlYkNvbnRleHQuaCIKKyNpbmNsdWRlICJXZWJD
b250ZXh0TWVudVByb3h5LmgiCisjaW5jbHVkZSAiV2ViUGFnZVByb3h5LmgiCisKK3VzaW5nIG5h
bWVzcGFjZSBXZWJDb3JlOworCituYW1lc3BhY2UgV2ViS2l0IHsKKworUGFnZUNsaWVudEltcGw6
OlBhZ2VDbGllbnRJbXBsKFdlYkNvbnRleHQqIGNvbnRleHQsIFdlYlBhZ2VHcm91cCogcGFnZUdy
b3VwLCBFdmFzX09iamVjdCogdmlld09iamVjdCkKKyAgICA6IG1fdmlld09iamVjdCh2aWV3T2Jq
ZWN0KQoreworICAgIG1fcGFnZSA9IGNvbnRleHQtPmNyZWF0ZVdlYlBhZ2UodGhpcywgcGFnZUdy
b3VwKTsKKyAgICBtX3BhZ2UtPmluaXRpYWxpemVXZWJQYWdlKCk7Cit9CisKK1BhZ2VDbGllbnRJ
bXBsOjp+UGFnZUNsaWVudEltcGwoKQoreworfQorCisvLyBQYWdlQ2xpZW50CitQYXNzT3duUHRy
PERyYXdpbmdBcmVhUHJveHk+IFBhZ2VDbGllbnRJbXBsOjpjcmVhdGVEcmF3aW5nQXJlYVByb3h5
KCkKK3sKKyAgICByZXR1cm4gRHJhd2luZ0FyZWFQcm94eUltcGw6OmNyZWF0ZShtX3BhZ2UuZ2V0
KCkpOworfQorCit2b2lkIFBhZ2VDbGllbnRJbXBsOjpzZXRWaWV3TmVlZHNEaXNwbGF5KGNvbnN0
IFdlYkNvcmU6OkludFJlY3QmIHJlY3QpCit7CisgICAgZXZhc19vYmplY3RfaW1hZ2VfZGF0YV91
cGRhdGVfYWRkKG1fdmlld09iamVjdCwgcmVjdC54KCksIHJlY3QueSgpLCByZWN0LndpZHRoKCks
IHJlY3QuaGVpZ2h0KCkpOworfQorCit2b2lkIFBhZ2VDbGllbnRJbXBsOjpkaXNwbGF5Vmlldygp
Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBQYWdlQ2xpZW50SW1wbDo6c2Ny
b2xsVmlldyhjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBzY3JvbGxSZWN0LCBjb25zdCBXZWJDb3Jl
OjpJbnRTaXplJiBzY3JvbGxPZmZzZXQpCit7CisgICAgc2V0Vmlld05lZWRzRGlzcGxheShzY3Jv
bGxSZWN0KTsKKyNkZWZpbmUgVVNFX0VXS19UT1VDSCAxCisjaWYgVVNFX0VXS19UT1VDSAorICAg
IGV2YXNfb2JqZWN0X21vdmUobV92aWV3T2JqZWN0LCAwLCAwKTsKKyNlbmRpZgorfQorCitXZWJD
b3JlOjpJbnRTaXplIFBhZ2VDbGllbnRJbXBsOjp2aWV3U2l6ZSgpCit7CisgICAgaW50IHdpZHRo
LCBoZWlnaHQ7CisgICAgZXZhc19vYmplY3RfZ2VvbWV0cnlfZ2V0KG1fdmlld09iamVjdCwgMCwg
MCwgJndpZHRoLCAmaGVpZ2h0KTsKKyAgICByZXR1cm4gSW50U2l6ZSh3aWR0aCwgaGVpZ2h0KTsK
K30KKworYm9vbCBQYWdlQ2xpZW50SW1wbDo6aXNWaWV3V2luZG93QWN0aXZlKCkKK3sKKyAgICBu
b3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiB0cnVlOworfQorCitib29sIFBhZ2VDbGllbnRJ
bXBsOjppc1ZpZXdGb2N1c2VkKCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVy
biB0cnVlOworfQorCitib29sIFBhZ2VDbGllbnRJbXBsOjppc1ZpZXdWaXNpYmxlKCkKK3sKKyAg
ICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiB0cnVlOworfQorCitib29sIFBhZ2VDbGll
bnRJbXBsOjppc1ZpZXdJbldpbmRvdygpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBy
ZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBQYWdlQ2xpZW50SW1wbDo6cHJvY2Vzc0RpZENyYXNoKCkK
K3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIFBhZ2VDbGllbnRJbXBsOjpkaWRS
ZWxhdW5jaFByb2Nlc3MoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgUGFn
ZUNsaWVudEltcGw6OnBhZ2VDbG9zZWQoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisK
K3ZvaWQgUGFnZUNsaWVudEltcGw6OnRvb2xUaXBDaGFuZ2VkKGNvbnN0IFN0cmluZyYsIGNvbnN0
IFN0cmluZyYpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBQYWdlQ2xpZW50
SW1wbDo6c2V0Q3Vyc29yKGNvbnN0IEN1cnNvciYgY3Vyc29yKQoreworICAgIG5vdEltcGxlbWVu
dGVkKCk7Cit9CisKK3ZvaWQgUGFnZUNsaWVudEltcGw6OnNldFZpZXdwb3J0QXJndW1lbnRzKGNv
bnN0IFdlYkNvcmU6OlZpZXdwb3J0QXJndW1lbnRzJikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgp
OworfQorCit2b2lkIFBhZ2VDbGllbnRJbXBsOjpyZWdpc3RlckVkaXRDb21tYW5kKFBhc3NSZWZQ
dHI8V2ViRWRpdENvbW1hbmRQcm94eT4sIFdlYlBhZ2VQcm94eTo6VW5kb09yUmVkbykKK3sKKyAg
ICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIFBhZ2VDbGllbnRJbXBsOjpjbGVhckFsbEVk
aXRDb21tYW5kcygpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKworYm9vbCBQYWdlQ2xp
ZW50SW1wbDo6Y2FuVW5kb1JlZG8oV2ViUGFnZVByb3h5OjpVbmRvT3JSZWRvKQoreworICAgIG5v
dEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCit2b2lkIFBhZ2VDbGllbnRJ
bXBsOjpleGVjdXRlVW5kb1JlZG8oV2ViUGFnZVByb3h5OjpVbmRvT3JSZWRvKQoreworICAgIG5v
dEltcGxlbWVudGVkKCk7Cit9CisKK0Zsb2F0UmVjdCBQYWdlQ2xpZW50SW1wbDo6Y29udmVydFRv
RGV2aWNlU3BhY2UoY29uc3QgRmxvYXRSZWN0JiB2aWV3UmVjdCkKK3sKKyAgICBub3RJbXBsZW1l
bnRlZCgpOworICAgIHJldHVybiB2aWV3UmVjdDsKK30KKworRmxvYXRSZWN0IFBhZ2VDbGllbnRJ
bXBsOjpjb252ZXJ0VG9Vc2VyU3BhY2UoY29uc3QgRmxvYXRSZWN0JiB2aWV3UmVjdCkKK3sKKyAg
ICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiB2aWV3UmVjdDsKK30KKworSW50UmVjdCBQ
YWdlQ2xpZW50SW1wbDo6d2luZG93VG9TY3JlZW4oY29uc3QgSW50UmVjdCYgcmVjdCkKK3sKKyAg
ICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBJbnRSZWN0KCk7Cit9CisKK3ZvaWQgUGFn
ZUNsaWVudEltcGw6OmRvbmVXaXRoS2V5RXZlbnQoY29uc3QgTmF0aXZlV2ViS2V5Ym9hcmRFdmVu
dCYsIGJvb2wgd2FzRXZlbnRIYW5kbGVkKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisK
K1Bhc3NSZWZQdHI8V2ViUG9wdXBNZW51UHJveHk+IFBhZ2VDbGllbnRJbXBsOjpjcmVhdGVQb3B1
cE1lbnVQcm94eShXZWJQYWdlUHJveHkqKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAg
cmV0dXJuIDA7Cit9CisKK1Bhc3NSZWZQdHI8V2ViQ29udGV4dE1lbnVQcm94eT4gUGFnZUNsaWVu
dEltcGw6OmNyZWF0ZUNvbnRleHRNZW51UHJveHkoV2ViUGFnZVByb3h5KikKK3sKKyAgICBub3RJ
bXBsZW1lbnRlZCgpOworICAgIHJldHVybiAwOworfQorCit2b2lkIFBhZ2VDbGllbnRJbXBsOjpz
ZXRGaW5kSW5kaWNhdG9yKFBhc3NSZWZQdHI8RmluZEluZGljYXRvcj4sIGJvb2wgZmFkZU91dCkK
K3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIFBhZ2VDbGllbnRJbXBsOjpkaWRD
aGFuZ2VTY3JvbGxiYXJzRm9yTWFpbkZyYW1lKCkgY29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRl
ZCgpOworfQorCit2b2lkIFBhZ2VDbGllbnRJbXBsOjpkaWRDb21taXRMb2FkRm9yTWFpbkZyYW1l
KGJvb2wgdXNlQ3VzdG9tUmVwcmVzZW50YXRpb24pCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsK
K30KKwordm9pZCBQYWdlQ2xpZW50SW1wbDo6ZGlkRmluaXNoTG9hZGluZ0RhdGFGb3JDdXN0b21S
ZXByZXNlbnRhdGlvbihjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVuYW1lLCBjb25zdCBDb3Jl
SVBDOjpEYXRhUmVmZXJlbmNlJikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCitkb3Vi
bGUgUGFnZUNsaWVudEltcGw6OmN1c3RvbVJlcHJlc2VudGF0aW9uWm9vbUZhY3RvcigpCit7Cisg
ICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gMDsKK30KKwordm9pZCBQYWdlQ2xpZW50
SW1wbDo6c2V0Q3VzdG9tUmVwcmVzZW50YXRpb25ab29tRmFjdG9yKGRvdWJsZSkKK3sKKyAgICBu
b3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIFBhZ2VDbGllbnRJbXBsOjpmbGFzaEJhY2tpbmdT
dG9yZVVwZGF0ZXMoY29uc3QgVmVjdG9yPEludFJlY3Q+JikKK3sKKyAgICBub3RJbXBsZW1lbnRl
ZCgpOworfQorCit2b2lkIFBhZ2VDbGllbnRJbXBsOjpmaW5kU3RyaW5nSW5DdXN0b21SZXByZXNl
bnRhdGlvbihjb25zdCBTdHJpbmcmLCBGaW5kT3B0aW9ucywgdW5zaWduZWQgbWF4TWF0Y2hDb3Vu
dCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIFBhZ2VDbGllbnRJbXBsOjpj
b3VudFN0cmluZ01hdGNoZXNJbkN1c3RvbVJlcHJlc2VudGF0aW9uKGNvbnN0IFN0cmluZyYsIEZp
bmRPcHRpb25zLCB1bnNpZ25lZCBtYXhNYXRjaENvdW50KQoreworICAgIG5vdEltcGxlbWVudGVk
KCk7Cit9CisKK2Zsb2F0IFBhZ2VDbGllbnRJbXBsOjp1c2VyU3BhY2VTY2FsZUZhY3RvcigpIGNv
bnN0Cit7CisgICAgcmV0dXJuIDAuMDsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9QYWdlQ2xpZW50SW1wbC5o
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvUGFnZUNsaWVudEltcGwuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5lOTkzYmRlNjhiYmEzNmMxY2JlNTZmNDUyYzk0MDEzNDJlZTgwZTQzCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvUGFnZUNsaWVudElt
cGwuaApAQCAtMCwwICsxLDEwNCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBTYW1zdW5n
IEVsZWN0cm9uaWNzCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgUGFnZUNsaWVudEltcGxfaAorI2RlZmlu
ZSBQYWdlQ2xpZW50SW1wbF9oCisKKyNpbmNsdWRlICJQYWdlQ2xpZW50LmgiCisjaW5jbHVkZSA8
RXZhcy5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgUGFnZUNsaWVudEltcGwgOiBw
dWJsaWMgUGFnZUNsaWVudCB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NPd25QdHI8UGFnZUNs
aWVudEltcGw+IGNyZWF0ZShXZWJDb250ZXh0KiBjb250ZXh0LCBXZWJQYWdlR3JvdXAqIHBhZ2VH
cm91cCwgRXZhc19PYmplY3QqIHZpZXdPYmplY3QpCisgICAgeworICAgICAgICByZXR1cm4gYWRv
cHRQdHIobmV3IFBhZ2VDbGllbnRJbXBsKGNvbnRleHQsIHBhZ2VHcm91cCwgdmlld09iamVjdCkp
OworICAgIH0KKyAgICB+UGFnZUNsaWVudEltcGwoKTsKKworICAgIEV2YXNfT2JqZWN0KiB2aWV3
T2JqZWN0KCkgY29uc3QgeyByZXR1cm4gbV92aWV3T2JqZWN0OyB9CisKKyAgICBXZWJQYWdlUHJv
eHkqIHBhZ2UoKSBjb25zdCB7IHJldHVybiBtX3BhZ2UuZ2V0KCk7IH0KKworcHJpdmF0ZToKKyAg
ICBQYWdlQ2xpZW50SW1wbChXZWJDb250ZXh0KiwgV2ViUGFnZUdyb3VwKiwgRXZhc19PYmplY3Qq
KTsKKworICAgIC8vIFBhZ2VDbGllbnQKKyAgICB2aXJ0dWFsIFBhc3NPd25QdHI8RHJhd2luZ0Fy
ZWFQcm94eT4gY3JlYXRlRHJhd2luZ0FyZWFQcm94eSgpOworICAgIHZpcnR1YWwgdm9pZCBzZXRW
aWV3TmVlZHNEaXNwbGF5KGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKTsKKyAgICB2aXJ0dWFsIHZv
aWQgZGlzcGxheVZpZXcoKTsKKyAgICB2aXJ0dWFsIHZvaWQgc2Nyb2xsVmlldyhjb25zdCBXZWJD
b3JlOjpJbnRSZWN0JiBzY3JvbGxSZWN0LCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBzY3JvbGxP
ZmZzZXQpOworICAgIHZpcnR1YWwgV2ViQ29yZTo6SW50U2l6ZSB2aWV3U2l6ZSgpOworICAgIHZp
cnR1YWwgYm9vbCBpc1ZpZXdXaW5kb3dBY3RpdmUoKTsKKyAgICB2aXJ0dWFsIGJvb2wgaXNWaWV3
Rm9jdXNlZCgpOworICAgIHZpcnR1YWwgYm9vbCBpc1ZpZXdWaXNpYmxlKCk7CisgICAgdmlydHVh
bCBib29sIGlzVmlld0luV2luZG93KCk7CisKKyAgICB2aXJ0dWFsIHZvaWQgcHJvY2Vzc0RpZENy
YXNoKCk7CisgICAgdmlydHVhbCB2b2lkIGRpZFJlbGF1bmNoUHJvY2VzcygpOworICAgIHZpcnR1
YWwgdm9pZCBwYWdlQ2xvc2VkKCk7CisKKyAgICB2aXJ0dWFsIHZvaWQgdG9vbFRpcENoYW5nZWQo
Y29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJik7CisKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Q3Vy
c29yKGNvbnN0IFdlYkNvcmU6OkN1cnNvciYpOworICAgIHZpcnR1YWwgdm9pZCBzZXRWaWV3cG9y
dEFyZ3VtZW50cyhjb25zdCBXZWJDb3JlOjpWaWV3cG9ydEFyZ3VtZW50cyYpOworCisgICAgdmly
dHVhbCB2b2lkIHJlZ2lzdGVyRWRpdENvbW1hbmQoUGFzc1JlZlB0cjxXZWJFZGl0Q29tbWFuZFBy
b3h5PiwgV2ViUGFnZVByb3h5OjpVbmRvT3JSZWRvKTsKKyAgICB2aXJ0dWFsIHZvaWQgY2xlYXJB
bGxFZGl0Q29tbWFuZHMoKTsKKyAgICB2aXJ0dWFsIGJvb2wgY2FuVW5kb1JlZG8oV2ViUGFnZVBy
b3h5OjpVbmRvT3JSZWRvKTsKKyAgICB2aXJ0dWFsIHZvaWQgZXhlY3V0ZVVuZG9SZWRvKFdlYlBh
Z2VQcm94eTo6VW5kb09yUmVkbyk7CisgICAgdmlydHVhbCBXZWJDb3JlOjpGbG9hdFJlY3QgY29u
dmVydFRvRGV2aWNlU3BhY2UoY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0Jik7CisgICAgdmlydHVh
bCBXZWJDb3JlOjpGbG9hdFJlY3QgY29udmVydFRvVXNlclNwYWNlKGNvbnN0IFdlYkNvcmU6OkZs
b2F0UmVjdCYpOworICAgIHZpcnR1YWwgV2ViQ29yZTo6SW50UmVjdCB3aW5kb3dUb1NjcmVlbihj
b25zdCBXZWJDb3JlOjpJbnRSZWN0Jik7CisKKyAgICB2aXJ0dWFsIHZvaWQgZG9uZVdpdGhLZXlF
dmVudChjb25zdCBOYXRpdmVXZWJLZXlib2FyZEV2ZW50JiwgYm9vbCB3YXNFdmVudEhhbmRsZWQp
OworCisgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYlBvcHVwTWVudVByb3h5PiBjcmVhdGVQb3B1
cE1lbnVQcm94eShXZWJQYWdlUHJveHkqKTsKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29u
dGV4dE1lbnVQcm94eT4gY3JlYXRlQ29udGV4dE1lbnVQcm94eShXZWJQYWdlUHJveHkqKTsKKwor
ICAgIHZpcnR1YWwgdm9pZCBzZXRGaW5kSW5kaWNhdG9yKFBhc3NSZWZQdHI8RmluZEluZGljYXRv
cj4sIGJvb2wgZmFkZU91dCk7CisKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdlU2Nyb2xsYmFy
c0Zvck1haW5GcmFtZSgpIGNvbnN0OworCisgICAgdmlydHVhbCB2b2lkIGRpZENvbW1pdExvYWRG
b3JNYWluRnJhbWUoYm9vbCB1c2VDdXN0b21SZXByZXNlbnRhdGlvbik7CisgICAgdmlydHVhbCB2
b2lkIGRpZEZpbmlzaExvYWRpbmdEYXRhRm9yQ3VzdG9tUmVwcmVzZW50YXRpb24oY29uc3QgU3Ry
aW5nJiBzdWdnZXN0ZWRGaWxlbmFtZSwgY29uc3QgQ29yZUlQQzo6RGF0YVJlZmVyZW5jZSYpOwor
ICAgIHZpcnR1YWwgZG91YmxlIGN1c3RvbVJlcHJlc2VudGF0aW9uWm9vbUZhY3RvcigpOworICAg
IHZpcnR1YWwgdm9pZCBzZXRDdXN0b21SZXByZXNlbnRhdGlvblpvb21GYWN0b3IoZG91YmxlKTsK
KworICAgIHZpcnR1YWwgdm9pZCBmbGFzaEJhY2tpbmdTdG9yZVVwZGF0ZXMoY29uc3QgVmVjdG9y
PFdlYkNvcmU6OkludFJlY3Q+JiB1cGRhdGVSZWN0cyk7CisgICAgdmlydHVhbCB2b2lkIGZpbmRT
dHJpbmdJbkN1c3RvbVJlcHJlc2VudGF0aW9uKGNvbnN0IFN0cmluZyYsIEZpbmRPcHRpb25zLCB1
bnNpZ25lZCBtYXhNYXRjaENvdW50KTsKKyAgICB2aXJ0dWFsIHZvaWQgY291bnRTdHJpbmdNYXRj
aGVzSW5DdXN0b21SZXByZXNlbnRhdGlvbihjb25zdCBTdHJpbmcmLCBGaW5kT3B0aW9ucywgdW5z
aWduZWQgbWF4TWF0Y2hDb3VudCk7CisKKyAgICB2aXJ0dWFsIGZsb2F0IHVzZXJTcGFjZVNjYWxl
RmFjdG9yKCkgY29uc3Q7CisKK3ByaXZhdGU6CisgICAgUmVmUHRyPFdlYlBhZ2VQcm94eT4gbV9w
YWdlOworICAgIEV2YXNfT2JqZWN0KiBtX3ZpZXdPYmplY3Q7Cit9OworCit9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKKworI2VuZGlmIC8vIFBhZ2VDbGllbnRJbXBsX2gKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCAzNmJhMzk5NTZkMGVhNThiNTVkMDgyMjIxYTg0Mzgz
ZGJlMDMwYjEwLi42YzY5MjY4YzcyNmVmOGJlYzc5YzczNGMwNWE0OGViNzY3ZTMzMzliIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC01Nyw2ICs1Nyw5IEBACiAj
aW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAjaW5j
bHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisjaWYgUExBVEZPUk0oRUZMKQorI2luY2x1ZGUg
PEV2YXMuaD4KKyNlbmRpZgogCiBuYW1lc3BhY2UgQ29yZUlQQyB7CiAgICAgY2xhc3MgQXJndW1l
bnREZWNvZGVyOwpAQCAtMzEzLDYgKzMxNiw5IEBAIHB1YmxpYzoKICNpZiBQTEFURk9STShHVEsp
CiAgICAgR3RrV2lkZ2V0KiB2aWV3V2lkZ2V0KCk7CiAjZW5kaWYKKyNpZiBQTEFURk9STShFRkwp
CisgICAgRXZhc19PYmplY3QqIHZpZXdPYmplY3QoKTsKKyNlbmRpZgogI2lmIEVOQUJMRShUSUxF
RF9CQUNLSU5HX1NUT1JFKQogICAgIHZvaWQgc2V0QWN0dWFsVmlzaWJsZUNvbnRlbnRSZWN0KGNv
bnN0IFdlYkNvcmU6OkludFJlY3QmIHJlY3QpOwogI2VuZGlmCkBAIC02NTcsNyArNjYzLDcgQEAg
cHJpdmF0ZToKICAgICB2b2lkIGV4ZWN1dGVTYXZlZENvbW1hbmRCeVNlbGVjdG9yKGNvbnN0IFN0
cmluZyYgc2VsZWN0b3IsIGJvb2wmIGhhbmRsZWQpOwogI2VuZGlmCiAKLSNpZiBQTEFURk9STShH
VEspCisjaWYgUExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShFRkwpCiAgICAgdm9pZCBnZXRFZGl0
b3JDb21tYW5kc0ZvcktleUV2ZW50KFZlY3RvcjxTdHJpbmc+Jik7CiAjZW5kaWYKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJQYWdlUHJveHlFZmwuY3BwIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJQYWdlUHJveHlFZmwuY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmFlMzE0Yjg1Nzg1MjEzNjA2NDBmMjY4NTM5YWI0N2YzZTVjOGE2YTkKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlBhZ2VQcm94eUVmbC5jcHAK
QEAgLTAsMCArMSw3OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBTYW1zdW5nIEVsZWN0
cm9uaWNzCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJQYWdl
UHJveHkuaCIKKworI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCisjaW5jbHVkZSAiUGFnZUNs
aWVudEltcGwuaCIKKworI2luY2x1ZGUgPHN5cy91dHNuYW1lLmg+CisKK25hbWVzcGFjZSBXZWJL
aXQgeworCitFdmFzX09iamVjdCogV2ViUGFnZVByb3h5Ojp2aWV3T2JqZWN0KCkKK3sKKyAgICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8UGFnZUNsaWVudEltcGwqPihtX3BhZ2VDbGllbnQpLT52aWV3T2Jq
ZWN0KCk7Cit9CisKK1N0cmluZyBXZWJQYWdlUHJveHk6OnN0YW5kYXJkVXNlckFnZW50KGNvbnN0
IFN0cmluZyYgYXBwbGljYXRpb25OYW1lRm9yVXNlckFnZW50KQoreworICAgIFdURjo6U3RyaW5n
IHBsYXRmb3JtOworICAgIFdURjo6U3RyaW5nIHZlcnNpb247CisgICAgV1RGOjpTdHJpbmcgb3NW
ZXJzaW9uOworCisjaWYgUExBVEZPUk0oWDExKQorICAgIHBsYXRmb3JtID0gIlgxMSI7CisjZWxz
ZQorICAgIHBsYXRmb3JtID0gIlVua25vd24iOworI2VuZGlmCisgICAgdmVyc2lvbiA9IG1ha2VT
dHJpbmcoU3RyaW5nOjpudW1iZXIoV0VCS0lUX1VTRVJfQUdFTlRfTUFKT1JfVkVSU0lPTiksICcu
JywKKyAgICAgICAgICAgICAgICAgICAgICAgICBTdHJpbmc6Om51bWJlcihXRUJLSVRfVVNFUl9B
R0VOVF9NSU5PUl9WRVJTSU9OKSwgJysnKTsKKyAgICBzdHJ1Y3QgdXRzbmFtZSBuYW1lOworICAg
IGlmICh1bmFtZSgmbmFtZSkgIT0gLTEpCisgICAgICAgIG9zVmVyc2lvbiA9IFdURjo6U3RyaW5n
KG5hbWUuc3lzbmFtZSkgKyAiICIgKyBXVEY6OlN0cmluZyhuYW1lLm1hY2hpbmUpOworICAgIGVs
c2UKKyAgICAgICAgb3NWZXJzaW9uID0gIlVua25vd24iOworCisgICAgcmV0dXJuIG1ha2VTdHJp
bmcoIk1vemlsbGEvNS4wICgiLCBwbGF0Zm9ybSwgIjsgIiwgb3NWZXJzaW9uLCAiKSBBcHBsZVdl
YktpdC8iLCB2ZXJzaW9uKQorICAgICAgICAgICArIG1ha2VTdHJpbmcoIiAoS0hUTUwsIGxpa2Ug
R2Vja28pIFZlcnNpb24vNS4wIFNhZmFyaS8iLCB2ZXJzaW9uKTsKK30KKwordm9pZCBXZWJQYWdl
UHJveHk6OmdldEVkaXRvckNvbW1hbmRzRm9yS2V5RXZlbnQoVmVjdG9yPFdURjo6U3RyaW5nPiYg
Y29tbWFuZHNMaXN0KQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgV2ViUGFn
ZVByb3h5OjpzYXZlUmVjZW50U2VhcmNoZXMoY29uc3QgU3RyaW5nJiwgY29uc3QgVmVjdG9yPFN0
cmluZz4mKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgV2ViUGFnZVByb3h5
Ojpsb2FkUmVjZW50U2VhcmNoZXMoY29uc3QgU3RyaW5nJiwgVmVjdG9yPFN0cmluZz4mKQorewor
ICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>