<?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>58996</bug_id>
          
          <creation_ts>2011-04-20 08:47:56 -0700</creation_ts>
          <short_desc>Web Inspector: [protocol] Paused event should expose exception value that caused it</short_desc>
          <delta_ts>2011-04-27 02:53:36 -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>Web Inspector (Deprecated)</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>59591</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Peter Rybin">peter.rybin</reporter>
          <assigned_to name="Yury Semikhatsky">yurys</assigned_to>
          <cc>abarth</cc>
    
    <cc>apavlov</cc>
    
    <cc>buildbot</cc>
    
    <cc>bweinstein</cc>
    
    <cc>eric</cc>
    
    <cc>joepeck</cc>
    
    <cc>keishi</cc>
    
    <cc>loislo</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>rik</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>389255</commentid>
    <comment_count>0</comment_count>
    <who name="Peter Rybin">peter.rybin</who>
    <bug_when>2011-04-20 08:47:56 -0700</bug_when>
    <thetext>The protocol allows &quot;pause on exception&quot; mode. When this is enabled, JavaScript VM pauses on exception being thrown and WebKit sends &quot;Paused&quot; event.

However there is no information about exception being thrown.

The protocol should give full access to the exception value (with its properties, type etc).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>392440</commentid>
    <comment_count>1</comment_count>
      <attachid>91102</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2011-04-26 07:35:25 -0700</bug_when>
    <thetext>Created attachment 91102
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>392461</commentid>
    <comment_count>2</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2011-04-26 07:56:23 -0700</bug_when>
    <thetext>Attachment 91102 did not build on win:
Build output: http://queues.webkit.org/results/8510611</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>392493</commentid>
    <comment_count>3</comment_count>
      <attachid>91112</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2011-04-26 08:41:52 -0700</bug_when>
    <thetext>Created attachment 91112
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>392494</commentid>
    <comment_count>4</comment_count>
      <attachid>91113</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2011-04-26 08:44:35 -0700</bug_when>
    <thetext>Created attachment 91113
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>392503</commentid>
    <comment_count>5</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2011-04-26 09:20:55 -0700</bug_when>
    <thetext>Attachment 91113 did not build on win:
Build output: http://queues.webkit.org/results/8509671</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>393417</commentid>
    <comment_count>6</comment_count>
      <attachid>91246</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2011-04-27 00:39:49 -0700</bug_when>
    <thetext>Created attachment 91246
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>393436</commentid>
    <comment_count>7</comment_count>
      <attachid>91246</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2011-04-27 01:28:33 -0700</bug_when>
    <thetext>Comment on attachment 91246
Patch

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

&gt; Source/WebCore/bindings/v8/ScriptDebugServer.cpp:221
&gt; +        contextScope.set(new v8::Context::Scope(v8::Debug::GetDebugContext()));

Poor merge?

&gt; Source/WebCore/bindings/v8/ScriptDebugServer.cpp:341
&gt; +                if (!exceptionGetterValue.IsEmpty() &amp;&amp; exceptionGetterValue-&gt;IsFunction()) {

Could you put ASSERT here?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>393443</commentid>
    <comment_count>8</comment_count>
      <attachid>91255</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2011-04-27 01:42:46 -0700</bug_when>
    <thetext>Created attachment 91255
Patch for landing

All comments have been addressed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>393446</commentid>
    <comment_count>9</comment_count>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2011-04-27 01:55:42 -0700</bug_when>
    <thetext>Committed r85035: &lt;http://trac.webkit.org/changeset/85035&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>393452</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-04-27 02:25:26 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/85035 might have broken Chromium Linux Release</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>91102</attachid>
            <date>2011-04-26 07:35:25 -0700</date>
            <delta_ts>2011-04-26 08:41:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-58996-20110426183523.patch</filename>
            <type>text/plain</type>
            <size>31051</size>
            <attacher name="Yury Semikhatsky">yurys</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODQ4OTcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA2ZTNkOTM2MTBjYTM0N2Mz
ZGI1M2VhMDNkNjM2YmM1ZDRlODA0OWU1Li4zYzE2NzkyNjk1NTA1ZTNkOGRjNTk5ODMxMDVkYjY2
MWUyZjlmYjI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTMgQEAKKzIwMTEtMDQtMjYgIFl1cnkg
U2VtaWtoYXRza3kgIDx5dXJ5c0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogW3Byb3RvY29sXSBQYXVz
ZWQgZXZlbnQgc2hvdWxkIGV4cG9zZSBleGNlcHRpb24gdmFsdWUgdGhhdCBjYXVzZWQgaXQKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU4OTk2CisKKyAg
ICAgICAgRGVidWcucGF1c2UgZXZlbnQgbm93IGNvbnRhaW5zIGFuIG9wdGlvbmFsIHJlZmVyZW5j
ZSB0byB0aGUgZXhjZXB0aW9uCisgICAgICAgIG9iamVjdCBpbiBjYXNlIHNjcmlwdCBleGVjdXRp
b24gaXMgcGF1c2VkIG9uIGEgSmF2YVNjcmlwdCBleGNlcHRpb24uCisKKyAgICAgICAgQWxzbyBK
YXZhU2NyaXB0IGNhbGwgZnJhbWVzIGFyZSBwYXNzZWQgZGlyZWN0bHkgaW50byB0aGUgaW5qZWN0
ZWQgc2NyaXB0IHdoZW4KKyAgICAgICAgd2UgbmVlZCB0byB3cmFwIHRoZW0gZm9yIHBhc3Npbmcg
dG8gdGhlIGZyb250LWVuZC4gVGhpcyBjaGFuZ2UgYnJlYWtzIGN5Y2xpYworICAgICAgICBkZXBl
bmRlbmN5IFNjcmlwdERlYnVnU2VydmVyLT5JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LT5JbmplY3Rl
ZFNjcmlwdC0+SW5qZWN0ZWRTY3JpcHRIb3N0LT5TY3JpcHREZWJ1Z1NlcnZlcgorCisgICAgICAg
ICogYmluZGluZ3MvanMvSlNJbmplY3RlZFNjcmlwdEhvc3RDdXN0b20uY3BwOgorICAgICAgICAq
IGJpbmRpbmdzL2pzL1NjcmlwdERlYnVnU2VydmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNj
cmlwdERlYnVnU2VydmVyOjpkaXNwYXRjaERpZFBhdXNlKToKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9TY3JpcHREZWJ1Z1NlcnZlci5oOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1NjcmlwdERlYnVn
U2VydmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdERlYnVnU2VydmVyOjpicmVha1By
b2dyYW0pOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RGVidWdTZXJ2ZXI6OmVkaXRTY3JpcHRT
b3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RGVidWdTZXJ2ZXI6OmJyZWFrUHJvZ3Jh
bUNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdERlYnVnU2VydmVyOjpoYW5kbGVW
OERlYnVnRXZlbnQpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1NjcmlwdERlYnVnU2VydmVyLmg6
CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4SW5qZWN0ZWRTY3JpcHRIb3N0Q3VzdG9t
LmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SW5qZWN0ZWRTY3JpcHQ6OmV2YWx1YXRlT25DYWxsRnJhbWUpOgorICAgICAgICAo
V2ViQ29yZTo6SW5qZWN0ZWRTY3JpcHQ6OndyYXBDYWxsRnJhbWVzKToKKyAgICAgICAgKiBpbnNw
ZWN0b3IvSW5qZWN0ZWRTY3JpcHQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5qZWN0ZWRTY3Jp
cHRIb3N0LmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRIb3N0Lmg6Cisg
ICAgICAgIChXZWJDb3JlOjpJbmplY3RlZFNjcmlwdEhvc3Q6OmluaXQpOgorICAgICAgICAqIGlu
c3BlY3Rvci9JbmplY3RlZFNjcmlwdEhvc3QuaWRsOgorICAgICAgICAqIGluc3BlY3Rvci9Jbmpl
Y3RlZFNjcmlwdFNvdXJjZS5qczoKKyAgICAgICAgKC4pOgorICAgICAgICAqIGluc3BlY3Rvci9J
bnNwZWN0b3IuanNvbjoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQWdlbnQ6Okluc3BlY3RvckFnZW50KToKKyAgICAg
ICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpldmFsdWF0ZU9uQ2FsbEZyYW1lKToKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmN1cnJlbnRDYWxsRnJhbWVzKToK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OndyYXBDYWxsRnJhbWVz
KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmRpZFBhdXNlKToK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmRpZENvbnRpbnVlKToK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmNsZWFyKToKKyAgICAg
ICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5oOgorICAgICAgICAqIGluc3Bl
Y3Rvci9TY3JpcHREZWJ1Z0xpc3RlbmVyLmg6CisgICAgICAgICogaW5zcGVjdG9yL1dvcmtlcklu
c3BlY3RvckNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VySW5zcGVjdG9y
Q29udHJvbGxlcjo6V29ya2VySW5zcGVjdG9yQ29udHJvbGxlcik6CisKIDIwMTEtMDQtMjYgIERh
dmlkIExldmluICA8bGV2aW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFk
YW0gQmFydGguCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0luamVj
dGVkU2NyaXB0SG9zdEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0lu
amVjdGVkU2NyaXB0SG9zdEN1c3RvbS5jcHAKaW5kZXggN2JjOWI5ODhlNDFiMzdlMjAwYjQ3MTk2
M2QyMzA1YmRhZTkyMTRiYS4uYTU4OWU0ZjM4NDg5OTZhNDViMDVmNGE5ZDFhMDE1ZmViMTUyOTc4
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJbmplY3RlZFNjcmlw
dEhvc3RDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSW5qZWN0
ZWRTY3JpcHRIb3N0Q3VzdG9tLmNwcApAQCAtNTEsMTIgKzUxLDYgQEAKICNlbmRpZgogI2luY2x1
ZGUgPHJ1bnRpbWUvSlNMb2NrLmg+CiAKLSNpZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikK
LSNpbmNsdWRlICJKYXZhU2NyaXB0Q2FsbEZyYW1lLmgiCi0jaW5jbHVkZSAiSlNKYXZhU2NyaXB0
Q2FsbEZyYW1lLmgiCi0jaW5jbHVkZSAiU2NyaXB0RGVidWdTZXJ2ZXIuaCIKLSNlbmRpZgotCiB1
c2luZyBuYW1lc3BhY2UgSlNDOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC03NCwyMSArNjgs
NiBAQCBTY3JpcHRWYWx1ZSBJbmplY3RlZFNjcmlwdEhvc3Q6Om5vZGVBc1NjcmlwdFZhbHVlKFNj
cmlwdFN0YXRlKiBzdGF0ZSwgTm9kZSogbm9kZQogICAgIHJldHVybiBTY3JpcHRWYWx1ZShzdGF0
ZS0+Z2xvYmFsRGF0YSgpLCB0b0pTKHN0YXRlLCBkZXByZWNhdGVkR2xvYmFsT2JqZWN0Rm9yUHJv
dG90eXBlKHN0YXRlKSwgbm9kZSkpOwogfQogCi1KU1ZhbHVlIEpTSW5qZWN0ZWRTY3JpcHRIb3N0
OjpjdXJyZW50Q2FsbEZyYW1lKEV4ZWNTdGF0ZSogZXhlYykKLXsKLSNpZiBFTkFCTEUoSkFWQVND
UklQVF9ERUJVR0dFUikKLSAgICBKYXZhU2NyaXB0Q2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBpbXBs
KCktPmRlYnVnZ2VyQWdlbnQoKS0+c2NyaXB0RGVidWdTZXJ2ZXIoKS5jdXJyZW50Q2FsbEZyYW1l
KCk7Ci0gICAgaWYgKCFjYWxsRnJhbWUgfHwgIWNhbGxGcmFtZS0+aXNWYWxpZCgpKQotICAgICAg
ICByZXR1cm4ganNVbmRlZmluZWQoKTsKLQotICAgIEpTTG9jayBsb2NrKFNpbGVuY2VBc3NlcnRp
b25zT25seSk7Ci0gICAgcmV0dXJuIHRvSlMoZXhlYywgZ2xvYmFsT2JqZWN0KCksIGNhbGxGcmFt
ZSk7Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTShleGVjKTsKLSAgICByZXR1cm4ganNVbmRlZmlu
ZWQoKTsKLSNlbmRpZgotfQotCiBKU1ZhbHVlIEpTSW5qZWN0ZWRTY3JpcHRIb3N0OjppbnNwZWN0
ZWROb2RlKEV4ZWNTdGF0ZSogZXhlYykKIHsKICAgICBpZiAoZXhlYy0+YXJndW1lbnRDb3VudCgp
IDwgMSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdERlYnVn
U2VydmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdERlYnVnU2VydmVy
LmNwcAppbmRleCBlN2VlNjhiY2UyMGIwNjA2N2M1YTQ3ZWIyZDcwMjI2ZTYyMDAzM2IyLi4wNzZj
YzY2YzAwZmUzOWQ0NzJkMmUzZDNmYjcwMThmZGQ2Mjk2YTNiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHREZWJ1Z1NlcnZlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvU2NyaXB0RGVidWdTZXJ2ZXIuY3BwCkBAIC0zNCw2ICszNCw3IEBA
CiAKICNpbmNsdWRlICJFdmVudExvb3AuaCIKICNpbmNsdWRlICJGcmFtZS5oIgorI2luY2x1ZGUg
IkpTSmF2YVNjcmlwdENhbGxGcmFtZS5oIgogI2luY2x1ZGUgIkphdmFTY3JpcHRDYWxsRnJhbWUu
aCIKICNpbmNsdWRlICJTY3JpcHRCcmVha3BvaW50LmgiCiAjaW5jbHVkZSAiU2NyaXB0RGVidWdM
aXN0ZW5lci5oIgpAQCAtMTk0LDE4ICsxOTUsMjIgQEAgYm9vbCBTY3JpcHREZWJ1Z1NlcnZlcjo6
ZWRpdFNjcmlwdFNvdXJjZShjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBTdHJpbmcqKQog
ICAgIHJldHVybiBmYWxzZTsKIH0KIAotSmF2YVNjcmlwdENhbGxGcmFtZSogU2NyaXB0RGVidWdT
ZXJ2ZXI6OmN1cnJlbnRDYWxsRnJhbWUoKQotewotICAgIGlmICghbV9wYXVzZWQpCi0gICAgICAg
IHJldHVybiAwOwotICAgIHJldHVybiBtX2N1cnJlbnRDYWxsRnJhbWUuZ2V0KCk7Ci19Ci0KIHZv
aWQgU2NyaXB0RGVidWdTZXJ2ZXI6OmRpc3BhdGNoRGlkUGF1c2UoU2NyaXB0RGVidWdMaXN0ZW5l
ciogbGlzdGVuZXIpCiB7CiAgICAgQVNTRVJUKG1fcGF1c2VkKTsKLSAgICBTY3JpcHRTdGF0ZSog
c3RhdGUgPSBtX2N1cnJlbnRDYWxsRnJhbWUtPnNjb3BlQ2hhaW4oKS0+Z2xvYmFsT2JqZWN0LT5n
bG9iYWxFeGVjKCk7Ci0gICAgbGlzdGVuZXItPmRpZFBhdXNlKHN0YXRlKTsKKyAgICBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9jdXJyZW50Q2FsbEZyYW1lLT5zY29wZUNoYWluKCkt
Pmdsb2JhbE9iamVjdC5nZXQoKTsKKyAgICBTY3JpcHRTdGF0ZSogc3RhdGUgPSBnbG9iYWxPYmpl
Y3QtPmdsb2JhbEV4ZWMoKTsKKyAgICBKU1ZhbHVlIGpzQ2FsbEZyYW1lOworICAgIHsKKyAgICAg
ICAgaWYgKG1fY3VycmVudENhbGxGcmFtZS0+aXNWYWxpZCgpKSB7CisgICAgICAgICAgICBKU0xv
Y2sgbG9jayhTaWxlbmNlQXNzZXJ0aW9uc09ubHkpOworICAgICAgICAgICAgQVNTRVJUKGRvbUds
b2JhbE9iamVjdC0+Y2xhc3NJbmZvKCkgPT0gJkpTRE9NR2xvYmFsT2JqZWN0OjpjbGFzc0luZm8p
OworICAgICAgICAgICAgSlNET01HbG9iYWxPYmplY3QqIGRvbUdsb2JhbE9iamVjdCA9IHN0YXRp
Y19jYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KTsKKyAgICAgICAgICAgIGpz
Q2FsbEZyYW1lID0gdG9KUyhzdGF0ZSwgZG9tR2xvYmFsT2JqZWN0LCBtX2N1cnJlbnRDYWxsRnJh
bWUuZ2V0KCkpOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIGpzQ2FsbEZyYW1lID0ganNV
bmRlZmluZWQoKTsKKyAgICB9CisgICAgbGlzdGVuZXItPmRpZFBhdXNlKHN0YXRlLCBTY3JpcHRW
YWx1ZShzdGF0ZS0+Z2xvYmFsRGF0YSgpLCBqc0NhbGxGcmFtZSksIFNjcmlwdFZhbHVlKCkpOwog
fQogCiB2b2lkIFNjcmlwdERlYnVnU2VydmVyOjpkaXNwYXRjaERpZENvbnRpbnVlKFNjcmlwdERl
YnVnTGlzdGVuZXIqIGxpc3RlbmVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvU2NyaXB0RGVidWdTZXJ2ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Nj
cmlwdERlYnVnU2VydmVyLmgKaW5kZXggZjZhYzlhMWNjZDQ1NTA4YzA5ZTk3NmVhNzY3MDg0ODU4
MGE3YjNhZS4uMmU5MmE0MDAzMDk1M2FhYWExMmRjOWJiOTlkNGNkYWEwMWNhOTUzZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0RGVidWdTZXJ2ZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHREZWJ1Z1NlcnZlci5oCkBAIC04Myw4
ICs4Myw2IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlY29tcGlsZUFsbEpTRnVuY3Rpb25zU29vbigp
OwogICAgIHZpcnR1YWwgdm9pZCByZWNvbXBpbGVBbGxKU0Z1bmN0aW9ucyhUaW1lcjxTY3JpcHRE
ZWJ1Z1NlcnZlcj4qID0gMCkgPSAwOwogCi0gICAgSmF2YVNjcmlwdENhbGxGcmFtZSogY3VycmVu
dENhbGxGcmFtZSgpOwotCiBwcm90ZWN0ZWQ6CiAgICAgdHlwZWRlZiBIYXNoU2V0PFNjcmlwdERl
YnVnTGlzdGVuZXIqPiBMaXN0ZW5lclNldDsKICAgICB0eXBlZGVmIHZvaWQgKFNjcmlwdERlYnVn
U2VydmVyOjoqSmF2YVNjcmlwdEV4ZWN1dGlvbkNhbGxiYWNrKShTY3JpcHREZWJ1Z0xpc3RlbmVy
Kik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHREZWJ1Z1Nl
cnZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHREZWJ1Z1NlcnZlci5j
cHAKaW5kZXggOTYxMTczY2Q5NDFkYjEwNTdlOWI4OGE3ODAwNzViZTQyNDU5ODkxNC4uMzMzZDZi
NDg0ODBlMzIxZjQ3NTI0MDRkNmY5MWZhODQ1NmJhMjg0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0RGVidWdTZXJ2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L1NjcmlwdERlYnVnU2VydmVyLmNwcApAQCAtMzcsNiArMzcsNyBAQAog
I2luY2x1ZGUgIkphdmFTY3JpcHRDYWxsRnJhbWUuaCIKICNpbmNsdWRlICJTY3JpcHREZWJ1Z0xp
c3RlbmVyLmgiCiAjaW5jbHVkZSAiVjhCaW5kaW5nLmgiCisjaW5jbHVkZSAiVjhKYXZhU2NyaXB0
Q2FsbEZyYW1lLmgiCiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CkBAIC0xNzAsMTAgKzE3MSwxMCBAQCB2b2lkIFNjcmlwdERlYnVnU2VydmVyOjpi
cmVha1Byb2dyYW0oKQogICAgIGlmIChjb250ZXh0LklzRW1wdHkoKSkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgbV9wYXVzZWRQYWdlQ29udGV4dCA9ICpjb250ZXh0OworICAgIG1fcGF1c2VkQ29u
dGV4dCA9ICpjb250ZXh0OwogICAgIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uPiBicmVha1Byb2dy
YW1GdW5jdGlvbiA9IG1fYnJlYWtQcm9ncmFtQ2FsbGJhY2tUZW1wbGF0ZS5nZXQoKS0+R2V0RnVu
Y3Rpb24oKTsKICAgICB2ODo6RGVidWc6OkNhbGwoYnJlYWtQcm9ncmFtRnVuY3Rpb24pOwotICAg
IG1fcGF1c2VkUGFnZUNvbnRleHQuQ2xlYXIoKTsKKyAgICBtX3BhdXNlZENvbnRleHQuQ2xlYXIo
KTsKIH0KIAogdm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6Y29udGludWVQcm9ncmFtKCkKQEAgLTIx
OCw3ICsyMTksNyBAQCBib29sIFNjcmlwdERlYnVnU2VydmVyOjplZGl0U2NyaXB0U291cmNlKGNv
bnN0IFN0cmluZyYgc291cmNlSUQsIGNvbnN0IFN0cmluZyYgbgogCiAgICAgT3duUHRyPHY4OjpD
b250ZXh0OjpTY29wZT4gY29udGV4dFNjb3BlOwogICAgIGlmICghaXNQYXVzZWQoKSkKLSAgICAg
ICAgY29udGV4dFNjb3BlID0gYWRvcHRQdHIobmV3IHY4OjpDb250ZXh0OjpTY29wZSh2ODo6RGVi
dWc6OkdldERlYnVnQ29udGV4dCgpKSk7CisgICAgICAgIGNvbnRleHRTY29wZS5zZXQobmV3IHY4
OjpDb250ZXh0OjpTY29wZSh2ODo6RGVidWc6OkdldERlYnVnQ29udGV4dCgpKSk7CiAKICAgICB2
ODo6SGFuZGxlPHY4OjpGdW5jdGlvbj4gZnVuY3Rpb24gPSB2ODo6TG9jYWw8djg6OkZ1bmN0aW9u
Pjo6Q2FzdChtX2RlYnVnZ2VyU2NyaXB0LmdldCgpLT5HZXQodjg6OlN0cmluZzo6TmV3KCJlZGl0
U2NyaXB0U291cmNlIikpKTsKICAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gYXJndltdID0geyB2
OFN0cmluZyhzb3VyY2VJRCksIHY4U3RyaW5nKG5ld0NvbnRlbnQpIH07CkBAIC0yNzQsMjUgKzI3
NSwzMSBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gU2NyaXB0RGVidWdTZXJ2ZXI6OmJyZWFrUHJv
Z3JhbUNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudAogICAgIEFTU0VSVCgyID09IGFyZ3MuTGVu
Z3RoKCkpOwogICAgIAogICAgIFNjcmlwdERlYnVnU2VydmVyKiB0aGlzUHRyID0gdG9TY3JpcHRE
ZWJ1Z1NlcnZlcihhcmdzLkRhdGEoKSk7Ci0gICAgdGhpc1B0ci0+YnJlYWtQcm9ncmFtKHY4OjpI
YW5kbGU8djg6Ok9iamVjdD46OkNhc3QoYXJnc1swXSkpOworICAgIHY4OjpIYW5kbGU8djg6OlZh
bHVlPiBleGNlcHRpb247CisgICAgdGhpc1B0ci0+YnJlYWtQcm9ncmFtKHY4OjpIYW5kbGU8djg6
Ok9iamVjdD46OkNhc3QoYXJnc1swXSksIGV4Y2VwdGlvbik7CiAgICAgcmV0dXJuIHY4OjpVbmRl
ZmluZWQoKTsKIH0KIAotdm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6YnJlYWtQcm9ncmFtKHY4OjpI
YW5kbGU8djg6Ok9iamVjdD4gZXhlY3V0aW9uU3RhdGUpCit2b2lkIFNjcmlwdERlYnVnU2VydmVy
OjpicmVha1Byb2dyYW0odjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBleGVjdXRpb25TdGF0ZSwgdjg6
OkhhbmRsZTx2ODo6VmFsdWU+IGV4Y2VwdGlvbikKIHsKICAgICAvLyBEb24ndCBhbGxvdyBuZXN0
ZWQgYnJlYWtzLgogICAgIGlmIChpc1BhdXNlZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBT
Y3JpcHREZWJ1Z0xpc3RlbmVyKiBsaXN0ZW5lciA9IGdldERlYnVnTGlzdGVuZXJGb3JDb250ZXh0
KG1fcGF1c2VkUGFnZUNvbnRleHQpOworICAgIFNjcmlwdERlYnVnTGlzdGVuZXIqIGxpc3RlbmVy
ID0gZ2V0RGVidWdMaXN0ZW5lckZvckNvbnRleHQobV9wYXVzZWRDb250ZXh0KTsKICAgICBpZiAo
IWxpc3RlbmVyKQogICAgICAgICByZXR1cm47CiAKICAgICBtX2V4ZWN1dGlvblN0YXRlLnNldChl
eGVjdXRpb25TdGF0ZSk7Ci0gICAgU2NyaXB0U3RhdGUqIGN1cnJlbnRDYWxsRnJhbWVTdGF0ZSA9
IFNjcmlwdFN0YXRlOjpmb3JDb250ZXh0KG1fcGF1c2VkUGFnZUNvbnRleHQpOwotICAgIGxpc3Rl
bmVyLT5kaWRQYXVzZShjdXJyZW50Q2FsbEZyYW1lU3RhdGUpOworICAgIFNjcmlwdFN0YXRlKiBj
dXJyZW50Q2FsbEZyYW1lU3RhdGUgPSBTY3JpcHRTdGF0ZTo6Zm9yQ29udGV4dChtX3BhdXNlZENv
bnRleHQpOworICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBjYWxsRnJhbWVzOworICAgIHsKKyAg
ICAgICAgdjg6OkNvbnRleHQ6OlNjb3BlIGNvbnRleHRTY29wZShtX3BhdXNlZENvbnRleHQpOwor
ICAgICAgICBjYWxsRnJhbWVzID0gdG9WOChjdXJyZW50Q2FsbEZyYW1lKCkpOworICAgIH0KKyAg
ICBsaXN0ZW5lci0+ZGlkUGF1c2UoY3VycmVudENhbGxGcmFtZVN0YXRlLCBTY3JpcHRWYWx1ZShj
YWxsRnJhbWVzKSwgU2NyaXB0VmFsdWUoZXhjZXB0aW9uKSk7CiAKLSAgICBydW5NZXNzYWdlTG9v
cE9uUGF1c2UobV9wYXVzZWRQYWdlQ29udGV4dCk7CisgICAgcnVuTWVzc2FnZUxvb3BPblBhdXNl
KG1fcGF1c2VkQ29udGV4dCk7CiB9CiAKIHZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6OnY4RGVidWdF
dmVudENhbGxiYWNrKGNvbnN0IHY4OjpEZWJ1Zzo6RXZlbnREZXRhaWxzJiBldmVudERldGFpbHMp
CkBAIC0zMjksMTYgKzMzNiwyMyBAQCB2b2lkIFNjcmlwdERlYnVnU2VydmVyOjpoYW5kbGVWOERl
YnVnRXZlbnQoY29uc3Qgdjg6OkRlYnVnOjpFdmVudERldGFpbHMmIGV2ZW50RAogICAgICAgICAg
ICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBvYmplY3QgPSB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+
OjpDYXN0KHZhbHVlKTsKICAgICAgICAgICAgIGRpc3BhdGNoRGlkUGFyc2VTb3VyY2UobGlzdGVu
ZXIsIG9iamVjdCk7CiAgICAgICAgIH0gZWxzZSBpZiAoZXZlbnQgPT0gdjg6OkJyZWFrIHx8IGV2
ZW50ID09IHY4OjpFeGNlcHRpb24pIHsKKyAgICAgICAgICAgIHY4OjpIYW5kbGU8djg6OlZhbHVl
PiBleGNlcHRpb247CiAgICAgICAgICAgICBpZiAoZXZlbnQgPT0gdjg6OkV4Y2VwdGlvbikgewog
ICAgICAgICAgICAgICAgIHY4OjpMb2NhbDx2ODo6U3RhY2tUcmFjZT4gc3RhY2tUcmFjZSA9IHY4
OjpTdGFja1RyYWNlOjpDdXJyZW50U3RhY2tUcmFjZSgxKTsKICAgICAgICAgICAgICAgICAvLyBT
dGFjayB0cmFjZSBpcyBlbXB0eSBpbiBjYXNlIG9mIHN5bnRheCBlcnJvci4gU2lsZW50bHkgY29u
dGludWUgZXhlY3V0aW9uIGluIHN1Y2ggY2FzZXMuCiAgICAgICAgICAgICAgICAgaWYgKCFzdGFj
a1RyYWNlLT5HZXRGcmFtZUNvdW50KCkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgICAgICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGV2ZW50RGF0YSA9IGV2ZW50RGV0
YWlscy5HZXRFdmVudERhdGEoKTsKKyAgICAgICAgICAgICAgICB2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gZXhjZXB0aW9uR2V0dGVyVmFsdWUgPSBldmVudERhdGEtPkdldCh2ODo6U3RyaW5nOjpOZXco
ImV4Y2VwdGlvbiIpKTsKKyAgICAgICAgICAgICAgICBpZiAoIWV4Y2VwdGlvbkdldHRlclZhbHVl
LklzRW1wdHkoKSAmJiBleGNlcHRpb25HZXR0ZXJWYWx1ZS0+SXNGdW5jdGlvbigpKSB7CisgICAg
ICAgICAgICAgICAgICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBhcmd2W10gPSB7IHY4OjpIYW5k
bGU8djg6OlZhbHVlPigpIH07CisgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbiA9IHY4OjpI
YW5kbGU8djg6OkZ1bmN0aW9uPjo6Q2FzdChleGNlcHRpb25HZXR0ZXJWYWx1ZSktPkNhbGwoZXZl
bnREYXRhLCAwLCBhcmd2KTsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAKLSAg
ICAgICAgICAgIG1fcGF1c2VkUGFnZUNvbnRleHQgPSAqZXZlbnRDb250ZXh0OwotICAgICAgICAg
ICAgYnJlYWtQcm9ncmFtKGV2ZW50RGV0YWlscy5HZXRFeGVjdXRpb25TdGF0ZSgpKTsKLSAgICAg
ICAgICAgIG1fcGF1c2VkUGFnZUNvbnRleHQuQ2xlYXIoKTsKKyAgICAgICAgICAgIG1fcGF1c2Vk
Q29udGV4dCA9ICpldmVudENvbnRleHQ7CisgICAgICAgICAgICBicmVha1Byb2dyYW0oZXZlbnRE
ZXRhaWxzLkdldEV4ZWN1dGlvblN0YXRlKCksIGV4Y2VwdGlvbik7CisgICAgICAgICAgICBtX3Bh
dXNlZENvbnRleHQuQ2xlYXIoKTsKICAgICAgICAgfQogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdERlYnVnU2VydmVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9TY3JpcHREZWJ1Z1NlcnZlci5oCmluZGV4IDkzZDg5N2MyMjZiNWI3
MTYwMmUyZTM4NTVkNmNmNjQ1NTEzMzgwMjIuLjhiMDA2OWI1ZjUzYzBjZTIyZDg1M2FkNDkyNTk0
Yjc2YTNkYjgzMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Njcmlw
dERlYnVnU2VydmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0RGVi
dWdTZXJ2ZXIuaApAQCAtNzcsOCArNzcsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCByZWNvbXBpbGVB
bGxKU0Z1bmN0aW9uc1Nvb24oKSB7IH0KICAgICB2b2lkIHJlY29tcGlsZUFsbEpTRnVuY3Rpb25z
KFRpbWVyPFNjcmlwdERlYnVnU2VydmVyPiogPSAwKSB7IH0KIAotICAgIFBhc3NSZWZQdHI8SmF2
YVNjcmlwdENhbGxGcmFtZT4gY3VycmVudENhbGxGcmFtZSgpOwotCiAgICAgY2xhc3MgVGFzayB7
CiAgICAgcHVibGljOgogICAgICAgICB2aXJ0dWFsIH5UYXNrKCkgeyB9CkBAIC05MSwxMiArODks
MTQgQEAgcHJvdGVjdGVkOgogICAgIFNjcmlwdERlYnVnU2VydmVyKCk7CiAgICAgflNjcmlwdERl
YnVnU2VydmVyKCkgeyB9CiAgICAgCisgICAgUGFzc1JlZlB0cjxKYXZhU2NyaXB0Q2FsbEZyYW1l
PiBjdXJyZW50Q2FsbEZyYW1lKCk7CisKICAgICB2aXJ0dWFsIFNjcmlwdERlYnVnTGlzdGVuZXIq
IGdldERlYnVnTGlzdGVuZXJGb3JDb250ZXh0KHY4OjpIYW5kbGU8djg6OkNvbnRleHQ+KSA9IDA7
CiAgICAgdmlydHVhbCB2b2lkIHJ1bk1lc3NhZ2VMb29wT25QYXVzZSh2ODo6SGFuZGxlPHY4OjpD
b250ZXh0PikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBxdWl0TWVzc2FnZUxvb3BPblBhdXNlKCkg
PSAwOwogCiAgICAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBicmVha1Byb2dyYW1DYWxs
YmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKTsKLSAgICB2b2lkIGJyZWFrUHJvZ3JhbSh2
ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGV4ZWN1dGlvblN0YXRlKTsKKyAgICB2b2lkIGJyZWFrUHJv
Z3JhbSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGV4ZWN1dGlvblN0YXRlLCB2ODo6SGFuZGxlPHY4
OjpWYWx1ZT4gZXhjZXB0aW9uKTsKIAogICAgIHN0YXRpYyB2b2lkIHY4RGVidWdFdmVudENhbGxi
YWNrKGNvbnN0IHY4OjpEZWJ1Zzo6RXZlbnREZXRhaWxzJiBldmVudERldGFpbHMpOwogICAgIHZv
aWQgaGFuZGxlVjhEZWJ1Z0V2ZW50KGNvbnN0IHY4OjpEZWJ1Zzo6RXZlbnREZXRhaWxzJiBldmVu
dERldGFpbHMpOwpAQCAtMTExLDcgKzExMSw3IEBAIHByb3RlY3RlZDoKICAgICBPd25IYW5kbGU8
djg6Ok9iamVjdD4gbV9kZWJ1Z2dlclNjcmlwdDsKICAgICBSZWZQdHI8SmF2YVNjcmlwdENhbGxG
cmFtZT4gbV9jdXJyZW50Q2FsbEZyYW1lOwogICAgIE93bkhhbmRsZTx2ODo6T2JqZWN0PiBtX2V4
ZWN1dGlvblN0YXRlOwotICAgIHY4OjpMb2NhbDx2ODo6Q29udGV4dD4gbV9wYXVzZWRQYWdlQ29u
dGV4dDsKKyAgICB2ODo6TG9jYWw8djg6OkNvbnRleHQ+IG1fcGF1c2VkQ29udGV4dDsKIAogICAg
IGJvb2wgbV9icmVha3BvaW50c0FjdGl2YXRlZDsKICAgICBPd25IYW5kbGU8djg6OkZ1bmN0aW9u
VGVtcGxhdGU+IG1fYnJlYWtQcm9ncmFtQ2FsbGJhY2tUZW1wbGF0ZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEluamVjdGVkU2NyaXB0SG9zdEN1c3Rv
bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhJbmplY3RlZFNjcmlw
dEhvc3RDdXN0b20uY3BwCmluZGV4IDNkYmFjYjI4ZWMxNDM0NzYwZTJiYWI2NWUwNzYwZTQ3YTRl
MDc4YzAuLmQ0OWQ2MWRlNDZjMzJjZmVmYTdkZTEwZGY3NTQwZTE2MjU5ZGM2ZWMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEluamVjdGVkU2NyaXB0SG9z
dEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SW5q
ZWN0ZWRTY3JpcHRIb3N0Q3VzdG9tLmNwcApAQCAtMzQsMTUgKzM0LDEyIEBACiAjaW5jbHVkZSAi
RGF0YWJhc2UuaCIKICNpbmNsdWRlICJJbmplY3RlZFNjcmlwdC5oIgogI2luY2x1ZGUgIkluamVj
dGVkU2NyaXB0SG9zdC5oIgotI2luY2x1ZGUgIkluc3BlY3RvckRlYnVnZ2VyQWdlbnQuaCIKICNp
bmNsdWRlICJJbnNwZWN0b3JWYWx1ZXMuaCIKLSNpbmNsdWRlICJTY3JpcHREZWJ1Z1NlcnZlci5o
IgogI2luY2x1ZGUgIlNjcmlwdFZhbHVlLmgiCiAjaW5jbHVkZSAiVjhCaW5kaW5nLmgiCiAjaW5j
bHVkZSAiVjhCaW5kaW5nU3RhdGUuaCIKICNpbmNsdWRlICJWOERhdGFiYXNlLmgiCiAjaW5jbHVk
ZSAiVjhIaWRkZW5Qcm9wZXJ0eU5hbWUuaCIKLSNpbmNsdWRlICJWOEphdmFTY3JpcHRDYWxsRnJh
bWUuaCIKICNpbmNsdWRlICJWOE5vZGUuaCIKICNpbmNsdWRlICJWOFByb3h5LmgiCiAjaW5jbHVk
ZSAiVjhTdG9yYWdlLmgiCkBAIC0xMDYsMTggKzEwMyw2IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVl
PiBWOEluamVjdGVkU2NyaXB0SG9zdDo6aW5zcGVjdENhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVu
dHMmCiAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKIH0KIAotdjg6OkhhbmRsZTx2ODo6VmFs
dWU+IFY4SW5qZWN0ZWRTY3JpcHRIb3N0OjpjdXJyZW50Q2FsbEZyYW1lQ2FsbGJhY2soY29uc3Qg
djg6OkFyZ3VtZW50cyYgYXJncykKLXsKLSNpZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikK
LSAgICBJTkNfU1RBVFMoIkluamVjdGVkU2NyaXB0SG9zdC5jdXJyZW50Q2FsbEZyYW1lKCkiKTsK
LSAgICBJbmplY3RlZFNjcmlwdEhvc3QqIGhvc3QgPSBWOEluamVjdGVkU2NyaXB0SG9zdDo6dG9O
YXRpdmUoYXJncy5Ib2xkZXIoKSk7Ci0gICAgcmV0dXJuIHRvVjgoaG9zdC0+ZGVidWdnZXJBZ2Vu
dCgpLT5zY3JpcHREZWJ1Z1NlcnZlcigpLmN1cnJlbnRDYWxsRnJhbWUoKSk7Ci0jZWxzZQotICAg
IFVOVVNFRF9QQVJBTShhcmdzKTsKLSAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOwotI2VuZGlm
Ci19Ci0KIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEluamVjdGVkU2NyaXB0SG9zdDo6ZGF0YWJh
c2VJZENhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAgICAgSU5DX1NUQVRT
KCJJbmplY3RlZFNjcmlwdEhvc3QuZGF0YWJhc2VJZCgpIik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luamVjdGVkU2NyaXB0LmNwcAppbmRleCBlNjUzMjkwMTZkMGZjOWJmM2EwYmYzYmM4
ZjAyYTZmZWJmOGZkOWM0Li5hZWI2ZjM5MDY2ZTg5YTM3ZTA1MTEzZjFiODgyMWQzZGVhMTgzOTFi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdC5jcHAKQEAgLTcx
LDkgKzcxLDEwIEBAIHZvaWQgSW5qZWN0ZWRTY3JpcHQ6OmV2YWx1YXRlT24oRXJyb3JTdHJpbmcq
IGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIG9iamVjdElkCiAgICAgbWFrZU9iamVjdENhbGwo
ZXJyb3JTdHJpbmcsIGZ1bmN0aW9uLCByZXN1bHQpOwogfQogCi12b2lkIEluamVjdGVkU2NyaXB0
OjpldmFsdWF0ZU9uQ2FsbEZyYW1lKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29uc3QgU3Ry
aW5nJiBjYWxsRnJhbWVJZCwgY29uc3QgU3RyaW5nJiBleHByZXNzaW9uLCBjb25zdCBTdHJpbmcm
IG9iamVjdEdyb3VwLCBib29sIGluY2x1ZGVDb21tYW5kTGluZUFQSSwgUmVmUHRyPEluc3BlY3Rv
ck9iamVjdD4qIHJlc3VsdCkKK3ZvaWQgSW5qZWN0ZWRTY3JpcHQ6OmV2YWx1YXRlT25DYWxsRnJh
bWUoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBTY3JpcHRWYWx1ZSYgY2FsbEZyYW1l
cywgY29uc3QgU3RyaW5nJiBjYWxsRnJhbWVJZCwgY29uc3QgU3RyaW5nJiBleHByZXNzaW9uLCBj
b25zdCBTdHJpbmcmIG9iamVjdEdyb3VwLCBib29sIGluY2x1ZGVDb21tYW5kTGluZUFQSSwgUmVm
UHRyPEluc3BlY3Rvck9iamVjdD4qIHJlc3VsdCkKIHsKICAgICBTY3JpcHRGdW5jdGlvbkNhbGwg
ZnVuY3Rpb24obV9pbmplY3RlZFNjcmlwdE9iamVjdCwgImV2YWx1YXRlT25DYWxsRnJhbWUiKTsK
KyAgICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudChjYWxsRnJhbWVzKTsKICAgICBmdW5jdGlvbi5h
cHBlbmRBcmd1bWVudChjYWxsRnJhbWVJZCk7CiAgICAgZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQo
ZXhwcmVzc2lvbik7CiAgICAgZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQob2JqZWN0R3JvdXApOwpA
QCAtMTMxLDEwICsxMzIsMTEgQEAgdm9pZCBJbmplY3RlZFNjcmlwdDo6cmVsZWFzZU9iamVjdChj
b25zdCBTdHJpbmcmIG9iamVjdElkKQogfQogCiAjaWYgRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdH
RVIpCi1QYXNzUmVmUHRyPEluc3BlY3RvckFycmF5PiBJbmplY3RlZFNjcmlwdDo6Y2FsbEZyYW1l
cygpCitQYXNzUmVmUHRyPEluc3BlY3RvckFycmF5PiBJbmplY3RlZFNjcmlwdDo6d3JhcENhbGxG
cmFtZXMoY29uc3QgU2NyaXB0VmFsdWUmIGNhbGxGcmFtZXMpCiB7CiAgICAgQVNTRVJUKCFoYXNO
b1ZhbHVlKCkpOwotICAgIFNjcmlwdEZ1bmN0aW9uQ2FsbCBmdW5jdGlvbihtX2luamVjdGVkU2Ny
aXB0T2JqZWN0LCAiY2FsbEZyYW1lcyIpOworICAgIFNjcmlwdEZ1bmN0aW9uQ2FsbCBmdW5jdGlv
bihtX2luamVjdGVkU2NyaXB0T2JqZWN0LCAid3JhcENhbGxGcmFtZXMiKTsKKyAgICBmdW5jdGlv
bi5hcHBlbmRBcmd1bWVudChjYWxsRnJhbWVzKTsKICAgICBTY3JpcHRWYWx1ZSBjYWxsRnJhbWVz
VmFsdWUgPSBmdW5jdGlvbi5jYWxsKCk7CiAgICAgUmVmUHRyPEluc3BlY3RvclZhbHVlPiByZXN1
bHQgPSBjYWxsRnJhbWVzVmFsdWUudG9JbnNwZWN0b3JWYWx1ZShtX2luamVjdGVkU2NyaXB0T2Jq
ZWN0LnNjcmlwdFN0YXRlKCkpOwogICAgIGlmIChyZXN1bHQtPnR5cGUoKSA9PSBJbnNwZWN0b3JW
YWx1ZTo6VHlwZUFycmF5KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
amVjdGVkU2NyaXB0LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHQu
aAppbmRleCBhZGNiMjA4ZTdkYjkwNTg3N2IwNWEyNDQwZGJkM2Q1ZThjNzFkN2I5Li40ZDg3MDM1
ZWQ5MWI2NzhmMjc2OWE2OGVlYTViODgzYTMxZGEwZTFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5qZWN0ZWRTY3JpcHQuaApAQCAtNTcsMTQgKzU3LDE0IEBAIHB1YmxpYzoKIAogICAg
IHZvaWQgZXZhbHVhdGUoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIGV4cHJlc3Npb24sIGNv
bnN0IFN0cmluZyYgb2JqZWN0R3JvdXAsIGJvb2wgaW5jbHVkZUNvbW1hbmRMaW5lQVBJLCBSZWZQ
dHI8SW5zcGVjdG9yT2JqZWN0PiogcmVzdWx0KTsKICAgICB2b2lkIGV2YWx1YXRlT24oRXJyb3JT
dHJpbmcqLCBjb25zdCBTdHJpbmcmIG9iamVjdElkLCBjb25zdCBTdHJpbmcmIGV4cHJlc3Npb24s
IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+KiByZXN1bHQpOwotICAgIHZvaWQgZXZhbHVhdGVPbkNh
bGxGcmFtZShFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgY2FsbEZyYW1lSWQsIGNvbnN0IFN0
cmluZyYgZXhwcmVzc2lvbiwgY29uc3QgU3RyaW5nJiBvYmplY3RHcm91cCwgYm9vbCBpbmNsdWRl
Q29tbWFuZExpbmVBUEksIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+KiByZXN1bHQpOworICAgIHZv
aWQgZXZhbHVhdGVPbkNhbGxGcmFtZShFcnJvclN0cmluZyosIGNvbnN0IFNjcmlwdFZhbHVlJiBj
YWxsRnJhbWVzLCBjb25zdCBTdHJpbmcmIGNhbGxGcmFtZUlkLCBjb25zdCBTdHJpbmcmIGV4cHJl
c3Npb24sIGNvbnN0IFN0cmluZyYgb2JqZWN0R3JvdXAsIGJvb2wgaW5jbHVkZUNvbW1hbmRMaW5l
QVBJLCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiogcmVzdWx0KTsKICAgICB2b2lkIGdldFByb3Bl
cnRpZXMoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIG9iamVjdElkLCBib29sIGlnbm9yZUhh
c093blByb3BlcnR5LCBSZWZQdHI8SW5zcGVjdG9yQXJyYXk+KiByZXN1bHQpOwogICAgIE5vZGUq
IG5vZGVGb3JPYmplY3RJZChjb25zdCBTdHJpbmcmIG9iamVjdElkKTsKICAgICB2b2lkIHNldFBy
b3BlcnR5VmFsdWUoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIG9iamVjdElkLCBjb25zdCBT
dHJpbmcmIHByb3BlcnR5TmFtZSwgY29uc3QgU3RyaW5nJiBleHByZXNzaW9uKTsKICAgICB2b2lk
IHJlbGVhc2VPYmplY3QoY29uc3QgU3RyaW5nJiBvYmplY3RJZCk7CiAKICNpZiBFTkFCTEUoSkFW
QVNDUklQVF9ERUJVR0dFUikKLSAgICBQYXNzUmVmUHRyPEluc3BlY3RvckFycmF5PiBjYWxsRnJh
bWVzKCk7CisgICAgUGFzc1JlZlB0cjxJbnNwZWN0b3JBcnJheT4gd3JhcENhbGxGcmFtZXMoY29u
c3QgU2NyaXB0VmFsdWUmKTsKICNlbmRpZgogCiAgICAgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmpl
Y3Q+IHdyYXBPYmplY3QoU2NyaXB0VmFsdWUsIGNvbnN0IFN0cmluZyYgZ3JvdXBOYW1lKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdEhvc3QuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0SG9zdC5jcHAKaW5kZXgg
YTBiYWZkZjkyNjNjYjQxNTc5NDc3MWExZWQ4YzFhMWE4ZTc3NjFkNS4uYjU0MjdmOGNkOGU4YjU3
ZWE0Y2Y4OTRjNTM0NWUzMTIwZTJlZDgyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luamVjdGVkU2NyaXB0SG9zdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luamVjdGVkU2NyaXB0SG9zdC5jcHAKQEAgLTQ3LDEwICs0Nyw2IEBACiAjaW5jbHVkZSAi
SW5zcGVjdG9yVmFsdWVzLmgiCiAjaW5jbHVkZSAiUGFzdGVib2FyZC5oIgogCi0jaWYgRU5BQkxF
KEpBVkFTQ1JJUFRfREVCVUdHRVIpCi0jaW5jbHVkZSAiU2NyaXB0RGVidWdTZXJ2ZXIuaCIKLSNl
bmRpZgotCiAjaWYgRU5BQkxFKERBVEFCQVNFKQogI2luY2x1ZGUgIkRhdGFiYXNlLmgiCiAjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdEhv
c3QuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdEhvc3QuaAppbmRl
eCA4OWE1MDMxZTdiNjM4ZGM1OWMwYzgwNDZhZjViMDk2ODVjOTUzY2E3Li5iNTkyZDliYWUwODU3
ZGRiMTVkZGZhNWVjZDAyNjc1Y2ZjYWE1OGY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRIb3N0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luamVjdGVkU2NyaXB0SG9zdC5oCkBAIC00Nyw3ICs0Nyw2IEBAIGNsYXNzIEluc3BlY3Rv
ckFnZW50OwogY2xhc3MgSW5zcGVjdG9yQ29uc29sZUFnZW50OwogY2xhc3MgSW5zcGVjdG9yRE9N
U3RvcmFnZUFnZW50OwogY2xhc3MgSW5zcGVjdG9yRGF0YWJhc2VBZ2VudDsKLWNsYXNzIEluc3Bl
Y3RvckRlYnVnZ2VyQWdlbnQ7CiBjbGFzcyBJbnNwZWN0b3JGcm9udGVuZDsKIGNsYXNzIEluc3Bl
Y3Rvck9iamVjdDsKIGNsYXNzIE5vZGU7CkBAIC02OSw5ICs2OCw2IEBAIHB1YmxpYzoKICNpZiBF
TkFCTEUoRE9NX1NUT1JBR0UpCiAgICAgICAgICAgICAsIEluc3BlY3RvckRPTVN0b3JhZ2VBZ2Vu
dCogZG9tU3RvcmFnZUFnZW50CiAjZW5kaWYKLSNpZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dF
UikKLSAgICAgICAgICAgICwgSW5zcGVjdG9yRGVidWdnZXJBZ2VudCogZGVidWdnZXJBZ2VudAot
I2VuZGlmCiAgICAgICAgICkKICAgICB7CiAgICAgICAgIG1faW5zcGVjdG9yQWdlbnQgPSBpbnNw
ZWN0b3JBZ2VudDsKQEAgLTgyLDkgKzc4LDYgQEAgcHVibGljOgogI2lmIEVOQUJMRShET01fU1RP
UkFHRSkKICAgICAgICAgbV9kb21TdG9yYWdlQWdlbnQgPSBkb21TdG9yYWdlQWdlbnQ7CiAjZW5k
aWYKLSNpZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikKLSAgICAgICAgbV9kZWJ1Z2dlckFn
ZW50ID0gZGVidWdnZXJBZ2VudDsKLSNlbmRpZgogICAgIH0KICAgICB2b2lkIHNldEZyb250ZW5k
KEluc3BlY3RvckZyb250ZW5kKiBmcm9udGVuZCkgeyBtX2Zyb250ZW5kID0gZnJvbnRlbmQ7IH0K
ICAgICB2b2lkIGNsZWFyRnJvbnRlbmQoKSB7IG1fZnJvbnRlbmQgPSAwOyB9CkBAIC0xMTIsOSAr
MTA1LDYgQEAgcHVibGljOgogICAgIHZvaWQgZGlkQ3JlYXRlV29ya2VyKGxvbmcgaWQsIGNvbnN0
IFN0cmluZyYgdXJsLCBib29sIGlzU2hhcmVkV29ya2VyKTsKICAgICB2b2lkIGRpZERlc3Ryb3lX
b3JrZXIobG9uZyBpZCk7CiAjZW5kaWYKLSNpZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikK
LSAgICBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50KiBkZWJ1Z2dlckFnZW50KCkgeyByZXR1cm4gbV9k
ZWJ1Z2dlckFnZW50OyB9Ci0jZW5kaWYKIAogcHJpdmF0ZToKICAgICBJbmplY3RlZFNjcmlwdEhv
c3QoKTsKQEAgLTEyNyw5ICsxMTcsNiBAQCBwcml2YXRlOgogI2lmIEVOQUJMRShET01fU1RPUkFH
RSkKICAgICBJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQqIG1fZG9tU3RvcmFnZUFnZW50OwogI2Vu
ZGlmCi0jaWYgRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpCi0gICAgSW5zcGVjdG9yRGVidWdn
ZXJBZ2VudCogbV9kZWJ1Z2dlckFnZW50OwotI2VuZGlmCiAgICAgSW5zcGVjdG9yRnJvbnRlbmQq
IG1fZnJvbnRlbmQ7CiAgICAgbG9uZyBtX2xhc3RXb3JrZXJJZDsKICAgICBWZWN0b3I8UmVmUHRy
PE5vZGU+ID4gbV9pbnNwZWN0ZWROb2RlczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbmplY3RlZFNjcmlwdEhvc3QuaWRsIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luamVjdGVkU2NyaXB0SG9zdC5pZGwKaW5kZXggZmM2MDgxMzg2YTIzNjYzYzZkYjIzNjliMjVi
YmRlY2FjZWRhMzdmMC4uNjk4ZTRiZGRlMmFmMzFhMDI2ZGJiOGYxMjE1MTgyM2ZmNTQ5YmRjMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0SG9zdC5p
ZGwKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0SG9zdC5pZGwK
QEAgLTM5LDcgKzM5LDYgQEAgbW9kdWxlIGNvcmUgewogICAgICAgICBbQ3VzdG9tXSBET01PYmpl
Y3QgaW5zcGVjdGVkTm9kZShpbiBpbnQgbnVtKTsKICAgICAgICAgW0N1c3RvbV0gRE9NT2JqZWN0
IGludGVybmFsQ29uc3RydWN0b3JOYW1lKGluIERPTU9iamVjdCBvYmplY3QpOwogCi0gICAgICAg
IFtDdXN0b21dIERPTU9iamVjdCBjdXJyZW50Q2FsbEZyYW1lKCk7CiAgICAgICAgIFtDdXN0b21d
IGludCBkYXRhYmFzZUlkKGluIERPTU9iamVjdCBkYXRhYmFzZSk7CiAgICAgICAgIFtDdXN0b21d
IGludCBzdG9yYWdlSWQoaW4gRE9NT2JqZWN0IHN0b3JhZ2UpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRTb3VyY2UuanMgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRTb3VyY2UuanMKaW5kZXggMTA4MzMwZGM0N2Q0
NzJiOTdlMzliOTZkOGQ4YTQyMGQxZjg0NzQzMC4uMzVjNzY3MTE1NjcxMTgxYmVlYzJlYzZiMGQw
YWE2ODJiY2ZlMzBmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVj
dGVkU2NyaXB0U291cmNlLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3Rl
ZFNjcmlwdFNvdXJjZS5qcwpAQCAtMjkzLDkgKzI5Myw4IEBAIEluamVjdGVkU2NyaXB0LnByb3Rv
dHlwZSA9IHsKICAgICAgICAgfQogICAgIH0sCiAKLSAgICBjYWxsRnJhbWVzOiBmdW5jdGlvbigp
CisgICAgd3JhcENhbGxGcmFtZXM6IGZ1bmN0aW9uKGNhbGxGcmFtZSkKICAgICB7Ci0gICAgICAg
IHZhciBjYWxsRnJhbWUgPSBJbmplY3RlZFNjcmlwdEhvc3QuY3VycmVudENhbGxGcmFtZSgpOwog
ICAgICAgICBpZiAoIWNhbGxGcmFtZSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAK
QEAgLTMwOCwxOSArMzA3LDE5IEBAIEluamVjdGVkU2NyaXB0LnByb3RvdHlwZSA9IHsKICAgICAg
ICAgcmV0dXJuIHJlc3VsdDsKICAgICB9LAogCi0gICAgZXZhbHVhdGVPbkNhbGxGcmFtZTogZnVu
Y3Rpb24oY2FsbEZyYW1lSWQsIGV4cHJlc3Npb24sIG9iamVjdEdyb3VwLCBpbmplY3RDb21tYW5k
TGluZUFQSSkKKyAgICBldmFsdWF0ZU9uQ2FsbEZyYW1lOiBmdW5jdGlvbih0b3BDYWxsRnJhbWUs
IGNhbGxGcmFtZUlkLCBleHByZXNzaW9uLCBvYmplY3RHcm91cCwgaW5qZWN0Q29tbWFuZExpbmVB
UEkpCiAgICAgewotICAgICAgICB2YXIgY2FsbEZyYW1lID0gdGhpcy5fY2FsbEZyYW1lRm9ySWQo
Y2FsbEZyYW1lSWQpOworICAgICAgICB2YXIgY2FsbEZyYW1lID0gdGhpcy5fY2FsbEZyYW1lRm9y
SWQodG9wQ2FsbEZyYW1lLCBjYWxsRnJhbWVJZCk7CiAgICAgICAgIGlmICghY2FsbEZyYW1lKQog
ICAgICAgICAgICAgcmV0dXJuICJDb3VsZCBub3QgZmluZCBjYWxsIGZyYW1lIHdpdGggZ2l2ZW4g
aWQiOwogICAgICAgICByZXR1cm4gdGhpcy5fZXZhbHVhdGVBbmRXcmFwKGNhbGxGcmFtZS5ldmFs
dWF0ZSwgY2FsbEZyYW1lLCBleHByZXNzaW9uLCBvYmplY3RHcm91cCwgdHJ1ZSwgaW5qZWN0Q29t
bWFuZExpbmVBUEkpOwogICAgIH0sCiAKLSAgICBfY2FsbEZyYW1lRm9ySWQ6IGZ1bmN0aW9uKGNh
bGxGcmFtZUlkKQorICAgIF9jYWxsRnJhbWVGb3JJZDogZnVuY3Rpb24odG9wQ2FsbEZyYW1lLCBj
YWxsRnJhbWVJZCkKICAgICB7CiAgICAgICAgIHZhciBwYXJzZWRDYWxsRnJhbWVJZCA9IGV2YWwo
IigiICsgY2FsbEZyYW1lSWQgKyAiKSIpOwogICAgICAgICB2YXIgb3JkaW5hbCA9IHBhcnNlZENh
bGxGcmFtZUlkLm9yZGluYWw7Ci0gICAgICAgIHZhciBjYWxsRnJhbWUgPSBJbmplY3RlZFNjcmlw
dEhvc3QuY3VycmVudENhbGxGcmFtZSgpOworICAgICAgICB2YXIgY2FsbEZyYW1lID0gdG9wQ2Fs
bEZyYW1lOwogICAgICAgICB3aGlsZSAoLS1vcmRpbmFsID49IDAgJiYgY2FsbEZyYW1lKQogICAg
ICAgICAgICAgY2FsbEZyYW1lID0gY2FsbEZyYW1lLmNhbGxlcjsKICAgICAgICAgcmV0dXJuIGNh
bGxGcmFtZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3Iu
anNvbiBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuanNvbgppbmRleCBhMDhk
MjY1ZTI2ZTQ0ZDUzNDczNjAwNzAxOTI0MGU4OTM1MzU2NzI3Li4wYTUyOWU3ZjUzYTQyYjI3YmE3
N2Y0NDVkNWIwZTI3MDc4OTk3ZWNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yLmpzb24KKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ci5qc29uCkBAIC0xNDk5LDcgKzE0OTksOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgIm5h
bWUiOiAiZGV0YWlscyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAidHlwZSI6ICJvYmplY3Qi
LAogICAgICAgICAgICAgICAgICAgICAgICAgInByb3BlcnRpZXMiOiBbCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgeyAibmFtZSI6ICJjYWxsRnJhbWVzIiwgInR5cGUiOiAiYXJyYXkiLCAi
aXRlbXMiOiB7ICIkcmVmIjogIkNhbGxGcmFtZSIgfSwgImRlc2NyaXB0aW9uIjogIkNhbGwgc3Rh
Y2sgdGhlIHZpcnR1YWwgbWFjaGluZSBzdG9wcGVkIG9uLiIgfQorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHsgIm5hbWUiOiAiY2FsbEZyYW1lcyIsICJ0eXBlIjogImFycmF5IiwgIml0ZW1z
IjogeyAiJHJlZiI6ICJDYWxsRnJhbWUiIH0sICJkZXNjcmlwdGlvbiI6ICJDYWxsIHN0YWNrIHRo
ZSB2aXJ0dWFsIG1hY2hpbmUgc3RvcHBlZCBvbi4iIH0sCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgeyAibmFtZSI6ICJleGNlcHRpb24iLCAiJHJlZiI6ICJSdW50aW1lLlJlbW90ZU9iamVj
dCIsICJvcHRpb25hbCI6IHRydWUsICJkZXNjcmlwdGlvbiI6ICJDdXJyZW50IGV4Y2VwdGlvbiBv
YmplY3QgaWYgc2NyaXB0IGV4ZWN1dGlvbiBpcyBwYXVzZWQgd2hlbiBhbiBleGNlcHRpb24gaXMg
YmVpbmcgdGhyb3duLiIgfQogICAgICAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJDYWxsIHN0YWNrIGluZm9ybWF0aW9uLiIKICAg
ICAgICAgICAgICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JB
Z2VudC5jcHAKaW5kZXggMzdhYWQyZDEwYjYxMTlhYTI2MzVlMjA5ZDI2ODM0NTRiZmZiY2U4NS4u
MmJmNzZjNTQwNGQ2MDI2Nzc3ZDEwNDdhZTRkNmE0ZTcxY2VkOWYzMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnQuY3BwCkBAIC0xNTIsOSArMTUyLDYgQEAgSW5z
cGVjdG9yQWdlbnQ6Okluc3BlY3RvckFnZW50KFBhZ2UqIHBhZ2UsIEluc3BlY3RvckNsaWVudCog
Y2xpZW50LCBJbmplY3RlZFNjcmkKICNpZiBFTkFCTEUoRE9NX1NUT1JBR0UpCiAgICAgICAgICwg
bV9kb21TdG9yYWdlQWdlbnQuZ2V0KCkKICNlbmRpZgotI2lmIEVOQUJMRShKQVZBU0NSSVBUX0RF
QlVHR0VSKQotICAgICAgICAsIG1fZGVidWdnZXJBZ2VudC5nZXQoKQotI2VuZGlmCiAgICAgKTsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRlYnVn
Z2VyQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRlYnVnZ2Vy
QWdlbnQuY3BwCmluZGV4IDcwYjA3YmMwYjE5ZDVmNTE5MGIyYWJhM2M3ZGY2MDA2OTZiZjZiM2Qu
LjUxYjZmNGU2Yzg5YWY3ZTkwOWU4YjI2MmQ5OWZkODkxODUyNmFkYzYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHAKQEAgLTM5
LDYgKzM5LDcgQEAKICNpbmNsdWRlICJJbnN0cnVtZW50aW5nQWdlbnRzLmgiCiAjaW5jbHVkZSAi
UGxhdGZvcm1TdHJpbmcuaCIKICNpbmNsdWRlICJTY3JpcHREZWJ1Z1NlcnZlci5oIgorI2luY2x1
ZGUgIlNjcmlwdE9iamVjdC5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRl
Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTM1NSwxOSArMzU2LDIyIEBAIHZvaWQgSW5z
cGVjdG9yRGVidWdnZXJBZ2VudDo6ZXZhbHVhdGVPbkNhbGxGcmFtZShFcnJvclN0cmluZyogZXJy
b3JTdHJpbmcsIGNvbnN0CiB7CiAgICAgSW5qZWN0ZWRTY3JpcHQgaW5qZWN0ZWRTY3JpcHQgPSBt
X2luamVjdGVkU2NyaXB0TWFuYWdlci0+aW5qZWN0ZWRTY3JpcHRGb3JPYmplY3RJZChjYWxsRnJh
bWVJZCk7CiAgICAgaWYgKCFpbmplY3RlZFNjcmlwdC5oYXNOb1ZhbHVlKCkpCi0gICAgICAgIGlu
amVjdGVkU2NyaXB0LmV2YWx1YXRlT25DYWxsRnJhbWUoZXJyb3JTdHJpbmcsIGNhbGxGcmFtZUlk
LCBleHByZXNzaW9uLCBvYmplY3RHcm91cCA/ICpvYmplY3RHcm91cCA6ICIiLCBpbmNsdWRlQ29t
bWFuZExpbmVBUEkgPyAqaW5jbHVkZUNvbW1hbmRMaW5lQVBJIDogZmFsc2UsIHJlc3VsdCk7Cisg
ICAgICAgIGluamVjdGVkU2NyaXB0LmV2YWx1YXRlT25DYWxsRnJhbWUoZXJyb3JTdHJpbmcsIG1f
Y3VycmVudENhbGxTdGFjaywgY2FsbEZyYW1lSWQsIGV4cHJlc3Npb24sIG9iamVjdEdyb3VwID8g
Km9iamVjdEdyb3VwIDogIiIsIGluY2x1ZGVDb21tYW5kTGluZUFQSSA/ICppbmNsdWRlQ29tbWFu
ZExpbmVBUEkgOiBmYWxzZSwgcmVzdWx0KTsKIH0KIAogUGFzc1JlZlB0cjxJbnNwZWN0b3JBcnJh
eT4gSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6Y3VycmVudENhbGxGcmFtZXMoKQogewotICAgIGlm
ICghbV9wYXVzZWRTY3JpcHRTdGF0ZSkKICAgICAgICAgcmV0dXJuIEluc3BlY3RvckFycmF5Ojpj
cmVhdGUoKTsKLSAgICBJbmplY3RlZFNjcmlwdCBpbmplY3RlZFNjcmlwdCA9IG1faW5qZWN0ZWRT
Y3JpcHRNYW5hZ2VyLT5pbmplY3RlZFNjcmlwdEZvcihtX3BhdXNlZFNjcmlwdFN0YXRlKTsKK30K
KworUGFzc1JlZlB0cjxJbnNwZWN0b3JBcnJheT4gSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6d3Jh
cENhbGxGcmFtZXMoU2NyaXB0U3RhdGUqIHNjcmlwdFN0YXRlLCBjb25zdCBTY3JpcHRWYWx1ZSYg
Y2FsbEZyYW1lcykKK3sKKyAgICBJbmplY3RlZFNjcmlwdCBpbmplY3RlZFNjcmlwdCA9IG1faW5q
ZWN0ZWRTY3JpcHRNYW5hZ2VyLT5pbmplY3RlZFNjcmlwdEZvcihzY3JpcHRTdGF0ZSk7CiAgICAg
aWYgKGluamVjdGVkU2NyaXB0Lmhhc05vVmFsdWUoKSkgewogICAgICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKICAgICAgICAgcmV0dXJuIEluc3BlY3RvckFycmF5OjpjcmVhdGUoKTsKICAgICB9
Ci0gICAgcmV0dXJuIGluamVjdGVkU2NyaXB0LmNhbGxGcmFtZXMoKTsKKyAgICByZXR1cm4gaW5q
ZWN0ZWRTY3JpcHQud3JhcENhbGxGcmFtZXMoY2FsbEZyYW1lcyk7CiB9CiAKIC8vIEphdmFTY3Jp
cHREZWJ1Z0xpc3RlbmVyIGZ1bmN0aW9ucwpAQCAtNDA0LDE0ICs0MDgsMjEgQEAgdm9pZCBJbnNw
ZWN0b3JEZWJ1Z2dlckFnZW50OjpmYWlsZWRUb1BhcnNlU291cmNlKGNvbnN0IFN0cmluZyYgdXJs
LCBjb25zdCBTdHJpbmcKICAgICBtX2Zyb250ZW5kLT5zY3JpcHRGYWlsZWRUb1BhcnNlKHVybCwg
ZGF0YSwgZmlyc3RMaW5lLCBlcnJvckxpbmUsIGVycm9yTWVzc2FnZSk7CiB9CiAKLXZvaWQgSW5z
cGVjdG9yRGVidWdnZXJBZ2VudDo6ZGlkUGF1c2UoU2NyaXB0U3RhdGUqIHNjcmlwdFN0YXRlKQor
dm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpkaWRQYXVzZShTY3JpcHRTdGF0ZSogc2NyaXB0
U3RhdGUsIGNvbnN0IFNjcmlwdFZhbHVlJiBjYWxsRnJhbWVzLCBjb25zdCBTY3JpcHRWYWx1ZSYg
ZXhjZXB0aW9uKQogewogICAgIEFTU0VSVChzY3JpcHRTdGF0ZSAmJiAhbV9wYXVzZWRTY3JpcHRT
dGF0ZSk7CiAgICAgbV9wYXVzZWRTY3JpcHRTdGF0ZSA9IHNjcmlwdFN0YXRlOworICAgIG1fY3Vy
cmVudENhbGxTdGFjayA9IGNhbGxGcmFtZXM7CiAKICAgICBpZiAoIW1fYnJlYWtQcm9ncmFtRGV0
YWlscykKICAgICAgICAgbV9icmVha1Byb2dyYW1EZXRhaWxzID0gSW5zcGVjdG9yT2JqZWN0Ojpj
cmVhdGUoKTsKLSAgICBtX2JyZWFrUHJvZ3JhbURldGFpbHMtPnNldFZhbHVlKCJjYWxsRnJhbWVz
IiwgY3VycmVudENhbGxGcmFtZXMoKSk7CisgICAgbV9icmVha1Byb2dyYW1EZXRhaWxzLT5zZXRW
YWx1ZSgiY2FsbEZyYW1lcyIsIHdyYXBDYWxsRnJhbWVzKHNjcmlwdFN0YXRlLCBjYWxsRnJhbWVz
KSk7CisKKyAgICBpZiAoIWV4Y2VwdGlvbi5oYXNOb1ZhbHVlKCkpIHsKKyAgICAgICAgSW5qZWN0
ZWRTY3JpcHQgaW5qZWN0ZWRTY3JpcHQgPSBtX2luamVjdGVkU2NyaXB0TWFuYWdlci0+aW5qZWN0
ZWRTY3JpcHRGb3Ioc2NyaXB0U3RhdGUpOworICAgICAgICBpZiAoIWluamVjdGVkU2NyaXB0Lmhh
c05vVmFsdWUoKSkKKyAgICAgICAgICAgIG1fYnJlYWtQcm9ncmFtRGV0YWlscy0+c2V0VmFsdWUo
ImV4Y2VwdGlvbiIsIGluamVjdGVkU2NyaXB0LndyYXBPYmplY3QoZXhjZXB0aW9uLCAiYmFja3Ry
YWNlIikpOworICAgIH0KIAogICAgIG1fZnJvbnRlbmQtPnBhdXNlZChtX2JyZWFrUHJvZ3JhbURl
dGFpbHMpOwogICAgIG1famF2YVNjcmlwdFBhdXNlU2NoZWR1bGVkID0gZmFsc2U7CkBAIC00MjUs
NiArNDM2LDcgQEAgdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpkaWRQYXVzZShTY3JpcHRT
dGF0ZSogc2NyaXB0U3RhdGUpCiB2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmRpZENvbnRp
bnVlKCkKIHsKICAgICBtX3BhdXNlZFNjcmlwdFN0YXRlID0gMDsKKyAgICBtX2N1cnJlbnRDYWxs
U3RhY2sgPSBTY3JpcHRWYWx1ZSgpOwogICAgIG1fYnJlYWtQcm9ncmFtRGV0YWlscyA9IDA7CiAg
ICAgbV9mcm9udGVuZC0+cmVzdW1lZCgpOwogfQpAQCAtNDQwLDYgKzQ1Miw3IEBAIHZvaWQgSW5z
cGVjdG9yRGVidWdnZXJBZ2VudDo6YnJlYWtQcm9ncmFtKERlYnVnZ2VyRXZlbnRUeXBlIHR5cGUs
IFBhc3NSZWZQdHI8SW5zCiB2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmNsZWFyKCkKIHsK
ICAgICBtX3BhdXNlZFNjcmlwdFN0YXRlID0gMDsKKyAgICBtX2N1cnJlbnRDYWxsU3RhY2sgPSBT
Y3JpcHRWYWx1ZSgpOwogICAgIG1fc2NyaXB0cy5jbGVhcigpOwogICAgIG1fYnJlYWtwb2ludElk
VG9EZWJ1Z1NlcnZlckJyZWFrcG9pbnRJZHMuY2xlYXIoKTsKICAgICBtX2NvbnRpbnVlVG9Mb2Nh
dGlvbkJyZWFrcG9pbnRJZCA9IFN0cmluZygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmgKaW5kZXggNGMyZTg1NWZiZDdhNTkzNDlmZmIx
MDllODVkYWQ3MzRiZjI3ZmRkOS4uZTE3MWMwNjM4NDBlYjc3MDRiOGRmMjYwODJmYmM5NDE0YThj
Mzc4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRlYnVn
Z2VyQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGVidWdn
ZXJBZ2VudC5oCkBAIC01Myw2ICs1Myw3IEBAIGNsYXNzIEluc3BlY3RvclN0YXRlOwogY2xhc3Mg
SW5zcGVjdG9yVmFsdWU7CiBjbGFzcyBJbnN0cnVtZW50aW5nQWdlbnRzOwogY2xhc3MgU2NyaXB0
RGVidWdTZXJ2ZXI7CitjbGFzcyBTY3JpcHRWYWx1ZTsKIAogdHlwZWRlZiBTdHJpbmcgRXJyb3JT
dHJpbmc7CiAKQEAgLTExOCwxMCArMTE5LDExIEBAIHByaXZhdGU6CiAgICAgdm9pZCBlbmFibGUo
Ym9vbCByZXN0b3JpbmdGcm9tU3RhdGUpOwogCiAgICAgUGFzc1JlZlB0cjxJbnNwZWN0b3JBcnJh
eT4gY3VycmVudENhbGxGcmFtZXMoKTsKKyAgICBQYXNzUmVmUHRyPEluc3BlY3RvckFycmF5PiB3
cmFwQ2FsbEZyYW1lcyhTY3JpcHRTdGF0ZSosIGNvbnN0IFNjcmlwdFZhbHVlJik7CiAKICAgICB2
aXJ0dWFsIHZvaWQgZGlkUGFyc2VTb3VyY2UoY29uc3QgU3RyaW5nJiBzb3VyY2VJRCwgY29uc3Qg
U3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgZGF0YSwgaW50IGxpbmVPZmZzZXQsIGludCBjb2x1
bW5PZmZzZXQsIGJvb2wgaXNDb250ZW50U2NyaXB0KTsKICAgICB2aXJ0dWFsIHZvaWQgZmFpbGVk
VG9QYXJzZVNvdXJjZShjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiBkYXRhLCBpbnQg
Zmlyc3RMaW5lLCBpbnQgZXJyb3JMaW5lLCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSk7Ci0g
ICAgdmlydHVhbCB2b2lkIGRpZFBhdXNlKFNjcmlwdFN0YXRlKik7CisgICAgdmlydHVhbCB2b2lk
IGRpZFBhdXNlKFNjcmlwdFN0YXRlKiwgY29uc3QgU2NyaXB0VmFsdWUmIGNhbGxGcmFtZXMsIGNv
bnN0IFNjcmlwdFZhbHVlJiBleGNlcHRpb24pOwogICAgIHZpcnR1YWwgdm9pZCBkaWRDb250aW51
ZSgpOwogCiAgICAgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IHJlc29sdmVCcmVha3BvaW50
KGNvbnN0IFN0cmluZyYgYnJlYWtwb2ludElkLCBjb25zdCBTdHJpbmcmIHNvdXJjZUlkLCBjb25z
dCBTY3JpcHRCcmVha3BvaW50Jik7CkBAIC0xNjAsNiArMTYyLDcgQEAgcHJpdmF0ZToKICAgICBJ
bmplY3RlZFNjcmlwdE1hbmFnZXIqIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOwogICAgIEluc3Bl
Y3RvckZyb250ZW5kOjpEZWJ1Z2dlciogbV9mcm9udGVuZDsKICAgICBTY3JpcHRTdGF0ZSogbV9w
YXVzZWRTY3JpcHRTdGF0ZTsKKyAgICBTY3JpcHRWYWx1ZSBtX2N1cnJlbnRDYWxsU3RhY2s7CiAg
ICAgU2NyaXB0c01hcCBtX3NjcmlwdHM7CiAgICAgQnJlYWtwb2ludElkVG9EZWJ1Z1NlcnZlckJy
ZWFrcG9pbnRJZHNNYXAgbV9icmVha3BvaW50SWRUb0RlYnVnU2VydmVyQnJlYWtwb2ludElkczsK
ICAgICBTdHJpbmcgbV9jb250aW51ZVRvTG9jYXRpb25CcmVha3BvaW50SWQ7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvU2NyaXB0RGVidWdMaXN0ZW5lci5oIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL1NjcmlwdERlYnVnTGlzdGVuZXIuaAppbmRleCA0YTkzYTRjYTY5
YjY1N2FmZjkzMzc4ODI1MGQyNzZiMjI5NDkwY2IxLi45M2ZkMGZjZTc0YWNhZDY1NjAyMDU5MGUw
MDdmZTU3MmIzZmNkYmIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvU2Ny
aXB0RGVidWdMaXN0ZW5lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9TY3JpcHRE
ZWJ1Z0xpc3RlbmVyLmgKQEAgLTM2LDYgKzM2LDcgQEAKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5o
PgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBTY3JpcHRWYWx1ZTsKIAogY2xhc3MgU2Ny
aXB0RGVidWdMaXN0ZW5lciB7CiBwdWJsaWM6CkBAIC00Myw3ICs0NCw3IEBAIHB1YmxpYzoKIAog
ICAgIHZpcnR1YWwgdm9pZCBkaWRQYXJzZVNvdXJjZShjb25zdCBTdHJpbmcmICBzb3VyY2VJRCwg
Y29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgZGF0YSwgaW50IGxpbmVPZmZzZXQsIGlu
dCBjb2x1bW5PZmZzZXQsIGJvb2wgaXNDb250ZW50U2NyaXB0KSA9IDA7CiAgICAgdmlydHVhbCB2
b2lkIGZhaWxlZFRvUGFyc2VTb3VyY2UoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYg
ZGF0YSwgaW50IGZpcnN0TGluZSwgaW50IGVycm9yTGluZSwgY29uc3QgU3RyaW5nJiBlcnJvck1l
c3NhZ2UpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUGF1c2UoU2NyaXB0U3RhdGUqKSA9IDA7
CisgICAgdmlydHVhbCB2b2lkIGRpZFBhdXNlKFNjcmlwdFN0YXRlKiwgY29uc3QgU2NyaXB0VmFs
dWUmIGNhbGxGcmFtZXMsIGNvbnN0IFNjcmlwdFZhbHVlJiBleGNlcHRpb24pID0gMDsKICAgICB2
aXJ0dWFsIHZvaWQgZGlkQ29udGludWUoKSA9IDA7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvV29ya2VySW5zcGVjdG9yQ29udHJvbGxlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvV29ya2VySW5zcGVjdG9yQ29udHJvbGxlci5jcHAKaW5kZXggYTNl
NzdiNzg3NTQyOWNjNDk5MjFkNjQxMjA4NzA2ZmViZWQ3NjY3MC4uZGJjYjg3NmQ3YzU2MGI2OGNh
NzhhZmJmNjVjYmM5ZGE2ZDliZmVmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL1dvcmtlckluc3BlY3RvckNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9Xb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyLmNwcApAQCAtODYsOSArODYsNiBAQCBX
b3JrZXJJbnNwZWN0b3JDb250cm9sbGVyOjpXb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyKFdvcmtl
ckNvbnRleHQqIHdvcmtlckNvbnRleAogI2lmIEVOQUJMRShET01fU1RPUkFHRSkKICAgICAgICAg
LCAwCiAjZW5kaWYKLSNpZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikKLSAgICAgICAgLCBt
X2RlYnVnZ2VyQWdlbnQuZ2V0KCkKLSNlbmRpZgogICAgICk7CiB9CiAgCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>91112</attachid>
            <date>2011-04-26 08:41:52 -0700</date>
            <delta_ts>2011-04-26 08:44:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-58996-20110426194149.patch</filename>
            <type>text/plain</type>
            <size>33614</size>
            <attacher name="Yury Semikhatsky">yurys</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODQ4OTcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA2ZTNkOTM2MTBjYTM0N2Mz
ZGI1M2VhMDNkNjM2YmM1ZDRlODA0OWU1Li4zYzE2NzkyNjk1NTA1ZTNkOGRjNTk5ODMxMDVkYjY2
MWUyZjlmYjI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTMgQEAKKzIwMTEtMDQtMjYgIFl1cnkg
U2VtaWtoYXRza3kgIDx5dXJ5c0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogW3Byb3RvY29sXSBQYXVz
ZWQgZXZlbnQgc2hvdWxkIGV4cG9zZSBleGNlcHRpb24gdmFsdWUgdGhhdCBjYXVzZWQgaXQKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU4OTk2CisKKyAg
ICAgICAgRGVidWcucGF1c2UgZXZlbnQgbm93IGNvbnRhaW5zIGFuIG9wdGlvbmFsIHJlZmVyZW5j
ZSB0byB0aGUgZXhjZXB0aW9uCisgICAgICAgIG9iamVjdCBpbiBjYXNlIHNjcmlwdCBleGVjdXRp
b24gaXMgcGF1c2VkIG9uIGEgSmF2YVNjcmlwdCBleGNlcHRpb24uCisKKyAgICAgICAgQWxzbyBK
YXZhU2NyaXB0IGNhbGwgZnJhbWVzIGFyZSBwYXNzZWQgZGlyZWN0bHkgaW50byB0aGUgaW5qZWN0
ZWQgc2NyaXB0IHdoZW4KKyAgICAgICAgd2UgbmVlZCB0byB3cmFwIHRoZW0gZm9yIHBhc3Npbmcg
dG8gdGhlIGZyb250LWVuZC4gVGhpcyBjaGFuZ2UgYnJlYWtzIGN5Y2xpYworICAgICAgICBkZXBl
bmRlbmN5IFNjcmlwdERlYnVnU2VydmVyLT5JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LT5JbmplY3Rl
ZFNjcmlwdC0+SW5qZWN0ZWRTY3JpcHRIb3N0LT5TY3JpcHREZWJ1Z1NlcnZlcgorCisgICAgICAg
ICogYmluZGluZ3MvanMvSlNJbmplY3RlZFNjcmlwdEhvc3RDdXN0b20uY3BwOgorICAgICAgICAq
IGJpbmRpbmdzL2pzL1NjcmlwdERlYnVnU2VydmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNj
cmlwdERlYnVnU2VydmVyOjpkaXNwYXRjaERpZFBhdXNlKToKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9TY3JpcHREZWJ1Z1NlcnZlci5oOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1NjcmlwdERlYnVn
U2VydmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdERlYnVnU2VydmVyOjpicmVha1By
b2dyYW0pOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RGVidWdTZXJ2ZXI6OmVkaXRTY3JpcHRT
b3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RGVidWdTZXJ2ZXI6OmJyZWFrUHJvZ3Jh
bUNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdERlYnVnU2VydmVyOjpoYW5kbGVW
OERlYnVnRXZlbnQpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1NjcmlwdERlYnVnU2VydmVyLmg6
CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4SW5qZWN0ZWRTY3JpcHRIb3N0Q3VzdG9t
LmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SW5qZWN0ZWRTY3JpcHQ6OmV2YWx1YXRlT25DYWxsRnJhbWUpOgorICAgICAgICAo
V2ViQ29yZTo6SW5qZWN0ZWRTY3JpcHQ6OndyYXBDYWxsRnJhbWVzKToKKyAgICAgICAgKiBpbnNw
ZWN0b3IvSW5qZWN0ZWRTY3JpcHQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5qZWN0ZWRTY3Jp
cHRIb3N0LmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRIb3N0Lmg6Cisg
ICAgICAgIChXZWJDb3JlOjpJbmplY3RlZFNjcmlwdEhvc3Q6OmluaXQpOgorICAgICAgICAqIGlu
c3BlY3Rvci9JbmplY3RlZFNjcmlwdEhvc3QuaWRsOgorICAgICAgICAqIGluc3BlY3Rvci9Jbmpl
Y3RlZFNjcmlwdFNvdXJjZS5qczoKKyAgICAgICAgKC4pOgorICAgICAgICAqIGluc3BlY3Rvci9J
bnNwZWN0b3IuanNvbjoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQWdlbnQ6Okluc3BlY3RvckFnZW50KToKKyAgICAg
ICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpldmFsdWF0ZU9uQ2FsbEZyYW1lKToKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmN1cnJlbnRDYWxsRnJhbWVzKToK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OndyYXBDYWxsRnJhbWVz
KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmRpZFBhdXNlKToK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmRpZENvbnRpbnVlKToK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmNsZWFyKToKKyAgICAg
ICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5oOgorICAgICAgICAqIGluc3Bl
Y3Rvci9TY3JpcHREZWJ1Z0xpc3RlbmVyLmg6CisgICAgICAgICogaW5zcGVjdG9yL1dvcmtlcklu
c3BlY3RvckNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VySW5zcGVjdG9y
Q29udHJvbGxlcjo6V29ya2VySW5zcGVjdG9yQ29udHJvbGxlcik6CisKIDIwMTEtMDQtMjYgIERh
dmlkIExldmluICA8bGV2aW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFk
YW0gQmFydGguCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0luamVj
dGVkU2NyaXB0SG9zdEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0lu
amVjdGVkU2NyaXB0SG9zdEN1c3RvbS5jcHAKaW5kZXggN2JjOWI5ODhlNDFiMzdlMjAwYjQ3MTk2
M2QyMzA1YmRhZTkyMTRiYS4uYTU4OWU0ZjM4NDg5OTZhNDViMDVmNGE5ZDFhMDE1ZmViMTUyOTc4
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJbmplY3RlZFNjcmlw
dEhvc3RDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSW5qZWN0
ZWRTY3JpcHRIb3N0Q3VzdG9tLmNwcApAQCAtNTEsMTIgKzUxLDYgQEAKICNlbmRpZgogI2luY2x1
ZGUgPHJ1bnRpbWUvSlNMb2NrLmg+CiAKLSNpZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikK
LSNpbmNsdWRlICJKYXZhU2NyaXB0Q2FsbEZyYW1lLmgiCi0jaW5jbHVkZSAiSlNKYXZhU2NyaXB0
Q2FsbEZyYW1lLmgiCi0jaW5jbHVkZSAiU2NyaXB0RGVidWdTZXJ2ZXIuaCIKLSNlbmRpZgotCiB1
c2luZyBuYW1lc3BhY2UgSlNDOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC03NCwyMSArNjgs
NiBAQCBTY3JpcHRWYWx1ZSBJbmplY3RlZFNjcmlwdEhvc3Q6Om5vZGVBc1NjcmlwdFZhbHVlKFNj
cmlwdFN0YXRlKiBzdGF0ZSwgTm9kZSogbm9kZQogICAgIHJldHVybiBTY3JpcHRWYWx1ZShzdGF0
ZS0+Z2xvYmFsRGF0YSgpLCB0b0pTKHN0YXRlLCBkZXByZWNhdGVkR2xvYmFsT2JqZWN0Rm9yUHJv
dG90eXBlKHN0YXRlKSwgbm9kZSkpOwogfQogCi1KU1ZhbHVlIEpTSW5qZWN0ZWRTY3JpcHRIb3N0
OjpjdXJyZW50Q2FsbEZyYW1lKEV4ZWNTdGF0ZSogZXhlYykKLXsKLSNpZiBFTkFCTEUoSkFWQVND
UklQVF9ERUJVR0dFUikKLSAgICBKYXZhU2NyaXB0Q2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBpbXBs
KCktPmRlYnVnZ2VyQWdlbnQoKS0+c2NyaXB0RGVidWdTZXJ2ZXIoKS5jdXJyZW50Q2FsbEZyYW1l
KCk7Ci0gICAgaWYgKCFjYWxsRnJhbWUgfHwgIWNhbGxGcmFtZS0+aXNWYWxpZCgpKQotICAgICAg
ICByZXR1cm4ganNVbmRlZmluZWQoKTsKLQotICAgIEpTTG9jayBsb2NrKFNpbGVuY2VBc3NlcnRp
b25zT25seSk7Ci0gICAgcmV0dXJuIHRvSlMoZXhlYywgZ2xvYmFsT2JqZWN0KCksIGNhbGxGcmFt
ZSk7Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTShleGVjKTsKLSAgICByZXR1cm4ganNVbmRlZmlu
ZWQoKTsKLSNlbmRpZgotfQotCiBKU1ZhbHVlIEpTSW5qZWN0ZWRTY3JpcHRIb3N0OjppbnNwZWN0
ZWROb2RlKEV4ZWNTdGF0ZSogZXhlYykKIHsKICAgICBpZiAoZXhlYy0+YXJndW1lbnRDb3VudCgp
IDwgMSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdERlYnVn
U2VydmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdERlYnVnU2VydmVy
LmNwcAppbmRleCBlN2VlNjhiY2UyMGIwNjA2N2M1YTQ3ZWIyZDcwMjI2ZTYyMDAzM2IyLi4wNzZj
YzY2YzAwZmUzOWQ0NzJkMmUzZDNmYjcwMThmZGQ2Mjk2YTNiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHREZWJ1Z1NlcnZlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvU2NyaXB0RGVidWdTZXJ2ZXIuY3BwCkBAIC0zNCw2ICszNCw3IEBA
CiAKICNpbmNsdWRlICJFdmVudExvb3AuaCIKICNpbmNsdWRlICJGcmFtZS5oIgorI2luY2x1ZGUg
IkpTSmF2YVNjcmlwdENhbGxGcmFtZS5oIgogI2luY2x1ZGUgIkphdmFTY3JpcHRDYWxsRnJhbWUu
aCIKICNpbmNsdWRlICJTY3JpcHRCcmVha3BvaW50LmgiCiAjaW5jbHVkZSAiU2NyaXB0RGVidWdM
aXN0ZW5lci5oIgpAQCAtMTk0LDE4ICsxOTUsMjIgQEAgYm9vbCBTY3JpcHREZWJ1Z1NlcnZlcjo6
ZWRpdFNjcmlwdFNvdXJjZShjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBTdHJpbmcqKQog
ICAgIHJldHVybiBmYWxzZTsKIH0KIAotSmF2YVNjcmlwdENhbGxGcmFtZSogU2NyaXB0RGVidWdT
ZXJ2ZXI6OmN1cnJlbnRDYWxsRnJhbWUoKQotewotICAgIGlmICghbV9wYXVzZWQpCi0gICAgICAg
IHJldHVybiAwOwotICAgIHJldHVybiBtX2N1cnJlbnRDYWxsRnJhbWUuZ2V0KCk7Ci19Ci0KIHZv
aWQgU2NyaXB0RGVidWdTZXJ2ZXI6OmRpc3BhdGNoRGlkUGF1c2UoU2NyaXB0RGVidWdMaXN0ZW5l
ciogbGlzdGVuZXIpCiB7CiAgICAgQVNTRVJUKG1fcGF1c2VkKTsKLSAgICBTY3JpcHRTdGF0ZSog
c3RhdGUgPSBtX2N1cnJlbnRDYWxsRnJhbWUtPnNjb3BlQ2hhaW4oKS0+Z2xvYmFsT2JqZWN0LT5n
bG9iYWxFeGVjKCk7Ci0gICAgbGlzdGVuZXItPmRpZFBhdXNlKHN0YXRlKTsKKyAgICBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9jdXJyZW50Q2FsbEZyYW1lLT5zY29wZUNoYWluKCkt
Pmdsb2JhbE9iamVjdC5nZXQoKTsKKyAgICBTY3JpcHRTdGF0ZSogc3RhdGUgPSBnbG9iYWxPYmpl
Y3QtPmdsb2JhbEV4ZWMoKTsKKyAgICBKU1ZhbHVlIGpzQ2FsbEZyYW1lOworICAgIHsKKyAgICAg
ICAgaWYgKG1fY3VycmVudENhbGxGcmFtZS0+aXNWYWxpZCgpKSB7CisgICAgICAgICAgICBKU0xv
Y2sgbG9jayhTaWxlbmNlQXNzZXJ0aW9uc09ubHkpOworICAgICAgICAgICAgQVNTRVJUKGRvbUds
b2JhbE9iamVjdC0+Y2xhc3NJbmZvKCkgPT0gJkpTRE9NR2xvYmFsT2JqZWN0OjpjbGFzc0luZm8p
OworICAgICAgICAgICAgSlNET01HbG9iYWxPYmplY3QqIGRvbUdsb2JhbE9iamVjdCA9IHN0YXRp
Y19jYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KTsKKyAgICAgICAgICAgIGpz
Q2FsbEZyYW1lID0gdG9KUyhzdGF0ZSwgZG9tR2xvYmFsT2JqZWN0LCBtX2N1cnJlbnRDYWxsRnJh
bWUuZ2V0KCkpOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIGpzQ2FsbEZyYW1lID0ganNV
bmRlZmluZWQoKTsKKyAgICB9CisgICAgbGlzdGVuZXItPmRpZFBhdXNlKHN0YXRlLCBTY3JpcHRW
YWx1ZShzdGF0ZS0+Z2xvYmFsRGF0YSgpLCBqc0NhbGxGcmFtZSksIFNjcmlwdFZhbHVlKCkpOwog
fQogCiB2b2lkIFNjcmlwdERlYnVnU2VydmVyOjpkaXNwYXRjaERpZENvbnRpbnVlKFNjcmlwdERl
YnVnTGlzdGVuZXIqIGxpc3RlbmVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvU2NyaXB0RGVidWdTZXJ2ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Nj
cmlwdERlYnVnU2VydmVyLmgKaW5kZXggZjZhYzlhMWNjZDQ1NTA4YzA5ZTk3NmVhNzY3MDg0ODU4
MGE3YjNhZS4uMmU5MmE0MDAzMDk1M2FhYWExMmRjOWJiOTlkNGNkYWEwMWNhOTUzZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0RGVidWdTZXJ2ZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHREZWJ1Z1NlcnZlci5oCkBAIC04Myw4
ICs4Myw2IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlY29tcGlsZUFsbEpTRnVuY3Rpb25zU29vbigp
OwogICAgIHZpcnR1YWwgdm9pZCByZWNvbXBpbGVBbGxKU0Z1bmN0aW9ucyhUaW1lcjxTY3JpcHRE
ZWJ1Z1NlcnZlcj4qID0gMCkgPSAwOwogCi0gICAgSmF2YVNjcmlwdENhbGxGcmFtZSogY3VycmVu
dENhbGxGcmFtZSgpOwotCiBwcm90ZWN0ZWQ6CiAgICAgdHlwZWRlZiBIYXNoU2V0PFNjcmlwdERl
YnVnTGlzdGVuZXIqPiBMaXN0ZW5lclNldDsKICAgICB0eXBlZGVmIHZvaWQgKFNjcmlwdERlYnVn
U2VydmVyOjoqSmF2YVNjcmlwdEV4ZWN1dGlvbkNhbGxiYWNrKShTY3JpcHREZWJ1Z0xpc3RlbmVy
Kik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHREZWJ1Z1Nl
cnZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHREZWJ1Z1NlcnZlci5j
cHAKaW5kZXggOTYxMTczY2Q5NDFkYjEwNTdlOWI4OGE3ODAwNzViZTQyNDU5ODkxNC4uNGYxYzQ0
MWQ3YjA1NzJhMWJiYTdiNTZlNDJkMDRmYTNjNWIwMzYzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0RGVidWdTZXJ2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L1NjcmlwdERlYnVnU2VydmVyLmNwcApAQCAtMzcsNiArMzcsNyBAQAog
I2luY2x1ZGUgIkphdmFTY3JpcHRDYWxsRnJhbWUuaCIKICNpbmNsdWRlICJTY3JpcHREZWJ1Z0xp
c3RlbmVyLmgiCiAjaW5jbHVkZSAiVjhCaW5kaW5nLmgiCisjaW5jbHVkZSAiVjhKYXZhU2NyaXB0
Q2FsbEZyYW1lLmgiCiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CkBAIC0xNzAsMTcgKzE3MSwxNiBAQCB2b2lkIFNjcmlwdERlYnVnU2VydmVyOjpi
cmVha1Byb2dyYW0oKQogICAgIGlmIChjb250ZXh0LklzRW1wdHkoKSkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgbV9wYXVzZWRQYWdlQ29udGV4dCA9ICpjb250ZXh0OworICAgIG1fcGF1c2VkQ29u
dGV4dCA9ICpjb250ZXh0OwogICAgIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uPiBicmVha1Byb2dy
YW1GdW5jdGlvbiA9IG1fYnJlYWtQcm9ncmFtQ2FsbGJhY2tUZW1wbGF0ZS5nZXQoKS0+R2V0RnVu
Y3Rpb24oKTsKICAgICB2ODo6RGVidWc6OkNhbGwoYnJlYWtQcm9ncmFtRnVuY3Rpb24pOwotICAg
IG1fcGF1c2VkUGFnZUNvbnRleHQuQ2xlYXIoKTsKKyAgICBtX3BhdXNlZENvbnRleHQuQ2xlYXIo
KTsKIH0KIAogdm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6Y29udGludWVQcm9ncmFtKCkKIHsKICAg
ICBpZiAoaXNQYXVzZWQoKSkKICAgICAgICAgcXVpdE1lc3NhZ2VMb29wT25QYXVzZSgpOwotICAg
IG1fY3VycmVudENhbGxGcmFtZS5jbGVhcigpOwogICAgIG1fZXhlY3V0aW9uU3RhdGUuY2xlYXIo
KTsKIH0KIApAQCAtMjExLDE0ICsyMTEsMTQgQEAgdm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6c3Rl
cE91dE9mRnVuY3Rpb24oKQogICAgIGNvbnRpbnVlUHJvZ3JhbSgpOwogfQogCi1ib29sIFNjcmlw
dERlYnVnU2VydmVyOjplZGl0U2NyaXB0U291cmNlKGNvbnN0IFN0cmluZyYgc291cmNlSUQsIGNv
bnN0IFN0cmluZyYgbmV3Q29udGVudCwgU3RyaW5nKiBlcnJvcikKK2Jvb2wgU2NyaXB0RGVidWdT
ZXJ2ZXI6OmVkaXRTY3JpcHRTb3VyY2UoY29uc3QgU3RyaW5nJiBzb3VyY2VJRCwgY29uc3QgU3Ry
aW5nJiBuZXdDb250ZW50LCBTdHJpbmcqIGVycm9yLCBTY3JpcHRWYWx1ZSogbmV3Q2FsbEZyYW1l
cykKIHsKICAgICBlbnN1cmVEZWJ1Z2dlclNjcmlwdENvbXBpbGVkKCk7CiAgICAgdjg6OkhhbmRs
ZVNjb3BlIHNjb3BlOwogCiAgICAgT3duUHRyPHY4OjpDb250ZXh0OjpTY29wZT4gY29udGV4dFNj
b3BlOwogICAgIGlmICghaXNQYXVzZWQoKSkKLSAgICAgICAgY29udGV4dFNjb3BlID0gYWRvcHRQ
dHIobmV3IHY4OjpDb250ZXh0OjpTY29wZSh2ODo6RGVidWc6OkdldERlYnVnQ29udGV4dCgpKSk7
CisgICAgICAgIGNvbnRleHRTY29wZS5zZXQobmV3IHY4OjpDb250ZXh0OjpTY29wZSh2ODo6RGVi
dWc6OkdldERlYnVnQ29udGV4dCgpKSk7CiAKICAgICB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvbj4g
ZnVuY3Rpb24gPSB2ODo6TG9jYWw8djg6OkZ1bmN0aW9uPjo6Q2FzdChtX2RlYnVnZ2VyU2NyaXB0
LmdldCgpLT5HZXQodjg6OlN0cmluZzo6TmV3KCJlZGl0U2NyaXB0U291cmNlIikpKTsKICAgICB2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gYXJndltdID0geyB2OFN0cmluZyhzb3VyY2VJRCksIHY4U3Ry
aW5nKG5ld0NvbnRlbnQpIH07CkBAIC0yMzcsMjAgKzIzNywyMCBAQCBib29sIFNjcmlwdERlYnVn
U2VydmVyOjplZGl0U2NyaXB0U291cmNlKGNvbnN0IFN0cmluZyYgc291cmNlSUQsIGNvbnN0IFN0
cmluZyYgbgogICAgIEFTU0VSVCghcmVzdWx0LklzRW1wdHkoKSk7CiAKICAgICAvLyBDYWxsIHN0
YWNrIG1heSBoYXZlIGNoYW5nZWQgYWZ0ZXIgaWYgdGhlIGVkaXRlZCBmdW5jdGlvbiB3YXMgb24g
dGhlIHN0YWNrLgotICAgIGlmIChtX2N1cnJlbnRDYWxsRnJhbWUpCi0gICAgICAgIG1fY3VycmVu
dENhbGxGcmFtZS5jbGVhcigpOworICAgIGlmIChpc1BhdXNlZCgpKQorICAgICAgICAqbmV3Q2Fs
bEZyYW1lcyA9IGN1cnJlbnRDYWxsRnJhbWUoKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotUGFz
c1JlZlB0cjxKYXZhU2NyaXB0Q2FsbEZyYW1lPiBTY3JpcHREZWJ1Z1NlcnZlcjo6Y3VycmVudENh
bGxGcmFtZSgpCitTY3JpcHRWYWx1ZSBTY3JpcHREZWJ1Z1NlcnZlcjo6Y3VycmVudENhbGxGcmFt
ZSgpCiB7Ci0gICAgaWYgKCFtX2N1cnJlbnRDYWxsRnJhbWUpIHsKLSAgICAgICAgdjg6OkhhbmRs
ZTx2ODo6RnVuY3Rpb24+IGN1cnJlbnRDYWxsRnJhbWVGdW5jdGlvbiA9IHY4OjpMb2NhbDx2ODo6
RnVuY3Rpb24+OjpDYXN0KG1fZGVidWdnZXJTY3JpcHQuZ2V0KCktPkdldCh2ODo6U3RyaW5nOjpO
ZXcoImN1cnJlbnRDYWxsRnJhbWUiKSkpOwotICAgICAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4g
YXJndltdID0geyBtX2V4ZWN1dGlvblN0YXRlLmdldCgpIH07Ci0gICAgICAgIHY4OjpIYW5kbGU8
djg6OlZhbHVlPiBjdXJyZW50Q2FsbEZyYW1lVjggPSBjdXJyZW50Q2FsbEZyYW1lRnVuY3Rpb24t
PkNhbGwobV9kZWJ1Z2dlclNjcmlwdC5nZXQoKSwgMSwgYXJndik7Ci0gICAgICAgIG1fY3VycmVu
dENhbGxGcmFtZSA9IEphdmFTY3JpcHRDYWxsRnJhbWU6OmNyZWF0ZSh2ODo6RGVidWc6OkdldERl
YnVnQ29udGV4dCgpLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KGN1cnJlbnRDYWxsRnJh
bWVWOCkpOwotICAgIH0KLSAgICByZXR1cm4gbV9jdXJyZW50Q2FsbEZyYW1lOworICAgIEFTU0VS
VChpc1BhdXNlZCgpKTsKKyAgICB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvbj4gY3VycmVudENhbGxG
cmFtZUZ1bmN0aW9uID0gdjg6OkxvY2FsPHY4OjpGdW5jdGlvbj46OkNhc3QobV9kZWJ1Z2dlclNj
cmlwdC5nZXQoKS0+R2V0KHY4OjpTdHJpbmc6Ok5ldygiY3VycmVudENhbGxGcmFtZSIpKSk7Cisg
ICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGFyZ3ZbXSA9IHsgbV9leGVjdXRpb25TdGF0ZS5nZXQo
KSB9OworICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBjdXJyZW50Q2FsbEZyYW1lVjggPSBjdXJy
ZW50Q2FsbEZyYW1lRnVuY3Rpb24tPkNhbGwobV9kZWJ1Z2dlclNjcmlwdC5nZXQoKSwgMSwgYXJn
dik7CisgICAgUmVmUHRyPEphdmFTY3JpcHRDYWxsRnJhbWU+IGN1cnJlbnRDYWxsRnJhbWUgPSBK
YXZhU2NyaXB0Q2FsbEZyYW1lOjpjcmVhdGUodjg6OkRlYnVnOjpHZXREZWJ1Z0NvbnRleHQoKSwg
djg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdChjdXJyZW50Q2FsbEZyYW1lVjgpKTsKKyAgICB2
ODo6Q29udGV4dDo6U2NvcGUgY29udGV4dFNjb3BlKG1fcGF1c2VkQ29udGV4dCk7CisgICAgcmV0
dXJuIFNjcmlwdFZhbHVlKHRvVjgoY3VycmVudENhbGxGcmFtZS5yZWxlYXNlKCkpKTsKIH0KIAog
dm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6aW50ZXJydXB0QW5kUnVuKFBhc3NPd25QdHI8VGFzaz4g
dGFzaykKQEAgLTI3NCwyNSArMjc0LDI2IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBTY3JpcHRE
ZWJ1Z1NlcnZlcjo6YnJlYWtQcm9ncmFtQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50CiAgICAg
QVNTRVJUKDIgPT0gYXJncy5MZW5ndGgoKSk7CiAgICAgCiAgICAgU2NyaXB0RGVidWdTZXJ2ZXIq
IHRoaXNQdHIgPSB0b1NjcmlwdERlYnVnU2VydmVyKGFyZ3MuRGF0YSgpKTsKLSAgICB0aGlzUHRy
LT5icmVha1Byb2dyYW0odjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdChhcmdzWzBdKSk7Cisg
ICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGV4Y2VwdGlvbjsKKyAgICB0aGlzUHRyLT5icmVha1By
b2dyYW0odjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdChhcmdzWzBdKSwgZXhjZXB0aW9uKTsK
ICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOwogfQogCi12b2lkIFNjcmlwdERlYnVnU2VydmVy
OjpicmVha1Byb2dyYW0odjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBleGVjdXRpb25TdGF0ZSkKK3Zv
aWQgU2NyaXB0RGVidWdTZXJ2ZXI6OmJyZWFrUHJvZ3JhbSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+
IGV4ZWN1dGlvblN0YXRlLCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gZXhjZXB0aW9uKQogewogICAg
IC8vIERvbid0IGFsbG93IG5lc3RlZCBicmVha3MuCiAgICAgaWYgKGlzUGF1c2VkKCkpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIFNjcmlwdERlYnVnTGlzdGVuZXIqIGxpc3RlbmVyID0gZ2V0RGVi
dWdMaXN0ZW5lckZvckNvbnRleHQobV9wYXVzZWRQYWdlQ29udGV4dCk7CisgICAgU2NyaXB0RGVi
dWdMaXN0ZW5lciogbGlzdGVuZXIgPSBnZXREZWJ1Z0xpc3RlbmVyRm9yQ29udGV4dChtX3BhdXNl
ZENvbnRleHQpOwogICAgIGlmICghbGlzdGVuZXIpCiAgICAgICAgIHJldHVybjsKIAogICAgIG1f
ZXhlY3V0aW9uU3RhdGUuc2V0KGV4ZWN1dGlvblN0YXRlKTsKLSAgICBTY3JpcHRTdGF0ZSogY3Vy
cmVudENhbGxGcmFtZVN0YXRlID0gU2NyaXB0U3RhdGU6OmZvckNvbnRleHQobV9wYXVzZWRQYWdl
Q29udGV4dCk7Ci0gICAgbGlzdGVuZXItPmRpZFBhdXNlKGN1cnJlbnRDYWxsRnJhbWVTdGF0ZSk7
CisgICAgU2NyaXB0U3RhdGUqIGN1cnJlbnRDYWxsRnJhbWVTdGF0ZSA9IFNjcmlwdFN0YXRlOjpm
b3JDb250ZXh0KG1fcGF1c2VkQ29udGV4dCk7CisgICAgbGlzdGVuZXItPmRpZFBhdXNlKGN1cnJl
bnRDYWxsRnJhbWVTdGF0ZSwgY3VycmVudENhbGxGcmFtZSgpLCBTY3JpcHRWYWx1ZShleGNlcHRp
b24pKTsKIAotICAgIHJ1bk1lc3NhZ2VMb29wT25QYXVzZShtX3BhdXNlZFBhZ2VDb250ZXh0KTsK
KyAgICBydW5NZXNzYWdlTG9vcE9uUGF1c2UobV9wYXVzZWRDb250ZXh0KTsKIH0KIAogdm9pZCBT
Y3JpcHREZWJ1Z1NlcnZlcjo6djhEZWJ1Z0V2ZW50Q2FsbGJhY2soY29uc3Qgdjg6OkRlYnVnOjpF
dmVudERldGFpbHMmIGV2ZW50RGV0YWlscykKQEAgLTMyOSwxNiArMzMwLDIzIEBAIHZvaWQgU2Ny
aXB0RGVidWdTZXJ2ZXI6OmhhbmRsZVY4RGVidWdFdmVudChjb25zdCB2ODo6RGVidWc6OkV2ZW50
RGV0YWlscyYgZXZlbnRECiAgICAgICAgICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IG9iamVj
dCA9IHY4OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3QodmFsdWUpOwogICAgICAgICAgICAgZGlz
cGF0Y2hEaWRQYXJzZVNvdXJjZShsaXN0ZW5lciwgb2JqZWN0KTsKICAgICAgICAgfSBlbHNlIGlm
IChldmVudCA9PSB2ODo6QnJlYWsgfHwgZXZlbnQgPT0gdjg6OkV4Y2VwdGlvbikgeworICAgICAg
ICAgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGV4Y2VwdGlvbjsKICAgICAgICAgICAgIGlmIChl
dmVudCA9PSB2ODo6RXhjZXB0aW9uKSB7CiAgICAgICAgICAgICAgICAgdjg6OkxvY2FsPHY4OjpT
dGFja1RyYWNlPiBzdGFja1RyYWNlID0gdjg6OlN0YWNrVHJhY2U6OkN1cnJlbnRTdGFja1RyYWNl
KDEpOwogICAgICAgICAgICAgICAgIC8vIFN0YWNrIHRyYWNlIGlzIGVtcHR5IGluIGNhc2Ugb2Yg
c3ludGF4IGVycm9yLiBTaWxlbnRseSBjb250aW51ZSBleGVjdXRpb24gaW4gc3VjaCBjYXNlcy4K
ICAgICAgICAgICAgICAgICBpZiAoIXN0YWNrVHJhY2UtPkdldEZyYW1lQ291bnQoKSkKICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgIHY4OjpIYW5kbGU8djg6Ok9i
amVjdD4gZXZlbnREYXRhID0gZXZlbnREZXRhaWxzLkdldEV2ZW50RGF0YSgpOworICAgICAgICAg
ICAgICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBleGNlcHRpb25HZXR0ZXJWYWx1ZSA9IGV2ZW50
RGF0YS0+R2V0KHY4OjpTdHJpbmc6Ok5ldygiZXhjZXB0aW9uIikpOworICAgICAgICAgICAgICAg
IGlmICghZXhjZXB0aW9uR2V0dGVyVmFsdWUuSXNFbXB0eSgpICYmIGV4Y2VwdGlvbkdldHRlclZh
bHVlLT5Jc0Z1bmN0aW9uKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgdjg6OkhhbmRsZTx2ODo6
VmFsdWU+IGFyZ3ZbXSA9IHsgdjg6OkhhbmRsZTx2ODo6VmFsdWU+KCkgfTsKKyAgICAgICAgICAg
ICAgICAgICAgZXhjZXB0aW9uID0gdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb24+OjpDYXN0KGV4Y2Vw
dGlvbkdldHRlclZhbHVlKS0+Q2FsbChldmVudERhdGEsIDAsIGFyZ3YpOworICAgICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgbV9wYXVzZWRQYWdlQ29udGV4dCA9
ICpldmVudENvbnRleHQ7Ci0gICAgICAgICAgICBicmVha1Byb2dyYW0oZXZlbnREZXRhaWxzLkdl
dEV4ZWN1dGlvblN0YXRlKCkpOwotICAgICAgICAgICAgbV9wYXVzZWRQYWdlQ29udGV4dC5DbGVh
cigpOworICAgICAgICAgICAgbV9wYXVzZWRDb250ZXh0ID0gKmV2ZW50Q29udGV4dDsKKyAgICAg
ICAgICAgIGJyZWFrUHJvZ3JhbShldmVudERldGFpbHMuR2V0RXhlY3V0aW9uU3RhdGUoKSwgZXhj
ZXB0aW9uKTsKKyAgICAgICAgICAgIG1fcGF1c2VkQ29udGV4dC5DbGVhcigpOwogICAgICAgICB9
CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0
RGVidWdTZXJ2ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdERlYnVnU2Vy
dmVyLmgKaW5kZXggOTNkODk3YzIyNmI1YjcxNjAyZTJlMzg1NWQ2Y2Y2NDU1MTMzODAyMi4uYjI5
ZWMwNDM1NmUyNzVjNGNjNGE1MDVmZDIxYTE0MWFlOTJhYzRkZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0RGVidWdTZXJ2ZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9TY3JpcHREZWJ1Z1NlcnZlci5oCkBAIC0zMyw3ICszMyw3IEBACiAK
ICNpZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikKIAotI2luY2x1ZGUgIkphdmFTY3JpcHRD
YWxsRnJhbWUuaCIKKyNpbmNsdWRlICJPd25IYW5kbGUuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0
cmluZy5oIgogI2luY2x1ZGUgIlNjcmlwdEJyZWFrcG9pbnQuaCIKICNpbmNsdWRlICJUaW1lci5o
IgpAQCAtNDYsNiArNDYsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBTY3JpcHRE
ZWJ1Z0xpc3RlbmVyOworY2xhc3MgU2NyaXB0VmFsdWU7CiAKIGNsYXNzIFNjcmlwdERlYnVnU2Vy
dmVyIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShTY3JpcHREZWJ1Z1NlcnZlcik7CkBAIC03
MiwxMyArNzMsMTEgQEAgcHVibGljOgogICAgIHZvaWQgc3RlcE92ZXJTdGF0ZW1lbnQoKTsKICAg
ICB2b2lkIHN0ZXBPdXRPZkZ1bmN0aW9uKCk7CiAKLSAgICBib29sIGVkaXRTY3JpcHRTb3VyY2Uo
Y29uc3QgU3RyaW5nJiBzb3VyY2VJRCwgY29uc3QgU3RyaW5nJiBuZXdDb250ZW50LCBTdHJpbmcq
IGVycm9yKTsKKyAgICBib29sIGVkaXRTY3JpcHRTb3VyY2UoY29uc3QgU3RyaW5nJiBzb3VyY2VJ
RCwgY29uc3QgU3RyaW5nJiBuZXdDb250ZW50LCBTdHJpbmcqIGVycm9yLCBTY3JpcHRWYWx1ZSog
bmV3Q2FsbEZyYW1lcyk7CiAKICAgICB2b2lkIHJlY29tcGlsZUFsbEpTRnVuY3Rpb25zU29vbigp
IHsgfQogICAgIHZvaWQgcmVjb21waWxlQWxsSlNGdW5jdGlvbnMoVGltZXI8U2NyaXB0RGVidWdT
ZXJ2ZXI+KiA9IDApIHsgfQogCi0gICAgUGFzc1JlZlB0cjxKYXZhU2NyaXB0Q2FsbEZyYW1lPiBj
dXJyZW50Q2FsbEZyYW1lKCk7Ci0KICAgICBjbGFzcyBUYXNrIHsKICAgICBwdWJsaWM6CiAgICAg
ICAgIHZpcnR1YWwgflRhc2soKSB7IH0KQEAgLTkxLDEyICs5MCwxNCBAQCBwcm90ZWN0ZWQ6CiAg
ICAgU2NyaXB0RGVidWdTZXJ2ZXIoKTsKICAgICB+U2NyaXB0RGVidWdTZXJ2ZXIoKSB7IH0KICAg
ICAKKyAgICBTY3JpcHRWYWx1ZSBjdXJyZW50Q2FsbEZyYW1lKCk7CisKICAgICB2aXJ0dWFsIFNj
cmlwdERlYnVnTGlzdGVuZXIqIGdldERlYnVnTGlzdGVuZXJGb3JDb250ZXh0KHY4OjpIYW5kbGU8
djg6OkNvbnRleHQ+KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHJ1bk1lc3NhZ2VMb29wT25QYXVz
ZSh2ODo6SGFuZGxlPHY4OjpDb250ZXh0PikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBxdWl0TWVz
c2FnZUxvb3BPblBhdXNlKCkgPSAwOwogCiAgICAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVl
PiBicmVha1Byb2dyYW1DYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKTsKLSAgICB2
b2lkIGJyZWFrUHJvZ3JhbSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGV4ZWN1dGlvblN0YXRlKTsK
KyAgICB2b2lkIGJyZWFrUHJvZ3JhbSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGV4ZWN1dGlvblN0
YXRlLCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gZXhjZXB0aW9uKTsKIAogICAgIHN0YXRpYyB2b2lk
IHY4RGVidWdFdmVudENhbGxiYWNrKGNvbnN0IHY4OjpEZWJ1Zzo6RXZlbnREZXRhaWxzJiBldmVu
dERldGFpbHMpOwogICAgIHZvaWQgaGFuZGxlVjhEZWJ1Z0V2ZW50KGNvbnN0IHY4OjpEZWJ1Zzo6
RXZlbnREZXRhaWxzJiBldmVudERldGFpbHMpOwpAQCAtMTA5LDkgKzExMCw4IEBAIHByb3RlY3Rl
ZDoKIAogICAgIFBhdXNlT25FeGNlcHRpb25zU3RhdGUgbV9wYXVzZU9uRXhjZXB0aW9uc1N0YXRl
OwogICAgIE93bkhhbmRsZTx2ODo6T2JqZWN0PiBtX2RlYnVnZ2VyU2NyaXB0OwotICAgIFJlZlB0
cjxKYXZhU2NyaXB0Q2FsbEZyYW1lPiBtX2N1cnJlbnRDYWxsRnJhbWU7CiAgICAgT3duSGFuZGxl
PHY4OjpPYmplY3Q+IG1fZXhlY3V0aW9uU3RhdGU7Ci0gICAgdjg6OkxvY2FsPHY4OjpDb250ZXh0
PiBtX3BhdXNlZFBhZ2VDb250ZXh0OworICAgIHY4OjpMb2NhbDx2ODo6Q29udGV4dD4gbV9wYXVz
ZWRDb250ZXh0OwogCiAgICAgYm9vbCBtX2JyZWFrcG9pbnRzQWN0aXZhdGVkOwogICAgIE93bkhh
bmRsZTx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gbV9icmVha1Byb2dyYW1DYWxsYmFja1RlbXBsYXRl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SW5qZWN0
ZWRTY3JpcHRIb3N0Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3Rv
bS9WOEluamVjdGVkU2NyaXB0SG9zdEN1c3RvbS5jcHAKaW5kZXggM2RiYWNiMjhlYzE0MzQ3NjBl
MmJhYjY1ZTA3NjBlNDdhNGUwNzhjMC4uZDQ5ZDYxZGU0NmMzMmNmZWZhN2RlMTBkZjc1NDBlMTYy
NTlkYzZlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4
SW5qZWN0ZWRTY3JpcHRIb3N0Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9jdXN0b20vVjhJbmplY3RlZFNjcmlwdEhvc3RDdXN0b20uY3BwCkBAIC0zNCwxNSArMzQs
MTIgQEAKICNpbmNsdWRlICJEYXRhYmFzZS5oIgogI2luY2x1ZGUgIkluamVjdGVkU2NyaXB0Lmgi
CiAjaW5jbHVkZSAiSW5qZWN0ZWRTY3JpcHRIb3N0LmgiCi0jaW5jbHVkZSAiSW5zcGVjdG9yRGVi
dWdnZXJBZ2VudC5oIgogI2luY2x1ZGUgIkluc3BlY3RvclZhbHVlcy5oIgotI2luY2x1ZGUgIlNj
cmlwdERlYnVnU2VydmVyLmgiCiAjaW5jbHVkZSAiU2NyaXB0VmFsdWUuaCIKICNpbmNsdWRlICJW
OEJpbmRpbmcuaCIKICNpbmNsdWRlICJWOEJpbmRpbmdTdGF0ZS5oIgogI2luY2x1ZGUgIlY4RGF0
YWJhc2UuaCIKICNpbmNsdWRlICJWOEhpZGRlblByb3BlcnR5TmFtZS5oIgotI2luY2x1ZGUgIlY4
SmF2YVNjcmlwdENhbGxGcmFtZS5oIgogI2luY2x1ZGUgIlY4Tm9kZS5oIgogI2luY2x1ZGUgIlY4
UHJveHkuaCIKICNpbmNsdWRlICJWOFN0b3JhZ2UuaCIKQEAgLTEwNiwxOCArMTAzLDYgQEAgdjg6
OkhhbmRsZTx2ODo6VmFsdWU+IFY4SW5qZWN0ZWRTY3JpcHRIb3N0OjppbnNwZWN0Q2FsbGJhY2so
Y29uc3Qgdjg6OkFyZ3VtZW50cyYKICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOwogfQogCi12
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhJbmplY3RlZFNjcmlwdEhvc3Q6OmN1cnJlbnRDYWxsRnJh
bWVDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQotewotI2lmIEVOQUJMRShKQVZB
U0NSSVBUX0RFQlVHR0VSKQotICAgIElOQ19TVEFUUygiSW5qZWN0ZWRTY3JpcHRIb3N0LmN1cnJl
bnRDYWxsRnJhbWUoKSIpOwotICAgIEluamVjdGVkU2NyaXB0SG9zdCogaG9zdCA9IFY4SW5qZWN0
ZWRTY3JpcHRIb3N0Ojp0b05hdGl2ZShhcmdzLkhvbGRlcigpKTsKLSAgICByZXR1cm4gdG9WOCho
b3N0LT5kZWJ1Z2dlckFnZW50KCktPnNjcmlwdERlYnVnU2VydmVyKCkuY3VycmVudENhbGxGcmFt
ZSgpKTsKLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKGFyZ3MpOwotICAgIHJldHVybiB2ODo6VW5k
ZWZpbmVkKCk7Ci0jZW5kaWYKLX0KLQogdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4SW5qZWN0ZWRT
Y3JpcHRIb3N0OjpkYXRhYmFzZUlkQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykK
IHsKICAgICBJTkNfU1RBVFMoIkluamVjdGVkU2NyaXB0SG9zdC5kYXRhYmFzZUlkKCkiKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHQuY3BwCmluZGV4IGU2NTMyOTAx
NmQwZmM5YmYzYTBiZjNiYzhmMDJhNmZlYmY4ZmQ5YzQuLmFlYjZmMzkwNjZlODlhMzdlMDUxMTNm
MWI4ODIxZDNkZWExODM5MWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bmplY3RlZFNjcmlwdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVk
U2NyaXB0LmNwcApAQCAtNzEsOSArNzEsMTAgQEAgdm9pZCBJbmplY3RlZFNjcmlwdDo6ZXZhbHVh
dGVPbihFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgb2JqZWN0SWQKICAg
ICBtYWtlT2JqZWN0Q2FsbChlcnJvclN0cmluZywgZnVuY3Rpb24sIHJlc3VsdCk7CiB9CiAKLXZv
aWQgSW5qZWN0ZWRTY3JpcHQ6OmV2YWx1YXRlT25DYWxsRnJhbWUoRXJyb3JTdHJpbmcqIGVycm9y
U3RyaW5nLCBjb25zdCBTdHJpbmcmIGNhbGxGcmFtZUlkLCBjb25zdCBTdHJpbmcmIGV4cHJlc3Np
b24sIGNvbnN0IFN0cmluZyYgb2JqZWN0R3JvdXAsIGJvb2wgaW5jbHVkZUNvbW1hbmRMaW5lQVBJ
LCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiogcmVzdWx0KQordm9pZCBJbmplY3RlZFNjcmlwdDo6
ZXZhbHVhdGVPbkNhbGxGcmFtZShFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFNjcmlw
dFZhbHVlJiBjYWxsRnJhbWVzLCBjb25zdCBTdHJpbmcmIGNhbGxGcmFtZUlkLCBjb25zdCBTdHJp
bmcmIGV4cHJlc3Npb24sIGNvbnN0IFN0cmluZyYgb2JqZWN0R3JvdXAsIGJvb2wgaW5jbHVkZUNv
bW1hbmRMaW5lQVBJLCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiogcmVzdWx0KQogewogICAgIFNj
cmlwdEZ1bmN0aW9uQ2FsbCBmdW5jdGlvbihtX2luamVjdGVkU2NyaXB0T2JqZWN0LCAiZXZhbHVh
dGVPbkNhbGxGcmFtZSIpOworICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KGNhbGxGcmFtZXMp
OwogICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KGNhbGxGcmFtZUlkKTsKICAgICBmdW5jdGlv
bi5hcHBlbmRBcmd1bWVudChleHByZXNzaW9uKTsKICAgICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVu
dChvYmplY3RHcm91cCk7CkBAIC0xMzEsMTAgKzEzMiwxMSBAQCB2b2lkIEluamVjdGVkU2NyaXB0
OjpyZWxlYXNlT2JqZWN0KGNvbnN0IFN0cmluZyYgb2JqZWN0SWQpCiB9CiAKICNpZiBFTkFCTEUo
SkFWQVNDUklQVF9ERUJVR0dFUikKLVBhc3NSZWZQdHI8SW5zcGVjdG9yQXJyYXk+IEluamVjdGVk
U2NyaXB0OjpjYWxsRnJhbWVzKCkKK1Bhc3NSZWZQdHI8SW5zcGVjdG9yQXJyYXk+IEluamVjdGVk
U2NyaXB0Ojp3cmFwQ2FsbEZyYW1lcyhjb25zdCBTY3JpcHRWYWx1ZSYgY2FsbEZyYW1lcykKIHsK
ICAgICBBU1NFUlQoIWhhc05vVmFsdWUoKSk7Ci0gICAgU2NyaXB0RnVuY3Rpb25DYWxsIGZ1bmN0
aW9uKG1faW5qZWN0ZWRTY3JpcHRPYmplY3QsICJjYWxsRnJhbWVzIik7CisgICAgU2NyaXB0RnVu
Y3Rpb25DYWxsIGZ1bmN0aW9uKG1faW5qZWN0ZWRTY3JpcHRPYmplY3QsICJ3cmFwQ2FsbEZyYW1l
cyIpOworICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KGNhbGxGcmFtZXMpOwogICAgIFNjcmlw
dFZhbHVlIGNhbGxGcmFtZXNWYWx1ZSA9IGZ1bmN0aW9uLmNhbGwoKTsKICAgICBSZWZQdHI8SW5z
cGVjdG9yVmFsdWU+IHJlc3VsdCA9IGNhbGxGcmFtZXNWYWx1ZS50b0luc3BlY3RvclZhbHVlKG1f
aW5qZWN0ZWRTY3JpcHRPYmplY3Quc2NyaXB0U3RhdGUoKSk7CiAgICAgaWYgKHJlc3VsdC0+dHlw
ZSgpID09IEluc3BlY3RvclZhbHVlOjpUeXBlQXJyYXkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbmplY3RlZFNjcmlwdC5oCmluZGV4IGFkY2IyMDhlN2RiOTA1ODc3YjA1YTI0NDBkYmQzZDVl
OGM3MWQ3YjkuLjRkODcwMzVlZDkxYjY3OGYyNzY5YTY4ZWVhNWI4ODNhMzFkYTBlMWEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdC5oCkBAIC01NywxNCArNTcsMTQg
QEAgcHVibGljOgogCiAgICAgdm9pZCBldmFsdWF0ZShFcnJvclN0cmluZyosIGNvbnN0IFN0cmlu
ZyYgZXhwcmVzc2lvbiwgY29uc3QgU3RyaW5nJiBvYmplY3RHcm91cCwgYm9vbCBpbmNsdWRlQ29t
bWFuZExpbmVBUEksIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+KiByZXN1bHQpOwogICAgIHZvaWQg
ZXZhbHVhdGVPbihFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgb2JqZWN0SWQsIGNvbnN0IFN0
cmluZyYgZXhwcmVzc2lvbiwgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4qIHJlc3VsdCk7Ci0gICAg
dm9pZCBldmFsdWF0ZU9uQ2FsbEZyYW1lKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBjYWxs
RnJhbWVJZCwgY29uc3QgU3RyaW5nJiBleHByZXNzaW9uLCBjb25zdCBTdHJpbmcmIG9iamVjdEdy
b3VwLCBib29sIGluY2x1ZGVDb21tYW5kTGluZUFQSSwgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4q
IHJlc3VsdCk7CisgICAgdm9pZCBldmFsdWF0ZU9uQ2FsbEZyYW1lKEVycm9yU3RyaW5nKiwgY29u
c3QgU2NyaXB0VmFsdWUmIGNhbGxGcmFtZXMsIGNvbnN0IFN0cmluZyYgY2FsbEZyYW1lSWQsIGNv
bnN0IFN0cmluZyYgZXhwcmVzc2lvbiwgY29uc3QgU3RyaW5nJiBvYmplY3RHcm91cCwgYm9vbCBp
bmNsdWRlQ29tbWFuZExpbmVBUEksIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+KiByZXN1bHQpOwog
ICAgIHZvaWQgZ2V0UHJvcGVydGllcyhFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgb2JqZWN0
SWQsIGJvb2wgaWdub3JlSGFzT3duUHJvcGVydHksIFJlZlB0cjxJbnNwZWN0b3JBcnJheT4qIHJl
c3VsdCk7CiAgICAgTm9kZSogbm9kZUZvck9iamVjdElkKGNvbnN0IFN0cmluZyYgb2JqZWN0SWQp
OwogICAgIHZvaWQgc2V0UHJvcGVydHlWYWx1ZShFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYg
b2JqZWN0SWQsIGNvbnN0IFN0cmluZyYgcHJvcGVydHlOYW1lLCBjb25zdCBTdHJpbmcmIGV4cHJl
c3Npb24pOwogICAgIHZvaWQgcmVsZWFzZU9iamVjdChjb25zdCBTdHJpbmcmIG9iamVjdElkKTsK
IAogI2lmIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKQotICAgIFBhc3NSZWZQdHI8SW5zcGVj
dG9yQXJyYXk+IGNhbGxGcmFtZXMoKTsKKyAgICBQYXNzUmVmUHRyPEluc3BlY3RvckFycmF5PiB3
cmFwQ2FsbEZyYW1lcyhjb25zdCBTY3JpcHRWYWx1ZSYpOwogI2VuZGlmCiAKICAgICBQYXNzUmVm
UHRyPEluc3BlY3Rvck9iamVjdD4gd3JhcE9iamVjdChTY3JpcHRWYWx1ZSwgY29uc3QgU3RyaW5n
JiBncm91cE5hbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVj
dGVkU2NyaXB0SG9zdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3Jp
cHRIb3N0LmNwcAppbmRleCBhMGJhZmRmOTI2M2NiNDE1Nzk0NzcxYTFlZDhjMWExYThlNzc2MWQ1
Li5iNTQyN2Y4Y2Q4ZThiNTdlYTRjZjg5NGM1MzQ1ZTMxMjBlMmVkODI5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRIb3N0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRIb3N0LmNwcApAQCAtNDcsMTAgKzQ3
LDYgQEAKICNpbmNsdWRlICJJbnNwZWN0b3JWYWx1ZXMuaCIKICNpbmNsdWRlICJQYXN0ZWJvYXJk
LmgiCiAKLSNpZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikKLSNpbmNsdWRlICJTY3JpcHRE
ZWJ1Z1NlcnZlci5oIgotI2VuZGlmCi0KICNpZiBFTkFCTEUoREFUQUJBU0UpCiAjaW5jbHVkZSAi
RGF0YWJhc2UuaCIKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luamVjdGVkU2NyaXB0SG9zdC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVk
U2NyaXB0SG9zdC5oCmluZGV4IDg5YTUwMzFlN2I2MzhkYzU5YzBjODA0NmFmNWIwOTY4NWM5NTNj
YTcuLmI1OTJkOWJhZTA4NTdkZGIxNWRkZmE1ZWNkMDI2NzVjZmNhYTU4ZjQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdEhvc3QuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRIb3N0LmgKQEAgLTQ3LDcgKzQ3LDYg
QEAgY2xhc3MgSW5zcGVjdG9yQWdlbnQ7CiBjbGFzcyBJbnNwZWN0b3JDb25zb2xlQWdlbnQ7CiBj
bGFzcyBJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQ7CiBjbGFzcyBJbnNwZWN0b3JEYXRhYmFzZUFn
ZW50OwotY2xhc3MgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDsKIGNsYXNzIEluc3BlY3RvckZyb250
ZW5kOwogY2xhc3MgSW5zcGVjdG9yT2JqZWN0OwogY2xhc3MgTm9kZTsKQEAgLTY5LDkgKzY4LDYg
QEAgcHVibGljOgogI2lmIEVOQUJMRShET01fU1RPUkFHRSkKICAgICAgICAgICAgICwgSW5zcGVj
dG9yRE9NU3RvcmFnZUFnZW50KiBkb21TdG9yYWdlQWdlbnQKICNlbmRpZgotI2lmIEVOQUJMRShK
QVZBU0NSSVBUX0RFQlVHR0VSKQotICAgICAgICAgICAgLCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50
KiBkZWJ1Z2dlckFnZW50Ci0jZW5kaWYKICAgICAgICAgKQogICAgIHsKICAgICAgICAgbV9pbnNw
ZWN0b3JBZ2VudCA9IGluc3BlY3RvckFnZW50OwpAQCAtODIsOSArNzgsNiBAQCBwdWJsaWM6CiAj
aWYgRU5BQkxFKERPTV9TVE9SQUdFKQogICAgICAgICBtX2RvbVN0b3JhZ2VBZ2VudCA9IGRvbVN0
b3JhZ2VBZ2VudDsKICNlbmRpZgotI2lmIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKQotICAg
ICAgICBtX2RlYnVnZ2VyQWdlbnQgPSBkZWJ1Z2dlckFnZW50OwotI2VuZGlmCiAgICAgfQogICAg
IHZvaWQgc2V0RnJvbnRlbmQoSW5zcGVjdG9yRnJvbnRlbmQqIGZyb250ZW5kKSB7IG1fZnJvbnRl
bmQgPSBmcm9udGVuZDsgfQogICAgIHZvaWQgY2xlYXJGcm9udGVuZCgpIHsgbV9mcm9udGVuZCA9
IDA7IH0KQEAgLTExMiw5ICsxMDUsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaWRDcmVhdGVXb3Jr
ZXIobG9uZyBpZCwgY29uc3QgU3RyaW5nJiB1cmwsIGJvb2wgaXNTaGFyZWRXb3JrZXIpOwogICAg
IHZvaWQgZGlkRGVzdHJveVdvcmtlcihsb25nIGlkKTsKICNlbmRpZgotI2lmIEVOQUJMRShKQVZB
U0NSSVBUX0RFQlVHR0VSKQotICAgIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQqIGRlYnVnZ2VyQWdl
bnQoKSB7IHJldHVybiBtX2RlYnVnZ2VyQWdlbnQ7IH0KLSNlbmRpZgogCiBwcml2YXRlOgogICAg
IEluamVjdGVkU2NyaXB0SG9zdCgpOwpAQCAtMTI3LDkgKzExNyw2IEBAIHByaXZhdGU6CiAjaWYg
RU5BQkxFKERPTV9TVE9SQUdFKQogICAgIEluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudCogbV9kb21T
dG9yYWdlQWdlbnQ7CiAjZW5kaWYKLSNpZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikKLSAg
ICBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50KiBtX2RlYnVnZ2VyQWdlbnQ7Ci0jZW5kaWYKICAgICBJ
bnNwZWN0b3JGcm9udGVuZCogbV9mcm9udGVuZDsKICAgICBsb25nIG1fbGFzdFdvcmtlcklkOwog
ICAgIFZlY3RvcjxSZWZQdHI8Tm9kZT4gPiBtX2luc3BlY3RlZE5vZGVzOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0SG9zdC5pZGwgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRIb3N0LmlkbAppbmRleCBmYzYwODEzODZh
MjM2NjNjNmRiMjM2OWIyNWJiZGVjYWNlZGEzN2YwLi42OThlNGJkZGUyYWYzMWEwMjZkYmI4ZjEy
MTUxODIzZmY1NDliZGMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5q
ZWN0ZWRTY3JpcHRIb3N0LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0
ZWRTY3JpcHRIb3N0LmlkbApAQCAtMzksNyArMzksNiBAQCBtb2R1bGUgY29yZSB7CiAgICAgICAg
IFtDdXN0b21dIERPTU9iamVjdCBpbnNwZWN0ZWROb2RlKGluIGludCBudW0pOwogICAgICAgICBb
Q3VzdG9tXSBET01PYmplY3QgaW50ZXJuYWxDb25zdHJ1Y3Rvck5hbWUoaW4gRE9NT2JqZWN0IG9i
amVjdCk7CiAKLSAgICAgICAgW0N1c3RvbV0gRE9NT2JqZWN0IGN1cnJlbnRDYWxsRnJhbWUoKTsK
ICAgICAgICAgW0N1c3RvbV0gaW50IGRhdGFiYXNlSWQoaW4gRE9NT2JqZWN0IGRhdGFiYXNlKTsK
ICAgICAgICAgW0N1c3RvbV0gaW50IHN0b3JhZ2VJZChpbiBET01PYmplY3Qgc3RvcmFnZSk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdFNvdXJj
ZS5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdFNvdXJjZS5qcwpp
bmRleCAxMDgzMzBkYzQ3ZDQ3MmI5N2UzOWI5NmQ4ZDhhNDIwZDFmODQ3NDMwLi4zNWM3NjcxMTU2
NzExODFiZWVjMmVjNmIwZDBhYTY4MmJjZmUzMGZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRTb3VyY2UuanMKKysrIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luamVjdGVkU2NyaXB0U291cmNlLmpzCkBAIC0yOTMsOSArMjkzLDggQEAgSW5q
ZWN0ZWRTY3JpcHQucHJvdG90eXBlID0gewogICAgICAgICB9CiAgICAgfSwKIAotICAgIGNhbGxG
cmFtZXM6IGZ1bmN0aW9uKCkKKyAgICB3cmFwQ2FsbEZyYW1lczogZnVuY3Rpb24oY2FsbEZyYW1l
KQogICAgIHsKLSAgICAgICAgdmFyIGNhbGxGcmFtZSA9IEluamVjdGVkU2NyaXB0SG9zdC5jdXJy
ZW50Q2FsbEZyYW1lKCk7CiAgICAgICAgIGlmICghY2FsbEZyYW1lKQogICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgIApAQCAtMzA4LDE5ICszMDcsMTkgQEAgSW5qZWN0ZWRTY3JpcHQucHJv
dG90eXBlID0gewogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0sCiAKLSAgICBldmFsdWF0
ZU9uQ2FsbEZyYW1lOiBmdW5jdGlvbihjYWxsRnJhbWVJZCwgZXhwcmVzc2lvbiwgb2JqZWN0R3Jv
dXAsIGluamVjdENvbW1hbmRMaW5lQVBJKQorICAgIGV2YWx1YXRlT25DYWxsRnJhbWU6IGZ1bmN0
aW9uKHRvcENhbGxGcmFtZSwgY2FsbEZyYW1lSWQsIGV4cHJlc3Npb24sIG9iamVjdEdyb3VwLCBp
bmplY3RDb21tYW5kTGluZUFQSSkKICAgICB7Ci0gICAgICAgIHZhciBjYWxsRnJhbWUgPSB0aGlz
Ll9jYWxsRnJhbWVGb3JJZChjYWxsRnJhbWVJZCk7CisgICAgICAgIHZhciBjYWxsRnJhbWUgPSB0
aGlzLl9jYWxsRnJhbWVGb3JJZCh0b3BDYWxsRnJhbWUsIGNhbGxGcmFtZUlkKTsKICAgICAgICAg
aWYgKCFjYWxsRnJhbWUpCiAgICAgICAgICAgICByZXR1cm4gIkNvdWxkIG5vdCBmaW5kIGNhbGwg
ZnJhbWUgd2l0aCBnaXZlbiBpZCI7CiAgICAgICAgIHJldHVybiB0aGlzLl9ldmFsdWF0ZUFuZFdy
YXAoY2FsbEZyYW1lLmV2YWx1YXRlLCBjYWxsRnJhbWUsIGV4cHJlc3Npb24sIG9iamVjdEdyb3Vw
LCB0cnVlLCBpbmplY3RDb21tYW5kTGluZUFQSSk7CiAgICAgfSwKIAotICAgIF9jYWxsRnJhbWVG
b3JJZDogZnVuY3Rpb24oY2FsbEZyYW1lSWQpCisgICAgX2NhbGxGcmFtZUZvcklkOiBmdW5jdGlv
bih0b3BDYWxsRnJhbWUsIGNhbGxGcmFtZUlkKQogICAgIHsKICAgICAgICAgdmFyIHBhcnNlZENh
bGxGcmFtZUlkID0gZXZhbCgiKCIgKyBjYWxsRnJhbWVJZCArICIpIik7CiAgICAgICAgIHZhciBv
cmRpbmFsID0gcGFyc2VkQ2FsbEZyYW1lSWQub3JkaW5hbDsKLSAgICAgICAgdmFyIGNhbGxGcmFt
ZSA9IEluamVjdGVkU2NyaXB0SG9zdC5jdXJyZW50Q2FsbEZyYW1lKCk7CisgICAgICAgIHZhciBj
YWxsRnJhbWUgPSB0b3BDYWxsRnJhbWU7CiAgICAgICAgIHdoaWxlICgtLW9yZGluYWwgPj0gMCAm
JiBjYWxsRnJhbWUpCiAgICAgICAgICAgICBjYWxsRnJhbWUgPSBjYWxsRnJhbWUuY2FsbGVyOwog
ICAgICAgICByZXR1cm4gY2FsbEZyYW1lOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3Rvci5qc29uIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ci5qc29uCmluZGV4IGEwOGQyNjVlMjZlNDRkNTM0NzM2MDA3MDE5MjQwZTg5MzUzNTY3MjcuLjBh
NTI5ZTdmNTNhNDJiMjdiYTc3ZjQ0NWQ1YjBlMjcwNzg5OTdlY2YgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuanNvbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yLmpzb24KQEAgLTE0OTksNyArMTQ5OSw4IEBACiAgICAgICAgICAg
ICAgICAgICAgICAgICAibmFtZSI6ICJkZXRhaWxzIiwKICAgICAgICAgICAgICAgICAgICAgICAg
ICJ0eXBlIjogIm9iamVjdCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAicHJvcGVydGllcyI6
IFsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogImNhbGxGcmFtZXMiLCAi
dHlwZSI6ICJhcnJheSIsICJpdGVtcyI6IHsgIiRyZWYiOiAiQ2FsbEZyYW1lIiB9LCAiZGVzY3Jp
cHRpb24iOiAiQ2FsbCBzdGFjayB0aGUgdmlydHVhbCBtYWNoaW5lIHN0b3BwZWQgb24uIiB9Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJjYWxsRnJhbWVzIiwgInR5cGUi
OiAiYXJyYXkiLCAiaXRlbXMiOiB7ICIkcmVmIjogIkNhbGxGcmFtZSIgfSwgImRlc2NyaXB0aW9u
IjogIkNhbGwgc3RhY2sgdGhlIHZpcnR1YWwgbWFjaGluZSBzdG9wcGVkIG9uLiIgfSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogImV4Y2VwdGlvbiIsICIkcmVmIjogIlJ1
bnRpbWUuUmVtb3RlT2JqZWN0IiwgIm9wdGlvbmFsIjogdHJ1ZSwgImRlc2NyaXB0aW9uIjogIkN1
cnJlbnQgZXhjZXB0aW9uIG9iamVjdCBpZiBzY3JpcHQgZXhlY3V0aW9uIGlzIHBhdXNlZCB3aGVu
IGFuIGV4Y2VwdGlvbiBpcyBiZWluZyB0aHJvd24uIiB9CiAgICAgICAgICAgICAgICAgICAgICAg
ICBdLAogICAgICAgICAgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIkNhbGwgc3RhY2sg
aW5mb3JtYXRpb24uIgogICAgICAgICAgICAgICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckFnZW50LmNwcAppbmRleCAzN2FhZDJkMTBiNjExOWFhMjYzNWUyMDlk
MjY4MzQ1NGJmZmJjZTg1Li4yYmY3NmM1NDA0ZDYwMjY3NzdkMTA0N2FlNGQ2YTRlNzFjZWQ5ZjMx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBZ2VudC5jcHAKQEAgLTE1
Miw5ICsxNTIsNiBAQCBJbnNwZWN0b3JBZ2VudDo6SW5zcGVjdG9yQWdlbnQoUGFnZSogcGFnZSwg
SW5zcGVjdG9yQ2xpZW50KiBjbGllbnQsIEluamVjdGVkU2NyaQogI2lmIEVOQUJMRShET01fU1RP
UkFHRSkKICAgICAgICAgLCBtX2RvbVN0b3JhZ2VBZ2VudC5nZXQoKQogI2VuZGlmCi0jaWYgRU5B
QkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpCi0gICAgICAgICwgbV9kZWJ1Z2dlckFnZW50LmdldCgp
Ci0jZW5kaWYKICAgICApOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHAKaW5kZXggNzBiMDdiYzBiMTlkNWY1MTkwYjJhYmEz
YzdkZjYwMDY5NmJmNmIzZC4uYThjMmFlNjIyNWViZWVjZmY2ZjQyOTg3ZjVlYjc0N2RhMjM0OWI4
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRlYnVnZ2Vy
QWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dl
ckFnZW50LmNwcApAQCAtMzksNiArMzksNyBAQAogI2luY2x1ZGUgIkluc3RydW1lbnRpbmdBZ2Vu
dHMuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgogI2luY2x1ZGUgIlNjcmlwdERlYnVn
U2VydmVyLmgiCisjaW5jbHVkZSAiU2NyaXB0T2JqZWN0LmgiCiAjaW5jbHVkZSA8d3RmL3RleHQv
U3RyaW5nQ29uY2F0ZW5hdGUuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMjc5LDcgKzI4
MCw3IEBAIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50
OjpyZXNvbHZlQnJlYWtwb2ludChjb25zdCBTdHJpCiAKIHZvaWQgSW5zcGVjdG9yRGVidWdnZXJB
Z2VudDo6ZWRpdFNjcmlwdFNvdXJjZShFcnJvclN0cmluZyogZXJyb3IsIGNvbnN0IFN0cmluZyYg
c291cmNlSUQsIGNvbnN0IFN0cmluZyYgbmV3Q29udGVudCwgUmVmUHRyPEluc3BlY3RvckFycmF5
PiogbmV3Q2FsbEZyYW1lcykKIHsKLSAgICBpZiAoc2NyaXB0RGVidWdTZXJ2ZXIoKS5lZGl0U2Ny
aXB0U291cmNlKHNvdXJjZUlELCBuZXdDb250ZW50LCBlcnJvcikpCisgICAgaWYgKHNjcmlwdERl
YnVnU2VydmVyKCkuZWRpdFNjcmlwdFNvdXJjZShzb3VyY2VJRCwgbmV3Q29udGVudCwgZXJyb3Is
ICZtX2N1cnJlbnRDYWxsU3RhY2spKQogICAgICAgICAqbmV3Q2FsbEZyYW1lcyA9IGN1cnJlbnRD
YWxsRnJhbWVzKCk7CiB9CiAKQEAgLTM1NSw3ICszNTYsNyBAQCB2b2lkIEluc3BlY3RvckRlYnVn
Z2VyQWdlbnQ6OmV2YWx1YXRlT25DYWxsRnJhbWUoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBj
b25zdAogewogICAgIEluamVjdGVkU2NyaXB0IGluamVjdGVkU2NyaXB0ID0gbV9pbmplY3RlZFNj
cmlwdE1hbmFnZXItPmluamVjdGVkU2NyaXB0Rm9yT2JqZWN0SWQoY2FsbEZyYW1lSWQpOwogICAg
IGlmICghaW5qZWN0ZWRTY3JpcHQuaGFzTm9WYWx1ZSgpKQotICAgICAgICBpbmplY3RlZFNjcmlw
dC5ldmFsdWF0ZU9uQ2FsbEZyYW1lKGVycm9yU3RyaW5nLCBjYWxsRnJhbWVJZCwgZXhwcmVzc2lv
biwgb2JqZWN0R3JvdXAgPyAqb2JqZWN0R3JvdXAgOiAiIiwgaW5jbHVkZUNvbW1hbmRMaW5lQVBJ
ID8gKmluY2x1ZGVDb21tYW5kTGluZUFQSSA6IGZhbHNlLCByZXN1bHQpOworICAgICAgICBpbmpl
Y3RlZFNjcmlwdC5ldmFsdWF0ZU9uQ2FsbEZyYW1lKGVycm9yU3RyaW5nLCBtX2N1cnJlbnRDYWxs
U3RhY2ssIGNhbGxGcmFtZUlkLCBleHByZXNzaW9uLCBvYmplY3RHcm91cCA/ICpvYmplY3RHcm91
cCA6ICIiLCBpbmNsdWRlQ29tbWFuZExpbmVBUEkgPyAqaW5jbHVkZUNvbW1hbmRMaW5lQVBJIDog
ZmFsc2UsIHJlc3VsdCk7CiB9CiAKIFBhc3NSZWZQdHI8SW5zcGVjdG9yQXJyYXk+IEluc3BlY3Rv
ckRlYnVnZ2VyQWdlbnQ6OmN1cnJlbnRDYWxsRnJhbWVzKCkKQEAgLTM2Nyw3ICszNjgsNyBAQCBQ
YXNzUmVmUHRyPEluc3BlY3RvckFycmF5PiBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpjdXJyZW50
Q2FsbEZyYW1lcygpCiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1
cm4gSW5zcGVjdG9yQXJyYXk6OmNyZWF0ZSgpOwogICAgIH0KLSAgICByZXR1cm4gaW5qZWN0ZWRT
Y3JpcHQuY2FsbEZyYW1lcygpOworICAgIHJldHVybiBpbmplY3RlZFNjcmlwdC53cmFwQ2FsbEZy
YW1lcyhtX2N1cnJlbnRDYWxsU3RhY2spOwogfQogCiAvLyBKYXZhU2NyaXB0RGVidWdMaXN0ZW5l
ciBmdW5jdGlvbnMKQEAgLTQwNCwxNSArNDA1LDIyIEBAIHZvaWQgSW5zcGVjdG9yRGVidWdnZXJB
Z2VudDo6ZmFpbGVkVG9QYXJzZVNvdXJjZShjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5n
CiAgICAgbV9mcm9udGVuZC0+c2NyaXB0RmFpbGVkVG9QYXJzZSh1cmwsIGRhdGEsIGZpcnN0TGlu
ZSwgZXJyb3JMaW5lLCBlcnJvck1lc3NhZ2UpOwogfQogCi12b2lkIEluc3BlY3RvckRlYnVnZ2Vy
QWdlbnQ6OmRpZFBhdXNlKFNjcmlwdFN0YXRlKiBzY3JpcHRTdGF0ZSkKK3ZvaWQgSW5zcGVjdG9y
RGVidWdnZXJBZ2VudDo6ZGlkUGF1c2UoU2NyaXB0U3RhdGUqIHNjcmlwdFN0YXRlLCBjb25zdCBT
Y3JpcHRWYWx1ZSYgY2FsbEZyYW1lcywgY29uc3QgU2NyaXB0VmFsdWUmIGV4Y2VwdGlvbikKIHsK
ICAgICBBU1NFUlQoc2NyaXB0U3RhdGUgJiYgIW1fcGF1c2VkU2NyaXB0U3RhdGUpOwogICAgIG1f
cGF1c2VkU2NyaXB0U3RhdGUgPSBzY3JpcHRTdGF0ZTsKKyAgICBtX2N1cnJlbnRDYWxsU3RhY2sg
PSBjYWxsRnJhbWVzOwogCiAgICAgaWYgKCFtX2JyZWFrUHJvZ3JhbURldGFpbHMpCiAgICAgICAg
IG1fYnJlYWtQcm9ncmFtRGV0YWlscyA9IEluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCk7CiAgICAg
bV9icmVha1Byb2dyYW1EZXRhaWxzLT5zZXRWYWx1ZSgiY2FsbEZyYW1lcyIsIGN1cnJlbnRDYWxs
RnJhbWVzKCkpOwogCisgICAgaWYgKCFleGNlcHRpb24uaGFzTm9WYWx1ZSgpKSB7CisgICAgICAg
IEluamVjdGVkU2NyaXB0IGluamVjdGVkU2NyaXB0ID0gbV9pbmplY3RlZFNjcmlwdE1hbmFnZXIt
PmluamVjdGVkU2NyaXB0Rm9yKHNjcmlwdFN0YXRlKTsKKyAgICAgICAgaWYgKCFpbmplY3RlZFNj
cmlwdC5oYXNOb1ZhbHVlKCkpCisgICAgICAgICAgICBtX2JyZWFrUHJvZ3JhbURldGFpbHMtPnNl
dFZhbHVlKCJleGNlcHRpb24iLCBpbmplY3RlZFNjcmlwdC53cmFwT2JqZWN0KGV4Y2VwdGlvbiwg
ImJhY2t0cmFjZSIpKTsKKyAgICB9CisKICAgICBtX2Zyb250ZW5kLT5wYXVzZWQobV9icmVha1By
b2dyYW1EZXRhaWxzKTsKICAgICBtX2phdmFTY3JpcHRQYXVzZVNjaGVkdWxlZCA9IGZhbHNlOwog
CkBAIC00MjUsNiArNDMzLDcgQEAgdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpkaWRQYXVz
ZShTY3JpcHRTdGF0ZSogc2NyaXB0U3RhdGUpCiB2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6
OmRpZENvbnRpbnVlKCkKIHsKICAgICBtX3BhdXNlZFNjcmlwdFN0YXRlID0gMDsKKyAgICBtX2N1
cnJlbnRDYWxsU3RhY2sgPSBTY3JpcHRWYWx1ZSgpOwogICAgIG1fYnJlYWtQcm9ncmFtRGV0YWls
cyA9IDA7CiAgICAgbV9mcm9udGVuZC0+cmVzdW1lZCgpOwogfQpAQCAtNDQwLDYgKzQ0OSw3IEBA
IHZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6YnJlYWtQcm9ncmFtKERlYnVnZ2VyRXZlbnRU
eXBlIHR5cGUsIFBhc3NSZWZQdHI8SW5zCiB2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmNs
ZWFyKCkKIHsKICAgICBtX3BhdXNlZFNjcmlwdFN0YXRlID0gMDsKKyAgICBtX2N1cnJlbnRDYWxs
U3RhY2sgPSBTY3JpcHRWYWx1ZSgpOwogICAgIG1fc2NyaXB0cy5jbGVhcigpOwogICAgIG1fYnJl
YWtwb2ludElkVG9EZWJ1Z1NlcnZlckJyZWFrcG9pbnRJZHMuY2xlYXIoKTsKICAgICBtX2NvbnRp
bnVlVG9Mb2NhdGlvbkJyZWFrcG9pbnRJZCA9IFN0cmluZygpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuaCBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmgKaW5kZXggNGMyZTg1NWZiZDdh
NTkzNDlmZmIxMDllODVkYWQ3MzRiZjI3ZmRkOS4uYjM3OWRkYTlkYzQ4NWVjZTMwYzhiYjNiZDZm
ODg4MjI2N2IwNDI0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckRlYnVnZ2VyQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yRGVidWdnZXJBZ2VudC5oCkBAIC01Myw2ICs1Myw3IEBAIGNsYXNzIEluc3BlY3RvclN0YXRl
OwogY2xhc3MgSW5zcGVjdG9yVmFsdWU7CiBjbGFzcyBJbnN0cnVtZW50aW5nQWdlbnRzOwogY2xh
c3MgU2NyaXB0RGVidWdTZXJ2ZXI7CitjbGFzcyBTY3JpcHRWYWx1ZTsKIAogdHlwZWRlZiBTdHJp
bmcgRXJyb3JTdHJpbmc7CiAKQEAgLTEyMSw3ICsxMjIsNyBAQCBwcml2YXRlOgogCiAgICAgdmly
dHVhbCB2b2lkIGRpZFBhcnNlU291cmNlKGNvbnN0IFN0cmluZyYgc291cmNlSUQsIGNvbnN0IFN0
cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIGRhdGEsIGludCBsaW5lT2Zmc2V0LCBpbnQgY29sdW1u
T2Zmc2V0LCBib29sIGlzQ29udGVudFNjcmlwdCk7CiAgICAgdmlydHVhbCB2b2lkIGZhaWxlZFRv
UGFyc2VTb3VyY2UoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgZGF0YSwgaW50IGZp
cnN0TGluZSwgaW50IGVycm9yTGluZSwgY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpOwotICAg
IHZpcnR1YWwgdm9pZCBkaWRQYXVzZShTY3JpcHRTdGF0ZSopOworICAgIHZpcnR1YWwgdm9pZCBk
aWRQYXVzZShTY3JpcHRTdGF0ZSosIGNvbnN0IFNjcmlwdFZhbHVlJiBjYWxsRnJhbWVzLCBjb25z
dCBTY3JpcHRWYWx1ZSYgZXhjZXB0aW9uKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkQ29udGludWUo
KTsKIAogICAgIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiByZXNvbHZlQnJlYWtwb2ludChj
b25zdCBTdHJpbmcmIGJyZWFrcG9pbnRJZCwgY29uc3QgU3RyaW5nJiBzb3VyY2VJZCwgY29uc3Qg
U2NyaXB0QnJlYWtwb2ludCYpOwpAQCAtMTYwLDYgKzE2MSw3IEBAIHByaXZhdGU6CiAgICAgSW5q
ZWN0ZWRTY3JpcHRNYW5hZ2VyKiBtX2luamVjdGVkU2NyaXB0TWFuYWdlcjsKICAgICBJbnNwZWN0
b3JGcm9udGVuZDo6RGVidWdnZXIqIG1fZnJvbnRlbmQ7CiAgICAgU2NyaXB0U3RhdGUqIG1fcGF1
c2VkU2NyaXB0U3RhdGU7CisgICAgU2NyaXB0VmFsdWUgbV9jdXJyZW50Q2FsbFN0YWNrOwogICAg
IFNjcmlwdHNNYXAgbV9zY3JpcHRzOwogICAgIEJyZWFrcG9pbnRJZFRvRGVidWdTZXJ2ZXJCcmVh
a3BvaW50SWRzTWFwIG1fYnJlYWtwb2ludElkVG9EZWJ1Z1NlcnZlckJyZWFrcG9pbnRJZHM7CiAg
ICAgU3RyaW5nIG1fY29udGludWVUb0xvY2F0aW9uQnJlYWtwb2ludElkOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1NjcmlwdERlYnVnTGlzdGVuZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9TY3JpcHREZWJ1Z0xpc3RlbmVyLmgKaW5kZXggNGE5M2E0Y2E2OWI2
NTdhZmY5MzM3ODgyNTBkMjc2YjIyOTQ5MGNiMS4uOTNmZDBmY2U3NGFjYWQ2NTYwMjA1OTBlMDA3
ZmU1NzJiM2ZjZGJiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1Njcmlw
dERlYnVnTGlzdGVuZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvU2NyaXB0RGVi
dWdMaXN0ZW5lci5oCkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4K
IAogbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgU2NyaXB0VmFsdWU7CiAKIGNsYXNzIFNjcmlw
dERlYnVnTGlzdGVuZXIgewogcHVibGljOgpAQCAtNDMsNyArNDQsNyBAQCBwdWJsaWM6CiAKICAg
ICB2aXJ0dWFsIHZvaWQgZGlkUGFyc2VTb3VyY2UoY29uc3QgU3RyaW5nJiAgc291cmNlSUQsIGNv
bnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIGRhdGEsIGludCBsaW5lT2Zmc2V0LCBpbnQg
Y29sdW1uT2Zmc2V0LCBib29sIGlzQ29udGVudFNjcmlwdCkgPSAwOwogICAgIHZpcnR1YWwgdm9p
ZCBmYWlsZWRUb1BhcnNlU291cmNlKGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIGRh
dGEsIGludCBmaXJzdExpbmUsIGludCBlcnJvckxpbmUsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNz
YWdlKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGRpZFBhdXNlKFNjcmlwdFN0YXRlKikgPSAwOwor
ICAgIHZpcnR1YWwgdm9pZCBkaWRQYXVzZShTY3JpcHRTdGF0ZSosIGNvbnN0IFNjcmlwdFZhbHVl
JiBjYWxsRnJhbWVzLCBjb25zdCBTY3JpcHRWYWx1ZSYgZXhjZXB0aW9uKSA9IDA7CiAgICAgdmly
dHVhbCB2b2lkIGRpZENvbnRpbnVlKCkgPSAwOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL1dvcmtlckluc3BlY3RvckNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL1dvcmtlckluc3BlY3RvckNvbnRyb2xsZXIuY3BwCmluZGV4IGEzZTc3
Yjc4NzU0MjljYzQ5OTIxZDY0MTIwODcwNmZlYmVkNzY2NzAuLmRiY2I4NzZkN2M1NjBiNjhjYTc4
YWZiZjY1Y2JjOWRhNmQ5YmZlZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9Xb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvV29ya2VySW5zcGVjdG9yQ29udHJvbGxlci5jcHAKQEAgLTg2LDkgKzg2LDYgQEAgV29y
a2VySW5zcGVjdG9yQ29udHJvbGxlcjo6V29ya2VySW5zcGVjdG9yQ29udHJvbGxlcihXb3JrZXJD
b250ZXh0KiB3b3JrZXJDb250ZXgKICNpZiBFTkFCTEUoRE9NX1NUT1JBR0UpCiAgICAgICAgICwg
MAogI2VuZGlmCi0jaWYgRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpCi0gICAgICAgICwgbV9k
ZWJ1Z2dlckFnZW50LmdldCgpCi0jZW5kaWYKICAgICApOwogfQogIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>91113</attachid>
            <date>2011-04-26 08:44:35 -0700</date>
            <delta_ts>2011-04-27 00:39:40 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-58996-20110426194432.patch</filename>
            <type>text/plain</type>
            <size>34422</size>
            <attacher name="Yury Semikhatsky">yurys</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODQ4OTcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA2ZTNkOTM2MTBjYTM0N2Mz
ZGI1M2VhMDNkNjM2YmM1ZDRlODA0OWU1Li4zYzE2NzkyNjk1NTA1ZTNkOGRjNTk5ODMxMDVkYjY2
MWUyZjlmYjI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTMgQEAKKzIwMTEtMDQtMjYgIFl1cnkg
U2VtaWtoYXRza3kgIDx5dXJ5c0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogW3Byb3RvY29sXSBQYXVz
ZWQgZXZlbnQgc2hvdWxkIGV4cG9zZSBleGNlcHRpb24gdmFsdWUgdGhhdCBjYXVzZWQgaXQKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU4OTk2CisKKyAg
ICAgICAgRGVidWcucGF1c2UgZXZlbnQgbm93IGNvbnRhaW5zIGFuIG9wdGlvbmFsIHJlZmVyZW5j
ZSB0byB0aGUgZXhjZXB0aW9uCisgICAgICAgIG9iamVjdCBpbiBjYXNlIHNjcmlwdCBleGVjdXRp
b24gaXMgcGF1c2VkIG9uIGEgSmF2YVNjcmlwdCBleGNlcHRpb24uCisKKyAgICAgICAgQWxzbyBK
YXZhU2NyaXB0IGNhbGwgZnJhbWVzIGFyZSBwYXNzZWQgZGlyZWN0bHkgaW50byB0aGUgaW5qZWN0
ZWQgc2NyaXB0IHdoZW4KKyAgICAgICAgd2UgbmVlZCB0byB3cmFwIHRoZW0gZm9yIHBhc3Npbmcg
dG8gdGhlIGZyb250LWVuZC4gVGhpcyBjaGFuZ2UgYnJlYWtzIGN5Y2xpYworICAgICAgICBkZXBl
bmRlbmN5IFNjcmlwdERlYnVnU2VydmVyLT5JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LT5JbmplY3Rl
ZFNjcmlwdC0+SW5qZWN0ZWRTY3JpcHRIb3N0LT5TY3JpcHREZWJ1Z1NlcnZlcgorCisgICAgICAg
ICogYmluZGluZ3MvanMvSlNJbmplY3RlZFNjcmlwdEhvc3RDdXN0b20uY3BwOgorICAgICAgICAq
IGJpbmRpbmdzL2pzL1NjcmlwdERlYnVnU2VydmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNj
cmlwdERlYnVnU2VydmVyOjpkaXNwYXRjaERpZFBhdXNlKToKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9TY3JpcHREZWJ1Z1NlcnZlci5oOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1NjcmlwdERlYnVn
U2VydmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdERlYnVnU2VydmVyOjpicmVha1By
b2dyYW0pOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RGVidWdTZXJ2ZXI6OmVkaXRTY3JpcHRT
b3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RGVidWdTZXJ2ZXI6OmJyZWFrUHJvZ3Jh
bUNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdERlYnVnU2VydmVyOjpoYW5kbGVW
OERlYnVnRXZlbnQpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1NjcmlwdERlYnVnU2VydmVyLmg6
CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4SW5qZWN0ZWRTY3JpcHRIb3N0Q3VzdG9t
LmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SW5qZWN0ZWRTY3JpcHQ6OmV2YWx1YXRlT25DYWxsRnJhbWUpOgorICAgICAgICAo
V2ViQ29yZTo6SW5qZWN0ZWRTY3JpcHQ6OndyYXBDYWxsRnJhbWVzKToKKyAgICAgICAgKiBpbnNw
ZWN0b3IvSW5qZWN0ZWRTY3JpcHQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5qZWN0ZWRTY3Jp
cHRIb3N0LmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRIb3N0Lmg6Cisg
ICAgICAgIChXZWJDb3JlOjpJbmplY3RlZFNjcmlwdEhvc3Q6OmluaXQpOgorICAgICAgICAqIGlu
c3BlY3Rvci9JbmplY3RlZFNjcmlwdEhvc3QuaWRsOgorICAgICAgICAqIGluc3BlY3Rvci9Jbmpl
Y3RlZFNjcmlwdFNvdXJjZS5qczoKKyAgICAgICAgKC4pOgorICAgICAgICAqIGluc3BlY3Rvci9J
bnNwZWN0b3IuanNvbjoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQWdlbnQ6Okluc3BlY3RvckFnZW50KToKKyAgICAg
ICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpldmFsdWF0ZU9uQ2FsbEZyYW1lKToKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmN1cnJlbnRDYWxsRnJhbWVzKToK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OndyYXBDYWxsRnJhbWVz
KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmRpZFBhdXNlKToK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmRpZENvbnRpbnVlKToK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmNsZWFyKToKKyAgICAg
ICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5oOgorICAgICAgICAqIGluc3Bl
Y3Rvci9TY3JpcHREZWJ1Z0xpc3RlbmVyLmg6CisgICAgICAgICogaW5zcGVjdG9yL1dvcmtlcklu
c3BlY3RvckNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VySW5zcGVjdG9y
Q29udHJvbGxlcjo6V29ya2VySW5zcGVjdG9yQ29udHJvbGxlcik6CisKIDIwMTEtMDQtMjYgIERh
dmlkIExldmluICA8bGV2aW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFk
YW0gQmFydGguCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0luamVj
dGVkU2NyaXB0SG9zdEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0lu
amVjdGVkU2NyaXB0SG9zdEN1c3RvbS5jcHAKaW5kZXggN2JjOWI5ODhlNDFiMzdlMjAwYjQ3MTk2
M2QyMzA1YmRhZTkyMTRiYS4uYTU4OWU0ZjM4NDg5OTZhNDViMDVmNGE5ZDFhMDE1ZmViMTUyOTc4
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJbmplY3RlZFNjcmlw
dEhvc3RDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSW5qZWN0
ZWRTY3JpcHRIb3N0Q3VzdG9tLmNwcApAQCAtNTEsMTIgKzUxLDYgQEAKICNlbmRpZgogI2luY2x1
ZGUgPHJ1bnRpbWUvSlNMb2NrLmg+CiAKLSNpZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikK
LSNpbmNsdWRlICJKYXZhU2NyaXB0Q2FsbEZyYW1lLmgiCi0jaW5jbHVkZSAiSlNKYXZhU2NyaXB0
Q2FsbEZyYW1lLmgiCi0jaW5jbHVkZSAiU2NyaXB0RGVidWdTZXJ2ZXIuaCIKLSNlbmRpZgotCiB1
c2luZyBuYW1lc3BhY2UgSlNDOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC03NCwyMSArNjgs
NiBAQCBTY3JpcHRWYWx1ZSBJbmplY3RlZFNjcmlwdEhvc3Q6Om5vZGVBc1NjcmlwdFZhbHVlKFNj
cmlwdFN0YXRlKiBzdGF0ZSwgTm9kZSogbm9kZQogICAgIHJldHVybiBTY3JpcHRWYWx1ZShzdGF0
ZS0+Z2xvYmFsRGF0YSgpLCB0b0pTKHN0YXRlLCBkZXByZWNhdGVkR2xvYmFsT2JqZWN0Rm9yUHJv
dG90eXBlKHN0YXRlKSwgbm9kZSkpOwogfQogCi1KU1ZhbHVlIEpTSW5qZWN0ZWRTY3JpcHRIb3N0
OjpjdXJyZW50Q2FsbEZyYW1lKEV4ZWNTdGF0ZSogZXhlYykKLXsKLSNpZiBFTkFCTEUoSkFWQVND
UklQVF9ERUJVR0dFUikKLSAgICBKYXZhU2NyaXB0Q2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBpbXBs
KCktPmRlYnVnZ2VyQWdlbnQoKS0+c2NyaXB0RGVidWdTZXJ2ZXIoKS5jdXJyZW50Q2FsbEZyYW1l
KCk7Ci0gICAgaWYgKCFjYWxsRnJhbWUgfHwgIWNhbGxGcmFtZS0+aXNWYWxpZCgpKQotICAgICAg
ICByZXR1cm4ganNVbmRlZmluZWQoKTsKLQotICAgIEpTTG9jayBsb2NrKFNpbGVuY2VBc3NlcnRp
b25zT25seSk7Ci0gICAgcmV0dXJuIHRvSlMoZXhlYywgZ2xvYmFsT2JqZWN0KCksIGNhbGxGcmFt
ZSk7Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTShleGVjKTsKLSAgICByZXR1cm4ganNVbmRlZmlu
ZWQoKTsKLSNlbmRpZgotfQotCiBKU1ZhbHVlIEpTSW5qZWN0ZWRTY3JpcHRIb3N0OjppbnNwZWN0
ZWROb2RlKEV4ZWNTdGF0ZSogZXhlYykKIHsKICAgICBpZiAoZXhlYy0+YXJndW1lbnRDb3VudCgp
IDwgMSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdERlYnVn
U2VydmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdERlYnVnU2VydmVy
LmNwcAppbmRleCBlN2VlNjhiY2UyMGIwNjA2N2M1YTQ3ZWIyZDcwMjI2ZTYyMDAzM2IyLi44Yzdi
MTJjM2FjYjc2MzVhMWI3OGJkYTE2ZTNhNjgyNzllMjhhZDc0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHREZWJ1Z1NlcnZlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvU2NyaXB0RGVidWdTZXJ2ZXIuY3BwCkBAIC0zNCw2ICszNCw3IEBA
CiAKICNpbmNsdWRlICJFdmVudExvb3AuaCIKICNpbmNsdWRlICJGcmFtZS5oIgorI2luY2x1ZGUg
IkpTSmF2YVNjcmlwdENhbGxGcmFtZS5oIgogI2luY2x1ZGUgIkphdmFTY3JpcHRDYWxsRnJhbWUu
aCIKICNpbmNsdWRlICJTY3JpcHRCcmVha3BvaW50LmgiCiAjaW5jbHVkZSAiU2NyaXB0RGVidWdM
aXN0ZW5lci5oIgpAQCAtMTg4LDI0ICsxODksMjggQEAgdm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6
c3RlcE91dE9mRnVuY3Rpb24oKQogICAgIG1fZG9uZVByb2Nlc3NpbmdEZWJ1Z2dlckV2ZW50cyA9
IHRydWU7CiB9CiAKLWJvb2wgU2NyaXB0RGVidWdTZXJ2ZXI6OmVkaXRTY3JpcHRTb3VyY2UoY29u
c3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgU3RyaW5nKikKK2Jvb2wgU2NyaXB0RGVidWdTZXJ2
ZXI6OmVkaXRTY3JpcHRTb3VyY2UoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgU3RyaW5n
KiwgU2NyaXB0VmFsdWUqKQogewogICAgIC8vIEZJWE1FKDQwMzAwKTogaW1wbGVtZW50IHRoaXMu
CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1KYXZhU2NyaXB0Q2FsbEZyYW1lKiBTY3JpcHREZWJ1
Z1NlcnZlcjo6Y3VycmVudENhbGxGcmFtZSgpCi17Ci0gICAgaWYgKCFtX3BhdXNlZCkKLSAgICAg
ICAgcmV0dXJuIDA7Ci0gICAgcmV0dXJuIG1fY3VycmVudENhbGxGcmFtZS5nZXQoKTsKLX0KLQog
dm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6ZGlzcGF0Y2hEaWRQYXVzZShTY3JpcHREZWJ1Z0xpc3Rl
bmVyKiBsaXN0ZW5lcikKIHsKICAgICBBU1NFUlQobV9wYXVzZWQpOwotICAgIFNjcmlwdFN0YXRl
KiBzdGF0ZSA9IG1fY3VycmVudENhbGxGcmFtZS0+c2NvcGVDaGFpbigpLT5nbG9iYWxPYmplY3Qt
Pmdsb2JhbEV4ZWMoKTsKLSAgICBsaXN0ZW5lci0+ZGlkUGF1c2Uoc3RhdGUpOworICAgIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2N1cnJlbnRDYWxsRnJhbWUtPnNjb3BlQ2hhaW4o
KS0+Z2xvYmFsT2JqZWN0LmdldCgpOworICAgIFNjcmlwdFN0YXRlKiBzdGF0ZSA9IGdsb2JhbE9i
amVjdC0+Z2xvYmFsRXhlYygpOworICAgIEpTVmFsdWUganNDYWxsRnJhbWU7CisgICAgeworICAg
ICAgICBpZiAobV9jdXJyZW50Q2FsbEZyYW1lLT5pc1ZhbGlkKCkpIHsKKyAgICAgICAgICAgIEpT
TG9jayBsb2NrKFNpbGVuY2VBc3NlcnRpb25zT25seSk7CisgICAgICAgICAgICBBU1NFUlQoZG9t
R2xvYmFsT2JqZWN0LT5jbGFzc0luZm8oKSA9PSAmSlNET01HbG9iYWxPYmplY3Q6OmNsYXNzSW5m
byk7CisgICAgICAgICAgICBKU0RPTUdsb2JhbE9iamVjdCogZG9tR2xvYmFsT2JqZWN0ID0gc3Rh
dGljX2Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QpOworICAgICAgICAgICAg
anNDYWxsRnJhbWUgPSB0b0pTKHN0YXRlLCBkb21HbG9iYWxPYmplY3QsIG1fY3VycmVudENhbGxG
cmFtZS5nZXQoKSk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAganNDYWxsRnJhbWUgPSBq
c1VuZGVmaW5lZCgpOworICAgIH0KKyAgICBsaXN0ZW5lci0+ZGlkUGF1c2Uoc3RhdGUsIFNjcmlw
dFZhbHVlKHN0YXRlLT5nbG9iYWxEYXRhKCksIGpzQ2FsbEZyYW1lKSwgU2NyaXB0VmFsdWUoKSk7
CiB9CiAKIHZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6OmRpc3BhdGNoRGlkQ29udGludWUoU2NyaXB0
RGVidWdMaXN0ZW5lciogbGlzdGVuZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9TY3JpcHREZWJ1Z1NlcnZlci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
U2NyaXB0RGVidWdTZXJ2ZXIuaAppbmRleCBmNmFjOWExY2NkNDU1MDhjMDllOTc2ZWE3NjcwODQ4
NTgwYTdiM2FlLi5hYzAxNzQyMDA0ZTA2MThmM2VkYTcyZmU3YzUzNDJmZjNmNTE5YmE0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHREZWJ1Z1NlcnZlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdERlYnVnU2VydmVyLmgKQEAgLTUw
LDggKzUwLDkgQEAgY2xhc3MgSlNHbG9iYWxPYmplY3Q7CiB9CiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLWNsYXNzIFNjcmlwdERlYnVnTGlzdGVuZXI7CiBjbGFzcyBKYXZhU2NyaXB0Q2FsbEZyYW1l
OworY2xhc3MgU2NyaXB0RGVidWdMaXN0ZW5lcjsKK2NsYXNzIFNjcmlwdFZhbHVlOwogCiBjbGFz
cyBTY3JpcHREZWJ1Z1NlcnZlciA6IHByb3RlY3RlZCBKU0M6OkRlYnVnZ2VyIHsKICAgICBXVEZf
TUFLRV9OT05DT1BZQUJMRShTY3JpcHREZWJ1Z1NlcnZlcik7IFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOwpAQCAtNzgsMTMgKzc5LDExIEBAIHB1YmxpYzoKICAgICB2b2lkIHN0ZXBPdmVyU3RhdGVt
ZW50KCk7CiAgICAgdm9pZCBzdGVwT3V0T2ZGdW5jdGlvbigpOwogCi0gICAgYm9vbCBlZGl0U2Ny
aXB0U291cmNlKGNvbnN0IFN0cmluZyYgc291cmNlSUQsIGNvbnN0IFN0cmluZyYgbmV3Q29udGVu
dCwgU3RyaW5nKiBlcnJvcik7CisgICAgYm9vbCBlZGl0U2NyaXB0U291cmNlKGNvbnN0IFN0cmlu
ZyYgc291cmNlSUQsIGNvbnN0IFN0cmluZyYgbmV3Q29udGVudCwgU3RyaW5nKiBlcnJvciwgU2Ny
aXB0VmFsdWUqIG5ld0NhbGxGcmFtZXMpOwogCiAgICAgdm9pZCByZWNvbXBpbGVBbGxKU0Z1bmN0
aW9uc1Nvb24oKTsKICAgICB2aXJ0dWFsIHZvaWQgcmVjb21waWxlQWxsSlNGdW5jdGlvbnMoVGlt
ZXI8U2NyaXB0RGVidWdTZXJ2ZXI+KiA9IDApID0gMDsKIAotICAgIEphdmFTY3JpcHRDYWxsRnJh
bWUqIGN1cnJlbnRDYWxsRnJhbWUoKTsKLQogcHJvdGVjdGVkOgogICAgIHR5cGVkZWYgSGFzaFNl
dDxTY3JpcHREZWJ1Z0xpc3RlbmVyKj4gTGlzdGVuZXJTZXQ7CiAgICAgdHlwZWRlZiB2b2lkIChT
Y3JpcHREZWJ1Z1NlcnZlcjo6KkphdmFTY3JpcHRFeGVjdXRpb25DYWxsYmFjaykoU2NyaXB0RGVi
dWdMaXN0ZW5lciopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2Ny
aXB0RGVidWdTZXJ2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0RGVi
dWdTZXJ2ZXIuY3BwCmluZGV4IDk2MTE3M2NkOTQxZGIxMDU3ZTliODhhNzgwMDc1YmU0MjQ1OTg5
MTQuLjRmMWM0NDFkN2IwNTcyYTFiYmE3YjU2ZTQyZDA0ZmEzYzViMDM2M2MgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdERlYnVnU2VydmVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHREZWJ1Z1NlcnZlci5jcHAKQEAgLTM3LDYg
KzM3LDcgQEAKICNpbmNsdWRlICJKYXZhU2NyaXB0Q2FsbEZyYW1lLmgiCiAjaW5jbHVkZSAiU2Ny
aXB0RGVidWdMaXN0ZW5lci5oIgogI2luY2x1ZGUgIlY4QmluZGluZy5oIgorI2luY2x1ZGUgIlY4
SmF2YVNjcmlwdENhbGxGcmFtZS5oIgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KIAog
bmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMTcwLDE3ICsxNzEsMTYgQEAgdm9pZCBTY3JpcHREZWJ1
Z1NlcnZlcjo6YnJlYWtQcm9ncmFtKCkKICAgICBpZiAoY29udGV4dC5Jc0VtcHR5KCkpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIG1fcGF1c2VkUGFnZUNvbnRleHQgPSAqY29udGV4dDsKKyAgICBt
X3BhdXNlZENvbnRleHQgPSAqY29udGV4dDsKICAgICB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvbj4g
YnJlYWtQcm9ncmFtRnVuY3Rpb24gPSBtX2JyZWFrUHJvZ3JhbUNhbGxiYWNrVGVtcGxhdGUuZ2V0
KCktPkdldEZ1bmN0aW9uKCk7CiAgICAgdjg6OkRlYnVnOjpDYWxsKGJyZWFrUHJvZ3JhbUZ1bmN0
aW9uKTsKLSAgICBtX3BhdXNlZFBhZ2VDb250ZXh0LkNsZWFyKCk7CisgICAgbV9wYXVzZWRDb250
ZXh0LkNsZWFyKCk7CiB9CiAKIHZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6OmNvbnRpbnVlUHJvZ3Jh
bSgpCiB7CiAgICAgaWYgKGlzUGF1c2VkKCkpCiAgICAgICAgIHF1aXRNZXNzYWdlTG9vcE9uUGF1
c2UoKTsKLSAgICBtX2N1cnJlbnRDYWxsRnJhbWUuY2xlYXIoKTsKICAgICBtX2V4ZWN1dGlvblN0
YXRlLmNsZWFyKCk7CiB9CiAKQEAgLTIxMSwxNCArMjExLDE0IEBAIHZvaWQgU2NyaXB0RGVidWdT
ZXJ2ZXI6OnN0ZXBPdXRPZkZ1bmN0aW9uKCkKICAgICBjb250aW51ZVByb2dyYW0oKTsKIH0KIAot
Ym9vbCBTY3JpcHREZWJ1Z1NlcnZlcjo6ZWRpdFNjcmlwdFNvdXJjZShjb25zdCBTdHJpbmcmIHNv
dXJjZUlELCBjb25zdCBTdHJpbmcmIG5ld0NvbnRlbnQsIFN0cmluZyogZXJyb3IpCitib29sIFNj
cmlwdERlYnVnU2VydmVyOjplZGl0U2NyaXB0U291cmNlKGNvbnN0IFN0cmluZyYgc291cmNlSUQs
IGNvbnN0IFN0cmluZyYgbmV3Q29udGVudCwgU3RyaW5nKiBlcnJvciwgU2NyaXB0VmFsdWUqIG5l
d0NhbGxGcmFtZXMpCiB7CiAgICAgZW5zdXJlRGVidWdnZXJTY3JpcHRDb21waWxlZCgpOwogICAg
IHY4OjpIYW5kbGVTY29wZSBzY29wZTsKIAogICAgIE93blB0cjx2ODo6Q29udGV4dDo6U2NvcGU+
IGNvbnRleHRTY29wZTsKICAgICBpZiAoIWlzUGF1c2VkKCkpCi0gICAgICAgIGNvbnRleHRTY29w
ZSA9IGFkb3B0UHRyKG5ldyB2ODo6Q29udGV4dDo6U2NvcGUodjg6OkRlYnVnOjpHZXREZWJ1Z0Nv
bnRleHQoKSkpOworICAgICAgICBjb250ZXh0U2NvcGUuc2V0KG5ldyB2ODo6Q29udGV4dDo6U2Nv
cGUodjg6OkRlYnVnOjpHZXREZWJ1Z0NvbnRleHQoKSkpOwogCiAgICAgdjg6OkhhbmRsZTx2ODo6
RnVuY3Rpb24+IGZ1bmN0aW9uID0gdjg6OkxvY2FsPHY4OjpGdW5jdGlvbj46OkNhc3QobV9kZWJ1
Z2dlclNjcmlwdC5nZXQoKS0+R2V0KHY4OjpTdHJpbmc6Ok5ldygiZWRpdFNjcmlwdFNvdXJjZSIp
KSk7CiAgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGFyZ3ZbXSA9IHsgdjhTdHJpbmcoc291cmNl
SUQpLCB2OFN0cmluZyhuZXdDb250ZW50KSB9OwpAQCAtMjM3LDIwICsyMzcsMjAgQEAgYm9vbCBT
Y3JpcHREZWJ1Z1NlcnZlcjo6ZWRpdFNjcmlwdFNvdXJjZShjb25zdCBTdHJpbmcmIHNvdXJjZUlE
LCBjb25zdCBTdHJpbmcmIG4KICAgICBBU1NFUlQoIXJlc3VsdC5Jc0VtcHR5KCkpOwogCiAgICAg
Ly8gQ2FsbCBzdGFjayBtYXkgaGF2ZSBjaGFuZ2VkIGFmdGVyIGlmIHRoZSBlZGl0ZWQgZnVuY3Rp
b24gd2FzIG9uIHRoZSBzdGFjay4KLSAgICBpZiAobV9jdXJyZW50Q2FsbEZyYW1lKQotICAgICAg
ICBtX2N1cnJlbnRDYWxsRnJhbWUuY2xlYXIoKTsKKyAgICBpZiAoaXNQYXVzZWQoKSkKKyAgICAg
ICAgKm5ld0NhbGxGcmFtZXMgPSBjdXJyZW50Q2FsbEZyYW1lKCk7CiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKLVBhc3NSZWZQdHI8SmF2YVNjcmlwdENhbGxGcmFtZT4gU2NyaXB0RGVidWdTZXJ2ZXI6
OmN1cnJlbnRDYWxsRnJhbWUoKQorU2NyaXB0VmFsdWUgU2NyaXB0RGVidWdTZXJ2ZXI6OmN1cnJl
bnRDYWxsRnJhbWUoKQogewotICAgIGlmICghbV9jdXJyZW50Q2FsbEZyYW1lKSB7Ci0gICAgICAg
IHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uPiBjdXJyZW50Q2FsbEZyYW1lRnVuY3Rpb24gPSB2ODo6
TG9jYWw8djg6OkZ1bmN0aW9uPjo6Q2FzdChtX2RlYnVnZ2VyU2NyaXB0LmdldCgpLT5HZXQodjg6
OlN0cmluZzo6TmV3KCJjdXJyZW50Q2FsbEZyYW1lIikpKTsKLSAgICAgICAgdjg6OkhhbmRsZTx2
ODo6VmFsdWU+IGFyZ3ZbXSA9IHsgbV9leGVjdXRpb25TdGF0ZS5nZXQoKSB9OwotICAgICAgICB2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gY3VycmVudENhbGxGcmFtZVY4ID0gY3VycmVudENhbGxGcmFt
ZUZ1bmN0aW9uLT5DYWxsKG1fZGVidWdnZXJTY3JpcHQuZ2V0KCksIDEsIGFyZ3YpOwotICAgICAg
ICBtX2N1cnJlbnRDYWxsRnJhbWUgPSBKYXZhU2NyaXB0Q2FsbEZyYW1lOjpjcmVhdGUodjg6OkRl
YnVnOjpHZXREZWJ1Z0NvbnRleHQoKSwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdChjdXJy
ZW50Q2FsbEZyYW1lVjgpKTsKLSAgICB9Ci0gICAgcmV0dXJuIG1fY3VycmVudENhbGxGcmFtZTsK
KyAgICBBU1NFUlQoaXNQYXVzZWQoKSk7CisgICAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb24+IGN1
cnJlbnRDYWxsRnJhbWVGdW5jdGlvbiA9IHY4OjpMb2NhbDx2ODo6RnVuY3Rpb24+OjpDYXN0KG1f
ZGVidWdnZXJTY3JpcHQuZ2V0KCktPkdldCh2ODo6U3RyaW5nOjpOZXcoImN1cnJlbnRDYWxsRnJh
bWUiKSkpOworICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBhcmd2W10gPSB7IG1fZXhlY3V0aW9u
U3RhdGUuZ2V0KCkgfTsKKyAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gY3VycmVudENhbGxGcmFt
ZVY4ID0gY3VycmVudENhbGxGcmFtZUZ1bmN0aW9uLT5DYWxsKG1fZGVidWdnZXJTY3JpcHQuZ2V0
KCksIDEsIGFyZ3YpOworICAgIFJlZlB0cjxKYXZhU2NyaXB0Q2FsbEZyYW1lPiBjdXJyZW50Q2Fs
bEZyYW1lID0gSmF2YVNjcmlwdENhbGxGcmFtZTo6Y3JlYXRlKHY4OjpEZWJ1Zzo6R2V0RGVidWdD
b250ZXh0KCksIHY4OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3QoY3VycmVudENhbGxGcmFtZVY4
KSk7CisgICAgdjg6OkNvbnRleHQ6OlNjb3BlIGNvbnRleHRTY29wZShtX3BhdXNlZENvbnRleHQp
OworICAgIHJldHVybiBTY3JpcHRWYWx1ZSh0b1Y4KGN1cnJlbnRDYWxsRnJhbWUucmVsZWFzZSgp
KSk7CiB9CiAKIHZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6OmludGVycnVwdEFuZFJ1bihQYXNzT3du
UHRyPFRhc2s+IHRhc2spCkBAIC0yNzQsMjUgKzI3NCwyNiBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gU2NyaXB0RGVidWdTZXJ2ZXI6OmJyZWFrUHJvZ3JhbUNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1
bWVudAogICAgIEFTU0VSVCgyID09IGFyZ3MuTGVuZ3RoKCkpOwogICAgIAogICAgIFNjcmlwdERl
YnVnU2VydmVyKiB0aGlzUHRyID0gdG9TY3JpcHREZWJ1Z1NlcnZlcihhcmdzLkRhdGEoKSk7Ci0g
ICAgdGhpc1B0ci0+YnJlYWtQcm9ncmFtKHY4OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3QoYXJn
c1swXSkpOworICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBleGNlcHRpb247CisgICAgdGhpc1B0
ci0+YnJlYWtQcm9ncmFtKHY4OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3QoYXJnc1swXSksIGV4
Y2VwdGlvbik7CiAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKIH0KIAotdm9pZCBTY3JpcHRE
ZWJ1Z1NlcnZlcjo6YnJlYWtQcm9ncmFtKHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gZXhlY3V0aW9u
U3RhdGUpCit2b2lkIFNjcmlwdERlYnVnU2VydmVyOjpicmVha1Byb2dyYW0odjg6OkhhbmRsZTx2
ODo6T2JqZWN0PiBleGVjdXRpb25TdGF0ZSwgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGV4Y2VwdGlv
bikKIHsKICAgICAvLyBEb24ndCBhbGxvdyBuZXN0ZWQgYnJlYWtzLgogICAgIGlmIChpc1BhdXNl
ZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBTY3JpcHREZWJ1Z0xpc3RlbmVyKiBsaXN0ZW5l
ciA9IGdldERlYnVnTGlzdGVuZXJGb3JDb250ZXh0KG1fcGF1c2VkUGFnZUNvbnRleHQpOworICAg
IFNjcmlwdERlYnVnTGlzdGVuZXIqIGxpc3RlbmVyID0gZ2V0RGVidWdMaXN0ZW5lckZvckNvbnRl
eHQobV9wYXVzZWRDb250ZXh0KTsKICAgICBpZiAoIWxpc3RlbmVyKQogICAgICAgICByZXR1cm47
CiAKICAgICBtX2V4ZWN1dGlvblN0YXRlLnNldChleGVjdXRpb25TdGF0ZSk7Ci0gICAgU2NyaXB0
U3RhdGUqIGN1cnJlbnRDYWxsRnJhbWVTdGF0ZSA9IFNjcmlwdFN0YXRlOjpmb3JDb250ZXh0KG1f
cGF1c2VkUGFnZUNvbnRleHQpOwotICAgIGxpc3RlbmVyLT5kaWRQYXVzZShjdXJyZW50Q2FsbEZy
YW1lU3RhdGUpOworICAgIFNjcmlwdFN0YXRlKiBjdXJyZW50Q2FsbEZyYW1lU3RhdGUgPSBTY3Jp
cHRTdGF0ZTo6Zm9yQ29udGV4dChtX3BhdXNlZENvbnRleHQpOworICAgIGxpc3RlbmVyLT5kaWRQ
YXVzZShjdXJyZW50Q2FsbEZyYW1lU3RhdGUsIGN1cnJlbnRDYWxsRnJhbWUoKSwgU2NyaXB0VmFs
dWUoZXhjZXB0aW9uKSk7CiAKLSAgICBydW5NZXNzYWdlTG9vcE9uUGF1c2UobV9wYXVzZWRQYWdl
Q29udGV4dCk7CisgICAgcnVuTWVzc2FnZUxvb3BPblBhdXNlKG1fcGF1c2VkQ29udGV4dCk7CiB9
CiAKIHZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6OnY4RGVidWdFdmVudENhbGxiYWNrKGNvbnN0IHY4
OjpEZWJ1Zzo6RXZlbnREZXRhaWxzJiBldmVudERldGFpbHMpCkBAIC0zMjksMTYgKzMzMCwyMyBA
QCB2b2lkIFNjcmlwdERlYnVnU2VydmVyOjpoYW5kbGVWOERlYnVnRXZlbnQoY29uc3Qgdjg6OkRl
YnVnOjpFdmVudERldGFpbHMmIGV2ZW50RAogICAgICAgICAgICAgdjg6OkhhbmRsZTx2ODo6T2Jq
ZWN0PiBvYmplY3QgPSB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KHZhbHVlKTsKICAgICAg
ICAgICAgIGRpc3BhdGNoRGlkUGFyc2VTb3VyY2UobGlzdGVuZXIsIG9iamVjdCk7CiAgICAgICAg
IH0gZWxzZSBpZiAoZXZlbnQgPT0gdjg6OkJyZWFrIHx8IGV2ZW50ID09IHY4OjpFeGNlcHRpb24p
IHsKKyAgICAgICAgICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBleGNlcHRpb247CiAgICAgICAg
ICAgICBpZiAoZXZlbnQgPT0gdjg6OkV4Y2VwdGlvbikgewogICAgICAgICAgICAgICAgIHY4OjpM
b2NhbDx2ODo6U3RhY2tUcmFjZT4gc3RhY2tUcmFjZSA9IHY4OjpTdGFja1RyYWNlOjpDdXJyZW50
U3RhY2tUcmFjZSgxKTsKICAgICAgICAgICAgICAgICAvLyBTdGFjayB0cmFjZSBpcyBlbXB0eSBp
biBjYXNlIG9mIHN5bnRheCBlcnJvci4gU2lsZW50bHkgY29udGludWUgZXhlY3V0aW9uIGluIHN1
Y2ggY2FzZXMuCiAgICAgICAgICAgICAgICAgaWYgKCFzdGFja1RyYWNlLT5HZXRGcmFtZUNvdW50
KCkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICB2ODo6SGFu
ZGxlPHY4OjpPYmplY3Q+IGV2ZW50RGF0YSA9IGV2ZW50RGV0YWlscy5HZXRFdmVudERhdGEoKTsK
KyAgICAgICAgICAgICAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gZXhjZXB0aW9uR2V0dGVyVmFs
dWUgPSBldmVudERhdGEtPkdldCh2ODo6U3RyaW5nOjpOZXcoImV4Y2VwdGlvbiIpKTsKKyAgICAg
ICAgICAgICAgICBpZiAoIWV4Y2VwdGlvbkdldHRlclZhbHVlLklzRW1wdHkoKSAmJiBleGNlcHRp
b25HZXR0ZXJWYWx1ZS0+SXNGdW5jdGlvbigpKSB7CisgICAgICAgICAgICAgICAgICAgIHY4OjpI
YW5kbGU8djg6OlZhbHVlPiBhcmd2W10gPSB7IHY4OjpIYW5kbGU8djg6OlZhbHVlPigpIH07Cisg
ICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbiA9IHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uPjo6
Q2FzdChleGNlcHRpb25HZXR0ZXJWYWx1ZSktPkNhbGwoZXZlbnREYXRhLCAwLCBhcmd2KTsKKyAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIG1fcGF1c2VkUGFn
ZUNvbnRleHQgPSAqZXZlbnRDb250ZXh0OwotICAgICAgICAgICAgYnJlYWtQcm9ncmFtKGV2ZW50
RGV0YWlscy5HZXRFeGVjdXRpb25TdGF0ZSgpKTsKLSAgICAgICAgICAgIG1fcGF1c2VkUGFnZUNv
bnRleHQuQ2xlYXIoKTsKKyAgICAgICAgICAgIG1fcGF1c2VkQ29udGV4dCA9ICpldmVudENvbnRl
eHQ7CisgICAgICAgICAgICBicmVha1Byb2dyYW0oZXZlbnREZXRhaWxzLkdldEV4ZWN1dGlvblN0
YXRlKCksIGV4Y2VwdGlvbik7CisgICAgICAgICAgICBtX3BhdXNlZENvbnRleHQuQ2xlYXIoKTsK
ICAgICAgICAgfQogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L1NjcmlwdERlYnVnU2VydmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3Jp
cHREZWJ1Z1NlcnZlci5oCmluZGV4IDkzZDg5N2MyMjZiNWI3MTYwMmUyZTM4NTVkNmNmNjQ1NTEz
MzgwMjIuLmIyOWVjMDQzNTZlMjc1YzRjYzRhNTA1ZmQyMWExNDFhZTkyYWM0ZGYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdERlYnVnU2VydmVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0RGVidWdTZXJ2ZXIuaApAQCAtMzMsNyAr
MzMsNyBAQAogCiAjaWYgRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpCiAKLSNpbmNsdWRlICJK
YXZhU2NyaXB0Q2FsbEZyYW1lLmgiCisjaW5jbHVkZSAiT3duSGFuZGxlLmgiCiAjaW5jbHVkZSAi
UGxhdGZvcm1TdHJpbmcuaCIKICNpbmNsdWRlICJTY3JpcHRCcmVha3BvaW50LmgiCiAjaW5jbHVk
ZSAiVGltZXIuaCIKQEAgLTQ2LDYgKzQ2LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xh
c3MgU2NyaXB0RGVidWdMaXN0ZW5lcjsKK2NsYXNzIFNjcmlwdFZhbHVlOwogCiBjbGFzcyBTY3Jp
cHREZWJ1Z1NlcnZlciB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoU2NyaXB0RGVidWdTZXJ2
ZXIpOwpAQCAtNzIsMTMgKzczLDExIEBAIHB1YmxpYzoKICAgICB2b2lkIHN0ZXBPdmVyU3RhdGVt
ZW50KCk7CiAgICAgdm9pZCBzdGVwT3V0T2ZGdW5jdGlvbigpOwogCi0gICAgYm9vbCBlZGl0U2Ny
aXB0U291cmNlKGNvbnN0IFN0cmluZyYgc291cmNlSUQsIGNvbnN0IFN0cmluZyYgbmV3Q29udGVu
dCwgU3RyaW5nKiBlcnJvcik7CisgICAgYm9vbCBlZGl0U2NyaXB0U291cmNlKGNvbnN0IFN0cmlu
ZyYgc291cmNlSUQsIGNvbnN0IFN0cmluZyYgbmV3Q29udGVudCwgU3RyaW5nKiBlcnJvciwgU2Ny
aXB0VmFsdWUqIG5ld0NhbGxGcmFtZXMpOwogCiAgICAgdm9pZCByZWNvbXBpbGVBbGxKU0Z1bmN0
aW9uc1Nvb24oKSB7IH0KICAgICB2b2lkIHJlY29tcGlsZUFsbEpTRnVuY3Rpb25zKFRpbWVyPFNj
cmlwdERlYnVnU2VydmVyPiogPSAwKSB7IH0KIAotICAgIFBhc3NSZWZQdHI8SmF2YVNjcmlwdENh
bGxGcmFtZT4gY3VycmVudENhbGxGcmFtZSgpOwotCiAgICAgY2xhc3MgVGFzayB7CiAgICAgcHVi
bGljOgogICAgICAgICB2aXJ0dWFsIH5UYXNrKCkgeyB9CkBAIC05MSwxMiArOTAsMTQgQEAgcHJv
dGVjdGVkOgogICAgIFNjcmlwdERlYnVnU2VydmVyKCk7CiAgICAgflNjcmlwdERlYnVnU2VydmVy
KCkgeyB9CiAgICAgCisgICAgU2NyaXB0VmFsdWUgY3VycmVudENhbGxGcmFtZSgpOworCiAgICAg
dmlydHVhbCBTY3JpcHREZWJ1Z0xpc3RlbmVyKiBnZXREZWJ1Z0xpc3RlbmVyRm9yQ29udGV4dCh2
ODo6SGFuZGxlPHY4OjpDb250ZXh0PikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBydW5NZXNzYWdl
TG9vcE9uUGF1c2Uodjg6OkhhbmRsZTx2ODo6Q29udGV4dD4pID0gMDsKICAgICB2aXJ0dWFsIHZv
aWQgcXVpdE1lc3NhZ2VMb29wT25QYXVzZSgpID0gMDsKIAogICAgIHN0YXRpYyB2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gYnJlYWtQcm9ncmFtQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJn
cyk7Ci0gICAgdm9pZCBicmVha1Byb2dyYW0odjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBleGVjdXRp
b25TdGF0ZSk7CisgICAgdm9pZCBicmVha1Byb2dyYW0odjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBl
eGVjdXRpb25TdGF0ZSwgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGV4Y2VwdGlvbik7CiAKICAgICBz
dGF0aWMgdm9pZCB2OERlYnVnRXZlbnRDYWxsYmFjayhjb25zdCB2ODo6RGVidWc6OkV2ZW50RGV0
YWlscyYgZXZlbnREZXRhaWxzKTsKICAgICB2b2lkIGhhbmRsZVY4RGVidWdFdmVudChjb25zdCB2
ODo6RGVidWc6OkV2ZW50RGV0YWlscyYgZXZlbnREZXRhaWxzKTsKQEAgLTEwOSw5ICsxMTAsOCBA
QCBwcm90ZWN0ZWQ6CiAKICAgICBQYXVzZU9uRXhjZXB0aW9uc1N0YXRlIG1fcGF1c2VPbkV4Y2Vw
dGlvbnNTdGF0ZTsKICAgICBPd25IYW5kbGU8djg6Ok9iamVjdD4gbV9kZWJ1Z2dlclNjcmlwdDsK
LSAgICBSZWZQdHI8SmF2YVNjcmlwdENhbGxGcmFtZT4gbV9jdXJyZW50Q2FsbEZyYW1lOwogICAg
IE93bkhhbmRsZTx2ODo6T2JqZWN0PiBtX2V4ZWN1dGlvblN0YXRlOwotICAgIHY4OjpMb2NhbDx2
ODo6Q29udGV4dD4gbV9wYXVzZWRQYWdlQ29udGV4dDsKKyAgICB2ODo6TG9jYWw8djg6OkNvbnRl
eHQ+IG1fcGF1c2VkQ29udGV4dDsKIAogICAgIGJvb2wgbV9icmVha3BvaW50c0FjdGl2YXRlZDsK
ICAgICBPd25IYW5kbGU8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IG1fYnJlYWtQcm9ncmFtQ2FsbGJh
Y2tUZW1wbGF0ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3Rv
bS9WOEluamVjdGVkU2NyaXB0SG9zdEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9jdXN0b20vVjhJbmplY3RlZFNjcmlwdEhvc3RDdXN0b20uY3BwCmluZGV4IDNkYmFjYjI4
ZWMxNDM0NzYwZTJiYWI2NWUwNzYwZTQ3YTRlMDc4YzAuLmQ0OWQ2MWRlNDZjMzJjZmVmYTdkZTEw
ZGY3NTQwZTE2MjU5ZGM2ZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L2N1c3RvbS9WOEluamVjdGVkU2NyaXB0SG9zdEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SW5qZWN0ZWRTY3JpcHRIb3N0Q3VzdG9tLmNwcApAQCAt
MzQsMTUgKzM0LDEyIEBACiAjaW5jbHVkZSAiRGF0YWJhc2UuaCIKICNpbmNsdWRlICJJbmplY3Rl
ZFNjcmlwdC5oIgogI2luY2x1ZGUgIkluamVjdGVkU2NyaXB0SG9zdC5oIgotI2luY2x1ZGUgIklu
c3BlY3RvckRlYnVnZ2VyQWdlbnQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JWYWx1ZXMuaCIKLSNp
bmNsdWRlICJTY3JpcHREZWJ1Z1NlcnZlci5oIgogI2luY2x1ZGUgIlNjcmlwdFZhbHVlLmgiCiAj
aW5jbHVkZSAiVjhCaW5kaW5nLmgiCiAjaW5jbHVkZSAiVjhCaW5kaW5nU3RhdGUuaCIKICNpbmNs
dWRlICJWOERhdGFiYXNlLmgiCiAjaW5jbHVkZSAiVjhIaWRkZW5Qcm9wZXJ0eU5hbWUuaCIKLSNp
bmNsdWRlICJWOEphdmFTY3JpcHRDYWxsRnJhbWUuaCIKICNpbmNsdWRlICJWOE5vZGUuaCIKICNp
bmNsdWRlICJWOFByb3h5LmgiCiAjaW5jbHVkZSAiVjhTdG9yYWdlLmgiCkBAIC0xMDYsMTggKzEw
Myw2IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEluamVjdGVkU2NyaXB0SG9zdDo6aW5zcGVj
dENhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmCiAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQo
KTsKIH0KIAotdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4SW5qZWN0ZWRTY3JpcHRIb3N0OjpjdXJy
ZW50Q2FsbEZyYW1lQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKLXsKLSNpZiBF
TkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikKLSAgICBJTkNfU1RBVFMoIkluamVjdGVkU2NyaXB0
SG9zdC5jdXJyZW50Q2FsbEZyYW1lKCkiKTsKLSAgICBJbmplY3RlZFNjcmlwdEhvc3QqIGhvc3Qg
PSBWOEluamVjdGVkU2NyaXB0SG9zdDo6dG9OYXRpdmUoYXJncy5Ib2xkZXIoKSk7Ci0gICAgcmV0
dXJuIHRvVjgoaG9zdC0+ZGVidWdnZXJBZ2VudCgpLT5zY3JpcHREZWJ1Z1NlcnZlcigpLmN1cnJl
bnRDYWxsRnJhbWUoKSk7Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTShhcmdzKTsKLSAgICByZXR1
cm4gdjg6OlVuZGVmaW5lZCgpOwotI2VuZGlmCi19Ci0KIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBW
OEluamVjdGVkU2NyaXB0SG9zdDo6ZGF0YWJhc2VJZENhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVu
dHMmIGFyZ3MpCiB7CiAgICAgSU5DX1NUQVRTKCJJbmplY3RlZFNjcmlwdEhvc3QuZGF0YWJhc2VJ
ZCgpIik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3Jp
cHQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0LmNwcAppbmRl
eCBlNjUzMjkwMTZkMGZjOWJmM2EwYmYzYmM4ZjAyYTZmZWJmOGZkOWM0Li5hZWI2ZjM5MDY2ZTg5
YTM3ZTA1MTEzZjFiODgyMWQzZGVhMTgzOTFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbmplY3RlZFNjcmlwdC5jcHAKQEAgLTcxLDkgKzcxLDEwIEBAIHZvaWQgSW5qZWN0ZWRTY3Jp
cHQ6OmV2YWx1YXRlT24oRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIG9i
amVjdElkCiAgICAgbWFrZU9iamVjdENhbGwoZXJyb3JTdHJpbmcsIGZ1bmN0aW9uLCByZXN1bHQp
OwogfQogCi12b2lkIEluamVjdGVkU2NyaXB0OjpldmFsdWF0ZU9uQ2FsbEZyYW1lKEVycm9yU3Ry
aW5nKiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBjYWxsRnJhbWVJZCwgY29uc3QgU3RyaW5n
JiBleHByZXNzaW9uLCBjb25zdCBTdHJpbmcmIG9iamVjdEdyb3VwLCBib29sIGluY2x1ZGVDb21t
YW5kTGluZUFQSSwgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4qIHJlc3VsdCkKK3ZvaWQgSW5qZWN0
ZWRTY3JpcHQ6OmV2YWx1YXRlT25DYWxsRnJhbWUoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBj
b25zdCBTY3JpcHRWYWx1ZSYgY2FsbEZyYW1lcywgY29uc3QgU3RyaW5nJiBjYWxsRnJhbWVJZCwg
Y29uc3QgU3RyaW5nJiBleHByZXNzaW9uLCBjb25zdCBTdHJpbmcmIG9iamVjdEdyb3VwLCBib29s
IGluY2x1ZGVDb21tYW5kTGluZUFQSSwgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4qIHJlc3VsdCkK
IHsKICAgICBTY3JpcHRGdW5jdGlvbkNhbGwgZnVuY3Rpb24obV9pbmplY3RlZFNjcmlwdE9iamVj
dCwgImV2YWx1YXRlT25DYWxsRnJhbWUiKTsKKyAgICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudChj
YWxsRnJhbWVzKTsKICAgICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudChjYWxsRnJhbWVJZCk7CiAg
ICAgZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQoZXhwcmVzc2lvbik7CiAgICAgZnVuY3Rpb24uYXBw
ZW5kQXJndW1lbnQob2JqZWN0R3JvdXApOwpAQCAtMTMxLDEwICsxMzIsMTEgQEAgdm9pZCBJbmpl
Y3RlZFNjcmlwdDo6cmVsZWFzZU9iamVjdChjb25zdCBTdHJpbmcmIG9iamVjdElkKQogfQogCiAj
aWYgRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpCi1QYXNzUmVmUHRyPEluc3BlY3RvckFycmF5
PiBJbmplY3RlZFNjcmlwdDo6Y2FsbEZyYW1lcygpCitQYXNzUmVmUHRyPEluc3BlY3RvckFycmF5
PiBJbmplY3RlZFNjcmlwdDo6d3JhcENhbGxGcmFtZXMoY29uc3QgU2NyaXB0VmFsdWUmIGNhbGxG
cmFtZXMpCiB7CiAgICAgQVNTRVJUKCFoYXNOb1ZhbHVlKCkpOwotICAgIFNjcmlwdEZ1bmN0aW9u
Q2FsbCBmdW5jdGlvbihtX2luamVjdGVkU2NyaXB0T2JqZWN0LCAiY2FsbEZyYW1lcyIpOworICAg
IFNjcmlwdEZ1bmN0aW9uQ2FsbCBmdW5jdGlvbihtX2luamVjdGVkU2NyaXB0T2JqZWN0LCAid3Jh
cENhbGxGcmFtZXMiKTsKKyAgICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudChjYWxsRnJhbWVzKTsK
ICAgICBTY3JpcHRWYWx1ZSBjYWxsRnJhbWVzVmFsdWUgPSBmdW5jdGlvbi5jYWxsKCk7CiAgICAg
UmVmUHRyPEluc3BlY3RvclZhbHVlPiByZXN1bHQgPSBjYWxsRnJhbWVzVmFsdWUudG9JbnNwZWN0
b3JWYWx1ZShtX2luamVjdGVkU2NyaXB0T2JqZWN0LnNjcmlwdFN0YXRlKCkpOwogICAgIGlmIChy
ZXN1bHQtPnR5cGUoKSA9PSBJbnNwZWN0b3JWYWx1ZTo6VHlwZUFycmF5KQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0LmggYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHQuaAppbmRleCBhZGNiMjA4ZTdkYjkwNTg3N2IwNWEy
NDQwZGJkM2Q1ZThjNzFkN2I5Li40ZDg3MDM1ZWQ5MWI2NzhmMjc2OWE2OGVlYTViODgzYTMxZGEw
ZTFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHQuaApAQCAtNTcs
MTQgKzU3LDE0IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgZXZhbHVhdGUoRXJyb3JTdHJpbmcqLCBj
b25zdCBTdHJpbmcmIGV4cHJlc3Npb24sIGNvbnN0IFN0cmluZyYgb2JqZWN0R3JvdXAsIGJvb2wg
aW5jbHVkZUNvbW1hbmRMaW5lQVBJLCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiogcmVzdWx0KTsK
ICAgICB2b2lkIGV2YWx1YXRlT24oRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIG9iamVjdElk
LCBjb25zdCBTdHJpbmcmIGV4cHJlc3Npb24sIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+KiByZXN1
bHQpOwotICAgIHZvaWQgZXZhbHVhdGVPbkNhbGxGcmFtZShFcnJvclN0cmluZyosIGNvbnN0IFN0
cmluZyYgY2FsbEZyYW1lSWQsIGNvbnN0IFN0cmluZyYgZXhwcmVzc2lvbiwgY29uc3QgU3RyaW5n
JiBvYmplY3RHcm91cCwgYm9vbCBpbmNsdWRlQ29tbWFuZExpbmVBUEksIFJlZlB0cjxJbnNwZWN0
b3JPYmplY3Q+KiByZXN1bHQpOworICAgIHZvaWQgZXZhbHVhdGVPbkNhbGxGcmFtZShFcnJvclN0
cmluZyosIGNvbnN0IFNjcmlwdFZhbHVlJiBjYWxsRnJhbWVzLCBjb25zdCBTdHJpbmcmIGNhbGxG
cmFtZUlkLCBjb25zdCBTdHJpbmcmIGV4cHJlc3Npb24sIGNvbnN0IFN0cmluZyYgb2JqZWN0R3Jv
dXAsIGJvb2wgaW5jbHVkZUNvbW1hbmRMaW5lQVBJLCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0Piog
cmVzdWx0KTsKICAgICB2b2lkIGdldFByb3BlcnRpZXMoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJp
bmcmIG9iamVjdElkLCBib29sIGlnbm9yZUhhc093blByb3BlcnR5LCBSZWZQdHI8SW5zcGVjdG9y
QXJyYXk+KiByZXN1bHQpOwogICAgIE5vZGUqIG5vZGVGb3JPYmplY3RJZChjb25zdCBTdHJpbmcm
IG9iamVjdElkKTsKICAgICB2b2lkIHNldFByb3BlcnR5VmFsdWUoRXJyb3JTdHJpbmcqLCBjb25z
dCBTdHJpbmcmIG9iamVjdElkLCBjb25zdCBTdHJpbmcmIHByb3BlcnR5TmFtZSwgY29uc3QgU3Ry
aW5nJiBleHByZXNzaW9uKTsKICAgICB2b2lkIHJlbGVhc2VPYmplY3QoY29uc3QgU3RyaW5nJiBv
YmplY3RJZCk7CiAKICNpZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikKLSAgICBQYXNzUmVm
UHRyPEluc3BlY3RvckFycmF5PiBjYWxsRnJhbWVzKCk7CisgICAgUGFzc1JlZlB0cjxJbnNwZWN0
b3JBcnJheT4gd3JhcENhbGxGcmFtZXMoY29uc3QgU2NyaXB0VmFsdWUmKTsKICNlbmRpZgogCiAg
ICAgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IHdyYXBPYmplY3QoU2NyaXB0VmFsdWUsIGNv
bnN0IFN0cmluZyYgZ3JvdXBOYW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbmplY3RlZFNjcmlwdEhvc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
amVjdGVkU2NyaXB0SG9zdC5jcHAKaW5kZXggYTBiYWZkZjkyNjNjYjQxNTc5NDc3MWExZWQ4YzFh
MWE4ZTc3NjFkNS4uYjU0MjdmOGNkOGU4YjU3ZWE0Y2Y4OTRjNTM0NWUzMTIwZTJlZDgyOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0SG9zdC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0SG9zdC5jcHAKQEAg
LTQ3LDEwICs0Nyw2IEBACiAjaW5jbHVkZSAiSW5zcGVjdG9yVmFsdWVzLmgiCiAjaW5jbHVkZSAi
UGFzdGVib2FyZC5oIgogCi0jaWYgRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpCi0jaW5jbHVk
ZSAiU2NyaXB0RGVidWdTZXJ2ZXIuaCIKLSNlbmRpZgotCiAjaWYgRU5BQkxFKERBVEFCQVNFKQog
I2luY2x1ZGUgIkRhdGFiYXNlLmgiCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdEhvc3QuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbmplY3RlZFNjcmlwdEhvc3QuaAppbmRleCA4OWE1MDMxZTdiNjM4ZGM1OWMwYzgwNDZhZjVi
MDk2ODVjOTUzY2E3Li5iNTkyZDliYWUwODU3ZGRiMTVkZGZhNWVjZDAyNjc1Y2ZjYWE1OGY0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRIb3N0LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0SG9zdC5oCkBAIC00
Nyw3ICs0Nyw2IEBAIGNsYXNzIEluc3BlY3RvckFnZW50OwogY2xhc3MgSW5zcGVjdG9yQ29uc29s
ZUFnZW50OwogY2xhc3MgSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50OwogY2xhc3MgSW5zcGVjdG9y
RGF0YWJhc2VBZ2VudDsKLWNsYXNzIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ7CiBjbGFzcyBJbnNw
ZWN0b3JGcm9udGVuZDsKIGNsYXNzIEluc3BlY3Rvck9iamVjdDsKIGNsYXNzIE5vZGU7CkBAIC02
OSw5ICs2OCw2IEBAIHB1YmxpYzoKICNpZiBFTkFCTEUoRE9NX1NUT1JBR0UpCiAgICAgICAgICAg
ICAsIEluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudCogZG9tU3RvcmFnZUFnZW50CiAjZW5kaWYKLSNp
ZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikKLSAgICAgICAgICAgICwgSW5zcGVjdG9yRGVi
dWdnZXJBZ2VudCogZGVidWdnZXJBZ2VudAotI2VuZGlmCiAgICAgICAgICkKICAgICB7CiAgICAg
ICAgIG1faW5zcGVjdG9yQWdlbnQgPSBpbnNwZWN0b3JBZ2VudDsKQEAgLTgyLDkgKzc4LDYgQEAg
cHVibGljOgogI2lmIEVOQUJMRShET01fU1RPUkFHRSkKICAgICAgICAgbV9kb21TdG9yYWdlQWdl
bnQgPSBkb21TdG9yYWdlQWdlbnQ7CiAjZW5kaWYKLSNpZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJV
R0dFUikKLSAgICAgICAgbV9kZWJ1Z2dlckFnZW50ID0gZGVidWdnZXJBZ2VudDsKLSNlbmRpZgog
ICAgIH0KICAgICB2b2lkIHNldEZyb250ZW5kKEluc3BlY3RvckZyb250ZW5kKiBmcm9udGVuZCkg
eyBtX2Zyb250ZW5kID0gZnJvbnRlbmQ7IH0KICAgICB2b2lkIGNsZWFyRnJvbnRlbmQoKSB7IG1f
ZnJvbnRlbmQgPSAwOyB9CkBAIC0xMTIsOSArMTA1LDYgQEAgcHVibGljOgogICAgIHZvaWQgZGlk
Q3JlYXRlV29ya2VyKGxvbmcgaWQsIGNvbnN0IFN0cmluZyYgdXJsLCBib29sIGlzU2hhcmVkV29y
a2VyKTsKICAgICB2b2lkIGRpZERlc3Ryb3lXb3JrZXIobG9uZyBpZCk7CiAjZW5kaWYKLSNpZiBF
TkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikKLSAgICBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50KiBk
ZWJ1Z2dlckFnZW50KCkgeyByZXR1cm4gbV9kZWJ1Z2dlckFnZW50OyB9Ci0jZW5kaWYKIAogcHJp
dmF0ZToKICAgICBJbmplY3RlZFNjcmlwdEhvc3QoKTsKQEAgLTEyNyw5ICsxMTcsNiBAQCBwcml2
YXRlOgogI2lmIEVOQUJMRShET01fU1RPUkFHRSkKICAgICBJbnNwZWN0b3JET01TdG9yYWdlQWdl
bnQqIG1fZG9tU3RvcmFnZUFnZW50OwogI2VuZGlmCi0jaWYgRU5BQkxFKEpBVkFTQ1JJUFRfREVC
VUdHRVIpCi0gICAgSW5zcGVjdG9yRGVidWdnZXJBZ2VudCogbV9kZWJ1Z2dlckFnZW50OwotI2Vu
ZGlmCiAgICAgSW5zcGVjdG9yRnJvbnRlbmQqIG1fZnJvbnRlbmQ7CiAgICAgbG9uZyBtX2xhc3RX
b3JrZXJJZDsKICAgICBWZWN0b3I8UmVmUHRyPE5vZGU+ID4gbV9pbnNwZWN0ZWROb2RlczsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdEhvc3QuaWRs
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0SG9zdC5pZGwKaW5kZXgg
ZmM2MDgxMzg2YTIzNjYzYzZkYjIzNjliMjViYmRlY2FjZWRhMzdmMC4uNjk4ZTRiZGRlMmFmMzFh
MDI2ZGJiOGYxMjE1MTgyM2ZmNTQ5YmRjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luamVjdGVkU2NyaXB0SG9zdC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luamVjdGVkU2NyaXB0SG9zdC5pZGwKQEAgLTM5LDcgKzM5LDYgQEAgbW9kdWxlIGNvcmUg
ewogICAgICAgICBbQ3VzdG9tXSBET01PYmplY3QgaW5zcGVjdGVkTm9kZShpbiBpbnQgbnVtKTsK
ICAgICAgICAgW0N1c3RvbV0gRE9NT2JqZWN0IGludGVybmFsQ29uc3RydWN0b3JOYW1lKGluIERP
TU9iamVjdCBvYmplY3QpOwogCi0gICAgICAgIFtDdXN0b21dIERPTU9iamVjdCBjdXJyZW50Q2Fs
bEZyYW1lKCk7CiAgICAgICAgIFtDdXN0b21dIGludCBkYXRhYmFzZUlkKGluIERPTU9iamVjdCBk
YXRhYmFzZSk7CiAgICAgICAgIFtDdXN0b21dIGludCBzdG9yYWdlSWQoaW4gRE9NT2JqZWN0IHN0
b3JhZ2UpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRT
Y3JpcHRTb3VyY2UuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRT
b3VyY2UuanMKaW5kZXggMTA4MzMwZGM0N2Q0NzJiOTdlMzliOTZkOGQ4YTQyMGQxZjg0NzQzMC4u
MzVjNzY3MTE1NjcxMTgxYmVlYzJlYzZiMGQwYWE2ODJiY2ZlMzBmYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0U291cmNlLmpzCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdFNvdXJjZS5qcwpAQCAtMjkzLDkgKzI5
Myw4IEBAIEluamVjdGVkU2NyaXB0LnByb3RvdHlwZSA9IHsKICAgICAgICAgfQogICAgIH0sCiAK
LSAgICBjYWxsRnJhbWVzOiBmdW5jdGlvbigpCisgICAgd3JhcENhbGxGcmFtZXM6IGZ1bmN0aW9u
KGNhbGxGcmFtZSkKICAgICB7Ci0gICAgICAgIHZhciBjYWxsRnJhbWUgPSBJbmplY3RlZFNjcmlw
dEhvc3QuY3VycmVudENhbGxGcmFtZSgpOwogICAgICAgICBpZiAoIWNhbGxGcmFtZSkKICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICAKQEAgLTMwOCwxOSArMzA3LDE5IEBAIEluamVjdGVk
U2NyaXB0LnByb3RvdHlwZSA9IHsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9LAogCi0g
ICAgZXZhbHVhdGVPbkNhbGxGcmFtZTogZnVuY3Rpb24oY2FsbEZyYW1lSWQsIGV4cHJlc3Npb24s
IG9iamVjdEdyb3VwLCBpbmplY3RDb21tYW5kTGluZUFQSSkKKyAgICBldmFsdWF0ZU9uQ2FsbEZy
YW1lOiBmdW5jdGlvbih0b3BDYWxsRnJhbWUsIGNhbGxGcmFtZUlkLCBleHByZXNzaW9uLCBvYmpl
Y3RHcm91cCwgaW5qZWN0Q29tbWFuZExpbmVBUEkpCiAgICAgewotICAgICAgICB2YXIgY2FsbEZy
YW1lID0gdGhpcy5fY2FsbEZyYW1lRm9ySWQoY2FsbEZyYW1lSWQpOworICAgICAgICB2YXIgY2Fs
bEZyYW1lID0gdGhpcy5fY2FsbEZyYW1lRm9ySWQodG9wQ2FsbEZyYW1lLCBjYWxsRnJhbWVJZCk7
CiAgICAgICAgIGlmICghY2FsbEZyYW1lKQogICAgICAgICAgICAgcmV0dXJuICJDb3VsZCBub3Qg
ZmluZCBjYWxsIGZyYW1lIHdpdGggZ2l2ZW4gaWQiOwogICAgICAgICByZXR1cm4gdGhpcy5fZXZh
bHVhdGVBbmRXcmFwKGNhbGxGcmFtZS5ldmFsdWF0ZSwgY2FsbEZyYW1lLCBleHByZXNzaW9uLCBv
YmplY3RHcm91cCwgdHJ1ZSwgaW5qZWN0Q29tbWFuZExpbmVBUEkpOwogICAgIH0sCiAKLSAgICBf
Y2FsbEZyYW1lRm9ySWQ6IGZ1bmN0aW9uKGNhbGxGcmFtZUlkKQorICAgIF9jYWxsRnJhbWVGb3JJ
ZDogZnVuY3Rpb24odG9wQ2FsbEZyYW1lLCBjYWxsRnJhbWVJZCkKICAgICB7CiAgICAgICAgIHZh
ciBwYXJzZWRDYWxsRnJhbWVJZCA9IGV2YWwoIigiICsgY2FsbEZyYW1lSWQgKyAiKSIpOwogICAg
ICAgICB2YXIgb3JkaW5hbCA9IHBhcnNlZENhbGxGcmFtZUlkLm9yZGluYWw7Ci0gICAgICAgIHZh
ciBjYWxsRnJhbWUgPSBJbmplY3RlZFNjcmlwdEhvc3QuY3VycmVudENhbGxGcmFtZSgpOworICAg
ICAgICB2YXIgY2FsbEZyYW1lID0gdG9wQ2FsbEZyYW1lOwogICAgICAgICB3aGlsZSAoLS1vcmRp
bmFsID49IDAgJiYgY2FsbEZyYW1lKQogICAgICAgICAgICAgY2FsbEZyYW1lID0gY2FsbEZyYW1l
LmNhbGxlcjsKICAgICAgICAgcmV0dXJuIGNhbGxGcmFtZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuanNvbiBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3IuanNvbgppbmRleCBhMDhkMjY1ZTI2ZTQ0ZDUzNDczNjAwNzAxOTI0MGU4OTM1
MzU2NzI3Li4wYTUyOWU3ZjUzYTQyYjI3YmE3N2Y0NDVkNWIwZTI3MDc4OTk3ZWNmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmpzb24KKysrIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5qc29uCkBAIC0xNDk5LDcgKzE0OTksOCBAQAog
ICAgICAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAiZGV0YWlscyIsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAidHlwZSI6ICJvYmplY3QiLAogICAgICAgICAgICAgICAgICAgICAgICAgInBy
b3BlcnRpZXMiOiBbCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJjYWxs
RnJhbWVzIiwgInR5cGUiOiAiYXJyYXkiLCAiaXRlbXMiOiB7ICIkcmVmIjogIkNhbGxGcmFtZSIg
fSwgImRlc2NyaXB0aW9uIjogIkNhbGwgc3RhY2sgdGhlIHZpcnR1YWwgbWFjaGluZSBzdG9wcGVk
IG9uLiIgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiY2FsbEZyYW1l
cyIsICJ0eXBlIjogImFycmF5IiwgIml0ZW1zIjogeyAiJHJlZiI6ICJDYWxsRnJhbWUiIH0sICJk
ZXNjcmlwdGlvbiI6ICJDYWxsIHN0YWNrIHRoZSB2aXJ0dWFsIG1hY2hpbmUgc3RvcHBlZCBvbi4i
IH0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJleGNlcHRpb24iLCAi
JHJlZiI6ICJSdW50aW1lLlJlbW90ZU9iamVjdCIsICJvcHRpb25hbCI6IHRydWUsICJkZXNjcmlw
dGlvbiI6ICJDdXJyZW50IGV4Y2VwdGlvbiBvYmplY3QgaWYgc2NyaXB0IGV4ZWN1dGlvbiBpcyBw
YXVzZWQgd2hlbiBhbiBleGNlcHRpb24gaXMgYmVpbmcgdGhyb3duLiIgfQogICAgICAgICAgICAg
ICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJD
YWxsIHN0YWNrIGluZm9ybWF0aW9uLiIKICAgICAgICAgICAgICAgICAgICAgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFnZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBZ2VudC5jcHAKaW5kZXggMzdhYWQyZDEwYjYxMTlh
YTI2MzVlMjA5ZDI2ODM0NTRiZmZiY2U4NS4uMmJmNzZjNTQwNGQ2MDI2Nzc3ZDEwNDdhZTRkNmE0
ZTcxY2VkOWYzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnQu
Y3BwCkBAIC0xNTIsOSArMTUyLDYgQEAgSW5zcGVjdG9yQWdlbnQ6Okluc3BlY3RvckFnZW50KFBh
Z2UqIHBhZ2UsIEluc3BlY3RvckNsaWVudCogY2xpZW50LCBJbmplY3RlZFNjcmkKICNpZiBFTkFC
TEUoRE9NX1NUT1JBR0UpCiAgICAgICAgICwgbV9kb21TdG9yYWdlQWdlbnQuZ2V0KCkKICNlbmRp
ZgotI2lmIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKQotICAgICAgICAsIG1fZGVidWdnZXJB
Z2VudC5nZXQoKQotI2VuZGlmCiAgICAgKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwCmluZGV4IDcwYjA3YmMwYjE5ZDVm
NTE5MGIyYWJhM2M3ZGY2MDA2OTZiZjZiM2QuLmE4YzJhZTYyMjVlYmVlY2ZmNmY0Mjk4N2Y1ZWI3
NDdkYTIzNDliODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JEZWJ1Z2dlckFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yRGVidWdnZXJBZ2VudC5jcHAKQEAgLTM5LDYgKzM5LDcgQEAKICNpbmNsdWRlICJJbnN0cnVt
ZW50aW5nQWdlbnRzLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKICNpbmNsdWRlICJT
Y3JpcHREZWJ1Z1NlcnZlci5oIgorI2luY2x1ZGUgIlNjcmlwdE9iamVjdC5oIgogI2luY2x1ZGUg
PHd0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAg
LTI3OSw3ICsyODAsNyBAQCBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gSW5zcGVjdG9yRGVi
dWdnZXJBZ2VudDo6cmVzb2x2ZUJyZWFrcG9pbnQoY29uc3QgU3RyaQogCiB2b2lkIEluc3BlY3Rv
ckRlYnVnZ2VyQWdlbnQ6OmVkaXRTY3JpcHRTb3VyY2UoRXJyb3JTdHJpbmcqIGVycm9yLCBjb25z
dCBTdHJpbmcmIHNvdXJjZUlELCBjb25zdCBTdHJpbmcmIG5ld0NvbnRlbnQsIFJlZlB0cjxJbnNw
ZWN0b3JBcnJheT4qIG5ld0NhbGxGcmFtZXMpCiB7Ci0gICAgaWYgKHNjcmlwdERlYnVnU2VydmVy
KCkuZWRpdFNjcmlwdFNvdXJjZShzb3VyY2VJRCwgbmV3Q29udGVudCwgZXJyb3IpKQorICAgIGlm
IChzY3JpcHREZWJ1Z1NlcnZlcigpLmVkaXRTY3JpcHRTb3VyY2Uoc291cmNlSUQsIG5ld0NvbnRl
bnQsIGVycm9yLCAmbV9jdXJyZW50Q2FsbFN0YWNrKSkKICAgICAgICAgKm5ld0NhbGxGcmFtZXMg
PSBjdXJyZW50Q2FsbEZyYW1lcygpOwogfQogCkBAIC0zNTUsNyArMzU2LDcgQEAgdm9pZCBJbnNw
ZWN0b3JEZWJ1Z2dlckFnZW50OjpldmFsdWF0ZU9uQ2FsbEZyYW1lKEVycm9yU3RyaW5nKiBlcnJv
clN0cmluZywgY29uc3QKIHsKICAgICBJbmplY3RlZFNjcmlwdCBpbmplY3RlZFNjcmlwdCA9IG1f
aW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLT5pbmplY3RlZFNjcmlwdEZvck9iamVjdElkKGNhbGxGcmFt
ZUlkKTsKICAgICBpZiAoIWluamVjdGVkU2NyaXB0Lmhhc05vVmFsdWUoKSkKLSAgICAgICAgaW5q
ZWN0ZWRTY3JpcHQuZXZhbHVhdGVPbkNhbGxGcmFtZShlcnJvclN0cmluZywgY2FsbEZyYW1lSWQs
IGV4cHJlc3Npb24sIG9iamVjdEdyb3VwID8gKm9iamVjdEdyb3VwIDogIiIsIGluY2x1ZGVDb21t
YW5kTGluZUFQSSA/ICppbmNsdWRlQ29tbWFuZExpbmVBUEkgOiBmYWxzZSwgcmVzdWx0KTsKKyAg
ICAgICAgaW5qZWN0ZWRTY3JpcHQuZXZhbHVhdGVPbkNhbGxGcmFtZShlcnJvclN0cmluZywgbV9j
dXJyZW50Q2FsbFN0YWNrLCBjYWxsRnJhbWVJZCwgZXhwcmVzc2lvbiwgb2JqZWN0R3JvdXAgPyAq
b2JqZWN0R3JvdXAgOiAiIiwgaW5jbHVkZUNvbW1hbmRMaW5lQVBJID8gKmluY2x1ZGVDb21tYW5k
TGluZUFQSSA6IGZhbHNlLCByZXN1bHQpOwogfQogCiBQYXNzUmVmUHRyPEluc3BlY3RvckFycmF5
PiBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpjdXJyZW50Q2FsbEZyYW1lcygpCkBAIC0zNjcsNyAr
MzY4LDcgQEAgUGFzc1JlZlB0cjxJbnNwZWN0b3JBcnJheT4gSW5zcGVjdG9yRGVidWdnZXJBZ2Vu
dDo6Y3VycmVudENhbGxGcmFtZXMoKQogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAg
ICAgICAgcmV0dXJuIEluc3BlY3RvckFycmF5OjpjcmVhdGUoKTsKICAgICB9Ci0gICAgcmV0dXJu
IGluamVjdGVkU2NyaXB0LmNhbGxGcmFtZXMoKTsKKyAgICByZXR1cm4gaW5qZWN0ZWRTY3JpcHQu
d3JhcENhbGxGcmFtZXMobV9jdXJyZW50Q2FsbFN0YWNrKTsKIH0KIAogLy8gSmF2YVNjcmlwdERl
YnVnTGlzdGVuZXIgZnVuY3Rpb25zCkBAIC00MDQsMTUgKzQwNSwyMiBAQCB2b2lkIEluc3BlY3Rv
ckRlYnVnZ2VyQWdlbnQ6OmZhaWxlZFRvUGFyc2VTb3VyY2UoY29uc3QgU3RyaW5nJiB1cmwsIGNv
bnN0IFN0cmluZwogICAgIG1fZnJvbnRlbmQtPnNjcmlwdEZhaWxlZFRvUGFyc2UodXJsLCBkYXRh
LCBmaXJzdExpbmUsIGVycm9yTGluZSwgZXJyb3JNZXNzYWdlKTsKIH0KIAotdm9pZCBJbnNwZWN0
b3JEZWJ1Z2dlckFnZW50OjpkaWRQYXVzZShTY3JpcHRTdGF0ZSogc2NyaXB0U3RhdGUpCit2b2lk
IEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmRpZFBhdXNlKFNjcmlwdFN0YXRlKiBzY3JpcHRTdGF0
ZSwgY29uc3QgU2NyaXB0VmFsdWUmIGNhbGxGcmFtZXMsIGNvbnN0IFNjcmlwdFZhbHVlJiBleGNl
cHRpb24pCiB7CiAgICAgQVNTRVJUKHNjcmlwdFN0YXRlICYmICFtX3BhdXNlZFNjcmlwdFN0YXRl
KTsKICAgICBtX3BhdXNlZFNjcmlwdFN0YXRlID0gc2NyaXB0U3RhdGU7CisgICAgbV9jdXJyZW50
Q2FsbFN0YWNrID0gY2FsbEZyYW1lczsKIAogICAgIGlmICghbV9icmVha1Byb2dyYW1EZXRhaWxz
KQogICAgICAgICBtX2JyZWFrUHJvZ3JhbURldGFpbHMgPSBJbnNwZWN0b3JPYmplY3Q6OmNyZWF0
ZSgpOwogICAgIG1fYnJlYWtQcm9ncmFtRGV0YWlscy0+c2V0VmFsdWUoImNhbGxGcmFtZXMiLCBj
dXJyZW50Q2FsbEZyYW1lcygpKTsKIAorICAgIGlmICghZXhjZXB0aW9uLmhhc05vVmFsdWUoKSkg
eworICAgICAgICBJbmplY3RlZFNjcmlwdCBpbmplY3RlZFNjcmlwdCA9IG1faW5qZWN0ZWRTY3Jp
cHRNYW5hZ2VyLT5pbmplY3RlZFNjcmlwdEZvcihzY3JpcHRTdGF0ZSk7CisgICAgICAgIGlmICgh
aW5qZWN0ZWRTY3JpcHQuaGFzTm9WYWx1ZSgpKQorICAgICAgICAgICAgbV9icmVha1Byb2dyYW1E
ZXRhaWxzLT5zZXRWYWx1ZSgiZXhjZXB0aW9uIiwgaW5qZWN0ZWRTY3JpcHQud3JhcE9iamVjdChl
eGNlcHRpb24sICJiYWNrdHJhY2UiKSk7CisgICAgfQorCiAgICAgbV9mcm9udGVuZC0+cGF1c2Vk
KG1fYnJlYWtQcm9ncmFtRGV0YWlscyk7CiAgICAgbV9qYXZhU2NyaXB0UGF1c2VTY2hlZHVsZWQg
PSBmYWxzZTsKIApAQCAtNDI1LDYgKzQzMyw3IEBAIHZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2Vu
dDo6ZGlkUGF1c2UoU2NyaXB0U3RhdGUqIHNjcmlwdFN0YXRlKQogdm9pZCBJbnNwZWN0b3JEZWJ1
Z2dlckFnZW50OjpkaWRDb250aW51ZSgpCiB7CiAgICAgbV9wYXVzZWRTY3JpcHRTdGF0ZSA9IDA7
CisgICAgbV9jdXJyZW50Q2FsbFN0YWNrID0gU2NyaXB0VmFsdWUoKTsKICAgICBtX2JyZWFrUHJv
Z3JhbURldGFpbHMgPSAwOwogICAgIG1fZnJvbnRlbmQtPnJlc3VtZWQoKTsKIH0KQEAgLTQ0MCw2
ICs0NDksNyBAQCB2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmJyZWFrUHJvZ3JhbShEZWJ1
Z2dlckV2ZW50VHlwZSB0eXBlLCBQYXNzUmVmUHRyPElucwogdm9pZCBJbnNwZWN0b3JEZWJ1Z2dl
ckFnZW50OjpjbGVhcigpCiB7CiAgICAgbV9wYXVzZWRTY3JpcHRTdGF0ZSA9IDA7CisgICAgbV9j
dXJyZW50Q2FsbFN0YWNrID0gU2NyaXB0VmFsdWUoKTsKICAgICBtX3NjcmlwdHMuY2xlYXIoKTsK
ICAgICBtX2JyZWFrcG9pbnRJZFRvRGVidWdTZXJ2ZXJCcmVha3BvaW50SWRzLmNsZWFyKCk7CiAg
ICAgbV9jb250aW51ZVRvTG9jYXRpb25CcmVha3BvaW50SWQgPSBTdHJpbmcoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmggYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5oCmluZGV4IDRj
MmU4NTVmYmQ3YTU5MzQ5ZmZiMTA5ZTg1ZGFkNzM0YmYyN2ZkZDkuLmIzNzlkZGE5ZGM0ODVlY2Uz
MGM4YmIzYmQ2Zjg4ODIyNjdiMDQyNDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuaApAQCAtNTMsNiArNTMsNyBAQCBjbGFzcyBJbnNw
ZWN0b3JTdGF0ZTsKIGNsYXNzIEluc3BlY3RvclZhbHVlOwogY2xhc3MgSW5zdHJ1bWVudGluZ0Fn
ZW50czsKIGNsYXNzIFNjcmlwdERlYnVnU2VydmVyOworY2xhc3MgU2NyaXB0VmFsdWU7CiAKIHR5
cGVkZWYgU3RyaW5nIEVycm9yU3RyaW5nOwogCkBAIC0xMjEsNyArMTIyLDcgQEAgcHJpdmF0ZToK
IAogICAgIHZpcnR1YWwgdm9pZCBkaWRQYXJzZVNvdXJjZShjb25zdCBTdHJpbmcmIHNvdXJjZUlE
LCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiBkYXRhLCBpbnQgbGluZU9mZnNldCwg
aW50IGNvbHVtbk9mZnNldCwgYm9vbCBpc0NvbnRlbnRTY3JpcHQpOwogICAgIHZpcnR1YWwgdm9p
ZCBmYWlsZWRUb1BhcnNlU291cmNlKGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIGRh
dGEsIGludCBmaXJzdExpbmUsIGludCBlcnJvckxpbmUsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNz
YWdlKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUGF1c2UoU2NyaXB0U3RhdGUqKTsKKyAgICB2aXJ0
dWFsIHZvaWQgZGlkUGF1c2UoU2NyaXB0U3RhdGUqLCBjb25zdCBTY3JpcHRWYWx1ZSYgY2FsbEZy
YW1lcywgY29uc3QgU2NyaXB0VmFsdWUmIGV4Y2VwdGlvbik7CiAgICAgdmlydHVhbCB2b2lkIGRp
ZENvbnRpbnVlKCk7CiAKICAgICBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gcmVzb2x2ZUJy
ZWFrcG9pbnQoY29uc3QgU3RyaW5nJiBicmVha3BvaW50SWQsIGNvbnN0IFN0cmluZyYgc291cmNl
SWQsIGNvbnN0IFNjcmlwdEJyZWFrcG9pbnQmKTsKQEAgLTE2MCw2ICsxNjEsNyBAQCBwcml2YXRl
OgogICAgIEluamVjdGVkU2NyaXB0TWFuYWdlciogbV9pbmplY3RlZFNjcmlwdE1hbmFnZXI7CiAg
ICAgSW5zcGVjdG9yRnJvbnRlbmQ6OkRlYnVnZ2VyKiBtX2Zyb250ZW5kOwogICAgIFNjcmlwdFN0
YXRlKiBtX3BhdXNlZFNjcmlwdFN0YXRlOworICAgIFNjcmlwdFZhbHVlIG1fY3VycmVudENhbGxT
dGFjazsKICAgICBTY3JpcHRzTWFwIG1fc2NyaXB0czsKICAgICBCcmVha3BvaW50SWRUb0RlYnVn
U2VydmVyQnJlYWtwb2ludElkc01hcCBtX2JyZWFrcG9pbnRJZFRvRGVidWdTZXJ2ZXJCcmVha3Bv
aW50SWRzOwogICAgIFN0cmluZyBtX2NvbnRpbnVlVG9Mb2NhdGlvbkJyZWFrcG9pbnRJZDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9TY3JpcHREZWJ1Z0xpc3RlbmVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvU2NyaXB0RGVidWdMaXN0ZW5lci5oCmluZGV4IDRh
OTNhNGNhNjliNjU3YWZmOTMzNzg4MjUwZDI3NmIyMjk0OTBjYjEuLjkzZmQwZmNlNzRhY2FkNjU2
MDIwNTkwZTAwN2ZlNTcyYjNmY2RiYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9TY3JpcHREZWJ1Z0xpc3RlbmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L1NjcmlwdERlYnVnTGlzdGVuZXIuaApAQCAtMzYsNiArMzYsNyBAQAogI2luY2x1ZGUgPHd0Zi9G
b3J3YXJkLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIFNjcmlwdFZhbHVlOwogCiBj
bGFzcyBTY3JpcHREZWJ1Z0xpc3RlbmVyIHsKIHB1YmxpYzoKQEAgLTQzLDcgKzQ0LDcgQEAgcHVi
bGljOgogCiAgICAgdmlydHVhbCB2b2lkIGRpZFBhcnNlU291cmNlKGNvbnN0IFN0cmluZyYgIHNv
dXJjZUlELCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiBkYXRhLCBpbnQgbGluZU9m
ZnNldCwgaW50IGNvbHVtbk9mZnNldCwgYm9vbCBpc0NvbnRlbnRTY3JpcHQpID0gMDsKICAgICB2
aXJ0dWFsIHZvaWQgZmFpbGVkVG9QYXJzZVNvdXJjZShjb25zdCBTdHJpbmcmIHVybCwgY29uc3Qg
U3RyaW5nJiBkYXRhLCBpbnQgZmlyc3RMaW5lLCBpbnQgZXJyb3JMaW5lLCBjb25zdCBTdHJpbmcm
IGVycm9yTWVzc2FnZSkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBkaWRQYXVzZShTY3JpcHRTdGF0
ZSopID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUGF1c2UoU2NyaXB0U3RhdGUqLCBjb25zdCBT
Y3JpcHRWYWx1ZSYgY2FsbEZyYW1lcywgY29uc3QgU2NyaXB0VmFsdWUmIGV4Y2VwdGlvbikgPSAw
OwogICAgIHZpcnR1YWwgdm9pZCBkaWRDb250aW51ZSgpID0gMDsKIH07CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyLmNwcApp
bmRleCBhM2U3N2I3ODc1NDI5Y2M0OTkyMWQ2NDEyMDg3MDZmZWJlZDc2NjcwLi5kYmNiODc2ZDdj
NTYwYjY4Y2E3OGFmYmY2NWNiYzlkYTZkOWJmZWZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvV29ya2VySW5zcGVjdG9yQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL1dvcmtlckluc3BlY3RvckNvbnRyb2xsZXIuY3BwCkBAIC04Niw5ICs4
Niw2IEBAIFdvcmtlckluc3BlY3RvckNvbnRyb2xsZXI6Oldvcmtlckluc3BlY3RvckNvbnRyb2xs
ZXIoV29ya2VyQ29udGV4dCogd29ya2VyQ29udGV4CiAjaWYgRU5BQkxFKERPTV9TVE9SQUdFKQog
ICAgICAgICAsIDAKICNlbmRpZgotI2lmIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKQotICAg
ICAgICAsIG1fZGVidWdnZXJBZ2VudC5nZXQoKQotI2VuZGlmCiAgICAgKTsKIH0KICAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>91246</attachid>
            <date>2011-04-27 00:39:49 -0700</date>
            <delta_ts>2011-04-27 01:28:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-58996-20110427113947.patch</filename>
            <type>text/plain</type>
            <size>34392</size>
            <attacher name="Yury Semikhatsky">yurys</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODQ4OTcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA2ZTNkOTM2MTBjYTM0N2Mz
ZGI1M2VhMDNkNjM2YmM1ZDRlODA0OWU1Li4zYzE2NzkyNjk1NTA1ZTNkOGRjNTk5ODMxMDVkYjY2
MWUyZjlmYjI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTMgQEAKKzIwMTEtMDQtMjYgIFl1cnkg
U2VtaWtoYXRza3kgIDx5dXJ5c0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogW3Byb3RvY29sXSBQYXVz
ZWQgZXZlbnQgc2hvdWxkIGV4cG9zZSBleGNlcHRpb24gdmFsdWUgdGhhdCBjYXVzZWQgaXQKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU4OTk2CisKKyAg
ICAgICAgRGVidWcucGF1c2UgZXZlbnQgbm93IGNvbnRhaW5zIGFuIG9wdGlvbmFsIHJlZmVyZW5j
ZSB0byB0aGUgZXhjZXB0aW9uCisgICAgICAgIG9iamVjdCBpbiBjYXNlIHNjcmlwdCBleGVjdXRp
b24gaXMgcGF1c2VkIG9uIGEgSmF2YVNjcmlwdCBleGNlcHRpb24uCisKKyAgICAgICAgQWxzbyBK
YXZhU2NyaXB0IGNhbGwgZnJhbWVzIGFyZSBwYXNzZWQgZGlyZWN0bHkgaW50byB0aGUgaW5qZWN0
ZWQgc2NyaXB0IHdoZW4KKyAgICAgICAgd2UgbmVlZCB0byB3cmFwIHRoZW0gZm9yIHBhc3Npbmcg
dG8gdGhlIGZyb250LWVuZC4gVGhpcyBjaGFuZ2UgYnJlYWtzIGN5Y2xpYworICAgICAgICBkZXBl
bmRlbmN5IFNjcmlwdERlYnVnU2VydmVyLT5JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LT5JbmplY3Rl
ZFNjcmlwdC0+SW5qZWN0ZWRTY3JpcHRIb3N0LT5TY3JpcHREZWJ1Z1NlcnZlcgorCisgICAgICAg
ICogYmluZGluZ3MvanMvSlNJbmplY3RlZFNjcmlwdEhvc3RDdXN0b20uY3BwOgorICAgICAgICAq
IGJpbmRpbmdzL2pzL1NjcmlwdERlYnVnU2VydmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNj
cmlwdERlYnVnU2VydmVyOjpkaXNwYXRjaERpZFBhdXNlKToKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9TY3JpcHREZWJ1Z1NlcnZlci5oOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1NjcmlwdERlYnVn
U2VydmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdERlYnVnU2VydmVyOjpicmVha1By
b2dyYW0pOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RGVidWdTZXJ2ZXI6OmVkaXRTY3JpcHRT
b3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RGVidWdTZXJ2ZXI6OmJyZWFrUHJvZ3Jh
bUNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdERlYnVnU2VydmVyOjpoYW5kbGVW
OERlYnVnRXZlbnQpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1NjcmlwdERlYnVnU2VydmVyLmg6
CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4SW5qZWN0ZWRTY3JpcHRIb3N0Q3VzdG9t
LmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SW5qZWN0ZWRTY3JpcHQ6OmV2YWx1YXRlT25DYWxsRnJhbWUpOgorICAgICAgICAo
V2ViQ29yZTo6SW5qZWN0ZWRTY3JpcHQ6OndyYXBDYWxsRnJhbWVzKToKKyAgICAgICAgKiBpbnNw
ZWN0b3IvSW5qZWN0ZWRTY3JpcHQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5qZWN0ZWRTY3Jp
cHRIb3N0LmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRIb3N0Lmg6Cisg
ICAgICAgIChXZWJDb3JlOjpJbmplY3RlZFNjcmlwdEhvc3Q6OmluaXQpOgorICAgICAgICAqIGlu
c3BlY3Rvci9JbmplY3RlZFNjcmlwdEhvc3QuaWRsOgorICAgICAgICAqIGluc3BlY3Rvci9Jbmpl
Y3RlZFNjcmlwdFNvdXJjZS5qczoKKyAgICAgICAgKC4pOgorICAgICAgICAqIGluc3BlY3Rvci9J
bnNwZWN0b3IuanNvbjoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQWdlbnQ6Okluc3BlY3RvckFnZW50KToKKyAgICAg
ICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpldmFsdWF0ZU9uQ2FsbEZyYW1lKToKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmN1cnJlbnRDYWxsRnJhbWVzKToK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OndyYXBDYWxsRnJhbWVz
KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmRpZFBhdXNlKToK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmRpZENvbnRpbnVlKToK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmNsZWFyKToKKyAgICAg
ICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5oOgorICAgICAgICAqIGluc3Bl
Y3Rvci9TY3JpcHREZWJ1Z0xpc3RlbmVyLmg6CisgICAgICAgICogaW5zcGVjdG9yL1dvcmtlcklu
c3BlY3RvckNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VySW5zcGVjdG9y
Q29udHJvbGxlcjo6V29ya2VySW5zcGVjdG9yQ29udHJvbGxlcik6CisKIDIwMTEtMDQtMjYgIERh
dmlkIExldmluICA8bGV2aW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFk
YW0gQmFydGguCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0luamVj
dGVkU2NyaXB0SG9zdEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0lu
amVjdGVkU2NyaXB0SG9zdEN1c3RvbS5jcHAKaW5kZXggN2JjOWI5ODhlNDFiMzdlMjAwYjQ3MTk2
M2QyMzA1YmRhZTkyMTRiYS4uYTU4OWU0ZjM4NDg5OTZhNDViMDVmNGE5ZDFhMDE1ZmViMTUyOTc4
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJbmplY3RlZFNjcmlw
dEhvc3RDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSW5qZWN0
ZWRTY3JpcHRIb3N0Q3VzdG9tLmNwcApAQCAtNTEsMTIgKzUxLDYgQEAKICNlbmRpZgogI2luY2x1
ZGUgPHJ1bnRpbWUvSlNMb2NrLmg+CiAKLSNpZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikK
LSNpbmNsdWRlICJKYXZhU2NyaXB0Q2FsbEZyYW1lLmgiCi0jaW5jbHVkZSAiSlNKYXZhU2NyaXB0
Q2FsbEZyYW1lLmgiCi0jaW5jbHVkZSAiU2NyaXB0RGVidWdTZXJ2ZXIuaCIKLSNlbmRpZgotCiB1
c2luZyBuYW1lc3BhY2UgSlNDOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC03NCwyMSArNjgs
NiBAQCBTY3JpcHRWYWx1ZSBJbmplY3RlZFNjcmlwdEhvc3Q6Om5vZGVBc1NjcmlwdFZhbHVlKFNj
cmlwdFN0YXRlKiBzdGF0ZSwgTm9kZSogbm9kZQogICAgIHJldHVybiBTY3JpcHRWYWx1ZShzdGF0
ZS0+Z2xvYmFsRGF0YSgpLCB0b0pTKHN0YXRlLCBkZXByZWNhdGVkR2xvYmFsT2JqZWN0Rm9yUHJv
dG90eXBlKHN0YXRlKSwgbm9kZSkpOwogfQogCi1KU1ZhbHVlIEpTSW5qZWN0ZWRTY3JpcHRIb3N0
OjpjdXJyZW50Q2FsbEZyYW1lKEV4ZWNTdGF0ZSogZXhlYykKLXsKLSNpZiBFTkFCTEUoSkFWQVND
UklQVF9ERUJVR0dFUikKLSAgICBKYXZhU2NyaXB0Q2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBpbXBs
KCktPmRlYnVnZ2VyQWdlbnQoKS0+c2NyaXB0RGVidWdTZXJ2ZXIoKS5jdXJyZW50Q2FsbEZyYW1l
KCk7Ci0gICAgaWYgKCFjYWxsRnJhbWUgfHwgIWNhbGxGcmFtZS0+aXNWYWxpZCgpKQotICAgICAg
ICByZXR1cm4ganNVbmRlZmluZWQoKTsKLQotICAgIEpTTG9jayBsb2NrKFNpbGVuY2VBc3NlcnRp
b25zT25seSk7Ci0gICAgcmV0dXJuIHRvSlMoZXhlYywgZ2xvYmFsT2JqZWN0KCksIGNhbGxGcmFt
ZSk7Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTShleGVjKTsKLSAgICByZXR1cm4ganNVbmRlZmlu
ZWQoKTsKLSNlbmRpZgotfQotCiBKU1ZhbHVlIEpTSW5qZWN0ZWRTY3JpcHRIb3N0OjppbnNwZWN0
ZWROb2RlKEV4ZWNTdGF0ZSogZXhlYykKIHsKICAgICBpZiAoZXhlYy0+YXJndW1lbnRDb3VudCgp
IDwgMSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdERlYnVn
U2VydmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdERlYnVnU2VydmVy
LmNwcAppbmRleCBlN2VlNjhiY2UyMGIwNjA2N2M1YTQ3ZWIyZDcwMjI2ZTYyMDAzM2IyLi4zN2Vk
YzZkZTA0OTA3OGRkZWEwNTgwNDkzYzk3ODc5NjMwZTMyZDE4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHREZWJ1Z1NlcnZlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvU2NyaXB0RGVidWdTZXJ2ZXIuY3BwCkBAIC0zNCw2ICszNCw3IEBA
CiAKICNpbmNsdWRlICJFdmVudExvb3AuaCIKICNpbmNsdWRlICJGcmFtZS5oIgorI2luY2x1ZGUg
IkpTSmF2YVNjcmlwdENhbGxGcmFtZS5oIgogI2luY2x1ZGUgIkphdmFTY3JpcHRDYWxsRnJhbWUu
aCIKICNpbmNsdWRlICJTY3JpcHRCcmVha3BvaW50LmgiCiAjaW5jbHVkZSAiU2NyaXB0RGVidWdM
aXN0ZW5lci5oIgpAQCAtMTg4LDI0ICsxODksMjcgQEAgdm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6
c3RlcE91dE9mRnVuY3Rpb24oKQogICAgIG1fZG9uZVByb2Nlc3NpbmdEZWJ1Z2dlckV2ZW50cyA9
IHRydWU7CiB9CiAKLWJvb2wgU2NyaXB0RGVidWdTZXJ2ZXI6OmVkaXRTY3JpcHRTb3VyY2UoY29u
c3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgU3RyaW5nKikKK2Jvb2wgU2NyaXB0RGVidWdTZXJ2
ZXI6OmVkaXRTY3JpcHRTb3VyY2UoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgU3RyaW5n
KiwgU2NyaXB0VmFsdWUqKQogewogICAgIC8vIEZJWE1FKDQwMzAwKTogaW1wbGVtZW50IHRoaXMu
CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1KYXZhU2NyaXB0Q2FsbEZyYW1lKiBTY3JpcHREZWJ1
Z1NlcnZlcjo6Y3VycmVudENhbGxGcmFtZSgpCi17Ci0gICAgaWYgKCFtX3BhdXNlZCkKLSAgICAg
ICAgcmV0dXJuIDA7Ci0gICAgcmV0dXJuIG1fY3VycmVudENhbGxGcmFtZS5nZXQoKTsKLX0KLQog
dm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6ZGlzcGF0Y2hEaWRQYXVzZShTY3JpcHREZWJ1Z0xpc3Rl
bmVyKiBsaXN0ZW5lcikKIHsKICAgICBBU1NFUlQobV9wYXVzZWQpOwotICAgIFNjcmlwdFN0YXRl
KiBzdGF0ZSA9IG1fY3VycmVudENhbGxGcmFtZS0+c2NvcGVDaGFpbigpLT5nbG9iYWxPYmplY3Qt
Pmdsb2JhbEV4ZWMoKTsKLSAgICBsaXN0ZW5lci0+ZGlkUGF1c2Uoc3RhdGUpOworICAgIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2N1cnJlbnRDYWxsRnJhbWUtPnNjb3BlQ2hhaW4o
KS0+Z2xvYmFsT2JqZWN0LmdldCgpOworICAgIFNjcmlwdFN0YXRlKiBzdGF0ZSA9IGdsb2JhbE9i
amVjdC0+Z2xvYmFsRXhlYygpOworICAgIEpTVmFsdWUganNDYWxsRnJhbWU7CisgICAgeworICAg
ICAgICBpZiAobV9jdXJyZW50Q2FsbEZyYW1lLT5pc1ZhbGlkKCkgJiYgZ2xvYmFsT2JqZWN0LT5p
bmhlcml0cygmSlNET01HbG9iYWxPYmplY3Q6OnNfaW5mbykpIHsKKyAgICAgICAgICAgIEpTRE9N
R2xvYmFsT2JqZWN0KiBkb21HbG9iYWxPYmplY3QgPSBzdGF0aWNfY2FzdDxKU0RPTUdsb2JhbE9i
amVjdCo+KGdsb2JhbE9iamVjdCk7CisgICAgICAgICAgICBKU0xvY2sgbG9jayhTaWxlbmNlQXNz
ZXJ0aW9uc09ubHkpOworICAgICAgICAgICAganNDYWxsRnJhbWUgPSB0b0pTKHN0YXRlLCBkb21H
bG9iYWxPYmplY3QsIG1fY3VycmVudENhbGxGcmFtZS5nZXQoKSk7CisgICAgICAgIH0gZWxzZQor
ICAgICAgICAgICAganNDYWxsRnJhbWUgPSBqc1VuZGVmaW5lZCgpOworICAgIH0KKyAgICBsaXN0
ZW5lci0+ZGlkUGF1c2Uoc3RhdGUsIFNjcmlwdFZhbHVlKHN0YXRlLT5nbG9iYWxEYXRhKCksIGpz
Q2FsbEZyYW1lKSwgU2NyaXB0VmFsdWUoKSk7CiB9CiAKIHZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6
OmRpc3BhdGNoRGlkQ29udGludWUoU2NyaXB0RGVidWdMaXN0ZW5lciogbGlzdGVuZXIpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHREZWJ1Z1NlcnZlci5oIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0RGVidWdTZXJ2ZXIuaAppbmRleCBmNmFj
OWExY2NkNDU1MDhjMDllOTc2ZWE3NjcwODQ4NTgwYTdiM2FlLi5hYzAxNzQyMDA0ZTA2MThmM2Vk
YTcyZmU3YzUzNDJmZjNmNTE5YmE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9TY3JpcHREZWJ1Z1NlcnZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L1NjcmlwdERlYnVnU2VydmVyLmgKQEAgLTUwLDggKzUwLDkgQEAgY2xhc3MgSlNHbG9iYWxPYmpl
Y3Q7CiB9CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFNjcmlwdERlYnVnTGlzdGVuZXI7
CiBjbGFzcyBKYXZhU2NyaXB0Q2FsbEZyYW1lOworY2xhc3MgU2NyaXB0RGVidWdMaXN0ZW5lcjsK
K2NsYXNzIFNjcmlwdFZhbHVlOwogCiBjbGFzcyBTY3JpcHREZWJ1Z1NlcnZlciA6IHByb3RlY3Rl
ZCBKU0M6OkRlYnVnZ2VyIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShTY3JpcHREZWJ1Z1Nl
cnZlcik7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwpAQCAtNzgsMTMgKzc5LDExIEBAIHB1Ymxp
YzoKICAgICB2b2lkIHN0ZXBPdmVyU3RhdGVtZW50KCk7CiAgICAgdm9pZCBzdGVwT3V0T2ZGdW5j
dGlvbigpOwogCi0gICAgYm9vbCBlZGl0U2NyaXB0U291cmNlKGNvbnN0IFN0cmluZyYgc291cmNl
SUQsIGNvbnN0IFN0cmluZyYgbmV3Q29udGVudCwgU3RyaW5nKiBlcnJvcik7CisgICAgYm9vbCBl
ZGl0U2NyaXB0U291cmNlKGNvbnN0IFN0cmluZyYgc291cmNlSUQsIGNvbnN0IFN0cmluZyYgbmV3
Q29udGVudCwgU3RyaW5nKiBlcnJvciwgU2NyaXB0VmFsdWUqIG5ld0NhbGxGcmFtZXMpOwogCiAg
ICAgdm9pZCByZWNvbXBpbGVBbGxKU0Z1bmN0aW9uc1Nvb24oKTsKICAgICB2aXJ0dWFsIHZvaWQg
cmVjb21waWxlQWxsSlNGdW5jdGlvbnMoVGltZXI8U2NyaXB0RGVidWdTZXJ2ZXI+KiA9IDApID0g
MDsKIAotICAgIEphdmFTY3JpcHRDYWxsRnJhbWUqIGN1cnJlbnRDYWxsRnJhbWUoKTsKLQogcHJv
dGVjdGVkOgogICAgIHR5cGVkZWYgSGFzaFNldDxTY3JpcHREZWJ1Z0xpc3RlbmVyKj4gTGlzdGVu
ZXJTZXQ7CiAgICAgdHlwZWRlZiB2b2lkIChTY3JpcHREZWJ1Z1NlcnZlcjo6KkphdmFTY3JpcHRF
eGVjdXRpb25DYWxsYmFjaykoU2NyaXB0RGVidWdMaXN0ZW5lciopOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0RGVidWdTZXJ2ZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0RGVidWdTZXJ2ZXIuY3BwCmluZGV4IDk2MTE3M2NkOTQx
ZGIxMDU3ZTliODhhNzgwMDc1YmU0MjQ1OTg5MTQuLjRmMWM0NDFkN2IwNTcyYTFiYmE3YjU2ZTQy
ZDA0ZmEzYzViMDM2M2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Nj
cmlwdERlYnVnU2VydmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3Jp
cHREZWJ1Z1NlcnZlci5jcHAKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlICJKYXZhU2NyaXB0
Q2FsbEZyYW1lLmgiCiAjaW5jbHVkZSAiU2NyaXB0RGVidWdMaXN0ZW5lci5oIgogI2luY2x1ZGUg
IlY4QmluZGluZy5oIgorI2luY2x1ZGUgIlY4SmF2YVNjcmlwdENhbGxGcmFtZS5oIgogI2luY2x1
ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMTcwLDE3
ICsxNzEsMTYgQEAgdm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6YnJlYWtQcm9ncmFtKCkKICAgICBp
ZiAoY29udGV4dC5Jc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fcGF1c2VkUGFn
ZUNvbnRleHQgPSAqY29udGV4dDsKKyAgICBtX3BhdXNlZENvbnRleHQgPSAqY29udGV4dDsKICAg
ICB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvbj4gYnJlYWtQcm9ncmFtRnVuY3Rpb24gPSBtX2JyZWFr
UHJvZ3JhbUNhbGxiYWNrVGVtcGxhdGUuZ2V0KCktPkdldEZ1bmN0aW9uKCk7CiAgICAgdjg6OkRl
YnVnOjpDYWxsKGJyZWFrUHJvZ3JhbUZ1bmN0aW9uKTsKLSAgICBtX3BhdXNlZFBhZ2VDb250ZXh0
LkNsZWFyKCk7CisgICAgbV9wYXVzZWRDb250ZXh0LkNsZWFyKCk7CiB9CiAKIHZvaWQgU2NyaXB0
RGVidWdTZXJ2ZXI6OmNvbnRpbnVlUHJvZ3JhbSgpCiB7CiAgICAgaWYgKGlzUGF1c2VkKCkpCiAg
ICAgICAgIHF1aXRNZXNzYWdlTG9vcE9uUGF1c2UoKTsKLSAgICBtX2N1cnJlbnRDYWxsRnJhbWUu
Y2xlYXIoKTsKICAgICBtX2V4ZWN1dGlvblN0YXRlLmNsZWFyKCk7CiB9CiAKQEAgLTIxMSwxNCAr
MjExLDE0IEBAIHZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6OnN0ZXBPdXRPZkZ1bmN0aW9uKCkKICAg
ICBjb250aW51ZVByb2dyYW0oKTsKIH0KIAotYm9vbCBTY3JpcHREZWJ1Z1NlcnZlcjo6ZWRpdFNj
cmlwdFNvdXJjZShjb25zdCBTdHJpbmcmIHNvdXJjZUlELCBjb25zdCBTdHJpbmcmIG5ld0NvbnRl
bnQsIFN0cmluZyogZXJyb3IpCitib29sIFNjcmlwdERlYnVnU2VydmVyOjplZGl0U2NyaXB0U291
cmNlKGNvbnN0IFN0cmluZyYgc291cmNlSUQsIGNvbnN0IFN0cmluZyYgbmV3Q29udGVudCwgU3Ry
aW5nKiBlcnJvciwgU2NyaXB0VmFsdWUqIG5ld0NhbGxGcmFtZXMpCiB7CiAgICAgZW5zdXJlRGVi
dWdnZXJTY3JpcHRDb21waWxlZCgpOwogICAgIHY4OjpIYW5kbGVTY29wZSBzY29wZTsKIAogICAg
IE93blB0cjx2ODo6Q29udGV4dDo6U2NvcGU+IGNvbnRleHRTY29wZTsKICAgICBpZiAoIWlzUGF1
c2VkKCkpCi0gICAgICAgIGNvbnRleHRTY29wZSA9IGFkb3B0UHRyKG5ldyB2ODo6Q29udGV4dDo6
U2NvcGUodjg6OkRlYnVnOjpHZXREZWJ1Z0NvbnRleHQoKSkpOworICAgICAgICBjb250ZXh0U2Nv
cGUuc2V0KG5ldyB2ODo6Q29udGV4dDo6U2NvcGUodjg6OkRlYnVnOjpHZXREZWJ1Z0NvbnRleHQo
KSkpOwogCiAgICAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb24+IGZ1bmN0aW9uID0gdjg6OkxvY2Fs
PHY4OjpGdW5jdGlvbj46OkNhc3QobV9kZWJ1Z2dlclNjcmlwdC5nZXQoKS0+R2V0KHY4OjpTdHJp
bmc6Ok5ldygiZWRpdFNjcmlwdFNvdXJjZSIpKSk7CiAgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+
IGFyZ3ZbXSA9IHsgdjhTdHJpbmcoc291cmNlSUQpLCB2OFN0cmluZyhuZXdDb250ZW50KSB9OwpA
QCAtMjM3LDIwICsyMzcsMjAgQEAgYm9vbCBTY3JpcHREZWJ1Z1NlcnZlcjo6ZWRpdFNjcmlwdFNv
dXJjZShjb25zdCBTdHJpbmcmIHNvdXJjZUlELCBjb25zdCBTdHJpbmcmIG4KICAgICBBU1NFUlQo
IXJlc3VsdC5Jc0VtcHR5KCkpOwogCiAgICAgLy8gQ2FsbCBzdGFjayBtYXkgaGF2ZSBjaGFuZ2Vk
IGFmdGVyIGlmIHRoZSBlZGl0ZWQgZnVuY3Rpb24gd2FzIG9uIHRoZSBzdGFjay4KLSAgICBpZiAo
bV9jdXJyZW50Q2FsbEZyYW1lKQotICAgICAgICBtX2N1cnJlbnRDYWxsRnJhbWUuY2xlYXIoKTsK
KyAgICBpZiAoaXNQYXVzZWQoKSkKKyAgICAgICAgKm5ld0NhbGxGcmFtZXMgPSBjdXJyZW50Q2Fs
bEZyYW1lKCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLVBhc3NSZWZQdHI8SmF2YVNjcmlwdENh
bGxGcmFtZT4gU2NyaXB0RGVidWdTZXJ2ZXI6OmN1cnJlbnRDYWxsRnJhbWUoKQorU2NyaXB0VmFs
dWUgU2NyaXB0RGVidWdTZXJ2ZXI6OmN1cnJlbnRDYWxsRnJhbWUoKQogewotICAgIGlmICghbV9j
dXJyZW50Q2FsbEZyYW1lKSB7Ci0gICAgICAgIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uPiBjdXJy
ZW50Q2FsbEZyYW1lRnVuY3Rpb24gPSB2ODo6TG9jYWw8djg6OkZ1bmN0aW9uPjo6Q2FzdChtX2Rl
YnVnZ2VyU2NyaXB0LmdldCgpLT5HZXQodjg6OlN0cmluZzo6TmV3KCJjdXJyZW50Q2FsbEZyYW1l
IikpKTsKLSAgICAgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGFyZ3ZbXSA9IHsgbV9leGVjdXRp
b25TdGF0ZS5nZXQoKSB9OwotICAgICAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gY3VycmVudENh
bGxGcmFtZVY4ID0gY3VycmVudENhbGxGcmFtZUZ1bmN0aW9uLT5DYWxsKG1fZGVidWdnZXJTY3Jp
cHQuZ2V0KCksIDEsIGFyZ3YpOwotICAgICAgICBtX2N1cnJlbnRDYWxsRnJhbWUgPSBKYXZhU2Ny
aXB0Q2FsbEZyYW1lOjpjcmVhdGUodjg6OkRlYnVnOjpHZXREZWJ1Z0NvbnRleHQoKSwgdjg6Okhh
bmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdChjdXJyZW50Q2FsbEZyYW1lVjgpKTsKLSAgICB9Ci0gICAg
cmV0dXJuIG1fY3VycmVudENhbGxGcmFtZTsKKyAgICBBU1NFUlQoaXNQYXVzZWQoKSk7CisgICAg
djg6OkhhbmRsZTx2ODo6RnVuY3Rpb24+IGN1cnJlbnRDYWxsRnJhbWVGdW5jdGlvbiA9IHY4OjpM
b2NhbDx2ODo6RnVuY3Rpb24+OjpDYXN0KG1fZGVidWdnZXJTY3JpcHQuZ2V0KCktPkdldCh2ODo6
U3RyaW5nOjpOZXcoImN1cnJlbnRDYWxsRnJhbWUiKSkpOworICAgIHY4OjpIYW5kbGU8djg6OlZh
bHVlPiBhcmd2W10gPSB7IG1fZXhlY3V0aW9uU3RhdGUuZ2V0KCkgfTsKKyAgICB2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gY3VycmVudENhbGxGcmFtZVY4ID0gY3VycmVudENhbGxGcmFtZUZ1bmN0aW9u
LT5DYWxsKG1fZGVidWdnZXJTY3JpcHQuZ2V0KCksIDEsIGFyZ3YpOworICAgIFJlZlB0cjxKYXZh
U2NyaXB0Q2FsbEZyYW1lPiBjdXJyZW50Q2FsbEZyYW1lID0gSmF2YVNjcmlwdENhbGxGcmFtZTo6
Y3JlYXRlKHY4OjpEZWJ1Zzo6R2V0RGVidWdDb250ZXh0KCksIHY4OjpIYW5kbGU8djg6Ok9iamVj
dD46OkNhc3QoY3VycmVudENhbGxGcmFtZVY4KSk7CisgICAgdjg6OkNvbnRleHQ6OlNjb3BlIGNv
bnRleHRTY29wZShtX3BhdXNlZENvbnRleHQpOworICAgIHJldHVybiBTY3JpcHRWYWx1ZSh0b1Y4
KGN1cnJlbnRDYWxsRnJhbWUucmVsZWFzZSgpKSk7CiB9CiAKIHZvaWQgU2NyaXB0RGVidWdTZXJ2
ZXI6OmludGVycnVwdEFuZFJ1bihQYXNzT3duUHRyPFRhc2s+IHRhc2spCkBAIC0yNzQsMjUgKzI3
NCwyNiBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gU2NyaXB0RGVidWdTZXJ2ZXI6OmJyZWFrUHJv
Z3JhbUNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudAogICAgIEFTU0VSVCgyID09IGFyZ3MuTGVu
Z3RoKCkpOwogICAgIAogICAgIFNjcmlwdERlYnVnU2VydmVyKiB0aGlzUHRyID0gdG9TY3JpcHRE
ZWJ1Z1NlcnZlcihhcmdzLkRhdGEoKSk7Ci0gICAgdGhpc1B0ci0+YnJlYWtQcm9ncmFtKHY4OjpI
YW5kbGU8djg6Ok9iamVjdD46OkNhc3QoYXJnc1swXSkpOworICAgIHY4OjpIYW5kbGU8djg6OlZh
bHVlPiBleGNlcHRpb247CisgICAgdGhpc1B0ci0+YnJlYWtQcm9ncmFtKHY4OjpIYW5kbGU8djg6
Ok9iamVjdD46OkNhc3QoYXJnc1swXSksIGV4Y2VwdGlvbik7CiAgICAgcmV0dXJuIHY4OjpVbmRl
ZmluZWQoKTsKIH0KIAotdm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6YnJlYWtQcm9ncmFtKHY4OjpI
YW5kbGU8djg6Ok9iamVjdD4gZXhlY3V0aW9uU3RhdGUpCit2b2lkIFNjcmlwdERlYnVnU2VydmVy
OjpicmVha1Byb2dyYW0odjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBleGVjdXRpb25TdGF0ZSwgdjg6
OkhhbmRsZTx2ODo6VmFsdWU+IGV4Y2VwdGlvbikKIHsKICAgICAvLyBEb24ndCBhbGxvdyBuZXN0
ZWQgYnJlYWtzLgogICAgIGlmIChpc1BhdXNlZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBT
Y3JpcHREZWJ1Z0xpc3RlbmVyKiBsaXN0ZW5lciA9IGdldERlYnVnTGlzdGVuZXJGb3JDb250ZXh0
KG1fcGF1c2VkUGFnZUNvbnRleHQpOworICAgIFNjcmlwdERlYnVnTGlzdGVuZXIqIGxpc3RlbmVy
ID0gZ2V0RGVidWdMaXN0ZW5lckZvckNvbnRleHQobV9wYXVzZWRDb250ZXh0KTsKICAgICBpZiAo
IWxpc3RlbmVyKQogICAgICAgICByZXR1cm47CiAKICAgICBtX2V4ZWN1dGlvblN0YXRlLnNldChl
eGVjdXRpb25TdGF0ZSk7Ci0gICAgU2NyaXB0U3RhdGUqIGN1cnJlbnRDYWxsRnJhbWVTdGF0ZSA9
IFNjcmlwdFN0YXRlOjpmb3JDb250ZXh0KG1fcGF1c2VkUGFnZUNvbnRleHQpOwotICAgIGxpc3Rl
bmVyLT5kaWRQYXVzZShjdXJyZW50Q2FsbEZyYW1lU3RhdGUpOworICAgIFNjcmlwdFN0YXRlKiBj
dXJyZW50Q2FsbEZyYW1lU3RhdGUgPSBTY3JpcHRTdGF0ZTo6Zm9yQ29udGV4dChtX3BhdXNlZENv
bnRleHQpOworICAgIGxpc3RlbmVyLT5kaWRQYXVzZShjdXJyZW50Q2FsbEZyYW1lU3RhdGUsIGN1
cnJlbnRDYWxsRnJhbWUoKSwgU2NyaXB0VmFsdWUoZXhjZXB0aW9uKSk7CiAKLSAgICBydW5NZXNz
YWdlTG9vcE9uUGF1c2UobV9wYXVzZWRQYWdlQ29udGV4dCk7CisgICAgcnVuTWVzc2FnZUxvb3BP
blBhdXNlKG1fcGF1c2VkQ29udGV4dCk7CiB9CiAKIHZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6OnY4
RGVidWdFdmVudENhbGxiYWNrKGNvbnN0IHY4OjpEZWJ1Zzo6RXZlbnREZXRhaWxzJiBldmVudERl
dGFpbHMpCkBAIC0zMjksMTYgKzMzMCwyMyBAQCB2b2lkIFNjcmlwdERlYnVnU2VydmVyOjpoYW5k
bGVWOERlYnVnRXZlbnQoY29uc3Qgdjg6OkRlYnVnOjpFdmVudERldGFpbHMmIGV2ZW50RAogICAg
ICAgICAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBvYmplY3QgPSB2ODo6SGFuZGxlPHY4OjpP
YmplY3Q+OjpDYXN0KHZhbHVlKTsKICAgICAgICAgICAgIGRpc3BhdGNoRGlkUGFyc2VTb3VyY2Uo
bGlzdGVuZXIsIG9iamVjdCk7CiAgICAgICAgIH0gZWxzZSBpZiAoZXZlbnQgPT0gdjg6OkJyZWFr
IHx8IGV2ZW50ID09IHY4OjpFeGNlcHRpb24pIHsKKyAgICAgICAgICAgIHY4OjpIYW5kbGU8djg6
OlZhbHVlPiBleGNlcHRpb247CiAgICAgICAgICAgICBpZiAoZXZlbnQgPT0gdjg6OkV4Y2VwdGlv
bikgewogICAgICAgICAgICAgICAgIHY4OjpMb2NhbDx2ODo6U3RhY2tUcmFjZT4gc3RhY2tUcmFj
ZSA9IHY4OjpTdGFja1RyYWNlOjpDdXJyZW50U3RhY2tUcmFjZSgxKTsKICAgICAgICAgICAgICAg
ICAvLyBTdGFjayB0cmFjZSBpcyBlbXB0eSBpbiBjYXNlIG9mIHN5bnRheCBlcnJvci4gU2lsZW50
bHkgY29udGludWUgZXhlY3V0aW9uIGluIHN1Y2ggY2FzZXMuCiAgICAgICAgICAgICAgICAgaWYg
KCFzdGFja1RyYWNlLT5HZXRGcmFtZUNvdW50KCkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgICAgICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGV2ZW50RGF0YSA9IGV2
ZW50RGV0YWlscy5HZXRFdmVudERhdGEoKTsKKyAgICAgICAgICAgICAgICB2ODo6SGFuZGxlPHY4
OjpWYWx1ZT4gZXhjZXB0aW9uR2V0dGVyVmFsdWUgPSBldmVudERhdGEtPkdldCh2ODo6U3RyaW5n
OjpOZXcoImV4Y2VwdGlvbiIpKTsKKyAgICAgICAgICAgICAgICBpZiAoIWV4Y2VwdGlvbkdldHRl
clZhbHVlLklzRW1wdHkoKSAmJiBleGNlcHRpb25HZXR0ZXJWYWx1ZS0+SXNGdW5jdGlvbigpKSB7
CisgICAgICAgICAgICAgICAgICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBhcmd2W10gPSB7IHY4
OjpIYW5kbGU8djg6OlZhbHVlPigpIH07CisgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbiA9
IHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uPjo6Q2FzdChleGNlcHRpb25HZXR0ZXJWYWx1ZSktPkNh
bGwoZXZlbnREYXRhLCAwLCBhcmd2KTsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9
CiAKLSAgICAgICAgICAgIG1fcGF1c2VkUGFnZUNvbnRleHQgPSAqZXZlbnRDb250ZXh0OwotICAg
ICAgICAgICAgYnJlYWtQcm9ncmFtKGV2ZW50RGV0YWlscy5HZXRFeGVjdXRpb25TdGF0ZSgpKTsK
LSAgICAgICAgICAgIG1fcGF1c2VkUGFnZUNvbnRleHQuQ2xlYXIoKTsKKyAgICAgICAgICAgIG1f
cGF1c2VkQ29udGV4dCA9ICpldmVudENvbnRleHQ7CisgICAgICAgICAgICBicmVha1Byb2dyYW0o
ZXZlbnREZXRhaWxzLkdldEV4ZWN1dGlvblN0YXRlKCksIGV4Y2VwdGlvbik7CisgICAgICAgICAg
ICBtX3BhdXNlZENvbnRleHQuQ2xlYXIoKTsKICAgICAgICAgfQogICAgIH0KIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdERlYnVnU2VydmVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHREZWJ1Z1NlcnZlci5oCmluZGV4IDkzZDg5N2My
MjZiNWI3MTYwMmUyZTM4NTVkNmNmNjQ1NTEzMzgwMjIuLmIyOWVjMDQzNTZlMjc1YzRjYzRhNTA1
ZmQyMWExNDFhZTkyYWM0ZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L1NjcmlwdERlYnVnU2VydmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2Ny
aXB0RGVidWdTZXJ2ZXIuaApAQCAtMzMsNyArMzMsNyBAQAogCiAjaWYgRU5BQkxFKEpBVkFTQ1JJ
UFRfREVCVUdHRVIpCiAKLSNpbmNsdWRlICJKYXZhU2NyaXB0Q2FsbEZyYW1lLmgiCisjaW5jbHVk
ZSAiT3duSGFuZGxlLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKICNpbmNsdWRlICJT
Y3JpcHRCcmVha3BvaW50LmgiCiAjaW5jbHVkZSAiVGltZXIuaCIKQEAgLTQ2LDYgKzQ2LDcgQEAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgU2NyaXB0RGVidWdMaXN0ZW5lcjsKK2NsYXNz
IFNjcmlwdFZhbHVlOwogCiBjbGFzcyBTY3JpcHREZWJ1Z1NlcnZlciB7CiAgICAgV1RGX01BS0Vf
Tk9OQ09QWUFCTEUoU2NyaXB0RGVidWdTZXJ2ZXIpOwpAQCAtNzIsMTMgKzczLDExIEBAIHB1Ymxp
YzoKICAgICB2b2lkIHN0ZXBPdmVyU3RhdGVtZW50KCk7CiAgICAgdm9pZCBzdGVwT3V0T2ZGdW5j
dGlvbigpOwogCi0gICAgYm9vbCBlZGl0U2NyaXB0U291cmNlKGNvbnN0IFN0cmluZyYgc291cmNl
SUQsIGNvbnN0IFN0cmluZyYgbmV3Q29udGVudCwgU3RyaW5nKiBlcnJvcik7CisgICAgYm9vbCBl
ZGl0U2NyaXB0U291cmNlKGNvbnN0IFN0cmluZyYgc291cmNlSUQsIGNvbnN0IFN0cmluZyYgbmV3
Q29udGVudCwgU3RyaW5nKiBlcnJvciwgU2NyaXB0VmFsdWUqIG5ld0NhbGxGcmFtZXMpOwogCiAg
ICAgdm9pZCByZWNvbXBpbGVBbGxKU0Z1bmN0aW9uc1Nvb24oKSB7IH0KICAgICB2b2lkIHJlY29t
cGlsZUFsbEpTRnVuY3Rpb25zKFRpbWVyPFNjcmlwdERlYnVnU2VydmVyPiogPSAwKSB7IH0KIAot
ICAgIFBhc3NSZWZQdHI8SmF2YVNjcmlwdENhbGxGcmFtZT4gY3VycmVudENhbGxGcmFtZSgpOwot
CiAgICAgY2xhc3MgVGFzayB7CiAgICAgcHVibGljOgogICAgICAgICB2aXJ0dWFsIH5UYXNrKCkg
eyB9CkBAIC05MSwxMiArOTAsMTQgQEAgcHJvdGVjdGVkOgogICAgIFNjcmlwdERlYnVnU2VydmVy
KCk7CiAgICAgflNjcmlwdERlYnVnU2VydmVyKCkgeyB9CiAgICAgCisgICAgU2NyaXB0VmFsdWUg
Y3VycmVudENhbGxGcmFtZSgpOworCiAgICAgdmlydHVhbCBTY3JpcHREZWJ1Z0xpc3RlbmVyKiBn
ZXREZWJ1Z0xpc3RlbmVyRm9yQ29udGV4dCh2ODo6SGFuZGxlPHY4OjpDb250ZXh0PikgPSAwOwog
ICAgIHZpcnR1YWwgdm9pZCBydW5NZXNzYWdlTG9vcE9uUGF1c2Uodjg6OkhhbmRsZTx2ODo6Q29u
dGV4dD4pID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgcXVpdE1lc3NhZ2VMb29wT25QYXVzZSgpID0g
MDsKIAogICAgIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gYnJlYWtQcm9ncmFtQ2FsbGJh
Y2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncyk7Ci0gICAgdm9pZCBicmVha1Byb2dyYW0odjg6
OkhhbmRsZTx2ODo6T2JqZWN0PiBleGVjdXRpb25TdGF0ZSk7CisgICAgdm9pZCBicmVha1Byb2dy
YW0odjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBleGVjdXRpb25TdGF0ZSwgdjg6OkhhbmRsZTx2ODo6
VmFsdWU+IGV4Y2VwdGlvbik7CiAKICAgICBzdGF0aWMgdm9pZCB2OERlYnVnRXZlbnRDYWxsYmFj
ayhjb25zdCB2ODo6RGVidWc6OkV2ZW50RGV0YWlscyYgZXZlbnREZXRhaWxzKTsKICAgICB2b2lk
IGhhbmRsZVY4RGVidWdFdmVudChjb25zdCB2ODo6RGVidWc6OkV2ZW50RGV0YWlscyYgZXZlbnRE
ZXRhaWxzKTsKQEAgLTEwOSw5ICsxMTAsOCBAQCBwcm90ZWN0ZWQ6CiAKICAgICBQYXVzZU9uRXhj
ZXB0aW9uc1N0YXRlIG1fcGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZTsKICAgICBPd25IYW5kbGU8djg6
Ok9iamVjdD4gbV9kZWJ1Z2dlclNjcmlwdDsKLSAgICBSZWZQdHI8SmF2YVNjcmlwdENhbGxGcmFt
ZT4gbV9jdXJyZW50Q2FsbEZyYW1lOwogICAgIE93bkhhbmRsZTx2ODo6T2JqZWN0PiBtX2V4ZWN1
dGlvblN0YXRlOwotICAgIHY4OjpMb2NhbDx2ODo6Q29udGV4dD4gbV9wYXVzZWRQYWdlQ29udGV4
dDsKKyAgICB2ODo6TG9jYWw8djg6OkNvbnRleHQ+IG1fcGF1c2VkQ29udGV4dDsKIAogICAgIGJv
b2wgbV9icmVha3BvaW50c0FjdGl2YXRlZDsKICAgICBPd25IYW5kbGU8djg6OkZ1bmN0aW9uVGVt
cGxhdGU+IG1fYnJlYWtQcm9ncmFtQ2FsbGJhY2tUZW1wbGF0ZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEluamVjdGVkU2NyaXB0SG9zdEN1c3RvbS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhJbmplY3RlZFNjcmlwdEhv
c3RDdXN0b20uY3BwCmluZGV4IDNkYmFjYjI4ZWMxNDM0NzYwZTJiYWI2NWUwNzYwZTQ3YTRlMDc4
YzAuLmQ0OWQ2MWRlNDZjMzJjZmVmYTdkZTEwZGY3NTQwZTE2MjU5ZGM2ZWMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEluamVjdGVkU2NyaXB0SG9zdEN1
c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SW5qZWN0
ZWRTY3JpcHRIb3N0Q3VzdG9tLmNwcApAQCAtMzQsMTUgKzM0LDEyIEBACiAjaW5jbHVkZSAiRGF0
YWJhc2UuaCIKICNpbmNsdWRlICJJbmplY3RlZFNjcmlwdC5oIgogI2luY2x1ZGUgIkluamVjdGVk
U2NyaXB0SG9zdC5oIgotI2luY2x1ZGUgIkluc3BlY3RvckRlYnVnZ2VyQWdlbnQuaCIKICNpbmNs
dWRlICJJbnNwZWN0b3JWYWx1ZXMuaCIKLSNpbmNsdWRlICJTY3JpcHREZWJ1Z1NlcnZlci5oIgog
I2luY2x1ZGUgIlNjcmlwdFZhbHVlLmgiCiAjaW5jbHVkZSAiVjhCaW5kaW5nLmgiCiAjaW5jbHVk
ZSAiVjhCaW5kaW5nU3RhdGUuaCIKICNpbmNsdWRlICJWOERhdGFiYXNlLmgiCiAjaW5jbHVkZSAi
VjhIaWRkZW5Qcm9wZXJ0eU5hbWUuaCIKLSNpbmNsdWRlICJWOEphdmFTY3JpcHRDYWxsRnJhbWUu
aCIKICNpbmNsdWRlICJWOE5vZGUuaCIKICNpbmNsdWRlICJWOFByb3h5LmgiCiAjaW5jbHVkZSAi
VjhTdG9yYWdlLmgiCkBAIC0xMDYsMTggKzEwMyw2IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBW
OEluamVjdGVkU2NyaXB0SG9zdDo6aW5zcGVjdENhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMm
CiAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKIH0KIAotdjg6OkhhbmRsZTx2ODo6VmFsdWU+
IFY4SW5qZWN0ZWRTY3JpcHRIb3N0OjpjdXJyZW50Q2FsbEZyYW1lQ2FsbGJhY2soY29uc3Qgdjg6
OkFyZ3VtZW50cyYgYXJncykKLXsKLSNpZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikKLSAg
ICBJTkNfU1RBVFMoIkluamVjdGVkU2NyaXB0SG9zdC5jdXJyZW50Q2FsbEZyYW1lKCkiKTsKLSAg
ICBJbmplY3RlZFNjcmlwdEhvc3QqIGhvc3QgPSBWOEluamVjdGVkU2NyaXB0SG9zdDo6dG9OYXRp
dmUoYXJncy5Ib2xkZXIoKSk7Ci0gICAgcmV0dXJuIHRvVjgoaG9zdC0+ZGVidWdnZXJBZ2VudCgp
LT5zY3JpcHREZWJ1Z1NlcnZlcigpLmN1cnJlbnRDYWxsRnJhbWUoKSk7Ci0jZWxzZQotICAgIFVO
VVNFRF9QQVJBTShhcmdzKTsKLSAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOwotI2VuZGlmCi19
Ci0KIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEluamVjdGVkU2NyaXB0SG9zdDo6ZGF0YWJhc2VJ
ZENhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAgICAgSU5DX1NUQVRTKCJJ
bmplY3RlZFNjcmlwdEhvc3QuZGF0YWJhc2VJZCgpIik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luamVjdGVkU2NyaXB0LmNwcAppbmRleCBlNjUzMjkwMTZkMGZjOWJmM2EwYmYzYmM4ZjAy
YTZmZWJmOGZkOWM0Li5hZWI2ZjM5MDY2ZTg5YTM3ZTA1MTEzZjFiODgyMWQzZGVhMTgzOTFiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdC5jcHAKQEAgLTcxLDkg
KzcxLDEwIEBAIHZvaWQgSW5qZWN0ZWRTY3JpcHQ6OmV2YWx1YXRlT24oRXJyb3JTdHJpbmcqIGVy
cm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIG9iamVjdElkCiAgICAgbWFrZU9iamVjdENhbGwoZXJy
b3JTdHJpbmcsIGZ1bmN0aW9uLCByZXN1bHQpOwogfQogCi12b2lkIEluamVjdGVkU2NyaXB0Ojpl
dmFsdWF0ZU9uQ2FsbEZyYW1lKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5n
JiBjYWxsRnJhbWVJZCwgY29uc3QgU3RyaW5nJiBleHByZXNzaW9uLCBjb25zdCBTdHJpbmcmIG9i
amVjdEdyb3VwLCBib29sIGluY2x1ZGVDb21tYW5kTGluZUFQSSwgUmVmUHRyPEluc3BlY3Rvck9i
amVjdD4qIHJlc3VsdCkKK3ZvaWQgSW5qZWN0ZWRTY3JpcHQ6OmV2YWx1YXRlT25DYWxsRnJhbWUo
RXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBTY3JpcHRWYWx1ZSYgY2FsbEZyYW1lcywg
Y29uc3QgU3RyaW5nJiBjYWxsRnJhbWVJZCwgY29uc3QgU3RyaW5nJiBleHByZXNzaW9uLCBjb25z
dCBTdHJpbmcmIG9iamVjdEdyb3VwLCBib29sIGluY2x1ZGVDb21tYW5kTGluZUFQSSwgUmVmUHRy
PEluc3BlY3Rvck9iamVjdD4qIHJlc3VsdCkKIHsKICAgICBTY3JpcHRGdW5jdGlvbkNhbGwgZnVu
Y3Rpb24obV9pbmplY3RlZFNjcmlwdE9iamVjdCwgImV2YWx1YXRlT25DYWxsRnJhbWUiKTsKKyAg
ICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudChjYWxsRnJhbWVzKTsKICAgICBmdW5jdGlvbi5hcHBl
bmRBcmd1bWVudChjYWxsRnJhbWVJZCk7CiAgICAgZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQoZXhw
cmVzc2lvbik7CiAgICAgZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQob2JqZWN0R3JvdXApOwpAQCAt
MTMxLDEwICsxMzIsMTEgQEAgdm9pZCBJbmplY3RlZFNjcmlwdDo6cmVsZWFzZU9iamVjdChjb25z
dCBTdHJpbmcmIG9iamVjdElkKQogfQogCiAjaWYgRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIp
Ci1QYXNzUmVmUHRyPEluc3BlY3RvckFycmF5PiBJbmplY3RlZFNjcmlwdDo6Y2FsbEZyYW1lcygp
CitQYXNzUmVmUHRyPEluc3BlY3RvckFycmF5PiBJbmplY3RlZFNjcmlwdDo6d3JhcENhbGxGcmFt
ZXMoY29uc3QgU2NyaXB0VmFsdWUmIGNhbGxGcmFtZXMpCiB7CiAgICAgQVNTRVJUKCFoYXNOb1Zh
bHVlKCkpOwotICAgIFNjcmlwdEZ1bmN0aW9uQ2FsbCBmdW5jdGlvbihtX2luamVjdGVkU2NyaXB0
T2JqZWN0LCAiY2FsbEZyYW1lcyIpOworICAgIFNjcmlwdEZ1bmN0aW9uQ2FsbCBmdW5jdGlvbiht
X2luamVjdGVkU2NyaXB0T2JqZWN0LCAid3JhcENhbGxGcmFtZXMiKTsKKyAgICBmdW5jdGlvbi5h
cHBlbmRBcmd1bWVudChjYWxsRnJhbWVzKTsKICAgICBTY3JpcHRWYWx1ZSBjYWxsRnJhbWVzVmFs
dWUgPSBmdW5jdGlvbi5jYWxsKCk7CiAgICAgUmVmUHRyPEluc3BlY3RvclZhbHVlPiByZXN1bHQg
PSBjYWxsRnJhbWVzVmFsdWUudG9JbnNwZWN0b3JWYWx1ZShtX2luamVjdGVkU2NyaXB0T2JqZWN0
LnNjcmlwdFN0YXRlKCkpOwogICAgIGlmIChyZXN1bHQtPnR5cGUoKSA9PSBJbnNwZWN0b3JWYWx1
ZTo6VHlwZUFycmF5KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVj
dGVkU2NyaXB0LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHQuaApp
bmRleCBhZGNiMjA4ZTdkYjkwNTg3N2IwNWEyNDQwZGJkM2Q1ZThjNzFkN2I5Li40ZDg3MDM1ZWQ5
MWI2NzhmMjc2OWE2OGVlYTViODgzYTMxZGEwZTFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5qZWN0ZWRTY3JpcHQuaApAQCAtNTcsMTQgKzU3LDE0IEBAIHB1YmxpYzoKIAogICAgIHZv
aWQgZXZhbHVhdGUoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIGV4cHJlc3Npb24sIGNvbnN0
IFN0cmluZyYgb2JqZWN0R3JvdXAsIGJvb2wgaW5jbHVkZUNvbW1hbmRMaW5lQVBJLCBSZWZQdHI8
SW5zcGVjdG9yT2JqZWN0PiogcmVzdWx0KTsKICAgICB2b2lkIGV2YWx1YXRlT24oRXJyb3JTdHJp
bmcqLCBjb25zdCBTdHJpbmcmIG9iamVjdElkLCBjb25zdCBTdHJpbmcmIGV4cHJlc3Npb24sIFJl
ZlB0cjxJbnNwZWN0b3JPYmplY3Q+KiByZXN1bHQpOwotICAgIHZvaWQgZXZhbHVhdGVPbkNhbGxG
cmFtZShFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgY2FsbEZyYW1lSWQsIGNvbnN0IFN0cmlu
ZyYgZXhwcmVzc2lvbiwgY29uc3QgU3RyaW5nJiBvYmplY3RHcm91cCwgYm9vbCBpbmNsdWRlQ29t
bWFuZExpbmVBUEksIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+KiByZXN1bHQpOworICAgIHZvaWQg
ZXZhbHVhdGVPbkNhbGxGcmFtZShFcnJvclN0cmluZyosIGNvbnN0IFNjcmlwdFZhbHVlJiBjYWxs
RnJhbWVzLCBjb25zdCBTdHJpbmcmIGNhbGxGcmFtZUlkLCBjb25zdCBTdHJpbmcmIGV4cHJlc3Np
b24sIGNvbnN0IFN0cmluZyYgb2JqZWN0R3JvdXAsIGJvb2wgaW5jbHVkZUNvbW1hbmRMaW5lQVBJ
LCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiogcmVzdWx0KTsKICAgICB2b2lkIGdldFByb3BlcnRp
ZXMoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIG9iamVjdElkLCBib29sIGlnbm9yZUhhc093
blByb3BlcnR5LCBSZWZQdHI8SW5zcGVjdG9yQXJyYXk+KiByZXN1bHQpOwogICAgIE5vZGUqIG5v
ZGVGb3JPYmplY3RJZChjb25zdCBTdHJpbmcmIG9iamVjdElkKTsKICAgICB2b2lkIHNldFByb3Bl
cnR5VmFsdWUoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIG9iamVjdElkLCBjb25zdCBTdHJp
bmcmIHByb3BlcnR5TmFtZSwgY29uc3QgU3RyaW5nJiBleHByZXNzaW9uKTsKICAgICB2b2lkIHJl
bGVhc2VPYmplY3QoY29uc3QgU3RyaW5nJiBvYmplY3RJZCk7CiAKICNpZiBFTkFCTEUoSkFWQVND
UklQVF9ERUJVR0dFUikKLSAgICBQYXNzUmVmUHRyPEluc3BlY3RvckFycmF5PiBjYWxsRnJhbWVz
KCk7CisgICAgUGFzc1JlZlB0cjxJbnNwZWN0b3JBcnJheT4gd3JhcENhbGxGcmFtZXMoY29uc3Qg
U2NyaXB0VmFsdWUmKTsKICNlbmRpZgogCiAgICAgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+
IHdyYXBPYmplY3QoU2NyaXB0VmFsdWUsIGNvbnN0IFN0cmluZyYgZ3JvdXBOYW1lKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdEhvc3QuY3BwIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0SG9zdC5jcHAKaW5kZXggYTBi
YWZkZjkyNjNjYjQxNTc5NDc3MWExZWQ4YzFhMWE4ZTc3NjFkNS4uYjU0MjdmOGNkOGU4YjU3ZWE0
Y2Y4OTRjNTM0NWUzMTIwZTJlZDgyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luamVjdGVkU2NyaXB0SG9zdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luamVjdGVkU2NyaXB0SG9zdC5jcHAKQEAgLTQ3LDEwICs0Nyw2IEBACiAjaW5jbHVkZSAiSW5z
cGVjdG9yVmFsdWVzLmgiCiAjaW5jbHVkZSAiUGFzdGVib2FyZC5oIgogCi0jaWYgRU5BQkxFKEpB
VkFTQ1JJUFRfREVCVUdHRVIpCi0jaW5jbHVkZSAiU2NyaXB0RGVidWdTZXJ2ZXIuaCIKLSNlbmRp
ZgotCiAjaWYgRU5BQkxFKERBVEFCQVNFKQogI2luY2x1ZGUgIkRhdGFiYXNlLmgiCiAjZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdEhvc3Qu
aCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdEhvc3QuaAppbmRleCA4
OWE1MDMxZTdiNjM4ZGM1OWMwYzgwNDZhZjViMDk2ODVjOTUzY2E3Li5iNTkyZDliYWUwODU3ZGRi
MTVkZGZhNWVjZDAyNjc1Y2ZjYWE1OGY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5qZWN0ZWRTY3JpcHRIb3N0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luamVjdGVkU2NyaXB0SG9zdC5oCkBAIC00Nyw3ICs0Nyw2IEBAIGNsYXNzIEluc3BlY3RvckFn
ZW50OwogY2xhc3MgSW5zcGVjdG9yQ29uc29sZUFnZW50OwogY2xhc3MgSW5zcGVjdG9yRE9NU3Rv
cmFnZUFnZW50OwogY2xhc3MgSW5zcGVjdG9yRGF0YWJhc2VBZ2VudDsKLWNsYXNzIEluc3BlY3Rv
ckRlYnVnZ2VyQWdlbnQ7CiBjbGFzcyBJbnNwZWN0b3JGcm9udGVuZDsKIGNsYXNzIEluc3BlY3Rv
ck9iamVjdDsKIGNsYXNzIE5vZGU7CkBAIC02OSw5ICs2OCw2IEBAIHB1YmxpYzoKICNpZiBFTkFC
TEUoRE9NX1NUT1JBR0UpCiAgICAgICAgICAgICAsIEluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudCog
ZG9tU3RvcmFnZUFnZW50CiAjZW5kaWYKLSNpZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikK
LSAgICAgICAgICAgICwgSW5zcGVjdG9yRGVidWdnZXJBZ2VudCogZGVidWdnZXJBZ2VudAotI2Vu
ZGlmCiAgICAgICAgICkKICAgICB7CiAgICAgICAgIG1faW5zcGVjdG9yQWdlbnQgPSBpbnNwZWN0
b3JBZ2VudDsKQEAgLTgyLDkgKzc4LDYgQEAgcHVibGljOgogI2lmIEVOQUJMRShET01fU1RPUkFH
RSkKICAgICAgICAgbV9kb21TdG9yYWdlQWdlbnQgPSBkb21TdG9yYWdlQWdlbnQ7CiAjZW5kaWYK
LSNpZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikKLSAgICAgICAgbV9kZWJ1Z2dlckFnZW50
ID0gZGVidWdnZXJBZ2VudDsKLSNlbmRpZgogICAgIH0KICAgICB2b2lkIHNldEZyb250ZW5kKElu
c3BlY3RvckZyb250ZW5kKiBmcm9udGVuZCkgeyBtX2Zyb250ZW5kID0gZnJvbnRlbmQ7IH0KICAg
ICB2b2lkIGNsZWFyRnJvbnRlbmQoKSB7IG1fZnJvbnRlbmQgPSAwOyB9CkBAIC0xMTIsOSArMTA1
LDYgQEAgcHVibGljOgogICAgIHZvaWQgZGlkQ3JlYXRlV29ya2VyKGxvbmcgaWQsIGNvbnN0IFN0
cmluZyYgdXJsLCBib29sIGlzU2hhcmVkV29ya2VyKTsKICAgICB2b2lkIGRpZERlc3Ryb3lXb3Jr
ZXIobG9uZyBpZCk7CiAjZW5kaWYKLSNpZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikKLSAg
ICBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50KiBkZWJ1Z2dlckFnZW50KCkgeyByZXR1cm4gbV9kZWJ1
Z2dlckFnZW50OyB9Ci0jZW5kaWYKIAogcHJpdmF0ZToKICAgICBJbmplY3RlZFNjcmlwdEhvc3Qo
KTsKQEAgLTEyNyw5ICsxMTcsNiBAQCBwcml2YXRlOgogI2lmIEVOQUJMRShET01fU1RPUkFHRSkK
ICAgICBJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQqIG1fZG9tU3RvcmFnZUFnZW50OwogI2VuZGlm
Ci0jaWYgRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpCi0gICAgSW5zcGVjdG9yRGVidWdnZXJB
Z2VudCogbV9kZWJ1Z2dlckFnZW50OwotI2VuZGlmCiAgICAgSW5zcGVjdG9yRnJvbnRlbmQqIG1f
ZnJvbnRlbmQ7CiAgICAgbG9uZyBtX2xhc3RXb3JrZXJJZDsKICAgICBWZWN0b3I8UmVmUHRyPE5v
ZGU+ID4gbV9pbnNwZWN0ZWROb2RlczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbmplY3RlZFNjcmlwdEhvc3QuaWRsIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
amVjdGVkU2NyaXB0SG9zdC5pZGwKaW5kZXggZmM2MDgxMzg2YTIzNjYzYzZkYjIzNjliMjViYmRl
Y2FjZWRhMzdmMC4uNjk4ZTRiZGRlMmFmMzFhMDI2ZGJiOGYxMjE1MTgyM2ZmNTQ5YmRjMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0SG9zdC5pZGwK
KysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0SG9zdC5pZGwKQEAg
LTM5LDcgKzM5LDYgQEAgbW9kdWxlIGNvcmUgewogICAgICAgICBbQ3VzdG9tXSBET01PYmplY3Qg
aW5zcGVjdGVkTm9kZShpbiBpbnQgbnVtKTsKICAgICAgICAgW0N1c3RvbV0gRE9NT2JqZWN0IGlu
dGVybmFsQ29uc3RydWN0b3JOYW1lKGluIERPTU9iamVjdCBvYmplY3QpOwogCi0gICAgICAgIFtD
dXN0b21dIERPTU9iamVjdCBjdXJyZW50Q2FsbEZyYW1lKCk7CiAgICAgICAgIFtDdXN0b21dIGlu
dCBkYXRhYmFzZUlkKGluIERPTU9iamVjdCBkYXRhYmFzZSk7CiAgICAgICAgIFtDdXN0b21dIGlu
dCBzdG9yYWdlSWQoaW4gRE9NT2JqZWN0IHN0b3JhZ2UpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRTb3VyY2UuanMgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRTb3VyY2UuanMKaW5kZXggMTA4MzMwZGM0N2Q0NzJi
OTdlMzliOTZkOGQ4YTQyMGQxZjg0NzQzMC4uMzVjNzY3MTE1NjcxMTgxYmVlYzJlYzZiMGQwYWE2
ODJiY2ZlMzBmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVk
U2NyaXB0U291cmNlLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNj
cmlwdFNvdXJjZS5qcwpAQCAtMjkzLDkgKzI5Myw4IEBAIEluamVjdGVkU2NyaXB0LnByb3RvdHlw
ZSA9IHsKICAgICAgICAgfQogICAgIH0sCiAKLSAgICBjYWxsRnJhbWVzOiBmdW5jdGlvbigpCisg
ICAgd3JhcENhbGxGcmFtZXM6IGZ1bmN0aW9uKGNhbGxGcmFtZSkKICAgICB7Ci0gICAgICAgIHZh
ciBjYWxsRnJhbWUgPSBJbmplY3RlZFNjcmlwdEhvc3QuY3VycmVudENhbGxGcmFtZSgpOwogICAg
ICAgICBpZiAoIWNhbGxGcmFtZSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAKQEAg
LTMwOCwxOSArMzA3LDE5IEBAIEluamVjdGVkU2NyaXB0LnByb3RvdHlwZSA9IHsKICAgICAgICAg
cmV0dXJuIHJlc3VsdDsKICAgICB9LAogCi0gICAgZXZhbHVhdGVPbkNhbGxGcmFtZTogZnVuY3Rp
b24oY2FsbEZyYW1lSWQsIGV4cHJlc3Npb24sIG9iamVjdEdyb3VwLCBpbmplY3RDb21tYW5kTGlu
ZUFQSSkKKyAgICBldmFsdWF0ZU9uQ2FsbEZyYW1lOiBmdW5jdGlvbih0b3BDYWxsRnJhbWUsIGNh
bGxGcmFtZUlkLCBleHByZXNzaW9uLCBvYmplY3RHcm91cCwgaW5qZWN0Q29tbWFuZExpbmVBUEkp
CiAgICAgewotICAgICAgICB2YXIgY2FsbEZyYW1lID0gdGhpcy5fY2FsbEZyYW1lRm9ySWQoY2Fs
bEZyYW1lSWQpOworICAgICAgICB2YXIgY2FsbEZyYW1lID0gdGhpcy5fY2FsbEZyYW1lRm9ySWQo
dG9wQ2FsbEZyYW1lLCBjYWxsRnJhbWVJZCk7CiAgICAgICAgIGlmICghY2FsbEZyYW1lKQogICAg
ICAgICAgICAgcmV0dXJuICJDb3VsZCBub3QgZmluZCBjYWxsIGZyYW1lIHdpdGggZ2l2ZW4gaWQi
OwogICAgICAgICByZXR1cm4gdGhpcy5fZXZhbHVhdGVBbmRXcmFwKGNhbGxGcmFtZS5ldmFsdWF0
ZSwgY2FsbEZyYW1lLCBleHByZXNzaW9uLCBvYmplY3RHcm91cCwgdHJ1ZSwgaW5qZWN0Q29tbWFu
ZExpbmVBUEkpOwogICAgIH0sCiAKLSAgICBfY2FsbEZyYW1lRm9ySWQ6IGZ1bmN0aW9uKGNhbGxG
cmFtZUlkKQorICAgIF9jYWxsRnJhbWVGb3JJZDogZnVuY3Rpb24odG9wQ2FsbEZyYW1lLCBjYWxs
RnJhbWVJZCkKICAgICB7CiAgICAgICAgIHZhciBwYXJzZWRDYWxsRnJhbWVJZCA9IGV2YWwoIigi
ICsgY2FsbEZyYW1lSWQgKyAiKSIpOwogICAgICAgICB2YXIgb3JkaW5hbCA9IHBhcnNlZENhbGxG
cmFtZUlkLm9yZGluYWw7Ci0gICAgICAgIHZhciBjYWxsRnJhbWUgPSBJbmplY3RlZFNjcmlwdEhv
c3QuY3VycmVudENhbGxGcmFtZSgpOworICAgICAgICB2YXIgY2FsbEZyYW1lID0gdG9wQ2FsbEZy
YW1lOwogICAgICAgICB3aGlsZSAoLS1vcmRpbmFsID49IDAgJiYgY2FsbEZyYW1lKQogICAgICAg
ICAgICAgY2FsbEZyYW1lID0gY2FsbEZyYW1lLmNhbGxlcjsKICAgICAgICAgcmV0dXJuIGNhbGxG
cmFtZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuanNv
biBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuanNvbgppbmRleCBhMDhkMjY1
ZTI2ZTQ0ZDUzNDczNjAwNzAxOTI0MGU4OTM1MzU2NzI3Li4wYTUyOWU3ZjUzYTQyYjI3YmE3N2Y0
NDVkNWIwZTI3MDc4OTk3ZWNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yLmpzb24KKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5q
c29uCkBAIC0xNDk5LDcgKzE0OTksOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgIm5hbWUi
OiAiZGV0YWlscyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAidHlwZSI6ICJvYmplY3QiLAog
ICAgICAgICAgICAgICAgICAgICAgICAgInByb3BlcnRpZXMiOiBbCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgeyAibmFtZSI6ICJjYWxsRnJhbWVzIiwgInR5cGUiOiAiYXJyYXkiLCAiaXRl
bXMiOiB7ICIkcmVmIjogIkNhbGxGcmFtZSIgfSwgImRlc2NyaXB0aW9uIjogIkNhbGwgc3RhY2sg
dGhlIHZpcnR1YWwgbWFjaGluZSBzdG9wcGVkIG9uLiIgfQorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHsgIm5hbWUiOiAiY2FsbEZyYW1lcyIsICJ0eXBlIjogImFycmF5IiwgIml0ZW1zIjog
eyAiJHJlZiI6ICJDYWxsRnJhbWUiIH0sICJkZXNjcmlwdGlvbiI6ICJDYWxsIHN0YWNrIHRoZSB2
aXJ0dWFsIG1hY2hpbmUgc3RvcHBlZCBvbi4iIH0sCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgeyAibmFtZSI6ICJleGNlcHRpb24iLCAiJHJlZiI6ICJSdW50aW1lLlJlbW90ZU9iamVjdCIs
ICJvcHRpb25hbCI6IHRydWUsICJkZXNjcmlwdGlvbiI6ICJDdXJyZW50IGV4Y2VwdGlvbiBvYmpl
Y3QgaWYgc2NyaXB0IGV4ZWN1dGlvbiBpcyBwYXVzZWQgd2hlbiBhbiBleGNlcHRpb24gaXMgYmVp
bmcgdGhyb3duLiIgfQogICAgICAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJDYWxsIHN0YWNrIGluZm9ybWF0aW9uLiIKICAgICAg
ICAgICAgICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBZ2Vu
dC5jcHAKaW5kZXggMzdhYWQyZDEwYjYxMTlhYTI2MzVlMjA5ZDI2ODM0NTRiZmZiY2U4NS4uMmJm
NzZjNTQwNGQ2MDI2Nzc3ZDEwNDdhZTRkNmE0ZTcxY2VkOWYzMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnQuY3BwCkBAIC0xNTIsOSArMTUyLDYgQEAgSW5zcGVj
dG9yQWdlbnQ6Okluc3BlY3RvckFnZW50KFBhZ2UqIHBhZ2UsIEluc3BlY3RvckNsaWVudCogY2xp
ZW50LCBJbmplY3RlZFNjcmkKICNpZiBFTkFCTEUoRE9NX1NUT1JBR0UpCiAgICAgICAgICwgbV9k
b21TdG9yYWdlQWdlbnQuZ2V0KCkKICNlbmRpZgotI2lmIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVH
R0VSKQotICAgICAgICAsIG1fZGVidWdnZXJBZ2VudC5nZXQoKQotI2VuZGlmCiAgICAgKTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRlYnVnZ2Vy
QWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRlYnVnZ2VyQWdl
bnQuY3BwCmluZGV4IDcwYjA3YmMwYjE5ZDVmNTE5MGIyYWJhM2M3ZGY2MDA2OTZiZjZiM2QuLmE4
YzJhZTYyMjVlYmVlY2ZmNmY0Mjk4N2Y1ZWI3NDdkYTIzNDliODAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHAKQEAgLTM5LDYg
KzM5LDcgQEAKICNpbmNsdWRlICJJbnN0cnVtZW50aW5nQWdlbnRzLmgiCiAjaW5jbHVkZSAiUGxh
dGZvcm1TdHJpbmcuaCIKICNpbmNsdWRlICJTY3JpcHREZWJ1Z1NlcnZlci5oIgorI2luY2x1ZGUg
IlNjcmlwdE9iamVjdC5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlLmg+
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTI3OSw3ICsyODAsNyBAQCBQYXNzUmVmUHRyPElu
c3BlY3Rvck9iamVjdD4gSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6cmVzb2x2ZUJyZWFrcG9pbnQo
Y29uc3QgU3RyaQogCiB2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmVkaXRTY3JpcHRTb3Vy
Y2UoRXJyb3JTdHJpbmcqIGVycm9yLCBjb25zdCBTdHJpbmcmIHNvdXJjZUlELCBjb25zdCBTdHJp
bmcmIG5ld0NvbnRlbnQsIFJlZlB0cjxJbnNwZWN0b3JBcnJheT4qIG5ld0NhbGxGcmFtZXMpCiB7
Ci0gICAgaWYgKHNjcmlwdERlYnVnU2VydmVyKCkuZWRpdFNjcmlwdFNvdXJjZShzb3VyY2VJRCwg
bmV3Q29udGVudCwgZXJyb3IpKQorICAgIGlmIChzY3JpcHREZWJ1Z1NlcnZlcigpLmVkaXRTY3Jp
cHRTb3VyY2Uoc291cmNlSUQsIG5ld0NvbnRlbnQsIGVycm9yLCAmbV9jdXJyZW50Q2FsbFN0YWNr
KSkKICAgICAgICAgKm5ld0NhbGxGcmFtZXMgPSBjdXJyZW50Q2FsbEZyYW1lcygpOwogfQogCkBA
IC0zNTUsNyArMzU2LDcgQEAgdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpldmFsdWF0ZU9u
Q2FsbEZyYW1lKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29uc3QKIHsKICAgICBJbmplY3Rl
ZFNjcmlwdCBpbmplY3RlZFNjcmlwdCA9IG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLT5pbmplY3Rl
ZFNjcmlwdEZvck9iamVjdElkKGNhbGxGcmFtZUlkKTsKICAgICBpZiAoIWluamVjdGVkU2NyaXB0
Lmhhc05vVmFsdWUoKSkKLSAgICAgICAgaW5qZWN0ZWRTY3JpcHQuZXZhbHVhdGVPbkNhbGxGcmFt
ZShlcnJvclN0cmluZywgY2FsbEZyYW1lSWQsIGV4cHJlc3Npb24sIG9iamVjdEdyb3VwID8gKm9i
amVjdEdyb3VwIDogIiIsIGluY2x1ZGVDb21tYW5kTGluZUFQSSA/ICppbmNsdWRlQ29tbWFuZExp
bmVBUEkgOiBmYWxzZSwgcmVzdWx0KTsKKyAgICAgICAgaW5qZWN0ZWRTY3JpcHQuZXZhbHVhdGVP
bkNhbGxGcmFtZShlcnJvclN0cmluZywgbV9jdXJyZW50Q2FsbFN0YWNrLCBjYWxsRnJhbWVJZCwg
ZXhwcmVzc2lvbiwgb2JqZWN0R3JvdXAgPyAqb2JqZWN0R3JvdXAgOiAiIiwgaW5jbHVkZUNvbW1h
bmRMaW5lQVBJID8gKmluY2x1ZGVDb21tYW5kTGluZUFQSSA6IGZhbHNlLCByZXN1bHQpOwogfQog
CiBQYXNzUmVmUHRyPEluc3BlY3RvckFycmF5PiBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpjdXJy
ZW50Q2FsbEZyYW1lcygpCkBAIC0zNjcsNyArMzY4LDcgQEAgUGFzc1JlZlB0cjxJbnNwZWN0b3JB
cnJheT4gSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6Y3VycmVudENhbGxGcmFtZXMoKQogICAgICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJuIEluc3BlY3RvckFycmF5Ojpj
cmVhdGUoKTsKICAgICB9Ci0gICAgcmV0dXJuIGluamVjdGVkU2NyaXB0LmNhbGxGcmFtZXMoKTsK
KyAgICByZXR1cm4gaW5qZWN0ZWRTY3JpcHQud3JhcENhbGxGcmFtZXMobV9jdXJyZW50Q2FsbFN0
YWNrKTsKIH0KIAogLy8gSmF2YVNjcmlwdERlYnVnTGlzdGVuZXIgZnVuY3Rpb25zCkBAIC00MDQs
MTUgKzQwNSwyMiBAQCB2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmZhaWxlZFRvUGFyc2VT
b3VyY2UoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZwogICAgIG1fZnJvbnRlbmQtPnNj
cmlwdEZhaWxlZFRvUGFyc2UodXJsLCBkYXRhLCBmaXJzdExpbmUsIGVycm9yTGluZSwgZXJyb3JN
ZXNzYWdlKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpkaWRQYXVzZShTY3Jp
cHRTdGF0ZSogc2NyaXB0U3RhdGUpCit2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmRpZFBh
dXNlKFNjcmlwdFN0YXRlKiBzY3JpcHRTdGF0ZSwgY29uc3QgU2NyaXB0VmFsdWUmIGNhbGxGcmFt
ZXMsIGNvbnN0IFNjcmlwdFZhbHVlJiBleGNlcHRpb24pCiB7CiAgICAgQVNTRVJUKHNjcmlwdFN0
YXRlICYmICFtX3BhdXNlZFNjcmlwdFN0YXRlKTsKICAgICBtX3BhdXNlZFNjcmlwdFN0YXRlID0g
c2NyaXB0U3RhdGU7CisgICAgbV9jdXJyZW50Q2FsbFN0YWNrID0gY2FsbEZyYW1lczsKIAogICAg
IGlmICghbV9icmVha1Byb2dyYW1EZXRhaWxzKQogICAgICAgICBtX2JyZWFrUHJvZ3JhbURldGFp
bHMgPSBJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpOwogICAgIG1fYnJlYWtQcm9ncmFtRGV0YWls
cy0+c2V0VmFsdWUoImNhbGxGcmFtZXMiLCBjdXJyZW50Q2FsbEZyYW1lcygpKTsKIAorICAgIGlm
ICghZXhjZXB0aW9uLmhhc05vVmFsdWUoKSkgeworICAgICAgICBJbmplY3RlZFNjcmlwdCBpbmpl
Y3RlZFNjcmlwdCA9IG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLT5pbmplY3RlZFNjcmlwdEZvcihz
Y3JpcHRTdGF0ZSk7CisgICAgICAgIGlmICghaW5qZWN0ZWRTY3JpcHQuaGFzTm9WYWx1ZSgpKQor
ICAgICAgICAgICAgbV9icmVha1Byb2dyYW1EZXRhaWxzLT5zZXRWYWx1ZSgiZXhjZXB0aW9uIiwg
aW5qZWN0ZWRTY3JpcHQud3JhcE9iamVjdChleGNlcHRpb24sICJiYWNrdHJhY2UiKSk7CisgICAg
fQorCiAgICAgbV9mcm9udGVuZC0+cGF1c2VkKG1fYnJlYWtQcm9ncmFtRGV0YWlscyk7CiAgICAg
bV9qYXZhU2NyaXB0UGF1c2VTY2hlZHVsZWQgPSBmYWxzZTsKIApAQCAtNDI1LDYgKzQzMyw3IEBA
IHZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6ZGlkUGF1c2UoU2NyaXB0U3RhdGUqIHNjcmlw
dFN0YXRlKQogdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpkaWRDb250aW51ZSgpCiB7CiAg
ICAgbV9wYXVzZWRTY3JpcHRTdGF0ZSA9IDA7CisgICAgbV9jdXJyZW50Q2FsbFN0YWNrID0gU2Ny
aXB0VmFsdWUoKTsKICAgICBtX2JyZWFrUHJvZ3JhbURldGFpbHMgPSAwOwogICAgIG1fZnJvbnRl
bmQtPnJlc3VtZWQoKTsKIH0KQEAgLTQ0MCw2ICs0NDksNyBAQCB2b2lkIEluc3BlY3RvckRlYnVn
Z2VyQWdlbnQ6OmJyZWFrUHJvZ3JhbShEZWJ1Z2dlckV2ZW50VHlwZSB0eXBlLCBQYXNzUmVmUHRy
PElucwogdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpjbGVhcigpCiB7CiAgICAgbV9wYXVz
ZWRTY3JpcHRTdGF0ZSA9IDA7CisgICAgbV9jdXJyZW50Q2FsbFN0YWNrID0gU2NyaXB0VmFsdWUo
KTsKICAgICBtX3NjcmlwdHMuY2xlYXIoKTsKICAgICBtX2JyZWFrcG9pbnRJZFRvRGVidWdTZXJ2
ZXJCcmVha3BvaW50SWRzLmNsZWFyKCk7CiAgICAgbV9jb250aW51ZVRvTG9jYXRpb25CcmVha3Bv
aW50SWQgPSBTdHJpbmcoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JEZWJ1Z2dlckFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yRGVidWdnZXJBZ2VudC5oCmluZGV4IDRjMmU4NTVmYmQ3YTU5MzQ5ZmZiMTA5ZTg1ZGFkNzM0
YmYyN2ZkZDkuLmIzNzlkZGE5ZGM0ODVlY2UzMGM4YmIzYmQ2Zjg4ODIyNjdiMDQyNDYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuaApA
QCAtNTMsNiArNTMsNyBAQCBjbGFzcyBJbnNwZWN0b3JTdGF0ZTsKIGNsYXNzIEluc3BlY3RvclZh
bHVlOwogY2xhc3MgSW5zdHJ1bWVudGluZ0FnZW50czsKIGNsYXNzIFNjcmlwdERlYnVnU2VydmVy
OworY2xhc3MgU2NyaXB0VmFsdWU7CiAKIHR5cGVkZWYgU3RyaW5nIEVycm9yU3RyaW5nOwogCkBA
IC0xMjEsNyArMTIyLDcgQEAgcHJpdmF0ZToKIAogICAgIHZpcnR1YWwgdm9pZCBkaWRQYXJzZVNv
dXJjZShjb25zdCBTdHJpbmcmIHNvdXJjZUlELCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3Ry
aW5nJiBkYXRhLCBpbnQgbGluZU9mZnNldCwgaW50IGNvbHVtbk9mZnNldCwgYm9vbCBpc0NvbnRl
bnRTY3JpcHQpOwogICAgIHZpcnR1YWwgdm9pZCBmYWlsZWRUb1BhcnNlU291cmNlKGNvbnN0IFN0
cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIGRhdGEsIGludCBmaXJzdExpbmUsIGludCBlcnJvckxp
bmUsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUGF1
c2UoU2NyaXB0U3RhdGUqKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUGF1c2UoU2NyaXB0U3RhdGUq
LCBjb25zdCBTY3JpcHRWYWx1ZSYgY2FsbEZyYW1lcywgY29uc3QgU2NyaXB0VmFsdWUmIGV4Y2Vw
dGlvbik7CiAgICAgdmlydHVhbCB2b2lkIGRpZENvbnRpbnVlKCk7CiAKICAgICBQYXNzUmVmUHRy
PEluc3BlY3Rvck9iamVjdD4gcmVzb2x2ZUJyZWFrcG9pbnQoY29uc3QgU3RyaW5nJiBicmVha3Bv
aW50SWQsIGNvbnN0IFN0cmluZyYgc291cmNlSWQsIGNvbnN0IFNjcmlwdEJyZWFrcG9pbnQmKTsK
QEAgLTE2MCw2ICsxNjEsNyBAQCBwcml2YXRlOgogICAgIEluamVjdGVkU2NyaXB0TWFuYWdlciog
bV9pbmplY3RlZFNjcmlwdE1hbmFnZXI7CiAgICAgSW5zcGVjdG9yRnJvbnRlbmQ6OkRlYnVnZ2Vy
KiBtX2Zyb250ZW5kOwogICAgIFNjcmlwdFN0YXRlKiBtX3BhdXNlZFNjcmlwdFN0YXRlOworICAg
IFNjcmlwdFZhbHVlIG1fY3VycmVudENhbGxTdGFjazsKICAgICBTY3JpcHRzTWFwIG1fc2NyaXB0
czsKICAgICBCcmVha3BvaW50SWRUb0RlYnVnU2VydmVyQnJlYWtwb2ludElkc01hcCBtX2JyZWFr
cG9pbnRJZFRvRGVidWdTZXJ2ZXJCcmVha3BvaW50SWRzOwogICAgIFN0cmluZyBtX2NvbnRpbnVl
VG9Mb2NhdGlvbkJyZWFrcG9pbnRJZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9TY3JpcHREZWJ1Z0xpc3RlbmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvU2Ny
aXB0RGVidWdMaXN0ZW5lci5oCmluZGV4IDRhOTNhNGNhNjliNjU3YWZmOTMzNzg4MjUwZDI3NmIy
Mjk0OTBjYjEuLjkzZmQwZmNlNzRhY2FkNjU2MDIwNTkwZTAwN2ZlNTcyYjNmY2RiYjIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9TY3JpcHREZWJ1Z0xpc3RlbmVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1NjcmlwdERlYnVnTGlzdGVuZXIuaApAQCAtMzYs
NiArMzYsNyBAQAogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKK2NsYXNzIFNjcmlwdFZhbHVlOwogCiBjbGFzcyBTY3JpcHREZWJ1Z0xpc3RlbmVyIHsKIHB1
YmxpYzoKQEAgLTQzLDcgKzQ0LDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIGRpZFBh
cnNlU291cmNlKGNvbnN0IFN0cmluZyYgIHNvdXJjZUlELCBjb25zdCBTdHJpbmcmIHVybCwgY29u
c3QgU3RyaW5nJiBkYXRhLCBpbnQgbGluZU9mZnNldCwgaW50IGNvbHVtbk9mZnNldCwgYm9vbCBp
c0NvbnRlbnRTY3JpcHQpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZmFpbGVkVG9QYXJzZVNvdXJj
ZShjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiBkYXRhLCBpbnQgZmlyc3RMaW5lLCBp
bnQgZXJyb3JMaW5lLCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSkgPSAwOwotICAgIHZpcnR1
YWwgdm9pZCBkaWRQYXVzZShTY3JpcHRTdGF0ZSopID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlk
UGF1c2UoU2NyaXB0U3RhdGUqLCBjb25zdCBTY3JpcHRWYWx1ZSYgY2FsbEZyYW1lcywgY29uc3Qg
U2NyaXB0VmFsdWUmIGV4Y2VwdGlvbikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRDb250aW51
ZSgpID0gMDsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3Jr
ZXJJbnNwZWN0b3JDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3Jr
ZXJJbnNwZWN0b3JDb250cm9sbGVyLmNwcAppbmRleCBhM2U3N2I3ODc1NDI5Y2M0OTkyMWQ2NDEy
MDg3MDZmZWJlZDc2NjcwLi5kYmNiODc2ZDdjNTYwYjY4Y2E3OGFmYmY2NWNiYzlkYTZkOWJmZWZk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VySW5zcGVjdG9yQ29u
dHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlckluc3BlY3Rv
ckNvbnRyb2xsZXIuY3BwCkBAIC04Niw5ICs4Niw2IEBAIFdvcmtlckluc3BlY3RvckNvbnRyb2xs
ZXI6Oldvcmtlckluc3BlY3RvckNvbnRyb2xsZXIoV29ya2VyQ29udGV4dCogd29ya2VyQ29udGV4
CiAjaWYgRU5BQkxFKERPTV9TVE9SQUdFKQogICAgICAgICAsIDAKICNlbmRpZgotI2lmIEVOQUJM
RShKQVZBU0NSSVBUX0RFQlVHR0VSKQotICAgICAgICAsIG1fZGVidWdnZXJBZ2VudC5nZXQoKQot
I2VuZGlmCiAgICAgKTsKIH0KICAK
</data>
<flag name="review"
          id="84055"
          type_id="1"
          status="+"
          setter="pfeldman"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>91255</attachid>
            <date>2011-04-27 01:42:46 -0700</date>
            <delta_ts>2011-04-27 01:42:46 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>exception-object</filename>
            <type>text/plain</type>
            <size>32629</size>
            <attacher name="Yury Semikhatsky">yurys</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBiODQyZWMyLi5lMTcyYzRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTMg
QEAKKzIwMTEtMDQtMjYgIFl1cnkgU2VtaWtoYXRza3kgIDx5dXJ5c0BjaHJvbWl1bS5vcmc+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2ViIEluc3Bl
Y3RvcjogW3Byb3RvY29sXSBQYXVzZWQgZXZlbnQgc2hvdWxkIGV4cG9zZSBleGNlcHRpb24gdmFs
dWUgdGhhdCBjYXVzZWQgaXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTU4OTk2CisKKyAgICAgICAgRGVidWcucGF1c2UgZXZlbnQgbm93IGNvbnRhaW5z
IGFuIG9wdGlvbmFsIHJlZmVyZW5jZSB0byB0aGUgZXhjZXB0aW9uCisgICAgICAgIG9iamVjdCBp
biBjYXNlIHNjcmlwdCBleGVjdXRpb24gaXMgcGF1c2VkIG9uIGEgSmF2YVNjcmlwdCBleGNlcHRp
b24uCisKKyAgICAgICAgQWxzbyBKYXZhU2NyaXB0IGNhbGwgZnJhbWVzIGFyZSBwYXNzZWQgZGly
ZWN0bHkgaW50byB0aGUgaW5qZWN0ZWQgc2NyaXB0IHdoZW4KKyAgICAgICAgd2UgbmVlZCB0byB3
cmFwIHRoZW0gZm9yIHBhc3NpbmcgdG8gdGhlIGZyb250LWVuZC4gVGhpcyBjaGFuZ2UgYnJlYWtz
IGN5Y2xpYworICAgICAgICBkZXBlbmRlbmN5IFNjcmlwdERlYnVnU2VydmVyLT5JbnNwZWN0b3JE
ZWJ1Z2dlckFnZW50LT5JbmplY3RlZFNjcmlwdC0+SW5qZWN0ZWRTY3JpcHRIb3N0LT5TY3JpcHRE
ZWJ1Z1NlcnZlcgorCisgICAgICAgICogYmluZGluZ3MvanMvSlNJbmplY3RlZFNjcmlwdEhvc3RD
dXN0b20uY3BwOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdERlYnVnU2VydmVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdERlYnVnU2VydmVyOjpkaXNwYXRjaERpZFBhdXNlKToK
KyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHREZWJ1Z1NlcnZlci5oOgorICAgICAgICAqIGJp
bmRpbmdzL3Y4L1NjcmlwdERlYnVnU2VydmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlw
dERlYnVnU2VydmVyOjpicmVha1Byb2dyYW0pOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RGVi
dWdTZXJ2ZXI6OmVkaXRTY3JpcHRTb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RGVi
dWdTZXJ2ZXI6OmJyZWFrUHJvZ3JhbUNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlw
dERlYnVnU2VydmVyOjpoYW5kbGVWOERlYnVnRXZlbnQpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4
L1NjcmlwdERlYnVnU2VydmVyLmg6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4SW5q
ZWN0ZWRTY3JpcHRIb3N0Q3VzdG9tLmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5qZWN0ZWRT
Y3JpcHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5qZWN0ZWRTY3JpcHQ6OmV2YWx1YXRlT25D
YWxsRnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6SW5qZWN0ZWRTY3JpcHQ6OndyYXBDYWxsRnJh
bWVzKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHQuaDoKKyAgICAgICAgKiBp
bnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRIb3N0LmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5q
ZWN0ZWRTY3JpcHRIb3N0Lmg6CisgICAgICAgIChXZWJDb3JlOjpJbmplY3RlZFNjcmlwdEhvc3Q6
OmluaXQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbmplY3RlZFNjcmlwdEhvc3QuaWRsOgorICAg
ICAgICAqIGluc3BlY3Rvci9JbmplY3RlZFNjcmlwdFNvdXJjZS5qczoKKyAgICAgICAgKC4pOgor
ICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3IuanNvbjoKKyAgICAgICAgKiBpbnNwZWN0b3Iv
SW5zcGVjdG9yQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQWdlbnQ6Oklu
c3BlY3RvckFnZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2Vu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpldmFsdWF0
ZU9uQ2FsbEZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6
OmN1cnJlbnRDYWxsRnJhbWVzKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRlYnVnZ2Vy
QWdlbnQ6OndyYXBDYWxsRnJhbWVzKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRlYnVn
Z2VyQWdlbnQ6OmRpZFBhdXNlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRlYnVnZ2Vy
QWdlbnQ6OmRpZENvbnRpbnVlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRlYnVnZ2Vy
QWdlbnQ6OmNsZWFyKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2Vu
dC5oOgorICAgICAgICAqIGluc3BlY3Rvci9TY3JpcHREZWJ1Z0xpc3RlbmVyLmg6CisgICAgICAg
ICogaW5zcGVjdG9yL1dvcmtlckluc3BlY3RvckNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6V29ya2VySW5zcGVjdG9yQ29udHJvbGxlcjo6V29ya2VySW5zcGVjdG9yQ29udHJvbGxl
cik6CisKIDIwMTEtMDQtMjcgIE1paGFpIFBhcnBhcml0YSAgPG1paGFpcEBjaHJvbWl1bS5vcmc+
CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBTZWlkZWwuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0luamVjdGVkU2NyaXB0SG9zdEN1c3RvbS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0luamVjdGVkU2NyaXB0SG9zdEN1c3RvbS5jcHAKaW5k
ZXggN2JjOWI5OC4uYTU4OWU0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNJbmplY3RlZFNjcmlwdEhvc3RDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTSW5qZWN0ZWRTY3JpcHRIb3N0Q3VzdG9tLmNwcApAQCAtNTEsMTIgKzUxLDYg
QEAKICNlbmRpZgogI2luY2x1ZGUgPHJ1bnRpbWUvSlNMb2NrLmg+CiAKLSNpZiBFTkFCTEUoSkFW
QVNDUklQVF9ERUJVR0dFUikKLSNpbmNsdWRlICJKYXZhU2NyaXB0Q2FsbEZyYW1lLmgiCi0jaW5j
bHVkZSAiSlNKYXZhU2NyaXB0Q2FsbEZyYW1lLmgiCi0jaW5jbHVkZSAiU2NyaXB0RGVidWdTZXJ2
ZXIuaCIKLSNlbmRpZgotCiB1c2luZyBuYW1lc3BhY2UgSlNDOwogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CkBAIC03NCwyMSArNjgsNiBAQCBTY3JpcHRWYWx1ZSBJbmplY3RlZFNjcmlwdEhvc3Q6Om5v
ZGVBc1NjcmlwdFZhbHVlKFNjcmlwdFN0YXRlKiBzdGF0ZSwgTm9kZSogbm9kZQogICAgIHJldHVy
biBTY3JpcHRWYWx1ZShzdGF0ZS0+Z2xvYmFsRGF0YSgpLCB0b0pTKHN0YXRlLCBkZXByZWNhdGVk
R2xvYmFsT2JqZWN0Rm9yUHJvdG90eXBlKHN0YXRlKSwgbm9kZSkpOwogfQogCi1KU1ZhbHVlIEpT
SW5qZWN0ZWRTY3JpcHRIb3N0OjpjdXJyZW50Q2FsbEZyYW1lKEV4ZWNTdGF0ZSogZXhlYykKLXsK
LSNpZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikKLSAgICBKYXZhU2NyaXB0Q2FsbEZyYW1l
KiBjYWxsRnJhbWUgPSBpbXBsKCktPmRlYnVnZ2VyQWdlbnQoKS0+c2NyaXB0RGVidWdTZXJ2ZXIo
KS5jdXJyZW50Q2FsbEZyYW1lKCk7Ci0gICAgaWYgKCFjYWxsRnJhbWUgfHwgIWNhbGxGcmFtZS0+
aXNWYWxpZCgpKQotICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKLQotICAgIEpTTG9jayBs
b2NrKFNpbGVuY2VBc3NlcnRpb25zT25seSk7Ci0gICAgcmV0dXJuIHRvSlMoZXhlYywgZ2xvYmFs
T2JqZWN0KCksIGNhbGxGcmFtZSk7Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTShleGVjKTsKLSAg
ICByZXR1cm4ganNVbmRlZmluZWQoKTsKLSNlbmRpZgotfQotCiBKU1ZhbHVlIEpTSW5qZWN0ZWRT
Y3JpcHRIb3N0OjppbnNwZWN0ZWROb2RlKEV4ZWNTdGF0ZSogZXhlYykKIHsKICAgICBpZiAoZXhl
Yy0+YXJndW1lbnRDb3VudCgpIDwgMSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL1NjcmlwdERlYnVnU2VydmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L1NjcmlwdERlYnVnU2VydmVyLmNwcAppbmRleCBlN2VlNjhiLi4zN2VkYzZkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHREZWJ1Z1NlcnZlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0RGVidWdTZXJ2ZXIuY3BwCkBAIC0zNCw2
ICszNCw3IEBACiAKICNpbmNsdWRlICJFdmVudExvb3AuaCIKICNpbmNsdWRlICJGcmFtZS5oIgor
I2luY2x1ZGUgIkpTSmF2YVNjcmlwdENhbGxGcmFtZS5oIgogI2luY2x1ZGUgIkphdmFTY3JpcHRD
YWxsRnJhbWUuaCIKICNpbmNsdWRlICJTY3JpcHRCcmVha3BvaW50LmgiCiAjaW5jbHVkZSAiU2Ny
aXB0RGVidWdMaXN0ZW5lci5oIgpAQCAtMTg4LDI0ICsxODksMjcgQEAgdm9pZCBTY3JpcHREZWJ1
Z1NlcnZlcjo6c3RlcE91dE9mRnVuY3Rpb24oKQogICAgIG1fZG9uZVByb2Nlc3NpbmdEZWJ1Z2dl
ckV2ZW50cyA9IHRydWU7CiB9CiAKLWJvb2wgU2NyaXB0RGVidWdTZXJ2ZXI6OmVkaXRTY3JpcHRT
b3VyY2UoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgU3RyaW5nKikKK2Jvb2wgU2NyaXB0
RGVidWdTZXJ2ZXI6OmVkaXRTY3JpcHRTb3VyY2UoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5n
JiwgU3RyaW5nKiwgU2NyaXB0VmFsdWUqKQogewogICAgIC8vIEZJWE1FKDQwMzAwKTogaW1wbGVt
ZW50IHRoaXMuCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1KYXZhU2NyaXB0Q2FsbEZyYW1lKiBT
Y3JpcHREZWJ1Z1NlcnZlcjo6Y3VycmVudENhbGxGcmFtZSgpCi17Ci0gICAgaWYgKCFtX3BhdXNl
ZCkKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgcmV0dXJuIG1fY3VycmVudENhbGxGcmFtZS5nZXQo
KTsKLX0KLQogdm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6ZGlzcGF0Y2hEaWRQYXVzZShTY3JpcHRE
ZWJ1Z0xpc3RlbmVyKiBsaXN0ZW5lcikKIHsKICAgICBBU1NFUlQobV9wYXVzZWQpOwotICAgIFNj
cmlwdFN0YXRlKiBzdGF0ZSA9IG1fY3VycmVudENhbGxGcmFtZS0+c2NvcGVDaGFpbigpLT5nbG9i
YWxPYmplY3QtPmdsb2JhbEV4ZWMoKTsKLSAgICBsaXN0ZW5lci0+ZGlkUGF1c2Uoc3RhdGUpOwor
ICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2N1cnJlbnRDYWxsRnJhbWUtPnNj
b3BlQ2hhaW4oKS0+Z2xvYmFsT2JqZWN0LmdldCgpOworICAgIFNjcmlwdFN0YXRlKiBzdGF0ZSA9
IGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpOworICAgIEpTVmFsdWUganNDYWxsRnJhbWU7Cisg
ICAgeworICAgICAgICBpZiAobV9jdXJyZW50Q2FsbEZyYW1lLT5pc1ZhbGlkKCkgJiYgZ2xvYmFs
T2JqZWN0LT5pbmhlcml0cygmSlNET01HbG9iYWxPYmplY3Q6OnNfaW5mbykpIHsKKyAgICAgICAg
ICAgIEpTRE9NR2xvYmFsT2JqZWN0KiBkb21HbG9iYWxPYmplY3QgPSBzdGF0aWNfY2FzdDxKU0RP
TUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCk7CisgICAgICAgICAgICBKU0xvY2sgbG9jayhT
aWxlbmNlQXNzZXJ0aW9uc09ubHkpOworICAgICAgICAgICAganNDYWxsRnJhbWUgPSB0b0pTKHN0
YXRlLCBkb21HbG9iYWxPYmplY3QsIG1fY3VycmVudENhbGxGcmFtZS5nZXQoKSk7CisgICAgICAg
IH0gZWxzZQorICAgICAgICAgICAganNDYWxsRnJhbWUgPSBqc1VuZGVmaW5lZCgpOworICAgIH0K
KyAgICBsaXN0ZW5lci0+ZGlkUGF1c2Uoc3RhdGUsIFNjcmlwdFZhbHVlKHN0YXRlLT5nbG9iYWxE
YXRhKCksIGpzQ2FsbEZyYW1lKSwgU2NyaXB0VmFsdWUoKSk7CiB9CiAKIHZvaWQgU2NyaXB0RGVi
dWdTZXJ2ZXI6OmRpc3BhdGNoRGlkQ29udGludWUoU2NyaXB0RGVidWdMaXN0ZW5lciogbGlzdGVu
ZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHREZWJ1Z1Nl
cnZlci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0RGVidWdTZXJ2ZXIuaApp
bmRleCBmNmFjOWExLi5hYzAxNzQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9TY3JpcHREZWJ1Z1NlcnZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L1NjcmlwdERlYnVnU2VydmVyLmgKQEAgLTUwLDggKzUwLDkgQEAgY2xhc3MgSlNHbG9iYWxPYmpl
Y3Q7CiB9CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFNjcmlwdERlYnVnTGlzdGVuZXI7
CiBjbGFzcyBKYXZhU2NyaXB0Q2FsbEZyYW1lOworY2xhc3MgU2NyaXB0RGVidWdMaXN0ZW5lcjsK
K2NsYXNzIFNjcmlwdFZhbHVlOwogCiBjbGFzcyBTY3JpcHREZWJ1Z1NlcnZlciA6IHByb3RlY3Rl
ZCBKU0M6OkRlYnVnZ2VyIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShTY3JpcHREZWJ1Z1Nl
cnZlcik7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwpAQCAtNzgsMTMgKzc5LDExIEBAIHB1Ymxp
YzoKICAgICB2b2lkIHN0ZXBPdmVyU3RhdGVtZW50KCk7CiAgICAgdm9pZCBzdGVwT3V0T2ZGdW5j
dGlvbigpOwogCi0gICAgYm9vbCBlZGl0U2NyaXB0U291cmNlKGNvbnN0IFN0cmluZyYgc291cmNl
SUQsIGNvbnN0IFN0cmluZyYgbmV3Q29udGVudCwgU3RyaW5nKiBlcnJvcik7CisgICAgYm9vbCBl
ZGl0U2NyaXB0U291cmNlKGNvbnN0IFN0cmluZyYgc291cmNlSUQsIGNvbnN0IFN0cmluZyYgbmV3
Q29udGVudCwgU3RyaW5nKiBlcnJvciwgU2NyaXB0VmFsdWUqIG5ld0NhbGxGcmFtZXMpOwogCiAg
ICAgdm9pZCByZWNvbXBpbGVBbGxKU0Z1bmN0aW9uc1Nvb24oKTsKICAgICB2aXJ0dWFsIHZvaWQg
cmVjb21waWxlQWxsSlNGdW5jdGlvbnMoVGltZXI8U2NyaXB0RGVidWdTZXJ2ZXI+KiA9IDApID0g
MDsKIAotICAgIEphdmFTY3JpcHRDYWxsRnJhbWUqIGN1cnJlbnRDYWxsRnJhbWUoKTsKLQogcHJv
dGVjdGVkOgogICAgIHR5cGVkZWYgSGFzaFNldDxTY3JpcHREZWJ1Z0xpc3RlbmVyKj4gTGlzdGVu
ZXJTZXQ7CiAgICAgdHlwZWRlZiB2b2lkIChTY3JpcHREZWJ1Z1NlcnZlcjo6KkphdmFTY3JpcHRF
eGVjdXRpb25DYWxsYmFjaykoU2NyaXB0RGVidWdMaXN0ZW5lciopOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0RGVidWdTZXJ2ZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0RGVidWdTZXJ2ZXIuY3BwCmluZGV4IDk2MTE3M2MuLmVl
NWIwNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdERlYnVn
U2VydmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHREZWJ1Z1Nl
cnZlci5jcHAKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlICJKYXZhU2NyaXB0Q2FsbEZyYW1l
LmgiCiAjaW5jbHVkZSAiU2NyaXB0RGVidWdMaXN0ZW5lci5oIgogI2luY2x1ZGUgIlY4QmluZGlu
Zy5oIgorI2luY2x1ZGUgIlY4SmF2YVNjcmlwdENhbGxGcmFtZS5oIgogI2luY2x1ZGUgPHd0Zi9T
dGRMaWJFeHRyYXMuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMTcwLDE3ICsxNzEsMTYg
QEAgdm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6YnJlYWtQcm9ncmFtKCkKICAgICBpZiAoY29udGV4
dC5Jc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fcGF1c2VkUGFnZUNvbnRleHQg
PSAqY29udGV4dDsKKyAgICBtX3BhdXNlZENvbnRleHQgPSAqY29udGV4dDsKICAgICB2ODo6SGFu
ZGxlPHY4OjpGdW5jdGlvbj4gYnJlYWtQcm9ncmFtRnVuY3Rpb24gPSBtX2JyZWFrUHJvZ3JhbUNh
bGxiYWNrVGVtcGxhdGUuZ2V0KCktPkdldEZ1bmN0aW9uKCk7CiAgICAgdjg6OkRlYnVnOjpDYWxs
KGJyZWFrUHJvZ3JhbUZ1bmN0aW9uKTsKLSAgICBtX3BhdXNlZFBhZ2VDb250ZXh0LkNsZWFyKCk7
CisgICAgbV9wYXVzZWRDb250ZXh0LkNsZWFyKCk7CiB9CiAKIHZvaWQgU2NyaXB0RGVidWdTZXJ2
ZXI6OmNvbnRpbnVlUHJvZ3JhbSgpCiB7CiAgICAgaWYgKGlzUGF1c2VkKCkpCiAgICAgICAgIHF1
aXRNZXNzYWdlTG9vcE9uUGF1c2UoKTsKLSAgICBtX2N1cnJlbnRDYWxsRnJhbWUuY2xlYXIoKTsK
ICAgICBtX2V4ZWN1dGlvblN0YXRlLmNsZWFyKCk7CiB9CiAKQEAgLTIxMSw3ICsyMTEsNyBAQCB2
b2lkIFNjcmlwdERlYnVnU2VydmVyOjpzdGVwT3V0T2ZGdW5jdGlvbigpCiAgICAgY29udGludWVQ
cm9ncmFtKCk7CiB9CiAKLWJvb2wgU2NyaXB0RGVidWdTZXJ2ZXI6OmVkaXRTY3JpcHRTb3VyY2Uo
Y29uc3QgU3RyaW5nJiBzb3VyY2VJRCwgY29uc3QgU3RyaW5nJiBuZXdDb250ZW50LCBTdHJpbmcq
IGVycm9yKQorYm9vbCBTY3JpcHREZWJ1Z1NlcnZlcjo6ZWRpdFNjcmlwdFNvdXJjZShjb25zdCBT
dHJpbmcmIHNvdXJjZUlELCBjb25zdCBTdHJpbmcmIG5ld0NvbnRlbnQsIFN0cmluZyogZXJyb3Is
IFNjcmlwdFZhbHVlKiBuZXdDYWxsRnJhbWVzKQogewogICAgIGVuc3VyZURlYnVnZ2VyU2NyaXB0
Q29tcGlsZWQoKTsKICAgICB2ODo6SGFuZGxlU2NvcGUgc2NvcGU7CkBAIC0yMzcsMjAgKzIzNywy
MCBAQCBib29sIFNjcmlwdERlYnVnU2VydmVyOjplZGl0U2NyaXB0U291cmNlKGNvbnN0IFN0cmlu
ZyYgc291cmNlSUQsIGNvbnN0IFN0cmluZyYgbgogICAgIEFTU0VSVCghcmVzdWx0LklzRW1wdHko
KSk7CiAKICAgICAvLyBDYWxsIHN0YWNrIG1heSBoYXZlIGNoYW5nZWQgYWZ0ZXIgaWYgdGhlIGVk
aXRlZCBmdW5jdGlvbiB3YXMgb24gdGhlIHN0YWNrLgotICAgIGlmIChtX2N1cnJlbnRDYWxsRnJh
bWUpCi0gICAgICAgIG1fY3VycmVudENhbGxGcmFtZS5jbGVhcigpOworICAgIGlmIChpc1BhdXNl
ZCgpKQorICAgICAgICAqbmV3Q2FsbEZyYW1lcyA9IGN1cnJlbnRDYWxsRnJhbWUoKTsKICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIAotUGFzc1JlZlB0cjxKYXZhU2NyaXB0Q2FsbEZyYW1lPiBTY3JpcHRE
ZWJ1Z1NlcnZlcjo6Y3VycmVudENhbGxGcmFtZSgpCitTY3JpcHRWYWx1ZSBTY3JpcHREZWJ1Z1Nl
cnZlcjo6Y3VycmVudENhbGxGcmFtZSgpCiB7Ci0gICAgaWYgKCFtX2N1cnJlbnRDYWxsRnJhbWUp
IHsKLSAgICAgICAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb24+IGN1cnJlbnRDYWxsRnJhbWVGdW5j
dGlvbiA9IHY4OjpMb2NhbDx2ODo6RnVuY3Rpb24+OjpDYXN0KG1fZGVidWdnZXJTY3JpcHQuZ2V0
KCktPkdldCh2ODo6U3RyaW5nOjpOZXcoImN1cnJlbnRDYWxsRnJhbWUiKSkpOwotICAgICAgICB2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gYXJndltdID0geyBtX2V4ZWN1dGlvblN0YXRlLmdldCgpIH07
Ci0gICAgICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBjdXJyZW50Q2FsbEZyYW1lVjggPSBjdXJy
ZW50Q2FsbEZyYW1lRnVuY3Rpb24tPkNhbGwobV9kZWJ1Z2dlclNjcmlwdC5nZXQoKSwgMSwgYXJn
dik7Ci0gICAgICAgIG1fY3VycmVudENhbGxGcmFtZSA9IEphdmFTY3JpcHRDYWxsRnJhbWU6OmNy
ZWF0ZSh2ODo6RGVidWc6OkdldERlYnVnQ29udGV4dCgpLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+
OjpDYXN0KGN1cnJlbnRDYWxsRnJhbWVWOCkpOwotICAgIH0KLSAgICByZXR1cm4gbV9jdXJyZW50
Q2FsbEZyYW1lOworICAgIEFTU0VSVChpc1BhdXNlZCgpKTsKKyAgICB2ODo6SGFuZGxlPHY4OjpG
dW5jdGlvbj4gY3VycmVudENhbGxGcmFtZUZ1bmN0aW9uID0gdjg6OkxvY2FsPHY4OjpGdW5jdGlv
bj46OkNhc3QobV9kZWJ1Z2dlclNjcmlwdC5nZXQoKS0+R2V0KHY4OjpTdHJpbmc6Ok5ldygiY3Vy
cmVudENhbGxGcmFtZSIpKSk7CisgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGFyZ3ZbXSA9IHsg
bV9leGVjdXRpb25TdGF0ZS5nZXQoKSB9OworICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBjdXJy
ZW50Q2FsbEZyYW1lVjggPSBjdXJyZW50Q2FsbEZyYW1lRnVuY3Rpb24tPkNhbGwobV9kZWJ1Z2dl
clNjcmlwdC5nZXQoKSwgMSwgYXJndik7CisgICAgUmVmUHRyPEphdmFTY3JpcHRDYWxsRnJhbWU+
IGN1cnJlbnRDYWxsRnJhbWUgPSBKYXZhU2NyaXB0Q2FsbEZyYW1lOjpjcmVhdGUodjg6OkRlYnVn
OjpHZXREZWJ1Z0NvbnRleHQoKSwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdChjdXJyZW50
Q2FsbEZyYW1lVjgpKTsKKyAgICB2ODo6Q29udGV4dDo6U2NvcGUgY29udGV4dFNjb3BlKG1fcGF1
c2VkQ29udGV4dCk7CisgICAgcmV0dXJuIFNjcmlwdFZhbHVlKHRvVjgoY3VycmVudENhbGxGcmFt
ZS5yZWxlYXNlKCkpKTsKIH0KIAogdm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6aW50ZXJydXB0QW5k
UnVuKFBhc3NPd25QdHI8VGFzaz4gdGFzaykKQEAgLTI3NCwyNSArMjc0LDI2IEBAIHY4OjpIYW5k
bGU8djg6OlZhbHVlPiBTY3JpcHREZWJ1Z1NlcnZlcjo6YnJlYWtQcm9ncmFtQ2FsbGJhY2soY29u
c3Qgdjg6OkFyZ3VtZW50CiAgICAgQVNTRVJUKDIgPT0gYXJncy5MZW5ndGgoKSk7CiAgICAgCiAg
ICAgU2NyaXB0RGVidWdTZXJ2ZXIqIHRoaXNQdHIgPSB0b1NjcmlwdERlYnVnU2VydmVyKGFyZ3Mu
RGF0YSgpKTsKLSAgICB0aGlzUHRyLT5icmVha1Byb2dyYW0odjg6OkhhbmRsZTx2ODo6T2JqZWN0
Pjo6Q2FzdChhcmdzWzBdKSk7CisgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGV4Y2VwdGlvbjsK
KyAgICB0aGlzUHRyLT5icmVha1Byb2dyYW0odjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdChh
cmdzWzBdKSwgZXhjZXB0aW9uKTsKICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOwogfQogCi12
b2lkIFNjcmlwdERlYnVnU2VydmVyOjpicmVha1Byb2dyYW0odjg6OkhhbmRsZTx2ODo6T2JqZWN0
PiBleGVjdXRpb25TdGF0ZSkKK3ZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6OmJyZWFrUHJvZ3JhbSh2
ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGV4ZWN1dGlvblN0YXRlLCB2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gZXhjZXB0aW9uKQogewogICAgIC8vIERvbid0IGFsbG93IG5lc3RlZCBicmVha3MuCiAgICAg
aWYgKGlzUGF1c2VkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIFNjcmlwdERlYnVnTGlzdGVu
ZXIqIGxpc3RlbmVyID0gZ2V0RGVidWdMaXN0ZW5lckZvckNvbnRleHQobV9wYXVzZWRQYWdlQ29u
dGV4dCk7CisgICAgU2NyaXB0RGVidWdMaXN0ZW5lciogbGlzdGVuZXIgPSBnZXREZWJ1Z0xpc3Rl
bmVyRm9yQ29udGV4dChtX3BhdXNlZENvbnRleHQpOwogICAgIGlmICghbGlzdGVuZXIpCiAgICAg
ICAgIHJldHVybjsKIAogICAgIG1fZXhlY3V0aW9uU3RhdGUuc2V0KGV4ZWN1dGlvblN0YXRlKTsK
LSAgICBTY3JpcHRTdGF0ZSogY3VycmVudENhbGxGcmFtZVN0YXRlID0gU2NyaXB0U3RhdGU6OmZv
ckNvbnRleHQobV9wYXVzZWRQYWdlQ29udGV4dCk7Ci0gICAgbGlzdGVuZXItPmRpZFBhdXNlKGN1
cnJlbnRDYWxsRnJhbWVTdGF0ZSk7CisgICAgU2NyaXB0U3RhdGUqIGN1cnJlbnRDYWxsRnJhbWVT
dGF0ZSA9IFNjcmlwdFN0YXRlOjpmb3JDb250ZXh0KG1fcGF1c2VkQ29udGV4dCk7CisgICAgbGlz
dGVuZXItPmRpZFBhdXNlKGN1cnJlbnRDYWxsRnJhbWVTdGF0ZSwgY3VycmVudENhbGxGcmFtZSgp
LCBTY3JpcHRWYWx1ZShleGNlcHRpb24pKTsKIAotICAgIHJ1bk1lc3NhZ2VMb29wT25QYXVzZSht
X3BhdXNlZFBhZ2VDb250ZXh0KTsKKyAgICBydW5NZXNzYWdlTG9vcE9uUGF1c2UobV9wYXVzZWRD
b250ZXh0KTsKIH0KIAogdm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6djhEZWJ1Z0V2ZW50Q2FsbGJh
Y2soY29uc3Qgdjg6OkRlYnVnOjpFdmVudERldGFpbHMmIGV2ZW50RGV0YWlscykKQEAgLTMyOSwx
NiArMzMwLDIyIEBAIHZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6OmhhbmRsZVY4RGVidWdFdmVudChj
b25zdCB2ODo6RGVidWc6OkV2ZW50RGV0YWlscyYgZXZlbnRECiAgICAgICAgICAgICB2ODo6SGFu
ZGxlPHY4OjpPYmplY3Q+IG9iamVjdCA9IHY4OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3QodmFs
dWUpOwogICAgICAgICAgICAgZGlzcGF0Y2hEaWRQYXJzZVNvdXJjZShsaXN0ZW5lciwgb2JqZWN0
KTsKICAgICAgICAgfSBlbHNlIGlmIChldmVudCA9PSB2ODo6QnJlYWsgfHwgZXZlbnQgPT0gdjg6
OkV4Y2VwdGlvbikgeworICAgICAgICAgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGV4Y2VwdGlv
bjsKICAgICAgICAgICAgIGlmIChldmVudCA9PSB2ODo6RXhjZXB0aW9uKSB7CiAgICAgICAgICAg
ICAgICAgdjg6OkxvY2FsPHY4OjpTdGFja1RyYWNlPiBzdGFja1RyYWNlID0gdjg6OlN0YWNrVHJh
Y2U6OkN1cnJlbnRTdGFja1RyYWNlKDEpOwogICAgICAgICAgICAgICAgIC8vIFN0YWNrIHRyYWNl
IGlzIGVtcHR5IGluIGNhc2Ugb2Ygc3ludGF4IGVycm9yLiBTaWxlbnRseSBjb250aW51ZSBleGVj
dXRpb24gaW4gc3VjaCBjYXNlcy4KICAgICAgICAgICAgICAgICBpZiAoIXN0YWNrVHJhY2UtPkdl
dEZyYW1lQ291bnQoKSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAg
ICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gZXZlbnREYXRhID0gZXZlbnREZXRhaWxzLkdldEV2
ZW50RGF0YSgpOworICAgICAgICAgICAgICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBleGNlcHRp
b25HZXR0ZXJWYWx1ZSA9IGV2ZW50RGF0YS0+R2V0KHY4OjpTdHJpbmc6Ok5ldygiZXhjZXB0aW9u
IikpOworICAgICAgICAgICAgICAgIEFTU0VSVCghZXhjZXB0aW9uR2V0dGVyVmFsdWUuSXNFbXB0
eSgpICYmIGV4Y2VwdGlvbkdldHRlclZhbHVlLT5Jc0Z1bmN0aW9uKCkpOworICAgICAgICAgICAg
ICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBhcmd2W10gPSB7IHY4OjpIYW5kbGU8djg6OlZhbHVl
PigpIH07CisgICAgICAgICAgICAgICAgZXhjZXB0aW9uID0gdjg6OkhhbmRsZTx2ODo6RnVuY3Rp
b24+OjpDYXN0KGV4Y2VwdGlvbkdldHRlclZhbHVlKS0+Q2FsbChldmVudERhdGEsIDAsIGFyZ3Yp
OwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBtX3BhdXNlZFBhZ2VDb250ZXh0ID0gKmV2
ZW50Q29udGV4dDsKLSAgICAgICAgICAgIGJyZWFrUHJvZ3JhbShldmVudERldGFpbHMuR2V0RXhl
Y3V0aW9uU3RhdGUoKSk7Ci0gICAgICAgICAgICBtX3BhdXNlZFBhZ2VDb250ZXh0LkNsZWFyKCk7
CisgICAgICAgICAgICBtX3BhdXNlZENvbnRleHQgPSAqZXZlbnRDb250ZXh0OworICAgICAgICAg
ICAgYnJlYWtQcm9ncmFtKGV2ZW50RGV0YWlscy5HZXRFeGVjdXRpb25TdGF0ZSgpLCBleGNlcHRp
b24pOworICAgICAgICAgICAgbV9wYXVzZWRDb250ZXh0LkNsZWFyKCk7CiAgICAgICAgIH0KICAg
ICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHREZWJ1
Z1NlcnZlci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0RGVidWdTZXJ2ZXIu
aAppbmRleCA5M2Q4OTdjLi5iMjllYzA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9TY3JpcHREZWJ1Z1NlcnZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L1NjcmlwdERlYnVnU2VydmVyLmgKQEAgLTMzLDcgKzMzLDcgQEAKIAogI2lmIEVOQUJMRShK
QVZBU0NSSVBUX0RFQlVHR0VSKQogCi0jaW5jbHVkZSAiSmF2YVNjcmlwdENhbGxGcmFtZS5oIgor
I2luY2x1ZGUgIk93bkhhbmRsZS5oIgogI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCiAjaW5j
bHVkZSAiU2NyaXB0QnJlYWtwb2ludC5oIgogI2luY2x1ZGUgIlRpbWVyLmgiCkBAIC00Niw2ICs0
Niw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFNjcmlwdERlYnVnTGlzdGVuZXI7
CitjbGFzcyBTY3JpcHRWYWx1ZTsKIAogY2xhc3MgU2NyaXB0RGVidWdTZXJ2ZXIgewogICAgIFdU
Rl9NQUtFX05PTkNPUFlBQkxFKFNjcmlwdERlYnVnU2VydmVyKTsKQEAgLTcyLDEzICs3MywxMSBA
QCBwdWJsaWM6CiAgICAgdm9pZCBzdGVwT3ZlclN0YXRlbWVudCgpOwogICAgIHZvaWQgc3RlcE91
dE9mRnVuY3Rpb24oKTsKIAotICAgIGJvb2wgZWRpdFNjcmlwdFNvdXJjZShjb25zdCBTdHJpbmcm
IHNvdXJjZUlELCBjb25zdCBTdHJpbmcmIG5ld0NvbnRlbnQsIFN0cmluZyogZXJyb3IpOworICAg
IGJvb2wgZWRpdFNjcmlwdFNvdXJjZShjb25zdCBTdHJpbmcmIHNvdXJjZUlELCBjb25zdCBTdHJp
bmcmIG5ld0NvbnRlbnQsIFN0cmluZyogZXJyb3IsIFNjcmlwdFZhbHVlKiBuZXdDYWxsRnJhbWVz
KTsKIAogICAgIHZvaWQgcmVjb21waWxlQWxsSlNGdW5jdGlvbnNTb29uKCkgeyB9CiAgICAgdm9p
ZCByZWNvbXBpbGVBbGxKU0Z1bmN0aW9ucyhUaW1lcjxTY3JpcHREZWJ1Z1NlcnZlcj4qID0gMCkg
eyB9CiAKLSAgICBQYXNzUmVmUHRyPEphdmFTY3JpcHRDYWxsRnJhbWU+IGN1cnJlbnRDYWxsRnJh
bWUoKTsKLQogICAgIGNsYXNzIFRhc2sgewogICAgIHB1YmxpYzoKICAgICAgICAgdmlydHVhbCB+
VGFzaygpIHsgfQpAQCAtOTEsMTIgKzkwLDE0IEBAIHByb3RlY3RlZDoKICAgICBTY3JpcHREZWJ1
Z1NlcnZlcigpOwogICAgIH5TY3JpcHREZWJ1Z1NlcnZlcigpIHsgfQogICAgIAorICAgIFNjcmlw
dFZhbHVlIGN1cnJlbnRDYWxsRnJhbWUoKTsKKwogICAgIHZpcnR1YWwgU2NyaXB0RGVidWdMaXN0
ZW5lciogZ2V0RGVidWdMaXN0ZW5lckZvckNvbnRleHQodjg6OkhhbmRsZTx2ODo6Q29udGV4dD4p
ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgcnVuTWVzc2FnZUxvb3BPblBhdXNlKHY4OjpIYW5kbGU8
djg6OkNvbnRleHQ+KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHF1aXRNZXNzYWdlTG9vcE9uUGF1
c2UoKSA9IDA7CiAKICAgICBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGJyZWFrUHJvZ3Jh
bUNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpOwotICAgIHZvaWQgYnJlYWtQcm9n
cmFtKHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gZXhlY3V0aW9uU3RhdGUpOworICAgIHZvaWQgYnJl
YWtQcm9ncmFtKHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gZXhlY3V0aW9uU3RhdGUsIHY4OjpIYW5k
bGU8djg6OlZhbHVlPiBleGNlcHRpb24pOwogCiAgICAgc3RhdGljIHZvaWQgdjhEZWJ1Z0V2ZW50
Q2FsbGJhY2soY29uc3Qgdjg6OkRlYnVnOjpFdmVudERldGFpbHMmIGV2ZW50RGV0YWlscyk7CiAg
ICAgdm9pZCBoYW5kbGVWOERlYnVnRXZlbnQoY29uc3Qgdjg6OkRlYnVnOjpFdmVudERldGFpbHMm
IGV2ZW50RGV0YWlscyk7CkBAIC0xMDksOSArMTEwLDggQEAgcHJvdGVjdGVkOgogCiAgICAgUGF1
c2VPbkV4Y2VwdGlvbnNTdGF0ZSBtX3BhdXNlT25FeGNlcHRpb25zU3RhdGU7CiAgICAgT3duSGFu
ZGxlPHY4OjpPYmplY3Q+IG1fZGVidWdnZXJTY3JpcHQ7Ci0gICAgUmVmUHRyPEphdmFTY3JpcHRD
YWxsRnJhbWU+IG1fY3VycmVudENhbGxGcmFtZTsKICAgICBPd25IYW5kbGU8djg6Ok9iamVjdD4g
bV9leGVjdXRpb25TdGF0ZTsKLSAgICB2ODo6TG9jYWw8djg6OkNvbnRleHQ+IG1fcGF1c2VkUGFn
ZUNvbnRleHQ7CisgICAgdjg6OkxvY2FsPHY4OjpDb250ZXh0PiBtX3BhdXNlZENvbnRleHQ7CiAK
ICAgICBib29sIG1fYnJlYWtwb2ludHNBY3RpdmF0ZWQ7CiAgICAgT3duSGFuZGxlPHY4OjpGdW5j
dGlvblRlbXBsYXRlPiBtX2JyZWFrUHJvZ3JhbUNhbGxiYWNrVGVtcGxhdGU7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhJbmplY3RlZFNjcmlwdEhvc3RD
dXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SW5qZWN0ZWRT
Y3JpcHRIb3N0Q3VzdG9tLmNwcAppbmRleCAzZGJhY2IyLi5kNDlkNjFkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhJbmplY3RlZFNjcmlwdEhvc3RDdXN0
b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEluamVjdGVk
U2NyaXB0SG9zdEN1c3RvbS5jcHAKQEAgLTM0LDE1ICszNCwxMiBAQAogI2luY2x1ZGUgIkRhdGFi
YXNlLmgiCiAjaW5jbHVkZSAiSW5qZWN0ZWRTY3JpcHQuaCIKICNpbmNsdWRlICJJbmplY3RlZFNj
cmlwdEhvc3QuaCIKLSNpbmNsdWRlICJJbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmgiCiAjaW5jbHVk
ZSAiSW5zcGVjdG9yVmFsdWVzLmgiCi0jaW5jbHVkZSAiU2NyaXB0RGVidWdTZXJ2ZXIuaCIKICNp
bmNsdWRlICJTY3JpcHRWYWx1ZS5oIgogI2luY2x1ZGUgIlY4QmluZGluZy5oIgogI2luY2x1ZGUg
IlY4QmluZGluZ1N0YXRlLmgiCiAjaW5jbHVkZSAiVjhEYXRhYmFzZS5oIgogI2luY2x1ZGUgIlY4
SGlkZGVuUHJvcGVydHlOYW1lLmgiCi0jaW5jbHVkZSAiVjhKYXZhU2NyaXB0Q2FsbEZyYW1lLmgi
CiAjaW5jbHVkZSAiVjhOb2RlLmgiCiAjaW5jbHVkZSAiVjhQcm94eS5oIgogI2luY2x1ZGUgIlY4
U3RvcmFnZS5oIgpAQCAtMTA2LDE4ICsxMDMsNiBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhJ
bmplY3RlZFNjcmlwdEhvc3Q6Omluc3BlY3RDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJgog
ICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CiB9CiAKLXY4OjpIYW5kbGU8djg6OlZhbHVlPiBW
OEluamVjdGVkU2NyaXB0SG9zdDo6Y3VycmVudENhbGxGcmFtZUNhbGxiYWNrKGNvbnN0IHY4OjpB
cmd1bWVudHMmIGFyZ3MpCi17Ci0jaWYgRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpCi0gICAg
SU5DX1NUQVRTKCJJbmplY3RlZFNjcmlwdEhvc3QuY3VycmVudENhbGxGcmFtZSgpIik7Ci0gICAg
SW5qZWN0ZWRTY3JpcHRIb3N0KiBob3N0ID0gVjhJbmplY3RlZFNjcmlwdEhvc3Q6OnRvTmF0aXZl
KGFyZ3MuSG9sZGVyKCkpOwotICAgIHJldHVybiB0b1Y4KGhvc3QtPmRlYnVnZ2VyQWdlbnQoKS0+
c2NyaXB0RGVidWdTZXJ2ZXIoKS5jdXJyZW50Q2FsbEZyYW1lKCkpOwotI2Vsc2UKLSAgICBVTlVT
RURfUEFSQU0oYXJncyk7Ci0gICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKLSNlbmRpZgotfQot
CiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhJbmplY3RlZFNjcmlwdEhvc3Q6OmRhdGFiYXNlSWRD
YWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewogICAgIElOQ19TVEFUUygiSW5q
ZWN0ZWRTY3JpcHRIb3N0LmRhdGFiYXNlSWQoKSIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbmplY3RlZFNjcmlwdC5jcHAKaW5kZXggZTY1MzI5MC4uYWViNmYzOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHQuY3BwCkBAIC03MSw5ICs3MSwxMCBAQCB2
b2lkIEluamVjdGVkU2NyaXB0OjpldmFsdWF0ZU9uKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywg
Y29uc3QgU3RyaW5nJiBvYmplY3RJZAogICAgIG1ha2VPYmplY3RDYWxsKGVycm9yU3RyaW5nLCBm
dW5jdGlvbiwgcmVzdWx0KTsKIH0KIAotdm9pZCBJbmplY3RlZFNjcmlwdDo6ZXZhbHVhdGVPbkNh
bGxGcmFtZShFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgY2FsbEZyYW1l
SWQsIGNvbnN0IFN0cmluZyYgZXhwcmVzc2lvbiwgY29uc3QgU3RyaW5nJiBvYmplY3RHcm91cCwg
Ym9vbCBpbmNsdWRlQ29tbWFuZExpbmVBUEksIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+KiByZXN1
bHQpCit2b2lkIEluamVjdGVkU2NyaXB0OjpldmFsdWF0ZU9uQ2FsbEZyYW1lKEVycm9yU3RyaW5n
KiBlcnJvclN0cmluZywgY29uc3QgU2NyaXB0VmFsdWUmIGNhbGxGcmFtZXMsIGNvbnN0IFN0cmlu
ZyYgY2FsbEZyYW1lSWQsIGNvbnN0IFN0cmluZyYgZXhwcmVzc2lvbiwgY29uc3QgU3RyaW5nJiBv
YmplY3RHcm91cCwgYm9vbCBpbmNsdWRlQ29tbWFuZExpbmVBUEksIFJlZlB0cjxJbnNwZWN0b3JP
YmplY3Q+KiByZXN1bHQpCiB7CiAgICAgU2NyaXB0RnVuY3Rpb25DYWxsIGZ1bmN0aW9uKG1faW5q
ZWN0ZWRTY3JpcHRPYmplY3QsICJldmFsdWF0ZU9uQ2FsbEZyYW1lIik7CisgICAgZnVuY3Rpb24u
YXBwZW5kQXJndW1lbnQoY2FsbEZyYW1lcyk7CiAgICAgZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQo
Y2FsbEZyYW1lSWQpOwogICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KGV4cHJlc3Npb24pOwog
ICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KG9iamVjdEdyb3VwKTsKQEAgLTEzMSwxMCArMTMy
LDExIEBAIHZvaWQgSW5qZWN0ZWRTY3JpcHQ6OnJlbGVhc2VPYmplY3QoY29uc3QgU3RyaW5nJiBv
YmplY3RJZCkKIH0KIAogI2lmIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKQotUGFzc1JlZlB0
cjxJbnNwZWN0b3JBcnJheT4gSW5qZWN0ZWRTY3JpcHQ6OmNhbGxGcmFtZXMoKQorUGFzc1JlZlB0
cjxJbnNwZWN0b3JBcnJheT4gSW5qZWN0ZWRTY3JpcHQ6OndyYXBDYWxsRnJhbWVzKGNvbnN0IFNj
cmlwdFZhbHVlJiBjYWxsRnJhbWVzKQogewogICAgIEFTU0VSVCghaGFzTm9WYWx1ZSgpKTsKLSAg
ICBTY3JpcHRGdW5jdGlvbkNhbGwgZnVuY3Rpb24obV9pbmplY3RlZFNjcmlwdE9iamVjdCwgImNh
bGxGcmFtZXMiKTsKKyAgICBTY3JpcHRGdW5jdGlvbkNhbGwgZnVuY3Rpb24obV9pbmplY3RlZFNj
cmlwdE9iamVjdCwgIndyYXBDYWxsRnJhbWVzIik7CisgICAgZnVuY3Rpb24uYXBwZW5kQXJndW1l
bnQoY2FsbEZyYW1lcyk7CiAgICAgU2NyaXB0VmFsdWUgY2FsbEZyYW1lc1ZhbHVlID0gZnVuY3Rp
b24uY2FsbCgpOwogICAgIFJlZlB0cjxJbnNwZWN0b3JWYWx1ZT4gcmVzdWx0ID0gY2FsbEZyYW1l
c1ZhbHVlLnRvSW5zcGVjdG9yVmFsdWUobV9pbmplY3RlZFNjcmlwdE9iamVjdC5zY3JpcHRTdGF0
ZSgpKTsKICAgICBpZiAocmVzdWx0LT50eXBlKCkgPT0gSW5zcGVjdG9yVmFsdWU6OlR5cGVBcnJh
eSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdC5o
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0LmgKaW5kZXggYWRjYjIw
OC4uNGQ4NzAzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVk
U2NyaXB0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0LmgK
QEAgLTU3LDE0ICs1NywxNCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGV2YWx1YXRlKEVycm9yU3Ry
aW5nKiwgY29uc3QgU3RyaW5nJiBleHByZXNzaW9uLCBjb25zdCBTdHJpbmcmIG9iamVjdEdyb3Vw
LCBib29sIGluY2x1ZGVDb21tYW5kTGluZUFQSSwgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4qIHJl
c3VsdCk7CiAgICAgdm9pZCBldmFsdWF0ZU9uKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBv
YmplY3RJZCwgY29uc3QgU3RyaW5nJiBleHByZXNzaW9uLCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0
PiogcmVzdWx0KTsKLSAgICB2b2lkIGV2YWx1YXRlT25DYWxsRnJhbWUoRXJyb3JTdHJpbmcqLCBj
b25zdCBTdHJpbmcmIGNhbGxGcmFtZUlkLCBjb25zdCBTdHJpbmcmIGV4cHJlc3Npb24sIGNvbnN0
IFN0cmluZyYgb2JqZWN0R3JvdXAsIGJvb2wgaW5jbHVkZUNvbW1hbmRMaW5lQVBJLCBSZWZQdHI8
SW5zcGVjdG9yT2JqZWN0PiogcmVzdWx0KTsKKyAgICB2b2lkIGV2YWx1YXRlT25DYWxsRnJhbWUo
RXJyb3JTdHJpbmcqLCBjb25zdCBTY3JpcHRWYWx1ZSYgY2FsbEZyYW1lcywgY29uc3QgU3RyaW5n
JiBjYWxsRnJhbWVJZCwgY29uc3QgU3RyaW5nJiBleHByZXNzaW9uLCBjb25zdCBTdHJpbmcmIG9i
amVjdEdyb3VwLCBib29sIGluY2x1ZGVDb21tYW5kTGluZUFQSSwgUmVmUHRyPEluc3BlY3Rvck9i
amVjdD4qIHJlc3VsdCk7CiAgICAgdm9pZCBnZXRQcm9wZXJ0aWVzKEVycm9yU3RyaW5nKiwgY29u
c3QgU3RyaW5nJiBvYmplY3RJZCwgYm9vbCBpZ25vcmVIYXNPd25Qcm9wZXJ0eSwgUmVmUHRyPElu
c3BlY3RvckFycmF5PiogcmVzdWx0KTsKICAgICBOb2RlKiBub2RlRm9yT2JqZWN0SWQoY29uc3Qg
U3RyaW5nJiBvYmplY3RJZCk7CiAgICAgdm9pZCBzZXRQcm9wZXJ0eVZhbHVlKEVycm9yU3RyaW5n
KiwgY29uc3QgU3RyaW5nJiBvYmplY3RJZCwgY29uc3QgU3RyaW5nJiBwcm9wZXJ0eU5hbWUsIGNv
bnN0IFN0cmluZyYgZXhwcmVzc2lvbik7CiAgICAgdm9pZCByZWxlYXNlT2JqZWN0KGNvbnN0IFN0
cmluZyYgb2JqZWN0SWQpOwogCiAjaWYgRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpCi0gICAg
UGFzc1JlZlB0cjxJbnNwZWN0b3JBcnJheT4gY2FsbEZyYW1lcygpOworICAgIFBhc3NSZWZQdHI8
SW5zcGVjdG9yQXJyYXk+IHdyYXBDYWxsRnJhbWVzKGNvbnN0IFNjcmlwdFZhbHVlJik7CiAjZW5k
aWYKIAogICAgIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiB3cmFwT2JqZWN0KFNjcmlwdFZh
bHVlLCBjb25zdCBTdHJpbmcmIGdyb3VwTmFtZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRIb3N0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbmplY3RlZFNjcmlwdEhvc3QuY3BwCmluZGV4IGEwYmFmZGYuLmI1NDI3ZjggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdEhvc3QuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdEhvc3QuY3BwCkBAIC00
NywxMCArNDcsNiBAQAogI2luY2x1ZGUgIkluc3BlY3RvclZhbHVlcy5oIgogI2luY2x1ZGUgIlBh
c3RlYm9hcmQuaCIKIAotI2lmIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKQotI2luY2x1ZGUg
IlNjcmlwdERlYnVnU2VydmVyLmgiCi0jZW5kaWYKLQogI2lmIEVOQUJMRShEQVRBQkFTRSkKICNp
bmNsdWRlICJEYXRhYmFzZS5oIgogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRIb3N0LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5qZWN0ZWRTY3JpcHRIb3N0LmgKaW5kZXggODlhNTAzMS4uYjU5MmQ5YiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0SG9zdC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdEhvc3QuaApAQCAtNDcsNyArNDcsNiBA
QCBjbGFzcyBJbnNwZWN0b3JBZ2VudDsKIGNsYXNzIEluc3BlY3RvckNvbnNvbGVBZ2VudDsKIGNs
YXNzIEluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudDsKIGNsYXNzIEluc3BlY3RvckRhdGFiYXNlQWdl
bnQ7Ci1jbGFzcyBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OwogY2xhc3MgSW5zcGVjdG9yRnJvbnRl
bmQ7CiBjbGFzcyBJbnNwZWN0b3JPYmplY3Q7CiBjbGFzcyBOb2RlOwpAQCAtNjksOSArNjgsNiBA
QCBwdWJsaWM6CiAjaWYgRU5BQkxFKERPTV9TVE9SQUdFKQogICAgICAgICAgICAgLCBJbnNwZWN0
b3JET01TdG9yYWdlQWdlbnQqIGRvbVN0b3JhZ2VBZ2VudAogI2VuZGlmCi0jaWYgRU5BQkxFKEpB
VkFTQ1JJUFRfREVCVUdHRVIpCi0gICAgICAgICAgICAsIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQq
IGRlYnVnZ2VyQWdlbnQKLSNlbmRpZgogICAgICAgICApCiAgICAgewogICAgICAgICBtX2luc3Bl
Y3RvckFnZW50ID0gaW5zcGVjdG9yQWdlbnQ7CkBAIC04Miw5ICs3OCw2IEBAIHB1YmxpYzoKICNp
ZiBFTkFCTEUoRE9NX1NUT1JBR0UpCiAgICAgICAgIG1fZG9tU3RvcmFnZUFnZW50ID0gZG9tU3Rv
cmFnZUFnZW50OwogI2VuZGlmCi0jaWYgRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpCi0gICAg
ICAgIG1fZGVidWdnZXJBZ2VudCA9IGRlYnVnZ2VyQWdlbnQ7Ci0jZW5kaWYKICAgICB9CiAgICAg
dm9pZCBzZXRGcm9udGVuZChJbnNwZWN0b3JGcm9udGVuZCogZnJvbnRlbmQpIHsgbV9mcm9udGVu
ZCA9IGZyb250ZW5kOyB9CiAgICAgdm9pZCBjbGVhckZyb250ZW5kKCkgeyBtX2Zyb250ZW5kID0g
MDsgfQpAQCAtMTEyLDkgKzEwNSw2IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZENyZWF0ZVdvcmtl
cihsb25nIGlkLCBjb25zdCBTdHJpbmcmIHVybCwgYm9vbCBpc1NoYXJlZFdvcmtlcik7CiAgICAg
dm9pZCBkaWREZXN0cm95V29ya2VyKGxvbmcgaWQpOwogI2VuZGlmCi0jaWYgRU5BQkxFKEpBVkFT
Q1JJUFRfREVCVUdHRVIpCi0gICAgSW5zcGVjdG9yRGVidWdnZXJBZ2VudCogZGVidWdnZXJBZ2Vu
dCgpIHsgcmV0dXJuIG1fZGVidWdnZXJBZ2VudDsgfQotI2VuZGlmCiAKIHByaXZhdGU6CiAgICAg
SW5qZWN0ZWRTY3JpcHRIb3N0KCk7CkBAIC0xMjcsOSArMTE3LDYgQEAgcHJpdmF0ZToKICNpZiBF
TkFCTEUoRE9NX1NUT1JBR0UpCiAgICAgSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50KiBtX2RvbVN0
b3JhZ2VBZ2VudDsKICNlbmRpZgotI2lmIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKQotICAg
IEluc3BlY3RvckRlYnVnZ2VyQWdlbnQqIG1fZGVidWdnZXJBZ2VudDsKLSNlbmRpZgogICAgIElu
c3BlY3RvckZyb250ZW5kKiBtX2Zyb250ZW5kOwogICAgIGxvbmcgbV9sYXN0V29ya2VySWQ7CiAg
ICAgVmVjdG9yPFJlZlB0cjxOb2RlPiA+IG1faW5zcGVjdGVkTm9kZXM7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRIb3N0LmlkbCBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdEhvc3QuaWRsCmluZGV4IGZjNjA4MTMuLjY5
OGU0YmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlw
dEhvc3QuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdEhv
c3QuaWRsCkBAIC0zOSw3ICszOSw2IEBAIG1vZHVsZSBjb3JlIHsKICAgICAgICAgW0N1c3RvbV0g
RE9NT2JqZWN0IGluc3BlY3RlZE5vZGUoaW4gaW50IG51bSk7CiAgICAgICAgIFtDdXN0b21dIERP
TU9iamVjdCBpbnRlcm5hbENvbnN0cnVjdG9yTmFtZShpbiBET01PYmplY3Qgb2JqZWN0KTsKIAot
ICAgICAgICBbQ3VzdG9tXSBET01PYmplY3QgY3VycmVudENhbGxGcmFtZSgpOwogICAgICAgICBb
Q3VzdG9tXSBpbnQgZGF0YWJhc2VJZChpbiBET01PYmplY3QgZGF0YWJhc2UpOwogICAgICAgICBb
Q3VzdG9tXSBpbnQgc3RvcmFnZUlkKGluIERPTU9iamVjdCBzdG9yYWdlKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0U291cmNlLmpzIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0U291cmNlLmpzCmluZGV4IDEwODMz
MGQuLjM1Yzc2NzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3Rl
ZFNjcmlwdFNvdXJjZS5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRT
Y3JpcHRTb3VyY2UuanMKQEAgLTI5Myw5ICsyOTMsOCBAQCBJbmplY3RlZFNjcmlwdC5wcm90b3R5
cGUgPSB7CiAgICAgICAgIH0KICAgICB9LAogCi0gICAgY2FsbEZyYW1lczogZnVuY3Rpb24oKQor
ICAgIHdyYXBDYWxsRnJhbWVzOiBmdW5jdGlvbihjYWxsRnJhbWUpCiAgICAgewotICAgICAgICB2
YXIgY2FsbEZyYW1lID0gSW5qZWN0ZWRTY3JpcHRIb3N0LmN1cnJlbnRDYWxsRnJhbWUoKTsKICAg
ICAgICAgaWYgKCFjYWxsRnJhbWUpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgCkBA
IC0zMDgsMTkgKzMwNywxOSBAQCBJbmplY3RlZFNjcmlwdC5wcm90b3R5cGUgPSB7CiAgICAgICAg
IHJldHVybiByZXN1bHQ7CiAgICAgfSwKIAotICAgIGV2YWx1YXRlT25DYWxsRnJhbWU6IGZ1bmN0
aW9uKGNhbGxGcmFtZUlkLCBleHByZXNzaW9uLCBvYmplY3RHcm91cCwgaW5qZWN0Q29tbWFuZExp
bmVBUEkpCisgICAgZXZhbHVhdGVPbkNhbGxGcmFtZTogZnVuY3Rpb24odG9wQ2FsbEZyYW1lLCBj
YWxsRnJhbWVJZCwgZXhwcmVzc2lvbiwgb2JqZWN0R3JvdXAsIGluamVjdENvbW1hbmRMaW5lQVBJ
KQogICAgIHsKLSAgICAgICAgdmFyIGNhbGxGcmFtZSA9IHRoaXMuX2NhbGxGcmFtZUZvcklkKGNh
bGxGcmFtZUlkKTsKKyAgICAgICAgdmFyIGNhbGxGcmFtZSA9IHRoaXMuX2NhbGxGcmFtZUZvcklk
KHRvcENhbGxGcmFtZSwgY2FsbEZyYW1lSWQpOwogICAgICAgICBpZiAoIWNhbGxGcmFtZSkKICAg
ICAgICAgICAgIHJldHVybiAiQ291bGQgbm90IGZpbmQgY2FsbCBmcmFtZSB3aXRoIGdpdmVuIGlk
IjsKICAgICAgICAgcmV0dXJuIHRoaXMuX2V2YWx1YXRlQW5kV3JhcChjYWxsRnJhbWUuZXZhbHVh
dGUsIGNhbGxGcmFtZSwgZXhwcmVzc2lvbiwgb2JqZWN0R3JvdXAsIHRydWUsIGluamVjdENvbW1h
bmRMaW5lQVBJKTsKICAgICB9LAogCi0gICAgX2NhbGxGcmFtZUZvcklkOiBmdW5jdGlvbihjYWxs
RnJhbWVJZCkKKyAgICBfY2FsbEZyYW1lRm9ySWQ6IGZ1bmN0aW9uKHRvcENhbGxGcmFtZSwgY2Fs
bEZyYW1lSWQpCiAgICAgewogICAgICAgICB2YXIgcGFyc2VkQ2FsbEZyYW1lSWQgPSBldmFsKCIo
IiArIGNhbGxGcmFtZUlkICsgIikiKTsKICAgICAgICAgdmFyIG9yZGluYWwgPSBwYXJzZWRDYWxs
RnJhbWVJZC5vcmRpbmFsOwotICAgICAgICB2YXIgY2FsbEZyYW1lID0gSW5qZWN0ZWRTY3JpcHRI
b3N0LmN1cnJlbnRDYWxsRnJhbWUoKTsKKyAgICAgICAgdmFyIGNhbGxGcmFtZSA9IHRvcENhbGxG
cmFtZTsKICAgICAgICAgd2hpbGUgKC0tb3JkaW5hbCA+PSAwICYmIGNhbGxGcmFtZSkKICAgICAg
ICAgICAgIGNhbGxGcmFtZSA9IGNhbGxGcmFtZS5jYWxsZXI7CiAgICAgICAgIHJldHVybiBjYWxs
RnJhbWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmpz
b24gYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmpzb24KaW5kZXggNTcxZGJi
Ni4uYzYwYjJhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ci5qc29uCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuanNvbgpAQCAt
MTUwMSw3ICsxNTAxLDggQEAKICAgICAgICAgICAgICAgICAgICAgICAgICJuYW1lIjogImRldGFp
bHMiLAogICAgICAgICAgICAgICAgICAgICAgICAgInR5cGUiOiAib2JqZWN0IiwKICAgICAgICAg
ICAgICAgICAgICAgICAgICJwcm9wZXJ0aWVzIjogWwotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHsgIm5hbWUiOiAiY2FsbEZyYW1lcyIsICJ0eXBlIjogImFycmF5IiwgIml0ZW1zIjogeyAi
JHJlZiI6ICJDYWxsRnJhbWUiIH0sICJkZXNjcmlwdGlvbiI6ICJDYWxsIHN0YWNrIHRoZSB2aXJ0
dWFsIG1hY2hpbmUgc3RvcHBlZCBvbi4iIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB7
ICJuYW1lIjogImNhbGxGcmFtZXMiLCAidHlwZSI6ICJhcnJheSIsICJpdGVtcyI6IHsgIiRyZWYi
OiAiQ2FsbEZyYW1lIiB9LCAiZGVzY3JpcHRpb24iOiAiQ2FsbCBzdGFjayB0aGUgdmlydHVhbCBt
YWNoaW5lIHN0b3BwZWQgb24uIiB9LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgIm5h
bWUiOiAiZXhjZXB0aW9uIiwgIiRyZWYiOiAiUnVudGltZS5SZW1vdGVPYmplY3QiLCAib3B0aW9u
YWwiOiB0cnVlLCAiZGVzY3JpcHRpb24iOiAiQ3VycmVudCBleGNlcHRpb24gb2JqZWN0IGlmIHNj
cmlwdCBleGVjdXRpb24gaXMgcGF1c2VkIHdoZW4gYW4gZXhjZXB0aW9uIGlzIGJlaW5nIHRocm93
bi4iIH0KICAgICAgICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAgICAgICAg
ICAiZGVzY3JpcHRpb24iOiAiQ2FsbCBzdGFjayBpbmZvcm1hdGlvbi4iCiAgICAgICAgICAgICAg
ICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JB
Z2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnQuY3BwCmlu
ZGV4IDYxMmE1YjguLmViMmYzNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckFnZW50LmNwcApAQCAtMTUyLDkgKzE1Miw2IEBAIEluc3BlY3RvckFnZW50OjpJbnNwZWN0
b3JBZ2VudChQYWdlKiBwYWdlLCBJbnNwZWN0b3JDbGllbnQqIGNsaWVudCwgSW5qZWN0ZWRTY3Jp
CiAjaWYgRU5BQkxFKERPTV9TVE9SQUdFKQogICAgICAgICAsIG1fZG9tU3RvcmFnZUFnZW50Lmdl
dCgpCiAjZW5kaWYKLSNpZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikKLSAgICAgICAgLCBt
X2RlYnVnZ2VyQWdlbnQuZ2V0KCkKLSNlbmRpZgogICAgICk7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcAppbmRleCA3MGIw
N2JjLi5hOGMyYWU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yRGVidWdnZXJBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckRlYnVnZ2VyQWdlbnQuY3BwCkBAIC0zOSw2ICszOSw3IEBACiAjaW5jbHVkZSAiSW5zdHJ1
bWVudGluZ0FnZW50cy5oIgogI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCiAjaW5jbHVkZSAi
U2NyaXB0RGVidWdTZXJ2ZXIuaCIKKyNpbmNsdWRlICJTY3JpcHRPYmplY3QuaCIKICNpbmNsdWRl
IDx3dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0ZS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBA
IC0yNzksNyArMjgwLDcgQEAgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IEluc3BlY3RvckRl
YnVnZ2VyQWdlbnQ6OnJlc29sdmVCcmVha3BvaW50KGNvbnN0IFN0cmkKIAogdm9pZCBJbnNwZWN0
b3JEZWJ1Z2dlckFnZW50OjplZGl0U2NyaXB0U291cmNlKEVycm9yU3RyaW5nKiBlcnJvciwgY29u
c3QgU3RyaW5nJiBzb3VyY2VJRCwgY29uc3QgU3RyaW5nJiBuZXdDb250ZW50LCBSZWZQdHI8SW5z
cGVjdG9yQXJyYXk+KiBuZXdDYWxsRnJhbWVzKQogewotICAgIGlmIChzY3JpcHREZWJ1Z1NlcnZl
cigpLmVkaXRTY3JpcHRTb3VyY2Uoc291cmNlSUQsIG5ld0NvbnRlbnQsIGVycm9yKSkKKyAgICBp
ZiAoc2NyaXB0RGVidWdTZXJ2ZXIoKS5lZGl0U2NyaXB0U291cmNlKHNvdXJjZUlELCBuZXdDb250
ZW50LCBlcnJvciwgJm1fY3VycmVudENhbGxTdGFjaykpCiAgICAgICAgICpuZXdDYWxsRnJhbWVz
ID0gY3VycmVudENhbGxGcmFtZXMoKTsKIH0KIApAQCAtMzU1LDcgKzM1Niw3IEBAIHZvaWQgSW5z
cGVjdG9yRGVidWdnZXJBZ2VudDo6ZXZhbHVhdGVPbkNhbGxGcmFtZShFcnJvclN0cmluZyogZXJy
b3JTdHJpbmcsIGNvbnN0CiB7CiAgICAgSW5qZWN0ZWRTY3JpcHQgaW5qZWN0ZWRTY3JpcHQgPSBt
X2luamVjdGVkU2NyaXB0TWFuYWdlci0+aW5qZWN0ZWRTY3JpcHRGb3JPYmplY3RJZChjYWxsRnJh
bWVJZCk7CiAgICAgaWYgKCFpbmplY3RlZFNjcmlwdC5oYXNOb1ZhbHVlKCkpCi0gICAgICAgIGlu
amVjdGVkU2NyaXB0LmV2YWx1YXRlT25DYWxsRnJhbWUoZXJyb3JTdHJpbmcsIGNhbGxGcmFtZUlk
LCBleHByZXNzaW9uLCBvYmplY3RHcm91cCA/ICpvYmplY3RHcm91cCA6ICIiLCBpbmNsdWRlQ29t
bWFuZExpbmVBUEkgPyAqaW5jbHVkZUNvbW1hbmRMaW5lQVBJIDogZmFsc2UsIHJlc3VsdCk7Cisg
ICAgICAgIGluamVjdGVkU2NyaXB0LmV2YWx1YXRlT25DYWxsRnJhbWUoZXJyb3JTdHJpbmcsIG1f
Y3VycmVudENhbGxTdGFjaywgY2FsbEZyYW1lSWQsIGV4cHJlc3Npb24sIG9iamVjdEdyb3VwID8g
Km9iamVjdEdyb3VwIDogIiIsIGluY2x1ZGVDb21tYW5kTGluZUFQSSA/ICppbmNsdWRlQ29tbWFu
ZExpbmVBUEkgOiBmYWxzZSwgcmVzdWx0KTsKIH0KIAogUGFzc1JlZlB0cjxJbnNwZWN0b3JBcnJh
eT4gSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6Y3VycmVudENhbGxGcmFtZXMoKQpAQCAtMzY3LDcg
KzM2OCw3IEBAIFBhc3NSZWZQdHI8SW5zcGVjdG9yQXJyYXk+IEluc3BlY3RvckRlYnVnZ2VyQWdl
bnQ6OmN1cnJlbnRDYWxsRnJhbWVzKCkKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAg
ICAgICAgIHJldHVybiBJbnNwZWN0b3JBcnJheTo6Y3JlYXRlKCk7CiAgICAgfQotICAgIHJldHVy
biBpbmplY3RlZFNjcmlwdC5jYWxsRnJhbWVzKCk7CisgICAgcmV0dXJuIGluamVjdGVkU2NyaXB0
LndyYXBDYWxsRnJhbWVzKG1fY3VycmVudENhbGxTdGFjayk7CiB9CiAKIC8vIEphdmFTY3JpcHRE
ZWJ1Z0xpc3RlbmVyIGZ1bmN0aW9ucwpAQCAtNDA0LDE1ICs0MDUsMjIgQEAgdm9pZCBJbnNwZWN0
b3JEZWJ1Z2dlckFnZW50OjpmYWlsZWRUb1BhcnNlU291cmNlKGNvbnN0IFN0cmluZyYgdXJsLCBj
b25zdCBTdHJpbmcKICAgICBtX2Zyb250ZW5kLT5zY3JpcHRGYWlsZWRUb1BhcnNlKHVybCwgZGF0
YSwgZmlyc3RMaW5lLCBlcnJvckxpbmUsIGVycm9yTWVzc2FnZSk7CiB9CiAKLXZvaWQgSW5zcGVj
dG9yRGVidWdnZXJBZ2VudDo6ZGlkUGF1c2UoU2NyaXB0U3RhdGUqIHNjcmlwdFN0YXRlKQordm9p
ZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpkaWRQYXVzZShTY3JpcHRTdGF0ZSogc2NyaXB0U3Rh
dGUsIGNvbnN0IFNjcmlwdFZhbHVlJiBjYWxsRnJhbWVzLCBjb25zdCBTY3JpcHRWYWx1ZSYgZXhj
ZXB0aW9uKQogewogICAgIEFTU0VSVChzY3JpcHRTdGF0ZSAmJiAhbV9wYXVzZWRTY3JpcHRTdGF0
ZSk7CiAgICAgbV9wYXVzZWRTY3JpcHRTdGF0ZSA9IHNjcmlwdFN0YXRlOworICAgIG1fY3VycmVu
dENhbGxTdGFjayA9IGNhbGxGcmFtZXM7CiAKICAgICBpZiAoIW1fYnJlYWtQcm9ncmFtRGV0YWls
cykKICAgICAgICAgbV9icmVha1Byb2dyYW1EZXRhaWxzID0gSW5zcGVjdG9yT2JqZWN0OjpjcmVh
dGUoKTsKICAgICBtX2JyZWFrUHJvZ3JhbURldGFpbHMtPnNldFZhbHVlKCJjYWxsRnJhbWVzIiwg
Y3VycmVudENhbGxGcmFtZXMoKSk7CiAKKyAgICBpZiAoIWV4Y2VwdGlvbi5oYXNOb1ZhbHVlKCkp
IHsKKyAgICAgICAgSW5qZWN0ZWRTY3JpcHQgaW5qZWN0ZWRTY3JpcHQgPSBtX2luamVjdGVkU2Ny
aXB0TWFuYWdlci0+aW5qZWN0ZWRTY3JpcHRGb3Ioc2NyaXB0U3RhdGUpOworICAgICAgICBpZiAo
IWluamVjdGVkU2NyaXB0Lmhhc05vVmFsdWUoKSkKKyAgICAgICAgICAgIG1fYnJlYWtQcm9ncmFt
RGV0YWlscy0+c2V0VmFsdWUoImV4Y2VwdGlvbiIsIGluamVjdGVkU2NyaXB0LndyYXBPYmplY3Qo
ZXhjZXB0aW9uLCAiYmFja3RyYWNlIikpOworICAgIH0KKwogICAgIG1fZnJvbnRlbmQtPnBhdXNl
ZChtX2JyZWFrUHJvZ3JhbURldGFpbHMpOwogICAgIG1famF2YVNjcmlwdFBhdXNlU2NoZWR1bGVk
ID0gZmFsc2U7CiAKQEAgLTQyNSw2ICs0MzMsNyBAQCB2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdl
bnQ6OmRpZFBhdXNlKFNjcmlwdFN0YXRlKiBzY3JpcHRTdGF0ZSkKIHZvaWQgSW5zcGVjdG9yRGVi
dWdnZXJBZ2VudDo6ZGlkQ29udGludWUoKQogewogICAgIG1fcGF1c2VkU2NyaXB0U3RhdGUgPSAw
OworICAgIG1fY3VycmVudENhbGxTdGFjayA9IFNjcmlwdFZhbHVlKCk7CiAgICAgbV9icmVha1By
b2dyYW1EZXRhaWxzID0gMDsKICAgICBtX2Zyb250ZW5kLT5yZXN1bWVkKCk7CiB9CkBAIC00NDAs
NiArNDQ5LDcgQEAgdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpicmVha1Byb2dyYW0oRGVi
dWdnZXJFdmVudFR5cGUgdHlwZSwgUGFzc1JlZlB0cjxJbnMKIHZvaWQgSW5zcGVjdG9yRGVidWdn
ZXJBZ2VudDo6Y2xlYXIoKQogewogICAgIG1fcGF1c2VkU2NyaXB0U3RhdGUgPSAwOworICAgIG1f
Y3VycmVudENhbGxTdGFjayA9IFNjcmlwdFZhbHVlKCk7CiAgICAgbV9zY3JpcHRzLmNsZWFyKCk7
CiAgICAgbV9icmVha3BvaW50SWRUb0RlYnVnU2VydmVyQnJlYWtwb2ludElkcy5jbGVhcigpOwog
ICAgIG1fY29udGludWVUb0xvY2F0aW9uQnJlYWtwb2ludElkID0gU3RyaW5nKCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5oIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuaAppbmRleCA0
YzJlODU1Li5iMzc5ZGRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yRGVidWdnZXJBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JEZWJ1Z2dlckFnZW50LmgKQEAgLTUzLDYgKzUzLDcgQEAgY2xhc3MgSW5zcGVjdG9yU3Rh
dGU7CiBjbGFzcyBJbnNwZWN0b3JWYWx1ZTsKIGNsYXNzIEluc3RydW1lbnRpbmdBZ2VudHM7CiBj
bGFzcyBTY3JpcHREZWJ1Z1NlcnZlcjsKK2NsYXNzIFNjcmlwdFZhbHVlOwogCiB0eXBlZGVmIFN0
cmluZyBFcnJvclN0cmluZzsKIApAQCAtMTIxLDcgKzEyMiw3IEBAIHByaXZhdGU6CiAKICAgICB2
aXJ0dWFsIHZvaWQgZGlkUGFyc2VTb3VyY2UoY29uc3QgU3RyaW5nJiBzb3VyY2VJRCwgY29uc3Qg
U3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgZGF0YSwgaW50IGxpbmVPZmZzZXQsIGludCBjb2x1
bW5PZmZzZXQsIGJvb2wgaXNDb250ZW50U2NyaXB0KTsKICAgICB2aXJ0dWFsIHZvaWQgZmFpbGVk
VG9QYXJzZVNvdXJjZShjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiBkYXRhLCBpbnQg
Zmlyc3RMaW5lLCBpbnQgZXJyb3JMaW5lLCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSk7Ci0g
ICAgdmlydHVhbCB2b2lkIGRpZFBhdXNlKFNjcmlwdFN0YXRlKik7CisgICAgdmlydHVhbCB2b2lk
IGRpZFBhdXNlKFNjcmlwdFN0YXRlKiwgY29uc3QgU2NyaXB0VmFsdWUmIGNhbGxGcmFtZXMsIGNv
bnN0IFNjcmlwdFZhbHVlJiBleGNlcHRpb24pOwogICAgIHZpcnR1YWwgdm9pZCBkaWRDb250aW51
ZSgpOwogCiAgICAgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IHJlc29sdmVCcmVha3BvaW50
KGNvbnN0IFN0cmluZyYgYnJlYWtwb2ludElkLCBjb25zdCBTdHJpbmcmIHNvdXJjZUlkLCBjb25z
dCBTY3JpcHRCcmVha3BvaW50Jik7CkBAIC0xNjAsNiArMTYxLDcgQEAgcHJpdmF0ZToKICAgICBJ
bmplY3RlZFNjcmlwdE1hbmFnZXIqIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOwogICAgIEluc3Bl
Y3RvckZyb250ZW5kOjpEZWJ1Z2dlciogbV9mcm9udGVuZDsKICAgICBTY3JpcHRTdGF0ZSogbV9w
YXVzZWRTY3JpcHRTdGF0ZTsKKyAgICBTY3JpcHRWYWx1ZSBtX2N1cnJlbnRDYWxsU3RhY2s7CiAg
ICAgU2NyaXB0c01hcCBtX3NjcmlwdHM7CiAgICAgQnJlYWtwb2ludElkVG9EZWJ1Z1NlcnZlckJy
ZWFrcG9pbnRJZHNNYXAgbV9icmVha3BvaW50SWRUb0RlYnVnU2VydmVyQnJlYWtwb2ludElkczsK
ICAgICBTdHJpbmcgbV9jb250aW51ZVRvTG9jYXRpb25CcmVha3BvaW50SWQ7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvU2NyaXB0RGVidWdMaXN0ZW5lci5oIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL1NjcmlwdERlYnVnTGlzdGVuZXIuaAppbmRleCA0YTkzYTRjLi45
M2ZkMGZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvU2NyaXB0RGVidWdM
aXN0ZW5lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9TY3JpcHREZWJ1Z0xpc3Rl
bmVyLmgKQEAgLTM2LDYgKzM2LDcgQEAKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CitjbGFzcyBTY3JpcHRWYWx1ZTsKIAogY2xhc3MgU2NyaXB0RGVidWdM
aXN0ZW5lciB7CiBwdWJsaWM6CkBAIC00Myw3ICs0NCw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1
YWwgdm9pZCBkaWRQYXJzZVNvdXJjZShjb25zdCBTdHJpbmcmICBzb3VyY2VJRCwgY29uc3QgU3Ry
aW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgZGF0YSwgaW50IGxpbmVPZmZzZXQsIGludCBjb2x1bW5P
ZmZzZXQsIGJvb2wgaXNDb250ZW50U2NyaXB0KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGZhaWxl
ZFRvUGFyc2VTb3VyY2UoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgZGF0YSwgaW50
IGZpcnN0TGluZSwgaW50IGVycm9yTGluZSwgY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpID0g
MDsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUGF1c2UoU2NyaXB0U3RhdGUqKSA9IDA7CisgICAgdmly
dHVhbCB2b2lkIGRpZFBhdXNlKFNjcmlwdFN0YXRlKiwgY29uc3QgU2NyaXB0VmFsdWUmIGNhbGxG
cmFtZXMsIGNvbnN0IFNjcmlwdFZhbHVlJiBleGNlcHRpb24pID0gMDsKICAgICB2aXJ0dWFsIHZv
aWQgZGlkQ29udGludWUoKSA9IDA7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvV29ya2VySW5zcGVjdG9yQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvV29ya2VySW5zcGVjdG9yQ29udHJvbGxlci5jcHAKaW5kZXggYTNlNzdiNy4uZGJj
Yjg3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlckluc3BlY3Rv
ckNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJJbnNw
ZWN0b3JDb250cm9sbGVyLmNwcApAQCAtODYsOSArODYsNiBAQCBXb3JrZXJJbnNwZWN0b3JDb250
cm9sbGVyOjpXb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyKFdvcmtlckNvbnRleHQqIHdvcmtlckNv
bnRleAogI2lmIEVOQUJMRShET01fU1RPUkFHRSkKICAgICAgICAgLCAwCiAjZW5kaWYKLSNpZiBF
TkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikKLSAgICAgICAgLCBtX2RlYnVnZ2VyQWdlbnQuZ2V0
KCkKLSNlbmRpZgogICAgICk7CiB9CiAgCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>