<?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>18625</bug_id>
          
          <creation_ts>2008-04-19 14:36:07 -0700</creation_ts>
          <short_desc>SQUIRRELFISH: squirrelfish needs to support JS debugging</short_desc>
          <delta_ts>2008-05-18 01:50:05 -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>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Mac</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="Maciej Stachowiak">mjs</reporter>
          <assigned_to name="Geoffrey Garen">ggaren</assigned_to>
          <cc>oliver</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>78267</commentid>
    <comment_count>0</comment_count>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2008-04-19 14:36:07 -0700</bug_when>
    <thetext>SquirrelFish currently does not support the debug interfaces that are present in trunk. We will need to fix JS debugging to be able to merge to trunk</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>79783</commentid>
    <comment_count>1</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2008-05-06 18:44:58 -0700</bug_when>
    <thetext>I&apos;ll take this one.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>80682</commentid>
    <comment_count>2</comment_count>
      <attachid>21213</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2008-05-17 01:50:36 -0700</bug_when>
    <thetext>Created attachment 21213
patch

you love it</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>80687</commentid>
    <comment_count>3</comment_count>
      <attachid>21213</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2008-05-17 03:49:00 -0700</bug_when>
    <thetext>Comment on attachment 21213
patch

You need to do this on windows as well :D</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>80825</commentid>
    <comment_count>4</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2008-05-17 11:47:38 -0700</bug_when>
    <thetext>Nah, the windows code is gone from TOT. We can just rip it out.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>80828</commentid>
    <comment_count>5</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2008-05-17 11:58:49 -0700</bug_when>
    <thetext>Committed revision 33553.

