<?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>40940</bug_id>
          
          <creation_ts>2010-06-21 13:47:12 -0700</creation_ts>
          <short_desc>Add message passing support to the WebKit2 API</short_desc>
          <delta_ts>2013-02-07 12:19:24 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit API</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Sam Weinig">sam</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abarth</cc>
    
    <cc>eric</cc>
    
    <cc>pahninsd</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>240859</commentid>
    <comment_count>0</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2010-06-21 13:47:12 -0700</bug_when>
    <thetext>We need a generic string based message passing API for WebKit2 to communicate from the injected bundle to the WebContext and vice versa.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>240860</commentid>
    <comment_count>1</comment_count>
      <attachid>59284</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2010-06-21 13:48:14 -0700</bug_when>
    <thetext>Created attachment 59284
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>240863</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-06-21 13:50:16 -0700</bug_when>
    <thetext>Attachment 59284 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;, &apos;--no-squash&apos;]&quot; exit_code: 1
WebKit2/UIProcess/WebContextInjectedBundleClient.h:32:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
WebKit2/UIProcess/WebProcessProxy.cpp:140:  A case label should not be indented, but line up with its switch statement.  [whitespace/indent] [4]
WebKit2/UIProcess/WebContextInjectedBundleClient.cpp:26:  Found header this file implements before WebCore config.h. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
Total errors found: 3 in 24 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>240879</commentid>
    <comment_count>3</comment_count>
      <attachid>59284</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2010-06-21 14:11:09 -0700</bug_when>
    <thetext>Comment on attachment 59284
patch

&gt; Index: WebKit2/ChangeLog
&gt; ===================================================================
&gt; --- WebKit2/ChangeLog	(revision 61572)
&gt; +++ WebKit2/ChangeLog	(working copy)
&gt; @@ -1,3 +1,55 @@
&gt; +2010-06-21  Sam Weinig  &lt;sam@webkit.org&gt;
&gt; +
&gt; +        Reviewed by NOBODY (OOPS!).
&gt; +
&gt; +        Patch for https://bugs.webkit.org/show_bug.cgi?id=40940
&gt; +        Add message passing support to the WebKit2 API.
&gt; +        
&gt; +        Adds message passing for both InjectedBundle -&gt; WebContex 
&gt; +        and WebContex -&gt; InjectedBundle.
&gt; +

Tyop, &quot;contex&quot;.

&gt; +
&gt; +// Messages sent from the web process to the WebProcessProxy.

Should this say &quot;from the WebProcess&quot;?

&gt;  
&gt; +void WebProcess::postMessageToInjectedBundle(const String&amp; message)
&gt; +{
&gt; +    if (!m_injectedBundle)
&gt; +        return;
&gt; +
&gt; +    m_injectedBundle-&gt;didRecieveMessage(message);
&gt; +}

I think this should be named forwardMessageToInjectedBundle.

Looks good otherwise, r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>240899</commentid>
    <comment_count>4</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2010-06-21 14:36:57 -0700</bug_when>
    <thetext>Landed in r61579.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>240916</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-06-21 15:17:35 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/61579 might have broken SnowLeopard Intel Release (Tests)
The following changes are on the blame list:
http://trac.webkit.org/changeset/61579
http://trac.webkit.org/changeset/61580</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>827786</commentid>
    <comment_count>6</comment_count>
    <who name="phanindra srungavarapu">pahninsd</who>
    <bug_when>2013-02-07 12:19:24 -0800</bug_when>
    <thetext>So how do we do this? can anyone point me to any documentation on how to pass messages from webkitview to application?</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>59284</attachid>
            <date>2010-06-21 13:48:14 -0700</date>
            <delta_ts>2010-06-21 14:31:50 -0700</delta_ts>
            <desc>patch</desc>
            <filename>patch.diff</filename>
            <type>text/plain</type>
            <size>36907</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdDIvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2MTU3MikKKysrIFdlYktpdDIvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNTUgQEAKKzIwMTAtMDYtMjEgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQYXRjaCBm
b3IgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQwOTQwCisgICAgICAg
IEFkZCBtZXNzYWdlIHBhc3Npbmcgc3VwcG9ydCB0byB0aGUgV2ViS2l0MiBBUEkuCisgICAgICAg
IAorICAgICAgICBBZGRzIG1lc3NhZ2UgcGFzc2luZyBmb3IgYm90aCBJbmplY3RlZEJ1bmRsZSAt
PiBXZWJDb250ZXggCisgICAgICAgIGFuZCBXZWJDb250ZXggLT4gSW5qZWN0ZWRCdW5kbGUuCisK
KyAgICAgICAgKiBTaGFyZWQvQ29yZUlQQ1N1cHBvcnQvV2ViUHJvY2Vzc01lc3NhZ2VLaW5kcy5o
OgorICAgICAgICAoV2ViUHJvY2Vzc01lc3NhZ2U6Oik6CisgICAgICAgICogU2hhcmVkL0NvcmVJ
UENTdXBwb3J0L1dlYlByb2Nlc3NQcm94eU1lc3NhZ2VLaW5kcy5oOiBBZGRlZC4KKyAgICAgICAg
KFdlYlByb2Nlc3NQcm94eU1lc3NhZ2U6Oik6CisgICAgICAgIChDb3JlSVBDOjopOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuY3BwOgorICAgICAgICAoV0tDb250ZXh0U2V0
SW5qZWN0ZWRCdW5kbGVDbGllbnQpOgorICAgICAgICAoV0tDb250ZXh0UG9zdE1lc3NhZ2VUb0lu
amVjdGVkQnVuZGxlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0Lmg6Cisg
ICAgICAgICogVUlQcm9jZXNzL1dlYkNvbnRleHQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJD
b250ZXh0Ojppbml0aWFsaXplSW5qZWN0ZWRCdW5kbGVDbGllbnQpOgorICAgICAgICAoV2ViS2l0
OjpXZWJDb250ZXh0OjpkaWRSZWNpZXZlTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYkNvbnRleHQ6OnBvc3RNZXNzYWdlVG9JbmplY3RlZEJ1bmRsZSk6Cisg
ICAgICAgICogVUlQcm9jZXNzL1dlYkNvbnRleHQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vi
Q29udGV4dEluamVjdGVkQnVuZGxlQ2xpZW50LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6
OldlYkNvbnRleHRJbmplY3RlZEJ1bmRsZUNsaWVudDo6V2ViQ29udGV4dEluamVjdGVkQnVuZGxl
Q2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dEluamVjdGVkQnVuZGxlQ2xpZW50
Ojppbml0aWFsaXplKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dEluamVjdGVkQnVuZGxl
Q2xpZW50OjpkaWRSZWNpZXZlTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZSk6CisgICAgICAgICog
VUlQcm9jZXNzL1dlYkNvbnRleHRJbmplY3RlZEJ1bmRsZUNsaWVudC5oOiBBZGRlZC4KKyAgICAg
ICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc01hbmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQcm9jZXNzTWFuYWdlcjo6cHJvY2Vzc0RpZENsb3NlKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
V2ViUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5Ojpk
aWRSZWNlaXZlSW5qZWN0ZWRCdW5kbGVNZXNzYWdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJv
Y2Vzc1Byb3h5OjpkaWRSZWNlaXZlTWVzc2FnZSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBy
b2Nlc3NQcm94eS5oOgorICAgICAgICAqIFdlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
ajoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlLmNw
cDoKKyAgICAgICAgKFdLQnVuZGxlUG9zdE1lc3NhZ2UpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGUuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0
ZWRCdW5kbGU6OnBvc3RNZXNzYWdlKToKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGU6
OmRpZENyZWF0ZVBhZ2UpOgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZTo6ZGlkUmVj
aWV2ZU1lc3NhZ2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0
ZWRCdW5kbGUuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpsb2FkSW5qZWN0ZWRCdW5kbGUpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQcm9jZXNzOjpwb3N0TWVzc2FnZVRvSW5qZWN0ZWRCdW5kbGUpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQcm9jZXNzOjpkaWRSZWNlaXZlTWVzc2FnZSk6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJQcm9jZXNzLmg6CisgICAgICAgICogbWFjL1dlYktpdDIuZXhwOgorICAgICAgICAq
IHdpbi9XZWJLaXQyLnZjcHJvajoKKwogMjAxMC0wNi0yMSAgQW5kZXJzIENhcmxzc29uICA8YW5k
ZXJzY2FAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFNhbSBXZWluaWcuCkluZGV4
OiBXZWJLaXQyL1NoYXJlZC9Db3JlSVBDU3VwcG9ydC9XZWJQcm9jZXNzTWVzc2FnZUtpbmRzLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViS2l0Mi9TaGFyZWQvQ29yZUlQQ1N1cHBvcnQvV2ViUHJvY2Vzc01l
c3NhZ2VLaW5kcy5oCShyZXZpc2lvbiA2MTU1MikKKysrIFdlYktpdDIvU2hhcmVkL0NvcmVJUENT
dXBwb3J0L1dlYlByb2Nlc3NNZXNzYWdlS2luZHMuaAkod29ya2luZyBjb3B5KQpAQCAtMzQsNyAr
MzQsOCBAQCBuYW1lc3BhY2UgV2ViUHJvY2Vzc01lc3NhZ2UgewogCiBlbnVtIEtpbmQgewogICAg
IExvYWRJbmplY3RlZEJ1bmRsZSwKLSAgICBDcmVhdGUKKyAgICBDcmVhdGUsCisgICAgUG9zdE1l
c3NhZ2UKIH07CiAKIH0KSW5kZXg6IFdlYktpdDIvU2hhcmVkL0NvcmVJUENTdXBwb3J0L1dlYlBy
b2Nlc3NQcm94eU1lc3NhZ2VLaW5kcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvU2hhcmVkL0Nv
cmVJUENTdXBwb3J0L1dlYlByb2Nlc3NQcm94eU1lc3NhZ2VLaW5kcy5oCShyZXZpc2lvbiAwKQor
KysgV2ViS2l0Mi9TaGFyZWQvQ29yZUlQQ1N1cHBvcnQvV2ViUHJvY2Vzc1Byb3h5TWVzc2FnZUtp
bmRzLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVm
IFdlYlByb2Nlc3NQcm94eU1lc3NhZ2VLaW5kc19oCisjZGVmaW5lIFdlYlByb2Nlc3NQcm94eU1l
c3NhZ2VLaW5kc19oCisKKy8vIE1lc3NhZ2VzIHNlbnQgZnJvbSB0aGUgd2ViIHByb2Nlc3MgdG8g
dGhlIFdlYlByb2Nlc3NQcm94eS4KKworI2luY2x1ZGUgIk1lc3NhZ2VJRC5oIgorCituYW1lc3Bh
Y2UgV2ViUHJvY2Vzc1Byb3h5TWVzc2FnZSB7CisKK2VudW0gS2luZCB7CisgICAgUG9zdE1lc3Nh
Z2UKK307CisKK30KKworbmFtZXNwYWNlIENvcmVJUEMgeworCit0ZW1wbGF0ZTw+IHN0cnVjdCBN
ZXNzYWdlS2luZFRyYWl0czxXZWJQcm9jZXNzUHJveHlNZXNzYWdlOjpLaW5kPiB7IAorICAgIHN0
YXRpYyBjb25zdCBNZXNzYWdlQ2xhc3MgbWVzc2FnZUNsYXNzID0gTWVzc2FnZUNsYXNzV2ViUHJv
Y2Vzc1Byb3h5OworfTsKKworfQorCisjZW5kaWYgLy8gV2ViUHJvY2Vzc1Byb3h5TWVzc2FnZUtp
bmRzX2gKSW5kZXg6IFdlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuY3BwCShyZXZpc2lvbiA2MTU1MikKKysr
IFdlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw5
ICsyNiwxMSBAQAogI2luY2x1ZGUgIldlYkNvbnRleHQuaCIKIAogI2luY2x1ZGUgIlJ1bkxvb3Au
aCIKKyNpbmNsdWRlICJXZWJDb3JlVHlwZUFyZ3VtZW50TWFyc2hhbGxpbmcuaCIKICNpbmNsdWRl
ICJXZWJQYWdlTmFtZXNwYWNlLmgiCiAjaW5jbHVkZSAiV2ViUHJlZmVyZW5jZXMuaCIKICNpbmNs
dWRlICJXZWJQcm9jZXNzTWFuYWdlci5oIgorI2luY2x1ZGUgIldlYlByb2Nlc3NNZXNzYWdlS2lu
ZHMuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzUHJveHkuaCIKIAogI2luY2x1ZGUgIldLQ29udGV4
dFByaXZhdGUuaCIKQEAgLTgxLDYgKzgzLDExIEBAIFdlYkNvbnRleHQ6On5XZWJDb250ZXh0KCkK
ICNlbmRpZgogfQogCit2b2lkIFdlYkNvbnRleHQ6OmluaXRpYWxpemVJbmplY3RlZEJ1bmRsZUNs
aWVudChXS0NvbnRleHRJbmplY3RlZEJ1bmRsZUNsaWVudCogY2xpZW50KQoreworICAgIG1faW5q
ZWN0ZWRCdW5kbGVDbGllbnQuaW5pdGlhbGl6ZShjbGllbnQpOworfQorCiB2b2lkIFdlYkNvbnRl
eHQ6OmVuc3VyZVdlYlByb2Nlc3MoKQogewogICAgIGlmIChtX3Byb2Nlc3MgJiYgbV9wcm9jZXNz
LT5pc1ZhbGlkKCkpCkBAIC0xNDAsNiArMTQ3LDIxIEBAIHZvaWQgV2ViQ29udGV4dDo6cHJlZmVy
ZW5jZXNEaWRDaGFuZ2UoKQogICAgIH0KIH0KIAorLy8gSW5qZWN0ZWRCdW5kbGUgY2xpZW50CisK
K3ZvaWQgV2ViQ29udGV4dDo6ZGlkUmVjaWV2ZU1lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUoY29u
c3QgV2ViQ29yZTo6U3RyaW5nJiBtZXNzYWdlKQoreworICAgIG1faW5qZWN0ZWRCdW5kbGVDbGll
bnQuZGlkUmVjaWV2ZU1lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUodGhpcywgbWVzc2FnZSk7Cit9
CisKK3ZvaWQgV2ViQ29udGV4dDo6cG9zdE1lc3NhZ2VUb0luamVjdGVkQnVuZGxlKFdlYkNvcmU6
OlN0cmluZ0ltcGwqIG1lc3NhZ2UpCit7CisgICAgaWYgKCFtX3Byb2Nlc3MgfHwgIW1fcHJvY2Vz
cy0+aXNWYWxpZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBtX3Byb2Nlc3MtPmNvbm5lY3Rp
b24oKS0+c2VuZChXZWJQcm9jZXNzTWVzc2FnZTo6UG9zdE1lc3NhZ2UsIDAsIENvcmVJUEM6Oklu
KFN0cmluZyhtZXNzYWdlKSkpOworfQorCiB2b2lkIFdlYkNvbnRleHQ6OmdldFN0YXRpc3RpY3Mo
V0tDb250ZXh0U3RhdGlzdGljcyogc3RhdGlzdGljcykKIHsKICAgICBtZW1zZXQoc3RhdGlzdGlj
cywgMCwgc2l6ZW9mKFdLQ29udGV4dFN0YXRpc3RpY3MpKTsKSW5kZXg6IFdlYktpdDIvVUlQcm9j
ZXNzL1dlYkNvbnRleHQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250
ZXh0LmgJKHJldmlzaW9uIDYxNTUyKQorKysgV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw3IEBACiAjZGVmaW5lIFdlYkNvbnRleHRfaAog
CiAjaW5jbHVkZSAiUHJvY2Vzc01vZGVsLmgiCisjaW5jbHVkZSAiV2ViQ29udGV4dEluamVjdGVk
QnVuZGxlQ2xpZW50LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybVN0cmluZy5oPgogI2lu
Y2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KQEAgLTU1LDYg
KzU2LDggQEAgcHVibGljOgogCiAgICAgfldlYkNvbnRleHQoKTsKIAorICAgIHZvaWQgaW5pdGlh
bGl6ZUluamVjdGVkQnVuZGxlQ2xpZW50KFdLQ29udGV4dEluamVjdGVkQnVuZGxlQ2xpZW50Kik7
CisKICAgICBQcm9jZXNzTW9kZWwgcHJvY2Vzc01vZGVsKCkgY29uc3QgeyByZXR1cm4gbV9wcm9j
ZXNzTW9kZWw7IH0KICAgICBXZWJQcm9jZXNzUHJveHkqIHByb2Nlc3MoKSBjb25zdCB7IHJldHVy
biBtX3Byb2Nlc3MuZ2V0KCk7IH0KIApAQCAtNzEsNiArNzQsMTEgQEAgcHVibGljOgogCiAgICAg
Y29uc3QgV2ViQ29yZTo6U3RyaW5nJiBpbmplY3RlZEJ1bmRsZVBhdGgoKSBjb25zdCB7IHJldHVy
biBtX2luamVjdGVkQnVuZGxlUGF0aDsgfQogCisgICAgLy8gSW5qZWN0ZWRCdW5kbGUgY2xpZW50
CisgICAgdm9pZCBkaWRSZWNpZXZlTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZShjb25zdCBXZWJD
b3JlOjpTdHJpbmcmKTsKKworICAgIHZvaWQgcG9zdE1lc3NhZ2VUb0luamVjdGVkQnVuZGxlKFdl
YkNvcmU6OlN0cmluZ0ltcGwqKTsKKwogICAgIHZvaWQgZ2V0U3RhdGlzdGljcyhXS0NvbnRleHRT
dGF0aXN0aWNzKiBzdGF0aXN0aWNzKTsKIAogcHJpdmF0ZToKQEAgLTg3LDYgKzk1LDcgQEAgcHJp
dmF0ZToKICAgICBSZWZQdHI8V2ViUHJlZmVyZW5jZXM+IG1fcHJlZmVyZW5jZXM7CiAKICAgICBX
ZWJDb3JlOjpTdHJpbmcgbV9pbmplY3RlZEJ1bmRsZVBhdGg7CisgICAgV2ViQ29udGV4dEluamVj
dGVkQnVuZGxlQ2xpZW50IG1faW5qZWN0ZWRCdW5kbGVDbGllbnQ7CiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKSW5kZXg6IFdlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHRJbmplY3RlZEJ1
bmRsZUNsaWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4
dEluamVjdGVkQnVuZGxlQ2xpZW50LmNwcAkocmV2aXNpb24gMCkKKysrIFdlYktpdDIvVUlQcm9j
ZXNzL1dlYkNvbnRleHRJbmplY3RlZEJ1bmRsZUNsaWVudC5jcHAJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsNTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiV2ViQ29udGV4dEluamVjdGVkQnVu
ZGxlQ2xpZW50LmgiCisKKyNpbmNsdWRlICJXS0FQSUNhc3QuaCIKKyNpbmNsdWRlIDxXZWJDb3Jl
L1BsYXRmb3JtU3RyaW5nLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCituYW1lc3Bh
Y2UgV2ViS2l0IHsKKworV2ViQ29udGV4dEluamVjdGVkQnVuZGxlQ2xpZW50OjpXZWJDb250ZXh0
SW5qZWN0ZWRCdW5kbGVDbGllbnQoKQoreworICAgIGluaXRpYWxpemUoMCk7Cit9CisKK3ZvaWQg
V2ViQ29udGV4dEluamVjdGVkQnVuZGxlQ2xpZW50Ojppbml0aWFsaXplKFdLQ29udGV4dEluamVj
dGVkQnVuZGxlQ2xpZW50KiBjbGllbnQpCit7CisgICAgaWYgKGNsaWVudCAmJiAhY2xpZW50LT52
ZXJzaW9uKQorICAgICAgICBtX2NsaWVudCA9ICpjbGllbnQ7CisgICAgZWxzZSAKKyAgICAgICAg
bWVtc2V0KCZtX2NsaWVudCwgMCwgc2l6ZW9mKG1fY2xpZW50KSk7Cit9CisKK3ZvaWQgV2ViQ29u
dGV4dEluamVjdGVkQnVuZGxlQ2xpZW50OjpkaWRSZWNpZXZlTWVzc2FnZUZyb21JbmplY3RlZEJ1
bmRsZShXZWJDb250ZXh0KiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCit7CisgICAg
aWYgKCFtX2NsaWVudC5kaWRSZWNpZXZlTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZSkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgbV9jbGllbnQuZGlkUmVjaWV2ZU1lc3NhZ2VGcm9tSW5qZWN0ZWRC
dW5kbGUodG9SZWYoY29udGV4dCksIHRvUmVmKG1lc3NhZ2UuaW1wbCgpKSwgbV9jbGllbnQuY2xp
ZW50SW5mbyk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRleDogV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViQ29udGV4dEluamVjdGVkQnVuZGxlQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dEluamVjdGVkQnVuZGxlQ2xpZW50LmgJKHJldmlzaW9u
IDApCisrKyBXZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0SW5qZWN0ZWRCdW5kbGVDbGllbnQu
aAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2Vi
Q29udGV4dEluamVjdGVkQnVuZGxlQ2xpZW50X2gKKyNkZWZpbmUgV2ViQ29udGV4dEluamVjdGVk
QnVuZGxlQ2xpZW50X2gKKworI2luY2x1ZGUgIldLQ29udGV4dC5oIgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisgICAgY2xhc3MgU3RyaW5nOworfQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xh
c3MgV2ViQ29udGV4dDsKKworY2xhc3MgV2ViQ29udGV4dEluamVjdGVkQnVuZGxlQ2xpZW50IHsK
K3B1YmxpYzoKKyAgICBXZWJDb250ZXh0SW5qZWN0ZWRCdW5kbGVDbGllbnQoKTsKKyAgICB2b2lk
IGluaXRpYWxpemUoV0tDb250ZXh0SW5qZWN0ZWRCdW5kbGVDbGllbnQqKTsKKworICAgIHZvaWQg
ZGlkUmVjaWV2ZU1lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUoV2ViQ29udGV4dCosIGNvbnN0IFdl
YkNvcmU6OlN0cmluZyYpOworCitwcml2YXRlOgorICAgIFdLQ29udGV4dEluamVjdGVkQnVuZGxl
Q2xpZW50IG1fY2xpZW50OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAv
LyBXZWJDb250ZXh0SW5qZWN0ZWRCdW5kbGVDbGllbnRfaApJbmRleDogV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViUHJvY2Vzc01hbmFnZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvVUlQcm9jZXNz
L1dlYlByb2Nlc3NNYW5hZ2VyLmNwcAkocmV2aXNpb24gNjE1NTIpCisrKyBXZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJQcm9jZXNzTWFuYWdlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgwLDYgKzgwLDcg
QEAgdm9pZCBXZWJQcm9jZXNzTWFuYWdlcjo6cHJvY2Vzc0RpZENsb3NlKAogICAgIGlmIChpdCAh
PSBtX3Byb2Nlc3NNYXAuZW5kKCkpIHsKICAgICAgICAgQVNTRVJUKGl0LT5zZWNvbmQgPT0gcHJv
Y2Vzcyk7CiAgICAgICAgIG1fcHJvY2Vzc01hcC5yZW1vdmUoaXQpOworICAgICAgICByZXR1cm47
CiAgICAgfQogCiAgICAgLy8gVGhlIHNoYXJlZCB0aHJlYWQgY29ubmVjdGlvbiBzaG91bGQgbmV2
ZXIgYmUgY2xvc2VkLgpJbmRleDogV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCShy
ZXZpc2lvbiA2MTU1MikKKysrIFdlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJXZWJQcm9jZXNzTGF1
bmNoZXIuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzTWFuYWdlci5oIgogI2luY2x1ZGUgIldlYlBy
b2Nlc3NNZXNzYWdlS2luZHMuaCIKKyNpbmNsdWRlICJXZWJQcm9jZXNzUHJveHlNZXNzYWdlS2lu
ZHMuaCIKICNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtU3RyaW5nLmg+CiAKIHVzaW5nIG5hbWVz
cGFjZSBXZWJDb3JlOwpAQCAtMTI3LDggKzEyOCwyNiBAQCBzaXplX3QgV2ViUHJvY2Vzc1Byb3h5
OjpudW1iZXJPZlBhZ2VzKCkKICAgICByZXR1cm4gbV9wYWdlTWFwLnNpemUoKTsKIH0KIAordm9p
ZCBXZWJQcm9jZXNzUHJveHk6OmRpZFJlY2VpdmVJbmplY3RlZEJ1bmRsZU1lc3NhZ2UoY29uc3Qg
V2ViQ29yZTo6U3RyaW5nJiBtZXNzYWdlKQoreworICAgIG1fY29udGV4dC0+ZGlkUmVjaWV2ZU1l
c3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUobWVzc2FnZSk7Cit9CisKIHZvaWQgV2ViUHJvY2Vzc1By
b3h5OjpkaWRSZWNlaXZlTWVzc2FnZShDb3JlSVBDOjpDb25uZWN0aW9uKiBjb25uZWN0aW9uLCBD
b3JlSVBDOjpNZXNzYWdlSUQgbWVzc2FnZUlELCBDb3JlSVBDOjpBcmd1bWVudERlY29kZXIqIGFy
Z3VtZW50cykKIHsKKyAgICBpZiAobWVzc2FnZUlELmlzPENvcmVJUEM6Ok1lc3NhZ2VDbGFzc1dl
YlByb2Nlc3NQcm94eT4oKSkgeworICAgICAgICBzd2l0Y2ggKG1lc3NhZ2VJRC5nZXQ8V2ViUHJv
Y2Vzc1Byb3h5TWVzc2FnZTo6S2luZD4oKSkgeworICAgICAgICAgICAgY2FzZSBXZWJQcm9jZXNz
UHJveHlNZXNzYWdlOjpQb3N0TWVzc2FnZTogeworICAgICAgICAgICAgICAgIFdlYkNvcmU6OlN0
cmluZyBtZXNzYWdlOworICAgICAgICAgICAgICAgIGlmICghYXJndW1lbnRzLT5kZWNvZGUoQ29y
ZUlQQzo6T3V0KG1lc3NhZ2UpKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAg
ICAgICAgICAgICAgZGlkUmVjZWl2ZUluamVjdGVkQnVuZGxlTWVzc2FnZShtZXNzYWdlKTsKKyAg
ICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisK
ICAgICB1aW50NjRfdCBwYWdlSUQgPSBhcmd1bWVudHMtPmRlc3RpbmF0aW9uSUQoKTsKICAgICBp
ZiAoIXBhZ2VJRCkKICAgICAgICAgcmV0dXJuOwpJbmRleDogV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
UHJvY2Vzc1Byb3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vz
c1Byb3h5LmgJKHJldmlzaW9uIDYxNTUyKQorKysgV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vz
c1Byb3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTc2LDYgKzc2LDggQEAgcHJpdmF0ZToKIAogICAg
IHZvaWQgY29ubmVjdCgpOwogCisgICAgdm9pZCBkaWRSZWNlaXZlSW5qZWN0ZWRCdW5kbGVNZXNz
YWdlKGNvbnN0IFdlYkNvcmU6OlN0cmluZyYpOworCiAgICAgLy8gQ29yZUlQQzo6Q29ubmVjdGlv
bjo6Q2xpZW50CiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShDb3JlSVBDOjpDb25uZWN0aW9u
KiwgQ29yZUlQQzo6TWVzc2FnZUlELCBDb3JlSVBDOjpBcmd1bWVudERlY29kZXIqKTsKICAgICB2
b2lkIGRpZFJlY2VpdmVTeW5jTWVzc2FnZShDb3JlSVBDOjpDb25uZWN0aW9uKiwgQ29yZUlQQzo6
TWVzc2FnZUlELCBDb3JlSVBDOjpBcmd1bWVudERlY29kZXIqLCBDb3JlSVBDOjpBcmd1bWVudEVu
Y29kZXIqKTsKSW5kZXg6IFdlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmNwcAkocmV2aXNp
b24gNjE1NTIpCisrKyBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC02Nyw2ICs2NywxNyBAQCBXS1ByZWZlcmVuY2VzUmVmIFdLQ29udGV4dEdl
dFByZWZlcmVuY2VzCiAgICAgcmV0dXJuIHRvUmVmKHRvV0soY29udGV4dFJlZiktPnByZWZlcmVu
Y2VzKCkpOwogfQogCit2b2lkIFdLQ29udGV4dFNldEluamVjdGVkQnVuZGxlQ2xpZW50KFdLQ29u
dGV4dFJlZiBjb250ZXh0UmVmLCBXS0NvbnRleHRJbmplY3RlZEJ1bmRsZUNsaWVudCogd2tDbGll
bnQpCit7CisgICAgaWYgKHdrQ2xpZW50ICYmICF3a0NsaWVudC0+dmVyc2lvbikKKyAgICAgICAg
dG9XSyhjb250ZXh0UmVmKS0+aW5pdGlhbGl6ZUluamVjdGVkQnVuZGxlQ2xpZW50KHdrQ2xpZW50
KTsKK30KKwordm9pZCBXS0NvbnRleHRQb3N0TWVzc2FnZVRvSW5qZWN0ZWRCdW5kbGUoV0tDb250
ZXh0UmVmIGNvbnRleHRSZWYsIFdLU3RyaW5nUmVmIG1lc3NhZ2VSZWYpCit7CisgICAgdG9XSyhj
b250ZXh0UmVmKS0+cG9zdE1lc3NhZ2VUb0luamVjdGVkQnVuZGxlKHRvV0sobWVzc2FnZVJlZikp
OworfQorCiB2b2lkIFdLQ29udGV4dEdldFN0YXRpc3RpY3MoV0tDb250ZXh0UmVmIGNvbnRleHRS
ZWYsIFdLQ29udGV4dFN0YXRpc3RpY3MqIHN0YXRpc3RpY3MpCiB7CiAgICAgdG9XSyhjb250ZXh0
UmVmKS0+Z2V0U3RhdGlzdGljcyhzdGF0aXN0aWNzKTsKSW5kZXg6IFdlYktpdDIvVUlQcm9jZXNz
L0FQSS9DL1dLQ29udGV4dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvVUlQcm9jZXNzL0FQSS9D
L1dLQ29udGV4dC5oCShyZXZpc2lvbiA2MTU1MikKKysrIFdlYktpdDIvVUlQcm9jZXNzL0FQSS9D
L1dLQ29udGV4dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMiwxNCArMzIsMjcgQEAKIGV4dGVybiAi
QyIgewogI2VuZGlmCiAKKy8vIFBvbGljeSBDbGllbnQuCit0eXBlZGVmIHZvaWQgKCpXS0NvbnRl
eHREaWRSZWNpZXZlTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZUNhbGxiYWNrKShXS0NvbnRleHRS
ZWYgcGFnZSwgV0tTdHJpbmdSZWYgbWVzc2FnZSwgY29uc3Qgdm9pZCAqY2xpZW50SW5mbyk7CisK
K3N0cnVjdCBXS0NvbnRleHRJbmplY3RlZEJ1bmRsZUNsaWVudCB7CisgICAgaW50ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2
ZXJzaW9uOworICAgIGNvbnN0IHZvaWQgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY2xpZW50SW5mbzsKKyAgICBXS0NvbnRleHREaWRSZWNp
ZXZlTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZUNhbGxiYWNrICAgICAgICAgICAgICAgIGRpZFJl
Y2lldmVNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlOworfTsKK3R5cGVkZWYgc3RydWN0IFdLQ29u
dGV4dEluamVjdGVkQnVuZGxlQ2xpZW50IFdLQ29udGV4dEluamVjdGVkQnVuZGxlQ2xpZW50Owor
CiBXS19FWFBPUlQgV0tDb250ZXh0UmVmIFdLQ29udGV4dENyZWF0ZSgpOwogV0tfRVhQT1JUIFdL
Q29udGV4dFJlZiBXS0NvbnRleHRDcmVhdGVXaXRoSW5qZWN0ZWRCdW5kbGVQYXRoKFdLU3RyaW5n
UmVmIHBhdGgpOwotCiBXS19FWFBPUlQgV0tDb250ZXh0UmVmIFdLQ29udGV4dEdldFNoYXJlZFBy
b2Nlc3NDb250ZXh0KCk7CiAKIFdLX0VYUE9SVCB2b2lkIFdLQ29udGV4dFNldFByZWZlcmVuY2Vz
KFdLQ29udGV4dFJlZiBjb250ZXh0LCBXS1ByZWZlcmVuY2VzUmVmIHByZWZlcmVuY2VzKTsKIFdL
X0VYUE9SVCBXS1ByZWZlcmVuY2VzUmVmIFdLQ29udGV4dEdldFByZWZlcmVuY2VzKFdLQ29udGV4
dFJlZiBjb250ZXh0KTsKIAorV0tfRVhQT1JUIHZvaWQgV0tDb250ZXh0U2V0SW5qZWN0ZWRCdW5k
bGVDbGllbnQoV0tDb250ZXh0UmVmIGNvbnRleHQsIFdLQ29udGV4dEluamVjdGVkQnVuZGxlQ2xp
ZW50ICogY2xpZW50KTsKKworV0tfRVhQT1JUIHZvaWQgV0tDb250ZXh0UG9zdE1lc3NhZ2VUb0lu
amVjdGVkQnVuZGxlKFdLQ29udGV4dFJlZiBjb250ZXh0LCBXS1N0cmluZ1JlZiBtZXNzYWdlKTsK
KwogV0tfRVhQT1JUIFdLQ29udGV4dFJlZiBXS0NvbnRleHRSZXRhaW4oV0tDb250ZXh0UmVmIGNv
bnRleHQpOwogV0tfRVhQT1JUIHZvaWQgV0tDb250ZXh0UmVsZWFzZShXS0NvbnRleHRSZWYgY29u
dGV4dCk7CiAKSW5kZXg6IFdlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CShyZXZpc2lvbiA2MTU1MikKKysrIFdlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xNDgsNiArMTQ4LDcgQEAKIAkJQkM5RTk2OUExMTQ1
N0VERTAwODcwRTcxIC8qIERyYXdpbmdBcmVhUHJveHlNZXNzYWdlS2luZHMuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDOUU5Njk5MTE0NTdFREUwMDg3
MEU3MSAvKiBEcmF3aW5nQXJlYVByb3h5TWVzc2FnZUtpbmRzLmggKi87IH07CiAJCUJDOUU5NjlD
MTE0NTdGM0YwMDg3MEU3MSAvKiBEcmF3aW5nQXJlYU1lc3NhZ2VLaW5kcy5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkM5RTk2OUIxMTQ1N0YzRjAwODcw
RTcxIC8qIERyYXdpbmdBcmVhTWVzc2FnZUtpbmRzLmggKi87IH07CiAJCUJDQjYzNDc4MTE2QkYx
MDYwMDYwMzIxNSAvKiBXZWJLaXQyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBCQ0I2MzQ3NzExNkJGMTA2MDA2MDMyMTUgLyogV2ViS2l0Mi5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFB1YmxpYywgKTsgfTsgfTsKKwkJQkNCNzM0NkUxMUNF
RTNGRjAwRUM1MDAyIC8qIFdlYlByb2Nlc3NQcm94eU1lc3NhZ2VLaW5kcy5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNCNzM0NkQxMUNFRTNGRjAwRUM1
MDAyIC8qIFdlYlByb2Nlc3NQcm94eU1lc3NhZ2VLaW5kcy5oICovOyB9OwogCQlCQ0I5RTI0MzEx
MjBEQUNBMDBBMTM3RTAgLyogV2ViQ29udGV4dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQkNCOUUyNDExMTIwREFDQTAwQTEzN0UwIC8qIFdlYkNvbnRl
eHQuaCAqLzsgfTsKIAkJQkNCOUUyNDQxMTIwREFDQTAwQTEzN0UwIC8qIFdlYkNvbnRleHQuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNCOUUyNDIx
MTIwREFDQTAwQTEzN0UwIC8qIFdlYkNvbnRleHQuY3BwICovOyB9OwogCQlCQ0I5RTI0QjExMjBF
MTVDMDBBMTM3RTAgLyogV0tDb250ZXh0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBCQ0I5RTI0OTExMjBFMTVDMDBBMTM3RTAgLyogV0tDb250ZXh0Lmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHVibGljLCApOyB9OyB9OwpAQCAtMTc1LDYg
KzE3Niw4IEBACiAJCUJDRDU5ODAwMTEyQjU3QkUwMEVDOEMyMyAvKiBXZWJQcmVmZXJlbmNlcy5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0Q1OTdG
RTExMkI1N0JFMDBFQzhDMjMgLyogV2ViUHJlZmVyZW5jZXMuY3BwICovOyB9OwogCQlCQ0Q1OThB
QzExMkI3RkRGMDBFQzhDMjMgLyogV2ViUHJlZmVyZW5jZXNTdG9yZS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNENTk4QUExMTJCN0ZERjAwRUM4QzIz
IC8qIFdlYlByZWZlcmVuY2VzU3RvcmUuaCAqLzsgfTsKIAkJQkNENTk4QUQxMTJCN0ZERjAwRUM4
QzIzIC8qIFdlYlByZWZlcmVuY2VzU3RvcmUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQkNENTk4QUIxMTJCN0ZERjAwRUM4QzIzIC8qIFdlYlByZWZl
cmVuY2VzU3RvcmUuY3BwICovOyB9OworCQlCQ0RFMDU5QjExQ0RBOEFFMDBFNDFBRjEgLyogV2Vi
Q29udGV4dEluamVjdGVkQnVuZGxlQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0RFMDU5OTExQ0RBOEFFMDBFNDFBRjEgLyogV2ViQ29udGV4
dEluamVjdGVkQnVuZGxlQ2xpZW50LmggKi87IH07CisJCUJDREUwNTlDMTFDREE4QUUwMEU0MUFG
MSAvKiBXZWJDb250ZXh0SW5qZWN0ZWRCdW5kbGVDbGllbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNERTA1OUExMUNEQThBRTAwRTQxQUYxIC8q
IFdlYkNvbnRleHRJbmplY3RlZEJ1bmRsZUNsaWVudC5jcHAgKi87IH07CiAJCUJDRUU5NjZDMTEy
RkFGNTcwMDZCQ0MyNCAvKiBBdHRhY2htZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDRUU5NjZBMTEyRkFGNTcwMDZCQ0MyNCAvKiBBdHRhY2ht
ZW50LmNwcCAqLzsgfTsKIAkJQkNFRTk2NkQxMTJGQUY1NzAwNkJDQzI0IC8qIEF0dGFjaG1lbnQu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDRUU5NjZC
MTEyRkFGNTcwMDZCQ0MyNCAvKiBBdHRhY2htZW50LmggKi87IH07CiAJCUJDRUU5OEM2MTEzMzE0
RDcwMDZCQ0MyNCAvKiBXZWJQYWdlTmFtZXNwYWNlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDRUU5OEM0MTEzMzE0RDcwMDZCQ0MyNCAvKiBXZWJQ
YWdlTmFtZXNwYWNlLmNwcCAqLzsgfTsKQEAgLTM2Myw2ICszNjYsNyBAQAogCQlCQzlFOTY5OTEx
NDU3RURFMDA4NzBFNzEgLyogRHJhd2luZ0FyZWFQcm94eU1lc3NhZ2VLaW5kcy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEcmF3aW5nQXJlYVByb3h5TWVzc2FnZUtpbmRzLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDOUU5NjlCMTE0NTdGM0YwMDg3MEU3MSAv
KiBEcmF3aW5nQXJlYU1lc3NhZ2VLaW5kcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBEcmF3aW5nQXJlYU1lc3NhZ2VLaW5kcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlCQ0I2MzQ3NzExNkJGMTA2MDA2MDMyMTUgLyogV2ViS2l0Mi5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBXZWJLaXQyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUJDQjczNDZEMTFDRUUzRkYwMEVDNTAwMiAvKiBXZWJQcm9jZXNzUHJveHlNZXNzYWdlS2lu
ZHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViUHJvY2Vzc1Byb3h5TWVz
c2FnZUtpbmRzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDQjg2RjRCMTE2QUFB
Q0QwMENFMjBCNyAvKiBXZWJLaXQyLnhjY29uZmlnICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC54Y2NvbmZpZzsg
cGF0aCA9IFdlYktpdDIueGNjb25maWc7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJD
QjhENEUwMTFBRjc4QzEwMDhGOTEwMyAvKiBXZWJLaXQyLmV4cCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuZXhwb3J0czsgbmFtZSA9IFdlYktpdDIuZXhwOyBwYXRoID0gbWFjL1dlYktpdDIuZXhwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQ0I5RTI0MTExMjBEQUNBMDBBMTM3RTAgLyog
V2ViQ29udGV4dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJDb250ZXh0
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0zOTIsNiArMzk2LDggQEAKIAkJQkNE
NTk3RkUxMTJCNTdCRTAwRUM4QzIzIC8qIFdlYlByZWZlcmVuY2VzLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYlByZWZlcmVuY2VzLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQkNENTk4QUExMTJCN0ZERjAwRUM4QzIzIC8qIFdlYlByZWZlcmVu
Y2VzU3RvcmUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViUHJlZmVyZW5j
ZXNTdG9yZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQ0Q1OThBQjExMkI3RkRG
MDBFQzhDMjMgLyogV2ViUHJlZmVyZW5jZXNTdG9yZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBXZWJQcmVmZXJlbmNlc1N0b3JlLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJQkNERTA1OTkxMUNEQThBRTAwRTQxQUYxIC8qIFdlYkNvbnRleHRJbmpl
Y3RlZEJ1bmRsZUNsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJD
b250ZXh0SW5qZWN0ZWRCdW5kbGVDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJQkNERTA1OUExMUNEQThBRTAwRTQxQUYxIC8qIFdlYkNvbnRleHRJbmplY3RlZEJ1bmRsZUNs
aWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJDb250ZXh0
SW5qZWN0ZWRCdW5kbGVDbGllbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlC
Q0VFOTY2QTExMkZBRjU3MDA2QkNDMjQgLyogQXR0YWNobWVudC5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBdHRhY2htZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJQkNFRTk2NkIxMTJGQUY1NzAwNkJDQzI0IC8qIEF0dGFjaG1lbnQuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXR0YWNobWVudC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlCQ0VFOThDNDExMzMxNEQ3MDA2QkNDMjQgLyogV2ViUGFnZU5hbWVz
cGFjZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJQYWdlTmFt
ZXNwYWNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTY0Miw2ICs2NDgsOCBA
QAogCQkJCTFBMzAwNjZDMTExMEY0RjcwMDMxOTM3QyAvKiBSZXNwb25zaXZlbmVzc1RpbWVyLmgg
Ki8sCiAJCQkJQkNCOUUyNDIxMTIwREFDQTAwQTEzN0UwIC8qIFdlYkNvbnRleHQuY3BwICovLAog
CQkJCUJDQjlFMjQxMTEyMERBQ0EwMEExMzdFMCAvKiBXZWJDb250ZXh0LmggKi8sCisJCQkJQkNE
RTA1OUExMUNEQThBRTAwRTQxQUYxIC8qIFdlYkNvbnRleHRJbmplY3RlZEJ1bmRsZUNsaWVudC5j
cHAgKi8sCisJCQkJQkNERTA1OTkxMUNEQThBRTAwRTQxQUYxIC8qIFdlYkNvbnRleHRJbmplY3Rl
ZEJ1bmRsZUNsaWVudC5oICovLAogCQkJCUJDQjlGNjlGMTEyM0E4NEIwMEExMzdFMCAvKiBXZWJG
cmFtZVBvbGljeUxpc3RlbmVyUHJveHkuY3BwICovLAogCQkJCUJDQjlGNjlFMTEyM0E4NEIwMEEx
MzdFMCAvKiBXZWJGcmFtZVBvbGljeUxpc3RlbmVyUHJveHkuaCAqLywKIAkJCQlCQzExMUIwQTEx
MkY1RTRGMDAzMzdCQUIgLyogV2ViRnJhbWVQcm94eS5jcHAgKi8sCkBAIC03ODUsNiArNzkzLDcg
QEAKIAkJCQlCQzExMUI2MDExMkY2MzgzMDAzMzdCQUIgLyogV2ViUGFnZU1lc3NhZ2VLaW5kcy5o
ICovLAogCQkJCUJDMTExQjYxMTEyRjYzODMwMDMzN0JBQiAvKiBXZWJQYWdlUHJveHlNZXNzYWdl
S2luZHMuaCAqLywKIAkJCQlCQzExMUI2MjExMkY2MzgzMDAzMzdCQUIgLyogV2ViUHJvY2Vzc01l
c3NhZ2VLaW5kcy5oICovLAorCQkJCUJDQjczNDZEMTFDRUUzRkYwMEVDNTAwMiAvKiBXZWJQcm9j
ZXNzUHJveHlNZXNzYWdlS2luZHMuaCAqLywKIAkJCSk7CiAJCQlwYXRoID0gQ29yZUlQQ1N1cHBv
cnQ7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtMTAwMSw2ICsxMDEwLDggQEAKIAkJ
CQlCQzIwNTI4MTExQzk0Mjg0MDA4RjMzNzUgLyogV0tCdW5kbGVQYWdlLmggaW4gSGVhZGVycyAq
LywKIAkJCQlCQzIwNTI4ODExQzk0M0E1MDA4RjMzNzUgLyogSW5qZWN0ZWRCdW5kbGVQYWdlQ2xp
ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTNFNzM2MTExQ0MyNjU5MDA3QkQ1MzkgLyogV2Vi
UGxhdGZvcm1TdHJhdGVnaWVzLmggaW4gSGVhZGVycyAqLywKKwkJCQlCQ0RFMDU5QjExQ0RBOEFF
MDBFNDFBRjEgLyogV2ViQ29udGV4dEluamVjdGVkQnVuZGxlQ2xpZW50LmggaW4gSGVhZGVycyAq
LywKKwkJCQlCQ0I3MzQ2RTExQ0VFM0ZGMDBFQzUwMDIgLyogV2ViUHJvY2Vzc1Byb3h5TWVzc2Fn
ZUtpbmRzLmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBv
c3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKQEAgLTExNjAsNiArMTE3MSw3IEBACiAJCQkJQkMyMDUy
ODIxMUM5NDI4NDAwOEYzMzc1IC8qIFdLQnVuZGxlUGFnZS5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlCQzIwNTI4OTExQzk0M0E1MDA4RjMzNzUgLyogSW5qZWN0ZWRCdW5kbGVQYWdlQ2xpZW50LmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTFBM0U3MzYyMTFDQzI2NTkwMDdCRDUzOSAvKiBXZWJQbGF0
Zm9ybVN0cmF0ZWdpZXMuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQkNERTA1OUMxMUNEQThBRTAw
RTQxQUYxIC8qIFdlYkNvbnRleHRJbmplY3RlZEJ1bmRsZUNsaWVudC5jcHAgaW4gU291cmNlcyAq
LywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJ
fTsKSW5kZXg6IFdlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAJKHJldmlzaW9uIDYxNTUyKQorKysg
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02OSw3
ICs2OSw3IEBAIHZvaWQgV2ViUHJvY2Vzczo6aW5pdGlhbGl6ZShDb3JlSVBDOjpDb24KICAgICBt
X3J1bkxvb3AgPSBydW5Mb29wOwogfQogCi12b2lkIFdlYlByb2Nlc3M6OmxvYWRJbmplY3RlZEJ1
bmRsZShjb25zdCBXZWJDb3JlOjpTdHJpbmcmIHBhdGgpCit2b2lkIFdlYlByb2Nlc3M6OmxvYWRJ
bmplY3RlZEJ1bmRsZShjb25zdCBTdHJpbmcmIHBhdGgpCiB7CiAgICAgQVNTRVJUKG1fcGFnZU1h
cC5pc0VtcHR5KCkpOwogICAgIEFTU0VSVCghcGF0aC5pc0VtcHR5KCkpOwpAQCAtODEsNiArODEs
MTQgQEAgdm9pZCBXZWJQcm9jZXNzOjpsb2FkSW5qZWN0ZWRCdW5kbGUoY29ucwogICAgIH0KIH0K
IAordm9pZCBXZWJQcm9jZXNzOjpwb3N0TWVzc2FnZVRvSW5qZWN0ZWRCdW5kbGUoY29uc3QgU3Ry
aW5nJiBtZXNzYWdlKQoreworICAgIGlmICghbV9pbmplY3RlZEJ1bmRsZSkKKyAgICAgICAgcmV0
dXJuOworCisgICAgbV9pbmplY3RlZEJ1bmRsZS0+ZGlkUmVjaWV2ZU1lc3NhZ2UobWVzc2FnZSk7
Cit9CisKIFdlYlBhZ2UqIFdlYlByb2Nlc3M6OndlYlBhZ2UodWludDY0X3QgcGFnZUlEKSBjb25z
dAogewogICAgIHJldHVybiBtX3BhZ2VNYXAuZ2V0KHBhZ2VJRCkuZ2V0KCk7CkBAIC0xMzgsNyAr
MTQ2LDcgQEAgdm9pZCBXZWJQcm9jZXNzOjpkaWRSZWNlaXZlTWVzc2FnZShDb3JlSQogICAgIGlm
IChtZXNzYWdlSUQuaXM8Q29yZUlQQzo6TWVzc2FnZUNsYXNzV2ViUHJvY2Vzcz4oKSkgewogICAg
ICAgICBzd2l0Y2ggKG1lc3NhZ2VJRC5nZXQ8V2ViUHJvY2Vzc01lc3NhZ2U6OktpbmQ+KCkpIHsK
ICAgICAgICAgICAgIGNhc2UgV2ViUHJvY2Vzc01lc3NhZ2U6OkxvYWRJbmplY3RlZEJ1bmRsZTog
ewotICAgICAgICAgICAgICAgIFdlYkNvcmU6OlN0cmluZyBwYXRoOworICAgICAgICAgICAgICAg
IFN0cmluZyBwYXRoOwogICAgICAgICAgICAgICAgIGlmICghYXJndW1lbnRzLT5kZWNvZGUoQ29y
ZUlQQzo6T3V0KHBhdGgpKSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogCkBAIC0xNTYs
NiArMTY0LDE0IEBAIHZvaWQgV2ViUHJvY2Vzczo6ZGlkUmVjZWl2ZU1lc3NhZ2UoQ29yZUkKICAg
ICAgICAgICAgICAgICBjcmVhdGVXZWJQYWdlKHBhZ2VJRCwgdmlld1NpemUsIHN0b3JlLCBzdGF0
aWNfY2FzdDxEcmF3aW5nQXJlYTo6VHlwZT4oZHJhd2luZ0FyZWFUeXBlKSk7CiAgICAgICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQorICAgICAgICAgICAgY2FzZSBXZWJQcm9jZXNz
TWVzc2FnZTo6UG9zdE1lc3NhZ2U6IHsKKyAgICAgICAgICAgICAgICBTdHJpbmcgbWVzc2FnZTsK
KyAgICAgICAgICAgICAgICBpZiAoIWFyZ3VtZW50cy0+ZGVjb2RlKENvcmVJUEM6Ok91dChtZXNz
YWdlKSkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAgICAgICAgIHBv
c3RNZXNzYWdlVG9JbmplY3RlZEJ1bmRsZShtZXNzYWdlKTsKKyAgICAgICAgICAgICAgICByZXR1
cm47CisgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CiAKSW5kZXg6IFdlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQcm9jZXNzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlByb2Nlc3MuaAkocmV2aXNpb24gNjE1NTIpCisrKyBXZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJv
Y2Vzcy5oCSh3b3JraW5nIGNvcHkpCkBAIC02Myw2ICs2Myw3IEBAIHByaXZhdGU6CiAgICAgdm9p
ZCBzaHV0ZG93bigpOwogCiAgICAgdm9pZCBsb2FkSW5qZWN0ZWRCdW5kbGUoY29uc3QgV2ViQ29y
ZTo6U3RyaW5nJik7CisgICAgdm9pZCBwb3N0TWVzc2FnZVRvSW5qZWN0ZWRCdW5kbGUoY29uc3Qg
V2ViQ29yZTo6U3RyaW5nJik7CiAKICAgICAvLyBDb3JlSVBDOjpDb25uZWN0aW9uOjpDbGllbnQK
ICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKENvcmVJUEM6OkNvbm5lY3Rpb24qLCBDb3JlSVBD
OjpNZXNzYWdlSUQsIENvcmVJUEM6OkFyZ3VtZW50RGVjb2RlciopOwpJbmRleDogV2ViS2l0Mi9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwCShy
ZXZpc2lvbiA2MTU1MikKKysrIFdlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9Jbmpl
Y3RlZEJ1bmRsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI1LDcgKzI1LDEzIEBACiAKICNpbmNs
dWRlICJJbmplY3RlZEJ1bmRsZS5oIgogCisjaW5jbHVkZSAiV0tBUElDYXN0LmgiCiAjaW5jbHVk
ZSAiV0tCdW5kbGVBUElDYXN0LmgiCisjaW5jbHVkZSAiV2ViQ29yZVR5cGVBcmd1bWVudE1hcnNo
YWxsaW5nLmgiCisjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgorI2luY2x1ZGUgIldlYlByb2Nlc3NQ
cm94eU1lc3NhZ2VLaW5kcy5oIgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogbmFtZXNw
YWNlIFdlYktpdCB7CiAKQEAgLTQ4LDEwICs1NCwyMSBAQCB2b2lkIEluamVjdGVkQnVuZGxlOjpp
bml0aWFsaXplQ2xpZW50KFdLCiAgICAgICAgIG1lbXNldCgmbV9jbGllbnQsIDAsIHNpemVvZiht
X2NsaWVudCkpOwogfQogCit2b2lkIEluamVjdGVkQnVuZGxlOjpwb3N0TWVzc2FnZShTdHJpbmdJ
bXBsKiBtZXNzYWdlKQoreworICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLmNvbm5lY3Rpb24oKS0+
c2VuZChXZWJQcm9jZXNzUHJveHlNZXNzYWdlOjpQb3N0TWVzc2FnZSwgMCwgQ29yZUlQQzo6SW4o
U3RyaW5nKG1lc3NhZ2UpKSk7Cit9CisKIHZvaWQgSW5qZWN0ZWRCdW5kbGU6OmRpZENyZWF0ZVBh
Z2UoV2ViUGFnZSogcGFnZSkKIHsKICAgICBpZiAobV9jbGllbnQuZGlkQ3JlYXRlUGFnZSkKLSAg
ICAgICAgbV9jbGllbnQuZGlkQ3JlYXRlUGFnZSh0b1JlZihwYWdlKSwgbV9jbGllbnQuY2xpZW50
SW5mbyk7CisgICAgICAgIG1fY2xpZW50LmRpZENyZWF0ZVBhZ2UodG9SZWYodGhpcyksIHRvUmVm
KHBhZ2UpLCBtX2NsaWVudC5jbGllbnRJbmZvKTsKK30KKwordm9pZCBJbmplY3RlZEJ1bmRsZTo6
ZGlkUmVjaWV2ZU1lc3NhZ2UoY29uc3QgV2ViQ29yZTo6U3RyaW5nJiBtZXNzYWdlKQoreworICAg
IGlmIChtX2NsaWVudC5kaWRSZWNpZXZlTWVzc2FnZSkKKyAgICAgICAgbV9jbGllbnQuZGlkUmVj
aWV2ZU1lc3NhZ2UodG9SZWYodGhpcyksIHRvUmVmKG1lc3NhZ2UuaW1wbCgpKSwgbV9jbGllbnQu
Y2xpZW50SW5mbyk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRleDogV2ViS2l0Mi9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmgJKHJldmlz
aW9uIDYxNTUyKQorKysgV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVk
QnVuZGxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTUzLDkgKzUzLDExIEBAIHB1YmxpYzoKIAogICAg
IC8vIEFQSQogICAgIHZvaWQgaW5pdGlhbGl6ZUNsaWVudChXS0J1bmRsZUNsaWVudCopOworICAg
IHZvaWQgcG9zdE1lc3NhZ2UoV2ViQ29yZTo6U3RyaW5nSW1wbCopOwogCiAgICAgLy8gQ2FsbGJh
Y2sgaG9va3MKICAgICB2b2lkIGRpZENyZWF0ZVBhZ2UoV2ViUGFnZSopOworICAgIHZvaWQgZGlk
UmVjaWV2ZU1lc3NhZ2UoY29uc3QgV2ViQ29yZTo6U3RyaW5nJik7CiAKIHByaXZhdGU6CiAgICAg
SW5qZWN0ZWRCdW5kbGUoY29uc3QgV2ViQ29yZTo6U3RyaW5nJik7CkluZGV4OiBXZWJLaXQyL1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGUuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZS5jcHAJKHJl
dmlzaW9uIDYxNTUyKQorKysgV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9j
L1dLQnVuZGxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjUsOCArMjUsOSBAQAogCiAjaW5jbHVk
ZSAiV0tCdW5kbGUuaCIKIAotI2luY2x1ZGUgIldLQnVuZGxlQVBJQ2FzdC5oIgogI2luY2x1ZGUg
IkluamVjdGVkQnVuZGxlLmgiCisjaW5jbHVkZSAiV0tBUElDYXN0LmgiCisjaW5jbHVkZSAiV0tC
dW5kbGVBUElDYXN0LmgiCiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiAKQEAgLTM1LDMgKzM2
LDggQEAgdm9pZCBXS0J1bmRsZVNldENsaWVudChXS0J1bmRsZVJlZiBidW5kbAogICAgIGlmICh3
a0NsaWVudCAmJiAhd2tDbGllbnQtPnZlcnNpb24pCiAgICAgICAgIHRvV0soYnVuZGxlUmVmKS0+
aW5pdGlhbGl6ZUNsaWVudCh3a0NsaWVudCk7CiB9CisKK3ZvaWQgV0tCdW5kbGVQb3N0TWVzc2Fn
ZShXS0J1bmRsZVJlZiBidW5kbGVSZWYsIFdLU3RyaW5nUmVmIG1lc3NhZ2VSZWYpCit7CisgICAg
dG9XSyhidW5kbGVSZWYpLT5wb3N0TWVzc2FnZSh0b1dLKG1lc3NhZ2VSZWYpKTsKK30KSW5kZXg6
IFdlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRs
ZS5oCShyZXZpc2lvbiA2MTU1MikKKysrIFdlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9BUEkvYy9XS0J1bmRsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw2ICsyNiw3IEBACiAjaWZu
ZGVmIFdLQnVuZGxlX2gKICNkZWZpbmUgV0tCdW5kbGVfaAogCisjaW5jbHVkZSA8V2ViS2l0Mi9X
S0Jhc2UuaD4KICNpbmNsdWRlIDxXZWJLaXQyL1dLQnVuZGxlQmFzZS5oPgogCiAjaWZkZWYgX19j
cGx1c3BsdXMKQEAgLTMzLDE3ICszNCwyMSBAQCBleHRlcm4gIkMiIHsKICNlbmRpZgogCiAvLyBD
bGllbnQKLXR5cGVkZWYgdm9pZCAoKldLQnVuZGxlRGlkQ3JlYXRlUGFnZUNhbGxiYWNrKShXS0J1
bmRsZVBhZ2VSZWYgcGFnZSwgY29uc3Qgdm9pZCAqY2xpZW50SW5mbyk7Cit0eXBlZGVmIHZvaWQg
KCpXS0J1bmRsZURpZENyZWF0ZVBhZ2VDYWxsYmFjaykoV0tCdW5kbGVSZWYgYnVuZGxlLCBXS0J1
bmRsZVBhZ2VSZWYgcGFnZSwgY29uc3Qgdm9pZCAqY2xpZW50SW5mbyk7Cit0eXBlZGVmIHZvaWQg
KCpXS0J1bmRsZURpZFJlY2lldmVNZXNzYWdlQ2FsbGJhY2spKFdLQnVuZGxlUmVmIGJ1bmRsZSwg
V0tTdHJpbmdSZWYgbWVzc2FnZSwgY29uc3Qgdm9pZCAqY2xpZW50SW5mbyk7CiAKIHN0cnVjdCBX
S0J1bmRsZUNsaWVudCB7CiAgICAgaW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZXJzaW9uOwogICAgIGNvbnN0IHZvaWQg
KiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y2xpZW50SW5mbzsKICAgICBXS0J1bmRsZURpZENyZWF0ZVBhZ2VDYWxsYmFjayAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpZENyZWF0ZVBhZ2U7CisgICAgV0tCdW5kbGVE
aWRSZWNpZXZlTWVzc2FnZUNhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBkaWRSZWNpZXZlTWVzc2FnZTsKIH07CiB0eXBlZGVmIHN0cnVjdCBXS0J1bmRsZUNsaWVudCBX
S0J1bmRsZUNsaWVudDsKIAogV0tfRVhQT1JUIHZvaWQgV0tCdW5kbGVTZXRDbGllbnQoV0tCdW5k
bGVSZWYgYnVuZGxlLCBXS0J1bmRsZUNsaWVudCAqIGNsaWVudCk7CiAKK1dLX0VYUE9SVCB2b2lk
IFdLQnVuZGxlUG9zdE1lc3NhZ2UoV0tCdW5kbGVSZWYgYnVuZGxlLCBXS1N0cmluZ1JlZiBtZXNz
YWdlKTsKKwogI2lmZGVmIF9fY3BsdXNwbHVzCiB9CiAjZW5kaWYKSW5kZXg6IFdlYktpdDIvbWFj
L1dlYktpdDIuZXhwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvbWFjL1dlYktpdDIuZXhwCShyZXZp
c2lvbiA2MTU1MikKKysrIFdlYktpdDIvbWFjL1dlYktpdDIuZXhwCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDE0ICsxLDE3IEBACiAub2JqY19jbGFzc19uYW1lX1dLVmlldwogX1dLQnVuZGxlUGFnZUdl
dE1haW5GcmFtZVVSTAogX1dLQnVuZGxlUGFnZVNldENsaWVudAorX1dLQnVuZGxlUG9zdE1lc3Nh
Z2UKIF9XS0J1bmRsZVNldENsaWVudAogX1dLQ29udGV4dENyZWF0ZQogX1dLQ29udGV4dENyZWF0
ZVdpdGhJbmplY3RlZEJ1bmRsZVBhdGgKIF9XS0NvbnRleHRHZXRTaGFyZWRQcm9jZXNzQ29udGV4
dAogX1dLQ29udGV4dEdldFNoYXJlZFRocmVhZENvbnRleHQKIF9XS0NvbnRleHRHZXRTdGF0aXN0
aWNzCitfV0tDb250ZXh0UG9zdE1lc3NhZ2VUb0luamVjdGVkQnVuZGxlCiBfV0tDb250ZXh0UmVs
ZWFzZQogX1dLQ29udGV4dFJldGFpbgorX1dLQ29udGV4dFNldEluamVjdGVkQnVuZGxlQ2xpZW50
CiBfV0tGcmFtZUdldEZyYW1lTG9hZFN0YXRlCiBfV0tGcmFtZUdldFBhZ2UKIF9XS0ZyYW1lR2V0
UHJvdmlzaW9uYWxVUkwKSW5kZXg6IFdlYktpdDIvd2luL1dlYktpdDIudmNwcm9qCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYktpdDIvd2luL1dlYktpdDIudmNwcm9qCShyZXZpc2lvbiA2MTU1MikKKysrIFdl
YktpdDIvd2luL1dlYktpdDIudmNwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC01MjYsNiArNTI2LDEw
IEBACiAJCQkJCVJlbGF0aXZlUGF0aD0iLi5cU2hhcmVkXENvcmVJUENTdXBwb3J0XFdlYlByb2Nl
c3NNZXNzYWdlS2luZHMuaCINCiAJCQkJCT4NCiAJCQkJPC9GaWxlPg0KKwkJCQk8RmlsZQ0KKwkJ
CQkJUmVsYXRpdmVQYXRoPSIuLlxTaGFyZWRcQ29yZUlQQ1N1cHBvcnRcV2ViUHJvY2Vzc1Byb3h5
TWVzc2FnZUtpbmRzLmgiDQorCQkJCQk+DQorCQkJCTwvRmlsZT4NCiAJCQk8L0ZpbHRlcj4NCiAJ
CQk8RmlsdGVyDQogCQkJCU5hbWU9IndpbiINCkBAIC04MTIsNiArODE2LDE0IEBACiAJCQkJPg0K
IAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFVJUHJvY2Vzc1xX
ZWJDb250ZXh0SW5qZWN0ZWRCdW5kbGVDbGllbnQuY3BwIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0K
KwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cVUlQcm9jZXNzXFdlYkNvbnRleHRJbmpl
Y3RlZEJ1bmRsZUNsaWVudC5oIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQogCQkJ
CVJlbGF0aXZlUGF0aD0iLi5cVUlQcm9jZXNzXFdlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eS5j
cHAiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQpJbmRleDogV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24gNjE1NzIpCisrKyBX
ZWJLaXRUb29scy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyMSBAQAorMjAx
MC0wNi0yMSAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFBhdGNoIGZvciBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDA5NDAKKyAgICAgICAgQWRkIG1lc3NhZ2UgcGFzc2lu
ZyBzdXBwb3J0IHRvIHRoZSBXZWJLaXQyIEFQSS4KKworICAgICAgICAtIEFkZCBzb21lIHRlc3Qg
bWVzc2FnZXMuCisKKyAgICAgICAgKiBNaW5pQnJvd3Nlci9tYWMvQXBwRGVsZWdhdGUubToKKyAg
ICAgICAgKF9kaWRSZWNpZXZlTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZSk6CisgICAgICAgICgt
W0Jyb3dzZXJBcHBEZWxlZ2F0ZSBpbml0XSk6CisgICAgICAgICogTWluaUJyb3dzZXIvbWFjL1dl
YkJ1bmRsZS9XZWJCdW5kbGVNYWluLm06CisgICAgICAgIChfZGlkQ2xlYXJXaW5kb3cpOgorICAg
ICAgICAoX2RpZENyZWF0ZVBhZ2UpOgorICAgICAgICAoX2RpZFJlY2lldmVNZXNzYWdlKToKKyAg
ICAgICAgKFdLQnVuZGxlSW5pdGlhbGl6ZSk6CisKIDIwMTAtMDYtMjEgIERyZXcgV2lsc29uICA8
YXR3aWxzb25AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQuCkluZGV4OiBXZWJL
aXRUb29scy9NaW5pQnJvd3Nlci9tYWMvQXBwRGVsZWdhdGUubQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJL
aXRUb29scy9NaW5pQnJvd3Nlci9tYWMvQXBwRGVsZWdhdGUubQkocmV2aXNpb24gNjE1NTIpCisr
KyBXZWJLaXRUb29scy9NaW5pQnJvd3Nlci9tYWMvQXBwRGVsZWdhdGUubQkod29ya2luZyBjb3B5
KQpAQCAtMzUsNiArMzUsMTcgQEAgc3RhdGljIE5TU3RyaW5nICpkZWZhdWx0VVJMID0gQCJodHRw
Oi8vdwogCiBAaW1wbGVtZW50YXRpb24gQnJvd3NlckFwcERlbGVnYXRlCiAKK3ZvaWQgX2RpZFJl
Y2lldmVNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKFdLQ29udGV4dFJlZiBjb250ZXh0LCBXS1N0
cmluZ1JlZiBtZXNzYWdlLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKQoreworICAgIENGU3RyaW5n
UmVmIGNmTWVzc2FnZSA9IFdLU3RyaW5nQ29weUNGU3RyaW5nKDAsIG1lc3NhZ2UpOworICAgIE5T
TG9nKEAiQ29udGV4dEluamVjdGVkQnVuZGxlQ2xpZW50IC0gZGlkUmVjaWV2ZU1lc3NhZ2UgLSBt
ZXNzYWdlOiAlQCIsIGNmTWVzc2FnZSk7CisgICAgQ0ZSZWxlYXNlKGNmTWVzc2FnZSk7CisKKyAg
ICBXS1N0cmluZ1JlZiBuZXdNZXNzYWdlID0gV0tTdHJpbmdDcmVhdGVXaXRoQ0ZTdHJpbmcoQ0ZT
VFIoIlJvZ2VyIHRoYXQhIikpOworICAgIFdLQ29udGV4dFBvc3RNZXNzYWdlVG9JbmplY3RlZEJ1
bmRsZShjb250ZXh0LCBuZXdNZXNzYWdlKTsKKyAgICBXS1N0cmluZ1JlbGVhc2UobmV3TWVzc2Fn
ZSk7Cit9CisKIC0gKGlkKWluaXQKIHsKICAgICBzZWxmID0gW3N1cGVyIGluaXRdOwpAQCAtNTIs
NiArNjMsMTQgQEAgLSAoaWQpaW5pdAogICAgICAgICBXS1N0cmluZ1JlZiBidW5kbGVQYXRoID0g
V0tTdHJpbmdDcmVhdGVXaXRoQ0ZTdHJpbmcoYnVuZGxlUGF0aENGKTsKIAogICAgICAgICBXS0Nv
bnRleHRSZWYgcHJvY2Vzc0NvbnRleHQgPSBXS0NvbnRleHRDcmVhdGVXaXRoSW5qZWN0ZWRCdW5k
bGVQYXRoKGJ1bmRsZVBhdGgpOworICAgICAgICAKKyAgICAgICAgV0tDb250ZXh0SW5qZWN0ZWRC
dW5kbGVDbGllbnQgYnVuZGxlQ2xpZW50ID0geworICAgICAgICAgICAgMCwgICAgICAvKiB2ZXJz
aW9uICovCisgICAgICAgICAgICAwLCAgICAgIC8qIGNsaWVudEluZm8gKi8KKyAgICAgICAgICAg
IF9kaWRSZWNpZXZlTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZQorICAgICAgICB9OworICAgICAg
ICBXS0NvbnRleHRTZXRJbmplY3RlZEJ1bmRsZUNsaWVudChwcm9jZXNzQ29udGV4dCwgJmJ1bmRs
ZUNsaWVudCk7CisgICAgICAgIAogICAgICAgICBwcm9jZXNzUGFnZU5hbWVzcGFjZSA9IFdLUGFn
ZU5hbWVzcGFjZUNyZWF0ZShwcm9jZXNzQ29udGV4dCk7CiAgICAgICAgIFdLQ29udGV4dFJlbGVh
c2UocHJvY2Vzc0NvbnRleHQpOwogCkluZGV4OiBXZWJLaXRUb29scy9NaW5pQnJvd3Nlci9tYWMv
V2ViQnVuZGxlL1dlYkJ1bmRsZU1haW4ubQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9NaW5p
QnJvd3Nlci9tYWMvV2ViQnVuZGxlL1dlYkJ1bmRsZU1haW4ubQkocmV2aXNpb24gNjE1NTIpCisr
KyBXZWJLaXRUb29scy9NaW5pQnJvd3Nlci9tYWMvV2ViQnVuZGxlL1dlYkJ1bmRsZU1haW4ubQko
d29ya2luZyBjb3B5KQpAQCAtMjMsMTIgKzIzLDE0IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCiAgKi8KIAotI2luY2x1ZGUgPHN0ZGlvLmg+CiAjaW5jbHVkZSA8Q29jb2Ev
Q29jb2EuaD4KICNpbmNsdWRlIDxXZWJLaXQyL1dLQnVuZGxlLmg+Ci0jaW5jbHVkZSA8V2ViS2l0
Mi9XS0J1bmRsZVBhZ2UuaD4KICNpbmNsdWRlIDxXZWJLaXQyL1dLQnVuZGxlSW5pdGlhbGl6ZS5o
PgorI2luY2x1ZGUgPFdlYktpdDIvV0tCdW5kbGVQYWdlLmg+CisjaW5jbHVkZSA8V2ViS2l0Mi9X
S1N0cmluZy5oPgorI2luY2x1ZGUgPFdlYktpdDIvV0tTdHJpbmdDRi5oPgogI2luY2x1ZGUgPFdl
YktpdDIvV0tVUkxDRi5oPgorI2luY2x1ZGUgPHN0ZGlvLmg+CiAKIHN0YXRpYyBXS0J1bmRsZVJl
ZiBnbG9iYWxCdW5kbGU7CiAKQEAgLTM3LDkgKzM5LDEzIEBAIHZvaWQgX2RpZENsZWFyV2luZG93
KFdLQnVuZGxlUGFnZVJlZiBwYWcKICAgICBDRlVSTFJlZiBjZlVSTCA9IFdLVVJMQ29weUNGVVJM
KDAsIFdLQnVuZGxlUGFnZUdldE1haW5GcmFtZVVSTChwYWdlKSk7CiAgICAgTlNMb2coQCJXS0J1
bmRsZVBhZ2VDbGllbnQgLSBfZGlkQ2xlYXJXaW5kb3dGb3JGcmFtZSAlQCIsIFsoTlNVUkwgKilj
ZlVSTCBhYnNvbHV0ZVN0cmluZ10pOwogICAgIENGUmVsZWFzZShjZlVSTCk7CisKKyAgICBXS1N0
cmluZ1JlZiBtZXNzYWdlID0gV0tTdHJpbmdDcmVhdGVXaXRoQ0ZTdHJpbmcoQ0ZTVFIoIldpbmRv
dyB3YXMgY2xlYXJlZCIpKTsKKyAgICBXS0J1bmRsZVBvc3RNZXNzYWdlKGdsb2JhbEJ1bmRsZSwg
bWVzc2FnZSk7CisgICAgV0tTdHJpbmdSZWxlYXNlKG1lc3NhZ2UpOwogfQogCi12b2lkIF9kaWRD
cmVhdGVQYWdlKFdLQnVuZGxlUGFnZVJlZiBwYWdlLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQor
dm9pZCBfZGlkQ3JlYXRlUGFnZShXS0J1bmRsZVBhZ2VSZWYgYnVuZGxlLCBXS0J1bmRsZVBhZ2VS
ZWYgcGFnZSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKIHsKICAgICBOU0xvZyhAIldLQnVuZGxl
Q2xpZW50IC0gZGlkQ3JlYXRlUGFnZVxuIik7CiAKQEAgLTUxLDYgKzU3LDEzIEBAIHZvaWQgX2Rp
ZENyZWF0ZVBhZ2UoV0tCdW5kbGVQYWdlUmVmIHBhZ2UKICAgICBXS0J1bmRsZVBhZ2VTZXRDbGll
bnQocGFnZSwgJmNsaWVudCk7CiB9CiAKK3ZvaWQgX2RpZFJlY2lldmVNZXNzYWdlKFdLQnVuZGxl
UmVmIGJ1bmRsZSwgV0tTdHJpbmdSZWYgbWVzc2FnZSwgY29uc3Qgdm9pZCAqY2xpZW50SW5mbykK
K3sKKyAgICBDRlN0cmluZ1JlZiBjZk1lc3NhZ2UgPSBXS1N0cmluZ0NvcHlDRlN0cmluZygwLCBt
ZXNzYWdlKTsKKyAgICBOU0xvZyhAIldLQnVuZGxlQ2xpZW50IC0gZGlkUmVjaWV2ZU1lc3NhZ2Ug
JUBcbiIsIGNmTWVzc2FnZSk7CisgICAgQ0ZSZWxlYXNlKGNmTWVzc2FnZSk7Cit9CisKIHZvaWQg
V0tCdW5kbGVJbml0aWFsaXplKFdLQnVuZGxlUmVmIGJ1bmRsZSkKIHsKICAgICBnbG9iYWxCdW5k
bGUgPSBidW5kbGU7CkBAIC01OCw3ICs3MSw4IEBAIHZvaWQgV0tCdW5kbGVJbml0aWFsaXplKFdL
QnVuZGxlUmVmIGJ1bmQKICAgICBXS0J1bmRsZUNsaWVudCBjbGllbnQgPSB7CiAgICAgICAgIDAs
CiAgICAgICAgIDAsCi0gICAgICAgIF9kaWRDcmVhdGVQYWdlCisgICAgICAgIF9kaWRDcmVhdGVQ
YWdlLAorICAgICAgICBfZGlkUmVjaWV2ZU1lc3NhZ2UKICAgICB9OwogICAgIFdLQnVuZGxlU2V0
Q2xpZW50KGJ1bmRsZSwgJmNsaWVudCk7CiB9Cg==
</data>
<flag name="review"
          id="46049"
          type_id="1"
          status="+"
          setter="andersca"
    />
          </attachment>
      

    </bug>

</bugzilla>