</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>80835</commentid>
    <comment_count>6</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2008-05-17 20:01:53 -0700</bug_when>
    <thetext>Patch is incomplete, in bugzilla so can&apos;t fix build :-(

Reverted in r33560</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>80836</commentid>
    <comment_count>7</comment_count>
      <attachid>21213</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2008-05-17 20:04:02 -0700</bug_when>
    <thetext>Comment on attachment 21213
patch

This patch is &quot;good&quot; but the missing files  need to be reviewed before they can be landed.

I&apos;m leaving r+ because this portion of the patch is fine.

Oh, except the changelog should include the bug# and url :D</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>80840</commentid>
    <comment_count>8</comment_count>
      <attachid>21219</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2008-05-18 00:41:26 -0700</bug_when>
    <thetext>Created attachment 21219
missing files from original patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>80841</commentid>
    <comment_count>9</comment_count>
      <attachid>21219</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2008-05-18 00:44:23 -0700</bug_when>
    <thetext>Comment on attachment 21219
missing files from original patch

Woo!!!

Why aren&apos;t you on irc? :p</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>80842</commentid>
    <comment_count>10</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2008-05-18 01:50:05 -0700</bug_when>
    <thetext>Committing to http://svn.webkit.org/repository/webkit/branches/squirrelfish ...
	C	WebKit/mac/WebView/WebScriptDebugger.h =&gt; JavaScriptCore/kjs/DebuggerCallFrame.h
	M	JavaScriptCore/ChangeLog
	M	JavaScriptCore/JavaScriptCore.exp
	M	JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj
	M	JavaScriptCore/VM/CodeGenerator.cpp
	M	JavaScriptCore/VM/CodeGenerator.h
	M	JavaScriptCore/VM/Machine.cpp
	M	JavaScriptCore/VM/Machine.h
	A	JavaScriptCore/kjs/DebuggerCallFrame.cpp
	M	JavaScriptCore/kjs/ExecState.h
	M	JavaScriptCore/kjs/debugger.cpp
	M	JavaScriptCore/kjs/debugger.h
	M	JavaScriptCore/kjs/function.cpp
	M	JavaScriptCore/kjs/nodes.cpp
	M	WebCore/ChangeLog
	A	WebCore/ForwardingHeaders/kjs/DebuggerCallFrame.h
	M	WebCore/page/InspectorController.cpp
	M	WebCore/page/InspectorController.h
	M	WebCore/page/JavaScriptDebugListener.h
	M	WebCore/page/JavaScriptDebugServer.cpp
	M	WebCore/page/JavaScriptDebugServer.h
	M	WebKit/mac/ChangeLog
	A	WebKit/mac/ForwardingHeaders/kjs/DebuggerCallFrame.h
	M	WebKit/mac/WebView/WebScriptDebugDelegate.mm
	M	WebKit/mac/WebView/WebScriptDebugger.h
	M	WebKit/mac/WebView/WebScriptDebugger.mm
Committed r33563

</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>21213</attachid>
            <date>2008-05-17 01:50:36 -0700</date>
            <delta_ts>2008-05-17 03:49:00 -0700</delta_ts>
            <desc>patch</desc>
            <filename>patch-debugger.txt</filename>
            <type>text/plain</type>
            <size>59765</size>
            <attacher name="Geoffrey Garen">ggaren</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDMzNTUwKQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDMgQEAKKzIwMDgtMDUtMTcgIEdlb2ZmcmV5
IEdhcmVuICA8Z2dhcmVuQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKyAgICAgICAgCisgICAgICAgIEJlaG9sZDogZGVidWdnaW5nLgorICAgICAgICAK
KyAgICAgICAgU3VuU3BpZGVyIHJlcG9ydHMgbm8gY2hhbmdlLgorCisgICAgICAgICogSmF2YVNj
cmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajogQWRkZWQgRGVidWdnZXJDYWxsRnJh
bWUuaC8uY3BwLAorICAgICAgICBhbmQgY3JlYXRlZCBhIGRlYnVnZ2VyIGZvbGRlci4KKworICAg
ICAgICAqIFZNL0NvZGVHZW5lcmF0b3IuY3BwOgorICAgICAgICAoS0pTOjpDb2RlR2VuZXJhdG9y
OjpnZW5lcmF0ZSk6IElmIHRoZSBkZWJ1Z2dlciBpcyBhdHRhY2hlZCwgYWx3YXlzCisgICAgICAg
IGdlbmVyYXRlIGZ1bGwgc2NvcGUgY2hhaW5zIGZvciBpdHMgc2FrZS4KKworICAgICAgICAqIFZN
L01hY2hpbmUuY3BwOgorICAgICAgICAoS0pTOjpNYWNoaW5lOjp1bndpbmRDYWxsRnJhbWUpOiBO
b3RpZnkgdGhlIGRlYnVnZ2VyIHdoZW4gdW53aW5kaW5nCisgICAgICAgIGR1ZSB0byBhbiBleGNl
cHRpb24sIHNvIGl0IGRvZXNuJ3Qga2VlcCBzdGFsZSBjYWxsIGZyYW1lcyBhcm91bmQuCisKKyAg
ICAgICAgKEtKUzo6TWFjaGluZTo6ZXhlY3V0ZSk6IFNldCBDYWxsZWUgdG8gMCBpbiBldmFsIGZy
YW1lcywgc28gdGhlCisgICAgICAgIGRlYnVnZ2VyIGNhbiBkaXN0aW5ndWlzaCB0aGVtIGZyb20g
ZnVuY3Rpb24gY2FsbCBmcmFtZXMuCisKKyAgICAgICAgKEtKUzo6TWFjaGluZTo6ZGVidWcpOiBT
aW1wbGlmaWVkIHRoaXMgZnVuY3Rpb24sIHNpbmNlIHRoZSBkZWJ1Z2dlcgorICAgICAgICBkb2Vz
bid0IGFjdHVhbGx5IG5lZWQgYWxsIHRoZSBpbmZvcm1hdGlvbiB3ZSB1c2VkIHRvIHByb3ZpZGUu
CisKKyAgICAgICAgKEtKUzo6TWFjaGluZTo6cHJpdmF0ZUV4ZWN1dGUpOiBUcmVhdCBkZWJ1Z2dp
bmcgaG9va3MgbGlrZSBvdGhlciBmdW5jdGlvbgorICAgICAgICBjYWxscywgc28gdGhlIGNvZGUg
d2UgaG9vayBpbnRvICh0aGUgZGVidWdnZXIgVUkpIGNhbiBiZSBvcHRpbWl6ZWQuCisKKyAgICAg
ICAgKiBranMvZGVidWdnZXIuY3BwOiBOaXhlZCB0aGVzZSBkZWZhdWx0IGNhbGxiYWNrIGltcGxl
bWVudGF0aW9ucyBhbmQKKyAgICAgICAgbWFkZSB0aGUgY2FsbGJhY2tzIHB1cmUgdmlydHVhbCBp
bnN0ZWFkLCBzbyB0aGUgY29tcGlsZXIgY291bGQgdGVsbCBtZQorICAgICAgICBpZiBJIG1hZGUg
YSBtaXN0YWtlIGluIG9uZSBvZiB0aGUgc3ViY2xhc3Nlcy4KKworICAgICAgICAqIGtqcy9kZWJ1
Z2dlci5oOiBSZW1vdmVkIGEgYnVuY2ggb2YgaXJyZWxldmVudCBkYXRhIGZyb20gdGhlIGRlYnVn
Z2VyCisgICAgICAgIGNhbGxiYWNrcy4gQ2hhbmdlZCBmcm9tIHBhc3NpbmcgYW4gRXhlY1N0YXRl
KiB0byBwYXNzaW5nIGEKKyAgICAgICAgRGVidWdnZXJDYWxsRnJhbWUqLCBzaW5jZSBhbiBFeGVj
U3RhdGUqIGRvZXNuJ3QgY29udGFpbiBzdWZmaWNpZW50CisgICAgICAgIGluZm9ybWF0aW9uIGFu
eW1vcmUuCisKKyAgICAgICAgKiBranMvZnVuY3Rpb24uY3BwOgorICAgICAgICAoS0pTOjpnbG9i
YWxGdW5jRXZhbCk6IEVhc2llc3QgYnVnIGZpeCBldmFyIQorCiAyMDA4LTA1LTE3ICBPbGl2ZXIg
SHVudCAgPG9saXZlckBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgTWFjaWVqLgpJ
bmRleDogSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZXhwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEph
dmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmV4cAkocmV2aXNpb24gMzM1NDkpCisrKyBKYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5leHAJKHdvcmtpbmcgY29weSkKQEAgLTEyNSw2ICsx
MjUsOCBAQCBfX1pOM0tKUzE2SlNWYXJpYWJsZU9iamVjdDE0ZGVsZXRlUHJvcGVyCiBfX1pOM0tK
UzE2SlNWYXJpYWJsZU9iamVjdDE2Z2V0UHJvcGVydHlOYW1lc0VQTlNfOUV4ZWNTdGF0ZUVSTlNf
MTdQcm9wZXJ0eU5hbWVBcnJheUUKIF9fWk4zS0pTMTZQYXJzZXJSZWZDb3VudGVkM3JlZkV2CiBf
X1pOM0tKUzE2UGFyc2VyUmVmQ291bnRlZDVkZXJlZkV2CitfX1pOM0tKUzE3RGVidWdnZXJDYWxs
RnJhbWUxMmZ1bmN0aW9uTmFtZUV2CitfX1pOM0tKUzE3RGVidWdnZXJDYWxsRnJhbWUxNGV2YWx1
YXRlU2NyaXB0RVJLTlNfN1VTdHJpbmdFCiBfX1pOM0tKUzE3UHJvcGVydHlOYW1lQXJyYXkzYWRk
RVBOU183VVN0cmluZzNSZXBFCiBfX1pOM0tKUzE3UHJvdG90eXBlRnVuY3Rpb25DMUVQTlNfOUV4
ZWNTdGF0ZUVQTlNfMTdGdW5jdGlvblByb3RvdHlwZUVpUktOU18xMElkZW50aWZpZXJFUEZQTlNf
N0pTVmFsdWVFUzJfUE5TXzhKU09iamVjdEVSS05TXzRMaXN0RUUKIF9fWk4zS0pTMTdQcm90b3R5
cGVGdW5jdGlvbkMxRVBOU185RXhlY1N0YXRlRWlSS05TXzEwSWRlbnRpZmllckVQRlBOU183SlNW
YWx1ZUVTMl9QTlNfOEpTT2JqZWN0RVJLTlNfNExpc3RFRQpAQCAtMTY0LDcgKzE2Niw2IEBAIF9f
Wk4zS0pTN1VTdHJpbmdDMUVSS1MwX1MyXwogX19aTjNLSlM3VVN0cmluZ2FTRVBLYwogX19aTjNL
SlM4RGVidWdnZXI2YXR0YWNoRVBOU18xNEpTR2xvYmFsT2JqZWN0RQogX19aTjNLSlM4RGVidWdn
ZXI2ZGV0YWNoRVBOU18xNEpTR2xvYmFsT2JqZWN0RQotX19aTjNLSlM4RGVidWdnZXI5ZXhjZXB0
aW9uRVBOU185RXhlY1N0YXRlRWlpUE5TXzdKU1ZhbHVlRQogX19aTjNLSlM4RGVidWdnZXJDMkV2
CiBfX1pOM0tKUzhEZWJ1Z2dlckQyRXYKIF9fWk4zS0pTOEpTT2JqZWN0MTFoYXNJbnN0YW5jZUVQ
TlNfOUV4ZWNTdGF0ZUVQTlNfN0pTVmFsdWVFCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9u
IDMzNTQ5KQorKysgSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtNjEsNiArNjEsNyBAQAogCQkxNDVDNTA4MDBE
OURGNjNCMDA4OEY2QjkgLyogQ2FsbERhdGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDE0NUM1MDdGMEQ5REY2M0IwMDg4RjZCOSAvKiBDYWxsRGF0YS5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTE0NkFB
QjJCMEI2NkE4NDkwMEU1NUYxNiAvKiBKU1N0cmluZ1JlZkNGLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNDZBQUIyQTBCNjZBODQ5MDBFNTVGMTYgLyog
SlNTdHJpbmdSZWZDRi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFB1YmxpYywgKTsg
fTsgfTsKIAkJMTQ2QUFCMzgwQjY2QTk0NDAwRTU1RjE2IC8qIEpTU3RyaW5nUmVmQ0YuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTQ2QUFCMzcwQjY2
QTk0NDAwRTU1RjE2IC8qIEpTU3RyaW5nUmVmQ0YuY3BwICovOyB9OworCQkxNDgwREI5RDBEREMy
MjdGMDAzQ0ZERjIgLyogRGVidWdnZXJDYWxsRnJhbWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0ODBEQjlCMEREQzIyN0YwMDNDRkRGMiAvKiBEZWJ1
Z2dlckNhbGxGcmFtZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTE0ODJCNkVCMEE0MzAwQjMwMDUxN0NGQyAvKiBKU1ZhbHVlUmVmLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNDgyQjZFQTBBNDMwMEIz
MDA1MTdDRkMgLyogSlNWYWx1ZVJlZi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFB1
YmxpYywgKTsgfTsgfTsKIAkJMTQ4MkI3NEQwQTQzMDMyODAwNTE3Q0ZDIC8qIEpTU3RyaW5nUmVm
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNDgyQjc0
QjBBNDMwMzI4MDA1MTdDRkMgLyogSlNTdHJpbmdSZWYuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQdWJsaWMsICk7IH07IH07CiAJCTE0ODJCNzRFMEE0MzAzMjgwMDUxN0NGQyAvKiBK
U1N0cmluZ1JlZi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAxNDgyQjc0QzBBNDMwMzI4MDA1MTdDRkMgLyogSlNTdHJpbmdSZWYuY3BwICovOyB9OwpA
QCAtNzEsNiArNzIsNyBAQAogCQkxNDhBMTYyNzA5NUQxNkJCMDA2NjZEMEQgLyogTGlzdFJlZlB0
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTQ4QTE2
MjYwOTVEMTZCQjAwNjY2RDBEIC8qIExpc3RSZWZQdHIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkxNDhBMUVDRTBEMTBDMjNCMDA2OUE0N0MgLyog
UmVmUHRySGFzaE1hcC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMTQ4QTFFQ0QwRDEwQzIzQjAwNjlBNDdDIC8qIFJlZlB0ckhhc2hNYXAuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkxNDkwOUEyRDBEQ0FG
NkNEMDBCMjlFQjMgLyogRXhlY1N0YXRlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDE0QkQ1M0Y0MEEzRTEyRDgwMEJBRjU5QyAvKiBFeGVjU3RhdGUu
Y3BwICovOyB9OworCQkxNDk1NTlFRTBERENEREY3MDA2NDgwODcgLyogRGVidWdnZXJDYWxsRnJh
bWUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTQ5
NTU5RUQwRERDRERGNzAwNjQ4MDg3IC8qIERlYnVnZ2VyQ2FsbEZyYW1lLmNwcCAqLzsgfTsKIAkJ
MTQ5QjE1RUEwRDgxRjk4NjAwOUNCOEM3IC8qIE9wY29kZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTQ5QjE1RTQwRDgxRjk4NjAwOUNCOEM3IC8qIE9w
Y29kZS5oICovOyB9OwogCQkxNDlCMTVFQjBEODFGOTg2MDA5Q0I4QzcgLyogT3Bjb2RlLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0OUIxNUU1MEQ4
MUY5ODYwMDlDQjhDNyAvKiBPcGNvZGUuY3BwICovOyB9OwogCQkxNDlCMTVFQzBEODFGOTg2MDA5
Q0I4QzcgLyogTWFjaGluZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMTQ5QjE1RTYwRDgxRjk4NjAwOUNCOEM3IC8qIE1hY2hpbmUuaCAqLzsgfTsKQEAg
LTQwMCw2ICs0MDIsNyBAQAogCQkxNDZBQUIyQTBCNjZBODQ5MDBFNTVGMTYgLyogSlNTdHJpbmdS
ZWZDRi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNTdHJpbmdSZWZDRi5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxNDZBQUIzNzBCNjZBOTQ0MDBFNTVGMTYg
LyogSlNTdHJpbmdSZWZDRi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gSlNTdHJpbmdSZWZDRi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTE0NzYw
ODYzMDk5QzYzMzgwMDQzNzEyOCAvKiBKU0ltbWVkaWF0ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBKU0ltbWVkaWF0ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTE0ODBEQjlCMEREQzIyN0YwMDNDRkRGMiAvKiBEZWJ1Z2dlckNhbGxGcmFtZS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBEZWJ1Z2dlckNhbGxGcmFtZS5oOyBw
YXRoID0ga2pzL0RlYnVnZ2VyQ2FsbEZyYW1lLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTE0ODJCNkVBMEE0MzAwQjMwMDUxN0NGQyAvKiBKU1ZhbHVlUmVmLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTVmFsdWVSZWYuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMTQ4MkI3NEIwQTQzMDMyODAwNTE3Q0ZDIC8qIEpTU3RyaW5nUmVmLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTU3RyaW5nUmVmLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTE0ODJCNzRDMEE0MzAzMjgwMDUxN0NGQyAvKiBKU1N0cmluZ1JlZi5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1N0cmluZ1JlZi5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00MDksNiArNDEyLDcgQEAKIAkJMTQ4M0I1
ODkwOTlCQzE5NTAwMTZFNEYwIC8qIEpTSW1tZWRpYXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBKU0ltbWVkaWF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkxNDhBMTYyNjA5NUQxNkJCMDA2NjZEMEQgLyogTGlzdFJlZlB0ci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gTGlzdFJlZlB0ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkxNDhBMUVDRDBEMTBDMjNCMDA2OUE0N0MgLyogUmVmUHRySGFzaE1hcC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZWZQdHJIYXNoTWFwLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTE0OTU1OUVEMEREQ0RERjcwMDY0ODA4NyAvKiBEZWJ1Z2dlckNh
bGxGcmFtZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBEZWJ1Z2dl
ckNhbGxGcmFtZS5jcHA7IHBhdGggPSBranMvRGVidWdnZXJDYWxsRnJhbWUuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkxNDlCMTVFNDBEODFGOTg2MDA5Q0I4QzcgLyogT3Bjb2Rl
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IE9wY29kZS5oOyBwYXRoID0gVk0v
T3Bjb2RlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTE0OUIxNUU1MEQ4MUY5ODYw
MDlDQjhDNyAvKiBPcGNvZGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1l
ID0gT3Bjb2RlLmNwcDsgcGF0aCA9IFZNL09wY29kZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTE0OUIxNUU2MEQ4MUY5ODYwMDlDQjhDNyAvKiBNYWNoaW5lLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IE1hY2hpbmUuaDsgcGF0aCA9IFZNL01hY2hpbmUuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTYwMCw4ICs2MDQsOCBAQAogCQlGNjkyQTg1
NDAyNTU1OTdEMDFGRjYwRjcgLyogY3JlYXRlX2hhc2hfdGFibGUgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSB0ZXh0LnNjcmlwdC5wZXJsOyBwYXRoID0gY3JlYXRlX2hhc2hfdGFibGU7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgfTsKIAkJRjY5MkE4NTUwMjU1NTk3
RDAxRkY2MEY3IC8qIGRhdGVfb2JqZWN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IGRhdGVfb2JqZWN0LmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB9OwogCQlGNjkyQTg1NjAyNTU1OTdEMDFGRjYwRjcg
LyogZGF0ZV9vYmplY3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSAzMDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gZGF0ZV9vYmplY3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lk
dGggPSA4OyB9OwotCQlGNjkyQTg1ODAyNTU1OTdEMDFGRjYwRjcgLyogZGVidWdnZXIuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRlbnRXaWR0
aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gZGVi
dWdnZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IH07Ci0JCUY2
OTJBODU5MDI1NTU5N0QwMUZGNjBGNyAvKiBkZWJ1Z2dlci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBkZWJ1Z2dlci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB0YWJXaWR0aCA9IDg7IH07CisJCUY2OTJBODU4MDI1NTU5N0QwMUZGNjBGNyAv
KiBkZWJ1Z2dlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gMzA7IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IG5hbWUgPSBkZWJ1Z2dlci5jcHA7IHBhdGggPSBranMvZGVidWdnZXIuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IH07CisJCUY2OTJBODU5MDI1NTU5N0Qw
MUZGNjBGNyAvKiBkZWJ1Z2dlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDMwOyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IG5hbWUgPSBkZWJ1Z2dlci5oOyBwYXRoID0ga2pzL2RlYnVnZ2VyLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgfTsKIAkJRjY5MkE4NUEwMjU1NTk3RDAx
RkY2MEY3IC8qIGVycm9yX29iamVjdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBlcnJvcl9vYmplY3QuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB0YWJXaWR0aCA9IDg7IH07CiAJCUY2OTJBODVCMDI1NTU5N0QwMUZGNjBGNyAv
KiBlcnJvcl9vYmplY3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSAzMDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gZXJyb3Jfb2JqZWN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldp
ZHRoID0gODsgfTsKIAkJRjY5MkE4NUMwMjU1NTk3RDAxRkY2MEY3IC8qIGZ1bmN0aW9uX29iamVj
dC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGlu
ZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBmdW5jdGlvbl9vYmplY3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0
aCA9IDg7IH07CkBAIC03MTEsMTkgKzcxNSwyMCBAQAogCQkJCTkzN0I2M0NDMDlFNzY2RDIwMEE2
NzFERCAvKiBEZXJpdmVkU291cmNlcy5tYWtlICovLAogCQkJCTE0QjhFQ0E2MEE1NjUzOTgwMDYy
QkU1NCAvKiBKYXZhU2NyaXB0Q29yZS5leHAgKi8sCiAJCQkJRjVDMjkwRTYwMjg0Rjk4RTAxODYz
NUNBIC8qIEphdmFTY3JpcHRDb3JlUHJlZml4LmggKi8sCisJCQkJMTQzMkVCRDcwQTM0Q0FENDAw
NzE3QjlGIC8qIEFQSSAqLywKIAkJCQk2NTE2MkVGMTA4RTZBMjFDMDA3NTU2Q0QgLyogd3RmICov
LAogCQkJCTY1NDE3MjAzMDM5RTAxRjkwMDU4QkZFQiAvKiBwY3JlICovLAotCQkJCTk1QUI4MzFB
MERBNDJDNjkwMEJDODNGMyAvKiBwcm9maWxlciAqLywKIAkJCQk2NTQxNzIwMDAzOUUwMUJBMDA1
OEJGRUIgLyoga2pzICovLAotCQkJCTE0OUIxNURGMEQ4MUY4ODcwMDlDQjhDNyAvKiBDb21waWxl
ciAqLywKLQkJCQkxNDlCMTVFMDBEODFGODhEMDA5Q0I4QzcgLyogVk0gKi8sCi0JCQkJMTQzMkVC
RDcwQTM0Q0FENDAwNzE3QjlGIC8qIEFQSSAqLywKLQkJCQkxNDEyMTEwMDBBNDg3NzI2MDA0ODAy
NTUgLyogdGVzdHMgKi8sCisJCQkJMTQ5QjE1REYwRDgxRjg4NzAwOUNCOEM3IC8qIGNvbXBpbGVy
ICovLAorCQkJCTE0OUIxNUUwMEQ4MUY4OEQwMDlDQjhDNyAvKiB2bSAqLywKKwkJCQkxNDgwREI5
QTBEREMyMjMxMDAzQ0ZERjIgLyogZGVidWdnZXIgKi8sCisJCQkJOTVBQjgzMUEwREE0MkM2OTAw
QkM4M0YzIC8qIHByb2ZpbGVyICovLAogCQkJCTY1MEZERjhEMDlEMEZDQTcwMDc2OUU1NCAvKiBE
ZXJpdmVkIFNvdXJjZXMgKi8sCi0JCQkJOTMyRkMzQzIwODI0QkI3MDAwNUIzQzc1IC8qIFJlc291
cmNlcyAqLywKIAkJCQkwMzQ3NjhERkZGMzhBNTA0MTFEQjlDOEIgLyogUHJvZHVjdHMgKi8sCisJ
CQkJOTMyRkMzQzIwODI0QkI3MDAwNUIzQzc1IC8qIFJlc291cmNlcyAqLywKIAkJCQkwODY3RDY5
QUZFODQwMjhGQzAyQUFDMDcgLyogRnJhbWV3b3JrcyAqLywKIAkJCQkxQzkwNTEzRTBCQTlFODgz
MDA4MUU5RDAgLyogQ29uZmlndXJhdGlvbnMgKi8sCisJCQkJMTQxMjExMDAwQTQ4NzcyNjAwNDgw
MjU1IC8qIHRlc3RzICovLAogCQkJKTsKIAkJCW5hbWUgPSBKYXZhU2NyaXB0Q29yZTsKIAkJCXNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC04MDgsNyArODEzLDE4IEBACiAJCQluYW1lID0gbWlu
aWRvbTsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CiAJCX07Ci0JCTE0OUIxNURGMEQ4MUY4
ODcwMDlDQjhDNyAvKiBDb21waWxlciAqLyA9IHsKKwkJMTQ4MERCOUEwRERDMjIzMTAwM0NGREYy
IC8qIGRlYnVnZ2VyICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgK
KwkJCQlGNjkyQTg1ODAyNTU1OTdEMDFGRjYwRjcgLyogZGVidWdnZXIuY3BwICovLAorCQkJCUY2
OTJBODU5MDI1NTU5N0QwMUZGNjBGNyAvKiBkZWJ1Z2dlci5oICovLAorCQkJCTE0ODBEQjlCMERE
QzIyN0YwMDNDRkRGMiAvKiBEZWJ1Z2dlckNhbGxGcmFtZS5oICovLAorCQkJCTE0OTU1OUVEMERE
Q0RERjcwMDY0ODA4NyAvKiBEZWJ1Z2dlckNhbGxGcmFtZS5jcHAgKi8sCisJCQkpOworCQkJbmFt
ZSA9IGRlYnVnZ2VyOworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKKwkJMTQ5QjE1
REYwRDgxRjg4NzAwOUNCOEM3IC8qIGNvbXBpbGVyICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7
CiAJCQljaGlsZHJlbiA9ICgKIAkJCQkxNDlCMTVFOTBEODFGOTg2MDA5Q0I4QzcgLyogQ29kZUdl
bmVyYXRvci5jcHAgKi8sCkBAIC04MjYsMTAgKzg0MiwxMCBAQAogCQkJCTE0OUIxNkI4MEQ4MjU4
M0YwMDlDQjhDNyAvKiBSZWdpc3RlcklELmggKi8sCiAJCQkJQTdDMzFEQTgwREJFQkE0MzAwRkRG
OEVCIC8qIFNlZ21lbnRlZFZlY3Rvci5oICovLAogCQkJKTsKLQkJCW5hbWUgPSBDb21waWxlcjsK
KwkJCW5hbWUgPSBjb21waWxlcjsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CiAJCX07Ci0J
CTE0OUIxNUUwMEQ4MUY4OEQwMDlDQjhDNyAvKiBWTSAqLyA9IHsKKwkJMTQ5QjE1RTAwRDgxRjg4
RDAwOUNCOEM3IC8qIHZtICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9
ICgKIAkJCQkxNDlCMUE5RTBEODZFRDczMDA5Q0I4QzcgLyogQ29kZUJsb2NrLmNwcCAqLywKQEAg
LTg1MSw3ICs4NjcsNyBAQAogCQkJCUE3MjcwMUIzMERBREU5NDkwMEU1NDhENyAvKiBFeGNlcHRp
b25IZWxwZXJzLmggKi8sCiAJCQkJQTcyNzAxQjQwREFERTk0OTAwRTU0OEQ3IC8qIEV4Y2VwdGlv
bkhlbHBlcnMuY3BwICovLAogCQkJKTsKLQkJCW5hbWUgPSBWTTsKKwkJCW5hbWUgPSB2bTsKIAkJ
CXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CiAJCX07CiAJCTFDOTA1MTNFMEJBOUU4ODMwMDgxRTlE
MCAvKiBDb25maWd1cmF0aW9ucyAqLyA9IHsKQEAgLTk3Myw4ICs5ODksNiBAQAogCQkJCUY2OTJB
ODU2MDI1NTU5N0QwMUZGNjBGNyAvKiBkYXRlX29iamVjdC5oICovLAogCQkJCUQyMTIwMjI4MEFE
NDMxMEMwMEVENzlCNiAvKiBEYXRlTWF0aC5jcHAgKi8sCiAJCQkJRDIxMjAyMjkwQUQ0MzEwQzAw
RUQ3OUI2IC8qIERhdGVNYXRoLmggKi8sCi0JCQkJRjY5MkE4NTgwMjU1NTk3RDAxRkY2MEY3IC8q
IGRlYnVnZ2VyLmNwcCAqLywKLQkJCQlGNjkyQTg1OTAyNTU1OTdEMDFGRjYwRjcgLyogZGVidWdn
ZXIuaCAqLywKIAkJCQk2NTFGNjQxMjAzOUQ1QjVGMDA3ODM5NUMgLyogZHRvYS5jcHAgKi8sCiAJ
CQkJNjUxRjY0MTMwMzlENUI1RjAwNzgzOTVDIC8qIGR0b2EuaCAqLywKIAkJCQlGNjkyQTg1QTAy
NTU1OTdEMDFGRjYwRjcgLyogZXJyb3Jfb2JqZWN0LmNwcCAqLywKQEAgLTEyODIsNiArMTI5Niw3
IEBACiAJCQkJQkM4RjNDRUQwREFGMUE4MDAwNTc3QTgwIC8qIENvbnN0cnVjdERhdGEuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUE3MjcwMUI1MERBREU5NDkwMEU1NDhENyAvKiBFeGNlcHRpb25IZWxw
ZXJzLmggaW4gSGVhZGVycyAqLywKIAkJCQlBN0MzMURBOTBEQkVCQTQzMDBGREY4RUIgLyogU2Vn
bWVudGVkVmVjdG9yLmggaW4gSGVhZGVycyAqLywKKwkJCQkxNDgwREI5RDBEREMyMjdGMDAzQ0ZE
RjIgLyogRGVidWdnZXJDYWxsRnJhbWUuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9u
bHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtMTU1Myw2ICsxNTY4
LDcgQEAKIAkJCQlBNzI3MDA5MDBEQUM2QkJDMDBFNTQ4RDcgLyogSlNOb3RBbk9iamVjdC5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQkxNEQ3OTc4MTBEQUMzMzA3MDAxQTlGMDUgLyogUmVnaXN0ZXJG
aWxlU3RhY2suY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTcyNzAxQjYwREFERTk0OTAwRTU0OEQ3
IC8qIEV4Y2VwdGlvbkhlbHBlcnMuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMTQ5NTU5RUUwRERD
RERGNzAwNjQ4MDg3IC8qIERlYnVnZ2VyQ2FsbEZyYW1lLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
KTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpJbmRl
eDogSmF2YVNjcmlwdENvcmUvVk0vQ29kZUdlbmVyYXRvci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2
YVNjcmlwdENvcmUvVk0vQ29kZUdlbmVyYXRvci5jcHAJKHJldmlzaW9uIDMzNTQ5KQorKysgSmF2
YVNjcmlwdENvcmUvVk0vQ29kZUdlbmVyYXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyOSw3
ICsxMjksOSBAQCB2b2lkIENvZGVHZW5lcmF0b3I6OmdlbmVyYXRlKCkKIHsKICAgICBtX2NvZGVC
bG9jay0+bnVtTG9jYWxzID0gbV9jb2RlQmxvY2stPm51bVZhcnMgKyBtX2NvZGVCbG9jay0+bnVt
UGFyYW1ldGVyczsKICAgICBtX2NvZGVCbG9jay0+dGhpc1JlZ2lzdGVyID0gbV9jb2RlVHlwZSA9
PSBGdW5jdGlvbkNvZGUgPyAtbV9jb2RlQmxvY2stPm51bUxvY2FscyA6IE1hY2hpbmU6OlByb2dy
YW1Db2RlVGhpc1JlZ2lzdGVyOwotCisgICAgaWYgKG1fc2hvdWxkRW1pdERlYnVnSG9va3MpCisg
ICAgICAgIG1fY29kZUJsb2NrLT5uZWVkc0Z1bGxTY29wZUNoYWluID0gdHJ1ZTsKKyAgICAKICAg
ICBtX3Njb3BlTm9kZS0+ZW1pdENvZGUoKnRoaXMpOwogCiAjaWZuZGVmIE5ERUJVRwpJbmRleDog
SmF2YVNjcmlwdENvcmUvVk0vQ29kZUdlbmVyYXRvci5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3Jp
cHRDb3JlL1ZNL0NvZGVHZW5lcmF0b3IuaAkocmV2aXNpb24gMzM1NDkpCisrKyBKYXZhU2NyaXB0
Q29yZS9WTS9Db2RlR2VuZXJhdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTM1LDYgKzM1LDcgQEAK
ICNpbmNsdWRlICJIYXNoVHJhaXRzLmgiCiAjaW5jbHVkZSAiSW5zdHJ1Y3Rpb24uaCIKICNpbmNs
dWRlICJMYWJlbElELmgiCisjaW5jbHVkZSAiTWFjaGluZS5oIgogI2luY2x1ZGUgIlJlZ2lzdGVy
SUQuaCIKICNpbmNsdWRlICJTeW1ib2xUYWJsZS5oIgogI2luY2x1ZGUgIlNlZ21lbnRlZFZlY3Rv
ci5oIgpJbmRleDogSmF2YVNjcmlwdENvcmUvVk0vTWFjaGluZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
SmF2YVNjcmlwdENvcmUvVk0vTWFjaGluZS5jcHAJKHJldmlzaW9uIDMzNTQ5KQorKysgSmF2YVNj
cmlwdENvcmUvVk0vTWFjaGluZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxLDYgKzMxLDcgQEAK
ICNpbmNsdWRlICJNYWNoaW5lLmgiCiAKICNpbmNsdWRlICJDb2RlQmxvY2suaCIKKyNpbmNsdWRl
ICJEZWJ1Z2dlckNhbGxGcmFtZS5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkhlbHBlcnMuaCIKICNp
bmNsdWRlICJFeGVjU3RhdGUuaCIKICNpbmNsdWRlICJKU0FjdGl2YXRpb24uaCIKQEAgLTUxOCwx
MCArNTE5LDE3IEBAIGJvb2wgTWFjaGluZTo6aXNPcGNvZGUoT3Bjb2RlIG9wY29kZSkKICNlbmRp
ZgogfQogCi1ORVZFUl9JTkxJTkUgYm9vbCBNYWNoaW5lOjp1bndpbmRDYWxsRnJhbWUoRXhlY1N0
YXRlKiBleGVjLCBSZWdpc3RlcioqIHJlZ2lzdGVyQmFzZSwgY29uc3QgSW5zdHJ1Y3Rpb24qJiB2
UEMsIENvZGVCbG9jayomIGNvZGVCbG9jaywgSlNWYWx1ZSoqJiBrLCBTY29wZUNoYWluTm9kZSom
IHNjb3BlQ2hhaW4sIFJlZ2lzdGVyKiYgcikKK05FVkVSX0lOTElORSBib29sIE1hY2hpbmU6OnVu
d2luZENhbGxGcmFtZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUqIGV4Y2VwdGlvblZhbHVlLCBS
ZWdpc3RlcioqIHJlZ2lzdGVyQmFzZSwgY29uc3QgSW5zdHJ1Y3Rpb24qJiB2UEMsIENvZGVCbG9j
ayomIGNvZGVCbG9jaywgSlNWYWx1ZSoqJiBrLCBTY29wZUNoYWluTm9kZSomIHNjb3BlQ2hhaW4s
IFJlZ2lzdGVyKiYgcikKIHsKICAgICBDb2RlQmxvY2sqIG9sZENvZGVCbG9jayA9IGNvZGVCbG9j
azsKIAorICAgIGlmIChEZWJ1Z2dlciogZGVidWdnZXIgPSBleGVjLT5keW5hbWljR2xvYmFsT2Jq
ZWN0KCktPmRlYnVnZ2VyKCkpIHsKKyAgICAgICAgaWYgKCFpc0dsb2JhbENhbGxGcmFtZShyZWdp
c3RlckJhc2UsIHIpKSB7CisgICAgICAgICAgICBEZWJ1Z2dlckNhbGxGcmFtZSBkZWJ1Z2dlckNh
bGxGcmFtZSh0aGlzLCBjb2RlQmxvY2ssIHNjb3BlQ2hhaW4sIGV4Y2VwdGlvblZhbHVlLCByZWdp
c3RlckJhc2UsIHIgLSAqcmVnaXN0ZXJCYXNlKTsKKyAgICAgICAgICAgIGRlYnVnZ2VyLT5yZXR1
cm5FdmVudChkZWJ1Z2dlckNhbGxGcmFtZSwgY29kZUJsb2NrLT5vd25lck5vZGUtPnNvdXJjZUlk
KCksIGNvZGVCbG9jay0+b3duZXJOb2RlLT5sYXN0TGluZSgpKTsKKyAgICAgICAgfQorICAgIH0K
KwogICAgIGlmIChvbGRDb2RlQmxvY2stPm5lZWRzRnVsbFNjb3BlQ2hhaW4pCiAgICAgICAgIHNj
b3BlQ2hhaW4tPmRlcmVmKCk7CiAgICAgCkBAIC01NjEsOCArNTY5LDEwIEBAIE5FVkVSX0lOTElO
RSBJbnN0cnVjdGlvbiogTWFjaGluZTo6dGhyb3cKICAgICAgICAgfQogICAgIH0KIAotICAgIGlm
IChEZWJ1Z2dlciogZGVidWdnZXIgPSBleGVjLT5keW5hbWljR2xvYmFsT2JqZWN0KCktPmRlYnVn
Z2VyKCkpCi0gICAgICAgIGRlYnVnZ2VyLT5leGNlcHRpb24oZXhlYywgY29kZUJsb2NrLT5vd25l
ck5vZGUtPnNvdXJjZUlkKCksIGNvZGVCbG9jay0+bGluZU51bWJlckZvclZQQyh2UEMpLCBleGNl
cHRpb25WYWx1ZSk7CisgICAgaWYgKERlYnVnZ2VyKiBkZWJ1Z2dlciA9IGV4ZWMtPmR5bmFtaWNH
bG9iYWxPYmplY3QoKS0+ZGVidWdnZXIoKSkgeworICAgICAgICBEZWJ1Z2dlckNhbGxGcmFtZSBk
ZWJ1Z2dlckNhbGxGcmFtZSh0aGlzLCBjb2RlQmxvY2ssIHNjb3BlQ2hhaW4sIGV4Y2VwdGlvblZh
bHVlLCByZWdpc3RlckJhc2UsIHIgLSAqcmVnaXN0ZXJCYXNlKTsKKyAgICAgICAgZGVidWdnZXIt
PmV4Y2VwdGlvbihkZWJ1Z2dlckNhbGxGcmFtZSwgY29kZUJsb2NrLT5vd25lck5vZGUtPnNvdXJj
ZUlkKCksIGNvZGVCbG9jay0+bGluZU51bWJlckZvclZQQyh2UEMpKTsKKyAgICB9CiAKICAgICAv
LyBDYWxjdWxhdGUgYW4gZXhjZXB0aW9uIGhhbmRsZXIgdlBDLCB1bndpbmRpbmcgY2FsbCBmcmFt
ZXMgYXMgbmVjZXNzYXJ5LgogCkBAIC01NzAsNyArNTgwLDcgQEAgTkVWRVJfSU5MSU5FIEluc3Ry
dWN0aW9uKiBNYWNoaW5lOjp0aHJvdwogICAgIEluc3RydWN0aW9uKiBoYW5kbGVyVlBDOwogCiAg
ICAgd2hpbGUgKCFjb2RlQmxvY2stPmdldEhhbmRsZXJGb3JWUEModlBDLCBoYW5kbGVyVlBDLCBz
Y29wZURlcHRoKSkKLSAgICAgICAgaWYgKCF1bndpbmRDYWxsRnJhbWUoZXhlYywgcmVnaXN0ZXJC
YXNlLCB2UEMsIGNvZGVCbG9jaywgaywgc2NvcGVDaGFpbiwgcikpCisgICAgICAgIGlmICghdW53
aW5kQ2FsbEZyYW1lKGV4ZWMsIGV4Y2VwdGlvblZhbHVlLCByZWdpc3RlckJhc2UsIHZQQywgY29k
ZUJsb2NrLCBrLCBzY29wZUNoYWluLCByKSkKICAgICAgICAgICAgIHJldHVybiAwOwogCiAgICAg
Ly8gTm93IHVud2luZCB0aGUgc2NvcGUgY2hhaW4gd2l0aGluIHRoZSBleGNlcHRpb24gaGFuZGxl
cidzIGNhbGwgZnJhbWUuCkBAIC03MDMsOSArNzEzLDEzIEBAIEpTVmFsdWUqIE1hY2hpbmU6OmV4
ZWN1dGUoRXZhbE5vZGUqIGV2YWwKICAgICAgICAgKmV4Y2VwdGlvbiA9IGNyZWF0ZVN0YWNrT3Zl
cmZsb3dFcnJvcihleGVjKTsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQotICAgIFJlZ2lzdGVy
KiByID0gKCpyZWdpc3RlckZpbGUtPmJhc2VQb2ludGVyKCkpICsgcmVnaXN0ZXJPZmZzZXQgKyBj
b2RlQmxvY2stPm51bVZhcnMgKyBDYWxsRnJhbWVIZWFkZXJTaXplOworCisgICAgUmVnaXN0ZXIq
IGNhbGxGcmFtZSA9ICpyZWdpc3RlckZpbGUtPmJhc2VQb2ludGVyKCkgKyByZWdpc3Rlck9mZnNl
dDsKICAgICAKLSAgICAoKCpyZWdpc3RlckZpbGUtPmJhc2VQb2ludGVyKCkpICsgcmVnaXN0ZXJP
ZmZzZXQpW0NhbGxlckNvZGVCbG9ja10udS5jb2RlQmxvY2sgPSAwOworICAgIC8vIHB1dCBjYWxs
IGZyYW1lIGluIHBsYWNlLCB1c2luZyBhIDAgY29kZUJsb2NrIHRvIGluZGljYXRlIGEgYnVpbHQt
aW4gY2FsbGVyCisgICAgaW5pdGlhbGl6ZUNhbGxGcmFtZShjYWxsRnJhbWUsIDAsIDAsIDAsIHJl
Z2lzdGVyT2Zmc2V0LCAwLCAwLCAwLCAwLCAwKTsKKworICAgIFJlZ2lzdGVyKiByID0gY2FsbEZy
YW1lICsgQ2FsbEZyYW1lSGVhZGVyU2l6ZSArIGNvZGVCbG9jay0+bnVtVmFyczsKICAgICByW1By
b2dyYW1Db2RlVGhpc1JlZ2lzdGVyXS51LmpzVmFsdWUgPSB0aGlzT2JqOwogCiAgICAgaWYgKGNv
ZGVCbG9jay0+bmVlZHNGdWxsU2NvcGVDaGFpbikKQEAgLTczOCw3ICs3NTIsNyBAQCBBTFdBWVNf
SU5MSU5FIHZvaWQgTWFjaGluZTo6c2V0U2NvcGVDaGFpCiAgICAgZXhlYy0+bV9zY29wZUNoYWlu
ID0gbmV3U2NvcGVDaGFpbjsKIH0KIAotTkVWRVJfSU5MSU5FIHZvaWQgTWFjaGluZTo6ZGVidWco
RXhlY1N0YXRlKiBleGVjLCBjb25zdCBJbnN0cnVjdGlvbiogdlBDLCBjb25zdCBDb2RlQmxvY2sq
IGNvZGVCbG9jaywgY29uc3QgU2NvcGVDaGFpbk5vZGUqLCBSZWdpc3RlcioqIHJlZ2lzdGVyQmFz
ZSwgUmVnaXN0ZXIqIHIpCitORVZFUl9JTkxJTkUgdm9pZCBNYWNoaW5lOjpkZWJ1ZyhFeGVjU3Rh
dGUqIGV4ZWMsIGNvbnN0IEluc3RydWN0aW9uKiB2UEMsIGNvbnN0IENvZGVCbG9jayogY29kZUJs
b2NrLCBTY29wZUNoYWluTm9kZSogc2NvcGVDaGFpbiwgUmVnaXN0ZXIqKiByZWdpc3RlckJhc2Us
IFJlZ2lzdGVyKiByKQogewogICAgIGludCBkZWJ1Z0hvb2tJRCA9ICgrK3ZQQyktPnUub3BlcmFu
ZDsKICAgICBpbnQgZmlyc3RMaW5lID0gKCsrdlBDKS0+dS5vcGVyYW5kOwpAQCAtNzQ4LDIyICs3
NjIsMjEgQEAgTkVWRVJfSU5MSU5FIHZvaWQgTWFjaGluZTo6ZGVidWcoRXhlY1N0YQogICAgIGlm
ICghZGVidWdnZXIpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmIChkZWJ1Z0hvb2tJRCA9PSBE
aWRFbnRlckNhbGxGcmFtZSkgewotICAgICAgICBSZWdpc3RlciogY2FsbEZyYW1lID0gciAtIGNv
ZGVCbG9jay0+bnVtTG9jYWxzIC0gQ2FsbEZyYW1lSGVhZGVyU2l6ZTsKLSAgICAgICAgRnVuY3Rp
b25JbXAqIGZ1bmN0aW9uOwotICAgICAgICBSZWdpc3RlciogYXJndjsKLSAgICAgICAgaW50IGFy
Z2M7Ci0gICAgICAgIGdldEZ1bmN0aW9uQW5kQXJndW1lbnRzKHJlZ2lzdGVyQmFzZSwgY2FsbEZy
YW1lLCBmdW5jdGlvbiwgYXJndiwgYXJnYyk7Ci0gICAgICAgIExpc3QgYXJncygmYXJndi0+dS5q
c1ZhbHVlLCBhcmdjKTsKLSAgICAgICAgZGVidWdnZXItPmNhbGxFdmVudChleGVjLCBjb2RlQmxv
Y2stPm93bmVyTm9kZS0+c291cmNlSWQoKSwgZmlyc3RMaW5lLCBmdW5jdGlvbiwgYXJncyk7Ci0g
ICAgfSBlbHNlIGlmIChkZWJ1Z0hvb2tJRCA9PSBXaWxsTGVhdmVDYWxsRnJhbWUpIHsKLSAgICAg
ICAgUmVnaXN0ZXIqIGNhbGxGcmFtZSA9IHIgLSBjb2RlQmxvY2stPm51bUxvY2FscyAtIENhbGxG
cmFtZUhlYWRlclNpemU7Ci0gICAgICAgIEZ1bmN0aW9uSW1wKiBmdW5jdGlvbiA9IHN0YXRpY19j
YXN0PEZ1bmN0aW9uSW1wKj4oY2FsbEZyYW1lW0NhbGxlZV0udS5qc1ZhbHVlKTsKLSAgICAgICAg
QVNTRVJUKGZ1bmN0aW9uLT5pbmhlcml0cygmRnVuY3Rpb25JbXA6OmluZm8pKTsKLSAgICAgICAg
ZGVidWdnZXItPnJldHVybkV2ZW50KGV4ZWMsIGNvZGVCbG9jay0+b3duZXJOb2RlLT5zb3VyY2VJ
ZCgpLCBsYXN0TGluZSwgZnVuY3Rpb24pOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIEFTU0VSVChk
ZWJ1Z0hvb2tJRCA9PSBXaWxsRXhlY3V0ZVN0YXRlbWVudCk7Ci0gICAgICAgIGRlYnVnZ2VyLT5h
dFN0YXRlbWVudChleGVjLCBjb2RlQmxvY2stPm93bmVyTm9kZS0+c291cmNlSWQoKSwgZmlyc3RM
aW5lLCBsYXN0TGluZSk7CisgICAgRGVidWdnZXJDYWxsRnJhbWUgZGVidWdnZXJDYWxsRnJhbWUo
dGhpcywgY29kZUJsb2NrLCBzY29wZUNoYWluLCAwLCByZWdpc3RlckJhc2UsIHIgLSAqcmVnaXN0
ZXJCYXNlKTsKKworICAgIHN3aXRjaCgoRGVidWdIb29rSUQpZGVidWdIb29rSUQpIHsKKyAgICBj
YXNlIERpZEVudGVyQ2FsbEZyYW1lOiB7CisgICAgICAgIGRlYnVnZ2VyLT5jYWxsRXZlbnQoZGVi
dWdnZXJDYWxsRnJhbWUsIGNvZGVCbG9jay0+b3duZXJOb2RlLT5zb3VyY2VJZCgpLCBmaXJzdExp
bmUpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGNhc2UgV2lsbExlYXZlQ2FsbEZyYW1l
OiB7CisgICAgICAgIGRlYnVnZ2VyLT5yZXR1cm5FdmVudChkZWJ1Z2dlckNhbGxGcmFtZSwgY29k
ZUJsb2NrLT5vd25lck5vZGUtPnNvdXJjZUlkKCksIGxhc3RMaW5lKTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKyAgICBjYXNlIFdpbGxFeGVjdXRlU3RhdGVtZW50OiB7CisgICAgICAgIGRlYnVn
Z2VyLT5hdFN0YXRlbWVudChkZWJ1Z2dlckNhbGxGcmFtZSwgY29kZUJsb2NrLT5vd25lck5vZGUt
PnNvdXJjZUlkKCksIGZpcnN0TGluZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CiAgICAgfQog
fQogCkBAIC0yMTI1LDEyICsyMTM4LDE2IEBAIEpTVmFsdWUqIE1hY2hpbmU6OnByaXZhdGVFeGVj
dXRlKEV4ZWN1dGkKICAgICAgICAgLyogZGVidWcgZGVidWdIb29rSUQobikgZmlyc3RMaW5lKG4p
IGxhc3RMaW5lKG4pCiAgICAgICAgICAKICAgICAgICAgIE5vdGlmaWVzIHRoZSBkZWJ1Z2dlciBv
ZiB0aGUgY3VycmVudCBzdGF0ZSBvZiBleGVjdXRpb246Ci0gICAgICAgICBEaWRFbnRlckNhbGxG
cmFtZTsgV2lsbExlYXZlQ2FsbEZyYW1lOyBvciBXaWxsRXhlY3V0ZVN0YXRlbWVudC4KKyAgICAg
ICAgIGRpZEVudGVyQ2FsbEZyYW1lOyB3aWxsTGVhdmVDYWxsRnJhbWU7IG9yIHdpbGxFeGVjdXRl
U3RhdGVtZW50LgogICAgICAgICAgCiAgICAgICAgICBUaGlzIG9wY29kZSBpcyBvbmx5IGdlbmVy
YXRlZCB3aGlsZSB0aGUgZGVidWdnZXIgaXMgYXR0YWNoZWQuCiAgICAgICAgICovCiAKKyAgICAg
ICAgaW50IHJlZ2lzdGVyT2Zmc2V0ID0gciAtICgqcmVnaXN0ZXJCYXNlKTsKKyAgICAgICAgcmVn
aXN0ZXJGaWxlLT5zZXRTYWZlRm9yUmVlbnRyeSh0cnVlKTsKICAgICAgICAgZGVidWcoZXhlYywg
dlBDLCBjb2RlQmxvY2ssIHNjb3BlQ2hhaW4sIHJlZ2lzdGVyQmFzZSwgcik7CisgICAgICAgIHJl
Z2lzdGVyRmlsZS0+c2V0U2FmZUZvclJlZW50cnkoZmFsc2UpOworICAgICAgICByID0gKCpyZWdp
c3RlckJhc2UpICsgcmVnaXN0ZXJPZmZzZXQ7CiAKICAgICAgICAgdlBDICs9IDQ7CiAgICAgICAg
IE5FWFRfT1BDT0RFOwpJbmRleDogSmF2YVNjcmlwdENvcmUvVk0vTWFjaGluZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIEphdmFTY3JpcHRDb3JlL1ZNL01hY2hpbmUuaAkocmV2aXNpb24gMzM1NDkpCisrKyBK
YXZhU2NyaXB0Q29yZS9WTS9NYWNoaW5lLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDYgKzQ2LDEy
IEBAIG5hbWVzcGFjZSBLSlMgewogICAgIGNsYXNzIFJlZ2lzdGVyRmlsZVN0YWNrOwogICAgIGNs
YXNzIFNjb3BlQ2hhaW5Ob2RlOwogICAgIAorICAgIGVudW0gRGVidWdIb29rSUQgeworICAgICAg
ICBXaWxsRXhlY3V0ZVN0YXRlbWVudCwKKyAgICAgICAgRGlkRW50ZXJDYWxsRnJhbWUsCisgICAg
ICAgIFdpbGxMZWF2ZUNhbGxGcmFtZQorICAgIH07CisKICAgICBjbGFzcyBNYWNoaW5lIHsKICAg
ICBwdWJsaWM6CiAgICAgICAgIGVudW0geyBDYWxsZXJDb2RlQmxvY2sgPSAwLCAKQEAgLTk4LDkg
KzEwNCw5IEBAIG5hbWVzcGFjZSBLSlMgewogICAgICAgICB0eXBlZGVmIGVudW0geyBOb3JtYWws
IEluaXRpYWxpemVBbmRSZXR1cm4gfSBFeGVjdXRpb25GbGFnOwogCiAgICAgICAgIEFMV0FZU19J
TkxJTkUgdm9pZCBzZXRTY29wZUNoYWluKEV4ZWNTdGF0ZSogZXhlYywgU2NvcGVDaGFpbk5vZGUq
JiwgU2NvcGVDaGFpbk5vZGUqKTsKLSAgICAgICAgTkVWRVJfSU5MSU5FIHZvaWQgZGVidWcoRXhl
Y1N0YXRlKiwgY29uc3QgSW5zdHJ1Y3Rpb24qLCBjb25zdCBDb2RlQmxvY2sqLCBjb25zdCBTY29w
ZUNoYWluTm9kZSosIFJlZ2lzdGVyKiosIFJlZ2lzdGVyKik7CisgICAgICAgIE5FVkVSX0lOTElO
RSB2b2lkIGRlYnVnKEV4ZWNTdGF0ZSosIGNvbnN0IEluc3RydWN0aW9uKiwgY29uc3QgQ29kZUJs
b2NrKiwgU2NvcGVDaGFpbk5vZGUqLCBSZWdpc3RlcioqLCBSZWdpc3RlciopOwogCi0gICAgICAg
IE5FVkVSX0lOTElORSBib29sIHVud2luZENhbGxGcmFtZShFeGVjU3RhdGUqLCBSZWdpc3Rlcioq
LCBjb25zdCBJbnN0cnVjdGlvbiomLCBDb2RlQmxvY2sqJiwgSlNWYWx1ZSoqJiwgU2NvcGVDaGFp
bk5vZGUqJiwgUmVnaXN0ZXIqJik7CisgICAgICAgIE5FVkVSX0lOTElORSBib29sIHVud2luZENh
bGxGcmFtZShFeGVjU3RhdGUqLCBKU1ZhbHVlKiwgUmVnaXN0ZXIqKiwgY29uc3QgSW5zdHJ1Y3Rp
b24qJiwgQ29kZUJsb2NrKiYsIEpTVmFsdWUqKiYsIFNjb3BlQ2hhaW5Ob2RlKiYsIFJlZ2lzdGVy
KiYpOwogICAgICAgICBORVZFUl9JTkxJTkUgSW5zdHJ1Y3Rpb24qIHRocm93RXhjZXB0aW9uKEV4
ZWNTdGF0ZSosIEpTVmFsdWUqLCBSZWdpc3RlcioqLCBjb25zdCBJbnN0cnVjdGlvbiosIENvZGVC
bG9jayomLCBKU1ZhbHVlKiomLCBTY29wZUNoYWluTm9kZSomLCBSZWdpc3RlciomKTsKICAgICAg
ICAgCiAgICAgICAgIGJvb2wgZ2V0Q2FsbEZyYW1lKEV4ZWNTdGF0ZSosIEZ1bmN0aW9uSW1wKiwg
UmVnaXN0ZXIqKiYgcmVnaXN0ZXJCYXNlLCBpbnQmIGNhbGxGcmFtZU9mZnNldCkgY29uc3Q7Cklu
ZGV4OiBKYXZhU2NyaXB0Q29yZS9ranMvRXhlY1N0YXRlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNj
cmlwdENvcmUva2pzL0V4ZWNTdGF0ZS5oCShyZXZpc2lvbiAzMzU0OSkKKysrIEphdmFTY3JpcHRD
b3JlL2tqcy9FeGVjU3RhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtNjUsNiArNjUsNyBAQCBuYW1l
c3BhY2UgS0pTICB7CiAgICAgLy8gUGFzc2VkIGFzIHRoZSBmaXJzdCBhcmd1bWVudCB0byBtb3N0
IGZ1bmN0aW9ucy4KICAgICBjbGFzcyBFeGVjU3RhdGUgOiBOb25jb3B5YWJsZSB7CiAgICAgICAg
IGZyaWVuZCBjbGFzcyBNYWNoaW5lOworICAgICAgICBmcmllbmQgY2xhc3MgRGVidWdnZXJDYWxs
RnJhbWU7CiAKICAgICBwdWJsaWM6CiAgICAgICAgIEV4ZWNTdGF0ZShKU0dsb2JhbE9iamVjdCos
IEpTT2JqZWN0KiBnbG9iYWxUaGlzVmFsdWUsIFNjb3BlQ2hhaW5Ob2RlKiBnbG9iYWxTY29wZUNo
YWluKTsKSW5kZXg6IEphdmFTY3JpcHRDb3JlL2tqcy9kZWJ1Z2dlci5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gSmF2YVNjcmlwdENvcmUva2pzL2RlYnVnZ2VyLmNwcAkocmV2aXNpb24gMzM1NDkpCisrKyBK
YXZhU2NyaXB0Q29yZS9ranMvZGVidWdnZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MiwyNSAr
NTIsNCBAQCB2b2lkIERlYnVnZ2VyOjpkZXRhY2goSlNHbG9iYWxPYmplY3QqIGdsCiAgICAgZ2xv
YmFsT2JqZWN0LT5zZXREZWJ1Z2dlcigwKTsKIH0KIAotdm9pZCBEZWJ1Z2dlcjo6c291cmNlUGFy
c2VkKEV4ZWNTdGF0ZSosIGludCAvKnNvdXJjZUlkKi8sIGNvbnN0IFVTdHJpbmcgJi8qc291cmNl
VVJMKi8sIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU291cmNlUHJvdmlkZXIm
LCBpbnQgLypzdGFydGluZ0xpbmVOdW1iZXIqLywgaW50IC8qZXJyb3JMaW5lKi8sIGNvbnN0IFVT
dHJpbmcgJiAvKmVycm9yTXNnKi8pCi17Ci19Ci0KLXZvaWQgRGVidWdnZXI6OmV4Y2VwdGlvbihF
eGVjU3RhdGUqLCBpbnQgLypzb3VyY2VJZCovLCBpbnQgLypsaW5lbm8qLywgSlNWYWx1ZSogLypl
eGNlcHRpb24qLykKLXsKLX0KLQotdm9pZCBEZWJ1Z2dlcjo6YXRTdGF0ZW1lbnQoRXhlY1N0YXRl
KiwgaW50IC8qc291cmNlSWQqLywgaW50IC8qZmlyc3RMaW5lKi8sIGludCAvKmxhc3RMaW5lKi8p
Ci17Ci19Ci0KLXZvaWQgRGVidWdnZXI6OmNhbGxFdmVudChFeGVjU3RhdGUqLCBpbnQgLypzb3Vy
Y2VJZCovLCBpbnQgLypsaW5lbm8qLywgSlNPYmplY3QqIC8qZnVuY3Rpb24qLywgY29uc3QgTGlz
dCAmLyphcmdzKi8pCi17Ci19Ci0KLXZvaWQgRGVidWdnZXI6OnJldHVybkV2ZW50KEV4ZWNTdGF0
ZSosIGludCAvKnNvdXJjZUlkKi8sIGludCAvKmxpbmVubyovLCBKU09iamVjdCogLypmdW5jdGlv
biovKQotewotfQotCiB9IC8vIG5hbWVzcGFjZSBLSlMKSW5kZXg6IEphdmFTY3JpcHRDb3JlL2tq
cy9kZWJ1Z2dlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL2tqcy9kZWJ1Z2dlci5o
CShyZXZpc2lvbiAzMzU0OSkKKysrIEphdmFTY3JpcHRDb3JlL2tqcy9kZWJ1Z2dlci5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw3IEBACiAKIG5hbWVzcGFjZSBLSlMgewogCisgIGNsYXNz
IERlYnVnZ2VyQ2FsbEZyYW1lOwogICBjbGFzcyBFeGVjU3RhdGU7CiAgIGNsYXNzIEpTR2xvYmFs
T2JqZWN0OwogICBjbGFzcyBKU09iamVjdDsKQEAgLTM2LDEyICszNyw2IEBAIG5hbWVzcGFjZSBL
SlMgewogICBjbGFzcyBTb3VyY2VQcm92aWRlcjsKICAgY2xhc3MgVVN0cmluZzsKICAgCi0gIGVu
dW0gRGVidWdIb29rSUQgewotICAgIFdpbGxFeGVjdXRlU3RhdGVtZW50LAotICAgIERpZEVudGVy
Q2FsbEZyYW1lLAotICAgIFdpbGxMZWF2ZUNhbGxGcmFtZQotICB9OwotCiAgIC8qKgogICAgKiBA
aW50ZXJuYWwKICAgICoKQEAgLTEwNSw4ICsxMDAsOCBAQCBuYW1lc3BhY2UgS0pTIHsKICAgICAg
KiBAcGFyYW0gZXJyb3JNc2cgVGhlIGVycm9yIGRlc2NyaXB0aW9uLCBvciBudWxsIGlmIHRoZSBz
b3VyY2UgY29kZQogICAgICAgIHdhcyB2YWxpZCBhbmQgcGFyc2VkIHN1Y2Nlc3NmdWxseQogICAg
ICAqLwotICAgIHZpcnR1YWwgdm9pZCBzb3VyY2VQYXJzZWQoRXhlY1N0YXRlICpleGVjLCBpbnQg
c291cmNlSWQsIGNvbnN0IFVTdHJpbmcgJnNvdXJjZVVSTCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IFNvdXJjZVByb3ZpZGVyJiBzb3VyY2UsIGludCBzdGFydGluZ0xpbmVO
dW1iZXIsIGludCBlcnJvckxpbmUsIGNvbnN0IFVTdHJpbmcgJmVycm9yTXNnKTsKKyAgICB2aXJ0
dWFsIHZvaWQgc291cmNlUGFyc2VkKEV4ZWNTdGF0ZSosIGludCBzb3VyY2VJZCwgY29uc3QgVVN0
cmluZyYgc291cmNlVVJMLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU291
cmNlUHJvdmlkZXImIHNvdXJjZSwgaW50IHN0YXJ0aW5nTGluZU51bWJlciwgaW50IGVycm9yTGlu
ZSwgY29uc3QgVVN0cmluZyYgZXJyb3JNc2cpID0gMDsKIAogICAgIC8qKgogICAgICAqIENhbGxl
ZCB3aGVuIGFuIGV4Y2VwdGlvbiBpcyB0aHJvd24gZHVyaW5nIHNjcmlwdCBleGVjdXRpb24uCkBA
IC0xMTksNyArMTE0LDcgQEAgbmFtZXNwYWNlIEtKUyB7CiAgICAgICogQHBhcmFtIGxpbmVubyBU
aGUgbGluZSBhdCB3aGljaCB0aGUgZXJyb3Igb2NjdXJyZWQKICAgICAgKiBAcGFyYW0gZXhjZXB0
aW9uT2JqIFRoZSBleGNlcHRpb24gb2JqZWN0CiAgICAgICovCi0gICAgdmlydHVhbCB2b2lkIGV4
Y2VwdGlvbihFeGVjU3RhdGUqIGV4ZWMsIGludCBzb3VyY2VJZCwgaW50IGxpbmVubywgSlNWYWx1
ZSogZXhjZXB0aW9uKTsKKyAgICB2aXJ0dWFsIHZvaWQgZXhjZXB0aW9uKGNvbnN0IERlYnVnZ2Vy
Q2FsbEZyYW1lJiwgaW50IHNvdXJjZUlkLCBpbnQgbGluZW5vKSA9IDA7CiAKICAgICAvKioKICAg
ICAgKiBDYWxsZWQgd2hlbiBhIGxpbmUgb2YgdGhlIHNjcmlwdCBpcyByZWFjaGVkIChiZWZvcmUg
aXQgaXMgZXhlY3V0ZWQpCkBAIC0xMzQsNyArMTI5LDcgQEAgbmFtZXNwYWNlIEtKUyB7CiAgICAg
ICogQHBhcmFtIGxhc3RMaW5lIFRoZSBlbmRpbmcgbGluZSBvZiB0aGUgc3RhdGVtZW50ICB0aGF0
IGlzIGFib3V0IHRvIGJlCiAgICAgICogZXhlY3V0ZWQgKHVzdWFsbHkgdGhlIHNhbWUgYXMgZmly
c3RMaW5lKQogICAgICAqLwotICAgIHZpcnR1YWwgdm9pZCBhdFN0YXRlbWVudChFeGVjU3RhdGUg
KmV4ZWMsIGludCBzb3VyY2VJZCwgaW50IGZpcnN0TGluZSwgaW50IGxhc3RMaW5lKTsKKyAgICB2
aXJ0dWFsIHZvaWQgYXRTdGF0ZW1lbnQoY29uc3QgRGVidWdnZXJDYWxsRnJhbWUmLCBpbnQgc291
cmNlSWQsIGludCBsaW5lbm8pID0gMDsKICAgICAvKioKICAgICAgKiBDYWxsZWQgb24gZWFjaCBm
dW5jdGlvbiBjYWxsLiBVc2UgdG9nZXRoZXIgd2l0aCBAcmVmICNyZXR1cm5FdmVudAogICAgICAq
IGlmIHlvdSB3YW50IHRvIGtlZXAgdHJhY2sgb2YgdGhlIGNhbGwgc3RhY2suCkBAIC0xNDksMTEg
KzE0NCw4IEBAIG5hbWVzcGFjZSBLSlMgewogICAgICAqIEBwYXJhbSBleGVjIFRoZSBjdXJyZW50
IGV4ZWN1dGlvbiBzdGF0ZQogICAgICAqIEBwYXJhbSBzb3VyY2VJZCBUaGUgSUQgb2YgdGhlIHNv
dXJjZSBjb2RlIGJlaW5nIGV4ZWN1dGVkCiAgICAgICogQHBhcmFtIGxpbmVubyBUaGUgbGluZSB0
aGF0IGlzIGFib3V0IHRvIGJlIGV4ZWN1dGVkCi0gICAgICogQHBhcmFtIGZ1bmN0aW9uIFRoZSBm
dW5jdGlvbiBiZWluZyBjYWxsZWQKLSAgICAgKiBAcGFyYW0gYXJncyBUaGUgYXJndW1lbnRzIHRo
YXQgd2VyZSBwYXNzZWQgdG8gdGhlIGZ1bmN0aW9uCi0gICAgICogbGluZSBpcyBiZWluZyBleGVj
dXRlZAogICAgICAqLwotICAgIHZpcnR1YWwgdm9pZCBjYWxsRXZlbnQoRXhlY1N0YXRlICpleGVj
LCBpbnQgc291cmNlSWQsIGludCBsaW5lbm8sIEpTT2JqZWN0ICpmdW5jdGlvbiwgY29uc3QgTGlz
dCAmYXJncyk7CisgICAgdmlydHVhbCB2b2lkIGNhbGxFdmVudChjb25zdCBEZWJ1Z2dlckNhbGxG
cmFtZSYsIGludCBzb3VyY2VJZCwgaW50IGxpbmVubykgPSAwOwogCiAgICAgLyoqCiAgICAgICog
Q2FsbGVkIG9uIGVhY2ggZnVuY3Rpb24gZXhpdC4gVGhlIGZ1bmN0aW9uIGJlaW5nIHJldHVybmVk
IGZyb20gaXMgdGhhdApAQCAtMTY5LDkgKzE2MSw4IEBAIG5hbWVzcGFjZSBLSlMgewogICAgICAq
IEBwYXJhbSBleGVjIFRoZSBjdXJyZW50IGV4ZWN1dGlvbiBzdGF0ZQogICAgICAqIEBwYXJhbSBz
b3VyY2VJZCBUaGUgSUQgb2YgdGhlIHNvdXJjZSBjb2RlIGJlaW5nIGV4ZWN1dGVkCiAgICAgICog
QHBhcmFtIGxpbmVubyBUaGUgbGluZSB0aGF0IGlzIGFib3V0IHRvIGJlIGV4ZWN1dGVkCi0gICAg
ICogQHBhcmFtIGZ1bmN0aW9uIFRoZSBmdW5jdGlvbiBiZWluZyBjYWxsZWQKICAgICAgKi8KLSAg
ICB2aXJ0dWFsIHZvaWQgcmV0dXJuRXZlbnQoRXhlY1N0YXRlICpleGVjLCBpbnQgc291cmNlSWQs
IGludCBsaW5lbm8sIEpTT2JqZWN0ICpmdW5jdGlvbik7CisgICAgdmlydHVhbCB2b2lkIHJldHVy
bkV2ZW50KGNvbnN0IERlYnVnZ2VyQ2FsbEZyYW1lJiwgaW50IHNvdXJjZUlkLCBpbnQgbGluZW5v
KSA9IDA7CiAKICAgcHJpdmF0ZToKICAgICBIYXNoU2V0PEpTR2xvYmFsT2JqZWN0Kj4gbV9nbG9i
YWxPYmplY3RzOwpJbmRleDogSmF2YVNjcmlwdENvcmUva2pzL2Z1bmN0aW9uLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ranMvZnVuY3Rpb24uY3BwCShyZXZpc2lvbiAzMzU0OSkK
KysrIEphdmFTY3JpcHRDb3JlL2tqcy9mdW5jdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU4
Nyw4ICs1ODcsNiBAQCBKU1ZhbHVlKiBnbG9iYWxGdW5jRXZhbChFeGVjU3RhdGUqIGV4ZWMsCiAg
ICAgaWYgKCFldmFsTm9kZSkKICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoZXhlYywgU3ludGF4
RXJyb3IsIGVyck1zZywgZXJyTGluZSwgc291cmNlSWQsIE5VTEwpOwogCi0gICAgQVNTRVJUKCFl
eGVjLT5keW5hbWljR2xvYmFsT2JqZWN0KCktPmRlYnVnZ2VyKCkpOwotCiAgICAgSlNWYWx1ZSog
ZXhjZXB0aW9uID0gMDsKICAgICBKU1ZhbHVlKiB2YWx1ZSA9IG1hY2hpbmUoKS5leGVjdXRlKGV2
YWxOb2RlLmdldCgpLCBleGVjLCB0aGlzT2JqLCAmZXhlYy0+ZHluYW1pY0dsb2JhbE9iamVjdCgp
LT5yZWdpc3RlckZpbGVTdGFjaygpLCBnbG9iYWxPYmplY3QtPmdsb2JhbFNjb3BlQ2hhaW4oKS5u
b2RlKCksICZleGNlcHRpb24pOwogCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ranMvbm9kZXMuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL2tqcy9ub2Rlcy5jcHAJKHJldmlzaW9uIDMz
NTQ5KQorKysgSmF2YVNjcmlwdENvcmUva2pzL25vZGVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NDM3LDggKzQzNyw2IEBAIEJyZWFrcG9pbnRDaGVja1N0YXRlbWVudDo6QnJlYWtwb2ludENoZWMK
IAogSlNWYWx1ZSogQnJlYWtwb2ludENoZWNrU3RhdGVtZW50OjpleGVjdXRlKE9sZEludGVycHJl
dGVyRXhlY1N0YXRlKiBleGVjKQogewotICAgIGlmIChEZWJ1Z2dlciogZGVidWdnZXIgPSBleGVj
LT5keW5hbWljR2xvYmFsT2JqZWN0KCktPmRlYnVnZ2VyKCkpCi0gICAgICAgIGRlYnVnZ2VyLT5h
dFN0YXRlbWVudChleGVjLCBjdXJyZW50U291cmNlSWQoZXhlYyksIG1fc3RhdGVtZW50LT5maXJz
dExpbmUoKSwgbV9zdGF0ZW1lbnQtPmxhc3RMaW5lKCkpOwogICAgIHJldHVybiBtX3N0YXRlbWVu
dC0+ZXhlY3V0ZShleGVjKTsKIH0KIApAQCAtNjAyNiwxNyArNjAyNCw4IEBAIEZ1bmN0aW9uQm9k
eU5vZGVXaXRoRGVidWdnZXJIb29rczo6RnVuY3QKIAogSlNWYWx1ZSogRnVuY3Rpb25Cb2R5Tm9k
ZVdpdGhEZWJ1Z2dlckhvb2tzOjpleGVjdXRlKE9sZEludGVycHJldGVyRXhlY1N0YXRlKiBleGVj
KQogewotICAgIGlmIChEZWJ1Z2dlciogZGJnID0gZXhlYy0+ZHluYW1pY0dsb2JhbE9iamVjdCgp
LT5kZWJ1Z2dlcigpKQotICAgICAgICBkYmctPmNhbGxFdmVudChleGVjLCBzb3VyY2VJZCgpLCBs
aW5lTm8oKSwgZXhlYy0+ZnVuY3Rpb24oKSwgKmV4ZWMtPmFyZ3VtZW50cygpKTsKLQogICAgIEpT
VmFsdWUqIHJlc3VsdCA9IEZ1bmN0aW9uQm9keU5vZGU6OmV4ZWN1dGUoZXhlYyk7CiAKLSAgICBp
ZiAoRGVidWdnZXIqIGRiZyA9IGV4ZWMtPmR5bmFtaWNHbG9iYWxPYmplY3QoKS0+ZGVidWdnZXIo
KSkgewotICAgICAgICBpZiAoZXhlYy0+Y29tcGxldGlvblR5cGUoKSA9PSBUaHJvdykKLSAgICAg
ICAgICAgIGV4ZWMtPnNldEV4Y2VwdGlvbihyZXN1bHQpOwotICAgICAgICBkYmctPnJldHVybkV2
ZW50KGV4ZWMsIHNvdXJjZUlkKCksIGxhc3RMaW5lKCksIGV4ZWMtPmZ1bmN0aW9uKCkpOwotICAg
IH0KLQogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKSW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAzMzU1MCkKKysrIFdlYkNv
cmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsOSBAQAorMjAwOC0wNS0xNyAg
R2VvZmZyZXkgR2FyZW4gIDxnZ2FyZW5AYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVwZGF0ZWQgZm9yIEFQSSBjaGFuZ2VzIGluIEtK
Uzo6RGVidWdnZXIuCisKIDIwMDgtMDUtMTMgIEdlb2ZmcmV5IEdhcmVuICA8Z2dhcmVuQGFwcGxl
LmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBPbGl2ZXIgSHVudC4KSW5kZXg6IFdlYkNvcmUv
Rm9yd2FyZGluZ0hlYWRlcnMva2pzL0RlYnVnZ2VyQ2FsbEZyYW1lLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9ranMvRGVidWdnZXJDYWxsRnJhbWUuaAkocmV2aXNp
b24gMzM0ODEpCShmcm9tIFdlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMva2pzL3ZhbHVlLmg6MzM0
ODEpCisrKyBXZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL2tqcy9EZWJ1Z2dlckNhbGxGcmFtZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEgQEAKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS92
YWx1ZS5oPgpJbmRleDogV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9ranMvRGVidWdnZXJDYWxs
RnJhbWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL2tqcy9EZWJ1
Z2dlckNhbGxGcmFtZS5oCShyZXZpc2lvbiAzMzQ4MSkKKysrIFdlYkNvcmUvRm9yd2FyZGluZ0hl
YWRlcnMva2pzL0RlYnVnZ2VyQ2FsbEZyYW1lLmgJKHdvcmtpbmcgY29weSkKQEAgLTEgKzEgQEAK
LSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS92YWx1ZS5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRD
b3JlL0RlYnVnZ2VyQ2FsbEZyYW1lLmg+CkluZGV4OiBXZWJDb3JlL3BhZ2UvSW5zcGVjdG9yQ29u
dHJvbGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL0luc3BlY3RvckNvbnRyb2xs
ZXIuY3BwCShyZXZpc2lvbiAzMzU0OSkKKysrIFdlYkNvcmUvcGFnZS9JbnNwZWN0b3JDb250cm9s
bGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjAwMiwyNyArMjAwMiwyNyBAQCBib29sIEluc3Bl
Y3RvckNvbnRyb2xsZXI6OmhhbmRsZUV4Y2VwdGlvCiAjcHJhZ21hIG1hcmsgLQogI3ByYWdtYSBt
YXJrIEphdmFTY3JpcHREZWJ1Z0xpc3RlbmVyIGZ1bmN0aW9ucwogCi12b2lkIEluc3BlY3RvckNv
bnRyb2xsZXI6OmRpZFBhcnNlU291cmNlKEV4ZWNTdGF0ZSosIGNvbnN0IEtKUzo6U291cmNlUHJv
dmlkZXImIC8qc291cmNlKi8sIGludCAvKnN0YXJ0aW5nTGluZU51bWJlciovLCBjb25zdCBVU3Ry
aW5nJiAvKnNvdXJjZVVSTCovLCBpbnQgLypzb3VyY2VJRCovKQordm9pZCBJbnNwZWN0b3JDb250
cm9sbGVyOjpkaWRQYXJzZVNvdXJjZShFeGVjU3RhdGUqLCBjb25zdCBTb3VyY2VQcm92aWRlciYg
Lypzb3VyY2UqLywgaW50IC8qc3RhcnRpbmdMaW5lTnVtYmVyKi8sIGNvbnN0IFVTdHJpbmcmIC8q
c291cmNlVVJMKi8sIGludCAvKnNvdXJjZUlEKi8pCiB7CiB9CiAKLXZvaWQgSW5zcGVjdG9yQ29u
dHJvbGxlcjo6ZmFpbGVkVG9QYXJzZVNvdXJjZShFeGVjU3RhdGUqLCBjb25zdCBLSlM6OlNvdXJj
ZVByb3ZpZGVyJiAvKnNvdXJjZSovLCBpbnQgLypzdGFydGluZ0xpbmVOdW1iZXIqLywgY29uc3Qg
VVN0cmluZyYgLypzb3VyY2VVUkwqLywgaW50IC8qZXJyb3JMaW5lKi8sIGNvbnN0IFVTdHJpbmcm
IC8qZXJyb3JNZXNzYWdlKi8pCit2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OmZhaWxlZFRvUGFy
c2VTb3VyY2UoRXhlY1N0YXRlKiwgY29uc3QgU291cmNlUHJvdmlkZXImIC8qc291cmNlKi8sIGlu
dCAvKnN0YXJ0aW5nTGluZU51bWJlciovLCBjb25zdCBVU3RyaW5nJiAvKnNvdXJjZVVSTCovLCBp
bnQgLyplcnJvckxpbmUqLywgY29uc3QgVVN0cmluZyYgLyplcnJvck1lc3NhZ2UqLykKIHsKIH0K
IAotdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpkaWRFbnRlckNhbGxGcmFtZShFeGVjU3RhdGUq
LCBpbnQgLypzb3VyY2VJRCovLCBpbnQgLypsaW5lTnVtYmVyKi8pCit2b2lkIEluc3BlY3RvckNv
bnRyb2xsZXI6OmRpZEVudGVyQ2FsbEZyYW1lKGNvbnN0IERlYnVnZ2VyQ2FsbEZyYW1lJiwgaW50
IC8qc291cmNlSUQqLywgaW50IC8qbGluZU51bWJlciovKQogewogfQogCi12b2lkIEluc3BlY3Rv
ckNvbnRyb2xsZXI6OndpbGxFeGVjdXRlU3RhdGVtZW50KEV4ZWNTdGF0ZSosIGludCAvKnNvdXJj
ZUlEKi8sIGludCAvKmxpbmVOdW1iZXIqLykKK3ZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6d2ls
bEV4ZWN1dGVTdGF0ZW1lbnQoY29uc3QgRGVidWdnZXJDYWxsRnJhbWUmLCBpbnQgLypzb3VyY2VJ
RCovLCBpbnQgLypsaW5lTnVtYmVyKi8pCiB7CiB9CiAKLXZvaWQgSW5zcGVjdG9yQ29udHJvbGxl
cjo6d2lsbExlYXZlQ2FsbEZyYW1lKEV4ZWNTdGF0ZSosIGludCAvKnNvdXJjZUlEKi8sIGludCAv
KmxpbmVOdW1iZXIqLykKK3ZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6d2lsbExlYXZlQ2FsbEZy
YW1lKGNvbnN0IERlYnVnZ2VyQ2FsbEZyYW1lJiwgaW50IC8qc291cmNlSUQqLywgaW50IC8qbGlu
ZU51bWJlciovKQogewogfQogCi12b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OmV4Y2VwdGlvbldh
c1JhaXNlZChFeGVjU3RhdGUqLCBpbnQgLypzb3VyY2VJRCovLCBpbnQgLypsaW5lTnVtYmVyKi8p
Cit2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OmV4Y2VwdGlvbldhc1JhaXNlZChjb25zdCBEZWJ1
Z2dlckNhbGxGcmFtZSYsIGludCAvKnNvdXJjZUlEKi8sIGludCAvKmxpbmVOdW1iZXIqLykKIHsK
IH0KIApJbmRleDogV2ViQ29yZS9wYWdlL0luc3BlY3RvckNvbnRyb2xsZXIuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL3BhZ2UvSW5zcGVjdG9yQ29udHJvbGxlci5oCShyZXZpc2lvbiAzMzU0OSkK
KysrIFdlYkNvcmUvcGFnZS9JbnNwZWN0b3JDb250cm9sbGVyLmgJKHdvcmtpbmcgY29weSkKQEAg
LTE3MywxMCArMTczLDEwIEBAIHByaXZhdGU6CiAKICAgICB2aXJ0dWFsIHZvaWQgZGlkUGFyc2VT
b3VyY2UoS0pTOjpFeGVjU3RhdGUqLCBjb25zdCBLSlM6OlNvdXJjZVByb3ZpZGVyJiBzb3VyY2Us
IGludCBzdGFydGluZ0xpbmVOdW1iZXIsIGNvbnN0IEtKUzo6VVN0cmluZyYgc291cmNlVVJMLCBp
bnQgc291cmNlSUQpOwogICAgIHZpcnR1YWwgdm9pZCBmYWlsZWRUb1BhcnNlU291cmNlKEtKUzo6
RXhlY1N0YXRlKiwgY29uc3QgS0pTOjpTb3VyY2VQcm92aWRlciYgc291cmNlLCBpbnQgc3RhcnRp
bmdMaW5lTnVtYmVyLCBjb25zdCBLSlM6OlVTdHJpbmcmIHNvdXJjZVVSTCwgaW50IGVycm9yTGlu
ZSwgY29uc3QgS0pTOjpVU3RyaW5nJiBlcnJvck1lc3NhZ2UpOwotICAgIHZpcnR1YWwgdm9pZCBk
aWRFbnRlckNhbGxGcmFtZShLSlM6OkV4ZWNTdGF0ZSosIGludCBzb3VyY2VJRCwgaW50IGxpbmVO
dW1iZXIpOwotICAgIHZpcnR1YWwgdm9pZCB3aWxsRXhlY3V0ZVN0YXRlbWVudChLSlM6OkV4ZWNT
dGF0ZSosIGludCBzb3VyY2VJRCwgaW50IGxpbmVOdW1iZXIpOwotICAgIHZpcnR1YWwgdm9pZCB3
aWxsTGVhdmVDYWxsRnJhbWUoS0pTOjpFeGVjU3RhdGUqLCBpbnQgc291cmNlSUQsIGludCBsaW5l
TnVtYmVyKTsKLSAgICB2aXJ0dWFsIHZvaWQgZXhjZXB0aW9uV2FzUmFpc2VkKEtKUzo6RXhlY1N0
YXRlKiwgaW50IHNvdXJjZUlELCBpbnQgbGluZU51bWJlcik7CisgICAgdmlydHVhbCB2b2lkIGRp
ZEVudGVyQ2FsbEZyYW1lKGNvbnN0IEtKUzo6RGVidWdnZXJDYWxsRnJhbWUmLCBpbnQgc291cmNl
SUQsIGludCBsaW5lTnVtYmVyKTsKKyAgICB2aXJ0dWFsIHZvaWQgd2lsbEV4ZWN1dGVTdGF0ZW1l
bnQoY29uc3QgS0pTOjpEZWJ1Z2dlckNhbGxGcmFtZSYsIGludCBzb3VyY2VJRCwgaW50IGxpbmVO
dW1iZXIpOworICAgIHZpcnR1YWwgdm9pZCB3aWxsTGVhdmVDYWxsRnJhbWUoY29uc3QgS0pTOjpE
ZWJ1Z2dlckNhbGxGcmFtZSYsIGludCBzb3VyY2VJRCwgaW50IGxpbmVOdW1iZXIpOworICAgIHZp
cnR1YWwgdm9pZCBleGNlcHRpb25XYXNSYWlzZWQoY29uc3QgS0pTOjpEZWJ1Z2dlckNhbGxGcmFt
ZSYsIGludCBzb3VyY2VJRCwgaW50IGxpbmVOdW1iZXIpOwogCiAgICAgUGFnZSogbV9pbnNwZWN0
ZWRQYWdlOwogICAgIEluc3BlY3RvckNsaWVudCogbV9jbGllbnQ7CkluZGV4OiBXZWJDb3JlL3Bh
Z2UvSmF2YVNjcmlwdERlYnVnTGlzdGVuZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2Uv
SmF2YVNjcmlwdERlYnVnTGlzdGVuZXIuaAkocmV2aXNpb24gMzM1NDkpCisrKyBXZWJDb3JlL3Bh
Z2UvSmF2YVNjcmlwdERlYnVnTGlzdGVuZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzAsNiArMzAs
NyBAQAogI2RlZmluZSBKYXZhU2NyaXB0RGVidWdMaXN0ZW5lcl9oCiAKIG5hbWVzcGFjZSBLSlMg
eworICAgIGNsYXNzIERlYnVnZ2VyQ2FsbEZyYW1lOwogICAgIGNsYXNzIEV4ZWNTdGF0ZTsKICAg
ICBjbGFzcyBTb3VyY2VQcm92aWRlcjsKICAgICBjbGFzcyBVU3RyaW5nOwpAQCAtNDYsMTAgKzQ3
LDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkUGFy
c2VTb3VyY2UoS0pTOjpFeGVjU3RhdGUqLCBjb25zdCBLSlM6OlNvdXJjZVByb3ZpZGVyJiBzb3Vy
Y2UsIGludCBzdGFydGluZ0xpbmVOdW1iZXIsIGNvbnN0IEtKUzo6VVN0cmluZyYgc291cmNlVVJM
LCBpbnQgc291cmNlSUQpID0gMDsKICAgICAgICAgdmlydHVhbCB2b2lkIGZhaWxlZFRvUGFyc2VT
b3VyY2UoS0pTOjpFeGVjU3RhdGUqLCBjb25zdCBLSlM6OlNvdXJjZVByb3ZpZGVyJiBzb3VyY2Us
IGludCBzdGFydGluZ0xpbmVOdW1iZXIsIGNvbnN0IEtKUzo6VVN0cmluZyYgc291cmNlVVJMLCBp
bnQgZXJyb3JMaW5lLCBjb25zdCBLSlM6OlVTdHJpbmcmIGVycm9yTWVzc2FnZSkgPSAwOwotICAg
ICAgICB2aXJ0dWFsIHZvaWQgZGlkRW50ZXJDYWxsRnJhbWUoS0pTOjpFeGVjU3RhdGUqLCBpbnQg
c291cmNlSUQsIGludCBsaW5lTnVtYmVyKSA9IDA7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCB3aWxs
RXhlY3V0ZVN0YXRlbWVudChLSlM6OkV4ZWNTdGF0ZSosIGludCBzb3VyY2VJRCwgaW50IGxpbmVO
dW1iZXIpID0gMDsKLSAgICAgICAgdmlydHVhbCB2b2lkIHdpbGxMZWF2ZUNhbGxGcmFtZShLSlM6
OkV4ZWNTdGF0ZSosIGludCBzb3VyY2VJRCwgaW50IGxpbmVOdW1iZXIpID0gMDsKLSAgICAgICAg
dmlydHVhbCB2b2lkIGV4Y2VwdGlvbldhc1JhaXNlZChLSlM6OkV4ZWNTdGF0ZSosIGludCBzb3Vy
Y2VJRCwgaW50IGxpbmVOdW1iZXIpID0gMDsKKyAgICAgICAgdmlydHVhbCB2b2lkIGRpZEVudGVy
Q2FsbEZyYW1lKGNvbnN0IEtKUzo6RGVidWdnZXJDYWxsRnJhbWUmLCBpbnQgc291cmNlSUQsIGlu
dCBsaW5lTnVtYmVyKSA9IDA7CisgICAgICAgIHZpcnR1YWwgdm9pZCB3aWxsRXhlY3V0ZVN0YXRl
bWVudChjb25zdCBLSlM6OkRlYnVnZ2VyQ2FsbEZyYW1lJiwgaW50IHNvdXJjZUlELCBpbnQgbGlu
ZU51bWJlcikgPSAwOworICAgICAgICB2aXJ0dWFsIHZvaWQgd2lsbExlYXZlQ2FsbEZyYW1lKGNv
bnN0IEtKUzo6RGVidWdnZXJDYWxsRnJhbWUmLCBpbnQgc291cmNlSUQsIGludCBsaW5lTnVtYmVy
KSA9IDA7CisgICAgICAgIHZpcnR1YWwgdm9pZCBleGNlcHRpb25XYXNSYWlzZWQoY29uc3QgS0pT
OjpEZWJ1Z2dlckNhbGxGcmFtZSYsIGludCBzb3VyY2VJRCwgaW50IGxpbmVOdW1iZXIpID0gMDsK
ICAgICB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJDb3JlL3BhZ2UvSmF2
YVNjcmlwdERlYnVnU2VydmVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvSmF2YVNj
cmlwdERlYnVnU2VydmVyLmNwcAkocmV2aXNpb24gMzM1NDkpCisrKyBXZWJDb3JlL3BhZ2UvSmF2
YVNjcmlwdERlYnVnU2VydmVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQsNiArMzQsNyBAQAog
I2luY2x1ZGUgIkpTRE9NV2luZG93LmgiCiAjaW5jbHVkZSAiSmF2YVNjcmlwdERlYnVnTGlzdGVu
ZXIuaCIKICNpbmNsdWRlICJQYWdlLmgiCisjaW5jbHVkZSA8a2pzL0RlYnVnZ2VyQ2FsbEZyYW1l
Lmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBLSlM7CiAKQEAgLTEzMiwxMSArMTMzLDExIEBAIHN0YXRp
YyB2b2lkIGRpc3BhdGNoRmFpbGVkVG9QYXJzZVNvdXJjZSgKICAgICAgICAgY29weVtpXS0+ZmFp
bGVkVG9QYXJzZVNvdXJjZShleGVjLCBzb3VyY2UsIHN0YXJ0aW5nTGluZU51bWJlciwgc291cmNl
VVJMLCBlcnJvckxpbmUsIGVycm9yTWVzc2FnZSk7CiB9CiAKLXN0YXRpYyBQYWdlKiB0b1BhZ2Uo
RXhlY1N0YXRlKiBleGVjKQorc3RhdGljIFBhZ2UqIHRvUGFnZShKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0KQogewotICAgIEFTU0VSVF9BUkcoZXhlYywgZXhlYyk7CisgICAgQVNTRVJUX0FS
RyhnbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdCk7CiAKLSAgICBKU0RPTVdpbmRvdyogd2luZG93
ID0gYXNKU0RPTVdpbmRvdyhleGVjLT5keW5hbWljR2xvYmFsT2JqZWN0KCkpOworICAgIEpTRE9N
V2luZG93KiB3aW5kb3cgPSBhc0pTRE9NV2luZG93KGdsb2JhbE9iamVjdCk7CiAgICAgQVNTRVJU
KHdpbmRvdyk7CiAKICAgICByZXR1cm4gd2luZG93LT5pbXBsKCktPmZyYW1lKCktPnBhZ2UoKTsK
QEAgLTE0Nyw3ICsxNDgsNyBAQCB2b2lkIEphdmFTY3JpcHREZWJ1Z1NlcnZlcjo6c291cmNlUGFy
c2VkCiAgICAgaWYgKG1fY2FsbGluZ0xpc3RlbmVycykKICAgICAgICAgcmV0dXJuOwogCi0gICAg
UGFnZSogcGFnZSA9IHRvUGFnZShleGVjKTsKKyAgICBQYWdlKiBwYWdlID0gdG9QYWdlKGV4ZWMt
PmR5bmFtaWNHbG9iYWxPYmplY3QoKSk7CiAgICAgaWYgKCFwYWdlKQogICAgICAgICByZXR1cm47
CiAKQEAgLTE3NSwyMCArMTc2LDIwIEBAIHZvaWQgSmF2YVNjcmlwdERlYnVnU2VydmVyOjpzb3Vy
Y2VQYXJzZWQKICAgICBtX2NhbGxpbmdMaXN0ZW5lcnMgPSBmYWxzZTsKIH0KIAotc3RhdGljIHZv
aWQgZGlzcGF0Y2hGdW5jdGlvblRvTGlzdGVuZXJzKGNvbnN0IExpc3RlbmVyU2V0JiBsaXN0ZW5l
cnMsIEphdmFTY3JpcHREZWJ1Z1NlcnZlcjo6SmF2YVNjcmlwdEV4ZWN1dGlvbkNhbGxiYWNrIGNh
bGxiYWNrLCBFeGVjU3RhdGUqIGV4ZWMsIGludCBzb3VyY2VJRCwgaW50IGxpbmVOdW1iZXIpCitz
dGF0aWMgdm9pZCBkaXNwYXRjaEZ1bmN0aW9uVG9MaXN0ZW5lcnMoY29uc3QgTGlzdGVuZXJTZXQm
IGxpc3RlbmVycywgSmF2YVNjcmlwdERlYnVnU2VydmVyOjpKYXZhU2NyaXB0RXhlY3V0aW9uQ2Fs
bGJhY2sgY2FsbGJhY2ssIGNvbnN0IERlYnVnZ2VyQ2FsbEZyYW1lJiBkZWJ1Z2dlckNhbGxGcmFt
ZSwgaW50IHNvdXJjZUlELCBpbnQgbGluZU51bWJlcikKIHsKICAgICBWZWN0b3I8SmF2YVNjcmlw
dERlYnVnTGlzdGVuZXIqPiBjb3B5OwogICAgIGNvcHlUb1ZlY3RvcihsaXN0ZW5lcnMsIGNvcHkp
OwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY29weS5zaXplKCk7ICsraSkKLSAgICAgICAg
KGNvcHlbaV0tPipjYWxsYmFjaykoZXhlYywgc291cmNlSUQsIGxpbmVOdW1iZXIpOworICAgICAg
ICAoY29weVtpXS0+KmNhbGxiYWNrKShkZWJ1Z2dlckNhbGxGcmFtZSwgc291cmNlSUQsIGxpbmVO
dW1iZXIpOwogfQogCi12b2lkIEphdmFTY3JpcHREZWJ1Z1NlcnZlcjo6ZGlzcGF0Y2hGdW5jdGlv
blRvTGlzdGVuZXJzKEphdmFTY3JpcHRFeGVjdXRpb25DYWxsYmFjayBjYWxsYmFjaywgRXhlY1N0
YXRlKiBleGVjLCBpbnQgc291cmNlSUQsIGludCBsaW5lTnVtYmVyKQordm9pZCBKYXZhU2NyaXB0
RGVidWdTZXJ2ZXI6OmRpc3BhdGNoRnVuY3Rpb25Ub0xpc3RlbmVycyhKYXZhU2NyaXB0RXhlY3V0
aW9uQ2FsbGJhY2sgY2FsbGJhY2ssIGNvbnN0IERlYnVnZ2VyQ2FsbEZyYW1lJiBkZWJ1Z2dlckNh
bGxGcmFtZSwgaW50IHNvdXJjZUlELCBpbnQgbGluZU51bWJlcikKIHsKICAgICBpZiAobV9jYWxs
aW5nTGlzdGVuZXJzKQogICAgICAgICByZXR1cm47CiAKLSAgICBQYWdlKiBwYWdlID0gdG9QYWdl
KGV4ZWMpOworICAgIFBhZ2UqIHBhZ2UgPSB0b1BhZ2UoZGVidWdnZXJDYWxsRnJhbWUuc2NvcGVD
aGFpbigpLT5nbG9iYWxPYmplY3QoKSk7CiAgICAgaWYgKCFwYWdlKQogICAgICAgICByZXR1cm47
CiAKQEAgLTE5NiwzMyArMTk3LDMzIEBAIHZvaWQgSmF2YVNjcmlwdERlYnVnU2VydmVyOjpkaXNw
YXRjaEZ1bmMKIAogICAgIEFTU0VSVChoYXNMaXN0ZW5lcnMoKSk7CiAKLSAgICBXZWJDb3JlOjpk
aXNwYXRjaEZ1bmN0aW9uVG9MaXN0ZW5lcnMobV9saXN0ZW5lcnMsIGNhbGxiYWNrLCBleGVjLCBz
b3VyY2VJRCwgbGluZU51bWJlcik7CisgICAgV2ViQ29yZTo6ZGlzcGF0Y2hGdW5jdGlvblRvTGlz
dGVuZXJzKG1fbGlzdGVuZXJzLCBjYWxsYmFjaywgZGVidWdnZXJDYWxsRnJhbWUsIHNvdXJjZUlE
LCBsaW5lTnVtYmVyKTsKICAgICBpZiAoTGlzdGVuZXJTZXQqIHBhZ2VMaXN0ZW5lcnMgPSBtX3Bh
Z2VMaXN0ZW5lcnNNYXAuZ2V0KHBhZ2UpKSB7CiAgICAgICAgIEFTU0VSVCghcGFnZUxpc3RlbmVy
cy0+aXNFbXB0eSgpKTsKLSAgICAgICAgV2ViQ29yZTo6ZGlzcGF0Y2hGdW5jdGlvblRvTGlzdGVu
ZXJzKCpwYWdlTGlzdGVuZXJzLCBjYWxsYmFjaywgZXhlYywgc291cmNlSUQsIGxpbmVOdW1iZXIp
OworICAgICAgICBXZWJDb3JlOjpkaXNwYXRjaEZ1bmN0aW9uVG9MaXN0ZW5lcnMoKnBhZ2VMaXN0
ZW5lcnMsIGNhbGxiYWNrLCBkZWJ1Z2dlckNhbGxGcmFtZSwgc291cmNlSUQsIGxpbmVOdW1iZXIp
OwogICAgIH0KIAogICAgIG1fY2FsbGluZ0xpc3RlbmVycyA9IGZhbHNlOwogfQogCi12b2lkIEph
dmFTY3JpcHREZWJ1Z1NlcnZlcjo6Y2FsbEV2ZW50KEV4ZWNTdGF0ZSogZXhlYywgaW50IHNvdXJj
ZUlELCBpbnQgbGluZU51bWJlciwgSlNPYmplY3QqLCBjb25zdCBMaXN0JikKK3ZvaWQgSmF2YVNj
cmlwdERlYnVnU2VydmVyOjpjYWxsRXZlbnQoY29uc3QgRGVidWdnZXJDYWxsRnJhbWUmIGRlYnVn
Z2VyQ2FsbEZyYW1lLCBpbnQgc291cmNlSUQsIGludCBsaW5lTnVtYmVyKQogewotICAgIGRpc3Bh
dGNoRnVuY3Rpb25Ub0xpc3RlbmVycygmSmF2YVNjcmlwdERlYnVnTGlzdGVuZXI6OmRpZEVudGVy
Q2FsbEZyYW1lLCBleGVjLCBzb3VyY2VJRCwgbGluZU51bWJlcik7CisgICAgZGlzcGF0Y2hGdW5j
dGlvblRvTGlzdGVuZXJzKCZKYXZhU2NyaXB0RGVidWdMaXN0ZW5lcjo6ZGlkRW50ZXJDYWxsRnJh
bWUsIGRlYnVnZ2VyQ2FsbEZyYW1lLCBzb3VyY2VJRCwgbGluZU51bWJlcik7CiB9CiAKLXZvaWQg
SmF2YVNjcmlwdERlYnVnU2VydmVyOjphdFN0YXRlbWVudChFeGVjU3RhdGUqIGV4ZWMsIGludCBz
b3VyY2VJRCwgaW50IGZpcnN0TGluZSwgaW50KQordm9pZCBKYXZhU2NyaXB0RGVidWdTZXJ2ZXI6
OmF0U3RhdGVtZW50KGNvbnN0IERlYnVnZ2VyQ2FsbEZyYW1lJiBkZWJ1Z2dlckNhbGxGcmFtZSwg
aW50IHNvdXJjZUlELCBpbnQgbGluZU51bWJlcikKIHsKLSAgICBkaXNwYXRjaEZ1bmN0aW9uVG9M
aXN0ZW5lcnMoJkphdmFTY3JpcHREZWJ1Z0xpc3RlbmVyOjp3aWxsRXhlY3V0ZVN0YXRlbWVudCwg
ZXhlYywgc291cmNlSUQsIGZpcnN0TGluZSk7CisgICAgZGlzcGF0Y2hGdW5jdGlvblRvTGlzdGVu
ZXJzKCZKYXZhU2NyaXB0RGVidWdMaXN0ZW5lcjo6d2lsbEV4ZWN1dGVTdGF0ZW1lbnQsIGRlYnVn
Z2VyQ2FsbEZyYW1lLCBzb3VyY2VJRCwgbGluZU51bWJlcik7CiB9CiAKLXZvaWQgSmF2YVNjcmlw
dERlYnVnU2VydmVyOjpyZXR1cm5FdmVudChFeGVjU3RhdGUqIGV4ZWMsIGludCBzb3VyY2VJRCwg
aW50IGxpbmVOdW1iZXIsIEpTT2JqZWN0KikKK3ZvaWQgSmF2YVNjcmlwdERlYnVnU2VydmVyOjpy
ZXR1cm5FdmVudChjb25zdCBEZWJ1Z2dlckNhbGxGcmFtZSYgZGVidWdnZXJDYWxsRnJhbWUsIGlu
dCBzb3VyY2VJRCwgaW50IGxpbmVOdW1iZXIpCiB7Ci0gICAgZGlzcGF0Y2hGdW5jdGlvblRvTGlz
dGVuZXJzKCZKYXZhU2NyaXB0RGVidWdMaXN0ZW5lcjo6d2lsbExlYXZlQ2FsbEZyYW1lLCBleGVj
LCBzb3VyY2VJRCwgbGluZU51bWJlcik7CisgICAgZGlzcGF0Y2hGdW5jdGlvblRvTGlzdGVuZXJz
KCZKYXZhU2NyaXB0RGVidWdMaXN0ZW5lcjo6d2lsbExlYXZlQ2FsbEZyYW1lLCBkZWJ1Z2dlckNh
bGxGcmFtZSwgc291cmNlSUQsIGxpbmVOdW1iZXIpOwogfQogCi12b2lkIEphdmFTY3JpcHREZWJ1
Z1NlcnZlcjo6ZXhjZXB0aW9uKEV4ZWNTdGF0ZSogZXhlYywgaW50IHNvdXJjZUlELCBpbnQgbGlu
ZU51bWJlciwgSlNWYWx1ZSopCit2b2lkIEphdmFTY3JpcHREZWJ1Z1NlcnZlcjo6ZXhjZXB0aW9u
KGNvbnN0IERlYnVnZ2VyQ2FsbEZyYW1lJiBkZWJ1Z2dlckNhbGxGcmFtZSwgaW50IHNvdXJjZUlE
LCBpbnQgbGluZU51bWJlcikKIHsKLSAgICBkaXNwYXRjaEZ1bmN0aW9uVG9MaXN0ZW5lcnMoJkph
dmFTY3JpcHREZWJ1Z0xpc3RlbmVyOjpleGNlcHRpb25XYXNSYWlzZWQsIGV4ZWMsIHNvdXJjZUlE
LCBsaW5lTnVtYmVyKTsKKyAgICBkaXNwYXRjaEZ1bmN0aW9uVG9MaXN0ZW5lcnMoJkphdmFTY3Jp
cHREZWJ1Z0xpc3RlbmVyOjpleGNlcHRpb25XYXNSYWlzZWQsIGRlYnVnZ2VyQ2FsbEZyYW1lLCBz
b3VyY2VJRCwgbGluZU51bWJlcik7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6
IFdlYkNvcmUvcGFnZS9KYXZhU2NyaXB0RGVidWdTZXJ2ZXIuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL3BhZ2UvSmF2YVNjcmlwdERlYnVnU2VydmVyLmgJKHJldmlzaW9uIDMzNTQ5KQorKysgV2Vi
Q29yZS9wYWdlL0phdmFTY3JpcHREZWJ1Z1NlcnZlci5oCSh3b3JraW5nIGNvcHkpCkBAIC01Myw3
ICs1Myw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdm9pZCBwYWdlQ3JlYXRlZChQ
YWdlKik7CiAKICAgICAgICAgdHlwZWRlZiBIYXNoU2V0PEphdmFTY3JpcHREZWJ1Z0xpc3RlbmVy
Kj4gTGlzdGVuZXJTZXQ7Ci0gICAgICAgIHR5cGVkZWYgdm9pZCAoSmF2YVNjcmlwdERlYnVnTGlz
dGVuZXI6OipKYXZhU2NyaXB0RXhlY3V0aW9uQ2FsbGJhY2spKEtKUzo6RXhlY1N0YXRlKiwgaW50
IHNvdXJjZUlELCBpbnQgbGluZU51bWJlcik7CisgICAgICAgIHR5cGVkZWYgdm9pZCAoSmF2YVNj
cmlwdERlYnVnTGlzdGVuZXI6OipKYXZhU2NyaXB0RXhlY3V0aW9uQ2FsbGJhY2spKGNvbnN0IEtK
Uzo6RGVidWdnZXJDYWxsRnJhbWUmLCBpbnQgc291cmNlSUQsIGludCBsaW5lTnVtYmVyKTsKIAog
ICAgIHByaXZhdGU6CiAgICAgICAgIEphdmFTY3JpcHREZWJ1Z1NlcnZlcigpOwpAQCAtNjEsMTMg
KzYxLDEzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICBib29sIGhhc0xpc3RlbmVy
cygpIGNvbnN0IHsgcmV0dXJuICFtX2xpc3RlbmVycy5pc0VtcHR5KCkgfHwgIW1fcGFnZUxpc3Rl
bmVyc01hcC5pc0VtcHR5KCk7IH0KIAotICAgICAgICB2b2lkIGRpc3BhdGNoRnVuY3Rpb25Ub0xp
c3RlbmVycyhKYXZhU2NyaXB0RXhlY3V0aW9uQ2FsbGJhY2ssIEtKUzo6RXhlY1N0YXRlKiwgaW50
IHNvdXJjZUlELCBpbnQgbGluZU51bWJlcik7CisgICAgICAgIHZvaWQgZGlzcGF0Y2hGdW5jdGlv
blRvTGlzdGVuZXJzKEphdmFTY3JpcHRFeGVjdXRpb25DYWxsYmFjaywgY29uc3QgS0pTOjpEZWJ1
Z2dlckNhbGxGcmFtZSYsIGludCBzb3VyY2VJRCwgaW50IGxpbmVOdW1iZXIpOwogCiAgICAgICAg
IHZpcnR1YWwgdm9pZCBzb3VyY2VQYXJzZWQoS0pTOjpFeGVjU3RhdGUqLCBpbnQgc291cmNlSUQs
IGNvbnN0IEtKUzo6VVN0cmluZyYgc291cmNlVVJMLCBjb25zdCBLSlM6OlNvdXJjZVByb3ZpZGVy
JiBzb3VyY2UsIGludCBzdGFydGluZ0xpbmVOdW1iZXIsIGludCBlcnJvckxpbmUsIGNvbnN0IEtK
Uzo6VVN0cmluZyYgZXJyb3JNc2cpOwotICAgICAgICB2aXJ0dWFsIHZvaWQgY2FsbEV2ZW50KEtK
Uzo6RXhlY1N0YXRlKiwgaW50IHNvdXJjZUlELCBpbnQgbGluZU51bWJlciwgS0pTOjpKU09iamVj
dCogZnVuY3Rpb24sIGNvbnN0IEtKUzo6TGlzdCYgYXJncyk7Ci0gICAgICAgIHZpcnR1YWwgdm9p
ZCBhdFN0YXRlbWVudChLSlM6OkV4ZWNTdGF0ZSosIGludCBzb3VyY2VJRCwgaW50IGZpcnN0TGlu
ZSwgaW50IGxhc3RMaW5lKTsKLSAgICAgICAgdmlydHVhbCB2b2lkIHJldHVybkV2ZW50KEtKUzo6
RXhlY1N0YXRlKiwgaW50IHNvdXJjZUlELCBpbnQgbGluZU51bWJlciwgS0pTOjpKU09iamVjdCog
ZnVuY3Rpb24pOwotICAgICAgICB2aXJ0dWFsIHZvaWQgZXhjZXB0aW9uKEtKUzo6RXhlY1N0YXRl
KiwgaW50IHNvdXJjZUlELCBpbnQgbGluZU51bWJlciwgS0pTOjpKU1ZhbHVlKiBleGNlcHRpb24p
OworICAgICAgICB2aXJ0dWFsIHZvaWQgY2FsbEV2ZW50KGNvbnN0IEtKUzo6RGVidWdnZXJDYWxs
RnJhbWUmLCBpbnQgc291cmNlSUQsIGludCBsaW5lTnVtYmVyKTsKKyAgICAgICAgdmlydHVhbCB2
b2lkIGF0U3RhdGVtZW50KGNvbnN0IEtKUzo6RGVidWdnZXJDYWxsRnJhbWUmLCBpbnQgc291cmNl
SUQsIGludCBmaXJzdExpbmUpOworICAgICAgICB2aXJ0dWFsIHZvaWQgcmV0dXJuRXZlbnQoY29u
c3QgS0pTOjpEZWJ1Z2dlckNhbGxGcmFtZSYsIGludCBzb3VyY2VJRCwgaW50IGxpbmVOdW1iZXIp
OworICAgICAgICB2aXJ0dWFsIHZvaWQgZXhjZXB0aW9uKGNvbnN0IEtKUzo6RGVidWdnZXJDYWxs
RnJhbWUmLCBpbnQgc291cmNlSUQsIGludCBsaW5lTnVtYmVyKTsKIAogICAgICAgICB0eXBlZGVm
IEhhc2hNYXA8UGFnZSosIExpc3RlbmVyU2V0Kj4gUGFnZUxpc3RlbmVyc01hcDsKICAgICAgICAg
UGFnZUxpc3RlbmVyc01hcCBtX3BhZ2VMaXN0ZW5lcnNNYXA7CkluZGV4OiBXZWJLaXQvbWFjL0No
YW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvbWFjL0NoYW5nZUxvZwkocmV2aXNpb24gMzM1
NTApCisrKyBXZWJLaXQvbWFjL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI0
IEBACisyMDA4LTA1LTE3ICBHZW9mZnJleSBHYXJlbiAgPGdnYXJlbkBhcHBsZS5jb20+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisgICAgICAgIAorICAgICAgICBSZS1l
bmFibGVkIHByZXZpb3VzbHkgZGlzYWJsZWQgZGVidWdnaW5nIGZ1bmN0aW9uYWxpdHkuCisgICAg
ICAgIAorICAgICAgICBUaGVyZSBhcmUgdHdvIG1ham9yIGNoYW5nZXMgZnJvbSBob3cgdGhlIFdl
YktpdCBkZWJ1Z2dlciB1c2VkIHRvIHdvcms6CisgICAgICAgIAorICAgICAgICAoMSkgQWxsIHRo
ZSBpbnRlcmVzdGluZyBiaXRzIGFyZSBpbXBsZW1lbnRlZCBkb3duIGluIEphdmFTY3JpcHRDb3Jl
LiBUaGUKKyAgICAgICAgZGVidWdnZXIganVzdCBjYWxscyB0aHJvdWdoIHRvIEtKUzo6RGVidWdn
ZXJDYWxsRnJhbWUgZm9yIGV2ZXJ5dGhpbmcuCisgICAgICAgIAorICAgICAgICAoMikgSW5zdGVh
ZCBvZiBjb3B5aWhuZyBhIHBvaW50ZXIgdG8gYW4gRXhlY1N0YXRlIG9uY2UsIHRoZSBkZWJ1Z2dl
cgorICAgICAgICBjb3BpZXMgdGhlIERlYnVnZ2VyQ2FsbEZyYW1lIHBhc3NlZCB0byBpdCBpbiBl
YWNoIGNhbGxiYWNrLiBUaGlzIGlzCisgICAgICAgIGJlY2F1c2UgdGhlIFZNIG5vIGxvbmdlciBt
YWludGFpbnMgYSBmdWxseSB0cmFuc3BhcmVudCBleGVjdXRpb24gc3RhdGUKKyAgICAgICAgdG8g
d2hpY2ggeW91IGNhbiBob2xkIGEgcG9pbnRlciwgYW5kIHRoZSBEZWJ1Z2dlckNhbGxGcmFtZXMg
aXQgdmVuZHMKKyAgICAgICAgYXJlIHRlbXBvcmFyaWVzLgorICAgICAgICAKKyAgICAgICAgQWxz
bywgd2UgTlVMTCBvdXQgYSBXZWJTY3JpcHRDYWxsRnJhbWUncyBEZWJ1Z2dlckNhbGxGcmFtZSB1
cG9uIHJldHVybgorICAgICAgICBmcm9tIGl0cyBmdW5jdGlvbi4gVGhpcyBpcyBzYWZlciB0aGFu
IHRoZSBvbGQgbWV0aG9kLCB3aGljaCB3YXMgdG8KKyAgICAgICAgaG9sZCBhIHN0YWxlIEV4ZWNT
dGF0ZSogYW5kIGhvcGUgZm9yIHRoZSBiZXN0LgorCiAyMDA4LTA1LTEzICBHZW9mZnJleSBHYXJl
biAgPGdnYXJlbkBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgT2xpdmVyIEh1bnQu
CkluZGV4OiBXZWJLaXQvbWFjL0ZvcndhcmRpbmdIZWFkZXJzL2tqcy9EZWJ1Z2dlckNhbGxGcmFt
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9tYWMvRm9yd2FyZGluZ0hlYWRlcnMva2pzL0RlYnVn
Z2VyQ2FsbEZyYW1lLmgJKHJldmlzaW9uIDMzNDgxKQkoZnJvbSBXZWJLaXQvbWFjL0ZvcndhcmRp
bmdIZWFkZXJzL2tqcy9sb29rdXAuaDozMzQ4MSkKKysrIFdlYktpdC9tYWMvRm9yd2FyZGluZ0hl
YWRlcnMva2pzL0RlYnVnZ2VyQ2FsbEZyYW1lLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSBA
QAorI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvbG9va3VwLmg+CkluZGV4OiBXZWJLaXQvbWFjL0Zv
cndhcmRpbmdIZWFkZXJzL2tqcy9EZWJ1Z2dlckNhbGxGcmFtZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YktpdC9tYWMvRm9yd2FyZGluZ0hlYWRlcnMva2pzL0RlYnVnZ2VyQ2FsbEZyYW1lLmgJKHJldmlz
aW9uIDMzNDgxKQorKysgV2ViS2l0L21hYy9Gb3J3YXJkaW5nSGVhZGVycy9ranMvRGVidWdnZXJD
YWxsRnJhbWUuaAkod29ya2luZyBjb3B5KQpAQCAtMSArMSBAQAotI2ltcG9ydCA8SmF2YVNjcmlw
dENvcmUvbG9va3VwLmg+CisjaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9EZWJ1Z2dlckNhbGxGcmFt
ZS5oPgpJbmRleDogV2ViS2l0L21hYy9XZWJWaWV3L1dlYlNjcmlwdERlYnVnRGVsZWdhdGUubW0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViS2l0L21hYy9XZWJWaWV3L1dlYlNjcmlwdERlYnVnRGVsZWdhdGUu
bW0JKHJldmlzaW9uIDMzNTQ5KQorKysgV2ViS2l0L21hYy9XZWJWaWV3L1dlYlNjcmlwdERlYnVn
RGVsZWdhdGUubW0JKHdvcmtpbmcgY29weSkKQEAgLTMyLDYgKzMyLDcgQEAKICNpbXBvcnQgIldl
YkZyYW1lSW50ZXJuYWwuaCIKICNpbXBvcnQgIldlYlNjcmlwdERlYnVnU2VydmVyUHJpdmF0ZS5o
IgogI2ltcG9ydCAiV2ViVmlld0ludGVybmFsLmgiCisjaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9E
ZWJ1Z2dlckNhbGxGcmFtZS5oPgogI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvRXhlY1N0YXRlLmg+
CiAjaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9KU0dsb2JhbE9iamVjdC5oPgogI2ltcG9ydCA8SmF2
YVNjcmlwdENvcmUvZnVuY3Rpb24uaD4KQEAgLTU5LDcgKzYwLDcgQEAgTlNTdHJpbmcgKiBjb25z
dCBXZWJTY3JpcHRFcnJvckxpbmVOdW1iZQogQHB1YmxpYwogICAgIFdlYlNjcmlwdE9iamVjdCAg
ICAgICAgKmdsb2JhbE9iamVjdDsgICAvLyB0aGUgZ2xvYmFsIG9iamVjdCdzIHByb3h5IChub3Qg
cmV0YWluZWQpCiAgICAgV2ViU2NyaXB0Q2FsbEZyYW1lICAgICAqY2FsbGVyOyAgICAgICAgIC8v
IHByZXZpb3VzIHN0YWNrIGZyYW1lCi0gICAgS0pTOjpFeGVjU3RhdGUgICAgICAgICAqc3RhdGU7
CisgICAgRGVidWdnZXJDYWxsRnJhbWUqIGRlYnVnZ2VyQ2FsbEZyYW1lOwogfQogQGVuZAogCkBA
IC02Nyw2ICs2OCw3IEBAIE5TU3RyaW5nICogY29uc3QgV2ViU2NyaXB0RXJyb3JMaW5lTnVtYmUK
IC0gKHZvaWQpZGVhbGxvYwogewogICAgIFtjYWxsZXIgcmVsZWFzZV07CisgICAgZGVsZXRlIGRl
YnVnZ2VyQ2FsbEZyYW1lOwogICAgIFtzdXBlciBkZWFsbG9jXTsKIH0KIEBlbmQKQEAgLTgyLDE3
ICs4NCwyOCBAQCBOU1N0cmluZyAqIGNvbnN0IFdlYlNjcmlwdEVycm9yTGluZU51bWJlCiAKIEBp
bXBsZW1lbnRhdGlvbiBXZWJTY3JpcHRDYWxsRnJhbWUgKFdlYlNjcmlwdERlYnVnRGVsZWdhdGVJ
bnRlcm5hbCkKIAotLSAoV2ViU2NyaXB0Q2FsbEZyYW1lICopX2luaXRXaXRoR2xvYmFsT2JqZWN0
OihXZWJTY3JpcHRPYmplY3QgKilnbG9iYWxPYmogY2FsbGVyOihXZWJTY3JpcHRDYWxsRnJhbWUg
KiljYWxsZXIgc3RhdGU6KEV4ZWNTdGF0ZSAqKXN0YXRlCistIChXZWJTY3JpcHRDYWxsRnJhbWUg
KilfaW5pdFdpdGhHbG9iYWxPYmplY3Q6KFdlYlNjcmlwdE9iamVjdCAqKWdsb2JhbE9iaiBjYWxs
ZXI6KFdlYlNjcmlwdENhbGxGcmFtZSAqKWNhbGxlciBkZWJ1Z2dlckNhbGxGcmFtZTooY29uc3Qg
RGVidWdnZXJDYWxsRnJhbWUmKWRlYnVnZ2VyQ2FsbEZyYW1lCiB7CiAgICAgaWYgKChzZWxmID0g
W3N1cGVyIGluaXRdKSkgewogICAgICAgICBfcHJpdmF0ZSA9IFtbV2ViU2NyaXB0Q2FsbEZyYW1l
UHJpdmF0ZSBhbGxvY10gaW5pdF07CiAgICAgICAgIF9wcml2YXRlLT5nbG9iYWxPYmplY3QgPSBn
bG9iYWxPYmo7CiAgICAgICAgIF9wcml2YXRlLT5jYWxsZXIgPSBbY2FsbGVyIHJldGFpbl07Ci0g
ICAgICAgIF9wcml2YXRlLT5zdGF0ZSA9IHN0YXRlOworICAgICAgICBfcHJpdmF0ZS0+ZGVidWdn
ZXJDYWxsRnJhbWUgPSBuZXcgRGVidWdnZXJDYWxsRnJhbWUoZGVidWdnZXJDYWxsRnJhbWUpOwog
ICAgIH0KICAgICByZXR1cm4gc2VsZjsKIH0KIAorLSAodm9pZClfc2V0RGVidWdnZXJDYWxsRnJh
bWU6KGNvbnN0IERlYnVnZ2VyQ2FsbEZyYW1lJilkZWJ1Z2dlckNhbGxGcmFtZQoreworICAgICpf
cHJpdmF0ZS0+ZGVidWdnZXJDYWxsRnJhbWUgPSBkZWJ1Z2dlckNhbGxGcmFtZTsKK30KKworLSAo
dm9pZClfY2xlYXJEZWJ1Z2dlckNhbGxGcmFtZQoreworICAgIGRlbGV0ZSBfcHJpdmF0ZS0+ZGVi
dWdnZXJDYWxsRnJhbWU7CisgICAgX3ByaXZhdGUtPmRlYnVnZ2VyQ2FsbEZyYW1lID0gMDsKK30K
KwogLSAoaWQpX2NvbnZlcnRWYWx1ZVRvT2JqY1ZhbHVlOihKU1ZhbHVlICopdmFsdWUKIHsKICAg
ICBpZiAoIXZhbHVlKQpAQCAtMTUxLDIyICsxNjQsMTkgQEAgTlNTdHJpbmcgKiBjb25zdCBXZWJT
Y3JpcHRFcnJvckxpbmVOdW1iZQogCiAtIChOU0FycmF5ICopc2NvcGVDaGFpbgogewotI2lmIDAK
LSAgICBFeGVjU3RhdGUqIHN0YXRlID0gX3ByaXZhdGUtPnN0YXRlOwotICAgIGlmICghc3RhdGUt
PnNjb3BlTm9kZSgpKSAgLy8gZ2xvYmFsIGZyYW1lCisgICAgY29uc3QgU2NvcGVDaGFpbk5vZGUq
IHNjb3BlQ2hhaW4gPSBfcHJpdmF0ZS0+ZGVidWdnZXJDYWxsRnJhbWUtPnNjb3BlQ2hhaW4oKTsK
KyAgICBpZiAoIXNjb3BlQ2hhaW4tPm5leHQpICAvLyBnbG9iYWwgZnJhbWUKICAgICAgICAgcmV0
dXJuIFtOU0FycmF5IGFycmF5V2l0aE9iamVjdDpfcHJpdmF0ZS0+Z2xvYmFsT2JqZWN0XTsKIAog
ICAgIE5TTXV0YWJsZUFycmF5ICpzY29wZXMgPSBbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0
XTsKIAotICAgIFNjb3BlQ2hhaW5JdGVyYXRvciBlbmQgPSBzdGF0ZS0+c2NvcGVDaGFpbigpLmVu
ZCgpOwotICAgIGZvciAoU2NvcGVDaGFpbkl0ZXJhdG9yIGl0ID0gc3RhdGUtPnNjb3BlQ2hhaW4o
KS5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpCisgICAgU2NvcGVDaGFpbkl0ZXJhdG9yIGVuZCA9
IHNjb3BlQ2hhaW4tPmVuZCgpOworICAgIGZvciAoU2NvcGVDaGFpbkl0ZXJhdG9yIGl0ID0gc2Nv
cGVDaGFpbi0+YmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KQogICAgICAgICBbc2NvcGVzIGFkZE9i
amVjdDpbc2VsZiBfY29udmVydFZhbHVlVG9PYmpjVmFsdWU6KCppdCldXTsKIAogICAgIE5TQXJy
YXkgKnJlc3VsdCA9IFtOU0FycmF5IGFycmF5V2l0aEFycmF5OnNjb3Blc107CiAgICAgW3Njb3Bl
cyByZWxlYXNlXTsKICAgICByZXR1cm4gcmVzdWx0OwotI2VuZGlmCi0gICAgcmV0dXJuIFtOU0Fy
cmF5IGFycmF5XTsKIH0KIAogLy8gUmV0dXJucyB0aGUgbmFtZSBvZiB0aGUgZnVuY3Rpb24gZm9y
IHRoaXMgZnJhbWUsIGlmIGF2YWlsYWJsZS4KQEAgLTE3NCwyOSArMTg0LDE2IEBAIE5TU3RyaW5n
ICogY29uc3QgV2ViU2NyaXB0RXJyb3JMaW5lTnVtYmUKIAogLSAoTlNTdHJpbmcgKilmdW5jdGlv
bk5hbWUKIHsKLSNpZiAwCi0gICAgRXhlY1N0YXRlKiBzdGF0ZSA9IF9wcml2YXRlLT5zdGF0ZTsK
LSAgICBpZiAoIXN0YXRlLT5zY29wZU5vZGUoKSkKLSAgICAgICAgcmV0dXJuIG5pbDsKLQotICAg
IEZ1bmN0aW9uSW1wKiBmdW5jID0gc3RhdGUtPmZ1bmN0aW9uKCk7Ci0gICAgaWYgKCFmdW5jKQot
ICAgICAgICByZXR1cm4gbmlsOwotCi0gICAgSWRlbnRpZmllciBmbiA9IGZ1bmMtPmZ1bmN0aW9u
TmFtZSgpOwotICAgIHJldHVybiB0b05TU3RyaW5nKGZuLnVzdHJpbmcoKSk7Ci0jZW5kaWYKLSAg
ICByZXR1cm4gbmlsOworICAgIGNvbnN0IFVTdHJpbmcqIGZ1bmN0aW9uTmFtZSA9IF9wcml2YXRl
LT5kZWJ1Z2dlckNhbGxGcmFtZS0+ZnVuY3Rpb25OYW1lKCk7CisgICAgcmV0dXJuIGZ1bmN0aW9u
TmFtZSA/IHRvTlNTdHJpbmcoKmZ1bmN0aW9uTmFtZSkgOiBuaWw7CiB9CiAKIC8vIFJldHVybnMg
dGhlIHBlbmRpbmcgZXhjZXB0aW9uIGZvciB0aGlzIGZyYW1lIChuaWwgaWYgbm9uZSkuCiAKIC0g
KGlkKWV4Y2VwdGlvbgogewotICAgIEV4ZWNTdGF0ZSogc3RhdGUgPSBfcHJpdmF0ZS0+c3RhdGU7
Ci0gICAgaWYgKCFzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpCi0gICAgICAgIHJldHVybiBuaWw7Ci0g
ICAgcmV0dXJuIFtzZWxmIF9jb252ZXJ0VmFsdWVUb09iamNWYWx1ZTpzdGF0ZS0+ZXhjZXB0aW9u
KCldOworICAgIEpTVmFsdWUqIGV4Y2VwdGlvbiA9IF9wcml2YXRlLT5kZWJ1Z2dlckNhbGxGcmFt
ZS0+ZXhjZXB0aW9uKCk7CisgICAgcmV0dXJuIGV4Y2VwdGlvbiA/IFtzZWxmIF9jb252ZXJ0VmFs
dWVUb09iamNWYWx1ZTpleGNlcHRpb25dIDogbmlsOwogfQogCiAvLyBFdmFsdWF0ZSBzb21lIEph
dmFTY3JpcHQgY29kZSBpbiB0aGUgY29udGV4dCBvZiB0aGlzIGZyYW1lLgpAQCAtMjA1LDUwICsy
MDIsMTAgQEAgTlNTdHJpbmcgKiBjb25zdCBXZWJTY3JpcHRFcnJvckxpbmVOdW1iZQogLy8gQ2Fs
bGluZyB0aGlzIG1ldGhvZCBvbiB0aGUgZ2xvYmFsIGZyYW1lIGlzIG5vdCBxdWl0ZSB0aGUgc2Ft
ZSBhcyBjYWxsaW5nIHRoZSBXZWJTY3JpcHRPYmplY3QKIC8vIG1ldGhvZCBvZiB0aGUgc2FtZSBu
YW1lLCBkdWUgdG8gdGhlIHRyZWF0bWVudCBvZiBleGNlcHRpb25zLgogCi0vLyBGSVhNRTogSWYg
InNjcmlwdCIgY29udGFpbnMgdmFyIGRlY2xhcmF0aW9ucywgdGhlIG1hY2hpbmVyeSB0byBoYW5k
bGUgbG9jYWwgdmFyaWFibGVzCi0vLyBlZmZpY2llbnRseSBpbiBKYXZhU2NyaXB0Q29yZSB3aWxs
IG5vdCB3b3JrIHByb3Blcmx5LiBUaGlzIGNvdWxkIGxlYWQgdG8gY3Jhc2hlcyBvcgotLy8gaW5j
b3JyZWN0IHZhcmlhYmxlIHZhbHVlcy4gU28gdGhpcyBpcyBub3QgYXBwcm9wcmlhdGUgZm9yIGV2
YWx1YXRpbmcgYXJiaXRyYXJ5IHNjcmlwdC4KIC0gKGlkKWV2YWx1YXRlV2ViU2NyaXB0OihOU1N0
cmluZyAqKXNjcmlwdAogewotI2lmIDAKLSAgICBKU0xvY2sgbG9jazsKLQotICAgIFVTdHJpbmcg
Y29kZSA9IFN0cmluZyhzY3JpcHQpOwotCi0gICAgRXhlY1N0YXRlKiBzdGF0ZSA9IF9wcml2YXRl
LT5zdGF0ZTsKLSAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gc3RhdGUtPmR5bmFt
aWNHbG9iYWxPYmplY3QoKTsKLQotICAgIC8vIGZpbmQgImV2YWwiCi0gICAgSlNPYmplY3QqIGV2
YWwgPSBOVUxMOwotICAgIGlmIChzdGF0ZS0+c2NvcGVOb2RlKCkpIHsgIC8vICJldmFsIiB3b24n
dCB3b3JrIHdpdGhvdXQgY29udGV4dCAoaS5lLiBhdCBnbG9iYWwgc2NvcGUpCi0gICAgICAgIEpT
VmFsdWUqIHYgPSBnbG9iYWxPYmplY3QtPmdldChzdGF0ZSwgImV2YWwiKTsKLSAgICAgICAgaWYg
KHYtPmlzT2JqZWN0KCkgJiYgc3RhdGljX2Nhc3Q8SlNPYmplY3QqPih2KS0+aW1wbGVtZW50c0Nh
bGwoKSkKLSAgICAgICAgICAgIGV2YWwgPSBzdGF0aWNfY2FzdDxKU09iamVjdCo+KHYpOwotICAg
ICAgICBlbHNlCi0gICAgICAgICAgICAvLyBubyAiZXZhbCIgLSBmYWxsYmFjayBvcGVyYXRlcyBv
biBnbG9iYWwgZXhlYyBzdGF0ZQotICAgICAgICAgICAgc3RhdGUgPSBnbG9iYWxPYmplY3QtPmds
b2JhbEV4ZWMoKTsKLSAgICB9Ci0KLSAgICBKU1ZhbHVlKiBzYXZlZEV4Y2VwdGlvbiA9IHN0YXRl
LT5leGNlcHRpb24oKTsKLSAgICBzdGF0ZS0+Y2xlYXJFeGNlcHRpb24oKTsKLQotICAgIC8vIGV2
YWx1YXRlCi0gICAgSlNWYWx1ZSogcmVzdWx0OwotICAgIGlmIChldmFsKSB7Ci0gICAgICAgIExp
c3QgYXJnczsKLSAgICAgICAgYXJncy5hcHBlbmQoanNTdHJpbmcoY29kZSkpOwotICAgICAgICBy
ZXN1bHQgPSBldmFsLT5jYWxsKHN0YXRlLCAwLCBhcmdzKTsKLSAgICB9IGVsc2UKLSAgICAgICAg
Ly8gbm8gImV2YWwiLCBvciBubyBjb250ZXh0IChpLmUuIGdsb2JhbCBzY29wZSkgLSB1c2UgZ2xv
YmFsIGZhbGxiYWNrCi0gICAgICAgIHJlc3VsdCA9IEludGVycHJldGVyOjpldmFsdWF0ZShzdGF0
ZSwgVVN0cmluZygpLCAwLCBjb2RlLmRhdGEoKSwgY29kZS5zaXplKCksIGdsb2JhbE9iamVjdCku
dmFsdWUoKTsKLQotICAgIGlmIChzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpCi0gICAgICAgIHJlc3Vs
dCA9IHN0YXRlLT5leGNlcHRpb24oKTsgICAgLy8gKG1heSBiZSByZWR1bmRhbnQgZGVwZW5kaW5n
IG9uIHdoaWNoIGV2YWwgcGF0aCB3YXMgdXNlZCkKLSAgICBzdGF0ZS0+c2V0RXhjZXB0aW9uKHNh
dmVkRXhjZXB0aW9uKTsKLQotICAgIHJldHVybiBbc2VsZiBfY29udmVydFZhbHVlVG9PYmpjVmFs
dWU6cmVzdWx0XTsKLSNlbmRpZgotICAgIHJldHVybiBuaWw7CisgICAgSlNWYWx1ZSogcmVzdWx0
ID0gX3ByaXZhdGUtPmRlYnVnZ2VyQ2FsbEZyYW1lLT5ldmFsdWF0ZVNjcmlwdChTdHJpbmcoc2Ny
aXB0KSk7CisgICAgcmV0dXJuIHJlc3VsdCA/IFtzZWxmIF9jb252ZXJ0VmFsdWVUb09iamNWYWx1
ZTpyZXN1bHRdIDogbmlsOwogfQogCiBAZW5kCkluZGV4OiBXZWJLaXQvbWFjL1dlYlZpZXcvV2Vi
U2NyaXB0RGVidWdnZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvbWFjL1dlYlZpZXcvV2ViU2Ny
aXB0RGVidWdnZXIuaAkocmV2aXNpb24gMzM1NDkpCisrKyBXZWJLaXQvbWFjL1dlYlZpZXcvV2Vi
U2NyaXB0RGVidWdnZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1
ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KIAogbmFtZXNwYWNlIEtKUyB7CisgICAgY2xhc3MgRGVidWdn
ZXJDYWxsRnJhbWU7CiAgICAgY2xhc3MgRXhlY1N0YXRlOwogICAgIGNsYXNzIEpTR2xvYmFsT2Jq
ZWN0OwogICAgIGNsYXNzIEpTT2JqZWN0OwpAQCAtNTEsMTAgKzUyLDEwIEBAIHB1YmxpYzoKICAg
ICBXZWJTY3JpcHREZWJ1Z2dlcihLSlM6OkpTR2xvYmFsT2JqZWN0Kik7CiAKICAgICB2aXJ0dWFs
IHZvaWQgc291cmNlUGFyc2VkKEtKUzo6RXhlY1N0YXRlKiwgaW50IHNvdXJjZUlELCBjb25zdCBL
SlM6OlVTdHJpbmcmIHNvdXJjZVVSTCwgY29uc3QgS0pTOjpTb3VyY2VQcm92aWRlciYgc291cmNl
LCBpbnQgbGluZU51bWJlciwgaW50IGVycm9yTGluZSwgY29uc3QgS0pTOjpVU3RyaW5nJiBlcnJv
ck1zZyk7Ci0gICAgdmlydHVhbCB2b2lkIGNhbGxFdmVudChLSlM6OkV4ZWNTdGF0ZSosIGludCBz
b3VyY2VJRCwgaW50IGxpbmVOdW1iZXIsIEtKUzo6SlNPYmplY3QqIGZ1bmN0aW9uLCBjb25zdCBL
SlM6Okxpc3QmIGFyZ3MpOwotICAgIHZpcnR1YWwgdm9pZCBhdFN0YXRlbWVudChLSlM6OkV4ZWNT
dGF0ZSosIGludCBzb3VyY2VJRCwgaW50IGZpcnN0TGluZSwgaW50IGxhc3RMaW5lKTsKLSAgICB2
aXJ0dWFsIHZvaWQgcmV0dXJuRXZlbnQoS0pTOjpFeGVjU3RhdGUqLCBpbnQgc291cmNlSUQsIGlu
dCBsaW5lTnVtYmVyLCBLSlM6OkpTT2JqZWN0KiBmdW5jdGlvbik7Ci0gICAgdmlydHVhbCB2b2lk
IGV4Y2VwdGlvbihLSlM6OkV4ZWNTdGF0ZSosIGludCBzb3VyY2VJRCwgaW50IGxpbmVOdW1iZXIs
IEtKUzo6SlNWYWx1ZSogZXhjZXB0aW9uKTsKKyAgICB2aXJ0dWFsIHZvaWQgY2FsbEV2ZW50KGNv
bnN0IEtKUzo6RGVidWdnZXJDYWxsRnJhbWUmLCBpbnQgc291cmNlSUQsIGludCBsaW5lTnVtYmVy
KTsKKyAgICB2aXJ0dWFsIHZvaWQgYXRTdGF0ZW1lbnQoY29uc3QgS0pTOjpEZWJ1Z2dlckNhbGxG
cmFtZSYsIGludCBzb3VyY2VJRCwgaW50IGxpbmVOdW1iZXIpOworICAgIHZpcnR1YWwgdm9pZCBy
ZXR1cm5FdmVudChjb25zdCBLSlM6OkRlYnVnZ2VyQ2FsbEZyYW1lJiwgaW50IHNvdXJjZUlELCBp
bnQgbGluZU51bWJlcik7CisgICAgdmlydHVhbCB2b2lkIGV4Y2VwdGlvbihjb25zdCBLSlM6OkRl
YnVnZ2VyQ2FsbEZyYW1lJiwgaW50IHNvdXJjZUlELCBpbnQgbGluZU51bWJlcik7CiAKIHByaXZh
dGU6CiAgICAgYm9vbCBtX2NhbGxpbmdEZWxlZ2F0ZTsKSW5kZXg6IFdlYktpdC9tYWMvV2ViVmll
dy9XZWJTY3JpcHREZWJ1Z2dlci5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvbWFjL1dlYlZpZXcv
V2ViU2NyaXB0RGVidWdnZXIubW0JKHJldmlzaW9uIDMzNTQ5KQorKysgV2ViS2l0L21hYy9XZWJW
aWV3L1dlYlNjcmlwdERlYnVnZ2VyLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw2ICszMiw3IEBA
CiAjaW5jbHVkZSAiV2ViVmlld0ludGVybmFsLmgiCiAjaW5jbHVkZSAiV2ViU2NyaXB0RGVidWdT
ZXJ2ZXJQcml2YXRlLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNHbG9iYWxPYmplY3Qu
aD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9EZWJ1Z2dlckNhbGxGcmFtZS5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvRE9NV2luZG93Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9GcmFtZS5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvSlNET01XaW5kb3cuaD4KQEAgLTQxLDkgKzQyLDkgQEAgdXNpbmcgbmFt
ZXNwYWNlIEtKUzsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBAaW50ZXJmYWNlIFdlYlNj
cmlwdENhbGxGcmFtZSAoV2ViU2NyaXB0RGVidWdEZWxlZ2F0ZUludGVybmFsKQotCi0tIChXZWJT
Y3JpcHRDYWxsRnJhbWUgKilfaW5pdFdpdGhHbG9iYWxPYmplY3Q6KFdlYlNjcmlwdE9iamVjdCAq
KWdsb2JhbE9iaiBjYWxsZXI6KFdlYlNjcmlwdENhbGxGcmFtZSAqKWNhbGxlciBzdGF0ZTooRXhl
Y1N0YXRlICopc3RhdGU7Ci0KKy0gKFdlYlNjcmlwdENhbGxGcmFtZSAqKV9pbml0V2l0aEdsb2Jh
bE9iamVjdDooV2ViU2NyaXB0T2JqZWN0ICopZ2xvYmFsT2JqIGNhbGxlcjooV2ViU2NyaXB0Q2Fs
bEZyYW1lICopY2FsbGVyIGRlYnVnZ2VyQ2FsbEZyYW1lOihjb25zdCBEZWJ1Z2dlckNhbGxGcmFt
ZSYpZGVidWdnZXJDYWxsRnJhbWU7CistICh2b2lkKV9zZXREZWJ1Z2dlckNhbGxGcmFtZTooY29u
c3QgRGVidWdnZXJDYWxsRnJhbWUmKWRlYnVnZ2VyQ2FsbEZyYW1lOworLSAodm9pZClfY2xlYXJE
ZWJ1Z2dlckNhbGxGcmFtZTsKIEBlbmQKIAogTlNTdHJpbmcgKnRvTlNTdHJpbmcoY29uc3QgVVN0
cmluZyYgcykKQEAgLTUzLDcgKzU0LDcgQEAgTlNTdHJpbmcgKnRvTlNTdHJpbmcoY29uc3QgVVN0
cmluZyYgcykKICAgICByZXR1cm4gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOnJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgdW5pY2hhcio+KHMuZGF0YSgpKSBsZW5ndGg6cy5zaXplKCldOwog
fQogCi1OU1N0cmluZyAqdG9OU1N0cmluZyhjb25zdCBLSlM6OlNvdXJjZVByb3ZpZGVyJiBzKQor
TlNTdHJpbmcgKnRvTlNTdHJpbmcoY29uc3QgU291cmNlUHJvdmlkZXImIHMpCiB7CiAgICAgaWYg
KCFzLmxlbmd0aCgpKQogICAgICAgICByZXR1cm4gbmlsOwpAQCAtNjgsOSArNjksOSBAQCBzdGF0
aWMgTlNVUkwgKnRvTlNVUkwoY29uc3QgVVN0cmluZyYgcykKICAgICByZXR1cm4gS1VSTChzKTsK
IH0KIAotc3RhdGljIFdlYkZyYW1lICp0b1dlYkZyYW1lKEV4ZWNTdGF0ZSogc3RhdGUpCitzdGF0
aWMgV2ViRnJhbWUgKnRvV2ViRnJhbWUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKIHsK
LSAgICBKU0RPTVdpbmRvdyogd2luZG93ID0gc3RhdGljX2Nhc3Q8SlNET01XaW5kb3cqPihzdGF0
ZS0+ZHluYW1pY0dsb2JhbE9iamVjdCgpKTsKKyAgICBKU0RPTVdpbmRvdyogd2luZG93ID0gc3Rh
dGljX2Nhc3Q8SlNET01XaW5kb3cqPihnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBraXQod2lu
ZG93LT5pbXBsKCktPmZyYW1lKCkpOwogfQogCkBAIC03OCwxMiArNzksMTIgQEAgV2ViU2NyaXB0
RGVidWdnZXI6OldlYlNjcmlwdERlYnVnZ2VyKEpTRwogICAgIDogbV9jYWxsaW5nRGVsZWdhdGUo
ZmFsc2UpCiB7CiAgICAgYXR0YWNoKGdsb2JhbE9iamVjdCk7Ci0gICAgTGlzdCBlbXB0eUxpc3Q7
Ci0gICAgY2FsbEV2ZW50KGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpLCAtMSwgLTEsIDAsIGVt
cHR5TGlzdCk7CisgICAgRGVidWdnZXJDYWxsRnJhbWUgZ2xvYmFsQ2FsbEZyYW1lKGdsb2JhbE9i
amVjdC0+Z2xvYmFsRXhlYygpLT5tYWNoaW5lKCksIDAsIGdsb2JhbE9iamVjdC0+Z2xvYmFsU2Nv
cGVDaGFpbigpLm5vZGUoKSwgMCwgMCwgMCk7CisgICAgY2FsbEV2ZW50KGdsb2JhbENhbGxGcmFt
ZSwgMCwgLTEpOwogfQogCiAvLyBjYWxsYmFja3MgLSByZWxheSB0byBkZWxlZ2F0ZQotdm9pZCBX
ZWJTY3JpcHREZWJ1Z2dlcjo6c291cmNlUGFyc2VkKEV4ZWNTdGF0ZSogc3RhdGUsIGludCBzb3Vy
Y2VJRCwgY29uc3QgVVN0cmluZyYgdXJsLCBjb25zdCBLSlM6OlNvdXJjZVByb3ZpZGVyJiBzb3Vy
Y2UsIGludCBsaW5lTnVtYmVyLCBpbnQgZXJyb3JMaW5lLCBjb25zdCBVU3RyaW5nJiBlcnJvck1z
ZykKK3ZvaWQgV2ViU2NyaXB0RGVidWdnZXI6OnNvdXJjZVBhcnNlZChFeGVjU3RhdGUqIGV4ZWMs
IGludCBzb3VyY2VJRCwgY29uc3QgVVN0cmluZyYgdXJsLCBjb25zdCBTb3VyY2VQcm92aWRlciYg
c291cmNlLCBpbnQgbGluZU51bWJlciwgaW50IGVycm9yTGluZSwgY29uc3QgVVN0cmluZyYgZXJy
b3JNc2cpCiB7CiAgICAgaWYgKG1fY2FsbGluZ0RlbGVnYXRlKQogICAgICAgICByZXR1cm47CkBA
IC05Myw3ICs5NCw3IEBAIHZvaWQgV2ViU2NyaXB0RGVidWdnZXI6OnNvdXJjZVBhcnNlZChFeGUK
ICAgICBOU1N0cmluZyAqbnNTb3VyY2UgPSB0b05TU3RyaW5nKHNvdXJjZSk7CiAgICAgTlNVUkwg
Km5zVVJMID0gdG9OU1VSTCh1cmwpOwogCi0gICAgV2ViRnJhbWUgKndlYkZyYW1lID0gdG9XZWJG
cmFtZShzdGF0ZSk7CisgICAgV2ViRnJhbWUgKndlYkZyYW1lID0gdG9XZWJGcmFtZShleGVjLT5k
eW5hbWljR2xvYmFsT2JqZWN0KCkpOwogICAgIFdlYlZpZXcgKndlYlZpZXcgPSBbd2ViRnJhbWUg
d2ViVmlld107CiAgICAgaWYgKGVycm9yTGluZSA9PSAtMSkgewogICAgICAgICBbW3dlYlZpZXcg
X3NjcmlwdERlYnVnRGVsZWdhdGVGb3J3YXJkZXJdIHdlYlZpZXc6d2ViVmlldyBkaWRQYXJzZVNv
dXJjZTpuc1NvdXJjZSBiYXNlTGluZU51bWJlcjpsaW5lTnVtYmVyIGZyb21VUkw6bnNVUkwgc291
cmNlSWQ6c291cmNlSUQgZm9yV2ViRnJhbWU6d2ViRnJhbWVdOwpAQCAtMTE0LDE2ICsxMTUsMTYg
QEAgdm9pZCBXZWJTY3JpcHREZWJ1Z2dlcjo6c291cmNlUGFyc2VkKEV4ZQogICAgIG1fY2FsbGlu
Z0RlbGVnYXRlID0gZmFsc2U7CiB9CiAKLXZvaWQgV2ViU2NyaXB0RGVidWdnZXI6OmNhbGxFdmVu
dChFeGVjU3RhdGUqIHN0YXRlLCBpbnQgc291cmNlSUQsIGludCBsaW5lTnVtYmVyLCBKU09iamVj
dCosIGNvbnN0IExpc3QmKQordm9pZCBXZWJTY3JpcHREZWJ1Z2dlcjo6Y2FsbEV2ZW50KGNvbnN0
IERlYnVnZ2VyQ2FsbEZyYW1lJiBkZWJ1Z2dlckNhbGxGcmFtZSwgaW50IHNvdXJjZUlELCBpbnQg
bGluZU51bWJlcikKIHsKICAgICBpZiAobV9jYWxsaW5nRGVsZWdhdGUpCiAgICAgICAgIHJldHVy
bjsKIAogICAgIG1fY2FsbGluZ0RlbGVnYXRlID0gdHJ1ZTsKIAotICAgIFdlYkZyYW1lICp3ZWJG
cmFtZSA9IHRvV2ViRnJhbWUoc3RhdGUpOworICAgIFdlYkZyYW1lICp3ZWJGcmFtZSA9IHRvV2Vi
RnJhbWUoZGVidWdnZXJDYWxsRnJhbWUuc2NvcGVDaGFpbigpLT5nbG9iYWxPYmplY3QoKSk7CiAK
LSAgICBtX3RvcENhbGxGcmFtZS5hZG9wdE5TKFtbV2ViU2NyaXB0Q2FsbEZyYW1lIGFsbG9jXSBf
aW5pdFdpdGhHbG9iYWxPYmplY3Q6Y29yZSh3ZWJGcmFtZSktPndpbmRvd1NjcmlwdE9iamVjdCgp
IGNhbGxlcjptX3RvcENhbGxGcmFtZS5nZXQoKSBzdGF0ZTpzdGF0ZV0pOworICAgIG1fdG9wQ2Fs
bEZyYW1lLmFkb3B0TlMoW1tXZWJTY3JpcHRDYWxsRnJhbWUgYWxsb2NdIF9pbml0V2l0aEdsb2Jh
bE9iamVjdDpjb3JlKHdlYkZyYW1lKS0+d2luZG93U2NyaXB0T2JqZWN0KCkgY2FsbGVyOm1fdG9w
Q2FsbEZyYW1lLmdldCgpIGRlYnVnZ2VyQ2FsbEZyYW1lOmRlYnVnZ2VyQ2FsbEZyYW1lXSk7CiAK
ICAgICBXZWJWaWV3ICp3ZWJWaWV3ID0gW3dlYkZyYW1lIHdlYlZpZXddOwogICAgIFtbd2ViVmll
dyBfc2NyaXB0RGVidWdEZWxlZ2F0ZUZvcndhcmRlcl0gd2ViVmlldzp3ZWJWaWV3IGRpZEVudGVy
Q2FsbEZyYW1lOm1fdG9wQ2FsbEZyYW1lLmdldCgpIHNvdXJjZUlkOnNvdXJjZUlEIGxpbmU6bGlu
ZU51bWJlciBmb3JXZWJGcmFtZTp3ZWJGcmFtZV07CkBAIC0xMzMsMTUgKzEzNCwxNyBAQCB2b2lk
IFdlYlNjcmlwdERlYnVnZ2VyOjpjYWxsRXZlbnQoRXhlY1N0CiAgICAgbV9jYWxsaW5nRGVsZWdh
dGUgPSBmYWxzZTsKIH0KIAotdm9pZCBXZWJTY3JpcHREZWJ1Z2dlcjo6YXRTdGF0ZW1lbnQoRXhl
Y1N0YXRlKiBzdGF0ZSwgaW50IHNvdXJjZUlELCBpbnQgbGluZU51bWJlciwgaW50KQordm9pZCBX
ZWJTY3JpcHREZWJ1Z2dlcjo6YXRTdGF0ZW1lbnQoY29uc3QgRGVidWdnZXJDYWxsRnJhbWUmIGRl
YnVnZ2VyQ2FsbEZyYW1lLCBpbnQgc291cmNlSUQsIGludCBsaW5lTnVtYmVyKQogewogICAgIGlm
IChtX2NhbGxpbmdEZWxlZ2F0ZSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9jYWxsaW5nRGVs
ZWdhdGUgPSB0cnVlOwogCi0gICAgV2ViRnJhbWUgKndlYkZyYW1lID0gdG9XZWJGcmFtZShzdGF0
ZSk7CisgICAgV2ViRnJhbWUgKndlYkZyYW1lID0gdG9XZWJGcmFtZShkZWJ1Z2dlckNhbGxGcmFt
ZS5zY29wZUNoYWluKCktPmdsb2JhbE9iamVjdCgpKTsKICAgICBXZWJWaWV3ICp3ZWJWaWV3ID0g
W3dlYkZyYW1lIHdlYlZpZXddOworCisgICAgW21fdG9wQ2FsbEZyYW1lLmdldCgpIF9zZXREZWJ1
Z2dlckNhbGxGcmFtZTpkZWJ1Z2dlckNhbGxGcmFtZV07CiAgICAgW1t3ZWJWaWV3IF9zY3JpcHRE
ZWJ1Z0RlbGVnYXRlRm9yd2FyZGVyXSB3ZWJWaWV3OndlYlZpZXcgd2lsbEV4ZWN1dGVTdGF0ZW1l
bnQ6bV90b3BDYWxsRnJhbWUuZ2V0KCkgc291cmNlSWQ6c291cmNlSUQgbGluZTpsaW5lTnVtYmVy
IGZvcldlYkZyYW1lOndlYkZyYW1lXTsKICAgICBpZiAoW1dlYlNjcmlwdERlYnVnU2VydmVyIGxp
c3RlbmVyQ291bnRdKQogICAgICAgICBbW1dlYlNjcmlwdERlYnVnU2VydmVyIHNoYXJlZFNjcmlw
dERlYnVnU2VydmVyXSB3ZWJWaWV3OndlYlZpZXcgd2lsbEV4ZWN1dGVTdGF0ZW1lbnQ6bV90b3BD
YWxsRnJhbWUuZ2V0KCkgc291cmNlSWQ6c291cmNlSUQgbGluZTpsaW5lTnVtYmVyIGZvcldlYkZy
YW1lOndlYkZyYW1lXTsKQEAgLTE0OSwzMyArMTUyLDM4IEBAIHZvaWQgV2ViU2NyaXB0RGVidWdn
ZXI6OmF0U3RhdGVtZW50KEV4ZWMKICAgICBtX2NhbGxpbmdEZWxlZ2F0ZSA9IGZhbHNlOwogfQog
Ci12b2lkIFdlYlNjcmlwdERlYnVnZ2VyOjpyZXR1cm5FdmVudChFeGVjU3RhdGUqIHN0YXRlLCBp
bnQgc291cmNlSUQsIGludCBsaW5lTnVtYmVyLCBKU09iamVjdCopCit2b2lkIFdlYlNjcmlwdERl
YnVnZ2VyOjpyZXR1cm5FdmVudChjb25zdCBEZWJ1Z2dlckNhbGxGcmFtZSYgZGVidWdnZXJDYWxs
RnJhbWUsIGludCBzb3VyY2VJRCwgaW50IGxpbmVOdW1iZXIpCiB7CiAgICAgaWYgKG1fY2FsbGlu
Z0RlbGVnYXRlKQogICAgICAgICByZXR1cm47CiAKICAgICBtX2NhbGxpbmdEZWxlZ2F0ZSA9IHRy
dWU7CiAKLSAgICBXZWJGcmFtZSAqd2ViRnJhbWUgPSB0b1dlYkZyYW1lKHN0YXRlKTsKKyAgICBX
ZWJGcmFtZSAqd2ViRnJhbWUgPSB0b1dlYkZyYW1lKGRlYnVnZ2VyQ2FsbEZyYW1lLnNjb3BlQ2hh
aW4oKS0+Z2xvYmFsT2JqZWN0KCkpOwogICAgIFdlYlZpZXcgKndlYlZpZXcgPSBbd2ViRnJhbWUg
d2ViVmlld107CisKKyAgICBbbV90b3BDYWxsRnJhbWUuZ2V0KCkgX3NldERlYnVnZ2VyQ2FsbEZy
YW1lOmRlYnVnZ2VyQ2FsbEZyYW1lXTsKICAgICBbW3dlYlZpZXcgX3NjcmlwdERlYnVnRGVsZWdh
dGVGb3J3YXJkZXJdIHdlYlZpZXc6d2ViVmlldyB3aWxsTGVhdmVDYWxsRnJhbWU6bV90b3BDYWxs
RnJhbWUuZ2V0KCkgc291cmNlSWQ6c291cmNlSUQgbGluZTpsaW5lTnVtYmVyIGZvcldlYkZyYW1l
OndlYkZyYW1lXTsKICAgICBpZiAoW1dlYlNjcmlwdERlYnVnU2VydmVyIGxpc3RlbmVyQ291bnRd
KQogICAgICAgICBbW1dlYlNjcmlwdERlYnVnU2VydmVyIHNoYXJlZFNjcmlwdERlYnVnU2VydmVy
XSB3ZWJWaWV3OndlYlZpZXcgd2lsbExlYXZlQ2FsbEZyYW1lOm1fdG9wQ2FsbEZyYW1lLmdldCgp
IHNvdXJjZUlkOnNvdXJjZUlEIGxpbmU6bGluZU51bWJlciBmb3JXZWJGcmFtZTp3ZWJGcmFtZV07
CiAKKyAgICBbbV90b3BDYWxsRnJhbWUuZ2V0KCkgX2NsZWFyRGVidWdnZXJDYWxsRnJhbWVdOwog
ICAgIG1fdG9wQ2FsbEZyYW1lID0gW21fdG9wQ2FsbEZyYW1lLmdldCgpIGNhbGxlcl07CiAKICAg
ICBtX2NhbGxpbmdEZWxlZ2F0ZSA9IGZhbHNlOwogfQogCi12b2lkIFdlYlNjcmlwdERlYnVnZ2Vy
OjpleGNlcHRpb24oRXhlY1N0YXRlKiBzdGF0ZSwgaW50IHNvdXJjZUlELCBpbnQgbGluZU51bWJl
ciwgSlNWYWx1ZSopCit2b2lkIFdlYlNjcmlwdERlYnVnZ2VyOjpleGNlcHRpb24oY29uc3QgRGVi
dWdnZXJDYWxsRnJhbWUmIGRlYnVnZ2VyQ2FsbEZyYW1lLCBpbnQgc291cmNlSUQsIGludCBsaW5l
TnVtYmVyKQogewogICAgIGlmIChtX2NhbGxpbmdEZWxlZ2F0ZSkKICAgICAgICAgcmV0dXJuOwog
CiAgICAgbV9jYWxsaW5nRGVsZWdhdGUgPSB0cnVlOwogCi0gICAgV2ViRnJhbWUgKndlYkZyYW1l
ID0gdG9XZWJGcmFtZShzdGF0ZSk7CisgICAgV2ViRnJhbWUgKndlYkZyYW1lID0gdG9XZWJGcmFt
ZShkZWJ1Z2dlckNhbGxGcmFtZS5zY29wZUNoYWluKCktPmdsb2JhbE9iamVjdCgpKTsKICAgICBX
ZWJWaWV3ICp3ZWJWaWV3ID0gW3dlYkZyYW1lIHdlYlZpZXddOworICAgIFttX3RvcENhbGxGcmFt
ZS5nZXQoKSBfc2V0RGVidWdnZXJDYWxsRnJhbWU6ZGVidWdnZXJDYWxsRnJhbWVdOworCiAgICAg
W1t3ZWJWaWV3IF9zY3JpcHREZWJ1Z0RlbGVnYXRlRm9yd2FyZGVyXSB3ZWJWaWV3OndlYlZpZXcg
ZXhjZXB0aW9uV2FzUmFpc2VkOm1fdG9wQ2FsbEZyYW1lLmdldCgpIHNvdXJjZUlkOnNvdXJjZUlE
IGxpbmU6bGluZU51bWJlciBmb3JXZWJGcmFtZTp3ZWJGcmFtZV07CiAgICAgaWYgKFtXZWJTY3Jp
cHREZWJ1Z1NlcnZlciBsaXN0ZW5lckNvdW50XSkKICAgICAgICAgW1tXZWJTY3JpcHREZWJ1Z1Nl
cnZlciBzaGFyZWRTY3JpcHREZWJ1Z1NlcnZlcl0gd2ViVmlldzp3ZWJWaWV3IGV4Y2VwdGlvbldh
c1JhaXNlZDptX3RvcENhbGxGcmFtZS5nZXQoKSBzb3VyY2VJZDpzb3VyY2VJRCBsaW5lOmxpbmVO
dW1iZXIgZm9yV2ViRnJhbWU6d2ViRnJhbWVdOwo=
</data>
<flag name="review"
          id="9267"
          type_id="1"
          status="+"
          setter="oliver"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>21219</attachid>
            <date>2008-05-18 00:41:26 -0700</date>
            <delta_ts>2008-05-18 00:44:23 -0700</delta_ts>
            <desc>missing files from original patch</desc>
            <filename>patch-missing-files.txt</filename>
            <type>text/plain</type>
            <size>6581</size>
            <attacher name="Geoffrey Garen">ggaren</attacher>
            
              <data encoding="base64">SW5kZXg6IGtqcy9EZWJ1Z2dlckNhbGxGcmFtZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0ga2pzL0RlYnVn
Z2VyQ2FsbEZyYW1lLmNwcAkocmV2aXNpb24gMCkKKysrIGtqcy9EZWJ1Z2dlckNhbGxGcmFtZS5j
cHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsODYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MDggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICog
My4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5v
ciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVu
ZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3
YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFT
IElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJEZWJ1Z2dlckNhbGxGcmFtZS5oIgorCisjaW5jbHVkZSAiZnVuY3Rpb24uaCIKKyNp
bmNsdWRlICJDb2RlQmxvY2suaCIKKyNpbmNsdWRlICJNYWNoaW5lLmgiCisjaW5jbHVkZSAiUGFy
c2VyLmgiCisKK25hbWVzcGFjZSBLSlMgeworCitjb25zdCBVU3RyaW5nKiBEZWJ1Z2dlckNhbGxG
cmFtZTo6ZnVuY3Rpb25OYW1lKCkKK3sKKyAgICBpZiAoIW1fY29kZUJsb2NrKQorICAgICAgICBy
ZXR1cm4gMDsKKworICAgIGludCBjYWxsRnJhbWVPZmZzZXQgPSBtX3JlZ2lzdGVyT2Zmc2V0IC0g
bV9jb2RlQmxvY2stPm51bUxvY2FscyAtIE1hY2hpbmU6OkNhbGxGcmFtZUhlYWRlclNpemU7Cisg
ICAgaWYgKGNhbGxGcmFtZU9mZnNldCA8IDApCisgICAgICAgIHJldHVybiAwOworCisgICAgUmVn
aXN0ZXIqIGNhbGxGcmFtZSA9ICptX3JlZ2lzdGVyQmFzZSArIGNhbGxGcmFtZU9mZnNldDsKKyAg
ICBGdW5jdGlvbkltcCogZnVuY3Rpb24gPSBzdGF0aWNfY2FzdDxGdW5jdGlvbkltcCo+KGNhbGxG
cmFtZVtNYWNoaW5lOjpDYWxsZWVdLnUuanNWYWx1ZSk7CisgICAgaWYgKCFmdW5jdGlvbikKKyAg
ICAgICAgcmV0dXJuIDA7CisgICAgcmV0dXJuICZmdW5jdGlvbi0+ZnVuY3Rpb25OYW1lKCkudXN0
cmluZygpOworfQorCitKU09iamVjdCogRGVidWdnZXJDYWxsRnJhbWU6OnRoaXNPYmplY3QoKSBj
b25zdAoreworICAgIGlmICghbV9jb2RlQmxvY2spCisgICAgICAgIHJldHVybiAwOworCisgICAg
cmV0dXJuIHN0YXRpY19jYXN0PEpTT2JqZWN0Kj4oKCptX3JlZ2lzdGVyQmFzZSArIG1fcmVnaXN0
ZXJPZmZzZXQpW21fY29kZUJsb2NrLT50aGlzUmVnaXN0ZXJdLnUuanNWYWx1ZSk7Cit9CisKK0pT
VmFsdWUqIERlYnVnZ2VyQ2FsbEZyYW1lOjpldmFsdWF0ZVNjcmlwdChjb25zdCBVU3RyaW5nJiBz
Y3JpcHQpCit7CisgICAgSlNMb2NrIGxvY2s7CisgICAgSlNPYmplY3QqIHRoaXNPYmplY3QgPSB0
aGlzLT50aGlzT2JqZWN0KCk7CisgICAgaWYgKCF0aGlzT2JqZWN0KQorICAgICAgICByZXR1cm4g
MDsKKworICAgIEV4ZWNTdGF0ZSBuZXdFeGVjKG1fc2NvcGVDaGFpbi0+Z2xvYmFsT2JqZWN0KCks
IHRoaXNPYmplY3QsIG1fc2NvcGVDaGFpbik7CisKKyAgICBpbnQgc291cmNlSWQ7CisgICAgaW50
IGVyckxpbmU7CisgICAgVVN0cmluZyBlcnJNc2c7CisKKyAgICBSZWZQdHI8RXZhbE5vZGU+IGV2
YWxOb2RlID0gcGFyc2VyKCkucGFyc2U8RXZhbE5vZGU+KCZuZXdFeGVjLCBVU3RyaW5nKCksIDAs
IFVTdHJpbmdTb3VyY2VQcm92aWRlcjo6Y3JlYXRlKHNjcmlwdCksICZzb3VyY2VJZCwgJmVyckxp
bmUsICZlcnJNc2cpOworCisgICAgaWYgKCFldmFsTm9kZSkKKyAgICAgICAgcmV0dXJuIEVycm9y
OjpjcmVhdGUoJm5ld0V4ZWMsIFN5bnRheEVycm9yLCBlcnJNc2csIGVyckxpbmUsIHNvdXJjZUlk
LCAwKTsKKworICAgIEpTVmFsdWUqIGV4Y2VwdGlvbiA9IDA7CisgICAgSlNWYWx1ZSogcmVzdWx0
ID0gbWFjaGluZSgpLmV4ZWN1dGUoZXZhbE5vZGUuZ2V0KCksICZuZXdFeGVjLCB0aGlzT2JqZWN0
LCAmbmV3RXhlYy5keW5hbWljR2xvYmFsT2JqZWN0KCktPnJlZ2lzdGVyRmlsZVN0YWNrKCksIG1f
c2NvcGVDaGFpbiwgJmV4Y2VwdGlvbik7CisgICAgcmV0dXJuIGV4Y2VwdGlvbiA/IGV4Y2VwdGlv
biA6IHJlc3VsdDsKK30KKworfSAvLyBuYW1lc3BhY2UgS0pTCkluZGV4OiBranMvRGVidWdnZXJD
YWxsRnJhbWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBranMvRGVidWdnZXJDYWxsRnJhbWUuaAkocmV2aXNp
b24gMCkKKysrIGtqcy9EZWJ1Z2dlckNhbGxGcmFtZS5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDcxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFw
cGxlIENvbXB1dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRz
IGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMg
ZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9y
IHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworIAorI2lmbmRlZiBEZWJ1Z2dlckNhbGxGcmFtZV9oCisjZGVmaW5lIERlYnVnZ2VyQ2Fs
bEZyYW1lX2gKKworbmFtZXNwYWNlIEtKUyB7CisgICAgCisgICAgY2xhc3MgQ29kZUJsb2NrOwor
ICAgIGNsYXNzIEpTT2JqZWN0OworICAgIGNsYXNzIEpTVmFsdWU7CisgICAgY2xhc3MgTWFjaGlu
ZTsKKyAgICBjbGFzcyBVU3RyaW5nOworICAgIGNsYXNzIFJlZ2lzdGVyOworICAgIGNsYXNzIFNj
b3BlQ2hhaW5Ob2RlOworICAgIAorICAgIGNsYXNzIERlYnVnZ2VyQ2FsbEZyYW1lIHsKKyAgICBw
dWJsaWM6CisgICAgICAgIERlYnVnZ2VyQ2FsbEZyYW1lKE1hY2hpbmUqIG1hY2hpbmUsIGNvbnN0
IENvZGVCbG9jayogY29kZUJsb2NrLCBTY29wZUNoYWluTm9kZSogc2NvcGVDaGFpbiwgSlNWYWx1
ZSogZXhjZXB0aW9uLCBSZWdpc3RlcioqIHJlZ2lzdGVyQmFzZSwgaW50IHJlZ2lzdGVyT2Zmc2V0
KQorICAgICAgICAgICAgOiBtX21hY2hpbmUobWFjaGluZSkKKyAgICAgICAgICAgICwgbV9jb2Rl
QmxvY2soY29kZUJsb2NrKQorICAgICAgICAgICAgLCBtX3Njb3BlQ2hhaW4oc2NvcGVDaGFpbikK
KyAgICAgICAgICAgICwgbV9leGNlcHRpb24oZXhjZXB0aW9uKQorICAgICAgICAgICAgLCBtX3Jl
Z2lzdGVyQmFzZShyZWdpc3RlckJhc2UpCisgICAgICAgICAgICAsIG1fcmVnaXN0ZXJPZmZzZXQo
cmVnaXN0ZXJPZmZzZXQpCisgICAgICAgIHsKKyAgICAgICAgfQorCisgICAgICAgIGNvbnN0IFNj
b3BlQ2hhaW5Ob2RlKiBzY29wZUNoYWluKCkgY29uc3QgeyByZXR1cm4gbV9zY29wZUNoYWluOyB9
CisgICAgICAgIGNvbnN0IFVTdHJpbmcqIGZ1bmN0aW9uTmFtZSgpOworICAgICAgICBKU09iamVj
dCogdGhpc09iamVjdCgpIGNvbnN0OworICAgICAgICBKU1ZhbHVlKiBldmFsdWF0ZVNjcmlwdChj
b25zdCBVU3RyaW5nJik7CisgICAgICAgIEpTVmFsdWUqIGV4Y2VwdGlvbigpIGNvbnN0IHsgcmV0
dXJuIG1fZXhjZXB0aW9uOyB9CisgICAgICAgIAorICAgIHByaXZhdGU6CisgICAgICAgIE1hY2hp
bmUqIG1fbWFjaGluZTsKKyAgICAgICAgY29uc3QgQ29kZUJsb2NrKiBtX2NvZGVCbG9jazsKKyAg
ICAgICAgU2NvcGVDaGFpbk5vZGUqIG1fc2NvcGVDaGFpbjsKKyAgICAgICAgSlNWYWx1ZSogbV9l
eGNlcHRpb247CisgICAgICAgIFJlZ2lzdGVyKiogbV9yZWdpc3RlckJhc2U7CisgICAgICAgIGlu
dCBtX3JlZ2lzdGVyT2Zmc2V0OworICAgIH07CisKK30gLy8gbmFtZXNwYWNlIEtKUworCisjZW5k
aWYgLy8gRGVidWdnZXJDYWxsRnJhbWVfaAo=
</data>
<flag name="review"
          id="9273"
          type_id="1"
          status="+"
          setter="oliver"
    />
          </attachment>
      

    </bug>

</bugzilla>