<?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>66265</bug_id>
          
          <creation_ts>2011-08-15 16:51:08 -0700</creation_ts>
          <short_desc>Move allocation in constructors into separate constructorBody() methods</short_desc>
          <delta_ts>2011-08-18 17:58:53 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>65347</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Mark Hahnenberg">mhahnenberg</reporter>
          <assigned_to name="Mark Hahnenberg">mhahnenberg</assigned_to>
          <cc>ggaren</cc>
    
    <cc>oliver</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>451393</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2011-08-15 16:51:08 -0700</bug_when>
    <thetext>This is the next small step in the process of refactoring JSC constructors to do no allocation in the middle of the execution of an initialization list.  In this bug, we&apos;re going to pull the allocation done in the constructor bodies into separate finishAllocations() methods, which will in turn be called from the constructor bodies.  This will set us up to have those finishAllocations() methods called outside of the constructor, allowing us to avoid allocation during initialization.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>451398</commentid>
    <comment_count>1</comment_count>
      <attachid>103980</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2011-08-15 16:55:40 -0700</bug_when>
    <thetext>Created attachment 103980
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>451403</commentid>
    <comment_count>2</comment_count>
      <attachid>103982</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2011-08-15 17:03:10 -0700</bug_when>
    <thetext>Created attachment 103982
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>451936</commentid>
    <comment_count>3</comment_count>
      <attachid>103982</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2011-08-16 15:51:33 -0700</bug_when>
    <thetext>Comment on attachment 103982
Patch

Patch looks good.

I think the simplest idiom to understand and enforce is &quot;no constructor bodies or non-trivial initializers in GC objects.&quot; Then, this extra function you&apos;ve added functions as the constructor body. So, let&apos;s call it &quot;constructorBody&quot;.

r=me with that change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>452478</commentid>
    <comment_count>4</comment_count>
      <attachid>104216</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2011-08-17 12:44:28 -0700</bug_when>
    <thetext>Created attachment 104216
Change function name</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>453459</commentid>
    <comment_count>5</comment_count>
      <attachid>104419</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2011-08-18 16:02:44 -0700</bug_when>
    <thetext>Created attachment 104419
Fixing windows build errors</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>453468</commentid>
    <comment_count>6</comment_count>
      <attachid>104419</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2011-08-18 16:08:15 -0700</bug_when>
    <thetext>Comment on attachment 104419
Fixing windows build errors

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

&gt; Source/JavaScriptCore/runtime/JSPropertyNameIterator.h:90
&gt; +            PropertyNameArrayData::PropertyNameVector&amp; propertyNameVector = propertyNameArrayData-&gt;propertyNameVector();

Out of curiosity, how does JSPropertyNameIterator handle gc during initialisation -- eg. if jsOwnedString triggers a gc?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>453471</commentid>
    <comment_count>7</comment_count>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2011-08-18 16:15:33 -0700</bug_when>
    <thetext>&gt; Out of curiosity, how does JSPropertyNameIterator handle gc during initialisation -- eg. if jsOwnedString triggers a gc?

Poorly I think.  visitChildren appends all of the values in m_jsStrings to the visitor, so if you&apos;re only halfway through creating the list, I think it has a potential to blow up.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>453521</commentid>
    <comment_count>8</comment_count>
      <attachid>104419</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-08-18 17:58:47 -0700</bug_when>
    <thetext>Comment on attachment 104419
Fixing windows build errors

Clearing flags on attachment: 104419

Committed r93378: &lt;http://trac.webkit.org/changeset/93378&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>453522</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-08-18 17:58:53 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>103980</attachid>
            <date>2011-08-15 16:55:40 -0700</date>
            <delta_ts>2011-08-15 17:03:07 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-66265-20110815165540.patch</filename>
            <type>text/plain</type>
            <size>45544</size>
            <attacher name="Mark Hahnenberg">mhahnenberg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTMwNjAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDJl
MzZhMDcyYjNjYjMyMWNhZTdjMTAxYjVmNmVhZjUxYWY4MzMzM2EuLjM5NjI1N2IzN2E4MDlkYzA1
YmRlNTMzYmNiNWMwMDgwMGJjMTNiNGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDc0IEBACisyMDExLTA4LTE1ICBNYXJrIEhhaG5lbmJlcmcgIDxtaGFobmVuYmVyZ0BhcHBs
ZS5jb20+CisKKyAgICAgICAgTW92ZSBhbGxvY2F0aW9uIGluIGNvbnN0cnVjdG9ycyBpbnRvIHNl
cGFyYXRlIGZpbmlzaEFsbG9jYXRpb24oKSBtZXRob2RzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NjI2NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgbmV4dCBwYXRjaCBpcyB0aGUgcmVmYWN0b3Jp
bmcgdG8gcHV0IGFsbCBhbGxvY2F0aW9ucyB0aGF0IG5lZWQgdG8gYmUgZG9uZSBhZnRlciAKKyAg
ICAgICAgdGhlIG9iamVjdCdzIGluaXRpYWxpemF0aW9uIGxpc3QgaGFzIGV4ZWN1dGVkIGJ1dCBi
ZWZvcmUgdGhlIG9iamVjdCBpcyByZWFkeSBmb3IgdXNlIAorICAgICAgICBpbnRvIGEgc2VwYXJh
dGUgZmluaXNoQWxsb2NhdGlvbnMoKSBtZXRob2QuICBUaGlzIG1ldGhvZCBpcyBzdGlsbCBjYWxs
ZWQgYnkgdGhlIGNvbnN0cnVjdG9yLCAKKyAgICAgICAgc28gdGhlIHBhdGNoIGRvZXNuJ3QgcmVz
b2x2ZSBhbnkgcG90ZW50aWFsIGlzc3VlcywgaXQncyBqdXN0IHRvIHNldCB1cCB0aGUgY29kZSBm
b3IgZnVydGhlciByZWZhY3RvcmluZy4KKworICAgICAgICAqIEphdmFTY3JpcHRDb3JlLmV4cDoK
KyAgICAgICAgKiBqc2MuY3BwOgorICAgICAgICAoR2xvYmFsT2JqZWN0OjpmaW5pc2hBbGxvY2F0
aW9ucyk6CisgICAgICAgIChHbG9iYWxPYmplY3Q6Okdsb2JhbE9iamVjdCk6CisgICAgICAgICog
cnVudGltZS9FcnJvckluc3RhbmNlLmNwcDoKKyAgICAgICAgKEpTQzo6RXJyb3JJbnN0YW5jZTo6
RXJyb3JJbnN0YW5jZSk6CisgICAgICAgICogcnVudGltZS9FcnJvckluc3RhbmNlLmg6CisgICAg
ICAgIChKU0M6OkVycm9ySW5zdGFuY2U6OmZpbmlzaEFsbG9jYXRpb25zKToKKyAgICAgICAgKiBy
dW50aW1lL0Vycm9yUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6RXJyb3JQcm90b3R5cGU6
OkVycm9yUHJvdG90eXBlKToKKyAgICAgICAgKiBydW50aW1lL0Vycm9yUHJvdG90eXBlLmg6Cisg
ICAgICAgIChKU0M6OkVycm9yUHJvdG90eXBlOjpmaW5pc2hBbGxvY2F0aW9ucyk6CisgICAgICAg
ICogcnVudGltZS9FeGVjdXRhYmxlLmNwcDoKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25FeGVjdXRh
YmxlOjpGdW5jdGlvbkV4ZWN1dGFibGUpOgorICAgICAgICAqIHJ1bnRpbWUvRXhlY3V0YWJsZS5o
OgorICAgICAgICAoSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGU6OmZpbmlzaEFsbG9jYXRpb25zKToK
KyAgICAgICAgKiBydW50aW1lL0luaXRpYWxpemVUaHJlYWRpbmcuY3BwOgorICAgICAgICAoSlND
Ojppbml0aWFsaXplVGhyZWFkaW5nT25jZSk6CisgICAgICAgICogcnVudGltZS9JbnRlcm5hbEZ1
bmN0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6SW50ZXJuYWxGdW5jdGlvbjo6SW50ZXJuYWxGdW5j
dGlvbik6CisgICAgICAgICogcnVudGltZS9JbnRlcm5hbEZ1bmN0aW9uLmg6CisgICAgICAgIChK
U0M6OkludGVybmFsRnVuY3Rpb246OmZpbmlzaEFsbG9jYXRpb25zKToKKyAgICAgICAgKiBydW50
aW1lL0pTQnl0ZUFycmF5LmNwcDoKKyAgICAgICAgKEpTQzo6SlNCeXRlQXJyYXk6OkpTQnl0ZUFy
cmF5KToKKyAgICAgICAgKiBydW50aW1lL0pTQnl0ZUFycmF5Lmg6CisgICAgICAgIChKU0M6OkpT
Qnl0ZUFycmF5OjpmaW5pc2hBbGxvY2F0aW9ucyk6CisgICAgICAgICogcnVudGltZS9KU0Z1bmN0
aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6SlNGdW5jdGlvbjo6SlNGdW5jdGlvbik6CisgICAgICAg
IChKU0M6OkpTRnVuY3Rpb246OmZpbmlzaEFsbG9jYXRpb25zKToKKyAgICAgICAgKiBydW50aW1l
L0pTRnVuY3Rpb24uaDoKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0Lmg6CisgICAg
ICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpKU0dsb2JhbE9iamVjdCk6CisgICAgICAgIChKU0M6
OkpTR2xvYmFsT2JqZWN0OjpmaW5pc2hBbGxvY2F0aW9ucyk6CisgICAgICAgICogcnVudGltZS9K
U1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6SlNQcm9wZXJ0eU5hbWVJ
dGVyYXRvcjo6SlNQcm9wZXJ0eU5hbWVJdGVyYXRvcik6CisgICAgICAgICogcnVudGltZS9KU1By
b3BlcnR5TmFtZUl0ZXJhdG9yLmg6CisgICAgICAgIChKU0M6OkpTUHJvcGVydHlOYW1lSXRlcmF0
b3I6OmZpbmlzaEFsbG9jYXRpb25zKToKKyAgICAgICAgKiBydW50aW1lL0pTU3RyaW5nLmg6Cisg
ICAgICAgIChKU0M6OlJvcGVCdWlsZGVyOjpKU1N0cmluZyk6CisgICAgICAgIChKU0M6OlJvcGVC
dWlsZGVyOjpmaW5pc2hBbGxvY2F0aW9ucyk6CisgICAgICAgICogcnVudGltZS9OYXRpdmVFcnJv
ckNvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6TmF0aXZlRXJyb3JDb25zdHJ1Y3Rvcjo6
TmF0aXZlRXJyb3JDb25zdHJ1Y3Rvcik6CisgICAgICAgICogcnVudGltZS9OYXRpdmVFcnJvckNv
bnN0cnVjdG9yLmg6CisgICAgICAgIChKU0M6Ok5hdGl2ZUVycm9yQ29uc3RydWN0b3I6OmZpbmlz
aEFsbG9jYXRpb25zKToKKyAgICAgICAgKiBydW50aW1lL05hdGl2ZUVycm9yUHJvdG90eXBlLmNw
cDoKKyAgICAgICAgKEpTQzo6TmF0aXZlRXJyb3JQcm90b3R5cGU6Ok5hdGl2ZUVycm9yUHJvdG90
eXBlKToKKyAgICAgICAgKEpTQzo6TmF0aXZlRXJyb3JQcm90b3R5cGU6OmZpbmlzaEFsbG9jYXRp
b25zKToKKyAgICAgICAgKiBydW50aW1lL05hdGl2ZUVycm9yUHJvdG90eXBlLmg6CisgICAgICAg
ICogcnVudGltZS9TdHJpbmdPYmplY3QuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvU3RyaW5nT2Jq
ZWN0Lmg6CisgICAgICAgIChKU0M6OlN0cmluZ09iamVjdDo6Y3JlYXRlKToKKyAgICAgICAgKiBy
dW50aW1lL1N0cmluZ09iamVjdFRoYXRNYXNxdWVyYWRlc0FzVW5kZWZpbmVkLmg6CisgICAgICAg
IChKU0M6OlN0cmluZ09iamVjdFRoYXRNYXNxdWVyYWRlc0FzVW5kZWZpbmVkOjpjcmVhdGUpOgor
ICAgICAgICAoSlNDOjpTdHJpbmdPYmplY3RUaGF0TWFzcXVlcmFkZXNBc1VuZGVmaW5lZDo6U3Ry
aW5nT2JqZWN0VGhhdE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQpOgorICAgICAgICAqIHJ1bnRpbWUv
U3RyaW5nUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6U3RyaW5nUHJvdG90eXBlOjpTdHJp
bmdQcm90b3R5cGUpOgorICAgICAgICAqIHJ1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmg6CisgICAg
ICAgIChKU0M6OlN0cmluZ1Byb3RvdHlwZTo6Y3JlYXRlKToKKwogMjAxMS0wOC0xNSAgR2F2aW4g
QmFycmFjbG91Z2ggIDxiYXJyYWNsb3VnaEBhcHBsZS5jb20+CiAKICAgICAgICAgQ3Jhc2ggYWNj
ZXNzaW5nIHN0YXRpYyBwcm9wZXJ0eSBvbiBzZWFsZWQgb2JqZWN0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZXhwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLmV4cAppbmRleCBlNTVmNjlkOWUzYTRlMTkxZGE2NjBiNDVmODhj
ZmIyNmQ1YmFkYWEzLi5mMGJiY2M0MGUyNjMwODA0NzVkMDlkYWE2Zjg0ZDQwNjc1OTQxZjNkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZXhwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5leHAKQEAgLTE1MSw3ICsxNTEs
NyBAQCBfX1pOM0pTQzEyU3RyaW5nT2JqZWN0MTlnZXRPd25Qcm9wZXJ0eU5hbWVzRVBOU185RXhl
Y1N0YXRlRVJOU18xN1Byb3BlcnR5TmFtZUFycgogX19aTjNKU0MxMlN0cmluZ09iamVjdDI0Z2V0
T3duUHJvcGVydHlEZXNjcmlwdG9yRVBOU185RXhlY1N0YXRlRVJLTlNfMTBJZGVudGlmaWVyRVJO
U18xOFByb3BlcnR5RGVzY3JpcHRvckUKIF9fWk4zSlNDMTJTdHJpbmdPYmplY3QzcHV0RVBOU185
RXhlY1N0YXRlRVJLTlNfMTBJZGVudGlmaWVyRU5TXzdKU1ZhbHVlRVJOU18xNVB1dFByb3BlcnR5
U2xvdEUKIF9fWk4zSlNDMTJTdHJpbmdPYmplY3Q2c19pbmZvRQotX19aTjNKU0MxMlN0cmluZ09i
amVjdEMyRVBOU185RXhlY1N0YXRlRVBOU185U3RydWN0dXJlRVJLTlNfN1VTdHJpbmdFCitfX1pO
M0pTQzEyU3RyaW5nT2JqZWN0QzJFUk5TXzEySlNHbG9iYWxEYXRhRVBOU185U3RydWN0dXJlRVBO
U184SlNTdHJpbmdFCiBfX1pOM0pTQzEzU2FtcGxpbmdGbGFnczRzdG9wRXYKIF9fWk4zSlNDMTNT
YW1wbGluZ0ZsYWdzNXN0YXJ0RXYKIF9fWk4zSlNDMTNTYW1wbGluZ0ZsYWdzN3NfZmxhZ3NFCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qc2MuY3BwCmluZGV4IGFmZWI1ZDlkMTEzOTZhNDlhZjRhZmZjMTNjMzQ1ODg1Yzli
MmExMzEuLmRlMzI4Y2E4ZjI3MWRmMjg2OTY0NWNiNzA0ZWQ0NjFiN2Y4MjhlMjcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qc2MuY3BwCkBAIC0xNTUsMzYgKzE1NSw0MiBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVy
biBuZXcgKGFsbG9jYXRlQ2VsbDxHbG9iYWxPYmplY3Q+KGdsb2JhbERhdGEuaGVhcCkpIEdsb2Jh
bE9iamVjdChnbG9iYWxEYXRhLCBzdHJ1Y3R1cmUsIGFyZ3VtZW50cyk7CiAgICAgfQogICAgIHZp
cnR1YWwgVVN0cmluZyBjbGFzc05hbWUoKSBjb25zdCB7IHJldHVybiAiZ2xvYmFsIjsgfQotfTsK
LUNPTVBJTEVfQVNTRVJUKCFJc0ludGVnZXI8R2xvYmFsT2JqZWN0Pjo6dmFsdWUsIFdURl9Jc0lu
dGVnZXJfR2xvYmFsT2JqZWN0X2ZhbHNlKTsKLUFTU0VSVF9DTEFTU19GSVRTX0lOX0NFTEwoR2xv
YmFsT2JqZWN0KTsKIAotR2xvYmFsT2JqZWN0OjpHbG9iYWxPYmplY3QoSlNHbG9iYWxEYXRhJiBn
bG9iYWxEYXRhLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgVmVjdG9yPFVTdHJpbmc+JiBh
cmd1bWVudHMpCi0gICAgOiBKU0dsb2JhbE9iamVjdChnbG9iYWxEYXRhLCBzdHJ1Y3R1cmUpCi17
Ci0gICAgcHV0RGlyZWN0RnVuY3Rpb24oZ2xvYmFsRXhlYygpLCBKU0Z1bmN0aW9uOjpjcmVhdGUo
Z2xvYmFsRXhlYygpLCB0aGlzLCBmdW5jdGlvblN0cnVjdHVyZSgpLCAxLCBJZGVudGlmaWVyKGds
b2JhbEV4ZWMoKSwgImRlYnVnIiksIGZ1bmN0aW9uRGVidWcpKTsKLSAgICBwdXREaXJlY3RGdW5j
dGlvbihnbG9iYWxFeGVjKCksIEpTRnVuY3Rpb246OmNyZWF0ZShnbG9iYWxFeGVjKCksIHRoaXMs
IGZ1bmN0aW9uU3RydWN0dXJlKCksIDEsIElkZW50aWZpZXIoZ2xvYmFsRXhlYygpLCAicHJpbnQi
KSwgZnVuY3Rpb25QcmludCkpOwotICAgIHB1dERpcmVjdEZ1bmN0aW9uKGdsb2JhbEV4ZWMoKSwg
SlNGdW5jdGlvbjo6Y3JlYXRlKGdsb2JhbEV4ZWMoKSwgdGhpcywgZnVuY3Rpb25TdHJ1Y3R1cmUo
KSwgMCwgSWRlbnRpZmllcihnbG9iYWxFeGVjKCksICJxdWl0IiksIGZ1bmN0aW9uUXVpdCkpOwot
ICAgIHB1dERpcmVjdEZ1bmN0aW9uKGdsb2JhbEV4ZWMoKSwgSlNGdW5jdGlvbjo6Y3JlYXRlKGds
b2JhbEV4ZWMoKSwgdGhpcywgZnVuY3Rpb25TdHJ1Y3R1cmUoKSwgMCwgSWRlbnRpZmllcihnbG9i
YWxFeGVjKCksICJnYyIpLCBmdW5jdGlvbkdDKSk7Citwcm90ZWN0ZWQ6CisgICAgdm9pZCBmaW5p
c2hBbGxvY2F0aW9ucyhjb25zdCBWZWN0b3I8VVN0cmluZz4mIGFyZ3VtZW50cykKKyAgICB7Cisg
ICAgICAgIHB1dERpcmVjdEZ1bmN0aW9uKGdsb2JhbEV4ZWMoKSwgSlNGdW5jdGlvbjo6Y3JlYXRl
KGdsb2JhbEV4ZWMoKSwgdGhpcywgZnVuY3Rpb25TdHJ1Y3R1cmUoKSwgMSwgSWRlbnRpZmllcihn
bG9iYWxFeGVjKCksICJkZWJ1ZyIpLCBmdW5jdGlvbkRlYnVnKSk7CisgICAgICAgIHB1dERpcmVj
dEZ1bmN0aW9uKGdsb2JhbEV4ZWMoKSwgSlNGdW5jdGlvbjo6Y3JlYXRlKGdsb2JhbEV4ZWMoKSwg
dGhpcywgZnVuY3Rpb25TdHJ1Y3R1cmUoKSwgMSwgSWRlbnRpZmllcihnbG9iYWxFeGVjKCksICJw
cmludCIpLCBmdW5jdGlvblByaW50KSk7CisgICAgICAgIHB1dERpcmVjdEZ1bmN0aW9uKGdsb2Jh
bEV4ZWMoKSwgSlNGdW5jdGlvbjo6Y3JlYXRlKGdsb2JhbEV4ZWMoKSwgdGhpcywgZnVuY3Rpb25T
dHJ1Y3R1cmUoKSwgMCwgSWRlbnRpZmllcihnbG9iYWxFeGVjKCksICJxdWl0IiksIGZ1bmN0aW9u
UXVpdCkpOworICAgICAgICBwdXREaXJlY3RGdW5jdGlvbihnbG9iYWxFeGVjKCksIEpTRnVuY3Rp
b246OmNyZWF0ZShnbG9iYWxFeGVjKCksIHRoaXMsIGZ1bmN0aW9uU3RydWN0dXJlKCksIDAsIElk
ZW50aWZpZXIoZ2xvYmFsRXhlYygpLCAiZ2MiKSwgZnVuY3Rpb25HQykpOwogI2lmbmRlZiBOREVC
VUcKLSAgICBwdXREaXJlY3RGdW5jdGlvbihnbG9iYWxFeGVjKCksIEpTRnVuY3Rpb246OmNyZWF0
ZShnbG9iYWxFeGVjKCksIHRoaXMsIGZ1bmN0aW9uU3RydWN0dXJlKCksIDAsIElkZW50aWZpZXIo
Z2xvYmFsRXhlYygpLCAicmVsZWFzZUV4ZWN1dGFibGVNZW1vcnkiKSwgZnVuY3Rpb25SZWxlYXNl
RXhlY3V0YWJsZU1lbW9yeSkpOworICAgICAgICBwdXREaXJlY3RGdW5jdGlvbihnbG9iYWxFeGVj
KCksIEpTRnVuY3Rpb246OmNyZWF0ZShnbG9iYWxFeGVjKCksIHRoaXMsIGZ1bmN0aW9uU3RydWN0
dXJlKCksIDAsIElkZW50aWZpZXIoZ2xvYmFsRXhlYygpLCAicmVsZWFzZUV4ZWN1dGFibGVNZW1v
cnkiKSwgZnVuY3Rpb25SZWxlYXNlRXhlY3V0YWJsZU1lbW9yeSkpOwogI2VuZGlmCi0gICAgcHV0
RGlyZWN0RnVuY3Rpb24oZ2xvYmFsRXhlYygpLCBKU0Z1bmN0aW9uOjpjcmVhdGUoZ2xvYmFsRXhl
YygpLCB0aGlzLCBmdW5jdGlvblN0cnVjdHVyZSgpLCAxLCBJZGVudGlmaWVyKGdsb2JhbEV4ZWMo
KSwgInZlcnNpb24iKSwgZnVuY3Rpb25WZXJzaW9uKSk7Ci0gICAgcHV0RGlyZWN0RnVuY3Rpb24o
Z2xvYmFsRXhlYygpLCBKU0Z1bmN0aW9uOjpjcmVhdGUoZ2xvYmFsRXhlYygpLCB0aGlzLCBmdW5j
dGlvblN0cnVjdHVyZSgpLCAxLCBJZGVudGlmaWVyKGdsb2JhbEV4ZWMoKSwgInJ1biIpLCBmdW5j
dGlvblJ1bikpOwotICAgIHB1dERpcmVjdEZ1bmN0aW9uKGdsb2JhbEV4ZWMoKSwgSlNGdW5jdGlv
bjo6Y3JlYXRlKGdsb2JhbEV4ZWMoKSwgdGhpcywgZnVuY3Rpb25TdHJ1Y3R1cmUoKSwgMSwgSWRl
bnRpZmllcihnbG9iYWxFeGVjKCksICJsb2FkIiksIGZ1bmN0aW9uTG9hZCkpOwotICAgIHB1dERp
cmVjdEZ1bmN0aW9uKGdsb2JhbEV4ZWMoKSwgSlNGdW5jdGlvbjo6Y3JlYXRlKGdsb2JhbEV4ZWMo
KSwgdGhpcywgZnVuY3Rpb25TdHJ1Y3R1cmUoKSwgMSwgSWRlbnRpZmllcihnbG9iYWxFeGVjKCks
ICJjaGVja1N5bnRheCIpLCBmdW5jdGlvbkNoZWNrU3ludGF4KSk7Ci0gICAgcHV0RGlyZWN0RnVu
Y3Rpb24oZ2xvYmFsRXhlYygpLCBKU0Z1bmN0aW9uOjpjcmVhdGUoZ2xvYmFsRXhlYygpLCB0aGlz
LCBmdW5jdGlvblN0cnVjdHVyZSgpLCAwLCBJZGVudGlmaWVyKGdsb2JhbEV4ZWMoKSwgInJlYWRs
aW5lIiksIGZ1bmN0aW9uUmVhZGxpbmUpKTsKLSAgICBwdXREaXJlY3RGdW5jdGlvbihnbG9iYWxF
eGVjKCksIEpTRnVuY3Rpb246OmNyZWF0ZShnbG9iYWxFeGVjKCksIHRoaXMsIGZ1bmN0aW9uU3Ry
dWN0dXJlKCksIDAsIElkZW50aWZpZXIoZ2xvYmFsRXhlYygpLCAicHJlY2lzZVRpbWUiKSwgZnVu
Y3Rpb25QcmVjaXNlVGltZSkpOworICAgICAgICBwdXREaXJlY3RGdW5jdGlvbihnbG9iYWxFeGVj
KCksIEpTRnVuY3Rpb246OmNyZWF0ZShnbG9iYWxFeGVjKCksIHRoaXMsIGZ1bmN0aW9uU3RydWN0
dXJlKCksIDEsIElkZW50aWZpZXIoZ2xvYmFsRXhlYygpLCAidmVyc2lvbiIpLCBmdW5jdGlvblZl
cnNpb24pKTsKKyAgICAgICAgcHV0RGlyZWN0RnVuY3Rpb24oZ2xvYmFsRXhlYygpLCBKU0Z1bmN0
aW9uOjpjcmVhdGUoZ2xvYmFsRXhlYygpLCB0aGlzLCBmdW5jdGlvblN0cnVjdHVyZSgpLCAxLCBJ
ZGVudGlmaWVyKGdsb2JhbEV4ZWMoKSwgInJ1biIpLCBmdW5jdGlvblJ1bikpOworICAgICAgICBw
dXREaXJlY3RGdW5jdGlvbihnbG9iYWxFeGVjKCksIEpTRnVuY3Rpb246OmNyZWF0ZShnbG9iYWxF
eGVjKCksIHRoaXMsIGZ1bmN0aW9uU3RydWN0dXJlKCksIDEsIElkZW50aWZpZXIoZ2xvYmFsRXhl
YygpLCAibG9hZCIpLCBmdW5jdGlvbkxvYWQpKTsKKyAgICAgICAgcHV0RGlyZWN0RnVuY3Rpb24o
Z2xvYmFsRXhlYygpLCBKU0Z1bmN0aW9uOjpjcmVhdGUoZ2xvYmFsRXhlYygpLCB0aGlzLCBmdW5j
dGlvblN0cnVjdHVyZSgpLCAxLCBJZGVudGlmaWVyKGdsb2JhbEV4ZWMoKSwgImNoZWNrU3ludGF4
IiksIGZ1bmN0aW9uQ2hlY2tTeW50YXgpKTsKKyAgICAgICAgcHV0RGlyZWN0RnVuY3Rpb24oZ2xv
YmFsRXhlYygpLCBKU0Z1bmN0aW9uOjpjcmVhdGUoZ2xvYmFsRXhlYygpLCB0aGlzLCBmdW5jdGlv
blN0cnVjdHVyZSgpLCAwLCBJZGVudGlmaWVyKGdsb2JhbEV4ZWMoKSwgInJlYWRsaW5lIiksIGZ1
bmN0aW9uUmVhZGxpbmUpKTsKKyAgICAgICAgcHV0RGlyZWN0RnVuY3Rpb24oZ2xvYmFsRXhlYygp
LCBKU0Z1bmN0aW9uOjpjcmVhdGUoZ2xvYmFsRXhlYygpLCB0aGlzLCBmdW5jdGlvblN0cnVjdHVy
ZSgpLCAwLCBJZGVudGlmaWVyKGdsb2JhbEV4ZWMoKSwgInByZWNpc2VUaW1lIiksIGZ1bmN0aW9u
UHJlY2lzZVRpbWUpKTsKIAogI2lmIEVOQUJMRShTQU1QTElOR19GTEFHUykKLSAgICBwdXREaXJl
Y3RGdW5jdGlvbihnbG9iYWxFeGVjKCksIEpTRnVuY3Rpb246OmNyZWF0ZShnbG9iYWxFeGVjKCks
IHRoaXMsIGZ1bmN0aW9uU3RydWN0dXJlKCksIDEsIElkZW50aWZpZXIoZ2xvYmFsRXhlYygpLCAi
c2V0U2FtcGxpbmdGbGFncyIpLCBmdW5jdGlvblNldFNhbXBsaW5nRmxhZ3MpKTsKLSAgICBwdXRE
aXJlY3RGdW5jdGlvbihnbG9iYWxFeGVjKCksIEpTRnVuY3Rpb246OmNyZWF0ZShnbG9iYWxFeGVj
KCksIHRoaXMsIGZ1bmN0aW9uU3RydWN0dXJlKCksIDEsIElkZW50aWZpZXIoZ2xvYmFsRXhlYygp
LCAiY2xlYXJTYW1wbGluZ0ZsYWdzIiksIGZ1bmN0aW9uQ2xlYXJTYW1wbGluZ0ZsYWdzKSk7Cisg
ICAgICAgIHB1dERpcmVjdEZ1bmN0aW9uKGdsb2JhbEV4ZWMoKSwgSlNGdW5jdGlvbjo6Y3JlYXRl
KGdsb2JhbEV4ZWMoKSwgdGhpcywgZnVuY3Rpb25TdHJ1Y3R1cmUoKSwgMSwgSWRlbnRpZmllcihn
bG9iYWxFeGVjKCksICJzZXRTYW1wbGluZ0ZsYWdzIiksIGZ1bmN0aW9uU2V0U2FtcGxpbmdGbGFn
cykpOworICAgICAgICBwdXREaXJlY3RGdW5jdGlvbihnbG9iYWxFeGVjKCksIEpTRnVuY3Rpb246
OmNyZWF0ZShnbG9iYWxFeGVjKCksIHRoaXMsIGZ1bmN0aW9uU3RydWN0dXJlKCksIDEsIElkZW50
aWZpZXIoZ2xvYmFsRXhlYygpLCAiY2xlYXJTYW1wbGluZ0ZsYWdzIiksIGZ1bmN0aW9uQ2xlYXJT
YW1wbGluZ0ZsYWdzKSk7CiAjZW5kaWYKIAotICAgIEpTT2JqZWN0KiBhcnJheSA9IGNvbnN0cnVj
dEVtcHR5QXJyYXkoZ2xvYmFsRXhlYygpKTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGFy
Z3VtZW50cy5zaXplKCk7ICsraSkKLSAgICAgICAgYXJyYXktPnB1dChnbG9iYWxFeGVjKCksIGks
IGpzU3RyaW5nKGdsb2JhbEV4ZWMoKSwgYXJndW1lbnRzW2ldKSk7Ci0gICAgcHV0RGlyZWN0KGds
b2JhbEV4ZWMoKS0+Z2xvYmFsRGF0YSgpLCBJZGVudGlmaWVyKGdsb2JhbEV4ZWMoKSwgImFyZ3Vt
ZW50cyIpLCBhcnJheSk7CisgICAgICAgIEpTT2JqZWN0KiBhcnJheSA9IGNvbnN0cnVjdEVtcHR5
QXJyYXkoZ2xvYmFsRXhlYygpKTsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBhcmd1
bWVudHMuc2l6ZSgpOyArK2kpCisgICAgICAgICAgICBhcnJheS0+cHV0KGdsb2JhbEV4ZWMoKSwg
aSwganNTdHJpbmcoZ2xvYmFsRXhlYygpLCBhcmd1bWVudHNbaV0pKTsKKyAgICAgICAgcHV0RGly
ZWN0KGdsb2JhbEV4ZWMoKS0+Z2xvYmFsRGF0YSgpLCBJZGVudGlmaWVyKGdsb2JhbEV4ZWMoKSwg
ImFyZ3VtZW50cyIpLCBhcnJheSk7CisgICAgfQorfTsKK0NPTVBJTEVfQVNTRVJUKCFJc0ludGVn
ZXI8R2xvYmFsT2JqZWN0Pjo6dmFsdWUsIFdURl9Jc0ludGVnZXJfR2xvYmFsT2JqZWN0X2ZhbHNl
KTsKK0FTU0VSVF9DTEFTU19GSVRTX0lOX0NFTEwoR2xvYmFsT2JqZWN0KTsKKworR2xvYmFsT2Jq
ZWN0OjpHbG9iYWxPYmplY3QoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSwgY29uc3QgVmVjdG9yPFVTdHJpbmc+JiBhcmd1bWVudHMpCisgICAgOiBKU0dsb2Jh
bE9iamVjdChnbG9iYWxEYXRhLCBzdHJ1Y3R1cmUpCit7CisgICAgZmluaXNoQWxsb2NhdGlvbnMo
YXJndW1lbnRzKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblBy
aW50KEV4ZWNTdGF0ZSogZXhlYykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0Vycm9ySW5zdGFuY2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
RXJyb3JJbnN0YW5jZS5jcHAKaW5kZXggMDQzNTM3MmYxMjYzOWJhYmQ2NDEwZGNmZTAzNDgxZmE5
MjIyZDlhYS4uYTFmOTFjZDY5OWUzNzdiOTNlYzY4ZTQyMGZiZDQyYzYyNmZmYjJlMCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JJbnN0YW5jZS5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JJbnN0YW5jZS5jcHAKQEAgLTMw
LDcgKzMwLDcgQEAgRXJyb3JJbnN0YW5jZTo6RXJyb3JJbnN0YW5jZShKU0dsb2JhbERhdGEmIGds
b2JhbERhdGEsIFN0cnVjdHVyZSogc3RydWN0dXJlKQogICAgICwgbV9hcHBlbmRTb3VyY2VUb01l
c3NhZ2UoZmFsc2UpCiB7CiAgICAgQVNTRVJUKGluaGVyaXRzKCZzX2luZm8pKTsKLSAgICBwdXRE
aXJlY3QoZ2xvYmFsRGF0YSwgZ2xvYmFsRGF0YS5wcm9wZXJ0eU5hbWVzLT5tZXNzYWdlLCBqc1N0
cmluZygmZ2xvYmFsRGF0YSwgIiIpLCBEb250RW51bSk7CisgICAgZmluaXNoQWxsb2NhdGlvbnMo
Z2xvYmFsRGF0YSk7CiB9CiAKIEVycm9ySW5zdGFuY2U6OkVycm9ySW5zdGFuY2UoSlNHbG9iYWxE
YXRhJiBnbG9iYWxEYXRhLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgVVN0cmluZyYgbWVz
c2FnZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9ySW5z
dGFuY2UuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9ySW5zdGFuY2UuaApp
bmRleCBkNjFlZTk3NWVjMTBkZmQ3ODQ3NzVlNzNiNWExODIxMWY4YzA5NDc4Li5iMzI5MDgyYjRm
ZTYzNDRhZDNjODM5NTdiN2YwODg4YmIxMDM2ODBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9FcnJvckluc3RhbmNlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvRXJyb3JJbnN0YW5jZS5oCkBAIC01MCw2ICs1MCwxMSBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICAgICAgZXhwbGljaXQgRXJyb3JJbnN0YW5jZShKU0dsb2JhbERhdGEmLCBTdHJ1
Y3R1cmUqKTsKICAgICAgICAgZXhwbGljaXQgRXJyb3JJbnN0YW5jZShKU0dsb2JhbERhdGEmLCBT
dHJ1Y3R1cmUqLCBjb25zdCBVU3RyaW5nJik7CiAKKyAgICAgICAgdm9pZCBmaW5pc2hBbGxvY2F0
aW9ucyhKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEpCisgICAgICAgIHsKKyAgICAgICAgICAgIHB1
dERpcmVjdChnbG9iYWxEYXRhLCBnbG9iYWxEYXRhLnByb3BlcnR5TmFtZXMtPm1lc3NhZ2UsIGpz
U3RyaW5nKCZnbG9iYWxEYXRhLCAiIiksIERvbnRFbnVtKTsKKyAgICAgICAgfQorCiAgICAgICAg
IGJvb2wgbV9hcHBlbmRTb3VyY2VUb01lc3NhZ2U7CiAgICAgfTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JQcm90b3R5cGUuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JQcm90b3R5cGUuY3BwCmluZGV4IDNhNjlkZDkwZTIy
ZjQ5Y2U4YWUwNjNiMWZmZTk0YjY2MTkyZjQxNGUuLjg5YTNmNDA5ZGU0M2JmMjkwMGUzMjYxODM2
YmVhOTk0YTMxZmExM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0Vycm9yUHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9F
cnJvclByb3RvdHlwZS5jcHAKQEAgLTUzLDkgKzUzLDggQEAgQVNTRVJUX0NMQVNTX0ZJVFNfSU5f
Q0VMTChFcnJvclByb3RvdHlwZSk7CiBFcnJvclByb3RvdHlwZTo6RXJyb3JQcm90b3R5cGUoRXhl
Y1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSkKICAgICA6IEVycm9ySW5zdGFuY2UoZXhlYy0+Z2xvYmFsRGF0YSgpLCBzdHJ1Y3R1
cmUpCiB7Ci0gICAgcHV0RGlyZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+cHJvcGVydHlO
YW1lcygpLm5hbWUsIGpzTm9udHJpdmlhbFN0cmluZyhleGVjLCAiRXJyb3IiKSwgRG9udEVudW0p
OwotCiAgICAgQVNTRVJUKGluaGVyaXRzKCZzX2luZm8pKTsKKyAgICBmaW5pc2hBbGxvY2F0aW9u
cyhleGVjKTsKICAgICBwdXRBbm9ueW1vdXNWYWx1ZShnbG9iYWxPYmplY3QtPmdsb2JhbERhdGEo
KSwgMCwgZ2xvYmFsT2JqZWN0KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvRXJyb3JQcm90b3R5cGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0Vycm9yUHJvdG90eXBlLmgKaW5kZXggNDA1MjgzNjFhYmIyMTJhM2I0NjY1YmE0NDFmMmEy
MDUxYThlMGEyZS4uZDQ4Y2Q3NDUyMTY5Njk0NGFhNzA3YWIwOTYxMDdiYzhiYjM1MzI5OCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JQcm90b3R5cGUuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvclByb3RvdHlwZS5oCkBAIC00
NSw2ICs0NSwxMSBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIHByb3RlY3RlZDoKICAgICAgICAg
RXJyb3JQcm90b3R5cGUoRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqKTsK
KyAgICAgICAgdm9pZCBmaW5pc2hBbGxvY2F0aW9ucyhFeGVjU3RhdGUqIGV4ZWMpCisgICAgICAg
IHsKKyAgICAgICAgICAgIHB1dERpcmVjdChleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPnByb3Bl
cnR5TmFtZXMoKS5uYW1lLCBqc05vbnRyaXZpYWxTdHJpbmcoZXhlYywgIkVycm9yIiksIERvbnRF
bnVtKTsKKyAgICAgICAgfQorCiAgICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1
cmVGbGFncyA9IE92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8IEVycm9ySW5zdGFuY2U6OlN0
cnVjdHVyZUZsYWdzOwogICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgQW5vbnltb3VzU2xv
dENvdW50ID0gRXJyb3JJbnN0YW5jZTo6QW5vbnltb3VzU2xvdENvdW50ICsgMTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmNwcAppbmRleCA2NzdhODliZjM3
NTQzOGJlOTQwMDA0YzUyZmVlMDdkM2E4YjgwZGU2Li43MjdmOGIxNmQxMGY4OGJjMTA4OTg5OTFi
NjlmMTgwYTYwMmQ2OTJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9FeGVjdXRhYmxlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVj
dXRhYmxlLmNwcApAQCAtMTQ0LDcgKzE0NCw3IEBAIEZ1bmN0aW9uRXhlY3V0YWJsZTo6RnVuY3Rp
b25FeGVjdXRhYmxlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgY29uc3QgSWRlbnRpZmllCiB7
CiAgICAgbV9maXJzdExpbmUgPSBmaXJzdExpbmU7CiAgICAgbV9sYXN0TGluZSA9IGxhc3RMaW5l
OwotICAgIG1fbmFtZVZhbHVlLnNldChnbG9iYWxEYXRhLCB0aGlzLCBqc1N0cmluZygmZ2xvYmFs
RGF0YSwgbmFtZS51c3RyaW5nKCkpKTsKKyAgICBmaW5pc2hBbGxvY2F0aW9ucyhnbG9iYWxEYXRh
LCBuYW1lKTsKIH0KIAogRnVuY3Rpb25FeGVjdXRhYmxlOjpGdW5jdGlvbkV4ZWN1dGFibGUoRXhl
Y1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBuYW1lLCBjb25zdCBTb3VyY2VDb2RlJiBz
b3VyY2UsIGJvb2wgZm9yY2VVc2VzQXJndW1lbnRzLCBGdW5jdGlvblBhcmFtZXRlcnMqIHBhcmFt
ZXRlcnMsIGJvb2wgaW5TdHJpY3RDb250ZXh0LCBpbnQgZmlyc3RMaW5lLCBpbnQgbGFzdExpbmUp
CkBAIC0xNTcsNyArMTU3LDcgQEAgRnVuY3Rpb25FeGVjdXRhYmxlOjpGdW5jdGlvbkV4ZWN1dGFi
bGUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBuYW1lLAogewogICAgIG1fZmly
c3RMaW5lID0gZmlyc3RMaW5lOwogICAgIG1fbGFzdExpbmUgPSBsYXN0TGluZTsKLSAgICBtX25h
bWVWYWx1ZS5zZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCB0aGlzLCBqc1N0cmluZygmZXhlYy0+Z2xv
YmFsRGF0YSgpLCBuYW1lLnVzdHJpbmcoKSkpOworICAgIGZpbmlzaEFsbG9jYXRpb25zKGV4ZWMt
Pmdsb2JhbERhdGEoKSwgbmFtZSk7CiB9CiAKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvRXhlY3V0YWJsZS5oCmluZGV4IGJhYjMyYjI5ODc1Y2RiNGE5NTYxMzdiMDczN2QyMjlhODcx
YWE2ZDkuLjllOGYzYjQ0OGJmZTUwYzhhODU2YWQ0Yzg3Y2EzYmM2ZmVlYmE5YjQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmgKQEAgLTUwNCw2ICs1MDQsMTIg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIAogICAgICAgICBzdGF0aWMgY29uc3QgQ2xhc3NJ
bmZvIHNfaW5mbzsKIAorICAgIHByb3RlY3RlZDoKKyAgICAgICAgdm9pZCBmaW5pc2hBbGxvY2F0
aW9ucyhKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIGNvbnN0IElkZW50aWZpZXImIG5hbWUpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIG1fbmFtZVZhbHVlLnNldChnbG9iYWxEYXRhLCB0aGlzLCBq
c1N0cmluZygmZ2xvYmFsRGF0YSwgbmFtZS51c3RyaW5nKCkpKTsKKyAgICAgICAgfQorCiAgICAg
cHJpdmF0ZToKICAgICAgICAgRnVuY3Rpb25FeGVjdXRhYmxlKEpTR2xvYmFsRGF0YSYsIGNvbnN0
IElkZW50aWZpZXImIG5hbWUsIGNvbnN0IFNvdXJjZUNvZGUmLCBib29sIGZvcmNlVXNlc0FyZ3Vt
ZW50cywgRnVuY3Rpb25QYXJhbWV0ZXJzKiwgYm9vbCwgaW50IGZpcnN0TGluZSwgaW50IGxhc3RM
aW5lKTsKICAgICAgICAgRnVuY3Rpb25FeGVjdXRhYmxlKEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50
aWZpZXImIG5hbWUsIGNvbnN0IFNvdXJjZUNvZGUmLCBib29sIGZvcmNlVXNlc0FyZ3VtZW50cywg
RnVuY3Rpb25QYXJhbWV0ZXJzKiwgYm9vbCwgaW50IGZpcnN0TGluZSwgaW50IGxhc3RMaW5lKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0luaXRpYWxpemVUaHJl
YWRpbmcuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW5pdGlhbGl6ZVRocmVh
ZGluZy5jcHAKaW5kZXggNzE2NTQyMWY5NWFlZjlmOGIwOWU5MDI0ZjA3MGFjMDVmMzY2Mjg1ZS4u
YzI5NjNlOGNlNjZlZmRhZTI2YzUzOGQ2M2NlOTZjZTI5YzZiNzBlYiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW5pdGlhbGl6ZVRocmVhZGluZy5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW5pdGlhbGl6ZVRocmVhZGluZy5jcHAKQEAg
LTMxLDYgKzMxLDcgQEAKIAogI2luY2x1ZGUgIkhlYXAuaCIKICNpbmNsdWRlICJkdG9hLmgiCisj
aW5jbHVkZSA8d3RmL2R0b2EvY2FjaGVkLXBvd2Vycy5oPgogI2luY2x1ZGUgIklkZW50aWZpZXIu
aCIKICNpbmNsdWRlICJKU0dsb2JhbE9iamVjdC5oIgogI2luY2x1ZGUgIlVTdHJpbmcuaCIKQEAg
LTQ3LDYgKzQ4LDcgQEAgc3RhdGljIHB0aHJlYWRfb25jZV90IGluaXRpYWxpemVUaHJlYWRpbmdL
ZXlPbmNlID0gUFRIUkVBRF9PTkNFX0lOSVQ7CiAKIHN0YXRpYyB2b2lkIGluaXRpYWxpemVUaHJl
YWRpbmdPbmNlKCkKIHsKKyAgICAKICAgICBXVEY6OmluaXRpYWxpemVUaHJlYWRpbmcoKTsKICAg
ICBKU0dsb2JhbERhdGE6OnN0b3JlVlB0cnMoKTsKICNpZiBFTkFCTEUoSlNDX01VTFRJUExFX1RI
UkVBRFMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRlcm5h
bEZ1bmN0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGVybmFsRnVu
Y3Rpb24uY3BwCmluZGV4IGMzYjA3ZjgyOTcwMjhlOTZmMmZmNTAzZDk1MTc4ZjFjY2Y5OGY2YWUu
LjcwYTA2MjBhM2FmZTRhYjlkMzlmM2E0NjA5YWRiZjdiMWJkYjFiYmQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGVybmFsRnVuY3Rpb24uY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGVybmFsRnVuY3Rpb24uY3BwCkBAIC00NSw3
ICs0NSw3IEBAIEludGVybmFsRnVuY3Rpb246OkludGVybmFsRnVuY3Rpb24oSlNHbG9iYWxEYXRh
KiBnbG9iYWxEYXRhLCBKU0dsb2JhbE9iamVjdCogZ2xvCiAgICAgOiBKU09iamVjdFdpdGhHbG9i
YWxPYmplY3QoZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpCiB7CiAgICAgQVNTRVJUKGluaGVyaXRz
KCZzX2luZm8pKTsKLSAgICBwdXREaXJlY3QoKmdsb2JhbERhdGEsIGdsb2JhbERhdGEtPnByb3Bl
cnR5TmFtZXMtPm5hbWUsIGpzU3RyaW5nKGdsb2JhbERhdGEsIG5hbWUuaXNOdWxsKCkgPyAiIiA6
IG5hbWUudXN0cmluZygpKSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5IHwgRG9udEVudW0pOworICAg
IGZpbmlzaEFsbG9jYXRpb25zKCpnbG9iYWxEYXRhLCBuYW1lKTsKIH0KIAogY29uc3QgVVN0cmlu
ZyYgSW50ZXJuYWxGdW5jdGlvbjo6bmFtZShFeGVjU3RhdGUqIGV4ZWMpCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRlcm5hbEZ1bmN0aW9uLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRlcm5hbEZ1bmN0aW9uLmgKaW5kZXggODMyNDNiM2Zk
ZmY2ZDRjZjhiZjM0ZmMxNzQ1ZGY1NjViOWY0ZjdkZi4uMTI5OWEzYmZmMWU3Nzk2M2I5YjQ5YzMx
ZDQ1Y2FmODk1MDAyYTBmZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSW50ZXJuYWxGdW5jdGlvbi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0ludGVybmFsRnVuY3Rpb24uaApAQCAtNTQsNiArNTQsMTEgQEAgbmFtZXNwYWNlIEpTQyB7CiAK
ICAgICAgICAgSW50ZXJuYWxGdW5jdGlvbihKU0dsb2JhbERhdGEqLCBKU0dsb2JhbE9iamVjdCos
IFN0cnVjdHVyZSosIGNvbnN0IElkZW50aWZpZXImKTsKIAorICAgICAgICB2b2lkIGZpbmlzaEFs
bG9jYXRpb25zKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgY29uc3QgSWRlbnRpZmllciYgbmFt
ZSkKKyAgICAgICAgeworICAgICAgICAgICAgcHV0RGlyZWN0KGdsb2JhbERhdGEsIGdsb2JhbERh
dGEucHJvcGVydHlOYW1lcy0+bmFtZSwganNTdHJpbmcoJmdsb2JhbERhdGEsIG5hbWUuaXNOdWxs
KCkgPyAiIiA6IG5hbWUudXN0cmluZygpKSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5IHwgRG9udEVu
dW0pOworICAgICAgICB9CisKICAgICBwcml2YXRlOgogICAgICAgICB2aXJ0dWFsIENhbGxUeXBl
IGdldENhbGxEYXRhKENhbGxEYXRhJikgPSAwOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0J5dGVBcnJheS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0J5dGVBcnJheS5jcHAKaW5kZXggZDkyNGE3YTFiMzg4Y2I1YzUxMmI5OGQzMzFk
NWM1MDQ2N2ZhOWU0NC4uMDBkZDhjZmQ2ZTkyZTkyMjgzMTJmMjUwOWRlZTE5OGI0NzNjM2UwNSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCeXRlQXJyYXkuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQnl0ZUFycmF5LmNwcApAQCAt
MzksNyArMzksNyBAQCBKU0J5dGVBcnJheTo6SlNCeXRlQXJyYXkoRXhlY1N0YXRlKiBleGVjLCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSwgQnl0ZUFycmF5KiBzdG9yYQogICAgIDogSlNOb25GaW5hbE9i
amVjdChleGVjLT5nbG9iYWxEYXRhKCksIHN0cnVjdHVyZSkKICAgICAsIG1fc3RvcmFnZShzdG9y
YWdlKQogewotICAgIHB1dERpcmVjdChleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPmdsb2JhbERh
dGEoKS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVyKG1fc3RvcmFnZS0+bGVuZ3RoKCkp
LCBSZWFkT25seSB8IERvbnREZWxldGUpOworICAgIGZpbmlzaEFsbG9jYXRpb25zKGV4ZWMpOwog
fQogICAgICAgICAKIEpTQnl0ZUFycmF5KiBKU0J5dGVBcnJheTo6Y3JlYXRlKEV4ZWNTdGF0ZSog
ZXhlYywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEJ5dGVBcnJheSogc3RvcmFnZSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQnl0ZUFycmF5LmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0J5dGVBcnJheS5oCmluZGV4IDg2OTE1NjliNTJmNjFl
ZjU3MjgwMjc4NmFlMjc5ODEzODQwNTAzYTQuLjEzZDc0N2RkOGU4MzAyYjRmZjc0NjlkMWZkNjQ1
YjNlY2M4NjQ2ODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
Qnl0ZUFycmF5LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCeXRlQXJy
YXkuaApAQCAtMTA0LDYgKzEwNCwxMSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBwcm90ZWN0ZWQ6
CiAgICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IE92ZXJyaWRl
c0dldE93blByb3BlcnR5U2xvdCB8IE92ZXJyaWRlc0dldFByb3BlcnR5TmFtZXMgfCBKU09iamVj
dDo6U3RydWN0dXJlRmxhZ3M7CiAKKyAgICAgICAgdm9pZCBmaW5pc2hBbGxvY2F0aW9ucyhFeGVj
U3RhdGUqIGV4ZWMpCisgICAgICAgIHsKKyAgICAgICAgICAgIHB1dERpcmVjdChleGVjLT5nbG9i
YWxEYXRhKCksIGV4ZWMtPmdsb2JhbERhdGEoKS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVt
YmVyKG1fc3RvcmFnZS0+bGVuZ3RoKCkpLCBSZWFkT25seSB8IERvbnREZWxldGUpOworICAgICAg
ICB9CisKICAgICBwcml2YXRlOgogICAgICAgICBKU0J5dGVBcnJheShWUHRyU3RlYWxpbmdIYWNr
VHlwZSkKICAgICAgICAgICAgIDogSlNOb25GaW5hbE9iamVjdChWUHRyU3RlYWxpbmdIYWNrKQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcAppbmRleCAxM2Yx
ZWFiNTIxZGVkNWFkYWMxYzcyOTA4MDY3MzRiNjQwMmIwYTRmLi5kOWI0M2ZjNDMzYTNhOTUyOGRk
YWY0MzcxNzgyZjBhY2IyMjliYjE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0Z1bmN0aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0Z1bmN0aW9uLmNwcApAQCAtNjMsMjUgKzYzLDIzIEBAIEpTRnVuY3Rpb246OkpTRnVuY3Rp
b24oVlB0clN0ZWFsaW5nSGFja1R5cGUpCiAKIEpTRnVuY3Rpb246OkpTRnVuY3Rpb24oRXhlY1N0
YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSwgaW50IGxlbmd0aCwgY29uc3QgSWRlbnRpZmllciYgbmFtZSwgTmF0aXZlRXhlY3V0YWJs
ZSogdGh1bmspCiAgICAgOiBCYXNlKGdsb2JhbE9iamVjdCwgc3RydWN0dXJlKQotICAgICwgbV9l
eGVjdXRhYmxlKGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhpcywgdGh1bmspCisgICAgLCBtX2V4ZWN1
dGFibGUoKQogICAgICwgbV9zY29wZUNoYWluKGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhpcywgZ2xv
YmFsT2JqZWN0LT5nbG9iYWxTY29wZUNoYWluKCkpCiB7CiAgICAgQVNTRVJUKGluaGVyaXRzKCZz
X2luZm8pKTsKLSAgICBwdXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5nbG9iYWxE
YXRhKCkucHJvcGVydHlOYW1lcy0+bmFtZSwganNTdHJpbmcoZXhlYywgbmFtZS5pc051bGwoKSA/
ICIiIDogbmFtZS51c3RyaW5nKCkpLCBEb250RGVsZXRlIHwgUmVhZE9ubHkgfCBEb250RW51bSk7
Ci0gICAgcHV0RGlyZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+cHJvcGVydHlOYW1lcygp
Lmxlbmd0aCwganNOdW1iZXIobGVuZ3RoKSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5IHwgRG9udEVu
dW0pOworCisgICAgZmluaXNoQWxsb2NhdGlvbnMoZXhlYywgbGVuZ3RoLCBuYW1lLCB0aHVuayk7
CiB9CiAKIEpTRnVuY3Rpb246OkpTRnVuY3Rpb24oRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgaW50IGxlbmd0aCwgY29u
c3QgSWRlbnRpZmllciYgbmFtZSwgTmF0aXZlRnVuY3Rpb24gZnVuYykKICAgICA6IEJhc2UoZ2xv
YmFsT2JqZWN0LCBzdHJ1Y3R1cmUpCisgICAgLCBtX2V4ZWN1dGFibGUoKQogICAgICwgbV9zY29w
ZUNoYWluKGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhpcywgZ2xvYmFsT2JqZWN0LT5nbG9iYWxTY29w
ZUNoYWluKCkpCiB7CiAgICAgQVNTRVJUKGluaGVyaXRzKCZzX2luZm8pKTsKICAgICAKICAgICAv
LyBDYW4ndCBkbyB0aGlzIGR1cmluZyBpbml0aWFsaXphdGlvbiBiZWNhdXNlIGdldEhvc3RGdW5j
dGlvbiBtaWdodCBkbyBhIEdDIGFsbG9jYXRpb24uCi0gICAgbV9leGVjdXRhYmxlLnNldChleGVj
LT5nbG9iYWxEYXRhKCksIHRoaXMsIGV4ZWMtPmdsb2JhbERhdGEoKS5nZXRIb3N0RnVuY3Rpb24o
ZnVuYykpOwotICAgIAotICAgIHB1dERpcmVjdChleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPmds
b2JhbERhdGEoKS5wcm9wZXJ0eU5hbWVzLT5uYW1lLCBqc1N0cmluZyhleGVjLCBuYW1lLmlzTnVs
bCgpID8gIiIgOiBuYW1lLnVzdHJpbmcoKSksIERvbnREZWxldGUgfCBSZWFkT25seSB8IERvbnRF
bnVtKTsKLSAgICBwdXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5h
bWVzKCkubGVuZ3RoLCBqc051bWJlcihsZW5ndGgpLCBEb250RGVsZXRlIHwgUmVhZE9ubHkgfCBE
b250RW51bSk7CisgICAgZmluaXNoQWxsb2NhdGlvbnMoZXhlYywgbGVuZ3RoLCBuYW1lLCAgZXhl
Yy0+Z2xvYmFsRGF0YSgpLmdldEhvc3RGdW5jdGlvbihmdW5jKSk7CiB9CiAKIEpTRnVuY3Rpb246
OkpTRnVuY3Rpb24oRXhlY1N0YXRlKiBleGVjLCBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFi
bGUsIFNjb3BlQ2hhaW5Ob2RlKiBzY29wZUNoYWluTm9kZSkKQEAgLTk0LDYgKzkyLDEzIEBAIEpT
RnVuY3Rpb246OkpTRnVuY3Rpb24oRXhlY1N0YXRlKiBleGVjLCBGdW5jdGlvbkV4ZWN1dGFibGUq
IGV4ZWN1dGFibGUsIFNjb3BlQ2hhCiAgICAgcHV0RGlyZWN0T2Zmc2V0KGV4ZWMtPmdsb2JhbERh
dGEoKSwgc2NvcGVDaGFpbk5vZGUtPmdsb2JhbE9iamVjdC0+ZnVuY3Rpb25OYW1lT2Zmc2V0KCks
IGV4ZWN1dGFibGUtPm5hbWVWYWx1ZSgpKTsKIH0KIAoraW5saW5lIHZvaWQgSlNGdW5jdGlvbjo6
ZmluaXNoQWxsb2NhdGlvbnMoRXhlY1N0YXRlKiBleGVjLCBpbnQgbGVuZ3RoLCBjb25zdCBJZGVu
dGlmaWVyJiBuYW1lLCBFeGVjdXRhYmxlQmFzZSogZXhlY3V0YWJsZSkKK3sKKyAgICBtX2V4ZWN1
dGFibGUuc2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhpcywgZXhlY3V0YWJsZSk7CisgICAgcHV0
RGlyZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+Z2xvYmFsRGF0YSgpLnByb3BlcnR5TmFt
ZXMtPm5hbWUsIGpzU3RyaW5nKGV4ZWMsIG5hbWUuaXNOdWxsKCkgPyAiIiA6IG5hbWUudXN0cmlu
ZygpKSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5IHwgRG9udEVudW0pOworICAgIHB1dERpcmVjdChl
eGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5ndGgsIGpzTnVtYmVy
KGxlbmd0aCksIERvbnREZWxldGUgfCBSZWFkT25seSB8IERvbnRFbnVtKTsKK30KKwogSlNGdW5j
dGlvbjo6fkpTRnVuY3Rpb24oKQogewogICAgIEFTU0VSVCh2cHRyKCkgPT0gSlNHbG9iYWxEYXRh
Ojpqc0Z1bmN0aW9uVlB0cik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0Z1bmN0aW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0
aW9uLmgKaW5kZXggMjljYmZkMGY0ZjZhZTIyNzQ4NmRiMDI1NjZjNDkyNTRkNzQyMmRiNC4uMjUz
MjUzNTFiMmFkMGQ1NzEwMjJkNmQ4ZWUwM2NlNTIxYmQ1ZDMzYiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uaApAQCAtMTIzLDYgKzEyMyw4IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgIHByb3RlY3RlZDoKICAgICAgICAgY29uc3Qgc3RhdGljIHVuc2lnbmVkIFN0
cnVjdHVyZUZsYWdzID0gT3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwgSW1wbGVtZW50c0hh
c0luc3RhbmNlIHwgT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbiB8IE92ZXJyaWRlc0dldFByb3BlcnR5
TmFtZXMgfCBKU09iamVjdDo6U3RydWN0dXJlRmxhZ3M7CiAKKyAgICAgICAgdm9pZCBmaW5pc2hB
bGxvY2F0aW9ucyhFeGVjU3RhdGUqLCBpbnQgbGVuZ3RoLCBjb25zdCBJZGVudGlmaWVyJiBuYW1l
LCBFeGVjdXRhYmxlQmFzZSopOworCiAgICAgcHJpdmF0ZToKICAgICAgICAgZXhwbGljaXQgSlNG
dW5jdGlvbihWUHRyU3RlYWxpbmdIYWNrVHlwZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCmluZGV4IDU5Y2FkNTBhYzM0YWU5ZGM3MGM0NmYw
MDE4MjA0MzgwMGQ4ZGU3ZTQuLjFmYmYwYTY5ZTc3Yjc5NzQwMDgxMWEyYWFmMDExOGY0N2ExODBj
MTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2Jq
ZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3Qu
aApAQCAtMTYxLDcgKzE2MSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB7CiAgICAgICAg
ICAgICBDT01QSUxFX0FTU0VSVChKU0dsb2JhbE9iamVjdDo6QW5vbnltb3VzU2xvdENvdW50ID09
IDEsIEpTR2xvYmFsT2JqZWN0X2hhc19vbmx5X2Ffc2luZ2xlX3Nsb3QpOwogICAgICAgICAgICAg
cHV0VGhpc1RvQW5vbnltb3VzVmFsdWUoMCk7Ci0gICAgICAgICAgICBpbml0KHRoaXMpOworICAg
ICAgICAgICAgZmluaXNoQWxsb2NhdGlvbnModGhpcyk7CiAgICAgICAgIH0KIAogICAgICAgICBK
U0dsb2JhbE9iamVjdChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFN0cnVjdHVyZSogc3RydWN0
dXJlLCBKU09iamVjdCogdGhpc1ZhbHVlKQpAQCAtMTczLDYgKzE3MywxMSBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICAgICAgewogICAgICAgICAgICAgQ09NUElMRV9BU1NFUlQoSlNHbG9iYWxPYmpl
Y3Q6OkFub255bW91c1Nsb3RDb3VudCA9PSAxLCBKU0dsb2JhbE9iamVjdF9oYXNfb25seV9hX3Np
bmdsZV9zbG90KTsKICAgICAgICAgICAgIHB1dFRoaXNUb0Fub255bW91c1ZhbHVlKDApOworICAg
ICAgICAgICAgZmluaXNoQWxsb2NhdGlvbnModGhpc1ZhbHVlKTsKKyAgICAgICAgfQorCisgICAg
ICAgIHZvaWQgZmluaXNoQWxsb2NhdGlvbnMoSlNPYmplY3QqIHRoaXNWYWx1ZSkKKyAgICAgICAg
ewogICAgICAgICAgICAgaW5pdCh0aGlzVmFsdWUpOwogICAgICAgICB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5j
cHAKaW5kZXggODAxMmU5ZGQxMTU2YTc2ODhhZDIwZGMxMTU5OWYyYTJkNTJkOGY4Mi4uYjJjMTM2
NzliZThlNjRlZWYwZTlmZTMyNGZkY2ZlZWMxY2ZkNmIyZiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5jcHAKQEAg
LTQzLDkgKzQzLDcgQEAgaW5saW5lIEpTUHJvcGVydHlOYW1lSXRlcmF0b3I6OkpTUHJvcGVydHlO
YW1lSXRlcmF0b3IoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU4KICAgICAsIG1fanNTdHJpbmdz
U2l6ZShwcm9wZXJ0eU5hbWVBcnJheURhdGEtPnByb3BlcnR5TmFtZVZlY3RvcigpLnNpemUoKSkK
ICAgICAsIG1fanNTdHJpbmdzKGFkb3B0QXJyYXlQdHIobmV3IFdyaXRlQmFycmllcjxVbmtub3du
PlttX2pzU3RyaW5nc1NpemVdKSkKIHsKLSAgICBQcm9wZXJ0eU5hbWVBcnJheURhdGE6OlByb3Bl
cnR5TmFtZVZlY3RvciYgcHJvcGVydHlOYW1lVmVjdG9yID0gcHJvcGVydHlOYW1lQXJyYXlEYXRh
LT5wcm9wZXJ0eU5hbWVWZWN0b3IoKTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fanNT
dHJpbmdzU2l6ZTsgKytpKQotICAgICAgICBtX2pzU3RyaW5nc1tpXS5zZXQoZXhlYy0+Z2xvYmFs
RGF0YSgpLCB0aGlzLCBqc093bmVkU3RyaW5nKGV4ZWMsIHByb3BlcnR5TmFtZVZlY3RvcltpXS51
c3RyaW5nKCkpKTsKKyAgICBmaW5pc2hBbGxvY2F0aW9ucyhleGVjLCBwcm9wZXJ0eU5hbWVBcnJh
eURhdGEpOwogfQogCiBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yKiBKU1Byb3BlcnR5TmFtZUl0ZXJh
dG9yOjpjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogbykKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuaAppbmRl
eCBkMmI2MTFkZjZiMzIwYjA5Y2E1M2VhOGI3ODkwMWI1NmUwYmZlZmI3Li44NmVkYzc0MjBjYTE5
Y2UxNjdlMDZhZjMwYjg4MGY3NDcwNzQ0ZTI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oCkBAIC04NCw2ICs4NCwx
NCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgCiAgICAgICAgIHN0YXRpYyBjb25zdCBDbGFz
c0luZm8gc19pbmZvOwogCisgICAgcHJvdGVjdGVkOgorICAgICAgICB2b2lkIGZpbmlzaEFsbG9j
YXRpb25zKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lQXJyYXlEYXRhKiBwcm9wZXJ0eU5h
bWVBcnJheURhdGEpCisgICAgICAgIHsKKyAgICAgICAgICAgIFByb3BlcnR5TmFtZUFycmF5RGF0
YTo6UHJvcGVydHlOYW1lVmVjdG9yJiBwcm9wZXJ0eU5hbWVWZWN0b3IgPSBwcm9wZXJ0eU5hbWVB
cnJheURhdGEtPnByb3BlcnR5TmFtZVZlY3RvcigpOworICAgICAgICAgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBtX2pzU3RyaW5nc1NpemU7ICsraSkKKyAgICAgICAgICAgICAgICBtX2pzU3Ry
aW5nc1tpXS5zZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCB0aGlzLCBqc093bmVkU3RyaW5nKGV4ZWMs
IHByb3BlcnR5TmFtZVZlY3RvcltpXS51c3RyaW5nKCkpKTsKKyAgICAgICAgfQorCiAgICAgcHJp
dmF0ZToKICAgICAgICAgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcihFeGVjU3RhdGUqLCBQcm9wZXJ0
eU5hbWVBcnJheURhdGEqIHByb3BlcnR5TmFtZUFycmF5RGF0YSwgc2l6ZV90IG51bUNhY2hlYWJs
ZVNsb3QpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0
cmluZy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaAppbmRleCAz
MTcxMTc1NzYxZjNlOGI3NjU3OGZkY2E0ZDBmNGQ1MzNjMDMyZWYyLi5hYjNlZGQ1NjJjN2NmNDJh
ZmI2Y2IyYzIyYjAxYjc4NTFlMWQwZmJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU1N0cmluZy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTU3RyaW5nLmgKQEAgLTI2NywxMSArMjY3LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
ICAgICAsIG1fbGVuZ3RoKDApCiAgICAgICAgICAgICAsIG1fZmliZXJDb3VudChzX21heEludGVy
bmFsUm9wZUxlbmd0aCkKICAgICAgICAgewotICAgICAgICAgICAgdW5zaWduZWQgaW5kZXggPSAw
OwotICAgICAgICAgICAgYXBwZW5kVmFsdWVJbkNvbnN0cnVjdEFuZEluY3JlbWVudExlbmd0aChl
eGVjLCBpbmRleCwgdjEpOwotICAgICAgICAgICAgYXBwZW5kVmFsdWVJbkNvbnN0cnVjdEFuZElu
Y3JlbWVudExlbmd0aChleGVjLCBpbmRleCwgdjIpOwotICAgICAgICAgICAgYXBwZW5kVmFsdWVJ
bkNvbnN0cnVjdEFuZEluY3JlbWVudExlbmd0aChleGVjLCBpbmRleCwgdjMpOwotICAgICAgICAg
ICAgQVNTRVJUKGluZGV4ID09IHNfbWF4SW50ZXJuYWxSb3BlTGVuZ3RoKTsKKyAgICAgICAgICAg
IGZpbmlzaEFsbG9jYXRpb25zKGV4ZWMsIHYxLCB2MiwgdjMpOwogICAgICAgICB9CiAKICAgICAg
ICAgLy8gVGhpcyBjb25zdHJ1Y3RvciBjb25zdHJ1Y3RzIGEgbmV3IHN0cmluZyBieSBjb25jYXRl
bmF0aW5nIHUxICYgdTIuCkBAIC0yOTksNiArMjk1LDE2IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
ICAgICAgICAgQVNTRVJUKGluZGV4IDw9IHNfbWF4SW50ZXJuYWxSb3BlTGVuZ3RoKTsKICAgICAg
ICAgfQogCisgICAgcHJvdGVjdGVkOgorICAgICAgICB2b2lkIGZpbmlzaEFsbG9jYXRpb25zKEV4
ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2MSwgSlNWYWx1ZSB2MiwgSlNWYWx1ZSB2MykKKyAgICAg
ICAgeworICAgICAgICAgICAgdW5zaWduZWQgaW5kZXggPSAwOworICAgICAgICAgICAgYXBwZW5k
VmFsdWVJbkNvbnN0cnVjdEFuZEluY3JlbWVudExlbmd0aChleGVjLCBpbmRleCwgdjEpOworICAg
ICAgICAgICAgYXBwZW5kVmFsdWVJbkNvbnN0cnVjdEFuZEluY3JlbWVudExlbmd0aChleGVjLCBp
bmRleCwgdjIpOworICAgICAgICAgICAgYXBwZW5kVmFsdWVJbkNvbnN0cnVjdEFuZEluY3JlbWVu
dExlbmd0aChleGVjLCBpbmRleCwgdjMpOworICAgICAgICAgICAgQVNTRVJUKGluZGV4ID09IHNf
bWF4SW50ZXJuYWxSb3BlTGVuZ3RoKTsKKyAgICAgICAgfQorCiAgICAgcHVibGljOgogICAgICAg
ICBzdGF0aWMgSlNTdHJpbmcqIGNyZWF0ZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIGNvbnN0
IFVTdHJpbmcmIHZhbHVlKQogICAgICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9OYXRpdmVFcnJvckNvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL05hdGl2ZUVycm9yQ29uc3RydWN0b3IuY3BwCmluZGV4IDg1ZmYwYTgy
YmEyMjQ0MGM1ZmIzODczYmU0ZmJmMjY0YWRmMmY2YTMuLmY3NmU0NTE1YTMzZjJjMGQ3MjA4N2Rj
NWFjMWZlZjkyOWMwMjM1MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL05hdGl2ZUVycm9yQ29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL05hdGl2ZUVycm9yQ29uc3RydWN0b3IuY3BwCkBAIC0zNywxMyArMzcsNyBAQCBO
YXRpdmVFcnJvckNvbnN0cnVjdG9yOjpOYXRpdmVFcnJvckNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSog
ZXhlYywgSlNHbG9iYWxPYmplY3QqCiB7CiAgICAgQVNTRVJUKGluaGVyaXRzKCZzX2luZm8pKTsK
IAotICAgIE5hdGl2ZUVycm9yUHJvdG90eXBlKiBwcm90b3R5cGUgPSBOYXRpdmVFcnJvclByb3Rv
dHlwZTo6Y3JlYXRlKGV4ZWMsIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlU3RydWN0dXJlLCBuYW1l
QW5kTWVzc2FnZSwgdGhpcyk7Ci0KLSAgICBwdXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBl
eGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3RoLCBqc051bWJlcigxKSwgRG9udERlbGV0ZSB8IFJl
YWRPbmx5IHwgRG9udEVudW0pOyAvLyBFQ01BIDE1LjExLjcuNQotICAgIHB1dERpcmVjdChleGVj
LT5nbG9iYWxEYXRhKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5wcm90b3R5cGUsIHByb3RvdHlw
ZSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5IHwgRG9udEVudW0pOwotICAgIG1fZXJyb3JTdHJ1Y3R1
cmUuc2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhpcywgRXJyb3JJbnN0YW5jZTo6Y3JlYXRlU3Ry
dWN0dXJlKGV4ZWMtPmdsb2JhbERhdGEoKSwgcHJvdG90eXBlKSk7Ci0gICAgQVNTRVJUKG1fZXJy
b3JTdHJ1Y3R1cmUpOwotICAgIEFTU0VSVChtX2Vycm9yU3RydWN0dXJlLT50eXBlSW5mbygpLnR5
cGUoKSA9PSBPYmplY3RUeXBlKTsKKyAgICBmaW5pc2hBbGxvY2F0aW9ucyhleGVjLCBnbG9iYWxP
YmplY3QsIHByb3RvdHlwZVN0cnVjdHVyZSwgbmFtZUFuZE1lc3NhZ2UpOwogfQogCiB2b2lkIE5h
dGl2ZUVycm9yQ29uc3RydWN0b3I6OnZpc2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3ImIHZpc2l0b3Ip
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OYXRpdmVFcnJvckNv
bnN0cnVjdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OYXRpdmVFcnJvckNv
bnN0cnVjdG9yLmgKaW5kZXggM2VhYmM3YTU1Y2FmY2E3YzlmMDNlMTI2ODI4ZWVhMmNlMWM1Mjg3
NS4uZDJjYjEyOGFlYmY0MTJiNmQxNGQwOWNhZTk0MDJkOTU2ZDI4MzI4MyAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUVycm9yQ29uc3RydWN0b3Iu
aApAQCAtMjIsNiArMjIsNyBAQAogI2RlZmluZSBOYXRpdmVFcnJvckNvbnN0cnVjdG9yX2gKIAog
I2luY2x1ZGUgIkludGVybmFsRnVuY3Rpb24uaCIKKyNpbmNsdWRlICJOYXRpdmVFcnJvclByb3Rv
dHlwZS5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIApAQCAtNDcsNiArNDgsMTggQEAgbmFtZXNwYWNl
IEpTQyB7CiAKICAgICAgICAgU3RydWN0dXJlKiBlcnJvclN0cnVjdHVyZSgpIHsgcmV0dXJuIG1f
ZXJyb3JTdHJ1Y3R1cmUuZ2V0KCk7IH0KIAorICAgIHByb3RlY3RlZDoKKyAgICAgICAgdm9pZCBm
aW5pc2hBbGxvY2F0aW9ucyhFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIFN0cnVjdHVyZSogcHJvdG90eXBlU3RydWN0dXJlLCBjb25zdCBVU3RyaW5nJiBuYW1l
QW5kTWVzc2FnZSkKKyAgICAgICAgeworICAgICAgICAgICAgTmF0aXZlRXJyb3JQcm90b3R5cGUq
IHByb3RvdHlwZSA9IE5hdGl2ZUVycm9yUHJvdG90eXBlOjpjcmVhdGUoZXhlYywgZ2xvYmFsT2Jq
ZWN0LCBwcm90b3R5cGVTdHJ1Y3R1cmUsIG5hbWVBbmRNZXNzYWdlLCB0aGlzKTsKKworICAgICAg
ICAgICAgcHV0RGlyZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+cHJvcGVydHlOYW1lcygp
Lmxlbmd0aCwganNOdW1iZXIoMSksIERvbnREZWxldGUgfCBSZWFkT25seSB8IERvbnRFbnVtKTsg
Ly8gRUNNQSAxNS4xMS43LjUKKyAgICAgICAgICAgIHB1dERpcmVjdChleGVjLT5nbG9iYWxEYXRh
KCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5wcm90b3R5cGUsIHByb3RvdHlwZSwgRG9udERlbGV0
ZSB8IFJlYWRPbmx5IHwgRG9udEVudW0pOworICAgICAgICAgICAgbV9lcnJvclN0cnVjdHVyZS5z
ZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCB0aGlzLCBFcnJvckluc3RhbmNlOjpjcmVhdGVTdHJ1Y3R1
cmUoZXhlYy0+Z2xvYmFsRGF0YSgpLCBwcm90b3R5cGUpKTsKKyAgICAgICAgICAgIEFTU0VSVCht
X2Vycm9yU3RydWN0dXJlKTsKKyAgICAgICAgICAgIEFTU0VSVChtX2Vycm9yU3RydWN0dXJlLT50
eXBlSW5mbygpLnR5cGUoKSA9PSBPYmplY3RUeXBlKTsKKyAgICAgICAgfQorCiAgICAgcHJpdmF0
ZToKICAgICAgICAgTmF0aXZlRXJyb3JDb25zdHJ1Y3RvcihFeGVjU3RhdGUqLCBKU0dsb2JhbE9i
amVjdCosIFN0cnVjdHVyZSosIFN0cnVjdHVyZSogcHJvdG90eXBlU3RydWN0dXJlLCBjb25zdCBV
U3RyaW5nJik7CiAgICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9
IE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4gfCBJbnRlcm5hbEZ1bmN0aW9uOjpTdHJ1Y3R1cmVGbGFn
czsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUVycm9y
UHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUVycm9y
UHJvdG90eXBlLmNwcAppbmRleCA2ODMwNjYwMTI3YWYzMmJlMGZiMjg3OGU0MDllY2Q0ODJkOWQy
ODFiLi44MmQ5Yjg0M2Y3MmZkZDFjYzI1ZDkyYTdjYzM2MDhjNWM4Mjc3MGFiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OYXRpdmVFcnJvclByb3RvdHlwZS5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXJyb3JQcm90b3R5cGUu
Y3BwCkBAIC0zMyw2ICszMywxMSBAQCBBU1NFUlRfQ0xBU1NfRklUU19JTl9DRUxMKE5hdGl2ZUVy
cm9yUHJvdG90eXBlKTsKIE5hdGl2ZUVycm9yUHJvdG90eXBlOjpOYXRpdmVFcnJvclByb3RvdHlw
ZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVy
ZSogc3RydWN0dXJlLCBjb25zdCBVU3RyaW5nJiBuYW1lQW5kTWVzc2FnZSwgTmF0aXZlRXJyb3JD
b25zdHJ1Y3RvciogY29uc3RydWN0b3IpCiAgICAgOiBFcnJvclByb3RvdHlwZShleGVjLCBnbG9i
YWxPYmplY3QsIHN0cnVjdHVyZSkKIHsKKyAgICBmaW5pc2hBbGxvY2F0aW9ucyhleGVjLCBuYW1l
QW5kTWVzc2FnZSwgY29uc3RydWN0b3IpOworfQorCitpbmxpbmUgdm9pZCBOYXRpdmVFcnJvclBy
b3RvdHlwZTo6ZmluaXNoQWxsb2NhdGlvbnMoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBVU3RyaW5n
JiBuYW1lQW5kTWVzc2FnZSwgTmF0aXZlRXJyb3JDb25zdHJ1Y3RvciogY29uc3RydWN0b3IpCit7
CiAgICAgcHV0RGlyZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+cHJvcGVydHlOYW1lcygp
Lm5hbWUsIGpzU3RyaW5nKGV4ZWMsIG5hbWVBbmRNZXNzYWdlKSwgRG9udEVudW0pOwogICAgIHB1
dERpcmVjdChleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5tZXNzYWdl
LCBqc1N0cmluZyhleGVjLCBuYW1lQW5kTWVzc2FnZSksIERvbnRFbnVtKTsKICAgICBwdXREaXJl
Y3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuY29uc3RydWN0b3Is
IGNvbnN0cnVjdG9yLCBEb250RW51bSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9OYXRpdmVFcnJvclByb3RvdHlwZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvTmF0aXZlRXJyb3JQcm90b3R5cGUuaAppbmRleCAxYmIyMzA5MDMzNTRmY2E3YzEw
YTA1NmY1NDk1ZjYzNjk1NDdjZDU5Li4wNDRlODViZjk4NDE1ZGQ2ODk2ZDIzMzgyNThmODI4NDM5
ZTA0MzFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OYXRpdmVF
cnJvclByb3RvdHlwZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2
ZUVycm9yUHJvdG90eXBlLmgKQEAgLTM3LDYgKzM3LDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgIHsKICAgICAgICAgICAgIHJldHVybiBuZXcgKGFsbG9jYXRlQ2VsbDxOYXRpdmVFcnJvclBy
b3RvdHlwZT4oKmV4ZWMtPmhlYXAoKSkpIE5hdGl2ZUVycm9yUHJvdG90eXBlKGV4ZWMsIGdsb2Jh
bE9iamVjdCwgc3RydWN0dXJlLCBuYW1lQW5kTWVzc2FnZSwgY29uc3RydWN0b3IpOwogICAgICAg
ICB9CisKKyAgICBwcm90ZWN0ZWQ6CisgICAgICAgIHZvaWQgZmluaXNoQWxsb2NhdGlvbnMoRXhl
Y1N0YXRlKiwgY29uc3QgVVN0cmluZyYgbmFtZUFuZE1lc3NhZ2UsIE5hdGl2ZUVycm9yQ29uc3Ry
dWN0b3IqKTsKICAgICB9OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ09iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TdHJpbmdPYmplY3QuY3BwCmluZGV4IDY3ZGMyOTFiMDllY2Y3ZDdl
YmE4OGFhZjI5NmZhNTM0OGVjMjJjZjkuLjFkMGM3YWJmOThkMDg3YzBiNTE3YjUyMDI0NmUyYThl
ZmViMzA3NjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmlu
Z09iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nT2Jq
ZWN0LmNwcApAQCAtMjksMTMgKzI5LDYgQEAgQVNTRVJUX0NMQVNTX0ZJVFNfSU5fQ0VMTChTdHJp
bmdPYmplY3QpOwogCiBjb25zdCBDbGFzc0luZm8gU3RyaW5nT2JqZWN0OjpzX2luZm8gPSB7ICJT
dHJpbmciLCAmSlNXcmFwcGVyT2JqZWN0OjpzX2luZm8sIDAsIDAgfTsKIAotU3RyaW5nT2JqZWN0
OjpTdHJpbmdPYmplY3QoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKLSAg
ICA6IEpTV3JhcHBlck9iamVjdChleGVjLT5nbG9iYWxEYXRhKCksIHN0cnVjdHVyZSkKLXsKLSAg
ICBBU1NFUlQoaW5oZXJpdHMoJnNfaW5mbykpOwotICAgIHNldEludGVybmFsVmFsdWUoZXhlYy0+
Z2xvYmFsRGF0YSgpLCBqc0VtcHR5U3RyaW5nKGV4ZWMpKTsKLX0KLQogU3RyaW5nT2JqZWN0OjpT
dHJpbmdPYmplY3QoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSwgSlNTdHJpbmcqIHN0cmluZykKICAgICA6IEpTV3JhcHBlck9iamVjdChnbG9iYWxEYXRhLCBz
dHJ1Y3R1cmUpCiB7CkBAIC00MywxMyArMzYsNiBAQCBTdHJpbmdPYmplY3Q6OlN0cmluZ09iamVj
dChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU1N0cgog
ICAgIHNldEludGVybmFsVmFsdWUoZ2xvYmFsRGF0YSwgc3RyaW5nKTsKIH0KIAotU3RyaW5nT2Jq
ZWN0OjpTdHJpbmdPYmplY3QoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwg
Y29uc3QgVVN0cmluZyYgc3RyaW5nKQotICAgIDogSlNXcmFwcGVyT2JqZWN0KGV4ZWMtPmdsb2Jh
bERhdGEoKSwgc3RydWN0dXJlKQotewotICAgIEFTU0VSVChpbmhlcml0cygmc19pbmZvKSk7Ci0g
ICAgc2V0SW50ZXJuYWxWYWx1ZShleGVjLT5nbG9iYWxEYXRhKCksIGpzU3RyaW5nKGV4ZWMsIHN0
cmluZykpOwotfQotCiBib29sIFN0cmluZ09iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90KEV4ZWNT
dGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3Qm
IHNsb3QpCiB7CiAgICAgaWYgKGludGVybmFsVmFsdWUoKS0+Z2V0U3RyaW5nUHJvcGVydHlTbG90
KGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TdHJpbmdPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1N0cmluZ09iamVjdC5oCmluZGV4IDgwZTViZWM1Nzc3NzU1MWFhMjE5Nzc0NTA1N2FlMTkw
OTI4YTcxNmUuLjdkMTM1YzFlNDEyMmZhZTdmYWZmMThkYjJlMWJhMzdkNzVjZDQ1NWYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ09iamVjdC5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ09iamVjdC5oCkBAIC0zMiwxNCAr
MzIsMTUgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgc3RhdGljIFN0cmluZ09iamVjdCog
Y3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgICAgIHsK
LSAgICAgICAgICAgIHJldHVybiBuZXcgKGFsbG9jYXRlQ2VsbDxTdHJpbmdPYmplY3Q+KCpleGVj
LT5oZWFwKCkpKSBTdHJpbmdPYmplY3QoZXhlYywgc3RydWN0dXJlKTsgIAorICAgICAgICAgICAg
SlNTdHJpbmcqIHN0cmluZyA9IGpzRW1wdHlTdHJpbmcoZXhlYyk7CisgICAgICAgICAgICByZXR1
cm4gbmV3IChhbGxvY2F0ZUNlbGw8U3RyaW5nT2JqZWN0PigqZXhlYy0+aGVhcCgpKSkgU3RyaW5n
T2JqZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwgc3RydWN0dXJlLCBzdHJpbmcpOyAgCiAgICAgICAg
IH0KICAgICAgICAgc3RhdGljIFN0cmluZ09iamVjdCogY3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IFVTdHJpbmcmIHN0cikKICAgICAgICAgewotICAg
ICAgICAgICAgcmV0dXJuIG5ldyAoYWxsb2NhdGVDZWxsPFN0cmluZ09iamVjdD4oKmV4ZWMtPmhl
YXAoKSkpIFN0cmluZ09iamVjdChleGVjLCBzdHJ1Y3R1cmUsIHN0cik7ICAKKyAgICAgICAgICAg
IEpTU3RyaW5nKiBzdHJpbmcgPSBqc1N0cmluZyhleGVjLCBzdHIpOworICAgICAgICAgICAgcmV0
dXJuIG5ldyAoYWxsb2NhdGVDZWxsPFN0cmluZ09iamVjdD4oKmV4ZWMtPmhlYXAoKSkpIFN0cmlu
Z09iamVjdChleGVjLT5nbG9iYWxEYXRhKCksIHN0cnVjdHVyZSwgc3RyaW5nKTsKICAgICAgICAg
fQogICAgICAgICBzdGF0aWMgU3RyaW5nT2JqZWN0KiBjcmVhdGUoRXhlY1N0YXRlKiwgSlNHbG9i
YWxPYmplY3QqLCBKU1N0cmluZyopOwotICAgICAgICAKIAogICAgICAgICB2aXJ0dWFsIGJvb2wg
Z2V0T3duUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5
TmFtZSwgUHJvcGVydHlTbG90Jik7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBnZXRPd25Qcm9wZXJ0
eVNsb3QoRXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsK
QEAgLTU5LDggKzYwLDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIH0KIAogICAgIHByb3Rl
Y3RlZDoKLSAgICAgICAgU3RyaW5nT2JqZWN0KEV4ZWNTdGF0ZSosIFN0cnVjdHVyZSopOwotICAg
ICAgICBTdHJpbmdPYmplY3QoRXhlY1N0YXRlKiwgU3RydWN0dXJlKiwgY29uc3QgVVN0cmluZyYp
OwogICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBPdmVycmlk
ZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBPdmVycmlkZXNHZXRQcm9wZXJ0eU5hbWVzIHwgSlNXcmFw
cGVyT2JqZWN0OjpTdHJ1Y3R1cmVGbGFnczsKICAgICAgICAgU3RyaW5nT2JqZWN0KEpTR2xvYmFs
RGF0YSYsIFN0cnVjdHVyZSosIEpTU3RyaW5nKik7CiAgICAgfTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ09iamVjdFRoYXRNYXNxdWVyYWRlc0FzVW5k
ZWZpbmVkLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdPYmplY3RUaGF0
TWFzcXVlcmFkZXNBc1VuZGVmaW5lZC5oCmluZGV4IGQ0MjMwZWE4ZjQ1MzFkNGNlODg0ZjBiYTE1
NzQ4OTBmNjFhNDQ4MTIuLjY5NDM2ZDdlMzZmNDgxMDYyOTBmYjhjZWY2NmU5ZDY2ZDc5NjdjNGYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ09iamVjdFRo
YXRNYXNxdWVyYWRlc0FzVW5kZWZpbmVkLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvU3RyaW5nT2JqZWN0VGhhdE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQuaApAQCAtMzQsMTMg
KzM0LDE0IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIHN0YXRpYyBTdHJpbmdPYmplY3RU
aGF0TWFzcXVlcmFkZXNBc1VuZGVmaW5lZCogY3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3Qg
VVN0cmluZyYgc3RyaW5nKQogICAgICAgICB7CisgICAgICAgICAgICBKU1N0cmluZyogbmV3U3Ry
aW5nID0ganNTdHJpbmcoZXhlYywgc3RyaW5nKTsKICAgICAgICAgICAgIHJldHVybiBuZXcgKGFs
bG9jYXRlQ2VsbDxTdHJpbmdPYmplY3RUaGF0TWFzcXVlcmFkZXNBc1VuZGVmaW5lZD4oKmV4ZWMt
PmhlYXAoKSkpIFN0cmluZ09iamVjdFRoYXRNYXNxdWVyYWRlc0FzVW5kZWZpbmVkKGV4ZWMsCi0g
ICAgICAgICAgICAgICAgY3JlYXRlU3RydWN0dXJlKGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+
bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5zdHJpbmdQcm90b3R5cGUoKSksIHN0cmluZyk7CisgICAg
ICAgICAgICAgICAgY3JlYXRlU3RydWN0dXJlKGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+bGV4
aWNhbEdsb2JhbE9iamVjdCgpLT5zdHJpbmdQcm90b3R5cGUoKSksIG5ld1N0cmluZyk7CiAgICAg
ICAgIH0KIAogICAgIHByaXZhdGU6Ci0gICAgICAgIFN0cmluZ09iamVjdFRoYXRNYXNxdWVyYWRl
c0FzVW5kZWZpbmVkKEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0
IFVTdHJpbmcmIHN0cmluZykKLSAgICAgICAgICAgIDogU3RyaW5nT2JqZWN0KGV4ZWMsIHN0cnVj
dHVyZSwgc3RyaW5nKQorICAgICAgICBTdHJpbmdPYmplY3RUaGF0TWFzcXVlcmFkZXNBc1VuZGVm
aW5lZChFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU1N0cmluZyogc3Ry
aW5nKQorICAgICAgICAgICAgOiBTdHJpbmdPYmplY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBzdHJ1
Y3R1cmUsIHN0cmluZykKICAgICAgICAgewogICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdQcm90b3R5cGUuY3BwCmluZGV4IDQyODdkM2FmZWI1
NDg5YjYzZjkxNGQ2ZWVhOTAxMTY0ZDU3ZTg0NTYuLjBmYzYwNmY3NDczZjg5OTVhM2Y0YThkYWZk
NjNiMDA5NzRmY2VkNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1N0cmluZ1Byb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
U3RyaW5nUHJvdG90eXBlLmNwcApAQCAtMTMxLDggKzEzMSw4IEBAIGNvbnN0IENsYXNzSW5mbyBT
dHJpbmdQcm90b3R5cGU6OnNfaW5mbyA9IHsgIlN0cmluZyIsICZTdHJpbmdPYmplY3Q6OnNfaW5m
bywgMCwKICovCiAKIC8vIEVDTUEgMTUuNS40Ci1TdHJpbmdQcm90b3R5cGU6OlN0cmluZ1Byb3Rv
dHlwZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVj
dHVyZSogc3RydWN0dXJlKQotICAgIDogU3RyaW5nT2JqZWN0KGV4ZWMsIHN0cnVjdHVyZSkKK1N0
cmluZ1Byb3RvdHlwZTo6U3RyaW5nUHJvdG90eXBlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTU3RyaW5nKiBuYW1l
QW5kTWVzc2FnZSkKKyAgICA6IFN0cmluZ09iamVjdChleGVjLT5nbG9iYWxEYXRhKCksIHN0cnVj
dHVyZSwgbmFtZUFuZE1lc3NhZ2UpCiB7CiAgICAgQVNTRVJUKGluaGVyaXRzKCZzX2luZm8pKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJvdG90
eXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdQcm90b3R5cGUuaApp
bmRleCAwM2E2N2Q4YzVlY2UxODRjNjQ1YTIxYTQ1ZTUzYWVjNTI5MTY4NjIwLi4yMTc1ODVmYTYw
ZDZiOTI3MDQ3ZWZlOTQ5MDU0MjQ0MzNjN2ZkMGZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TdHJpbmdQcm90b3R5cGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TdHJpbmdQcm90b3R5cGUuaApAQCAtMjksMTQgKzI5LDE1IEBAIG5hbWVz
cGFjZSBKU0MgewogCiAgICAgY2xhc3MgU3RyaW5nUHJvdG90eXBlIDogcHVibGljIFN0cmluZ09i
amVjdCB7CiAgICAgcHJpdmF0ZToKLSAgICAgICAgU3RyaW5nUHJvdG90eXBlKEV4ZWNTdGF0ZSos
IEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKik7CisgICAgICAgIFN0cmluZ1Byb3RvdHlwZShF
eGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIEpTU3RyaW5nKik7CiAKICAg
ICBwdWJsaWM6CiAgICAgICAgIHR5cGVkZWYgU3RyaW5nT2JqZWN0IEJhc2U7CiAKICAgICAgICAg
c3RhdGljIFN0cmluZ1Byb3RvdHlwZSogY3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgICAgIHsKLSAg
ICAgICAgICAgIHJldHVybiBuZXcgKGFsbG9jYXRlQ2VsbDxTdHJpbmdQcm90b3R5cGU+KCpleGVj
LT5oZWFwKCkpKSBTdHJpbmdQcm90b3R5cGUoZXhlYywgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUp
OworICAgICAgICAgICAgSlNTdHJpbmcqIG5hbWVBbmRNZXNzYWdlID0ganNFbXB0eVN0cmluZyhl
eGVjKTsKKyAgICAgICAgICAgIHJldHVybiBuZXcgKGFsbG9jYXRlQ2VsbDxTdHJpbmdQcm90b3R5
cGU+KCpleGVjLT5oZWFwKCkpKSBTdHJpbmdQcm90b3R5cGUoZXhlYywgZ2xvYmFsT2JqZWN0LCBz
dHJ1Y3R1cmUsIG5hbWVBbmRNZXNzYWdlKTsKICAgICAgICAgfQogCiAgICAgICAgIHZpcnR1YWwg
Ym9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJv
cGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBlMmVkMmU2OGE4M2E2NjRi
Zjk4ZWM3YTU1MDUxNzFhNjM5MTA3MGNmLi5lNDc5NDUyYTA5MGM4MjEzODM1NjYxZTMwNTMzZTAy
NjdjNmM1OGYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMjkgQEAKIDIwMTEtMDgtMTUgIE1hcmsg
SGFobmVuYmVyZyAgPG1oYWhuZW5iZXJnQGFwcGxlLmNvbT4KIAorICAgICAgICBNb3ZlIGFsbG9j
YXRpb24gaW4gY29uc3RydWN0b3JzIGludG8gc2VwYXJhdGUgZmluaXNoQWxsb2NhdGlvbigpIG1l
dGhvZHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY2
MjY1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8g
bmV3IHRlc3RzLgorIAorICAgICAgICBUaGlzIG5leHQgcGF0Y2ggaXMgdGhlIHJlZmFjdG9yaW5n
IHRvIHB1dCBhbGwgYWxsb2NhdGlvbnMgdGhhdCBuZWVkIHRvIGJlIGRvbmUgYWZ0ZXIgCisgICAg
ICAgIHRoZSBvYmplY3QncyBpbml0aWFsaXphdGlvbiBsaXN0IGhhcyBleGVjdXRlZCBidXQgYmVm
b3JlIHRoZSBvYmplY3QgaXMgcmVhZHkgZm9yIHVzZSAKKyAgICAgICAgaW50byBhIHNlcGFyYXRl
IGZpbmlzaEFsbG9jYXRpb25zKCkgbWV0aG9kLiAgVGhpcyBtZXRob2QgaXMgc3RpbGwgY2FsbGVk
IGJ5IHRoZSBjb25zdHJ1Y3RvciwgCisgICAgICAgIHNvIHRoZSBwYXRjaCBkb2Vzbid0IHJlc29s
dmUgYW55IHBvdGVudGlhbCBpc3N1ZXMsIGl0J3MganVzdCB0byBzZXQgdXAgdGhlIGNvZGUgZm9y
IGZ1cnRoZXIgcmVmYWN0b3JpbmcuCisKKyAgICAgICAgKiBicmlkZ2Uvb2JqYy9PYmpDUnVudGlt
ZU9iamVjdC5oOgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6T2JqQ1J1bnRpbWVPYmplY3Q6OmNy
ZWF0ZSk6CisgICAgICAgICogYnJpZGdlL29iamMvT2JqQ1J1bnRpbWVPYmplY3QubW06CisgICAg
ICAgICogYnJpZGdlL29iamMvb2JqY19pbnN0YW5jZS5tbToKKyAgICAgICAgKE9iakNSdW50aW1l
TWV0aG9kOjpjcmVhdGUpOgorICAgICAgICAoT2JqQ1J1bnRpbWVNZXRob2Q6Ok9iakNSdW50aW1l
TWV0aG9kKToKKyAgICAgICAgKiBicmlkZ2UvcnVudGltZV9hcnJheS5jcHA6CisgICAgICAgICog
YnJpZGdlL3J1bnRpbWVfYXJyYXkuaDoKKyAgICAgICAgKEpTQzo6UnVudGltZUFycmF5OjpjcmVh
dGUpOgorCisyMDExLTA4LTE1ICBNYXJrIEhhaG5lbmJlcmcgIDxtaGFobmVuYmVyZ0BhcHBsZS5j
b20+CisKICAgICAgICAgUmVmYWN0b3IgSlMgb2JqZWN0cyB0byBhbGxvY2F0ZSBpbiBzdGF0aWMg
Y3JlYXRlIG1ldGhvZHMgcmF0aGVyIHRoYW4gY29uc3RydWN0b3JzCiAgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NTM0NwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9PYmpDUnVudGltZU9iamVjdC5oIGIvU291cmNlL1dlYkNv
cmUvYnJpZGdlL29iamMvT2JqQ1J1bnRpbWVPYmplY3QuaAppbmRleCA2NGNjZmY2ZWFhZmNjY2I1
NTFjMGQ1ZGE3MGYyNDYxM2FjYWUyNTYxLi5hODgxM2ZlM2Y3OGU4ZmE1M2UyM2MzYmFhYjk3MGM0
MzJkZTBmZmQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9PYmpDUnVu
dGltZU9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL09iakNSdW50aW1l
T2JqZWN0LmgKQEAgLTM5LDYgKzM5LDggQEAgcHVibGljOgogCiAgICAgc3RhdGljIE9iakNSdW50
aW1lT2JqZWN0KiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBQYXNzUmVmUHRyPE9iamNJbnN0YW5jZT4gaW5zdCkKICAgICB7CisgICAgICAgIC8v
IEZJWE1FOiBkZXByZWNhdGVkR2V0RE9NU3RydWN0dXJlIHVzZXMgdGhlIHByb3RvdHlwZSBvZmYg
b2YgdGhlIHdyb25nIGdsb2JhbCBvYmplY3QKKyAgICAgICAgLy8gV2UgbmVlZCB0byBwYXNzIGlu
IHRoZSByaWdodCBnbG9iYWwgb2JqZWN0IGZvciAiaSIuCiAgICAgICAgIFN0cnVjdHVyZSogc3Ry
dWN0dXJlID0gV2ViQ29yZTo6ZGVwcmVjYXRlZEdldERPTVN0cnVjdHVyZTxPYmpDUnVudGltZU9i
amVjdD4oZXhlYyk7CiAgICAgICAgIHJldHVybiBuZXcgKGFsbG9jYXRlQ2VsbDxPYmpDUnVudGlt
ZU9iamVjdD4oKmV4ZWMtPmhlYXAoKSkpIE9iakNSdW50aW1lT2JqZWN0KGV4ZWMsIGdsb2JhbE9i
amVjdCwgaW5zdCwgc3RydWN0dXJlKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9icmlkZ2Uvb2JqYy9PYmpDUnVudGltZU9iamVjdC5tbSBiL1NvdXJjZS9XZWJDb3JlL2JyaWRn
ZS9vYmpjL09iakNSdW50aW1lT2JqZWN0Lm1tCmluZGV4IDU4NDhmZTMwMzdhMWZlNTY1NTBkYzAy
MmE1N2QwY2U1NDA2NWM2ZTQuLmVhODYyNjMyZGVjNGNmZTdhZWRkNjFkZTU4NGJiMmQ1YzBlYjhm
YTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL09iakNSdW50aW1lT2Jq
ZWN0Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL09iakNSdW50aW1lT2JqZWN0
Lm1tCkBAIC0zNiw4ICszNiw2IEBAIG5hbWVzcGFjZSBCaW5kaW5ncyB7CiBjb25zdCBDbGFzc0lu
Zm8gT2JqQ1J1bnRpbWVPYmplY3Q6OnNfaW5mbyA9IHsgIk9iakNSdW50aW1lT2JqZWN0IiwgJlJ1
bnRpbWVPYmplY3Q6OnNfaW5mbywgMCwgMCB9OwogCiBPYmpDUnVudGltZU9iamVjdDo6T2JqQ1J1
bnRpbWVPYmplY3QoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBQYXNzUmVmUHRyPE9iamNJbnN0YW5jZT4gaW5zdGFuY2UsIFN0cnVjdHVyZSogc3RydWN0dXJl
KQotICAgIC8vIEZJWE1FOiBkZXByZWNhdGVkR2V0RE9NU3RydWN0dXJlIHVzZXMgdGhlIHByb3Rv
dHlwZSBvZmYgb2YgdGhlIHdyb25nIGdsb2JhbCBvYmplY3QKLSAgICAvLyBXZSBuZWVkIHRvIHBh
c3MgaW4gdGhlIHJpZ2h0IGdsb2JhbCBvYmplY3QgZm9yICJpIi4KICAgICA6IFJ1bnRpbWVPYmpl
Y3QoZXhlYywgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIGluc3RhbmNlKQogewogICAgIEFTU0VS
VChpbmhlcml0cygmc19pbmZvKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uv
b2JqYy9vYmpjX2luc3RhbmNlLm1tIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19p
bnN0YW5jZS5tbQppbmRleCAwNDFmOTIzNzc2YmE1ZDgwMWY1ZDc4ZjM4MjhiZDlkZTRmZGU3NjI3
Li5kY2RjN2I2YTY4YjNiZDY0ODY3MWJlZGU2N2Q1Yjk5YjdkNjFmMDZiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX2luc3RhbmNlLm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfaW5zdGFuY2UubW0KQEAgLTE3NSw3ICsxNzUsMTAgQEAg
Y2xhc3MgT2JqQ1J1bnRpbWVNZXRob2QgOiBwdWJsaWMgUnVudGltZU1ldGhvZCB7CiBwdWJsaWM6
CiAgICAgc3RhdGljIE9iakNSdW50aW1lTWV0aG9kKiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBJZGVudGlmaWVyJiBuYW1lLCBCaW5k
aW5nczo6TWV0aG9kTGlzdCYgbGlzdCkKICAgICB7Ci0gICAgICAgIHJldHVybiBuZXcgKGFsbG9j
YXRlQ2VsbDxPYmpDUnVudGltZU1ldGhvZD4oKmV4ZWMtPmhlYXAoKSkpIE9iakNSdW50aW1lTWV0
aG9kKGV4ZWMsIGdsb2JhbE9iamVjdCwgbmFtZSwgbGlzdCk7CisgICAgICAgIC8vIEZJWE1FOiBk
ZXByZWNhdGVkR2V0RE9NU3RydWN0dXJlIHVzZXMgdGhlIHByb3RvdHlwZSBvZmYgb2YgdGhlIHdy
b25nIGdsb2JhbCBvYmplY3QKKyAgICAgICAgLy8gV2UgbmVlZCB0byBwYXNzIGluIHRoZSByaWdo
dCBnbG9iYWwgb2JqZWN0IGZvciAiaSIuCisgICAgICAgIFN0cnVjdHVyZSogZG9tU3RydWN0dXJl
ID0gV2ViQ29yZTo6ZGVwcmVjYXRlZEdldERPTVN0cnVjdHVyZTxPYmpDUnVudGltZU1ldGhvZD4o
ZXhlYyk7CisgICAgICAgIHJldHVybiBuZXcgKGFsbG9jYXRlQ2VsbDxPYmpDUnVudGltZU1ldGhv
ZD4oKmV4ZWMtPmhlYXAoKSkpIE9iakNSdW50aW1lTWV0aG9kKGV4ZWMsIGdsb2JhbE9iamVjdCwg
ZG9tU3RydWN0dXJlLCBuYW1lLCBsaXN0KTsKICAgICB9CiAKICAgICBzdGF0aWMgU3RydWN0dXJl
KiBjcmVhdGVTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU1ZhbHVlIHByb3Rv
dHlwZSkKQEAgLTE4NiwxMCArMTg5LDggQEAgcHVibGljOgogICAgIHN0YXRpYyBjb25zdCBDbGFz
c0luZm8gc19pbmZvOwogCiBwcml2YXRlOgotICAgIE9iakNSdW50aW1lTWV0aG9kKEV4ZWNTdGF0
ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgSWRlbnRpZmllciYg
bmFtZSwgQmluZGluZ3M6Ok1ldGhvZExpc3QmIGxpc3QpCi0gICAgICAgIC8vIEZJWE1FOiBkZXBy
ZWNhdGVkR2V0RE9NU3RydWN0dXJlIHVzZXMgdGhlIHByb3RvdHlwZSBvZmYgb2YgdGhlIHdyb25n
IGdsb2JhbCBvYmplY3QKLSAgICAgICAgLy8gV2UgbmVlZCB0byBwYXNzIGluIHRoZSByaWdodCBn
bG9iYWwgb2JqZWN0IGZvciAiaSIuCi0gICAgICAgIDogUnVudGltZU1ldGhvZChleGVjLCBnbG9i
YWxPYmplY3QsIFdlYkNvcmU6OmRlcHJlY2F0ZWRHZXRET01TdHJ1Y3R1cmU8T2JqQ1J1bnRpbWVN
ZXRob2Q+KGV4ZWMpLCBuYW1lLCBsaXN0KQorICAgIE9iakNSdW50aW1lTWV0aG9kKEV4ZWNTdGF0
ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUsIGNvbnN0IElkZW50aWZpZXImIG5hbWUsIEJpbmRpbmdzOjpNZXRob2RMaXN0JiBsaXN0KQor
ICAgICAgICA6IFJ1bnRpbWVNZXRob2QoZXhlYywgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIG5h
bWUsIGxpc3QpCiAgICAgewogICAgICAgICBBU1NFUlQoaW5oZXJpdHMoJnNfaW5mbykpOwogICAg
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX2FycmF5LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX2FycmF5LmNwcAppbmRleCBkMDU2NDk0ZWQ4
MGFhMWQzOTFmZGUwYWJkMDllZGE0MjA0MjkxYjU0Li5iNWY3YTA3OGIyYzAwY2Y4ZGZkYzgwOTBj
N2FmODQwMjEyNGQ2NTdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGlt
ZV9hcnJheS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfYXJyYXkuY3Bw
CkBAIC0zOCw4ICszOCw2IEBAIG5hbWVzcGFjZSBKU0MgewogY29uc3QgQ2xhc3NJbmZvIFJ1bnRp
bWVBcnJheTo6c19pbmZvID0geyAiUnVudGltZUFycmF5IiwgJkpTQXJyYXk6OnNfaW5mbywgMCwg
MCB9OwogCiBSdW50aW1lQXJyYXk6OlJ1bnRpbWVBcnJheShFeGVjU3RhdGUqIGV4ZWMsIFN0cnVj
dHVyZSogc3RydWN0dXJlLCBCaW5kaW5nczo6QXJyYXkqIGFycmF5KQotICAgIC8vIEZJWE1FOiBk
ZXByZWNhdGVkR2V0RE9NU3RydWN0dXJlIHVzZXMgdGhlIHByb3RvdHlwZSBvZmYgb2YgdGhlIHdy
b25nIGdsb2JhbCBvYmplY3QKLSAgICAvLyBXZSBuZWVkIHRvIHBhc3MgaW4gdGhlIHJpZ2h0IGds
b2JhbCBvYmplY3QgZm9yICJhcnJheSIuCiAgICAgOiBKU0FycmF5KGV4ZWMtPmdsb2JhbERhdGEo
KSwgc3RydWN0dXJlKQogewogICAgIEFTU0VSVChpbmhlcml0cygmc19pbmZvKSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9hcnJheS5oIGIvU291cmNlL1dlYkNv
cmUvYnJpZGdlL3J1bnRpbWVfYXJyYXkuaAppbmRleCA0OWUzOTNmODc5Zjc2ZDdhYzNlMGM4NWQz
MDczNmE2ZDc1NjY2ZmRkLi5jYjdiYzYzNTc3NmQ4ZWJjOTEwMzk1MzIwYWVmZGU0MmJjYjkwNmQ3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9hcnJheS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX2FycmF5LmgKQEAgLTM4LDYgKzM4LDggQEAg
cHVibGljOgogCiAgICAgc3RhdGljIFJ1bnRpbWVBcnJheSogY3JlYXRlKEV4ZWNTdGF0ZSogZXhl
YywgQmluZGluZ3M6OkFycmF5KiBhcnJheSkKICAgICB7CisgICAgICAgIC8vIEZJWE1FOiBkZXBy
ZWNhdGVkR2V0RE9NU3RydWN0dXJlIHVzZXMgdGhlIHByb3RvdHlwZSBvZmYgb2YgdGhlIHdyb25n
IGdsb2JhbCBvYmplY3QKKyAgICAgICAgLy8gV2UgbmVlZCB0byBwYXNzIGluIHRoZSByaWdodCBn
bG9iYWwgb2JqZWN0IGZvciAiYXJyYXkiLgogICAgICAgICBTdHJ1Y3R1cmUqIGRvbVN0cnVjdHVy
ZSA9IFdlYkNvcmU6OmRlcHJlY2F0ZWRHZXRET01TdHJ1Y3R1cmU8UnVudGltZUFycmF5PihleGVj
KTsKICAgICAgICAgcmV0dXJuIG5ldyAoYWxsb2NhdGVDZWxsPFJ1bnRpbWVBcnJheT4oKmV4ZWMt
PmhlYXAoKSkpIFJ1bnRpbWVBcnJheShleGVjLCBkb21TdHJ1Y3R1cmUsIGFycmF5KTsKICAgICB9
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>103982</attachid>
            <date>2011-08-15 17:03:10 -0700</date>
            <delta_ts>2011-08-17 12:44:25 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-66265-20110815170309.patch</filename>
            <type>text/plain</type>
            <size>44711</size>
            <attacher name="Mark Hahnenberg">mhahnenberg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTMwNjAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDJl
MzZhMDcyYjNjYjMyMWNhZTdjMTAxYjVmNmVhZjUxYWY4MzMzM2EuLjRiMTIxOTdmZmY0OGRlZTg3
MWViOWIyODFhMWViOWY3ZWU2OWM0MjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDcyIEBACisyMDExLTA4LTE1ICBNYXJrIEhhaG5lbmJlcmcgIDxtaGFobmVuYmVyZ0BhcHBs
ZS5jb20+CisKKyAgICAgICAgTW92ZSBhbGxvY2F0aW9uIGluIGNvbnN0cnVjdG9ycyBpbnRvIHNl
cGFyYXRlIGZpbmlzaEFsbG9jYXRpb24oKSBtZXRob2RzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NjI2NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgbmV4dCBwYXRjaCBpcyB0aGUgcmVmYWN0b3Jp
bmcgdG8gcHV0IGFsbCBhbGxvY2F0aW9ucyB0aGF0IG5lZWQgdG8gYmUgZG9uZSBhZnRlciAKKyAg
ICAgICAgdGhlIG9iamVjdCdzIGluaXRpYWxpemF0aW9uIGxpc3QgaGFzIGV4ZWN1dGVkIGJ1dCBi
ZWZvcmUgdGhlIG9iamVjdCBpcyByZWFkeSBmb3IgdXNlIAorICAgICAgICBpbnRvIGEgc2VwYXJh
dGUgZmluaXNoQWxsb2NhdGlvbnMoKSBtZXRob2QuICBUaGlzIG1ldGhvZCBpcyBzdGlsbCBjYWxs
ZWQgYnkgdGhlIGNvbnN0cnVjdG9yLCAKKyAgICAgICAgc28gdGhlIHBhdGNoIGRvZXNuJ3QgcmVz
b2x2ZSBhbnkgcG90ZW50aWFsIGlzc3VlcywgaXQncyBqdXN0IHRvIHNldCB1cCB0aGUgY29kZSBm
b3IgZnVydGhlciByZWZhY3RvcmluZy4KKworICAgICAgICAqIEphdmFTY3JpcHRDb3JlLmV4cDoK
KyAgICAgICAgKiBqc2MuY3BwOgorICAgICAgICAoR2xvYmFsT2JqZWN0OjpmaW5pc2hBbGxvY2F0
aW9ucyk6CisgICAgICAgIChHbG9iYWxPYmplY3Q6Okdsb2JhbE9iamVjdCk6CisgICAgICAgICog
cnVudGltZS9FcnJvckluc3RhbmNlLmNwcDoKKyAgICAgICAgKEpTQzo6RXJyb3JJbnN0YW5jZTo6
RXJyb3JJbnN0YW5jZSk6CisgICAgICAgICogcnVudGltZS9FcnJvckluc3RhbmNlLmg6CisgICAg
ICAgIChKU0M6OkVycm9ySW5zdGFuY2U6OmZpbmlzaEFsbG9jYXRpb25zKToKKyAgICAgICAgKiBy
dW50aW1lL0Vycm9yUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6RXJyb3JQcm90b3R5cGU6
OkVycm9yUHJvdG90eXBlKToKKyAgICAgICAgKiBydW50aW1lL0Vycm9yUHJvdG90eXBlLmg6Cisg
ICAgICAgIChKU0M6OkVycm9yUHJvdG90eXBlOjpmaW5pc2hBbGxvY2F0aW9ucyk6CisgICAgICAg
ICogcnVudGltZS9FeGVjdXRhYmxlLmNwcDoKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25FeGVjdXRh
YmxlOjpGdW5jdGlvbkV4ZWN1dGFibGUpOgorICAgICAgICAqIHJ1bnRpbWUvRXhlY3V0YWJsZS5o
OgorICAgICAgICAoSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGU6OmZpbmlzaEFsbG9jYXRpb25zKToK
KyAgICAgICAgKiBydW50aW1lL0ludGVybmFsRnVuY3Rpb24uY3BwOgorICAgICAgICAoSlNDOjpJ
bnRlcm5hbEZ1bmN0aW9uOjpJbnRlcm5hbEZ1bmN0aW9uKToKKyAgICAgICAgKiBydW50aW1lL0lu
dGVybmFsRnVuY3Rpb24uaDoKKyAgICAgICAgKEpTQzo6SW50ZXJuYWxGdW5jdGlvbjo6ZmluaXNo
QWxsb2NhdGlvbnMpOgorICAgICAgICAqIHJ1bnRpbWUvSlNCeXRlQXJyYXkuY3BwOgorICAgICAg
ICAoSlNDOjpKU0J5dGVBcnJheTo6SlNCeXRlQXJyYXkpOgorICAgICAgICAqIHJ1bnRpbWUvSlNC
eXRlQXJyYXkuaDoKKyAgICAgICAgKEpTQzo6SlNCeXRlQXJyYXk6OmZpbmlzaEFsbG9jYXRpb25z
KToKKyAgICAgICAgKiBydW50aW1lL0pTRnVuY3Rpb24uY3BwOgorICAgICAgICAoSlNDOjpKU0Z1
bmN0aW9uOjpKU0Z1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6SlNGdW5jdGlvbjo6ZmluaXNoQWxs
b2NhdGlvbnMpOgorICAgICAgICAqIHJ1bnRpbWUvSlNGdW5jdGlvbi5oOgorICAgICAgICAqIHJ1
bnRpbWUvSlNHbG9iYWxPYmplY3QuaDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OkpT
R2xvYmFsT2JqZWN0KToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmZpbmlzaEFsbG9j
YXRpb25zKToKKyAgICAgICAgKiBydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuY3BwOgor
ICAgICAgICAoSlNDOjpKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yOjpKU1Byb3BlcnR5TmFtZUl0ZXJh
dG9yKToKKyAgICAgICAgKiBydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuaDoKKyAgICAg
ICAgKEpTQzo6SlNQcm9wZXJ0eU5hbWVJdGVyYXRvcjo6ZmluaXNoQWxsb2NhdGlvbnMpOgorICAg
ICAgICAqIHJ1bnRpbWUvSlNTdHJpbmcuaDoKKyAgICAgICAgKEpTQzo6Um9wZUJ1aWxkZXI6OkpT
U3RyaW5nKToKKyAgICAgICAgKEpTQzo6Um9wZUJ1aWxkZXI6OmZpbmlzaEFsbG9jYXRpb25zKToK
KyAgICAgICAgKiBydW50aW1lL05hdGl2ZUVycm9yQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAo
SlNDOjpOYXRpdmVFcnJvckNvbnN0cnVjdG9yOjpOYXRpdmVFcnJvckNvbnN0cnVjdG9yKToKKyAg
ICAgICAgKiBydW50aW1lL05hdGl2ZUVycm9yQ29uc3RydWN0b3IuaDoKKyAgICAgICAgKEpTQzo6
TmF0aXZlRXJyb3JDb25zdHJ1Y3Rvcjo6ZmluaXNoQWxsb2NhdGlvbnMpOgorICAgICAgICAqIHJ1
bnRpbWUvTmF0aXZlRXJyb3JQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpOYXRpdmVFcnJv
clByb3RvdHlwZTo6TmF0aXZlRXJyb3JQcm90b3R5cGUpOgorICAgICAgICAoSlNDOjpOYXRpdmVF
cnJvclByb3RvdHlwZTo6ZmluaXNoQWxsb2NhdGlvbnMpOgorICAgICAgICAqIHJ1bnRpbWUvTmF0
aXZlRXJyb3JQcm90b3R5cGUuaDoKKyAgICAgICAgKiBydW50aW1lL1N0cmluZ09iamVjdC5jcHA6
CisgICAgICAgICogcnVudGltZS9TdHJpbmdPYmplY3QuaDoKKyAgICAgICAgKEpTQzo6U3RyaW5n
T2JqZWN0OjpjcmVhdGUpOgorICAgICAgICAqIHJ1bnRpbWUvU3RyaW5nT2JqZWN0VGhhdE1hc3F1
ZXJhZGVzQXNVbmRlZmluZWQuaDoKKyAgICAgICAgKEpTQzo6U3RyaW5nT2JqZWN0VGhhdE1hc3F1
ZXJhZGVzQXNVbmRlZmluZWQ6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OlN0cmluZ09iamVjdFRo
YXRNYXNxdWVyYWRlc0FzVW5kZWZpbmVkOjpTdHJpbmdPYmplY3RUaGF0TWFzcXVlcmFkZXNBc1Vu
ZGVmaW5lZCk6CisgICAgICAgICogcnVudGltZS9TdHJpbmdQcm90b3R5cGUuY3BwOgorICAgICAg
ICAoSlNDOjpTdHJpbmdQcm90b3R5cGU6OlN0cmluZ1Byb3RvdHlwZSk6CisgICAgICAgICogcnVu
dGltZS9TdHJpbmdQcm90b3R5cGUuaDoKKyAgICAgICAgKEpTQzo6U3RyaW5nUHJvdG90eXBlOjpj
cmVhdGUpOgorCiAyMDExLTA4LTE1ICBHYXZpbiBCYXJyYWNsb3VnaCAgPGJhcnJhY2xvdWdoQGFw
cGxlLmNvbT4KIAogICAgICAgICBDcmFzaCBhY2Nlc3Npbmcgc3RhdGljIHByb3BlcnR5IG9uIHNl
YWxlZCBvYmplY3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS5leHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZXhwCmluZGV4
IGU1NWY2OWQ5ZTNhNGUxOTFkYTY2MGI0NWY4OGNmYjI2ZDViYWRhYTMuLmYwYmJjYzQwZTI2MzA4
MDQ3NWQwOWRhYTZmODRkNDA2NzU5NDFmM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS5leHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlLmV4cApAQCAtMTUxLDcgKzE1MSw3IEBAIF9fWk4zSlNDMTJTdHJpbmdPYmplY3Qx
OWdldE93blByb3BlcnR5TmFtZXNFUE5TXzlFeGVjU3RhdGVFUk5TXzE3UHJvcGVydHlOYW1lQXJy
CiBfX1pOM0pTQzEyU3RyaW5nT2JqZWN0MjRnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JFUE5TXzlF
eGVjU3RhdGVFUktOU18xMElkZW50aWZpZXJFUk5TXzE4UHJvcGVydHlEZXNjcmlwdG9yRQogX19a
TjNKU0MxMlN0cmluZ09iamVjdDNwdXRFUE5TXzlFeGVjU3RhdGVFUktOU18xMElkZW50aWZpZXJF
TlNfN0pTVmFsdWVFUk5TXzE1UHV0UHJvcGVydHlTbG90RQogX19aTjNKU0MxMlN0cmluZ09iamVj
dDZzX2luZm9FCi1fX1pOM0pTQzEyU3RyaW5nT2JqZWN0QzJFUE5TXzlFeGVjU3RhdGVFUE5TXzlT
dHJ1Y3R1cmVFUktOU183VVN0cmluZ0UKK19fWk4zSlNDMTJTdHJpbmdPYmplY3RDMkVSTlNfMTJK
U0dsb2JhbERhdGFFUE5TXzlTdHJ1Y3R1cmVFUE5TXzhKU1N0cmluZ0UKIF9fWk4zSlNDMTNTYW1w
bGluZ0ZsYWdzNHN0b3BFdgogX19aTjNKU0MxM1NhbXBsaW5nRmxhZ3M1c3RhcnRFdgogX19aTjNK
U0MxM1NhbXBsaW5nRmxhZ3M3c19mbGFnc0UKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qc2MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKaW5kZXggYWZlYjVk
OWQxMTM5NmE0OWFmNGFmZmMxM2MzNDU4ODVjOWIyYTEzMS4uZGUzMjhjYThmMjcxZGYyODY5NjQ1
Y2I3MDRlZDQ2MWI3ZjgyOGUyNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pz
Yy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKQEAgLTE1NSwzNiArMTU1
LDQyIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG5ldyAoYWxsb2NhdGVDZWxsPEdsb2JhbE9i
amVjdD4oZ2xvYmFsRGF0YS5oZWFwKSkgR2xvYmFsT2JqZWN0KGdsb2JhbERhdGEsIHN0cnVjdHVy
ZSwgYXJndW1lbnRzKTsKICAgICB9CiAgICAgdmlydHVhbCBVU3RyaW5nIGNsYXNzTmFtZSgpIGNv
bnN0IHsgcmV0dXJuICJnbG9iYWwiOyB9Ci19OwotQ09NUElMRV9BU1NFUlQoIUlzSW50ZWdlcjxH
bG9iYWxPYmplY3Q+Ojp2YWx1ZSwgV1RGX0lzSW50ZWdlcl9HbG9iYWxPYmplY3RfZmFsc2UpOwot
QVNTRVJUX0NMQVNTX0ZJVFNfSU5fQ0VMTChHbG9iYWxPYmplY3QpOwogCi1HbG9iYWxPYmplY3Q6
Okdsb2JhbE9iamVjdChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFN0cnVjdHVyZSogc3RydWN0
dXJlLCBjb25zdCBWZWN0b3I8VVN0cmluZz4mIGFyZ3VtZW50cykKLSAgICA6IEpTR2xvYmFsT2Jq
ZWN0KGdsb2JhbERhdGEsIHN0cnVjdHVyZSkKLXsKLSAgICBwdXREaXJlY3RGdW5jdGlvbihnbG9i
YWxFeGVjKCksIEpTRnVuY3Rpb246OmNyZWF0ZShnbG9iYWxFeGVjKCksIHRoaXMsIGZ1bmN0aW9u
U3RydWN0dXJlKCksIDEsIElkZW50aWZpZXIoZ2xvYmFsRXhlYygpLCAiZGVidWciKSwgZnVuY3Rp
b25EZWJ1ZykpOwotICAgIHB1dERpcmVjdEZ1bmN0aW9uKGdsb2JhbEV4ZWMoKSwgSlNGdW5jdGlv
bjo6Y3JlYXRlKGdsb2JhbEV4ZWMoKSwgdGhpcywgZnVuY3Rpb25TdHJ1Y3R1cmUoKSwgMSwgSWRl
bnRpZmllcihnbG9iYWxFeGVjKCksICJwcmludCIpLCBmdW5jdGlvblByaW50KSk7Ci0gICAgcHV0
RGlyZWN0RnVuY3Rpb24oZ2xvYmFsRXhlYygpLCBKU0Z1bmN0aW9uOjpjcmVhdGUoZ2xvYmFsRXhl
YygpLCB0aGlzLCBmdW5jdGlvblN0cnVjdHVyZSgpLCAwLCBJZGVudGlmaWVyKGdsb2JhbEV4ZWMo
KSwgInF1aXQiKSwgZnVuY3Rpb25RdWl0KSk7Ci0gICAgcHV0RGlyZWN0RnVuY3Rpb24oZ2xvYmFs
RXhlYygpLCBKU0Z1bmN0aW9uOjpjcmVhdGUoZ2xvYmFsRXhlYygpLCB0aGlzLCBmdW5jdGlvblN0
cnVjdHVyZSgpLCAwLCBJZGVudGlmaWVyKGdsb2JhbEV4ZWMoKSwgImdjIiksIGZ1bmN0aW9uR0Mp
KTsKK3Byb3RlY3RlZDoKKyAgICB2b2lkIGZpbmlzaEFsbG9jYXRpb25zKGNvbnN0IFZlY3RvcjxV
U3RyaW5nPiYgYXJndW1lbnRzKQorICAgIHsKKyAgICAgICAgcHV0RGlyZWN0RnVuY3Rpb24oZ2xv
YmFsRXhlYygpLCBKU0Z1bmN0aW9uOjpjcmVhdGUoZ2xvYmFsRXhlYygpLCB0aGlzLCBmdW5jdGlv
blN0cnVjdHVyZSgpLCAxLCBJZGVudGlmaWVyKGdsb2JhbEV4ZWMoKSwgImRlYnVnIiksIGZ1bmN0
aW9uRGVidWcpKTsKKyAgICAgICAgcHV0RGlyZWN0RnVuY3Rpb24oZ2xvYmFsRXhlYygpLCBKU0Z1
bmN0aW9uOjpjcmVhdGUoZ2xvYmFsRXhlYygpLCB0aGlzLCBmdW5jdGlvblN0cnVjdHVyZSgpLCAx
LCBJZGVudGlmaWVyKGdsb2JhbEV4ZWMoKSwgInByaW50IiksIGZ1bmN0aW9uUHJpbnQpKTsKKyAg
ICAgICAgcHV0RGlyZWN0RnVuY3Rpb24oZ2xvYmFsRXhlYygpLCBKU0Z1bmN0aW9uOjpjcmVhdGUo
Z2xvYmFsRXhlYygpLCB0aGlzLCBmdW5jdGlvblN0cnVjdHVyZSgpLCAwLCBJZGVudGlmaWVyKGds
b2JhbEV4ZWMoKSwgInF1aXQiKSwgZnVuY3Rpb25RdWl0KSk7CisgICAgICAgIHB1dERpcmVjdEZ1
bmN0aW9uKGdsb2JhbEV4ZWMoKSwgSlNGdW5jdGlvbjo6Y3JlYXRlKGdsb2JhbEV4ZWMoKSwgdGhp
cywgZnVuY3Rpb25TdHJ1Y3R1cmUoKSwgMCwgSWRlbnRpZmllcihnbG9iYWxFeGVjKCksICJnYyIp
LCBmdW5jdGlvbkdDKSk7CiAjaWZuZGVmIE5ERUJVRwotICAgIHB1dERpcmVjdEZ1bmN0aW9uKGds
b2JhbEV4ZWMoKSwgSlNGdW5jdGlvbjo6Y3JlYXRlKGdsb2JhbEV4ZWMoKSwgdGhpcywgZnVuY3Rp
b25TdHJ1Y3R1cmUoKSwgMCwgSWRlbnRpZmllcihnbG9iYWxFeGVjKCksICJyZWxlYXNlRXhlY3V0
YWJsZU1lbW9yeSIpLCBmdW5jdGlvblJlbGVhc2VFeGVjdXRhYmxlTWVtb3J5KSk7CisgICAgICAg
IHB1dERpcmVjdEZ1bmN0aW9uKGdsb2JhbEV4ZWMoKSwgSlNGdW5jdGlvbjo6Y3JlYXRlKGdsb2Jh
bEV4ZWMoKSwgdGhpcywgZnVuY3Rpb25TdHJ1Y3R1cmUoKSwgMCwgSWRlbnRpZmllcihnbG9iYWxF
eGVjKCksICJyZWxlYXNlRXhlY3V0YWJsZU1lbW9yeSIpLCBmdW5jdGlvblJlbGVhc2VFeGVjdXRh
YmxlTWVtb3J5KSk7CiAjZW5kaWYKLSAgICBwdXREaXJlY3RGdW5jdGlvbihnbG9iYWxFeGVjKCks
IEpTRnVuY3Rpb246OmNyZWF0ZShnbG9iYWxFeGVjKCksIHRoaXMsIGZ1bmN0aW9uU3RydWN0dXJl
KCksIDEsIElkZW50aWZpZXIoZ2xvYmFsRXhlYygpLCAidmVyc2lvbiIpLCBmdW5jdGlvblZlcnNp
b24pKTsKLSAgICBwdXREaXJlY3RGdW5jdGlvbihnbG9iYWxFeGVjKCksIEpTRnVuY3Rpb246OmNy
ZWF0ZShnbG9iYWxFeGVjKCksIHRoaXMsIGZ1bmN0aW9uU3RydWN0dXJlKCksIDEsIElkZW50aWZp
ZXIoZ2xvYmFsRXhlYygpLCAicnVuIiksIGZ1bmN0aW9uUnVuKSk7Ci0gICAgcHV0RGlyZWN0RnVu
Y3Rpb24oZ2xvYmFsRXhlYygpLCBKU0Z1bmN0aW9uOjpjcmVhdGUoZ2xvYmFsRXhlYygpLCB0aGlz
LCBmdW5jdGlvblN0cnVjdHVyZSgpLCAxLCBJZGVudGlmaWVyKGdsb2JhbEV4ZWMoKSwgImxvYWQi
KSwgZnVuY3Rpb25Mb2FkKSk7Ci0gICAgcHV0RGlyZWN0RnVuY3Rpb24oZ2xvYmFsRXhlYygpLCBK
U0Z1bmN0aW9uOjpjcmVhdGUoZ2xvYmFsRXhlYygpLCB0aGlzLCBmdW5jdGlvblN0cnVjdHVyZSgp
LCAxLCBJZGVudGlmaWVyKGdsb2JhbEV4ZWMoKSwgImNoZWNrU3ludGF4IiksIGZ1bmN0aW9uQ2hl
Y2tTeW50YXgpKTsKLSAgICBwdXREaXJlY3RGdW5jdGlvbihnbG9iYWxFeGVjKCksIEpTRnVuY3Rp
b246OmNyZWF0ZShnbG9iYWxFeGVjKCksIHRoaXMsIGZ1bmN0aW9uU3RydWN0dXJlKCksIDAsIElk
ZW50aWZpZXIoZ2xvYmFsRXhlYygpLCAicmVhZGxpbmUiKSwgZnVuY3Rpb25SZWFkbGluZSkpOwot
ICAgIHB1dERpcmVjdEZ1bmN0aW9uKGdsb2JhbEV4ZWMoKSwgSlNGdW5jdGlvbjo6Y3JlYXRlKGds
b2JhbEV4ZWMoKSwgdGhpcywgZnVuY3Rpb25TdHJ1Y3R1cmUoKSwgMCwgSWRlbnRpZmllcihnbG9i
YWxFeGVjKCksICJwcmVjaXNlVGltZSIpLCBmdW5jdGlvblByZWNpc2VUaW1lKSk7CisgICAgICAg
IHB1dERpcmVjdEZ1bmN0aW9uKGdsb2JhbEV4ZWMoKSwgSlNGdW5jdGlvbjo6Y3JlYXRlKGdsb2Jh
bEV4ZWMoKSwgdGhpcywgZnVuY3Rpb25TdHJ1Y3R1cmUoKSwgMSwgSWRlbnRpZmllcihnbG9iYWxF
eGVjKCksICJ2ZXJzaW9uIiksIGZ1bmN0aW9uVmVyc2lvbikpOworICAgICAgICBwdXREaXJlY3RG
dW5jdGlvbihnbG9iYWxFeGVjKCksIEpTRnVuY3Rpb246OmNyZWF0ZShnbG9iYWxFeGVjKCksIHRo
aXMsIGZ1bmN0aW9uU3RydWN0dXJlKCksIDEsIElkZW50aWZpZXIoZ2xvYmFsRXhlYygpLCAicnVu
IiksIGZ1bmN0aW9uUnVuKSk7CisgICAgICAgIHB1dERpcmVjdEZ1bmN0aW9uKGdsb2JhbEV4ZWMo
KSwgSlNGdW5jdGlvbjo6Y3JlYXRlKGdsb2JhbEV4ZWMoKSwgdGhpcywgZnVuY3Rpb25TdHJ1Y3R1
cmUoKSwgMSwgSWRlbnRpZmllcihnbG9iYWxFeGVjKCksICJsb2FkIiksIGZ1bmN0aW9uTG9hZCkp
OworICAgICAgICBwdXREaXJlY3RGdW5jdGlvbihnbG9iYWxFeGVjKCksIEpTRnVuY3Rpb246OmNy
ZWF0ZShnbG9iYWxFeGVjKCksIHRoaXMsIGZ1bmN0aW9uU3RydWN0dXJlKCksIDEsIElkZW50aWZp
ZXIoZ2xvYmFsRXhlYygpLCAiY2hlY2tTeW50YXgiKSwgZnVuY3Rpb25DaGVja1N5bnRheCkpOwor
ICAgICAgICBwdXREaXJlY3RGdW5jdGlvbihnbG9iYWxFeGVjKCksIEpTRnVuY3Rpb246OmNyZWF0
ZShnbG9iYWxFeGVjKCksIHRoaXMsIGZ1bmN0aW9uU3RydWN0dXJlKCksIDAsIElkZW50aWZpZXIo
Z2xvYmFsRXhlYygpLCAicmVhZGxpbmUiKSwgZnVuY3Rpb25SZWFkbGluZSkpOworICAgICAgICBw
dXREaXJlY3RGdW5jdGlvbihnbG9iYWxFeGVjKCksIEpTRnVuY3Rpb246OmNyZWF0ZShnbG9iYWxF
eGVjKCksIHRoaXMsIGZ1bmN0aW9uU3RydWN0dXJlKCksIDAsIElkZW50aWZpZXIoZ2xvYmFsRXhl
YygpLCAicHJlY2lzZVRpbWUiKSwgZnVuY3Rpb25QcmVjaXNlVGltZSkpOwogCiAjaWYgRU5BQkxF
KFNBTVBMSU5HX0ZMQUdTKQotICAgIHB1dERpcmVjdEZ1bmN0aW9uKGdsb2JhbEV4ZWMoKSwgSlNG
dW5jdGlvbjo6Y3JlYXRlKGdsb2JhbEV4ZWMoKSwgdGhpcywgZnVuY3Rpb25TdHJ1Y3R1cmUoKSwg
MSwgSWRlbnRpZmllcihnbG9iYWxFeGVjKCksICJzZXRTYW1wbGluZ0ZsYWdzIiksIGZ1bmN0aW9u
U2V0U2FtcGxpbmdGbGFncykpOwotICAgIHB1dERpcmVjdEZ1bmN0aW9uKGdsb2JhbEV4ZWMoKSwg
SlNGdW5jdGlvbjo6Y3JlYXRlKGdsb2JhbEV4ZWMoKSwgdGhpcywgZnVuY3Rpb25TdHJ1Y3R1cmUo
KSwgMSwgSWRlbnRpZmllcihnbG9iYWxFeGVjKCksICJjbGVhclNhbXBsaW5nRmxhZ3MiKSwgZnVu
Y3Rpb25DbGVhclNhbXBsaW5nRmxhZ3MpKTsKKyAgICAgICAgcHV0RGlyZWN0RnVuY3Rpb24oZ2xv
YmFsRXhlYygpLCBKU0Z1bmN0aW9uOjpjcmVhdGUoZ2xvYmFsRXhlYygpLCB0aGlzLCBmdW5jdGlv
blN0cnVjdHVyZSgpLCAxLCBJZGVudGlmaWVyKGdsb2JhbEV4ZWMoKSwgInNldFNhbXBsaW5nRmxh
Z3MiKSwgZnVuY3Rpb25TZXRTYW1wbGluZ0ZsYWdzKSk7CisgICAgICAgIHB1dERpcmVjdEZ1bmN0
aW9uKGdsb2JhbEV4ZWMoKSwgSlNGdW5jdGlvbjo6Y3JlYXRlKGdsb2JhbEV4ZWMoKSwgdGhpcywg
ZnVuY3Rpb25TdHJ1Y3R1cmUoKSwgMSwgSWRlbnRpZmllcihnbG9iYWxFeGVjKCksICJjbGVhclNh
bXBsaW5nRmxhZ3MiKSwgZnVuY3Rpb25DbGVhclNhbXBsaW5nRmxhZ3MpKTsKICNlbmRpZgogCi0g
ICAgSlNPYmplY3QqIGFycmF5ID0gY29uc3RydWN0RW1wdHlBcnJheShnbG9iYWxFeGVjKCkpOwot
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYXJndW1lbnRzLnNpemUoKTsgKytpKQotICAgICAg
ICBhcnJheS0+cHV0KGdsb2JhbEV4ZWMoKSwgaSwganNTdHJpbmcoZ2xvYmFsRXhlYygpLCBhcmd1
bWVudHNbaV0pKTsKLSAgICBwdXREaXJlY3QoZ2xvYmFsRXhlYygpLT5nbG9iYWxEYXRhKCksIElk
ZW50aWZpZXIoZ2xvYmFsRXhlYygpLCAiYXJndW1lbnRzIiksIGFycmF5KTsKKyAgICAgICAgSlNP
YmplY3QqIGFycmF5ID0gY29uc3RydWN0RW1wdHlBcnJheShnbG9iYWxFeGVjKCkpOworICAgICAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGFyZ3VtZW50cy5zaXplKCk7ICsraSkKKyAgICAgICAg
ICAgIGFycmF5LT5wdXQoZ2xvYmFsRXhlYygpLCBpLCBqc1N0cmluZyhnbG9iYWxFeGVjKCksIGFy
Z3VtZW50c1tpXSkpOworICAgICAgICBwdXREaXJlY3QoZ2xvYmFsRXhlYygpLT5nbG9iYWxEYXRh
KCksIElkZW50aWZpZXIoZ2xvYmFsRXhlYygpLCAiYXJndW1lbnRzIiksIGFycmF5KTsKKyAgICB9
Cit9OworQ09NUElMRV9BU1NFUlQoIUlzSW50ZWdlcjxHbG9iYWxPYmplY3Q+Ojp2YWx1ZSwgV1RG
X0lzSW50ZWdlcl9HbG9iYWxPYmplY3RfZmFsc2UpOworQVNTRVJUX0NMQVNTX0ZJVFNfSU5fQ0VM
TChHbG9iYWxPYmplY3QpOworCitHbG9iYWxPYmplY3Q6Okdsb2JhbE9iamVjdChKU0dsb2JhbERh
dGEmIGdsb2JhbERhdGEsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBWZWN0b3I8VVN0cmlu
Zz4mIGFyZ3VtZW50cykKKyAgICA6IEpTR2xvYmFsT2JqZWN0KGdsb2JhbERhdGEsIHN0cnVjdHVy
ZSkKK3sKKyAgICBmaW5pc2hBbGxvY2F0aW9ucyhhcmd1bWVudHMpOwogfQogCiBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uUHJpbnQoRXhlY1N0YXRlKiBleGVjKQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JJbnN0YW5jZS5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvckluc3RhbmNlLmNwcAppbmRleCAwNDM1
MzcyZjEyNjM5YmFiZDY0MTBkY2ZlMDM0ODFmYTkyMjJkOWFhLi5hMWY5MWNkNjk5ZTM3N2I5M2Vj
NjhlNDIwZmJkNDJjNjI2ZmZiMmUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9FcnJvckluc3RhbmNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9FcnJvckluc3RhbmNlLmNwcApAQCAtMzAsNyArMzAsNyBAQCBFcnJvckluc3RhbmNlOjpF
cnJvckluc3RhbmNlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUpCiAgICAgLCBtX2FwcGVuZFNvdXJjZVRvTWVzc2FnZShmYWxzZSkKIHsKICAgICBBU1NFUlQo
aW5oZXJpdHMoJnNfaW5mbykpOwotICAgIHB1dERpcmVjdChnbG9iYWxEYXRhLCBnbG9iYWxEYXRh
LnByb3BlcnR5TmFtZXMtPm1lc3NhZ2UsIGpzU3RyaW5nKCZnbG9iYWxEYXRhLCAiIiksIERvbnRF
bnVtKTsKKyAgICBmaW5pc2hBbGxvY2F0aW9ucyhnbG9iYWxEYXRhKTsKIH0KIAogRXJyb3JJbnN0
YW5jZTo6RXJyb3JJbnN0YW5jZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFN0cnVjdHVyZSog
c3RydWN0dXJlLCBjb25zdCBVU3RyaW5nJiBtZXNzYWdlKQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JJbnN0YW5jZS5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvRXJyb3JJbnN0YW5jZS5oCmluZGV4IGQ2MWVlOTc1ZWMxMGRmZDc4NDc3NWU3
M2I1YTE4MjExZjhjMDk0NzguLmIzMjkwODJiNGZlNjM0NGFkM2M4Mzk1N2I3ZjA4ODhiYjEwMzY4
MGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9ySW5zdGFu
Y2UuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvckluc3RhbmNlLmgK
QEAgLTUwLDYgKzUwLDExIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBleHBsaWNpdCBFcnJv
ckluc3RhbmNlKEpTR2xvYmFsRGF0YSYsIFN0cnVjdHVyZSopOwogICAgICAgICBleHBsaWNpdCBF
cnJvckluc3RhbmNlKEpTR2xvYmFsRGF0YSYsIFN0cnVjdHVyZSosIGNvbnN0IFVTdHJpbmcmKTsK
IAorICAgICAgICB2b2lkIGZpbmlzaEFsbG9jYXRpb25zKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0
YSkKKyAgICAgICAgeworICAgICAgICAgICAgcHV0RGlyZWN0KGdsb2JhbERhdGEsIGdsb2JhbERh
dGEucHJvcGVydHlOYW1lcy0+bWVzc2FnZSwganNTdHJpbmcoJmdsb2JhbERhdGEsICIiKSwgRG9u
dEVudW0pOworICAgICAgICB9CisKICAgICAgICAgYm9vbCBtX2FwcGVuZFNvdXJjZVRvTWVzc2Fn
ZTsKICAgICB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9F
cnJvclByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvclBy
b3RvdHlwZS5jcHAKaW5kZXggM2E2OWRkOTBlMjJmNDljZThhZTA2M2IxZmZlOTRiNjYxOTJmNDE0
ZS4uODlhM2Y0MDlkZTQzYmYyOTAwZTMyNjE4MzZiZWE5OTRhMzFmYTEzZCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JQcm90b3R5cGUuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yUHJvdG90eXBlLmNwcApAQCAtNTMsOSAr
NTMsOCBAQCBBU1NFUlRfQ0xBU1NfRklUU19JTl9DRUxMKEVycm9yUHJvdG90eXBlKTsKIEVycm9y
UHJvdG90eXBlOjpFcnJvclByb3RvdHlwZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlKQogICAgIDogRXJyb3JJbnN0YW5j
ZShleGVjLT5nbG9iYWxEYXRhKCksIHN0cnVjdHVyZSkKIHsKLSAgICBwdXREaXJlY3QoZXhlYy0+
Z2xvYmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkubmFtZSwganNOb250cml2aWFsU3Ry
aW5nKGV4ZWMsICJFcnJvciIpLCBEb250RW51bSk7Ci0KICAgICBBU1NFUlQoaW5oZXJpdHMoJnNf
aW5mbykpOworICAgIGZpbmlzaEFsbG9jYXRpb25zKGV4ZWMpOwogICAgIHB1dEFub255bW91c1Zh
bHVlKGdsb2JhbE9iamVjdC0+Z2xvYmFsRGF0YSgpLCAwLCBnbG9iYWxPYmplY3QpOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvclByb3RvdHlwZS5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JQcm90b3R5cGUuaAppbmRleCA0
MDUyODM2MWFiYjIxMmEzYjQ2NjViYTQ0MWYyYTIwNTFhOGUwYTJlLi5kNDhjZDc0NTIxNjk2OTQ0
YWE3MDdhYjA5NjEwN2JjOGJiMzUzMjk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9FcnJvclByb3RvdHlwZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0Vycm9yUHJvdG90eXBlLmgKQEAgLTQ1LDYgKzQ1LDExIEBAIG5hbWVzcGFjZSBKU0Mg
ewogCiAgICAgcHJvdGVjdGVkOgogICAgICAgICBFcnJvclByb3RvdHlwZShFeGVjU3RhdGUqLCBK
U0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSopOworICAgICAgICB2b2lkIGZpbmlzaEFsbG9jYXRp
b25zKEV4ZWNTdGF0ZSogZXhlYykKKyAgICAgICAgeworICAgICAgICAgICAgcHV0RGlyZWN0KGV4
ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLm5hbWUsIGpzTm9udHJpdmlh
bFN0cmluZyhleGVjLCAiRXJyb3IiKSwgRG9udEVudW0pOworICAgICAgICB9CisKICAgICAgICAg
c3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gT3ZlcnJpZGVzR2V0T3duUHJv
cGVydHlTbG90IHwgRXJyb3JJbnN0YW5jZTo6U3RydWN0dXJlRmxhZ3M7CiAgICAgICAgIHN0YXRp
YyBjb25zdCB1bnNpZ25lZCBBbm9ueW1vdXNTbG90Q291bnQgPSBFcnJvckluc3RhbmNlOjpBbm9u
eW1vdXNTbG90Q291bnQgKyAxOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9FeGVjdXRhYmxlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4
ZWN1dGFibGUuY3BwCmluZGV4IDY3N2E4OWJmMzc1NDM4YmU5NDAwMDRjNTJmZWUwN2QzYThiODBk
ZTYuLjcyN2Y4YjE2ZDEwZjg4YmMxMDg5ODk5MWI2OWYxODBhNjAyZDY5MmEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuY3BwCkBAIC0xNDQsNyArMTQ0LDcg
QEAgRnVuY3Rpb25FeGVjdXRhYmxlOjpGdW5jdGlvbkV4ZWN1dGFibGUoSlNHbG9iYWxEYXRhJiBn
bG9iYWxEYXRhLCBjb25zdCBJZGVudGlmaWUKIHsKICAgICBtX2ZpcnN0TGluZSA9IGZpcnN0TGlu
ZTsKICAgICBtX2xhc3RMaW5lID0gbGFzdExpbmU7Ci0gICAgbV9uYW1lVmFsdWUuc2V0KGdsb2Jh
bERhdGEsIHRoaXMsIGpzU3RyaW5nKCZnbG9iYWxEYXRhLCBuYW1lLnVzdHJpbmcoKSkpOworICAg
IGZpbmlzaEFsbG9jYXRpb25zKGdsb2JhbERhdGEsIG5hbWUpOwogfQogCiBGdW5jdGlvbkV4ZWN1
dGFibGU6OkZ1bmN0aW9uRXhlY3V0YWJsZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZp
ZXImIG5hbWUsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgYm9vbCBmb3JjZVVzZXNBcmd1bWVu
dHMsIEZ1bmN0aW9uUGFyYW1ldGVycyogcGFyYW1ldGVycywgYm9vbCBpblN0cmljdENvbnRleHQs
IGludCBmaXJzdExpbmUsIGludCBsYXN0TGluZSkKQEAgLTE1Nyw3ICsxNTcsNyBAQCBGdW5jdGlv
bkV4ZWN1dGFibGU6OkZ1bmN0aW9uRXhlY3V0YWJsZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElk
ZW50aWZpZXImIG5hbWUsCiB7CiAgICAgbV9maXJzdExpbmUgPSBmaXJzdExpbmU7CiAgICAgbV9s
YXN0TGluZSA9IGxhc3RMaW5lOwotICAgIG1fbmFtZVZhbHVlLnNldChleGVjLT5nbG9iYWxEYXRh
KCksIHRoaXMsIGpzU3RyaW5nKCZleGVjLT5nbG9iYWxEYXRhKCksIG5hbWUudXN0cmluZygpKSk7
CisgICAgZmluaXNoQWxsb2NhdGlvbnMoZXhlYy0+Z2xvYmFsRGF0YSgpLCBuYW1lKTsKIH0KIAog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmgKaW5kZXggYmFiMzJi
Mjk4NzVjZGI0YTk1NjEzN2IwNzM3ZDIyOWE4NzFhYTZkOS4uOWU4ZjNiNDQ4YmZlNTBjOGE4NTZh
ZDRjODdjYTNiYzZmZWViYTliNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRXhlY3V0YWJsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4
ZWN1dGFibGUuaApAQCAtNTA0LDYgKzUwNCwxMiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAg
CiAgICAgICAgIHN0YXRpYyBjb25zdCBDbGFzc0luZm8gc19pbmZvOwogCisgICAgcHJvdGVjdGVk
OgorICAgICAgICB2b2lkIGZpbmlzaEFsbG9jYXRpb25zKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0
YSwgY29uc3QgSWRlbnRpZmllciYgbmFtZSkKKyAgICAgICAgeworICAgICAgICAgICAgbV9uYW1l
VmFsdWUuc2V0KGdsb2JhbERhdGEsIHRoaXMsIGpzU3RyaW5nKCZnbG9iYWxEYXRhLCBuYW1lLnVz
dHJpbmcoKSkpOworICAgICAgICB9CisKICAgICBwcml2YXRlOgogICAgICAgICBGdW5jdGlvbkV4
ZWN1dGFibGUoSlNHbG9iYWxEYXRhJiwgY29uc3QgSWRlbnRpZmllciYgbmFtZSwgY29uc3QgU291
cmNlQ29kZSYsIGJvb2wgZm9yY2VVc2VzQXJndW1lbnRzLCBGdW5jdGlvblBhcmFtZXRlcnMqLCBi
b29sLCBpbnQgZmlyc3RMaW5lLCBpbnQgbGFzdExpbmUpOwogICAgICAgICBGdW5jdGlvbkV4ZWN1
dGFibGUoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgbmFtZSwgY29uc3QgU291cmNlQ29k
ZSYsIGJvb2wgZm9yY2VVc2VzQXJndW1lbnRzLCBGdW5jdGlvblBhcmFtZXRlcnMqLCBib29sLCBp
bnQgZmlyc3RMaW5lLCBpbnQgbGFzdExpbmUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSW50ZXJuYWxGdW5jdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9JbnRlcm5hbEZ1bmN0aW9uLmNwcAppbmRleCBjM2IwN2Y4Mjk3MDI4ZTk2ZjJm
ZjUwM2Q5NTE3OGYxY2NmOThmNmFlLi43MGEwNjIwYTNhZmU0YWI5ZDM5ZjNhNDYwOWFkYmY3YjFi
ZGIxYmJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRlcm5h
bEZ1bmN0aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRlcm5h
bEZ1bmN0aW9uLmNwcApAQCAtNDUsNyArNDUsNyBAQCBJbnRlcm5hbEZ1bmN0aW9uOjpJbnRlcm5h
bEZ1bmN0aW9uKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgSlNHbG9iYWxPYmplY3QqIGdsbwog
ICAgIDogSlNPYmplY3RXaXRoR2xvYmFsT2JqZWN0KGdsb2JhbE9iamVjdCwgc3RydWN0dXJlKQog
ewogICAgIEFTU0VSVChpbmhlcml0cygmc19pbmZvKSk7Ci0gICAgcHV0RGlyZWN0KCpnbG9iYWxE
YXRhLCBnbG9iYWxEYXRhLT5wcm9wZXJ0eU5hbWVzLT5uYW1lLCBqc1N0cmluZyhnbG9iYWxEYXRh
LCBuYW1lLmlzTnVsbCgpID8gIiIgOiBuYW1lLnVzdHJpbmcoKSksIERvbnREZWxldGUgfCBSZWFk
T25seSB8IERvbnRFbnVtKTsKKyAgICBmaW5pc2hBbGxvY2F0aW9ucygqZ2xvYmFsRGF0YSwgbmFt
ZSk7CiB9CiAKIGNvbnN0IFVTdHJpbmcmIEludGVybmFsRnVuY3Rpb246Om5hbWUoRXhlY1N0YXRl
KiBleGVjKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50ZXJu
YWxGdW5jdGlvbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50ZXJuYWxGdW5j
dGlvbi5oCmluZGV4IDgzMjQzYjNmZGZmNmQ0Y2Y4YmYzNGZjMTc0NWRmNTY1YjlmNGY3ZGYuLjEy
OTlhM2JmZjFlNzc5NjNiOWI0OWMzMWQ0NWNhZjg5NTAwMmEwZmUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGVybmFsRnVuY3Rpb24uaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRlcm5hbEZ1bmN0aW9uLmgKQEAgLTU0LDYgKzU0LDEx
IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIEludGVybmFsRnVuY3Rpb24oSlNHbG9iYWxE
YXRhKiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBjb25zdCBJZGVudGlmaWVyJik7CiAK
KyAgICAgICAgdm9pZCBmaW5pc2hBbGxvY2F0aW9ucyhKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEs
IGNvbnN0IElkZW50aWZpZXImIG5hbWUpCisgICAgICAgIHsKKyAgICAgICAgICAgIHB1dERpcmVj
dChnbG9iYWxEYXRhLCBnbG9iYWxEYXRhLnByb3BlcnR5TmFtZXMtPm5hbWUsIGpzU3RyaW5nKCZn
bG9iYWxEYXRhLCBuYW1lLmlzTnVsbCgpID8gIiIgOiBuYW1lLnVzdHJpbmcoKSksIERvbnREZWxl
dGUgfCBSZWFkT25seSB8IERvbnRFbnVtKTsKKyAgICAgICAgfQorCiAgICAgcHJpdmF0ZToKICAg
ICAgICAgdmlydHVhbCBDYWxsVHlwZSBnZXRDYWxsRGF0YShDYWxsRGF0YSYpID0gMDsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCeXRlQXJyYXkuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCeXRlQXJyYXkuY3BwCmluZGV4IGQ5MjRh
N2ExYjM4OGNiNWM1MTJiOThkMzMxZDVjNTA0NjdmYTllNDQuLjAwZGQ4Y2ZkNmU5MmU5MjI4MzEy
ZjI1MDlkZWUxOThiNDczYzNlMDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTQnl0ZUFycmF5LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0J5dGVBcnJheS5jcHAKQEAgLTM5LDcgKzM5LDcgQEAgSlNCeXRlQXJyYXk6OkpTQnl0ZUFy
cmF5KEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEJ5dGVBcnJheSogc3Rv
cmEKICAgICA6IEpTTm9uRmluYWxPYmplY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBzdHJ1Y3R1cmUp
CiAgICAgLCBtX3N0b3JhZ2Uoc3RvcmFnZSkKIHsKLSAgICBwdXREaXJlY3QoZXhlYy0+Z2xvYmFs
RGF0YSgpLCBleGVjLT5nbG9iYWxEYXRhKCkucHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBqc051bWJl
cihtX3N0b3JhZ2UtPmxlbmd0aCgpKSwgUmVhZE9ubHkgfCBEb250RGVsZXRlKTsKKyAgICBmaW5p
c2hBbGxvY2F0aW9ucyhleGVjKTsKIH0KICAgICAgICAgCiBKU0J5dGVBcnJheSogSlNCeXRlQXJy
YXk6OmNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBCeXRlQXJy
YXkqIHN0b3JhZ2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0J5dGVBcnJheS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCeXRlQXJyYXku
aAppbmRleCA4NjkxNTY5YjUyZjYxZWY1NzI4MDI3ODZhZTI3OTgxMzg0MDUwM2E0Li4xM2Q3NDdk
ZDhlODMwMmI0ZmY3NDY5ZDFmZDY0NWIzZWNjODY0Njg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0J5dGVBcnJheS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTQnl0ZUFycmF5LmgKQEAgLTEwNCw2ICsxMDQsMTEgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgcHJvdGVjdGVkOgogICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3Ry
dWN0dXJlRmxhZ3MgPSBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBPdmVycmlkZXNHZXRQ
cm9wZXJ0eU5hbWVzIHwgSlNPYmplY3Q6OlN0cnVjdHVyZUZsYWdzOwogCisgICAgICAgIHZvaWQg
ZmluaXNoQWxsb2NhdGlvbnMoRXhlY1N0YXRlKiBleGVjKQorICAgICAgICB7CisgICAgICAgICAg
ICBwdXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5nbG9iYWxEYXRhKCkucHJvcGVy
dHlOYW1lcy0+bGVuZ3RoLCBqc051bWJlcihtX3N0b3JhZ2UtPmxlbmd0aCgpKSwgUmVhZE9ubHkg
fCBEb250RGVsZXRlKTsKKyAgICAgICAgfQorCiAgICAgcHJpdmF0ZToKICAgICAgICAgSlNCeXRl
QXJyYXkoVlB0clN0ZWFsaW5nSGFja1R5cGUpCiAgICAgICAgICAgICA6IEpTTm9uRmluYWxPYmpl
Y3QoVlB0clN0ZWFsaW5nSGFjaykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTRnVuY3Rpb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNG
dW5jdGlvbi5jcHAKaW5kZXggMTNmMWVhYjUyMWRlZDVhZGFjMWM3MjkwODA2NzM0YjY0MDJiMGE0
Zi4uZDliNDNmYzQzM2EzYTk1MjhkZGFmNDM3MTc4MmYwYWNiMjI5YmIxNyAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAKQEAgLTYzLDI1ICs2MywyMyBA
QCBKU0Z1bmN0aW9uOjpKU0Z1bmN0aW9uKFZQdHJTdGVhbGluZ0hhY2tUeXBlKQogCiBKU0Z1bmN0
aW9uOjpKU0Z1bmN0aW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGludCBsZW5ndGgsIGNvbnN0IElkZW50aWZpZXIm
IG5hbWUsIE5hdGl2ZUV4ZWN1dGFibGUqIHRodW5rKQogICAgIDogQmFzZShnbG9iYWxPYmplY3Qs
IHN0cnVjdHVyZSkKLSAgICAsIG1fZXhlY3V0YWJsZShleGVjLT5nbG9iYWxEYXRhKCksIHRoaXMs
IHRodW5rKQorICAgICwgbV9leGVjdXRhYmxlKCkKICAgICAsIG1fc2NvcGVDaGFpbihleGVjLT5n
bG9iYWxEYXRhKCksIHRoaXMsIGdsb2JhbE9iamVjdC0+Z2xvYmFsU2NvcGVDaGFpbigpKQogewog
ICAgIEFTU0VSVChpbmhlcml0cygmc19pbmZvKSk7Ci0gICAgcHV0RGlyZWN0KGV4ZWMtPmdsb2Jh
bERhdGEoKSwgZXhlYy0+Z2xvYmFsRGF0YSgpLnByb3BlcnR5TmFtZXMtPm5hbWUsIGpzU3RyaW5n
KGV4ZWMsIG5hbWUuaXNOdWxsKCkgPyAiIiA6IG5hbWUudXN0cmluZygpKSwgRG9udERlbGV0ZSB8
IFJlYWRPbmx5IHwgRG9udEVudW0pOwotICAgIHB1dERpcmVjdChleGVjLT5nbG9iYWxEYXRhKCks
IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5ndGgsIGpzTnVtYmVyKGxlbmd0aCksIERvbnREZWxl
dGUgfCBSZWFkT25seSB8IERvbnRFbnVtKTsKKworICAgIGZpbmlzaEFsbG9jYXRpb25zKGV4ZWMs
IGxlbmd0aCwgbmFtZSwgdGh1bmspOwogfQogCiBKU0Z1bmN0aW9uOjpKU0Z1bmN0aW9uKEV4ZWNT
dGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUsIGludCBsZW5ndGgsIGNvbnN0IElkZW50aWZpZXImIG5hbWUsIE5hdGl2ZUZ1bmN0aW9u
IGZ1bmMpCiAgICAgOiBCYXNlKGdsb2JhbE9iamVjdCwgc3RydWN0dXJlKQorICAgICwgbV9leGVj
dXRhYmxlKCkKICAgICAsIG1fc2NvcGVDaGFpbihleGVjLT5nbG9iYWxEYXRhKCksIHRoaXMsIGds
b2JhbE9iamVjdC0+Z2xvYmFsU2NvcGVDaGFpbigpKQogewogICAgIEFTU0VSVChpbmhlcml0cygm
c19pbmZvKSk7CiAgICAgCiAgICAgLy8gQ2FuJ3QgZG8gdGhpcyBkdXJpbmcgaW5pdGlhbGl6YXRp
b24gYmVjYXVzZSBnZXRIb3N0RnVuY3Rpb24gbWlnaHQgZG8gYSBHQyBhbGxvY2F0aW9uLgotICAg
IG1fZXhlY3V0YWJsZS5zZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCB0aGlzLCBleGVjLT5nbG9iYWxE
YXRhKCkuZ2V0SG9zdEZ1bmN0aW9uKGZ1bmMpKTsKLSAgICAKLSAgICBwdXREaXJlY3QoZXhlYy0+
Z2xvYmFsRGF0YSgpLCBleGVjLT5nbG9iYWxEYXRhKCkucHJvcGVydHlOYW1lcy0+bmFtZSwganNT
dHJpbmcoZXhlYywgbmFtZS5pc051bGwoKSA/ICIiIDogbmFtZS51c3RyaW5nKCkpLCBEb250RGVs
ZXRlIHwgUmVhZE9ubHkgfCBEb250RW51bSk7Ci0gICAgcHV0RGlyZWN0KGV4ZWMtPmdsb2JhbERh
dGEoKSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLmxlbmd0aCwganNOdW1iZXIobGVuZ3RoKSwgRG9u
dERlbGV0ZSB8IFJlYWRPbmx5IHwgRG9udEVudW0pOworICAgIGZpbmlzaEFsbG9jYXRpb25zKGV4
ZWMsIGxlbmd0aCwgbmFtZSwgIGV4ZWMtPmdsb2JhbERhdGEoKS5nZXRIb3N0RnVuY3Rpb24oZnVu
YykpOwogfQogCiBKU0Z1bmN0aW9uOjpKU0Z1bmN0aW9uKEV4ZWNTdGF0ZSogZXhlYywgRnVuY3Rp
b25FeGVjdXRhYmxlKiBleGVjdXRhYmxlLCBTY29wZUNoYWluTm9kZSogc2NvcGVDaGFpbk5vZGUp
CkBAIC05NCw2ICs5MiwxMyBAQCBKU0Z1bmN0aW9uOjpKU0Z1bmN0aW9uKEV4ZWNTdGF0ZSogZXhl
YywgRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlLCBTY29wZUNoYQogICAgIHB1dERpcmVj
dE9mZnNldChleGVjLT5nbG9iYWxEYXRhKCksIHNjb3BlQ2hhaW5Ob2RlLT5nbG9iYWxPYmplY3Qt
PmZ1bmN0aW9uTmFtZU9mZnNldCgpLCBleGVjdXRhYmxlLT5uYW1lVmFsdWUoKSk7CiB9CiAKK2lu
bGluZSB2b2lkIEpTRnVuY3Rpb246OmZpbmlzaEFsbG9jYXRpb25zKEV4ZWNTdGF0ZSogZXhlYywg
aW50IGxlbmd0aCwgY29uc3QgSWRlbnRpZmllciYgbmFtZSwgRXhlY3V0YWJsZUJhc2UqIGV4ZWN1
dGFibGUpCit7CisgICAgbV9leGVjdXRhYmxlLnNldChleGVjLT5nbG9iYWxEYXRhKCksIHRoaXMs
IGV4ZWN1dGFibGUpOworICAgIHB1dERpcmVjdChleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPmds
b2JhbERhdGEoKS5wcm9wZXJ0eU5hbWVzLT5uYW1lLCBqc1N0cmluZyhleGVjLCBuYW1lLmlzTnVs
bCgpID8gIiIgOiBuYW1lLnVzdHJpbmcoKSksIERvbnREZWxldGUgfCBSZWFkT25seSB8IERvbnRF
bnVtKTsKKyAgICBwdXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5h
bWVzKCkubGVuZ3RoLCBqc051bWJlcihsZW5ndGgpLCBEb250RGVsZXRlIHwgUmVhZE9ubHkgfCBE
b250RW51bSk7Cit9CisKIEpTRnVuY3Rpb246On5KU0Z1bmN0aW9uKCkKIHsKICAgICBBU1NFUlQo
dnB0cigpID09IEpTR2xvYmFsRGF0YTo6anNGdW5jdGlvblZQdHIpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oCmluZGV4IDI5Y2JmZDBmNGY2YWUyMjc0ODZkYjAy
NTY2YzQ5MjU0ZDc0MjJkYjQuLjI1MzI1MzUxYjJhZDBkNTcxMDIyZDZkOGVlMDNjZTUyMWJkNWQz
M2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24u
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmgKQEAgLTEy
Myw2ICsxMjMsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBwcm90ZWN0ZWQ6CiAgICAgICAgIGNv
bnN0IHN0YXRpYyB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IE92ZXJyaWRlc0dldE93blByb3Bl
cnR5U2xvdCB8IEltcGxlbWVudHNIYXNJbnN0YW5jZSB8IE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4g
fCBPdmVycmlkZXNHZXRQcm9wZXJ0eU5hbWVzIHwgSlNPYmplY3Q6OlN0cnVjdHVyZUZsYWdzOwog
CisgICAgICAgIHZvaWQgZmluaXNoQWxsb2NhdGlvbnMoRXhlY1N0YXRlKiwgaW50IGxlbmd0aCwg
Y29uc3QgSWRlbnRpZmllciYgbmFtZSwgRXhlY3V0YWJsZUJhc2UqKTsKKwogICAgIHByaXZhdGU6
CiAgICAgICAgIGV4cGxpY2l0IEpTRnVuY3Rpb24oVlB0clN0ZWFsaW5nSGFja1R5cGUpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAppbmRleCA1
OWNhZDUwYWMzNGFlOWRjNzBjNDZmMDAxODIwNDM4MDBkOGRlN2U0Li4xZmJmMGE2OWU3N2I3OTc0
MDA4MTFhMmFhZjAxMThmNDdhMTgwYzE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKQEAgLTE2MSw3ICsxNjEsNyBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICAgICAgewogICAgICAgICAgICAgQ09NUElMRV9BU1NFUlQoSlNHbG9iYWxPYmplY3Q6
OkFub255bW91c1Nsb3RDb3VudCA9PSAxLCBKU0dsb2JhbE9iamVjdF9oYXNfb25seV9hX3Npbmds
ZV9zbG90KTsKICAgICAgICAgICAgIHB1dFRoaXNUb0Fub255bW91c1ZhbHVlKDApOwotICAgICAg
ICAgICAgaW5pdCh0aGlzKTsKKyAgICAgICAgICAgIGZpbmlzaEFsbG9jYXRpb25zKHRoaXMpOwog
ICAgICAgICB9CiAKICAgICAgICAgSlNHbG9iYWxPYmplY3QoSlNHbG9iYWxEYXRhJiBnbG9iYWxE
YXRhLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNPYmplY3QqIHRoaXNWYWx1ZSkKQEAgLTE3Myw2
ICsxNzMsMTEgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHsKICAgICAgICAgICAgIENPTVBJ
TEVfQVNTRVJUKEpTR2xvYmFsT2JqZWN0OjpBbm9ueW1vdXNTbG90Q291bnQgPT0gMSwgSlNHbG9i
YWxPYmplY3RfaGFzX29ubHlfYV9zaW5nbGVfc2xvdCk7CiAgICAgICAgICAgICBwdXRUaGlzVG9B
bm9ueW1vdXNWYWx1ZSgwKTsKKyAgICAgICAgICAgIGZpbmlzaEFsbG9jYXRpb25zKHRoaXNWYWx1
ZSk7CisgICAgICAgIH0KKworICAgICAgICB2b2lkIGZpbmlzaEFsbG9jYXRpb25zKEpTT2JqZWN0
KiB0aGlzVmFsdWUpCisgICAgICAgIHsKICAgICAgICAgICAgIGluaXQodGhpc1ZhbHVlKTsKICAg
ICAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1By
b3BlcnR5TmFtZUl0ZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
UHJvcGVydHlOYW1lSXRlcmF0b3IuY3BwCmluZGV4IDgwMTJlOWRkMTE1NmE3Njg4YWQyMGRjMTE1
OTlmMmEyZDUyZDhmODIuLmIyYzEzNjc5YmU4ZTY0ZWVmMGU5ZmUzMjRmZGNmZWVjMWNmZDZiMmYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1l
SXRlcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVy
dHlOYW1lSXRlcmF0b3IuY3BwCkBAIC00Myw5ICs0Myw3IEBAIGlubGluZSBKU1Byb3BlcnR5TmFt
ZUl0ZXJhdG9yOjpKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVy
dHlOCiAgICAgLCBtX2pzU3RyaW5nc1NpemUocHJvcGVydHlOYW1lQXJyYXlEYXRhLT5wcm9wZXJ0
eU5hbWVWZWN0b3IoKS5zaXplKCkpCiAgICAgLCBtX2pzU3RyaW5ncyhhZG9wdEFycmF5UHRyKG5l
dyBXcml0ZUJhcnJpZXI8VW5rbm93bj5bbV9qc1N0cmluZ3NTaXplXSkpCiB7Ci0gICAgUHJvcGVy
dHlOYW1lQXJyYXlEYXRhOjpQcm9wZXJ0eU5hbWVWZWN0b3ImIHByb3BlcnR5TmFtZVZlY3RvciA9
IHByb3BlcnR5TmFtZUFycmF5RGF0YS0+cHJvcGVydHlOYW1lVmVjdG9yKCk7Ci0gICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBtX2pzU3RyaW5nc1NpemU7ICsraSkKLSAgICAgICAgbV9qc1N0cmlu
Z3NbaV0uc2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhpcywganNPd25lZFN0cmluZyhleGVjLCBw
cm9wZXJ0eU5hbWVWZWN0b3JbaV0udXN0cmluZygpKSk7CisgICAgZmluaXNoQWxsb2NhdGlvbnMo
ZXhlYywgcHJvcGVydHlOYW1lQXJyYXlEYXRhKTsKIH0KIAogSlNQcm9wZXJ0eU5hbWVJdGVyYXRv
ciogSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcjo6Y3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmpl
Y3QqIG8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3Bl
cnR5TmFtZUl0ZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3Bl
cnR5TmFtZUl0ZXJhdG9yLmgKaW5kZXggZDJiNjExZGY2YjMyMGIwOWNhNTNlYThiNzg5MDFiNTZl
MGJmZWZiNy4uODZlZGM3NDIwY2ExOWNlMTY3ZTA2YWYzMGI4ODBmNzQ3MDc0NGUyOSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVyYXRv
ci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lSXRl
cmF0b3IuaApAQCAtODQsNiArODQsMTQgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIAogICAg
ICAgICBzdGF0aWMgY29uc3QgQ2xhc3NJbmZvIHNfaW5mbzsKIAorICAgIHByb3RlY3RlZDoKKyAg
ICAgICAgdm9pZCBmaW5pc2hBbGxvY2F0aW9ucyhFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFt
ZUFycmF5RGF0YSogcHJvcGVydHlOYW1lQXJyYXlEYXRhKQorICAgICAgICB7CisgICAgICAgICAg
ICBQcm9wZXJ0eU5hbWVBcnJheURhdGE6OlByb3BlcnR5TmFtZVZlY3RvciYgcHJvcGVydHlOYW1l
VmVjdG9yID0gcHJvcGVydHlOYW1lQXJyYXlEYXRhLT5wcm9wZXJ0eU5hbWVWZWN0b3IoKTsKKyAg
ICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9qc1N0cmluZ3NTaXplOyArK2kpCisg
ICAgICAgICAgICAgICAgbV9qc1N0cmluZ3NbaV0uc2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhp
cywganNPd25lZFN0cmluZyhleGVjLCBwcm9wZXJ0eU5hbWVWZWN0b3JbaV0udXN0cmluZygpKSk7
CisgICAgICAgIH0KKwogICAgIHByaXZhdGU6CiAgICAgICAgIEpTUHJvcGVydHlOYW1lSXRlcmF0
b3IoRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lQXJyYXlEYXRhKiBwcm9wZXJ0eU5hbWVBcnJheURh
dGEsIHNpemVfdCBudW1DYWNoZWFibGVTbG90KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTU3RyaW5nLmgKaW5kZXggMzE3MTE3NTc2MWYzZThiNzY1NzhmZGNhNGQwZjRkNTMzYzAz
MmVmMi4uYWIzZWRkNTYyYzdjZjQyYWZiNmNiMmMyMmIwMWI3ODUxZTFkMGZiYSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5oCkBAIC0yNjcsMTEgKzI2Nyw3IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICAgICAgLCBtX2xlbmd0aCgwKQogICAgICAgICAgICAgLCBt
X2ZpYmVyQ291bnQoc19tYXhJbnRlcm5hbFJvcGVMZW5ndGgpCiAgICAgICAgIHsKLSAgICAgICAg
ICAgIHVuc2lnbmVkIGluZGV4ID0gMDsKLSAgICAgICAgICAgIGFwcGVuZFZhbHVlSW5Db25zdHJ1
Y3RBbmRJbmNyZW1lbnRMZW5ndGgoZXhlYywgaW5kZXgsIHYxKTsKLSAgICAgICAgICAgIGFwcGVu
ZFZhbHVlSW5Db25zdHJ1Y3RBbmRJbmNyZW1lbnRMZW5ndGgoZXhlYywgaW5kZXgsIHYyKTsKLSAg
ICAgICAgICAgIGFwcGVuZFZhbHVlSW5Db25zdHJ1Y3RBbmRJbmNyZW1lbnRMZW5ndGgoZXhlYywg
aW5kZXgsIHYzKTsKLSAgICAgICAgICAgIEFTU0VSVChpbmRleCA9PSBzX21heEludGVybmFsUm9w
ZUxlbmd0aCk7CisgICAgICAgICAgICBmaW5pc2hBbGxvY2F0aW9ucyhleGVjLCB2MSwgdjIsIHYz
KTsKICAgICAgICAgfQogCiAgICAgICAgIC8vIFRoaXMgY29uc3RydWN0b3IgY29uc3RydWN0cyBh
IG5ldyBzdHJpbmcgYnkgY29uY2F0ZW5hdGluZyB1MSAmIHUyLgpAQCAtMjk5LDYgKzI5NSwxNiBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIEFTU0VSVChpbmRleCA8PSBzX21heEludGVy
bmFsUm9wZUxlbmd0aCk7CiAgICAgICAgIH0KIAorICAgIHByb3RlY3RlZDoKKyAgICAgICAgdm9p
ZCBmaW5pc2hBbGxvY2F0aW9ucyhFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdjEsIEpTVmFsdWUg
djIsIEpTVmFsdWUgdjMpCisgICAgICAgIHsKKyAgICAgICAgICAgIHVuc2lnbmVkIGluZGV4ID0g
MDsKKyAgICAgICAgICAgIGFwcGVuZFZhbHVlSW5Db25zdHJ1Y3RBbmRJbmNyZW1lbnRMZW5ndGgo
ZXhlYywgaW5kZXgsIHYxKTsKKyAgICAgICAgICAgIGFwcGVuZFZhbHVlSW5Db25zdHJ1Y3RBbmRJ
bmNyZW1lbnRMZW5ndGgoZXhlYywgaW5kZXgsIHYyKTsKKyAgICAgICAgICAgIGFwcGVuZFZhbHVl
SW5Db25zdHJ1Y3RBbmRJbmNyZW1lbnRMZW5ndGgoZXhlYywgaW5kZXgsIHYzKTsKKyAgICAgICAg
ICAgIEFTU0VSVChpbmRleCA9PSBzX21heEludGVybmFsUm9wZUxlbmd0aCk7CisgICAgICAgIH0K
KwogICAgIHB1YmxpYzoKICAgICAgICAgc3RhdGljIEpTU3RyaW5nKiBjcmVhdGUoSlNHbG9iYWxE
YXRhJiBnbG9iYWxEYXRhLCBjb25zdCBVU3RyaW5nJiB2YWx1ZSkKICAgICAgICAgewpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXJyb3JDb25zdHJ1Y3Rv
ci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OYXRpdmVFcnJvckNvbnN0cnVj
dG9yLmNwcAppbmRleCA4NWZmMGE4MmJhMjI0NDBjNWZiMzg3M2JlNGZiZjI2NGFkZjJmNmEzLi5m
NzZlNDUxNWEzM2YyYzBkNzIwODdkYzVhYzFmZWY5MjljMDIzNTI4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OYXRpdmVFcnJvckNvbnN0cnVjdG9yLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OYXRpdmVFcnJvckNvbnN0cnVjdG9yLmNw
cApAQCAtMzcsMTMgKzM3LDcgQEAgTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvcjo6TmF0aXZlRXJyb3JD
b25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KgogewogICAgIEFTU0VS
VChpbmhlcml0cygmc19pbmZvKSk7CiAKLSAgICBOYXRpdmVFcnJvclByb3RvdHlwZSogcHJvdG90
eXBlID0gTmF0aXZlRXJyb3JQcm90b3R5cGU6OmNyZWF0ZShleGVjLCBnbG9iYWxPYmplY3QsIHBy
b3RvdHlwZVN0cnVjdHVyZSwgbmFtZUFuZE1lc3NhZ2UsIHRoaXMpOwotCi0gICAgcHV0RGlyZWN0
KGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLmxlbmd0aCwganNOdW1i
ZXIoMSksIERvbnREZWxldGUgfCBSZWFkT25seSB8IERvbnRFbnVtKTsgLy8gRUNNQSAxNS4xMS43
LjUKLSAgICBwdXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVz
KCkucHJvdG90eXBlLCBwcm90b3R5cGUsIERvbnREZWxldGUgfCBSZWFkT25seSB8IERvbnRFbnVt
KTsKLSAgICBtX2Vycm9yU3RydWN0dXJlLnNldChleGVjLT5nbG9iYWxEYXRhKCksIHRoaXMsIEVy
cm9ySW5zdGFuY2U6OmNyZWF0ZVN0cnVjdHVyZShleGVjLT5nbG9iYWxEYXRhKCksIHByb3RvdHlw
ZSkpOwotICAgIEFTU0VSVChtX2Vycm9yU3RydWN0dXJlKTsKLSAgICBBU1NFUlQobV9lcnJvclN0
cnVjdHVyZS0+dHlwZUluZm8oKS50eXBlKCkgPT0gT2JqZWN0VHlwZSk7CisgICAgZmluaXNoQWxs
b2NhdGlvbnMoZXhlYywgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGVTdHJ1Y3R1cmUsIG5hbWVBbmRN
ZXNzYWdlKTsKIH0KIAogdm9pZCBOYXRpdmVFcnJvckNvbnN0cnVjdG9yOjp2aXNpdENoaWxkcmVu
KFNsb3RWaXNpdG9yJiB2aXNpdG9yKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5oCmluZGV4IDNlYWJjN2E1NWNhZmNhN2M5
ZjAzZTEyNjgyOGVlYTJjZTFjNTI4NzUuLmQyY2IxMjhhZWJmNDEyYjZkMTRkMDljYWU5NDAyZDk1
NmQyODMyODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2
ZUVycm9yQ29uc3RydWN0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9O
YXRpdmVFcnJvckNvbnN0cnVjdG9yLmgKQEAgLTIyLDYgKzIyLDcgQEAKICNkZWZpbmUgTmF0aXZl
RXJyb3JDb25zdHJ1Y3Rvcl9oCiAKICNpbmNsdWRlICJJbnRlcm5hbEZ1bmN0aW9uLmgiCisjaW5j
bHVkZSAiTmF0aXZlRXJyb3JQcm90b3R5cGUuaCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKQEAgLTQ3
LDYgKzQ4LDE4IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIFN0cnVjdHVyZSogZXJyb3JT
dHJ1Y3R1cmUoKSB7IHJldHVybiBtX2Vycm9yU3RydWN0dXJlLmdldCgpOyB9CiAKKyAgICBwcm90
ZWN0ZWQ6CisgICAgICAgIHZvaWQgZmluaXNoQWxsb2NhdGlvbnMoRXhlY1N0YXRlKiBleGVjLCBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHByb3RvdHlwZVN0cnVjdHVy
ZSwgY29uc3QgVVN0cmluZyYgbmFtZUFuZE1lc3NhZ2UpCisgICAgICAgIHsKKyAgICAgICAgICAg
IE5hdGl2ZUVycm9yUHJvdG90eXBlKiBwcm90b3R5cGUgPSBOYXRpdmVFcnJvclByb3RvdHlwZTo6
Y3JlYXRlKGV4ZWMsIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlU3RydWN0dXJlLCBuYW1lQW5kTWVz
c2FnZSwgdGhpcyk7CisKKyAgICAgICAgICAgIHB1dERpcmVjdChleGVjLT5nbG9iYWxEYXRhKCks
IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5ndGgsIGpzTnVtYmVyKDEpLCBEb250RGVsZXRlIHwg
UmVhZE9ubHkgfCBEb250RW51bSk7IC8vIEVDTUEgMTUuMTEuNy41CisgICAgICAgICAgICBwdXRE
aXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkucHJvdG90eXBl
LCBwcm90b3R5cGUsIERvbnREZWxldGUgfCBSZWFkT25seSB8IERvbnRFbnVtKTsKKyAgICAgICAg
ICAgIG1fZXJyb3JTdHJ1Y3R1cmUuc2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhpcywgRXJyb3JJ
bnN0YW5jZTo6Y3JlYXRlU3RydWN0dXJlKGV4ZWMtPmdsb2JhbERhdGEoKSwgcHJvdG90eXBlKSk7
CisgICAgICAgICAgICBBU1NFUlQobV9lcnJvclN0cnVjdHVyZSk7CisgICAgICAgICAgICBBU1NF
UlQobV9lcnJvclN0cnVjdHVyZS0+dHlwZUluZm8oKS50eXBlKCkgPT0gT2JqZWN0VHlwZSk7Cisg
ICAgICAgIH0KKwogICAgIHByaXZhdGU6CiAgICAgICAgIE5hdGl2ZUVycm9yQ29uc3RydWN0b3Io
RXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBTdHJ1Y3R1cmUqIHByb3Rv
dHlwZVN0cnVjdHVyZSwgY29uc3QgVVN0cmluZyYpOwogICAgICAgICBzdGF0aWMgY29uc3QgdW5z
aWduZWQgU3RydWN0dXJlRmxhZ3MgPSBPdmVycmlkZXNWaXNpdENoaWxkcmVuIHwgSW50ZXJuYWxG
dW5jdGlvbjo6U3RydWN0dXJlRmxhZ3M7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9OYXRpdmVFcnJvclByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9OYXRpdmVFcnJvclByb3RvdHlwZS5jcHAKaW5kZXggNjgzMDY2MDEyN2FmMzJi
ZTBmYjI4NzhlNDA5ZWNkNDgyZDlkMjgxYi4uODJkOWI4NDNmNzJmZGQxY2MyNWQ5MmE3Y2MzNjA4
YzVjODI3NzBhYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0
aXZlRXJyb3JQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L05hdGl2ZUVycm9yUHJvdG90eXBlLmNwcApAQCAtMzMsNiArMzMsMTEgQEAgQVNTRVJUX0NMQVNT
X0ZJVFNfSU5fQ0VMTChOYXRpdmVFcnJvclByb3RvdHlwZSk7CiBOYXRpdmVFcnJvclByb3RvdHlw
ZTo6TmF0aXZlRXJyb3JQcm90b3R5cGUoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgVVN0cmluZyYgbmFtZUFu
ZE1lc3NhZ2UsIE5hdGl2ZUVycm9yQ29uc3RydWN0b3IqIGNvbnN0cnVjdG9yKQogICAgIDogRXJy
b3JQcm90b3R5cGUoZXhlYywgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpCiB7CisgICAgZmluaXNo
QWxsb2NhdGlvbnMoZXhlYywgbmFtZUFuZE1lc3NhZ2UsIGNvbnN0cnVjdG9yKTsKK30KKworaW5s
aW5lIHZvaWQgTmF0aXZlRXJyb3JQcm90b3R5cGU6OmZpbmlzaEFsbG9jYXRpb25zKEV4ZWNTdGF0
ZSogZXhlYywgY29uc3QgVVN0cmluZyYgbmFtZUFuZE1lc3NhZ2UsIE5hdGl2ZUVycm9yQ29uc3Ry
dWN0b3IqIGNvbnN0cnVjdG9yKQorewogICAgIHB1dERpcmVjdChleGVjLT5nbG9iYWxEYXRhKCks
IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5uYW1lLCBqc1N0cmluZyhleGVjLCBuYW1lQW5kTWVzc2Fn
ZSksIERvbnRFbnVtKTsKICAgICBwdXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5w
cm9wZXJ0eU5hbWVzKCkubWVzc2FnZSwganNTdHJpbmcoZXhlYywgbmFtZUFuZE1lc3NhZ2UpLCBE
b250RW51bSk7CiAgICAgcHV0RGlyZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+cHJvcGVy
dHlOYW1lcygpLmNvbnN0cnVjdG9yLCBjb25zdHJ1Y3RvciwgRG9udEVudW0pOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXJyb3JQcm90b3R5cGUuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUVycm9yUHJvdG90eXBlLmgKaW5k
ZXggMWJiMjMwOTAzMzU0ZmNhN2MxMGEwNTZmNTQ5NWY2MzY5NTQ3Y2Q1OS4uMDQ0ZTg1YmY5ODQx
NWRkNjg5NmQyMzM4MjU4ZjgyODQzOWUwNDMxYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvTmF0aXZlRXJyb3JQcm90b3R5cGUuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9OYXRpdmVFcnJvclByb3RvdHlwZS5oCkBAIC0zNyw2ICszNyw5IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gbmV3IChhbGxv
Y2F0ZUNlbGw8TmF0aXZlRXJyb3JQcm90b3R5cGU+KCpleGVjLT5oZWFwKCkpKSBOYXRpdmVFcnJv
clByb3RvdHlwZShleGVjLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgbmFtZUFuZE1lc3NhZ2Us
IGNvbnN0cnVjdG9yKTsKICAgICAgICAgfQorCisgICAgcHJvdGVjdGVkOgorICAgICAgICB2b2lk
IGZpbmlzaEFsbG9jYXRpb25zKEV4ZWNTdGF0ZSosIGNvbnN0IFVTdHJpbmcmIG5hbWVBbmRNZXNz
YWdlLCBOYXRpdmVFcnJvckNvbnN0cnVjdG9yKik7CiAgICAgfTsKIAogfSAvLyBuYW1lc3BhY2Ug
SlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdPYmpl
Y3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0LmNwcApp
bmRleCA2N2RjMjkxYjA5ZWNmN2Q3ZWJhODhhYWYyOTZmYTUzNDhlYzIyY2Y5Li4xZDBjN2FiZjk4
ZDA4N2MwYjUxN2I1MjAyNDZlMmE4ZWZlYjMwNzY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TdHJpbmdPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1N0cmluZ09iamVjdC5jcHAKQEAgLTI5LDEzICsyOSw2IEBAIEFTU0VSVF9D
TEFTU19GSVRTX0lOX0NFTEwoU3RyaW5nT2JqZWN0KTsKIAogY29uc3QgQ2xhc3NJbmZvIFN0cmlu
Z09iamVjdDo6c19pbmZvID0geyAiU3RyaW5nIiwgJkpTV3JhcHBlck9iamVjdDo6c19pbmZvLCAw
LCAwIH07CiAKLVN0cmluZ09iamVjdDo6U3RyaW5nT2JqZWN0KEV4ZWNTdGF0ZSogZXhlYywgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUpCi0gICAgOiBKU1dyYXBwZXJPYmplY3QoZXhlYy0+Z2xvYmFsRGF0
YSgpLCBzdHJ1Y3R1cmUpCi17Ci0gICAgQVNTRVJUKGluaGVyaXRzKCZzX2luZm8pKTsKLSAgICBz
ZXRJbnRlcm5hbFZhbHVlKGV4ZWMtPmdsb2JhbERhdGEoKSwganNFbXB0eVN0cmluZyhleGVjKSk7
Ci19Ci0KIFN0cmluZ09iamVjdDo6U3RyaW5nT2JqZWN0KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0
YSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTU3RyaW5nKiBzdHJpbmcpCiAgICAgOiBKU1dyYXBw
ZXJPYmplY3QoZ2xvYmFsRGF0YSwgc3RydWN0dXJlKQogewpAQCAtNDMsMTMgKzM2LDYgQEAgU3Ry
aW5nT2JqZWN0OjpTdHJpbmdPYmplY3QoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSwgSlNTdHIKICAgICBzZXRJbnRlcm5hbFZhbHVlKGdsb2JhbERhdGEsIHN0
cmluZyk7CiB9CiAKLVN0cmluZ09iamVjdDo6U3RyaW5nT2JqZWN0KEV4ZWNTdGF0ZSogZXhlYywg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IFVTdHJpbmcmIHN0cmluZykKLSAgICA6IEpTV3Jh
cHBlck9iamVjdChleGVjLT5nbG9iYWxEYXRhKCksIHN0cnVjdHVyZSkKLXsKLSAgICBBU1NFUlQo
aW5oZXJpdHMoJnNfaW5mbykpOwotICAgIHNldEludGVybmFsVmFsdWUoZXhlYy0+Z2xvYmFsRGF0
YSgpLCBqc1N0cmluZyhleGVjLCBzdHJpbmcpKTsKLX0KLQogYm9vbCBTdHJpbmdPYmplY3Q6Omdl
dE93blByb3BlcnR5U2xvdChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3Bl
cnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQogewogICAgIGlmIChpbnRlcm5hbFZhbHVlKCkt
PmdldFN0cmluZ1Byb3BlcnR5U2xvdChleGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QpKQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0LmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdPYmplY3QuaAppbmRleCA4MGU1YmVjNTc3
Nzc1NTFhYTIxOTc3NDUwNTdhZTE5MDkyOGE3MTZlLi43ZDEzNWMxZTQxMjJmYWU3ZmFmZjE4ZGIy
ZTFiYTM3ZDc1Y2Q0NTVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TdHJpbmdPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJp
bmdPYmplY3QuaApAQCAtMzIsMTQgKzMyLDE1IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAg
IHN0YXRpYyBTdHJpbmdPYmplY3QqIGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZSog
c3RydWN0dXJlKQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gbmV3IChhbGxvY2F0ZUNl
bGw8U3RyaW5nT2JqZWN0PigqZXhlYy0+aGVhcCgpKSkgU3RyaW5nT2JqZWN0KGV4ZWMsIHN0cnVj
dHVyZSk7ICAKKyAgICAgICAgICAgIEpTU3RyaW5nKiBzdHJpbmcgPSBqc0VtcHR5U3RyaW5nKGV4
ZWMpOworICAgICAgICAgICAgcmV0dXJuIG5ldyAoYWxsb2NhdGVDZWxsPFN0cmluZ09iamVjdD4o
KmV4ZWMtPmhlYXAoKSkpIFN0cmluZ09iamVjdChleGVjLT5nbG9iYWxEYXRhKCksIHN0cnVjdHVy
ZSwgc3RyaW5nKTsgIAogICAgICAgICB9CiAgICAgICAgIHN0YXRpYyBTdHJpbmdPYmplY3QqIGNy
ZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBVU3RyaW5n
JiBzdHIpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBuZXcgKGFsbG9jYXRlQ2VsbDxT
dHJpbmdPYmplY3Q+KCpleGVjLT5oZWFwKCkpKSBTdHJpbmdPYmplY3QoZXhlYywgc3RydWN0dXJl
LCBzdHIpOyAgCisgICAgICAgICAgICBKU1N0cmluZyogc3RyaW5nID0ganNTdHJpbmcoZXhlYywg
c3RyKTsKKyAgICAgICAgICAgIHJldHVybiBuZXcgKGFsbG9jYXRlQ2VsbDxTdHJpbmdPYmplY3Q+
KCpleGVjLT5oZWFwKCkpKSBTdHJpbmdPYmplY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBzdHJ1Y3R1
cmUsIHN0cmluZyk7CiAgICAgICAgIH0KICAgICAgICAgc3RhdGljIFN0cmluZ09iamVjdCogY3Jl
YXRlKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgSlNTdHJpbmcqKTsKLSAgICAgICAgCiAK
ICAgICAgICAgdmlydHVhbCBib29sIGdldE93blByb3BlcnR5U2xvdChFeGVjU3RhdGUqLCBjb25z
dCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwogICAgICAgICB2aXJ0
dWFsIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5
TmFtZSwgUHJvcGVydHlTbG90Jik7CkBAIC01OSw4ICs2MCw2IEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgICAgICB9CiAKICAgICBwcm90ZWN0ZWQ6Ci0gICAgICAgIFN0cmluZ09iamVjdChFeGVjU3Rh
dGUqLCBTdHJ1Y3R1cmUqKTsKLSAgICAgICAgU3RyaW5nT2JqZWN0KEV4ZWNTdGF0ZSosIFN0cnVj
dHVyZSosIGNvbnN0IFVTdHJpbmcmKTsKICAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0
cnVjdHVyZUZsYWdzID0gT3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwgT3ZlcnJpZGVzR2V0
UHJvcGVydHlOYW1lcyB8IEpTV3JhcHBlck9iamVjdDo6U3RydWN0dXJlRmxhZ3M7CiAgICAgICAg
IFN0cmluZ09iamVjdChKU0dsb2JhbERhdGEmLCBTdHJ1Y3R1cmUqLCBKU1N0cmluZyopOwogICAg
IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdPYmpl
Y3RUaGF0TWFzcXVlcmFkZXNBc1VuZGVmaW5lZC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvU3RyaW5nT2JqZWN0VGhhdE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQuaAppbmRleCBkNDIz
MGVhOGY0NTMxZDRjZTg4NGYwYmExNTc0ODkwZjYxYTQ0ODEyLi42OTQzNmQ3ZTM2ZjQ4MTA2Mjkw
ZmI4Y2VmNjZlOWQ2NmQ3OTY3YzRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TdHJpbmdPYmplY3RUaGF0TWFzcXVlcmFkZXNBc1VuZGVmaW5lZC5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ09iamVjdFRoYXRNYXNxdWVyYWRlc0Fz
VW5kZWZpbmVkLmgKQEAgLTM0LDEzICszNCwxNCBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAg
ICBzdGF0aWMgU3RyaW5nT2JqZWN0VGhhdE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQqIGNyZWF0ZShF
eGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFVTdHJpbmcmIHN0cmluZykKICAgICAgICAgeworICAgICAg
ICAgICAgSlNTdHJpbmcqIG5ld1N0cmluZyA9IGpzU3RyaW5nKGV4ZWMsIHN0cmluZyk7CiAgICAg
ICAgICAgICByZXR1cm4gbmV3IChhbGxvY2F0ZUNlbGw8U3RyaW5nT2JqZWN0VGhhdE1hc3F1ZXJh
ZGVzQXNVbmRlZmluZWQ+KCpleGVjLT5oZWFwKCkpKSBTdHJpbmdPYmplY3RUaGF0TWFzcXVlcmFk
ZXNBc1VuZGVmaW5lZChleGVjLAotICAgICAgICAgICAgICAgIGNyZWF0ZVN0cnVjdHVyZShleGVj
LT5nbG9iYWxEYXRhKCksIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+c3RyaW5nUHJvdG90
eXBlKCkpLCBzdHJpbmcpOworICAgICAgICAgICAgICAgIGNyZWF0ZVN0cnVjdHVyZShleGVjLT5n
bG9iYWxEYXRhKCksIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+c3RyaW5nUHJvdG90eXBl
KCkpLCBuZXdTdHJpbmcpOwogICAgICAgICB9CiAKICAgICBwcml2YXRlOgotICAgICAgICBTdHJp
bmdPYmplY3RUaGF0TWFzcXVlcmFkZXNBc1VuZGVmaW5lZChFeGVjU3RhdGUqIGV4ZWMsIFN0cnVj
dHVyZSogc3RydWN0dXJlLCBjb25zdCBVU3RyaW5nJiBzdHJpbmcpCi0gICAgICAgICAgICA6IFN0
cmluZ09iamVjdChleGVjLCBzdHJ1Y3R1cmUsIHN0cmluZykKKyAgICAgICAgU3RyaW5nT2JqZWN0
VGhhdE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSwgSlNTdHJpbmcqIHN0cmluZykKKyAgICAgICAgICAgIDogU3RyaW5nT2JqZWN0KGV4
ZWMtPmdsb2JhbERhdGEoKSwgc3RydWN0dXJlLCBzdHJpbmcpCiAgICAgICAgIHsKICAgICAgICAg
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdQcm90
b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJvdG90eXBl
LmNwcAppbmRleCA0Mjg3ZDNhZmViNTQ4OWI2M2Y5MTRkNmVlYTkwMTE2NGQ1N2U4NDU2Li4wZmM2
MDZmNzQ3M2Y4OTk1YTNmNGE4ZGFmZDYzYjAwOTc0ZmNlZDU5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHAKQEAgLTEzMSw4ICsxMzEs
OCBAQCBjb25zdCBDbGFzc0luZm8gU3RyaW5nUHJvdG90eXBlOjpzX2luZm8gPSB7ICJTdHJpbmci
LCAmU3RyaW5nT2JqZWN0OjpzX2luZm8sIDAsCiAqLwogCiAvLyBFQ01BIDE1LjUuNAotU3RyaW5n
UHJvdG90eXBlOjpTdHJpbmdQcm90b3R5cGUoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKLSAgICA6IFN0cmluZ09iamVj
dChleGVjLCBzdHJ1Y3R1cmUpCitTdHJpbmdQcm90b3R5cGU6OlN0cmluZ1Byb3RvdHlwZShFeGVj
U3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3Ry
dWN0dXJlLCBKU1N0cmluZyogbmFtZUFuZE1lc3NhZ2UpCisgICAgOiBTdHJpbmdPYmplY3QoZXhl
Yy0+Z2xvYmFsRGF0YSgpLCBzdHJ1Y3R1cmUsIG5hbWVBbmRNZXNzYWdlKQogewogICAgIEFTU0VS
VChpbmhlcml0cygmc19pbmZvKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU3RyaW5nUHJvdG90eXBlLmgKaW5kZXggMDNhNjdkOGM1ZWNlMTg0YzY0NWEyMWE0NWU1M2Fl
YzUyOTE2ODYyMC4uMjE3NTg1ZmE2MGQ2YjkyNzA0N2VmZTk0OTA1NDI0NDMzYzdmZDBmYyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmgKQEAg
LTI5LDE0ICsyOSwxNSBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIFN0cmluZ1Byb3Rv
dHlwZSA6IHB1YmxpYyBTdHJpbmdPYmplY3QgewogICAgIHByaXZhdGU6Ci0gICAgICAgIFN0cmlu
Z1Byb3RvdHlwZShFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSopOworICAg
ICAgICBTdHJpbmdQcm90b3R5cGUoRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1
cmUqLCBKU1N0cmluZyopOwogCiAgICAgcHVibGljOgogICAgICAgICB0eXBlZGVmIFN0cmluZ09i
amVjdCBCYXNlOwogCiAgICAgICAgIHN0YXRpYyBTdHJpbmdQcm90b3R5cGUqIGNyZWF0ZShFeGVj
U3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3Ry
dWN0dXJlKQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gbmV3IChhbGxvY2F0ZUNlbGw8
U3RyaW5nUHJvdG90eXBlPigqZXhlYy0+aGVhcCgpKSkgU3RyaW5nUHJvdG90eXBlKGV4ZWMsIGds
b2JhbE9iamVjdCwgc3RydWN0dXJlKTsKKyAgICAgICAgICAgIEpTU3RyaW5nKiBuYW1lQW5kTWVz
c2FnZSA9IGpzRW1wdHlTdHJpbmcoZXhlYyk7CisgICAgICAgICAgICByZXR1cm4gbmV3IChhbGxv
Y2F0ZUNlbGw8U3RyaW5nUHJvdG90eXBlPigqZXhlYy0+aGVhcCgpKSkgU3RyaW5nUHJvdG90eXBl
KGV4ZWMsIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBuYW1lQW5kTWVzc2FnZSk7CiAgICAgICAg
IH0KIAogICAgICAgICB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSos
IGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
aW5kZXggZTJlZDJlNjhhODNhNjY0YmY5OGVjN2E1NTA1MTcxYTYzOTEwNzBjZi4uZTQ3OTQ1MmEw
OTBjODIxMzgzNTY2MWUzMDUzM2UwMjY3YzZjNThmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDI5
IEBACiAyMDExLTA4LTE1ICBNYXJrIEhhaG5lbmJlcmcgIDxtaGFobmVuYmVyZ0BhcHBsZS5jb20+
CiAKKyAgICAgICAgTW92ZSBhbGxvY2F0aW9uIGluIGNvbnN0cnVjdG9ycyBpbnRvIHNlcGFyYXRl
IGZpbmlzaEFsbG9jYXRpb24oKSBtZXRob2RzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD02NjI2NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4KKyAKKyAgICAgICAgVGhpcyBuZXh0IHBh
dGNoIGlzIHRoZSByZWZhY3RvcmluZyB0byBwdXQgYWxsIGFsbG9jYXRpb25zIHRoYXQgbmVlZCB0
byBiZSBkb25lIGFmdGVyIAorICAgICAgICB0aGUgb2JqZWN0J3MgaW5pdGlhbGl6YXRpb24gbGlz
dCBoYXMgZXhlY3V0ZWQgYnV0IGJlZm9yZSB0aGUgb2JqZWN0IGlzIHJlYWR5IGZvciB1c2UgCisg
ICAgICAgIGludG8gYSBzZXBhcmF0ZSBmaW5pc2hBbGxvY2F0aW9ucygpIG1ldGhvZC4gIFRoaXMg
bWV0aG9kIGlzIHN0aWxsIGNhbGxlZCBieSB0aGUgY29uc3RydWN0b3IsIAorICAgICAgICBzbyB0
aGUgcGF0Y2ggZG9lc24ndCByZXNvbHZlIGFueSBwb3RlbnRpYWwgaXNzdWVzLCBpdCdzIGp1c3Qg
dG8gc2V0IHVwIHRoZSBjb2RlIGZvciBmdXJ0aGVyIHJlZmFjdG9yaW5nLgorCisgICAgICAgICog
YnJpZGdlL29iamMvT2JqQ1J1bnRpbWVPYmplY3QuaDoKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6
Ok9iakNSdW50aW1lT2JqZWN0OjpjcmVhdGUpOgorICAgICAgICAqIGJyaWRnZS9vYmpjL09iakNS
dW50aW1lT2JqZWN0Lm1tOgorICAgICAgICAqIGJyaWRnZS9vYmpjL29iamNfaW5zdGFuY2UubW06
CisgICAgICAgIChPYmpDUnVudGltZU1ldGhvZDo6Y3JlYXRlKToKKyAgICAgICAgKE9iakNSdW50
aW1lTWV0aG9kOjpPYmpDUnVudGltZU1ldGhvZCk6CisgICAgICAgICogYnJpZGdlL3J1bnRpbWVf
YXJyYXkuY3BwOgorICAgICAgICAqIGJyaWRnZS9ydW50aW1lX2FycmF5Lmg6CisgICAgICAgIChK
U0M6OlJ1bnRpbWVBcnJheTo6Y3JlYXRlKToKKworMjAxMS0wOC0xNSAgTWFyayBIYWhuZW5iZXJn
ICA8bWhhaG5lbmJlcmdAYXBwbGUuY29tPgorCiAgICAgICAgIFJlZmFjdG9yIEpTIG9iamVjdHMg
dG8gYWxsb2NhdGUgaW4gc3RhdGljIGNyZWF0ZSBtZXRob2RzIHJhdGhlciB0aGFuIGNvbnN0cnVj
dG9ycwogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjUz
NDcKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvT2JqQ1J1bnRpbWVP
YmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL09iakNSdW50aW1lT2JqZWN0LmgK
aW5kZXggNjRjY2ZmNmVhYWZjY2NiNTUxYzBkNWRhNzBmMjQ2MTNhY2FlMjU2MS4uYTg4MTNmZTNm
NzhlOGZhNTNlMjNjM2JhYWI5NzBjNDMyZGUwZmZkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYnJpZGdlL29iamMvT2JqQ1J1bnRpbWVPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
cmlkZ2Uvb2JqYy9PYmpDUnVudGltZU9iamVjdC5oCkBAIC0zOSw2ICszOSw4IEBAIHB1YmxpYzoK
IAogICAgIHN0YXRpYyBPYmpDUnVudGltZU9iamVjdCogY3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUGFzc1JlZlB0cjxPYmpjSW5zdGFuY2U+IGlu
c3QpCiAgICAgeworICAgICAgICAvLyBGSVhNRTogZGVwcmVjYXRlZEdldERPTVN0cnVjdHVyZSB1
c2VzIHRoZSBwcm90b3R5cGUgb2ZmIG9mIHRoZSB3cm9uZyBnbG9iYWwgb2JqZWN0CisgICAgICAg
IC8vIFdlIG5lZWQgdG8gcGFzcyBpbiB0aGUgcmlnaHQgZ2xvYmFsIG9iamVjdCBmb3IgImkiLgog
ICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IFdlYkNvcmU6OmRlcHJlY2F0ZWRHZXRET01T
dHJ1Y3R1cmU8T2JqQ1J1bnRpbWVPYmplY3Q+KGV4ZWMpOwogICAgICAgICByZXR1cm4gbmV3IChh
bGxvY2F0ZUNlbGw8T2JqQ1J1bnRpbWVPYmplY3Q+KCpleGVjLT5oZWFwKCkpKSBPYmpDUnVudGlt
ZU9iamVjdChleGVjLCBnbG9iYWxPYmplY3QsIGluc3QsIHN0cnVjdHVyZSk7CiAgICAgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvT2JqQ1J1bnRpbWVPYmplY3QubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9PYmpDUnVudGltZU9iamVjdC5tbQppbmRleCA1
ODQ4ZmUzMDM3YTFmZTU2NTUwZGMwMjJhNTdkMGNlNTQwNjVjNmU0Li5lYTg2MjYzMmRlYzRjZmU3
YWVkZDYxZGU1ODRiYjJkNWMwZWI4ZmE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlk
Z2Uvb2JqYy9PYmpDUnVudGltZU9iamVjdC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uv
b2JqYy9PYmpDUnVudGltZU9iamVjdC5tbQpAQCAtMzYsOCArMzYsNiBAQCBuYW1lc3BhY2UgQmlu
ZGluZ3MgewogY29uc3QgQ2xhc3NJbmZvIE9iakNSdW50aW1lT2JqZWN0OjpzX2luZm8gPSB7ICJP
YmpDUnVudGltZU9iamVjdCIsICZSdW50aW1lT2JqZWN0OjpzX2luZm8sIDAsIDAgfTsKIAogT2Jq
Q1J1bnRpbWVPYmplY3Q6Ok9iakNSdW50aW1lT2JqZWN0KEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUGFzc1JlZlB0cjxPYmpjSW5zdGFuY2U+IGluc3RhbmNl
LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKLSAgICAvLyBGSVhNRTogZGVwcmVjYXRlZEdldERPTVN0
cnVjdHVyZSB1c2VzIHRoZSBwcm90b3R5cGUgb2ZmIG9mIHRoZSB3cm9uZyBnbG9iYWwgb2JqZWN0
Ci0gICAgLy8gV2UgbmVlZCB0byBwYXNzIGluIHRoZSByaWdodCBnbG9iYWwgb2JqZWN0IGZvciAi
aSIuCiAgICAgOiBSdW50aW1lT2JqZWN0KGV4ZWMsIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBp
bnN0YW5jZSkKIHsKICAgICBBU1NFUlQoaW5oZXJpdHMoJnNfaW5mbykpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19pbnN0YW5jZS5tbSBiL1NvdXJjZS9XZWJD
b3JlL2JyaWRnZS9vYmpjL29iamNfaW5zdGFuY2UubW0KaW5kZXggMDQxZjkyMzc3NmJhNWQ4MDFm
NWQ3OGYzODI4YmQ5ZGU0ZmRlNzYyNy4uZGNkYzdiNmE2OGIzYmQ2NDg2NzFiZWRlNjdkNWI5OWI3
ZDYxZjA2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19pbnN0
YW5jZS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX2luc3RhbmNlLm1t
CkBAIC0xNzUsNyArMTc1LDEwIEBAIGNsYXNzIE9iakNSdW50aW1lTWV0aG9kIDogcHVibGljIFJ1
bnRpbWVNZXRob2QgewogcHVibGljOgogICAgIHN0YXRpYyBPYmpDUnVudGltZU1ldGhvZCogY3Jl
YXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3Qg
SWRlbnRpZmllciYgbmFtZSwgQmluZGluZ3M6Ok1ldGhvZExpc3QmIGxpc3QpCiAgICAgewotICAg
ICAgICByZXR1cm4gbmV3IChhbGxvY2F0ZUNlbGw8T2JqQ1J1bnRpbWVNZXRob2Q+KCpleGVjLT5o
ZWFwKCkpKSBPYmpDUnVudGltZU1ldGhvZChleGVjLCBnbG9iYWxPYmplY3QsIG5hbWUsIGxpc3Qp
OworICAgICAgICAvLyBGSVhNRTogZGVwcmVjYXRlZEdldERPTVN0cnVjdHVyZSB1c2VzIHRoZSBw
cm90b3R5cGUgb2ZmIG9mIHRoZSB3cm9uZyBnbG9iYWwgb2JqZWN0CisgICAgICAgIC8vIFdlIG5l
ZWQgdG8gcGFzcyBpbiB0aGUgcmlnaHQgZ2xvYmFsIG9iamVjdCBmb3IgImkiLgorICAgICAgICBT
dHJ1Y3R1cmUqIGRvbVN0cnVjdHVyZSA9IFdlYkNvcmU6OmRlcHJlY2F0ZWRHZXRET01TdHJ1Y3R1
cmU8T2JqQ1J1bnRpbWVNZXRob2Q+KGV4ZWMpOworICAgICAgICByZXR1cm4gbmV3IChhbGxvY2F0
ZUNlbGw8T2JqQ1J1bnRpbWVNZXRob2Q+KCpleGVjLT5oZWFwKCkpKSBPYmpDUnVudGltZU1ldGhv
ZChleGVjLCBnbG9iYWxPYmplY3QsIGRvbVN0cnVjdHVyZSwgbmFtZSwgbGlzdCk7CiAgICAgfQog
CiAgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTR2xvYmFsRGF0YSYgZ2xv
YmFsRGF0YSwgSlNWYWx1ZSBwcm90b3R5cGUpCkBAIC0xODYsMTAgKzE4OSw4IEBAIHB1YmxpYzoK
ICAgICBzdGF0aWMgY29uc3QgQ2xhc3NJbmZvIHNfaW5mbzsKIAogcHJpdmF0ZToKLSAgICBPYmpD
UnVudGltZU1ldGhvZChFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIGNvbnN0IElkZW50aWZpZXImIG5hbWUsIEJpbmRpbmdzOjpNZXRob2RMaXN0JiBsaXN0KQot
ICAgICAgICAvLyBGSVhNRTogZGVwcmVjYXRlZEdldERPTVN0cnVjdHVyZSB1c2VzIHRoZSBwcm90
b3R5cGUgb2ZmIG9mIHRoZSB3cm9uZyBnbG9iYWwgb2JqZWN0Ci0gICAgICAgIC8vIFdlIG5lZWQg
dG8gcGFzcyBpbiB0aGUgcmlnaHQgZ2xvYmFsIG9iamVjdCBmb3IgImkiLgotICAgICAgICA6IFJ1
bnRpbWVNZXRob2QoZXhlYywgZ2xvYmFsT2JqZWN0LCBXZWJDb3JlOjpkZXByZWNhdGVkR2V0RE9N
U3RydWN0dXJlPE9iakNSdW50aW1lTWV0aG9kPihleGVjKSwgbmFtZSwgbGlzdCkKKyAgICBPYmpD
UnVudGltZU1ldGhvZChFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBJZGVudGlmaWVyJiBuYW1lLCBCaW5kaW5n
czo6TWV0aG9kTGlzdCYgbGlzdCkKKyAgICAgICAgOiBSdW50aW1lTWV0aG9kKGV4ZWMsIGdsb2Jh
bE9iamVjdCwgc3RydWN0dXJlLCBuYW1lLCBsaXN0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGlu
aGVyaXRzKCZzX2luZm8pKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlk
Z2UvcnVudGltZV9hcnJheS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9hcnJh
eS5jcHAKaW5kZXggZDA1NjQ5NGVkODBhYTFkMzkxZmRlMGFiZDA5ZWRhNDIwNDI5MWI1NC4uYjVm
N2EwNzhiMmMwMGNmOGRmZGM4MDkwYzdhZjg0MDIxMjRkNjU3YiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfYXJyYXkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jy
aWRnZS9ydW50aW1lX2FycmF5LmNwcApAQCAtMzgsOCArMzgsNiBAQCBuYW1lc3BhY2UgSlNDIHsK
IGNvbnN0IENsYXNzSW5mbyBSdW50aW1lQXJyYXk6OnNfaW5mbyA9IHsgIlJ1bnRpbWVBcnJheSIs
ICZKU0FycmF5OjpzX2luZm8sIDAsIDAgfTsKIAogUnVudGltZUFycmF5OjpSdW50aW1lQXJyYXko
RXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgQmluZGluZ3M6OkFycmF5KiBh
cnJheSkKLSAgICAvLyBGSVhNRTogZGVwcmVjYXRlZEdldERPTVN0cnVjdHVyZSB1c2VzIHRoZSBw
cm90b3R5cGUgb2ZmIG9mIHRoZSB3cm9uZyBnbG9iYWwgb2JqZWN0Ci0gICAgLy8gV2UgbmVlZCB0
byBwYXNzIGluIHRoZSByaWdodCBnbG9iYWwgb2JqZWN0IGZvciAiYXJyYXkiLgogICAgIDogSlNB
cnJheShleGVjLT5nbG9iYWxEYXRhKCksIHN0cnVjdHVyZSkKIHsKICAgICBBU1NFUlQoaW5oZXJp
dHMoJnNfaW5mbykpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVf
YXJyYXkuaCBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX2FycmF5LmgKaW5kZXggNDll
MzkzZjg3OWY3NmQ3YWMzZTBjODVkMzA3MzZhNmQ3NTY2NmZkZC4uY2I3YmM2MzU3NzZkOGViYzkx
MDM5NTMyMGFlZmRlNDJiY2I5MDZkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdl
L3J1bnRpbWVfYXJyYXkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9hcnJh
eS5oCkBAIC0zOCw2ICszOCw4IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBSdW50aW1lQXJyYXkq
IGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIEJpbmRpbmdzOjpBcnJheSogYXJyYXkpCiAgICAgewor
ICAgICAgICAvLyBGSVhNRTogZGVwcmVjYXRlZEdldERPTVN0cnVjdHVyZSB1c2VzIHRoZSBwcm90
b3R5cGUgb2ZmIG9mIHRoZSB3cm9uZyBnbG9iYWwgb2JqZWN0CisgICAgICAgIC8vIFdlIG5lZWQg
dG8gcGFzcyBpbiB0aGUgcmlnaHQgZ2xvYmFsIG9iamVjdCBmb3IgImFycmF5Ii4KICAgICAgICAg
U3RydWN0dXJlKiBkb21TdHJ1Y3R1cmUgPSBXZWJDb3JlOjpkZXByZWNhdGVkR2V0RE9NU3RydWN0
dXJlPFJ1bnRpbWVBcnJheT4oZXhlYyk7CiAgICAgICAgIHJldHVybiBuZXcgKGFsbG9jYXRlQ2Vs
bDxSdW50aW1lQXJyYXk+KCpleGVjLT5oZWFwKCkpKSBSdW50aW1lQXJyYXkoZXhlYywgZG9tU3Ry
dWN0dXJlLCBhcnJheSk7CiAgICAgfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>104216</attachid>
            <date>2011-08-17 12:44:28 -0700</date>
            <delta_ts>2011-08-18 16:02:41 -0700</delta_ts>
            <desc>Change function name</desc>
            <filename>bug-66265-20110817124431.patch</filename>
            <type>text/plain</type>
            <size>45652</size>
            <attacher name="Mark Hahnenberg">mhahnenberg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTMxNjYKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDMy
ZDIwZTMwYTI0YWRlZDI1NmRhMmE2MjVlNDFhM2IwOWRkNmE4MGEuLjAyZmQ5ZWZkMjk3Yzg0OGRh
NDg3MGI2Njg1NjgwNDc3MmMyZDE2MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDcyIEBACisyMDExLTA4LTE3ICBNYXJrIEhhaG5lbmJlcmcgIDxtaGFobmVuYmVyZ0BhcHBs
ZS5jb20+CisKKyAgICAgICAgTW92ZSBhbGxvY2F0aW9uIGluIGNvbnN0cnVjdG9ycyBpbnRvIHNl
cGFyYXRlIGZpbmlzaEFsbG9jYXRpb24oKSBtZXRob2RzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NjI2NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlZmFjdG9yaW5nIHRvIHB1dCBhbGwgYWxsb2NhdGlv
bnMgdGhhdCBuZWVkIHRvIGJlIGRvbmUgYWZ0ZXIgCisgICAgICAgIHRoZSBvYmplY3QncyBpbml0
aWFsaXphdGlvbiBsaXN0IGhhcyBleGVjdXRlZCBidXQgYmVmb3JlIHRoZSBvYmplY3QgaXMgcmVh
ZHkgZm9yIHVzZSAKKyAgICAgICAgaW50byBhIHNlcGFyYXRlIGNvbnN0cnVjdG9yQm9keSgpIG1l
dGhvZC4gIFRoaXMgbWV0aG9kIGlzIHN0aWxsIGNhbGxlZCBieSB0aGUgY29uc3RydWN0b3IsIAor
ICAgICAgICBzbyB0aGUgcGF0Y2ggZG9lc24ndCByZXNvbHZlIGFueSBwb3RlbnRpYWwgaXNzdWVz
LCBpdCdzIGp1c3QgdG8gc2V0IHVwIHRoZSBjb2RlIGZvciBmdXJ0aGVyIHJlZmFjdG9yaW5nLgor
CisgICAgICAgICogSmF2YVNjcmlwdENvcmUuZXhwOgorICAgICAgICAqIGpzYy5jcHA6CisgICAg
ICAgIChHbG9iYWxPYmplY3Q6OmNvbnN0cnVjdG9yQm9keSk6CisgICAgICAgIChHbG9iYWxPYmpl
Y3Q6Okdsb2JhbE9iamVjdCk6CisgICAgICAgICogcnVudGltZS9FcnJvckluc3RhbmNlLmNwcDoK
KyAgICAgICAgKEpTQzo6RXJyb3JJbnN0YW5jZTo6RXJyb3JJbnN0YW5jZSk6CisgICAgICAgICog
cnVudGltZS9FcnJvckluc3RhbmNlLmg6CisgICAgICAgIChKU0M6OkVycm9ySW5zdGFuY2U6OmNv
bnN0cnVjdG9yQm9keSk6CisgICAgICAgICogcnVudGltZS9FcnJvclByb3RvdHlwZS5jcHA6Cisg
ICAgICAgIChKU0M6OkVycm9yUHJvdG90eXBlOjpFcnJvclByb3RvdHlwZSk6CisgICAgICAgIChK
U0M6OkVycm9yUHJvdG90eXBlOjpjb25zdHJ1Y3RvckJvZHkpOgorICAgICAgICAqIHJ1bnRpbWUv
RXJyb3JQcm90b3R5cGUuaDoKKyAgICAgICAgKiBydW50aW1lL0V4ZWN1dGFibGUuY3BwOgorICAg
ICAgICAoSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGU6OkZ1bmN0aW9uRXhlY3V0YWJsZSk6CisgICAg
ICAgICogcnVudGltZS9FeGVjdXRhYmxlLmg6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uRXhlY3V0
YWJsZTo6Y29uc3RydWN0b3JCb2R5KToKKyAgICAgICAgKiBydW50aW1lL0ludGVybmFsRnVuY3Rp
b24uY3BwOgorICAgICAgICAoSlNDOjpJbnRlcm5hbEZ1bmN0aW9uOjpJbnRlcm5hbEZ1bmN0aW9u
KToKKyAgICAgICAgKiBydW50aW1lL0ludGVybmFsRnVuY3Rpb24uaDoKKyAgICAgICAgKEpTQzo6
SW50ZXJuYWxGdW5jdGlvbjo6Y29uc3RydWN0b3JCb2R5KToKKyAgICAgICAgKiBydW50aW1lL0pT
Qnl0ZUFycmF5LmNwcDoKKyAgICAgICAgKEpTQzo6SlNCeXRlQXJyYXk6OkpTQnl0ZUFycmF5KToK
KyAgICAgICAgKiBydW50aW1lL0pTQnl0ZUFycmF5Lmg6CisgICAgICAgIChKU0M6OkpTQnl0ZUFy
cmF5Ojpjb25zdHJ1Y3RvckJvZHkpOgorICAgICAgICAqIHJ1bnRpbWUvSlNGdW5jdGlvbi5jcHA6
CisgICAgICAgIChKU0M6OkpTRnVuY3Rpb246OkpTRnVuY3Rpb24pOgorICAgICAgICAoSlNDOjpK
U0Z1bmN0aW9uOjpjb25zdHJ1Y3RvckJvZHkpOgorICAgICAgICAqIHJ1bnRpbWUvSlNGdW5jdGlv
bi5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuaDoKKyAgICAgICAgKEpTQzo6
SlNHbG9iYWxPYmplY3Q6OkpTR2xvYmFsT2JqZWN0KToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxP
YmplY3Q6OmNvbnN0cnVjdG9yQm9keSk6CisgICAgICAgICogcnVudGltZS9KU1Byb3BlcnR5TmFt
ZUl0ZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6SlNQcm9wZXJ0eU5hbWVJdGVyYXRvcjo6SlNQ
cm9wZXJ0eU5hbWVJdGVyYXRvcik6CisgICAgICAgICogcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0
ZXJhdG9yLmg6CisgICAgICAgIChKU0M6OkpTUHJvcGVydHlOYW1lSXRlcmF0b3I6OmNvbnN0cnVj
dG9yQm9keSk6CisgICAgICAgICogcnVudGltZS9KU1N0cmluZy5oOgorICAgICAgICAoSlNDOjpS
b3BlQnVpbGRlcjo6SlNTdHJpbmcpOgorICAgICAgICAoSlNDOjpSb3BlQnVpbGRlcjo6Y29uc3Ry
dWN0b3JCb2R5KToKKyAgICAgICAgKiBydW50aW1lL05hdGl2ZUVycm9yQ29uc3RydWN0b3IuY3Bw
OgorICAgICAgICAoSlNDOjpOYXRpdmVFcnJvckNvbnN0cnVjdG9yOjpOYXRpdmVFcnJvckNvbnN0
cnVjdG9yKToKKyAgICAgICAgKiBydW50aW1lL05hdGl2ZUVycm9yQ29uc3RydWN0b3IuaDoKKyAg
ICAgICAgKEpTQzo6TmF0aXZlRXJyb3JDb25zdHJ1Y3Rvcjo6Y29uc3RydWN0b3JCb2R5KToKKyAg
ICAgICAgKiBydW50aW1lL05hdGl2ZUVycm9yUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6
TmF0aXZlRXJyb3JQcm90b3R5cGU6Ok5hdGl2ZUVycm9yUHJvdG90eXBlKToKKyAgICAgICAgKEpT
Qzo6TmF0aXZlRXJyb3JQcm90b3R5cGU6OmNvbnN0cnVjdG9yQm9keSk6CisgICAgICAgICogcnVu
dGltZS9OYXRpdmVFcnJvclByb3RvdHlwZS5oOgorICAgICAgICAqIHJ1bnRpbWUvU3RyaW5nT2Jq
ZWN0LmNwcDoKKyAgICAgICAgKiBydW50aW1lL1N0cmluZ09iamVjdC5oOgorICAgICAgICAoSlND
OjpTdHJpbmdPYmplY3Q6OmNyZWF0ZSk6CisgICAgICAgICogcnVudGltZS9TdHJpbmdPYmplY3RU
aGF0TWFzcXVlcmFkZXNBc1VuZGVmaW5lZC5oOgorICAgICAgICAoSlNDOjpTdHJpbmdPYmplY3RU
aGF0TWFzcXVlcmFkZXNBc1VuZGVmaW5lZDo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6U3RyaW5n
T2JqZWN0VGhhdE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQ6OlN0cmluZ09iamVjdFRoYXRNYXNxdWVy
YWRlc0FzVW5kZWZpbmVkKToKKyAgICAgICAgKiBydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHA6
CisgICAgICAgIChKU0M6OlN0cmluZ1Byb3RvdHlwZTo6U3RyaW5nUHJvdG90eXBlKToKKyAgICAg
ICAgKiBydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5oOgorICAgICAgICAoSlNDOjpTdHJpbmdQcm90
b3R5cGU6OmNyZWF0ZSk6CisKIDIwMTEtMDgtMTUgIEdhdmluIEJhcnJhY2xvdWdoICA8YmFycmFj
bG91Z2hAYXBwbGUuY29tPgogCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD02NjI2MwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlLmV4cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5leHAK
aW5kZXggZTU1ZjY5ZDllM2E0ZTE5MWRhNjYwYjQ1Zjg4Y2ZiMjZkNWJhZGFhMy4uZjBiYmNjNDBl
MjYzMDgwNDc1ZDA5ZGFhNmY4NGQ0MDY3NTk0MWYzZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmV4cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
SmF2YVNjcmlwdENvcmUuZXhwCkBAIC0xNTEsNyArMTUxLDcgQEAgX19aTjNKU0MxMlN0cmluZ09i
amVjdDE5Z2V0T3duUHJvcGVydHlOYW1lc0VQTlNfOUV4ZWNTdGF0ZUVSTlNfMTdQcm9wZXJ0eU5h
bWVBcnIKIF9fWk4zSlNDMTJTdHJpbmdPYmplY3QyNGdldE93blByb3BlcnR5RGVzY3JpcHRvckVQ
TlNfOUV4ZWNTdGF0ZUVSS05TXzEwSWRlbnRpZmllckVSTlNfMThQcm9wZXJ0eURlc2NyaXB0b3JF
CiBfX1pOM0pTQzEyU3RyaW5nT2JqZWN0M3B1dEVQTlNfOUV4ZWNTdGF0ZUVSS05TXzEwSWRlbnRp
ZmllckVOU183SlNWYWx1ZUVSTlNfMTVQdXRQcm9wZXJ0eVNsb3RFCiBfX1pOM0pTQzEyU3RyaW5n
T2JqZWN0NnNfaW5mb0UKLV9fWk4zSlNDMTJTdHJpbmdPYmplY3RDMkVQTlNfOUV4ZWNTdGF0ZUVQ
TlNfOVN0cnVjdHVyZUVSS05TXzdVU3RyaW5nRQorX19aTjNKU0MxMlN0cmluZ09iamVjdEMyRVJO
U18xMkpTR2xvYmFsRGF0YUVQTlNfOVN0cnVjdHVyZUVQTlNfOEpTU3RyaW5nRQogX19aTjNKU0Mx
M1NhbXBsaW5nRmxhZ3M0c3RvcEV2CiBfX1pOM0pTQzEzU2FtcGxpbmdGbGFnczVzdGFydEV2CiBf
X1pOM0pTQzEzU2FtcGxpbmdGbGFnczdzX2ZsYWdzRQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2pzYy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAppbmRleCBh
ZmViNWQ5ZDExMzk2YTQ5YWY0YWZmYzEzYzM0NTg4NWM5YjJhMTMxLi5lMTAzNzA5MGJkOGNhMTI3
MjRhNWE2ZjEwN2RiMzFiOTViMTMzNmU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvanNjLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcApAQCAtMTU1LDM2
ICsxNTUsNDIgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gbmV3IChhbGxvY2F0ZUNlbGw8R2xv
YmFsT2JqZWN0PihnbG9iYWxEYXRhLmhlYXApKSBHbG9iYWxPYmplY3QoZ2xvYmFsRGF0YSwgc3Ry
dWN0dXJlLCBhcmd1bWVudHMpOwogICAgIH0KICAgICB2aXJ0dWFsIFVTdHJpbmcgY2xhc3NOYW1l
KCkgY29uc3QgeyByZXR1cm4gImdsb2JhbCI7IH0KLX07Ci1DT01QSUxFX0FTU0VSVCghSXNJbnRl
Z2VyPEdsb2JhbE9iamVjdD46OnZhbHVlLCBXVEZfSXNJbnRlZ2VyX0dsb2JhbE9iamVjdF9mYWxz
ZSk7Ci1BU1NFUlRfQ0xBU1NfRklUU19JTl9DRUxMKEdsb2JhbE9iamVjdCk7CiAKLUdsb2JhbE9i
amVjdDo6R2xvYmFsT2JqZWN0KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUsIGNvbnN0IFZlY3RvcjxVU3RyaW5nPiYgYXJndW1lbnRzKQotICAgIDogSlNHbG9i
YWxPYmplY3QoZ2xvYmFsRGF0YSwgc3RydWN0dXJlKQotewotICAgIHB1dERpcmVjdEZ1bmN0aW9u
KGdsb2JhbEV4ZWMoKSwgSlNGdW5jdGlvbjo6Y3JlYXRlKGdsb2JhbEV4ZWMoKSwgdGhpcywgZnVu
Y3Rpb25TdHJ1Y3R1cmUoKSwgMSwgSWRlbnRpZmllcihnbG9iYWxFeGVjKCksICJkZWJ1ZyIpLCBm
dW5jdGlvbkRlYnVnKSk7Ci0gICAgcHV0RGlyZWN0RnVuY3Rpb24oZ2xvYmFsRXhlYygpLCBKU0Z1
bmN0aW9uOjpjcmVhdGUoZ2xvYmFsRXhlYygpLCB0aGlzLCBmdW5jdGlvblN0cnVjdHVyZSgpLCAx
LCBJZGVudGlmaWVyKGdsb2JhbEV4ZWMoKSwgInByaW50IiksIGZ1bmN0aW9uUHJpbnQpKTsKLSAg
ICBwdXREaXJlY3RGdW5jdGlvbihnbG9iYWxFeGVjKCksIEpTRnVuY3Rpb246OmNyZWF0ZShnbG9i
YWxFeGVjKCksIHRoaXMsIGZ1bmN0aW9uU3RydWN0dXJlKCksIDAsIElkZW50aWZpZXIoZ2xvYmFs
RXhlYygpLCAicXVpdCIpLCBmdW5jdGlvblF1aXQpKTsKLSAgICBwdXREaXJlY3RGdW5jdGlvbihn
bG9iYWxFeGVjKCksIEpTRnVuY3Rpb246OmNyZWF0ZShnbG9iYWxFeGVjKCksIHRoaXMsIGZ1bmN0
aW9uU3RydWN0dXJlKCksIDAsIElkZW50aWZpZXIoZ2xvYmFsRXhlYygpLCAiZ2MiKSwgZnVuY3Rp
b25HQykpOworcHJvdGVjdGVkOgorICAgIHZvaWQgY29uc3RydWN0b3JCb2R5KGNvbnN0IFZlY3Rv
cjxVU3RyaW5nPiYgYXJndW1lbnRzKQorICAgIHsKKyAgICAgICAgcHV0RGlyZWN0RnVuY3Rpb24o
Z2xvYmFsRXhlYygpLCBKU0Z1bmN0aW9uOjpjcmVhdGUoZ2xvYmFsRXhlYygpLCB0aGlzLCBmdW5j
dGlvblN0cnVjdHVyZSgpLCAxLCBJZGVudGlmaWVyKGdsb2JhbEV4ZWMoKSwgImRlYnVnIiksIGZ1
bmN0aW9uRGVidWcpKTsKKyAgICAgICAgcHV0RGlyZWN0RnVuY3Rpb24oZ2xvYmFsRXhlYygpLCBK
U0Z1bmN0aW9uOjpjcmVhdGUoZ2xvYmFsRXhlYygpLCB0aGlzLCBmdW5jdGlvblN0cnVjdHVyZSgp
LCAxLCBJZGVudGlmaWVyKGdsb2JhbEV4ZWMoKSwgInByaW50IiksIGZ1bmN0aW9uUHJpbnQpKTsK
KyAgICAgICAgcHV0RGlyZWN0RnVuY3Rpb24oZ2xvYmFsRXhlYygpLCBKU0Z1bmN0aW9uOjpjcmVh
dGUoZ2xvYmFsRXhlYygpLCB0aGlzLCBmdW5jdGlvblN0cnVjdHVyZSgpLCAwLCBJZGVudGlmaWVy
KGdsb2JhbEV4ZWMoKSwgInF1aXQiKSwgZnVuY3Rpb25RdWl0KSk7CisgICAgICAgIHB1dERpcmVj
dEZ1bmN0aW9uKGdsb2JhbEV4ZWMoKSwgSlNGdW5jdGlvbjo6Y3JlYXRlKGdsb2JhbEV4ZWMoKSwg
dGhpcywgZnVuY3Rpb25TdHJ1Y3R1cmUoKSwgMCwgSWRlbnRpZmllcihnbG9iYWxFeGVjKCksICJn
YyIpLCBmdW5jdGlvbkdDKSk7CiAjaWZuZGVmIE5ERUJVRwotICAgIHB1dERpcmVjdEZ1bmN0aW9u
KGdsb2JhbEV4ZWMoKSwgSlNGdW5jdGlvbjo6Y3JlYXRlKGdsb2JhbEV4ZWMoKSwgdGhpcywgZnVu
Y3Rpb25TdHJ1Y3R1cmUoKSwgMCwgSWRlbnRpZmllcihnbG9iYWxFeGVjKCksICJyZWxlYXNlRXhl
Y3V0YWJsZU1lbW9yeSIpLCBmdW5jdGlvblJlbGVhc2VFeGVjdXRhYmxlTWVtb3J5KSk7CisgICAg
ICAgIHB1dERpcmVjdEZ1bmN0aW9uKGdsb2JhbEV4ZWMoKSwgSlNGdW5jdGlvbjo6Y3JlYXRlKGds
b2JhbEV4ZWMoKSwgdGhpcywgZnVuY3Rpb25TdHJ1Y3R1cmUoKSwgMCwgSWRlbnRpZmllcihnbG9i
YWxFeGVjKCksICJyZWxlYXNlRXhlY3V0YWJsZU1lbW9yeSIpLCBmdW5jdGlvblJlbGVhc2VFeGVj
dXRhYmxlTWVtb3J5KSk7CiAjZW5kaWYKLSAgICBwdXREaXJlY3RGdW5jdGlvbihnbG9iYWxFeGVj
KCksIEpTRnVuY3Rpb246OmNyZWF0ZShnbG9iYWxFeGVjKCksIHRoaXMsIGZ1bmN0aW9uU3RydWN0
dXJlKCksIDEsIElkZW50aWZpZXIoZ2xvYmFsRXhlYygpLCAidmVyc2lvbiIpLCBmdW5jdGlvblZl
cnNpb24pKTsKLSAgICBwdXREaXJlY3RGdW5jdGlvbihnbG9iYWxFeGVjKCksIEpTRnVuY3Rpb246
OmNyZWF0ZShnbG9iYWxFeGVjKCksIHRoaXMsIGZ1bmN0aW9uU3RydWN0dXJlKCksIDEsIElkZW50
aWZpZXIoZ2xvYmFsRXhlYygpLCAicnVuIiksIGZ1bmN0aW9uUnVuKSk7Ci0gICAgcHV0RGlyZWN0
RnVuY3Rpb24oZ2xvYmFsRXhlYygpLCBKU0Z1bmN0aW9uOjpjcmVhdGUoZ2xvYmFsRXhlYygpLCB0
aGlzLCBmdW5jdGlvblN0cnVjdHVyZSgpLCAxLCBJZGVudGlmaWVyKGdsb2JhbEV4ZWMoKSwgImxv
YWQiKSwgZnVuY3Rpb25Mb2FkKSk7Ci0gICAgcHV0RGlyZWN0RnVuY3Rpb24oZ2xvYmFsRXhlYygp
LCBKU0Z1bmN0aW9uOjpjcmVhdGUoZ2xvYmFsRXhlYygpLCB0aGlzLCBmdW5jdGlvblN0cnVjdHVy
ZSgpLCAxLCBJZGVudGlmaWVyKGdsb2JhbEV4ZWMoKSwgImNoZWNrU3ludGF4IiksIGZ1bmN0aW9u
Q2hlY2tTeW50YXgpKTsKLSAgICBwdXREaXJlY3RGdW5jdGlvbihnbG9iYWxFeGVjKCksIEpTRnVu
Y3Rpb246OmNyZWF0ZShnbG9iYWxFeGVjKCksIHRoaXMsIGZ1bmN0aW9uU3RydWN0dXJlKCksIDAs
IElkZW50aWZpZXIoZ2xvYmFsRXhlYygpLCAicmVhZGxpbmUiKSwgZnVuY3Rpb25SZWFkbGluZSkp
OwotICAgIHB1dERpcmVjdEZ1bmN0aW9uKGdsb2JhbEV4ZWMoKSwgSlNGdW5jdGlvbjo6Y3JlYXRl
KGdsb2JhbEV4ZWMoKSwgdGhpcywgZnVuY3Rpb25TdHJ1Y3R1cmUoKSwgMCwgSWRlbnRpZmllcihn
bG9iYWxFeGVjKCksICJwcmVjaXNlVGltZSIpLCBmdW5jdGlvblByZWNpc2VUaW1lKSk7CisgICAg
ICAgIHB1dERpcmVjdEZ1bmN0aW9uKGdsb2JhbEV4ZWMoKSwgSlNGdW5jdGlvbjo6Y3JlYXRlKGds
b2JhbEV4ZWMoKSwgdGhpcywgZnVuY3Rpb25TdHJ1Y3R1cmUoKSwgMSwgSWRlbnRpZmllcihnbG9i
YWxFeGVjKCksICJ2ZXJzaW9uIiksIGZ1bmN0aW9uVmVyc2lvbikpOworICAgICAgICBwdXREaXJl
Y3RGdW5jdGlvbihnbG9iYWxFeGVjKCksIEpTRnVuY3Rpb246OmNyZWF0ZShnbG9iYWxFeGVjKCks
IHRoaXMsIGZ1bmN0aW9uU3RydWN0dXJlKCksIDEsIElkZW50aWZpZXIoZ2xvYmFsRXhlYygpLCAi
cnVuIiksIGZ1bmN0aW9uUnVuKSk7CisgICAgICAgIHB1dERpcmVjdEZ1bmN0aW9uKGdsb2JhbEV4
ZWMoKSwgSlNGdW5jdGlvbjo6Y3JlYXRlKGdsb2JhbEV4ZWMoKSwgdGhpcywgZnVuY3Rpb25TdHJ1
Y3R1cmUoKSwgMSwgSWRlbnRpZmllcihnbG9iYWxFeGVjKCksICJsb2FkIiksIGZ1bmN0aW9uTG9h
ZCkpOworICAgICAgICBwdXREaXJlY3RGdW5jdGlvbihnbG9iYWxFeGVjKCksIEpTRnVuY3Rpb246
OmNyZWF0ZShnbG9iYWxFeGVjKCksIHRoaXMsIGZ1bmN0aW9uU3RydWN0dXJlKCksIDEsIElkZW50
aWZpZXIoZ2xvYmFsRXhlYygpLCAiY2hlY2tTeW50YXgiKSwgZnVuY3Rpb25DaGVja1N5bnRheCkp
OworICAgICAgICBwdXREaXJlY3RGdW5jdGlvbihnbG9iYWxFeGVjKCksIEpTRnVuY3Rpb246OmNy
ZWF0ZShnbG9iYWxFeGVjKCksIHRoaXMsIGZ1bmN0aW9uU3RydWN0dXJlKCksIDAsIElkZW50aWZp
ZXIoZ2xvYmFsRXhlYygpLCAicmVhZGxpbmUiKSwgZnVuY3Rpb25SZWFkbGluZSkpOworICAgICAg
ICBwdXREaXJlY3RGdW5jdGlvbihnbG9iYWxFeGVjKCksIEpTRnVuY3Rpb246OmNyZWF0ZShnbG9i
YWxFeGVjKCksIHRoaXMsIGZ1bmN0aW9uU3RydWN0dXJlKCksIDAsIElkZW50aWZpZXIoZ2xvYmFs
RXhlYygpLCAicHJlY2lzZVRpbWUiKSwgZnVuY3Rpb25QcmVjaXNlVGltZSkpOwogCiAjaWYgRU5B
QkxFKFNBTVBMSU5HX0ZMQUdTKQotICAgIHB1dERpcmVjdEZ1bmN0aW9uKGdsb2JhbEV4ZWMoKSwg
SlNGdW5jdGlvbjo6Y3JlYXRlKGdsb2JhbEV4ZWMoKSwgdGhpcywgZnVuY3Rpb25TdHJ1Y3R1cmUo
KSwgMSwgSWRlbnRpZmllcihnbG9iYWxFeGVjKCksICJzZXRTYW1wbGluZ0ZsYWdzIiksIGZ1bmN0
aW9uU2V0U2FtcGxpbmdGbGFncykpOwotICAgIHB1dERpcmVjdEZ1bmN0aW9uKGdsb2JhbEV4ZWMo
KSwgSlNGdW5jdGlvbjo6Y3JlYXRlKGdsb2JhbEV4ZWMoKSwgdGhpcywgZnVuY3Rpb25TdHJ1Y3R1
cmUoKSwgMSwgSWRlbnRpZmllcihnbG9iYWxFeGVjKCksICJjbGVhclNhbXBsaW5nRmxhZ3MiKSwg
ZnVuY3Rpb25DbGVhclNhbXBsaW5nRmxhZ3MpKTsKKyAgICAgICAgcHV0RGlyZWN0RnVuY3Rpb24o
Z2xvYmFsRXhlYygpLCBKU0Z1bmN0aW9uOjpjcmVhdGUoZ2xvYmFsRXhlYygpLCB0aGlzLCBmdW5j
dGlvblN0cnVjdHVyZSgpLCAxLCBJZGVudGlmaWVyKGdsb2JhbEV4ZWMoKSwgInNldFNhbXBsaW5n
RmxhZ3MiKSwgZnVuY3Rpb25TZXRTYW1wbGluZ0ZsYWdzKSk7CisgICAgICAgIHB1dERpcmVjdEZ1
bmN0aW9uKGdsb2JhbEV4ZWMoKSwgSlNGdW5jdGlvbjo6Y3JlYXRlKGdsb2JhbEV4ZWMoKSwgdGhp
cywgZnVuY3Rpb25TdHJ1Y3R1cmUoKSwgMSwgSWRlbnRpZmllcihnbG9iYWxFeGVjKCksICJjbGVh
clNhbXBsaW5nRmxhZ3MiKSwgZnVuY3Rpb25DbGVhclNhbXBsaW5nRmxhZ3MpKTsKICNlbmRpZgog
Ci0gICAgSlNPYmplY3QqIGFycmF5ID0gY29uc3RydWN0RW1wdHlBcnJheShnbG9iYWxFeGVjKCkp
OwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYXJndW1lbnRzLnNpemUoKTsgKytpKQotICAg
ICAgICBhcnJheS0+cHV0KGdsb2JhbEV4ZWMoKSwgaSwganNTdHJpbmcoZ2xvYmFsRXhlYygpLCBh
cmd1bWVudHNbaV0pKTsKLSAgICBwdXREaXJlY3QoZ2xvYmFsRXhlYygpLT5nbG9iYWxEYXRhKCks
IElkZW50aWZpZXIoZ2xvYmFsRXhlYygpLCAiYXJndW1lbnRzIiksIGFycmF5KTsKKyAgICAgICAg
SlNPYmplY3QqIGFycmF5ID0gY29uc3RydWN0RW1wdHlBcnJheShnbG9iYWxFeGVjKCkpOworICAg
ICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGFyZ3VtZW50cy5zaXplKCk7ICsraSkKKyAgICAg
ICAgICAgIGFycmF5LT5wdXQoZ2xvYmFsRXhlYygpLCBpLCBqc1N0cmluZyhnbG9iYWxFeGVjKCks
IGFyZ3VtZW50c1tpXSkpOworICAgICAgICBwdXREaXJlY3QoZ2xvYmFsRXhlYygpLT5nbG9iYWxE
YXRhKCksIElkZW50aWZpZXIoZ2xvYmFsRXhlYygpLCAiYXJndW1lbnRzIiksIGFycmF5KTsKKyAg
ICB9Cit9OworQ09NUElMRV9BU1NFUlQoIUlzSW50ZWdlcjxHbG9iYWxPYmplY3Q+Ojp2YWx1ZSwg
V1RGX0lzSW50ZWdlcl9HbG9iYWxPYmplY3RfZmFsc2UpOworQVNTRVJUX0NMQVNTX0ZJVFNfSU5f
Q0VMTChHbG9iYWxPYmplY3QpOworCitHbG9iYWxPYmplY3Q6Okdsb2JhbE9iamVjdChKU0dsb2Jh
bERhdGEmIGdsb2JhbERhdGEsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBWZWN0b3I8VVN0
cmluZz4mIGFyZ3VtZW50cykKKyAgICA6IEpTR2xvYmFsT2JqZWN0KGdsb2JhbERhdGEsIHN0cnVj
dHVyZSkKK3sKKyAgICBjb25zdHJ1Y3RvckJvZHkoYXJndW1lbnRzKTsKIH0KIAogRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblByaW50KEV4ZWNTdGF0ZSogZXhlYykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9ySW5zdGFuY2UuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JJbnN0YW5jZS5jcHAKaW5kZXggMDQz
NTM3MmYxMjYzOWJhYmQ2NDEwZGNmZTAzNDgxZmE5MjIyZDlhYS4uNGIwNDMwOTFjNGZhMmI5YTBk
NTIzNjE4Y2FmM2U2ZTMzNGU2MzViMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRXJyb3JJbnN0YW5jZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRXJyb3JJbnN0YW5jZS5jcHAKQEAgLTI5LDggKzI5LDcgQEAgRXJyb3JJbnN0YW5jZTo6
RXJyb3JJbnN0YW5jZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFN0cnVjdHVyZSogc3RydWN0
dXJlKQogICAgIDogSlNOb25GaW5hbE9iamVjdChnbG9iYWxEYXRhLCBzdHJ1Y3R1cmUpCiAgICAg
LCBtX2FwcGVuZFNvdXJjZVRvTWVzc2FnZShmYWxzZSkKIHsKLSAgICBBU1NFUlQoaW5oZXJpdHMo
JnNfaW5mbykpOwotICAgIHB1dERpcmVjdChnbG9iYWxEYXRhLCBnbG9iYWxEYXRhLnByb3BlcnR5
TmFtZXMtPm1lc3NhZ2UsIGpzU3RyaW5nKCZnbG9iYWxEYXRhLCAiIiksIERvbnRFbnVtKTsKKyAg
ICBjb25zdHJ1Y3RvckJvZHkoZ2xvYmFsRGF0YSk7CiB9CiAKIEVycm9ySW5zdGFuY2U6OkVycm9y
SW5zdGFuY2UoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwg
Y29uc3QgVVN0cmluZyYgbWVzc2FnZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0Vycm9ySW5zdGFuY2UuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0Vycm9ySW5zdGFuY2UuaAppbmRleCBkNjFlZTk3NWVjMTBkZmQ3ODQ3NzVlNzNiNWExODIxMWY4
YzA5NDc4Li4zZDdmYmYzZjBlZWMzYTBmM2NkZGE0NDg5ZDdjYTRmZTExNDc2N2RkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvckluc3RhbmNlLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JJbnN0YW5jZS5oCkBAIC01MCw2ICs1
MCwxMiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgZXhwbGljaXQgRXJyb3JJbnN0YW5jZShK
U0dsb2JhbERhdGEmLCBTdHJ1Y3R1cmUqKTsKICAgICAgICAgZXhwbGljaXQgRXJyb3JJbnN0YW5j
ZShKU0dsb2JhbERhdGEmLCBTdHJ1Y3R1cmUqLCBjb25zdCBVU3RyaW5nJik7CiAKKyAgICAgICAg
dm9pZCBjb25zdHJ1Y3RvckJvZHkoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhKQorICAgICAgICB7
CisgICAgICAgICAgICBBU1NFUlQoaW5oZXJpdHMoJnNfaW5mbykpOworICAgICAgICAgICAgcHV0
RGlyZWN0KGdsb2JhbERhdGEsIGdsb2JhbERhdGEucHJvcGVydHlOYW1lcy0+bWVzc2FnZSwganNT
dHJpbmcoJmdsb2JhbERhdGEsICIiKSwgRG9udEVudW0pOworICAgICAgICB9CisKICAgICAgICAg
Ym9vbCBtX2FwcGVuZFNvdXJjZVRvTWVzc2FnZTsKICAgICB9OwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvclByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9FcnJvclByb3RvdHlwZS5jcHAKaW5kZXggM2E2OWRkOTBlMjJm
NDljZThhZTA2M2IxZmZlOTRiNjYxOTJmNDE0ZS4uMzg2MDY4YmMzZTc4ZjdiYmRkYjI0YzM0N2M5
ZDFmZmQ3Y2VkYTgxMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
RXJyb3JQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vy
cm9yUHJvdG90eXBlLmNwcApAQCAtNTMsOSArNTMsMTMgQEAgQVNTRVJUX0NMQVNTX0ZJVFNfSU5f
Q0VMTChFcnJvclByb3RvdHlwZSk7CiBFcnJvclByb3RvdHlwZTo6RXJyb3JQcm90b3R5cGUoRXhl
Y1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSkKICAgICA6IEVycm9ySW5zdGFuY2UoZXhlYy0+Z2xvYmFsRGF0YSgpLCBzdHJ1Y3R1
cmUpCiB7Ci0gICAgcHV0RGlyZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+cHJvcGVydHlO
YW1lcygpLm5hbWUsIGpzTm9udHJpdmlhbFN0cmluZyhleGVjLCAiRXJyb3IiKSwgRG9udEVudW0p
OworICAgIGNvbnN0cnVjdG9yQm9keShleGVjLCBnbG9iYWxPYmplY3QpOworfQogCit2b2lkIEVy
cm9yUHJvdG90eXBlOjpjb25zdHJ1Y3RvckJvZHkoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0KQorewogICAgIEFTU0VSVChpbmhlcml0cygmc19pbmZvKSk7Cisg
ICAgcHV0RGlyZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLm5h
bWUsIGpzTm9udHJpdmlhbFN0cmluZyhleGVjLCAiRXJyb3IiKSwgRG9udEVudW0pOwogICAgIHB1
dEFub255bW91c1ZhbHVlKGdsb2JhbE9iamVjdC0+Z2xvYmFsRGF0YSgpLCAwLCBnbG9iYWxPYmpl
Y3QpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJv
clByb3RvdHlwZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JQcm90b3R5
cGUuaAppbmRleCA0MDUyODM2MWFiYjIxMmEzYjQ2NjViYTQ0MWYyYTIwNTFhOGUwYTJlLi45ODM1
NzJiNjIyM2E3YmQzOGZjM2U1YWExODU2OWJjMDg0NDBlZDc4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvclByb3RvdHlwZS5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yUHJvdG90eXBlLmgKQEAgLTQ1LDYgKzQ1LDggQEAgbmFt
ZXNwYWNlIEpTQyB7CiAKICAgICBwcm90ZWN0ZWQ6CiAgICAgICAgIEVycm9yUHJvdG90eXBlKEV4
ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKik7CisgICAgICAgIHZvaWQgY29u
c3RydWN0b3JCb2R5KEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0Kik7CisKICAgICAgICAgc3Rh
dGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gT3ZlcnJpZGVzR2V0T3duUHJvcGVy
dHlTbG90IHwgRXJyb3JJbnN0YW5jZTo6U3RydWN0dXJlRmxhZ3M7CiAgICAgICAgIHN0YXRpYyBj
b25zdCB1bnNpZ25lZCBBbm9ueW1vdXNTbG90Q291bnQgPSBFcnJvckluc3RhbmNlOjpBbm9ueW1v
dXNTbG90Q291bnQgKyAxOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9FeGVjdXRhYmxlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1
dGFibGUuY3BwCmluZGV4IDY3N2E4OWJmMzc1NDM4YmU5NDAwMDRjNTJmZWUwN2QzYThiODBkZTYu
LjQ4YmYxNjNkYmM5ZTdjNDgzY2U1NThhZjA5ZWU2ZjM4NjYxNTc3MWUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuY3BwCkBAIC0xNDIsOSArMTQyLDcgQEAg
RnVuY3Rpb25FeGVjdXRhYmxlOjpGdW5jdGlvbkV4ZWN1dGFibGUoSlNHbG9iYWxEYXRhJiBnbG9i
YWxEYXRhLCBjb25zdCBJZGVudGlmaWUKICAgICAsIG1fbmFtZShuYW1lKQogICAgICwgbV9zeW1i
b2xUYWJsZSgwKQogewotICAgIG1fZmlyc3RMaW5lID0gZmlyc3RMaW5lOwotICAgIG1fbGFzdExp
bmUgPSBsYXN0TGluZTsKLSAgICBtX25hbWVWYWx1ZS5zZXQoZ2xvYmFsRGF0YSwgdGhpcywganNT
dHJpbmcoJmdsb2JhbERhdGEsIG5hbWUudXN0cmluZygpKSk7CisgICAgY29uc3RydWN0b3JCb2R5
KGdsb2JhbERhdGEsIG5hbWUsIGZpcnN0TGluZSwgbGFzdExpbmUpOwogfQogCiBGdW5jdGlvbkV4
ZWN1dGFibGU6OkZ1bmN0aW9uRXhlY3V0YWJsZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50
aWZpZXImIG5hbWUsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgYm9vbCBmb3JjZVVzZXNBcmd1
bWVudHMsIEZ1bmN0aW9uUGFyYW1ldGVycyogcGFyYW1ldGVycywgYm9vbCBpblN0cmljdENvbnRl
eHQsIGludCBmaXJzdExpbmUsIGludCBsYXN0TGluZSkKQEAgLTE1Nyw3ICsxNTUsNyBAQCBGdW5j
dGlvbkV4ZWN1dGFibGU6OkZ1bmN0aW9uRXhlY3V0YWJsZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0
IElkZW50aWZpZXImIG5hbWUsCiB7CiAgICAgbV9maXJzdExpbmUgPSBmaXJzdExpbmU7CiAgICAg
bV9sYXN0TGluZSA9IGxhc3RMaW5lOwotICAgIG1fbmFtZVZhbHVlLnNldChleGVjLT5nbG9iYWxE
YXRhKCksIHRoaXMsIGpzU3RyaW5nKCZleGVjLT5nbG9iYWxEYXRhKCksIG5hbWUudXN0cmluZygp
KSk7CisgICAgY29uc3RydWN0b3JCb2R5KGV4ZWMtPmdsb2JhbERhdGEoKSwgbmFtZSwgZmlyc3RM
aW5lLCBsYXN0TGluZSk7CiB9CiAKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRXhlY3V0YWJsZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhl
Y3V0YWJsZS5oCmluZGV4IGJhYjMyYjI5ODc1Y2RiNGE5NTYxMzdiMDczN2QyMjlhODcxYWE2ZDku
LmNlMjk4ZmVjOTVhMzcwNzc1MTYwNzI5YzM2NzNmZGM0ZjVjY2U1YjQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmgKQEAgLTUwNCw2ICs1MDQsMTQgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgIAogICAgICAgICBzdGF0aWMgY29uc3QgQ2xhc3NJbmZvIHNf
aW5mbzsKIAorICAgIHByb3RlY3RlZDoKKyAgICAgICAgdm9pZCBjb25zdHJ1Y3RvckJvZHkoSlNH
bG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBjb25zdCBJZGVudGlmaWVyJiBuYW1lLCBpbnQgZmlyc3RM
aW5lLCBpbnQgbGFzdExpbmUpCisgICAgICAgIHsKKyAgICAgICAgICAgIG1fZmlyc3RMaW5lID0g
Zmlyc3RMaW5lOworICAgICAgICAgICAgbV9sYXN0TGluZSA9IGxhc3RMaW5lOworICAgICAgICAg
ICAgbV9uYW1lVmFsdWUuc2V0KGdsb2JhbERhdGEsIHRoaXMsIGpzU3RyaW5nKCZnbG9iYWxEYXRh
LCBuYW1lLnVzdHJpbmcoKSkpOworICAgICAgICB9CisKICAgICBwcml2YXRlOgogICAgICAgICBG
dW5jdGlvbkV4ZWN1dGFibGUoSlNHbG9iYWxEYXRhJiwgY29uc3QgSWRlbnRpZmllciYgbmFtZSwg
Y29uc3QgU291cmNlQ29kZSYsIGJvb2wgZm9yY2VVc2VzQXJndW1lbnRzLCBGdW5jdGlvblBhcmFt
ZXRlcnMqLCBib29sLCBpbnQgZmlyc3RMaW5lLCBpbnQgbGFzdExpbmUpOwogICAgICAgICBGdW5j
dGlvbkV4ZWN1dGFibGUoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgbmFtZSwgY29uc3Qg
U291cmNlQ29kZSYsIGJvb2wgZm9yY2VVc2VzQXJndW1lbnRzLCBGdW5jdGlvblBhcmFtZXRlcnMq
LCBib29sLCBpbnQgZmlyc3RMaW5lLCBpbnQgbGFzdExpbmUpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50ZXJuYWxGdW5jdGlvbi5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9JbnRlcm5hbEZ1bmN0aW9uLmNwcAppbmRleCBjM2IwN2Y4Mjk3
MDI4ZTk2ZjJmZjUwM2Q5NTE3OGYxY2NmOThmNmFlLi5iY2ExNzQ3MTMyZDRjOTczMTdkNTdjZDgw
ZTQ5MWQ0ODYyOGFjZTkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9JbnRlcm5hbEZ1bmN0aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9JbnRlcm5hbEZ1bmN0aW9uLmNwcApAQCAtNDQsOCArNDQsNyBAQCBJbnRlcm5hbEZ1bmN0aW9u
OjpJbnRlcm5hbEZ1bmN0aW9uKFZQdHJTdGVhbGluZ0hhY2tUeXBlKQogSW50ZXJuYWxGdW5jdGlv
bjo6SW50ZXJuYWxGdW5jdGlvbihKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBJZGVudGlmaWVy
JiBuYW1lKQogICAgIDogSlNPYmplY3RXaXRoR2xvYmFsT2JqZWN0KGdsb2JhbE9iamVjdCwgc3Ry
dWN0dXJlKQogewotICAgIEFTU0VSVChpbmhlcml0cygmc19pbmZvKSk7Ci0gICAgcHV0RGlyZWN0
KCpnbG9iYWxEYXRhLCBnbG9iYWxEYXRhLT5wcm9wZXJ0eU5hbWVzLT5uYW1lLCBqc1N0cmluZyhn
bG9iYWxEYXRhLCBuYW1lLmlzTnVsbCgpID8gIiIgOiBuYW1lLnVzdHJpbmcoKSksIERvbnREZWxl
dGUgfCBSZWFkT25seSB8IERvbnRFbnVtKTsKKyAgICBjb25zdHJ1Y3RvckJvZHkoKmdsb2JhbERh
dGEsIG5hbWUpOwogfQogCiBjb25zdCBVU3RyaW5nJiBJbnRlcm5hbEZ1bmN0aW9uOjpuYW1lKEV4
ZWNTdGF0ZSogZXhlYykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0ludGVybmFsRnVuY3Rpb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGVy
bmFsRnVuY3Rpb24uaAppbmRleCA4MzI0M2IzZmRmZjZkNGNmOGJmMzRmYzE3NDVkZjU2NWI5ZjRm
N2RmLi4xNDM2ZjMyZDZlN2E3ZGUyOGY1NGY5MTA5MDNiZDFmNzgxMDcwZTY1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRlcm5hbEZ1bmN0aW9uLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50ZXJuYWxGdW5jdGlvbi5oCkBAIC01NCw2
ICs1NCwxMiBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBJbnRlcm5hbEZ1bmN0aW9uKEpT
R2xvYmFsRGF0YSosIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgY29uc3QgSWRlbnRpZmll
ciYpOwogCisgICAgICAgIHZvaWQgY29uc3RydWN0b3JCb2R5KEpTR2xvYmFsRGF0YSYgZ2xvYmFs
RGF0YSwgY29uc3QgSWRlbnRpZmllciYgbmFtZSkKKyAgICAgICAgeworICAgICAgICAgICAgQVNT
RVJUKGluaGVyaXRzKCZzX2luZm8pKTsKKyAgICAgICAgICAgIHB1dERpcmVjdChnbG9iYWxEYXRh
LCBnbG9iYWxEYXRhLnByb3BlcnR5TmFtZXMtPm5hbWUsIGpzU3RyaW5nKCZnbG9iYWxEYXRhLCBu
YW1lLmlzTnVsbCgpID8gIiIgOiBuYW1lLnVzdHJpbmcoKSksIERvbnREZWxldGUgfCBSZWFkT25s
eSB8IERvbnRFbnVtKTsKKyAgICAgICAgfQorCiAgICAgcHJpdmF0ZToKICAgICAgICAgdmlydHVh
bCBDYWxsVHlwZSBnZXRDYWxsRGF0YShDYWxsRGF0YSYpID0gMDsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCeXRlQXJyYXkuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNCeXRlQXJyYXkuY3BwCmluZGV4IGQ5MjRhN2ExYjM4OGNiNWM1
MTJiOThkMzMxZDVjNTA0NjdmYTllNDQuLjI5YjQ1NjQzMmFlYjI5NWIxMWY5MWExMTdjMWExNTFj
MDI2ZWZhZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQnl0
ZUFycmF5LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0J5dGVBcnJh
eS5jcHAKQEAgLTM5LDcgKzM5LDcgQEAgSlNCeXRlQXJyYXk6OkpTQnl0ZUFycmF5KEV4ZWNTdGF0
ZSogZXhlYywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEJ5dGVBcnJheSogc3RvcmEKICAgICA6IEpT
Tm9uRmluYWxPYmplY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBzdHJ1Y3R1cmUpCiAgICAgLCBtX3N0
b3JhZ2Uoc3RvcmFnZSkKIHsKLSAgICBwdXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVj
LT5nbG9iYWxEYXRhKCkucHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBqc051bWJlcihtX3N0b3JhZ2Ut
Pmxlbmd0aCgpKSwgUmVhZE9ubHkgfCBEb250RGVsZXRlKTsKKyAgICBjb25zdHJ1Y3RvckJvZHko
ZXhlYyk7CiB9CiAgICAgICAgIAogSlNCeXRlQXJyYXkqIEpTQnl0ZUFycmF5OjpjcmVhdGUoRXhl
Y1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgQnl0ZUFycmF5KiBzdG9yYWdlKQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCeXRlQXJyYXkuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQnl0ZUFycmF5LmgKaW5kZXggODY5MTU2
OWI1MmY2MWVmNTcyODAyNzg2YWUyNzk4MTM4NDA1MDNhNC4uZDJkMmE2NjQzNTQwNmViOWNlOWQ0
MjI5MjIxNDY4MmJhOWY2MzMyYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNCeXRlQXJyYXkuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0J5dGVBcnJheS5oCkBAIC0xMDQsNiArMTA0LDExIEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHBy
b3RlY3RlZDoKICAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0g
T3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwgT3ZlcnJpZGVzR2V0UHJvcGVydHlOYW1lcyB8
IEpTT2JqZWN0OjpTdHJ1Y3R1cmVGbGFnczsKIAorICAgICAgICB2b2lkIGNvbnN0cnVjdG9yQm9k
eShFeGVjU3RhdGUqIGV4ZWMpCisgICAgICAgIHsKKyAgICAgICAgICAgIHB1dERpcmVjdChleGVj
LT5nbG9iYWxEYXRhKCksIGV4ZWMtPmdsb2JhbERhdGEoKS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgs
IGpzTnVtYmVyKG1fc3RvcmFnZS0+bGVuZ3RoKCkpLCBSZWFkT25seSB8IERvbnREZWxldGUpOwor
ICAgICAgICB9CisKICAgICBwcml2YXRlOgogICAgICAgICBKU0J5dGVBcnJheShWUHRyU3RlYWxp
bmdIYWNrVHlwZSkKICAgICAgICAgICAgIDogSlNOb25GaW5hbE9iamVjdChWUHRyU3RlYWxpbmdI
YWNrKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlv
bi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcAppbmRl
eCAxM2YxZWFiNTIxZGVkNWFkYWMxYzcyOTA4MDY3MzRiNjQwMmIwYTRmLi40OTlhZWI2ZDI3NDhj
Mjk0MDg5MGJjMmJiYzdkZDhkYTg2NGViZWVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0Z1bmN0aW9uLmNwcApAQCAtNjMsMjUgKzYzLDE5IEBAIEpTRnVuY3Rpb246OkpT
RnVuY3Rpb24oVlB0clN0ZWFsaW5nSGFja1R5cGUpCiAKIEpTRnVuY3Rpb246OkpTRnVuY3Rpb24o
RXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSwgaW50IGxlbmd0aCwgY29uc3QgSWRlbnRpZmllciYgbmFtZSwgTmF0aXZlRXhl
Y3V0YWJsZSogdGh1bmspCiAgICAgOiBCYXNlKGdsb2JhbE9iamVjdCwgc3RydWN0dXJlKQotICAg
ICwgbV9leGVjdXRhYmxlKGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhpcywgdGh1bmspCisgICAgLCBt
X2V4ZWN1dGFibGUoKQogICAgICwgbV9zY29wZUNoYWluKGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhp
cywgZ2xvYmFsT2JqZWN0LT5nbG9iYWxTY29wZUNoYWluKCkpCiB7Ci0gICAgQVNTRVJUKGluaGVy
aXRzKCZzX2luZm8pKTsKLSAgICBwdXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5n
bG9iYWxEYXRhKCkucHJvcGVydHlOYW1lcy0+bmFtZSwganNTdHJpbmcoZXhlYywgbmFtZS5pc051
bGwoKSA/ICIiIDogbmFtZS51c3RyaW5nKCkpLCBEb250RGVsZXRlIHwgUmVhZE9ubHkgfCBEb250
RW51bSk7Ci0gICAgcHV0RGlyZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+cHJvcGVydHlO
YW1lcygpLmxlbmd0aCwganNOdW1iZXIobGVuZ3RoKSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5IHwg
RG9udEVudW0pOworICAgIGNvbnN0cnVjdG9yQm9keShleGVjLCBsZW5ndGgsIG5hbWUsIHRodW5r
KTsKIH0KIAogSlNGdW5jdGlvbjo6SlNGdW5jdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBpbnQgbGVuZ3RoLCBj
b25zdCBJZGVudGlmaWVyJiBuYW1lLCBOYXRpdmVGdW5jdGlvbiBmdW5jKQogICAgIDogQmFzZShn
bG9iYWxPYmplY3QsIHN0cnVjdHVyZSkKKyAgICAsIG1fZXhlY3V0YWJsZSgpCiAgICAgLCBtX3Nj
b3BlQ2hhaW4oZXhlYy0+Z2xvYmFsRGF0YSgpLCB0aGlzLCBnbG9iYWxPYmplY3QtPmdsb2JhbFNj
b3BlQ2hhaW4oKSkKIHsKLSAgICBBU1NFUlQoaW5oZXJpdHMoJnNfaW5mbykpOwotICAgIAogICAg
IC8vIENhbid0IGRvIHRoaXMgZHVyaW5nIGluaXRpYWxpemF0aW9uIGJlY2F1c2UgZ2V0SG9zdEZ1
bmN0aW9uIG1pZ2h0IGRvIGEgR0MgYWxsb2NhdGlvbi4KLSAgICBtX2V4ZWN1dGFibGUuc2V0KGV4
ZWMtPmdsb2JhbERhdGEoKSwgdGhpcywgZXhlYy0+Z2xvYmFsRGF0YSgpLmdldEhvc3RGdW5jdGlv
bihmdW5jKSk7Ci0gICAgCi0gICAgcHV0RGlyZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+
Z2xvYmFsRGF0YSgpLnByb3BlcnR5TmFtZXMtPm5hbWUsIGpzU3RyaW5nKGV4ZWMsIG5hbWUuaXNO
dWxsKCkgPyAiIiA6IG5hbWUudXN0cmluZygpKSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5IHwgRG9u
dEVudW0pOwotICAgIHB1dERpcmVjdChleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPnByb3BlcnR5
TmFtZXMoKS5sZW5ndGgsIGpzTnVtYmVyKGxlbmd0aCksIERvbnREZWxldGUgfCBSZWFkT25seSB8
IERvbnRFbnVtKTsKKyAgICBjb25zdHJ1Y3RvckJvZHkoZXhlYywgbGVuZ3RoLCBuYW1lLCAgZXhl
Yy0+Z2xvYmFsRGF0YSgpLmdldEhvc3RGdW5jdGlvbihmdW5jKSk7CiB9CiAKIEpTRnVuY3Rpb246
OkpTRnVuY3Rpb24oRXhlY1N0YXRlKiBleGVjLCBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFi
bGUsIFNjb3BlQ2hhaW5Ob2RlKiBzY29wZUNoYWluTm9kZSkKQEAgLTk0LDYgKzg4LDE0IEBAIEpT
RnVuY3Rpb246OkpTRnVuY3Rpb24oRXhlY1N0YXRlKiBleGVjLCBGdW5jdGlvbkV4ZWN1dGFibGUq
IGV4ZWN1dGFibGUsIFNjb3BlQ2hhCiAgICAgcHV0RGlyZWN0T2Zmc2V0KGV4ZWMtPmdsb2JhbERh
dGEoKSwgc2NvcGVDaGFpbk5vZGUtPmdsb2JhbE9iamVjdC0+ZnVuY3Rpb25OYW1lT2Zmc2V0KCks
IGV4ZWN1dGFibGUtPm5hbWVWYWx1ZSgpKTsKIH0KIAoraW5saW5lIHZvaWQgSlNGdW5jdGlvbjo6
Y29uc3RydWN0b3JCb2R5KEV4ZWNTdGF0ZSogZXhlYywgaW50IGxlbmd0aCwgY29uc3QgSWRlbnRp
ZmllciYgbmFtZSwgRXhlY3V0YWJsZUJhc2UqIGV4ZWN1dGFibGUpCit7CisgICAgQVNTRVJUKGlu
aGVyaXRzKCZzX2luZm8pKTsKKyAgICBtX2V4ZWN1dGFibGUuc2V0KGV4ZWMtPmdsb2JhbERhdGEo
KSwgdGhpcywgZXhlY3V0YWJsZSk7CisgICAgcHV0RGlyZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwg
ZXhlYy0+Z2xvYmFsRGF0YSgpLnByb3BlcnR5TmFtZXMtPm5hbWUsIGpzU3RyaW5nKGV4ZWMsIG5h
bWUuaXNOdWxsKCkgPyAiIiA6IG5hbWUudXN0cmluZygpKSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5
IHwgRG9udEVudW0pOworICAgIHB1dERpcmVjdChleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPnBy
b3BlcnR5TmFtZXMoKS5sZW5ndGgsIGpzTnVtYmVyKGxlbmd0aCksIERvbnREZWxldGUgfCBSZWFk
T25seSB8IERvbnRFbnVtKTsKK30KKwogSlNGdW5jdGlvbjo6fkpTRnVuY3Rpb24oKQogewogICAg
IEFTU0VSVCh2cHRyKCkgPT0gSlNHbG9iYWxEYXRhOjpqc0Z1bmN0aW9uVlB0cik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmgKaW5kZXggMjljYmZkMGY0ZjZhZTIy
NzQ4NmRiMDI1NjZjNDkyNTRkNzQyMmRiNC4uOGI3M2IwYmUyZjJhMjk5N2Q5MDkwNjAxMjk3MzBk
MGRmNTBhMGRkNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNG
dW5jdGlvbi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24u
aApAQCAtMTIzLDYgKzEyMyw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHByb3RlY3RlZDoKICAg
ICAgICAgY29uc3Qgc3RhdGljIHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gT3ZlcnJpZGVzR2V0
T3duUHJvcGVydHlTbG90IHwgSW1wbGVtZW50c0hhc0luc3RhbmNlIHwgT3ZlcnJpZGVzVmlzaXRD
aGlsZHJlbiB8IE92ZXJyaWRlc0dldFByb3BlcnR5TmFtZXMgfCBKU09iamVjdDo6U3RydWN0dXJl
RmxhZ3M7CiAKKyAgICAgICAgdm9pZCBjb25zdHJ1Y3RvckJvZHkoRXhlY1N0YXRlKiwgaW50IGxl
bmd0aCwgY29uc3QgSWRlbnRpZmllciYgbmFtZSwgRXhlY3V0YWJsZUJhc2UqKTsKKwogICAgIHBy
aXZhdGU6CiAgICAgICAgIGV4cGxpY2l0IEpTRnVuY3Rpb24oVlB0clN0ZWFsaW5nSGFja1R5cGUp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9i
amVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaApp
bmRleCA1OWNhZDUwYWMzNGFlOWRjNzBjNDZmMDAxODIwNDM4MDBkOGRlN2U0Li4yNGFhNWM0MWY5
ZTc0NjIyNzNjNDA2M2VkMjZiMzQ0ZGFkZTdlODkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKQEAgLTE1OSw5ICsxNTksNyBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgICAgICwgbV93ZWFrUmFuZG9tKHN0YXRpY19jYXN0PHVuc2lnbmVk
PihyYW5kb21OdW1iZXIoKSAqIChzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkg
KyAxLjApKSkKICAgICAgICAgICAgICwgbV9ldmFsRW5hYmxlZCh0cnVlKQogICAgICAgICB7Ci0g
ICAgICAgICAgICBDT01QSUxFX0FTU0VSVChKU0dsb2JhbE9iamVjdDo6QW5vbnltb3VzU2xvdENv
dW50ID09IDEsIEpTR2xvYmFsT2JqZWN0X2hhc19vbmx5X2Ffc2luZ2xlX3Nsb3QpOwotICAgICAg
ICAgICAgcHV0VGhpc1RvQW5vbnltb3VzVmFsdWUoMCk7Ci0gICAgICAgICAgICBpbml0KHRoaXMp
OworICAgICAgICAgICAgY29uc3RydWN0b3JCb2R5KHRoaXMpOwogICAgICAgICB9CiAKICAgICAg
ICAgSlNHbG9iYWxPYmplY3QoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSwgSlNPYmplY3QqIHRoaXNWYWx1ZSkKQEAgLTE3MSw2ICsxNjksMTEgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgICAgICAsIG1fd2Vha1JhbmRvbShzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4ocmFuZG9tTnVtYmVyKCkgKiAoc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgp
ICsgMS4wKSkpCiAgICAgICAgICAgICAsIG1fZXZhbEVuYWJsZWQodHJ1ZSkKICAgICAgICAgewor
ICAgICAgICAgICAgY29uc3RydWN0b3JCb2R5KHRoaXNWYWx1ZSk7CisgICAgICAgIH0KKworICAg
ICAgICB2b2lkIGNvbnN0cnVjdG9yQm9keShKU09iamVjdCogdGhpc1ZhbHVlKQorICAgICAgICB7
CiAgICAgICAgICAgICBDT01QSUxFX0FTU0VSVChKU0dsb2JhbE9iamVjdDo6QW5vbnltb3VzU2xv
dENvdW50ID09IDEsIEpTR2xvYmFsT2JqZWN0X2hhc19vbmx5X2Ffc2luZ2xlX3Nsb3QpOwogICAg
ICAgICAgICAgcHV0VGhpc1RvQW5vbnltb3VzVmFsdWUoMCk7CiAgICAgICAgICAgICBpbml0KHRo
aXNWYWx1ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1By
b3BlcnR5TmFtZUl0ZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
UHJvcGVydHlOYW1lSXRlcmF0b3IuY3BwCmluZGV4IDgwMTJlOWRkMTE1NmE3Njg4YWQyMGRjMTE1
OTlmMmEyZDUyZDhmODIuLmM0Y2Y4ODhhZDZiYTFkOTNhZDc5ODBkY2UxNzZjODY3ODQ4ZGUwZTQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1l
SXRlcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVy
dHlOYW1lSXRlcmF0b3IuY3BwCkBAIC00Myw5ICs0Myw3IEBAIGlubGluZSBKU1Byb3BlcnR5TmFt
ZUl0ZXJhdG9yOjpKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVy
dHlOCiAgICAgLCBtX2pzU3RyaW5nc1NpemUocHJvcGVydHlOYW1lQXJyYXlEYXRhLT5wcm9wZXJ0
eU5hbWVWZWN0b3IoKS5zaXplKCkpCiAgICAgLCBtX2pzU3RyaW5ncyhhZG9wdEFycmF5UHRyKG5l
dyBXcml0ZUJhcnJpZXI8VW5rbm93bj5bbV9qc1N0cmluZ3NTaXplXSkpCiB7Ci0gICAgUHJvcGVy
dHlOYW1lQXJyYXlEYXRhOjpQcm9wZXJ0eU5hbWVWZWN0b3ImIHByb3BlcnR5TmFtZVZlY3RvciA9
IHByb3BlcnR5TmFtZUFycmF5RGF0YS0+cHJvcGVydHlOYW1lVmVjdG9yKCk7Ci0gICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBtX2pzU3RyaW5nc1NpemU7ICsraSkKLSAgICAgICAgbV9qc1N0cmlu
Z3NbaV0uc2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhpcywganNPd25lZFN0cmluZyhleGVjLCBw
cm9wZXJ0eU5hbWVWZWN0b3JbaV0udXN0cmluZygpKSk7CisgICAgY29uc3RydWN0b3JCb2R5KGV4
ZWMsIHByb3BlcnR5TmFtZUFycmF5RGF0YSk7CiB9CiAKIEpTUHJvcGVydHlOYW1lSXRlcmF0b3Iq
IEpTUHJvcGVydHlOYW1lSXRlcmF0b3I6OmNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0
KiBvKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0
eU5hbWVJdGVyYXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0
eU5hbWVJdGVyYXRvci5oCmluZGV4IGQyYjYxMWRmNmIzMjBiMDljYTUzZWE4Yjc4OTAxYjU2ZTBi
ZmVmYjcuLjE4MzEwZmE4YzdlOGIxMjdhM2JhOGE3ZWM1NTEwNDIwZDI2NjA3MjQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3Iu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJh
dG9yLmgKQEAgLTg0LDYgKzg0LDE0IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAKICAgICAg
ICAgc3RhdGljIGNvbnN0IENsYXNzSW5mbyBzX2luZm87CiAKKyAgICBwcm90ZWN0ZWQ6CisgICAg
ICAgIHZvaWQgY29uc3RydWN0b3JCb2R5KEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lQXJy
YXlEYXRhKiBwcm9wZXJ0eU5hbWVBcnJheURhdGEpCisgICAgICAgIHsKKyAgICAgICAgICAgIFBy
b3BlcnR5TmFtZUFycmF5RGF0YTo6UHJvcGVydHlOYW1lVmVjdG9yJiBwcm9wZXJ0eU5hbWVWZWN0
b3IgPSBwcm9wZXJ0eU5hbWVBcnJheURhdGEtPnByb3BlcnR5TmFtZVZlY3RvcigpOworICAgICAg
ICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2pzU3RyaW5nc1NpemU7ICsraSkKKyAgICAg
ICAgICAgICAgICBtX2pzU3RyaW5nc1tpXS5zZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCB0aGlzLCBq
c093bmVkU3RyaW5nKGV4ZWMsIHByb3BlcnR5TmFtZVZlY3RvcltpXS51c3RyaW5nKCkpKTsKKyAg
ICAgICAgfQorCiAgICAgcHJpdmF0ZToKICAgICAgICAgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcihF
eGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWVBcnJheURhdGEqIHByb3BlcnR5TmFtZUFycmF5RGF0YSwg
c2l6ZV90IG51bUNhY2hlYWJsZVNsb3QpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU1N0cmluZy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNTdHJpbmcuaAppbmRleCAzMTcxMTc1NzYxZjNlOGI3NjU3OGZkY2E0ZDBmNGQ1MzNjMDMyZWYy
Li45MDk5NGZiZTM4OThmZTg4NmYyMWViNDMxY2ExZTVkM2RmOGY1ODQ0IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmgKQEAgLTI2NywxMSArMjY3LDcgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgICAgICAsIG1fbGVuZ3RoKDApCiAgICAgICAgICAgICAsIG1fZmli
ZXJDb3VudChzX21heEludGVybmFsUm9wZUxlbmd0aCkKICAgICAgICAgewotICAgICAgICAgICAg
dW5zaWduZWQgaW5kZXggPSAwOwotICAgICAgICAgICAgYXBwZW5kVmFsdWVJbkNvbnN0cnVjdEFu
ZEluY3JlbWVudExlbmd0aChleGVjLCBpbmRleCwgdjEpOwotICAgICAgICAgICAgYXBwZW5kVmFs
dWVJbkNvbnN0cnVjdEFuZEluY3JlbWVudExlbmd0aChleGVjLCBpbmRleCwgdjIpOwotICAgICAg
ICAgICAgYXBwZW5kVmFsdWVJbkNvbnN0cnVjdEFuZEluY3JlbWVudExlbmd0aChleGVjLCBpbmRl
eCwgdjMpOwotICAgICAgICAgICAgQVNTRVJUKGluZGV4ID09IHNfbWF4SW50ZXJuYWxSb3BlTGVu
Z3RoKTsKKyAgICAgICAgICAgIGNvbnN0cnVjdG9yQm9keShleGVjLCB2MSwgdjIsIHYzKTsKICAg
ICAgICAgfQogCiAgICAgICAgIC8vIFRoaXMgY29uc3RydWN0b3IgY29uc3RydWN0cyBhIG5ldyBz
dHJpbmcgYnkgY29uY2F0ZW5hdGluZyB1MSAmIHUyLgpAQCAtMjk5LDYgKzI5NSwxNiBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgICAgIEFTU0VSVChpbmRleCA8PSBzX21heEludGVybmFsUm9w
ZUxlbmd0aCk7CiAgICAgICAgIH0KIAorICAgIHByb3RlY3RlZDoKKyAgICAgICAgdm9pZCBjb25z
dHJ1Y3RvckJvZHkoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHYxLCBKU1ZhbHVlIHYyLCBKU1Zh
bHVlIHYzKQorICAgICAgICB7CisgICAgICAgICAgICB1bnNpZ25lZCBpbmRleCA9IDA7CisgICAg
ICAgICAgICBhcHBlbmRWYWx1ZUluQ29uc3RydWN0QW5kSW5jcmVtZW50TGVuZ3RoKGV4ZWMsIGlu
ZGV4LCB2MSk7CisgICAgICAgICAgICBhcHBlbmRWYWx1ZUluQ29uc3RydWN0QW5kSW5jcmVtZW50
TGVuZ3RoKGV4ZWMsIGluZGV4LCB2Mik7CisgICAgICAgICAgICBhcHBlbmRWYWx1ZUluQ29uc3Ry
dWN0QW5kSW5jcmVtZW50TGVuZ3RoKGV4ZWMsIGluZGV4LCB2Myk7CisgICAgICAgICAgICBBU1NF
UlQoaW5kZXggPT0gc19tYXhJbnRlcm5hbFJvcGVMZW5ndGgpOworICAgICAgICB9CisKICAgICBw
dWJsaWM6CiAgICAgICAgIHN0YXRpYyBKU1N0cmluZyogY3JlYXRlKEpTR2xvYmFsRGF0YSYgZ2xv
YmFsRGF0YSwgY29uc3QgVVN0cmluZyYgdmFsdWUpCiAgICAgICAgIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUVycm9yQ29uc3RydWN0b3IuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5jcHAK
aW5kZXggODVmZjBhODJiYTIyNDQwYzVmYjM4NzNiZTRmYmYyNjRhZGYyZjZhMy4uMGYxYTA3NGEw
ZWQxOTk1MzlkNjY1MTIyZGJiNTJkY2ZlM2U3OWMyMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5jcHAKQEAgLTM1
LDE1ICszNSw3IEBAIGNvbnN0IENsYXNzSW5mbyBOYXRpdmVFcnJvckNvbnN0cnVjdG9yOjpzX2lu
Zm8gPSB7ICJGdW5jdGlvbiIsICZJbnRlcm5hbEZ1bmN0aW9uCiBOYXRpdmVFcnJvckNvbnN0cnVj
dG9yOjpOYXRpdmVFcnJvckNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFN0cnVjdHVyZSogcHJvdG90
eXBlU3RydWN0dXJlLCBjb25zdCBVU3RyaW5nJiBuYW1lQW5kTWVzc2FnZSkKICAgICA6IEludGVy
bmFsRnVuY3Rpb24oJmV4ZWMtPmdsb2JhbERhdGEoKSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUs
IElkZW50aWZpZXIoZXhlYywgbmFtZUFuZE1lc3NhZ2UpKQogewotICAgIEFTU0VSVChpbmhlcml0
cygmc19pbmZvKSk7Ci0KLSAgICBOYXRpdmVFcnJvclByb3RvdHlwZSogcHJvdG90eXBlID0gTmF0
aXZlRXJyb3JQcm90b3R5cGU6OmNyZWF0ZShleGVjLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZVN0
cnVjdHVyZSwgbmFtZUFuZE1lc3NhZ2UsIHRoaXMpOwotCi0gICAgcHV0RGlyZWN0KGV4ZWMtPmds
b2JhbERhdGEoKSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLmxlbmd0aCwganNOdW1iZXIoMSksIERv
bnREZWxldGUgfCBSZWFkT25seSB8IERvbnRFbnVtKTsgLy8gRUNNQSAxNS4xMS43LjUKLSAgICBw
dXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkucHJvdG90
eXBlLCBwcm90b3R5cGUsIERvbnREZWxldGUgfCBSZWFkT25seSB8IERvbnRFbnVtKTsKLSAgICBt
X2Vycm9yU3RydWN0dXJlLnNldChleGVjLT5nbG9iYWxEYXRhKCksIHRoaXMsIEVycm9ySW5zdGFu
Y2U6OmNyZWF0ZVN0cnVjdHVyZShleGVjLT5nbG9iYWxEYXRhKCksIHByb3RvdHlwZSkpOwotICAg
IEFTU0VSVChtX2Vycm9yU3RydWN0dXJlKTsKLSAgICBBU1NFUlQobV9lcnJvclN0cnVjdHVyZS0+
dHlwZUluZm8oKS50eXBlKCkgPT0gT2JqZWN0VHlwZSk7CisgICAgY29uc3RydWN0b3JCb2R5KGV4
ZWMsIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlU3RydWN0dXJlLCBuYW1lQW5kTWVzc2FnZSk7CiB9
CiAKIHZvaWQgTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvcjo6dmlzaXRDaGlsZHJlbihTbG90VmlzaXRv
ciYgdmlzaXRvcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05h
dGl2ZUVycm9yQ29uc3RydWN0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05h
dGl2ZUVycm9yQ29uc3RydWN0b3IuaAppbmRleCAzZWFiYzdhNTVjYWZjYTdjOWYwM2UxMjY4Mjhl
ZWEyY2UxYzUyODc1Li44MzBjNzc0NTZhZjdmYTkwZDM0NDg5MjA4ZjNlMGI4MTlmMTFkZDUxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OYXRpdmVFcnJvckNvbnN0
cnVjdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXJyb3JD
b25zdHJ1Y3Rvci5oCkBAIC0yMiw2ICsyMiw3IEBACiAjZGVmaW5lIE5hdGl2ZUVycm9yQ29uc3Ry
dWN0b3JfaAogCiAjaW5jbHVkZSAiSW50ZXJuYWxGdW5jdGlvbi5oIgorI2luY2x1ZGUgIk5hdGl2
ZUVycm9yUHJvdG90eXBlLmgiCiAKIG5hbWVzcGFjZSBKU0MgewogCkBAIC00Nyw2ICs0OCwyMCBA
QCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBTdHJ1Y3R1cmUqIGVycm9yU3RydWN0dXJlKCkg
eyByZXR1cm4gbV9lcnJvclN0cnVjdHVyZS5nZXQoKTsgfQogCisgICAgcHJvdGVjdGVkOgorICAg
ICAgICB2b2lkIGNvbnN0cnVjdG9yQm9keShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogcHJvdG90eXBlU3RydWN0dXJlLCBjb25zdCBVU3Ry
aW5nJiBuYW1lQW5kTWVzc2FnZSkKKyAgICAgICAgeworICAgICAgICAgICAgQVNTRVJUKGluaGVy
aXRzKCZzX2luZm8pKTsKKworICAgICAgICAgICAgTmF0aXZlRXJyb3JQcm90b3R5cGUqIHByb3Rv
dHlwZSA9IE5hdGl2ZUVycm9yUHJvdG90eXBlOjpjcmVhdGUoZXhlYywgZ2xvYmFsT2JqZWN0LCBw
cm90b3R5cGVTdHJ1Y3R1cmUsIG5hbWVBbmRNZXNzYWdlLCB0aGlzKTsKKworICAgICAgICAgICAg
cHV0RGlyZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLmxlbmd0
aCwganNOdW1iZXIoMSksIERvbnREZWxldGUgfCBSZWFkT25seSB8IERvbnRFbnVtKTsgLy8gRUNN
QSAxNS4xMS43LjUKKyAgICAgICAgICAgIHB1dERpcmVjdChleGVjLT5nbG9iYWxEYXRhKCksIGV4
ZWMtPnByb3BlcnR5TmFtZXMoKS5wcm90b3R5cGUsIHByb3RvdHlwZSwgRG9udERlbGV0ZSB8IFJl
YWRPbmx5IHwgRG9udEVudW0pOworICAgICAgICAgICAgbV9lcnJvclN0cnVjdHVyZS5zZXQoZXhl
Yy0+Z2xvYmFsRGF0YSgpLCB0aGlzLCBFcnJvckluc3RhbmNlOjpjcmVhdGVTdHJ1Y3R1cmUoZXhl
Yy0+Z2xvYmFsRGF0YSgpLCBwcm90b3R5cGUpKTsKKyAgICAgICAgICAgIEFTU0VSVChtX2Vycm9y
U3RydWN0dXJlKTsKKyAgICAgICAgICAgIEFTU0VSVChtX2Vycm9yU3RydWN0dXJlLT50eXBlSW5m
bygpLnR5cGUoKSA9PSBPYmplY3RUeXBlKTsKKyAgICAgICAgfQorCiAgICAgcHJpdmF0ZToKICAg
ICAgICAgTmF0aXZlRXJyb3JDb25zdHJ1Y3RvcihFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCos
IFN0cnVjdHVyZSosIFN0cnVjdHVyZSogcHJvdG90eXBlU3RydWN0dXJlLCBjb25zdCBVU3RyaW5n
Jik7CiAgICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IE92ZXJy
aWRlc1Zpc2l0Q2hpbGRyZW4gfCBJbnRlcm5hbEZ1bmN0aW9uOjpTdHJ1Y3R1cmVGbGFnczsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUVycm9yUHJvdG90
eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUVycm9yUHJvdG90
eXBlLmNwcAppbmRleCA2ODMwNjYwMTI3YWYzMmJlMGZiMjg3OGU0MDllY2Q0ODJkOWQyODFiLi4w
MDlmMDgwZTVhZDRmMWM1Y2FlMzlmZTU2MzAyNDkyNDYwZTFiNWQxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OYXRpdmVFcnJvclByb3RvdHlwZS5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXJyb3JQcm90b3R5cGUuY3BwCkBA
IC0zMyw2ICszMywxMSBAQCBBU1NFUlRfQ0xBU1NfRklUU19JTl9DRUxMKE5hdGl2ZUVycm9yUHJv
dG90eXBlKTsKIE5hdGl2ZUVycm9yUHJvdG90eXBlOjpOYXRpdmVFcnJvclByb3RvdHlwZShFeGVj
U3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3Ry
dWN0dXJlLCBjb25zdCBVU3RyaW5nJiBuYW1lQW5kTWVzc2FnZSwgTmF0aXZlRXJyb3JDb25zdHJ1
Y3RvciogY29uc3RydWN0b3IpCiAgICAgOiBFcnJvclByb3RvdHlwZShleGVjLCBnbG9iYWxPYmpl
Y3QsIHN0cnVjdHVyZSkKIHsKKyAgICBjb25zdHJ1Y3RvckJvZHkoZXhlYywgbmFtZUFuZE1lc3Nh
Z2UsIGNvbnN0cnVjdG9yKTsKK30KKworaW5saW5lIHZvaWQgTmF0aXZlRXJyb3JQcm90b3R5cGU6
OmNvbnN0cnVjdG9yQm9keShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFVTdHJpbmcmIG5hbWVBbmRN
ZXNzYWdlLCBOYXRpdmVFcnJvckNvbnN0cnVjdG9yKiBjb25zdHJ1Y3RvcikKK3sKICAgICBwdXRE
aXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkubmFtZSwganNT
dHJpbmcoZXhlYywgbmFtZUFuZE1lc3NhZ2UpLCBEb250RW51bSk7CiAgICAgcHV0RGlyZWN0KGV4
ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLm1lc3NhZ2UsIGpzU3RyaW5n
KGV4ZWMsIG5hbWVBbmRNZXNzYWdlKSwgRG9udEVudW0pOwogICAgIHB1dERpcmVjdChleGVjLT5n
bG9iYWxEYXRhKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5jb25zdHJ1Y3RvciwgY29uc3RydWN0
b3IsIERvbnRFbnVtKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L05hdGl2ZUVycm9yUHJvdG90eXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9O
YXRpdmVFcnJvclByb3RvdHlwZS5oCmluZGV4IDFiYjIzMDkwMzM1NGZjYTdjMTBhMDU2ZjU0OTVm
NjM2OTU0N2NkNTkuLjNiYTZkMDBjNDY1NjU0Yjc3MDYwZjIzN2JlNzc5MTJlZDU5NzM0ZmUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUVycm9yUHJvdG90
eXBlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXJyb3JQcm90
b3R5cGUuaApAQCAtMzcsNiArMzcsOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgewogICAg
ICAgICAgICAgcmV0dXJuIG5ldyAoYWxsb2NhdGVDZWxsPE5hdGl2ZUVycm9yUHJvdG90eXBlPigq
ZXhlYy0+aGVhcCgpKSkgTmF0aXZlRXJyb3JQcm90b3R5cGUoZXhlYywgZ2xvYmFsT2JqZWN0LCBz
dHJ1Y3R1cmUsIG5hbWVBbmRNZXNzYWdlLCBjb25zdHJ1Y3Rvcik7CiAgICAgICAgIH0KKworICAg
IHByb3RlY3RlZDoKKyAgICAgICAgdm9pZCBjb25zdHJ1Y3RvckJvZHkoRXhlY1N0YXRlKiwgY29u
c3QgVVN0cmluZyYgbmFtZUFuZE1lc3NhZ2UsIE5hdGl2ZUVycm9yQ29uc3RydWN0b3IqKTsKICAg
ICB9OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1N0cmluZ09iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9TdHJpbmdPYmplY3QuY3BwCmluZGV4IDY3ZGMyOTFiMDllY2Y3ZDdlYmE4OGFhZjI5NmZh
NTM0OGVjMjJjZjkuLjFkMGM3YWJmOThkMDg3YzBiNTE3YjUyMDI0NmUyYThlZmViMzA3NjYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ09iamVjdC5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0LmNwcApAQCAt
MjksMTMgKzI5LDYgQEAgQVNTRVJUX0NMQVNTX0ZJVFNfSU5fQ0VMTChTdHJpbmdPYmplY3QpOwog
CiBjb25zdCBDbGFzc0luZm8gU3RyaW5nT2JqZWN0OjpzX2luZm8gPSB7ICJTdHJpbmciLCAmSlNX
cmFwcGVyT2JqZWN0OjpzX2luZm8sIDAsIDAgfTsKIAotU3RyaW5nT2JqZWN0OjpTdHJpbmdPYmpl
Y3QoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKLSAgICA6IEpTV3JhcHBl
ck9iamVjdChleGVjLT5nbG9iYWxEYXRhKCksIHN0cnVjdHVyZSkKLXsKLSAgICBBU1NFUlQoaW5o
ZXJpdHMoJnNfaW5mbykpOwotICAgIHNldEludGVybmFsVmFsdWUoZXhlYy0+Z2xvYmFsRGF0YSgp
LCBqc0VtcHR5U3RyaW5nKGV4ZWMpKTsKLX0KLQogU3RyaW5nT2JqZWN0OjpTdHJpbmdPYmplY3Qo
SlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNTdHJpbmcq
IHN0cmluZykKICAgICA6IEpTV3JhcHBlck9iamVjdChnbG9iYWxEYXRhLCBzdHJ1Y3R1cmUpCiB7
CkBAIC00MywxMyArMzYsNiBAQCBTdHJpbmdPYmplY3Q6OlN0cmluZ09iamVjdChKU0dsb2JhbERh
dGEmIGdsb2JhbERhdGEsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU1N0cgogICAgIHNldEludGVy
bmFsVmFsdWUoZ2xvYmFsRGF0YSwgc3RyaW5nKTsKIH0KIAotU3RyaW5nT2JqZWN0OjpTdHJpbmdP
YmplY3QoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgVVN0cmlu
ZyYgc3RyaW5nKQotICAgIDogSlNXcmFwcGVyT2JqZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwgc3Ry
dWN0dXJlKQotewotICAgIEFTU0VSVChpbmhlcml0cygmc19pbmZvKSk7Ci0gICAgc2V0SW50ZXJu
YWxWYWx1ZShleGVjLT5nbG9iYWxEYXRhKCksIGpzU3RyaW5nKGV4ZWMsIHN0cmluZykpOwotfQot
CiBib29sIFN0cmluZ09iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSogZXhlYywg
Y29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAg
ICAgaWYgKGludGVybmFsVmFsdWUoKS0+Z2V0U3RyaW5nUHJvcGVydHlTbG90KGV4ZWMsIHByb3Bl
cnR5TmFtZSwgc2xvdCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TdHJpbmdPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ09i
amVjdC5oCmluZGV4IDgwZTViZWM1Nzc3NzU1MWFhMjE5Nzc0NTA1N2FlMTkwOTI4YTcxNmUuLjdk
MTM1YzFlNDEyMmZhZTdmYWZmMThkYjJlMWJhMzdkNzVjZDQ1NWYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ09iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ09iamVjdC5oCkBAIC0zMiwxNCArMzIsMTUgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAKICAgICAgICAgc3RhdGljIFN0cmluZ09iamVjdCogY3JlYXRlKEV4ZWNT
dGF0ZSogZXhlYywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgICAgIHsKLSAgICAgICAgICAg
IHJldHVybiBuZXcgKGFsbG9jYXRlQ2VsbDxTdHJpbmdPYmplY3Q+KCpleGVjLT5oZWFwKCkpKSBT
dHJpbmdPYmplY3QoZXhlYywgc3RydWN0dXJlKTsgIAorICAgICAgICAgICAgSlNTdHJpbmcqIHN0
cmluZyA9IGpzRW1wdHlTdHJpbmcoZXhlYyk7CisgICAgICAgICAgICByZXR1cm4gbmV3IChhbGxv
Y2F0ZUNlbGw8U3RyaW5nT2JqZWN0PigqZXhlYy0+aGVhcCgpKSkgU3RyaW5nT2JqZWN0KGV4ZWMt
Pmdsb2JhbERhdGEoKSwgc3RydWN0dXJlLCBzdHJpbmcpOyAgCiAgICAgICAgIH0KICAgICAgICAg
c3RhdGljIFN0cmluZ09iamVjdCogY3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUsIGNvbnN0IFVTdHJpbmcmIHN0cikKICAgICAgICAgewotICAgICAgICAgICAgcmV0
dXJuIG5ldyAoYWxsb2NhdGVDZWxsPFN0cmluZ09iamVjdD4oKmV4ZWMtPmhlYXAoKSkpIFN0cmlu
Z09iamVjdChleGVjLCBzdHJ1Y3R1cmUsIHN0cik7ICAKKyAgICAgICAgICAgIEpTU3RyaW5nKiBz
dHJpbmcgPSBqc1N0cmluZyhleGVjLCBzdHIpOworICAgICAgICAgICAgcmV0dXJuIG5ldyAoYWxs
b2NhdGVDZWxsPFN0cmluZ09iamVjdD4oKmV4ZWMtPmhlYXAoKSkpIFN0cmluZ09iamVjdChleGVj
LT5nbG9iYWxEYXRhKCksIHN0cnVjdHVyZSwgc3RyaW5nKTsKICAgICAgICAgfQogICAgICAgICBz
dGF0aWMgU3RyaW5nT2JqZWN0KiBjcmVhdGUoRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBK
U1N0cmluZyopOwotICAgICAgICAKIAogICAgICAgICB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVy
dHlTbG90KEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVy
dHlTbG90Jik7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoRXhlY1N0
YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKQEAgLTU5LDggKzYw
LDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIH0KIAogICAgIHByb3RlY3RlZDoKLSAgICAg
ICAgU3RyaW5nT2JqZWN0KEV4ZWNTdGF0ZSosIFN0cnVjdHVyZSopOwotICAgICAgICBTdHJpbmdP
YmplY3QoRXhlY1N0YXRlKiwgU3RydWN0dXJlKiwgY29uc3QgVVN0cmluZyYpOwogICAgICAgICBz
dGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBPdmVycmlkZXNHZXRPd25Qcm9w
ZXJ0eVNsb3QgfCBPdmVycmlkZXNHZXRQcm9wZXJ0eU5hbWVzIHwgSlNXcmFwcGVyT2JqZWN0OjpT
dHJ1Y3R1cmVGbGFnczsKICAgICAgICAgU3RyaW5nT2JqZWN0KEpTR2xvYmFsRGF0YSYsIFN0cnVj
dHVyZSosIEpTU3RyaW5nKik7CiAgICAgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1N0cmluZ09iamVjdFRoYXRNYXNxdWVyYWRlc0FzVW5kZWZpbmVkLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdPYmplY3RUaGF0TWFzcXVlcmFkZXNB
c1VuZGVmaW5lZC5oCmluZGV4IGQ0MjMwZWE4ZjQ1MzFkNGNlODg0ZjBiYTE1NzQ4OTBmNjFhNDQ4
MTIuLjY5NDM2ZDdlMzZmNDgxMDYyOTBmYjhjZWY2NmU5ZDY2ZDc5NjdjNGYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ09iamVjdFRoYXRNYXNxdWVyYWRl
c0FzVW5kZWZpbmVkLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5n
T2JqZWN0VGhhdE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQuaApAQCAtMzQsMTMgKzM0LDE0IEBAIG5h
bWVzcGFjZSBKU0MgewogCiAgICAgICAgIHN0YXRpYyBTdHJpbmdPYmplY3RUaGF0TWFzcXVlcmFk
ZXNBc1VuZGVmaW5lZCogY3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgVVN0cmluZyYgc3Ry
aW5nKQogICAgICAgICB7CisgICAgICAgICAgICBKU1N0cmluZyogbmV3U3RyaW5nID0ganNTdHJp
bmcoZXhlYywgc3RyaW5nKTsKICAgICAgICAgICAgIHJldHVybiBuZXcgKGFsbG9jYXRlQ2VsbDxT
dHJpbmdPYmplY3RUaGF0TWFzcXVlcmFkZXNBc1VuZGVmaW5lZD4oKmV4ZWMtPmhlYXAoKSkpIFN0
cmluZ09iamVjdFRoYXRNYXNxdWVyYWRlc0FzVW5kZWZpbmVkKGV4ZWMsCi0gICAgICAgICAgICAg
ICAgY3JlYXRlU3RydWN0dXJlKGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+bGV4aWNhbEdsb2Jh
bE9iamVjdCgpLT5zdHJpbmdQcm90b3R5cGUoKSksIHN0cmluZyk7CisgICAgICAgICAgICAgICAg
Y3JlYXRlU3RydWN0dXJlKGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+bGV4aWNhbEdsb2JhbE9i
amVjdCgpLT5zdHJpbmdQcm90b3R5cGUoKSksIG5ld1N0cmluZyk7CiAgICAgICAgIH0KIAogICAg
IHByaXZhdGU6Ci0gICAgICAgIFN0cmluZ09iamVjdFRoYXRNYXNxdWVyYWRlc0FzVW5kZWZpbmVk
KEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IFVTdHJpbmcmIHN0
cmluZykKLSAgICAgICAgICAgIDogU3RyaW5nT2JqZWN0KGV4ZWMsIHN0cnVjdHVyZSwgc3RyaW5n
KQorICAgICAgICBTdHJpbmdPYmplY3RUaGF0TWFzcXVlcmFkZXNBc1VuZGVmaW5lZChFeGVjU3Rh
dGUqIGV4ZWMsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU1N0cmluZyogc3RyaW5nKQorICAgICAg
ICAgICAgOiBTdHJpbmdPYmplY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBzdHJ1Y3R1cmUsIHN0cmlu
ZykKICAgICAgICAgewogICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TdHJpbmdQcm90b3R5cGUuY3BwCmluZGV4IDQyODdkM2FmZWI1NDg5YjYzZjkxNGQ2
ZWVhOTAxMTY0ZDU3ZTg0NTYuLjBmYzYwNmY3NDczZjg5OTVhM2Y0YThkYWZkNjNiMDA5NzRmY2Vk
NTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1Byb3Rv
dHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJvdG90
eXBlLmNwcApAQCAtMTMxLDggKzEzMSw4IEBAIGNvbnN0IENsYXNzSW5mbyBTdHJpbmdQcm90b3R5
cGU6OnNfaW5mbyA9IHsgIlN0cmluZyIsICZTdHJpbmdPYmplY3Q6OnNfaW5mbywgMCwKICovCiAK
IC8vIEVDTUEgMTUuNS40Ci1TdHJpbmdQcm90b3R5cGU6OlN0cmluZ1Byb3RvdHlwZShFeGVjU3Rh
dGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0
dXJlKQotICAgIDogU3RyaW5nT2JqZWN0KGV4ZWMsIHN0cnVjdHVyZSkKK1N0cmluZ1Byb3RvdHlw
ZTo6U3RyaW5nUHJvdG90eXBlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTU3RyaW5nKiBuYW1lQW5kTWVzc2FnZSkK
KyAgICA6IFN0cmluZ09iamVjdChleGVjLT5nbG9iYWxEYXRhKCksIHN0cnVjdHVyZSwgbmFtZUFu
ZE1lc3NhZ2UpCiB7CiAgICAgQVNTRVJUKGluaGVyaXRzKCZzX2luZm8pKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdQcm90b3R5cGUuaAppbmRleCAwM2E2N2Q4
YzVlY2UxODRjNjQ1YTIxYTQ1ZTUzYWVjNTI5MTY4NjIwLi4yMTc1ODVmYTYwZDZiOTI3MDQ3ZWZl
OTQ5MDU0MjQ0MzNjN2ZkMGZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9TdHJpbmdQcm90b3R5cGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TdHJpbmdQcm90b3R5cGUuaApAQCAtMjksMTQgKzI5LDE1IEBAIG5hbWVzcGFjZSBKU0Mgewog
CiAgICAgY2xhc3MgU3RyaW5nUHJvdG90eXBlIDogcHVibGljIFN0cmluZ09iamVjdCB7CiAgICAg
cHJpdmF0ZToKLSAgICAgICAgU3RyaW5nUHJvdG90eXBlKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2Jq
ZWN0KiwgU3RydWN0dXJlKik7CisgICAgICAgIFN0cmluZ1Byb3RvdHlwZShFeGVjU3RhdGUqLCBK
U0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIEpTU3RyaW5nKik7CiAKICAgICBwdWJsaWM6CiAg
ICAgICAgIHR5cGVkZWYgU3RyaW5nT2JqZWN0IEJhc2U7CiAKICAgICAgICAgc3RhdGljIFN0cmlu
Z1Byb3RvdHlwZSogY3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJl
dHVybiBuZXcgKGFsbG9jYXRlQ2VsbDxTdHJpbmdQcm90b3R5cGU+KCpleGVjLT5oZWFwKCkpKSBT
dHJpbmdQcm90b3R5cGUoZXhlYywgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpOworICAgICAgICAg
ICAgSlNTdHJpbmcqIG5hbWVBbmRNZXNzYWdlID0ganNFbXB0eVN0cmluZyhleGVjKTsKKyAgICAg
ICAgICAgIHJldHVybiBuZXcgKGFsbG9jYXRlQ2VsbDxTdHJpbmdQcm90b3R5cGU+KCpleGVjLT5o
ZWFwKCkpKSBTdHJpbmdQcm90b3R5cGUoZXhlYywgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIG5h
bWVBbmRNZXNzYWdlKTsKICAgICAgICAgfQogCiAgICAgICAgIHZpcnR1YWwgYm9vbCBnZXRPd25Q
cm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQ
cm9wZXJ0eVNsb3QmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBhODI4Y2VjMDAzMjMxNzQ3MWE3YThiMTg3MWU1
M2JlMWM1ZmIxNjNmLi5jZTM2NzIyOWM5NjA2NWJlNmMxM2RlZWE5MjlmNmExY2Y3OWZiMWQyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMjcgQEAKKzIwMTEtMDgtMTcgIE1hcmsgSGFobmVuYmVyZyAg
PG1oYWhuZW5iZXJnQGFwcGxlLmNvbT4KKworICAgICAgICBNb3ZlIGFsbG9jYXRpb24gaW4gY29u
c3RydWN0b3JzIGludG8gc2VwYXJhdGUgZmluaXNoQWxsb2NhdGlvbigpIG1ldGhvZHMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY2MjY1CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLgor
CisgICAgICAgIFJlZmFjdG9yaW5nIHRvIHB1dCBhbGwgYWxsb2NhdGlvbnMgdGhhdCBuZWVkIHRv
IGJlIGRvbmUgYWZ0ZXIgCisgICAgICAgIHRoZSBvYmplY3QncyBpbml0aWFsaXphdGlvbiBsaXN0
IGhhcyBleGVjdXRlZCBidXQgYmVmb3JlIHRoZSBvYmplY3QgaXMgcmVhZHkgZm9yIHVzZSAKKyAg
ICAgICAgaW50byBhIHNlcGFyYXRlIGNvbnN0cnVjdG9yQm9keSgpIG1ldGhvZC4gIFRoaXMgbWV0
aG9kIGlzIHN0aWxsIGNhbGxlZCBieSB0aGUgY29uc3RydWN0b3IsIAorICAgICAgICBzbyB0aGUg
cGF0Y2ggZG9lc24ndCByZXNvbHZlIGFueSBwb3RlbnRpYWwgaXNzdWVzLCBpdCdzIGp1c3QgdG8g
c2V0IHVwIHRoZSBjb2RlIGZvciBmdXJ0aGVyIHJlZmFjdG9yaW5nLgorCisgICAgICAgICogYnJp
ZGdlL29iamMvT2JqQ1J1bnRpbWVPYmplY3QuaDoKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6Ok9i
akNSdW50aW1lT2JqZWN0OjpjcmVhdGUpOgorICAgICAgICAqIGJyaWRnZS9vYmpjL09iakNSdW50
aW1lT2JqZWN0Lm1tOgorICAgICAgICAqIGJyaWRnZS9vYmpjL29iamNfaW5zdGFuY2UubW06Cisg
ICAgICAgIChPYmpDUnVudGltZU1ldGhvZDo6Y3JlYXRlKToKKyAgICAgICAgKE9iakNSdW50aW1l
TWV0aG9kOjpPYmpDUnVudGltZU1ldGhvZCk6CisgICAgICAgICogYnJpZGdlL3J1bnRpbWVfYXJy
YXkuY3BwOgorICAgICAgICAqIGJyaWRnZS9ydW50aW1lX2FycmF5Lmg6CisgICAgICAgIChKU0M6
OlJ1bnRpbWVBcnJheTo6Y3JlYXRlKToKKwogMjAxMS0wOC0xNiAgSm9zZXBoIFBlY29yYXJvICA8
am9lcGVja0B3ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQgQ2hyb21pdW0gV2luZG93
cyBidWlsZCBmaXggYWZ0ZXIgcjkzMTQwLiBUYWtlIDQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9icmlkZ2Uvb2JqYy9PYmpDUnVudGltZU9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvYnJp
ZGdlL29iamMvT2JqQ1J1bnRpbWVPYmplY3QuaAppbmRleCA2NGNjZmY2ZWFhZmNjY2I1NTFjMGQ1
ZGE3MGYyNDYxM2FjYWUyNTYxLi5hODgxM2ZlM2Y3OGU4ZmE1M2UyM2MzYmFhYjk3MGM0MzJkZTBm
ZmQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9PYmpDUnVudGltZU9i
amVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL09iakNSdW50aW1lT2JqZWN0
LmgKQEAgLTM5LDYgKzM5LDggQEAgcHVibGljOgogCiAgICAgc3RhdGljIE9iakNSdW50aW1lT2Jq
ZWN0KiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBQYXNzUmVmUHRyPE9iamNJbnN0YW5jZT4gaW5zdCkKICAgICB7CisgICAgICAgIC8vIEZJWE1F
OiBkZXByZWNhdGVkR2V0RE9NU3RydWN0dXJlIHVzZXMgdGhlIHByb3RvdHlwZSBvZmYgb2YgdGhl
IHdyb25nIGdsb2JhbCBvYmplY3QKKyAgICAgICAgLy8gV2UgbmVlZCB0byBwYXNzIGluIHRoZSBy
aWdodCBnbG9iYWwgb2JqZWN0IGZvciAiaSIuCiAgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJl
ID0gV2ViQ29yZTo6ZGVwcmVjYXRlZEdldERPTVN0cnVjdHVyZTxPYmpDUnVudGltZU9iamVjdD4o
ZXhlYyk7CiAgICAgICAgIHJldHVybiBuZXcgKGFsbG9jYXRlQ2VsbDxPYmpDUnVudGltZU9iamVj
dD4oKmV4ZWMtPmhlYXAoKSkpIE9iakNSdW50aW1lT2JqZWN0KGV4ZWMsIGdsb2JhbE9iamVjdCwg
aW5zdCwgc3RydWN0dXJlKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlk
Z2Uvb2JqYy9PYmpDUnVudGltZU9iamVjdC5tbSBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpj
L09iakNSdW50aW1lT2JqZWN0Lm1tCmluZGV4IDU4NDhmZTMwMzdhMWZlNTY1NTBkYzAyMmE1N2Qw
Y2U1NDA2NWM2ZTQuLmVhODYyNjMyZGVjNGNmZTdhZWRkNjFkZTU4NGJiMmQ1YzBlYjhmYTkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL09iakNSdW50aW1lT2JqZWN0Lm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL09iakNSdW50aW1lT2JqZWN0Lm1tCkBA
IC0zNiw4ICszNiw2IEBAIG5hbWVzcGFjZSBCaW5kaW5ncyB7CiBjb25zdCBDbGFzc0luZm8gT2Jq
Q1J1bnRpbWVPYmplY3Q6OnNfaW5mbyA9IHsgIk9iakNSdW50aW1lT2JqZWN0IiwgJlJ1bnRpbWVP
YmplY3Q6OnNfaW5mbywgMCwgMCB9OwogCiBPYmpDUnVudGltZU9iamVjdDo6T2JqQ1J1bnRpbWVP
YmplY3QoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQYXNz
UmVmUHRyPE9iamNJbnN0YW5jZT4gaW5zdGFuY2UsIFN0cnVjdHVyZSogc3RydWN0dXJlKQotICAg
IC8vIEZJWE1FOiBkZXByZWNhdGVkR2V0RE9NU3RydWN0dXJlIHVzZXMgdGhlIHByb3RvdHlwZSBv
ZmYgb2YgdGhlIHdyb25nIGdsb2JhbCBvYmplY3QKLSAgICAvLyBXZSBuZWVkIHRvIHBhc3MgaW4g
dGhlIHJpZ2h0IGdsb2JhbCBvYmplY3QgZm9yICJpIi4KICAgICA6IFJ1bnRpbWVPYmplY3QoZXhl
YywgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIGluc3RhbmNlKQogewogICAgIEFTU0VSVChpbmhl
cml0cygmc19pbmZvKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9v
YmpjX2luc3RhbmNlLm1tIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19pbnN0YW5j
ZS5tbQppbmRleCAwNDFmOTIzNzc2YmE1ZDgwMWY1ZDc4ZjM4MjhiZDlkZTRmZGU3NjI3Li5kY2Rj
N2I2YTY4YjNiZDY0ODY3MWJlZGU2N2Q1Yjk5YjdkNjFmMDZiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX2luc3RhbmNlLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JyaWRnZS9vYmpjL29iamNfaW5zdGFuY2UubW0KQEAgLTE3NSw3ICsxNzUsMTAgQEAgY2xhc3Mg
T2JqQ1J1bnRpbWVNZXRob2QgOiBwdWJsaWMgUnVudGltZU1ldGhvZCB7CiBwdWJsaWM6CiAgICAg
c3RhdGljIE9iakNSdW50aW1lTWV0aG9kKiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBJZGVudGlmaWVyJiBuYW1lLCBCaW5kaW5nczo6
TWV0aG9kTGlzdCYgbGlzdCkKICAgICB7Ci0gICAgICAgIHJldHVybiBuZXcgKGFsbG9jYXRlQ2Vs
bDxPYmpDUnVudGltZU1ldGhvZD4oKmV4ZWMtPmhlYXAoKSkpIE9iakNSdW50aW1lTWV0aG9kKGV4
ZWMsIGdsb2JhbE9iamVjdCwgbmFtZSwgbGlzdCk7CisgICAgICAgIC8vIEZJWE1FOiBkZXByZWNh
dGVkR2V0RE9NU3RydWN0dXJlIHVzZXMgdGhlIHByb3RvdHlwZSBvZmYgb2YgdGhlIHdyb25nIGds
b2JhbCBvYmplY3QKKyAgICAgICAgLy8gV2UgbmVlZCB0byBwYXNzIGluIHRoZSByaWdodCBnbG9i
YWwgb2JqZWN0IGZvciAiaSIuCisgICAgICAgIFN0cnVjdHVyZSogZG9tU3RydWN0dXJlID0gV2Vi
Q29yZTo6ZGVwcmVjYXRlZEdldERPTVN0cnVjdHVyZTxPYmpDUnVudGltZU1ldGhvZD4oZXhlYyk7
CisgICAgICAgIHJldHVybiBuZXcgKGFsbG9jYXRlQ2VsbDxPYmpDUnVudGltZU1ldGhvZD4oKmV4
ZWMtPmhlYXAoKSkpIE9iakNSdW50aW1lTWV0aG9kKGV4ZWMsIGdsb2JhbE9iamVjdCwgZG9tU3Ry
dWN0dXJlLCBuYW1lLCBsaXN0KTsKICAgICB9CiAKICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVh
dGVTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU1ZhbHVlIHByb3RvdHlwZSkK
QEAgLTE4NiwxMCArMTg5LDggQEAgcHVibGljOgogICAgIHN0YXRpYyBjb25zdCBDbGFzc0luZm8g
c19pbmZvOwogCiBwcml2YXRlOgotICAgIE9iakNSdW50aW1lTWV0aG9kKEV4ZWNTdGF0ZSogZXhl
YywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgSWRlbnRpZmllciYgbmFtZSwg
QmluZGluZ3M6Ok1ldGhvZExpc3QmIGxpc3QpCi0gICAgICAgIC8vIEZJWE1FOiBkZXByZWNhdGVk
R2V0RE9NU3RydWN0dXJlIHVzZXMgdGhlIHByb3RvdHlwZSBvZmYgb2YgdGhlIHdyb25nIGdsb2Jh
bCBvYmplY3QKLSAgICAgICAgLy8gV2UgbmVlZCB0byBwYXNzIGluIHRoZSByaWdodCBnbG9iYWwg
b2JqZWN0IGZvciAiaSIuCi0gICAgICAgIDogUnVudGltZU1ldGhvZChleGVjLCBnbG9iYWxPYmpl
Y3QsIFdlYkNvcmU6OmRlcHJlY2F0ZWRHZXRET01TdHJ1Y3R1cmU8T2JqQ1J1bnRpbWVNZXRob2Q+
KGV4ZWMpLCBuYW1lLCBsaXN0KQorICAgIE9iakNSdW50aW1lTWV0aG9kKEV4ZWNTdGF0ZSogZXhl
YywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNv
bnN0IElkZW50aWZpZXImIG5hbWUsIEJpbmRpbmdzOjpNZXRob2RMaXN0JiBsaXN0KQorICAgICAg
ICA6IFJ1bnRpbWVNZXRob2QoZXhlYywgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIG5hbWUsIGxp
c3QpCiAgICAgewogICAgICAgICBBU1NFUlQoaW5oZXJpdHMoJnNfaW5mbykpOwogICAgIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX2FycmF5LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX2FycmF5LmNwcAppbmRleCBkMDU2NDk0ZWQ4MGFhMWQz
OTFmZGUwYWJkMDllZGE0MjA0MjkxYjU0Li5iNWY3YTA3OGIyYzAwY2Y4ZGZkYzgwOTBjN2FmODQw
MjEyNGQ2NTdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9hcnJh
eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfYXJyYXkuY3BwCkBAIC0z
OCw4ICszOCw2IEBAIG5hbWVzcGFjZSBKU0MgewogY29uc3QgQ2xhc3NJbmZvIFJ1bnRpbWVBcnJh
eTo6c19pbmZvID0geyAiUnVudGltZUFycmF5IiwgJkpTQXJyYXk6OnNfaW5mbywgMCwgMCB9Owog
CiBSdW50aW1lQXJyYXk6OlJ1bnRpbWVBcnJheShFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZSog
c3RydWN0dXJlLCBCaW5kaW5nczo6QXJyYXkqIGFycmF5KQotICAgIC8vIEZJWE1FOiBkZXByZWNh
dGVkR2V0RE9NU3RydWN0dXJlIHVzZXMgdGhlIHByb3RvdHlwZSBvZmYgb2YgdGhlIHdyb25nIGds
b2JhbCBvYmplY3QKLSAgICAvLyBXZSBuZWVkIHRvIHBhc3MgaW4gdGhlIHJpZ2h0IGdsb2JhbCBv
YmplY3QgZm9yICJhcnJheSIuCiAgICAgOiBKU0FycmF5KGV4ZWMtPmdsb2JhbERhdGEoKSwgc3Ry
dWN0dXJlKQogewogICAgIEFTU0VSVChpbmhlcml0cygmc19pbmZvKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9hcnJheS5oIGIvU291cmNlL1dlYkNvcmUvYnJp
ZGdlL3J1bnRpbWVfYXJyYXkuaAppbmRleCA0OWUzOTNmODc5Zjc2ZDdhYzNlMGM4NWQzMDczNmE2
ZDc1NjY2ZmRkLi5jYjdiYzYzNTc3NmQ4ZWJjOTEwMzk1MzIwYWVmZGU0MmJjYjkwNmQ3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9hcnJheS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX2FycmF5LmgKQEAgLTM4LDYgKzM4LDggQEAgcHVibGlj
OgogCiAgICAgc3RhdGljIFJ1bnRpbWVBcnJheSogY3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgQmlu
ZGluZ3M6OkFycmF5KiBhcnJheSkKICAgICB7CisgICAgICAgIC8vIEZJWE1FOiBkZXByZWNhdGVk
R2V0RE9NU3RydWN0dXJlIHVzZXMgdGhlIHByb3RvdHlwZSBvZmYgb2YgdGhlIHdyb25nIGdsb2Jh
bCBvYmplY3QKKyAgICAgICAgLy8gV2UgbmVlZCB0byBwYXNzIGluIHRoZSByaWdodCBnbG9iYWwg
b2JqZWN0IGZvciAiYXJyYXkiLgogICAgICAgICBTdHJ1Y3R1cmUqIGRvbVN0cnVjdHVyZSA9IFdl
YkNvcmU6OmRlcHJlY2F0ZWRHZXRET01TdHJ1Y3R1cmU8UnVudGltZUFycmF5PihleGVjKTsKICAg
ICAgICAgcmV0dXJuIG5ldyAoYWxsb2NhdGVDZWxsPFJ1bnRpbWVBcnJheT4oKmV4ZWMtPmhlYXAo
KSkpIFJ1bnRpbWVBcnJheShleGVjLCBkb21TdHJ1Y3R1cmUsIGFycmF5KTsKICAgICB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>104419</attachid>
            <date>2011-08-18 16:02:44 -0700</date>
            <delta_ts>2011-08-18 17:58:47 -0700</delta_ts>
            <desc>Fixing windows build errors</desc>
            <filename>bug-66265-20110818160243.patch</filename>
            <type>text/plain</type>
            <size>46664</size>
            <attacher name="Mark Hahnenberg">mhahnenberg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTMzNjAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDk0
YzI1MzhjNWEzOTc2NmY3Y2JmNzRmMDhjMDY4ZTIxNThkMzJjNzIuLjY3ZWI0MjBkMDgyNWVhMzBh
OTVjZDRjMGI0YzEzMTYxN2RiMzkzZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDczIEBACisyMDExLTA4LTE4ICBNYXJrIEhhaG5lbmJlcmcgIDxtaGFobmVuYmVyZ0BhcHBs
ZS5jb20+CisKKyAgICAgICAgTW92ZSBhbGxvY2F0aW9uIGluIGNvbnN0cnVjdG9ycyBpbnRvIHNl
cGFyYXRlIGNvbnN0cnVjdG9yQm9keSgpIG1ldGhvZHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY2MjY1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgUmVmYWN0b3JpbmcgdG8gcHV0IGFsbCBhbGxvY2F0aW9u
cyB0aGF0IG5lZWQgdG8gYmUgZG9uZSBhZnRlciB0aGUgb2JqZWN0J3MgCisgICAgICAgIGluaXRp
YWxpemF0aW9uIGxpc3QgaGFzIGV4ZWN1dGVkIGJ1dCBiZWZvcmUgdGhlIG9iamVjdCBpcyByZWFk
eSBmb3IgdXNlIAorICAgICAgICBpbnRvIGEgc2VwYXJhdGUgY29uc3RydWN0b3JCb2R5KCkgbWV0
aG9kLiAgVGhpcyBtZXRob2QgaXMgc3RpbGwgY2FsbGVkIGJ5IHRoZSBjb25zdHJ1Y3RvciwgCisg
ICAgICAgIHNvIHRoZSBwYXRjaCBkb2Vzbid0IHJlc29sdmUgYW55IHBvdGVudGlhbCBpc3N1ZXMs
IGl0J3MganVzdCB0byBzZXQgdXAgdGhlIGNvZGUgZm9yIGZ1cnRoZXIgcmVmYWN0b3JpbmcuCisK
KyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS5leHA6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUu
dmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmRlZjoKKyAgICAgICAgKiBqc2Mu
Y3BwOgorICAgICAgICAoR2xvYmFsT2JqZWN0Ojpjb25zdHJ1Y3RvckJvZHkpOgorICAgICAgICAo
R2xvYmFsT2JqZWN0OjpHbG9iYWxPYmplY3QpOgorICAgICAgICAqIHJ1bnRpbWUvRXJyb3JJbnN0
YW5jZS5jcHA6CisgICAgICAgIChKU0M6OkVycm9ySW5zdGFuY2U6OkVycm9ySW5zdGFuY2UpOgor
ICAgICAgICAqIHJ1bnRpbWUvRXJyb3JJbnN0YW5jZS5oOgorICAgICAgICAoSlNDOjpFcnJvcklu
c3RhbmNlOjpjb25zdHJ1Y3RvckJvZHkpOgorICAgICAgICAqIHJ1bnRpbWUvRXJyb3JQcm90b3R5
cGUuY3BwOgorICAgICAgICAoSlNDOjpFcnJvclByb3RvdHlwZTo6RXJyb3JQcm90b3R5cGUpOgor
ICAgICAgICAoSlNDOjpFcnJvclByb3RvdHlwZTo6Y29uc3RydWN0b3JCb2R5KToKKyAgICAgICAg
KiBydW50aW1lL0Vycm9yUHJvdG90eXBlLmg6CisgICAgICAgICogcnVudGltZS9FeGVjdXRhYmxl
LmNwcDoKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlOjpGdW5jdGlvbkV4ZWN1dGFi
bGUpOgorICAgICAgICAqIHJ1bnRpbWUvRXhlY3V0YWJsZS5oOgorICAgICAgICAoSlNDOjpGdW5j
dGlvbkV4ZWN1dGFibGU6OmNvbnN0cnVjdG9yQm9keSk6CisgICAgICAgICogcnVudGltZS9JbnRl
cm5hbEZ1bmN0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6SW50ZXJuYWxGdW5jdGlvbjo6SW50ZXJu
YWxGdW5jdGlvbik6CisgICAgICAgICogcnVudGltZS9JbnRlcm5hbEZ1bmN0aW9uLmg6CisgICAg
ICAgIChKU0M6OkludGVybmFsRnVuY3Rpb246OmNvbnN0cnVjdG9yQm9keSk6CisgICAgICAgICog
cnVudGltZS9KU0J5dGVBcnJheS5jcHA6CisgICAgICAgIChKU0M6OkpTQnl0ZUFycmF5OjpKU0J5
dGVBcnJheSk6CisgICAgICAgICogcnVudGltZS9KU0J5dGVBcnJheS5oOgorICAgICAgICAoSlND
OjpKU0J5dGVBcnJheTo6Y29uc3RydWN0b3JCb2R5KToKKyAgICAgICAgKiBydW50aW1lL0pTRnVu
Y3Rpb24uY3BwOgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjpKU0Z1bmN0aW9uKToKKyAgICAg
ICAgKEpTQzo6SlNGdW5jdGlvbjo6Y29uc3RydWN0b3JCb2R5KToKKyAgICAgICAgKiBydW50aW1l
L0pTRnVuY3Rpb24uaDoKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0Lmg6CisgICAg
ICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpKU0dsb2JhbE9iamVjdCk6CisgICAgICAgIChKU0M6
OkpTR2xvYmFsT2JqZWN0Ojpjb25zdHJ1Y3RvckJvZHkpOgorICAgICAgICAqIHJ1bnRpbWUvSlNQ
cm9wZXJ0eU5hbWVJdGVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OkpTUHJvcGVydHlOYW1lSXRl
cmF0b3I6OkpTUHJvcGVydHlOYW1lSXRlcmF0b3IpOgorICAgICAgICAqIHJ1bnRpbWUvSlNQcm9w
ZXJ0eU5hbWVJdGVyYXRvci5oOgorICAgICAgICAoSlNDOjpKU1Byb3BlcnR5TmFtZUl0ZXJhdG9y
Ojpjb25zdHJ1Y3RvckJvZHkpOgorICAgICAgICAqIHJ1bnRpbWUvSlNTdHJpbmcuaDoKKyAgICAg
ICAgKEpTQzo6Um9wZUJ1aWxkZXI6OkpTU3RyaW5nKToKKyAgICAgICAgKEpTQzo6Um9wZUJ1aWxk
ZXI6OmNvbnN0cnVjdG9yQm9keSk6CisgICAgICAgICogcnVudGltZS9OYXRpdmVFcnJvckNvbnN0
cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6TmF0aXZlRXJyb3JDb25zdHJ1Y3Rvcjo6TmF0aXZl
RXJyb3JDb25zdHJ1Y3Rvcik6CisgICAgICAgICogcnVudGltZS9OYXRpdmVFcnJvckNvbnN0cnVj
dG9yLmg6CisgICAgICAgIChKU0M6Ok5hdGl2ZUVycm9yQ29uc3RydWN0b3I6OmNvbnN0cnVjdG9y
Qm9keSk6CisgICAgICAgICogcnVudGltZS9OYXRpdmVFcnJvclByb3RvdHlwZS5jcHA6CisgICAg
ICAgIChKU0M6Ok5hdGl2ZUVycm9yUHJvdG90eXBlOjpOYXRpdmVFcnJvclByb3RvdHlwZSk6Cisg
ICAgICAgIChKU0M6Ok5hdGl2ZUVycm9yUHJvdG90eXBlOjpjb25zdHJ1Y3RvckJvZHkpOgorICAg
ICAgICAqIHJ1bnRpbWUvTmF0aXZlRXJyb3JQcm90b3R5cGUuaDoKKyAgICAgICAgKiBydW50aW1l
L1N0cmluZ09iamVjdC5jcHA6CisgICAgICAgICogcnVudGltZS9TdHJpbmdPYmplY3QuaDoKKyAg
ICAgICAgKEpTQzo6U3RyaW5nT2JqZWN0OjpjcmVhdGUpOgorICAgICAgICAqIHJ1bnRpbWUvU3Ry
aW5nT2JqZWN0VGhhdE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQuaDoKKyAgICAgICAgKEpTQzo6U3Ry
aW5nT2JqZWN0VGhhdE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQ6OmNyZWF0ZSk6CisgICAgICAgIChK
U0M6OlN0cmluZ09iamVjdFRoYXRNYXNxdWVyYWRlc0FzVW5kZWZpbmVkOjpTdHJpbmdPYmplY3RU
aGF0TWFzcXVlcmFkZXNBc1VuZGVmaW5lZCk6CisgICAgICAgICogcnVudGltZS9TdHJpbmdQcm90
b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpTdHJpbmdQcm90b3R5cGU6OlN0cmluZ1Byb3RvdHlw
ZSk6CisgICAgICAgICogcnVudGltZS9TdHJpbmdQcm90b3R5cGUuaDoKKyAgICAgICAgKEpTQzo6
U3RyaW5nUHJvdG90eXBlOjpjcmVhdGUpOgorCiAyMDExLTA4LTE4ICBGaWxpcCBQaXpsbyAgPGZw
aXpsb0BhcHBsZS5jb20+CiAKICAgICAgICAgW2pzZnVuZnV6el0gREZHIHNwZWN1bGF0aXZlIEpJ
VCBkb2VzIGRpdmlkZS1ieS16ZXJvIGNoZWNrcyBpbmNvcnJlY3RseQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmV4cCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS5leHAKaW5kZXggZTU1ZjY5ZDllM2E0ZTE5MWRhNjYwYjQ1Zjg4
Y2ZiMjZkNWJhZGFhMy4uZjBiYmNjNDBlMjYzMDgwNDc1ZDA5ZGFhNmY4NGQ0MDY3NTk0MWYzZCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmV4cAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZXhwCkBAIC0xNTEsNyArMTUx
LDcgQEAgX19aTjNKU0MxMlN0cmluZ09iamVjdDE5Z2V0T3duUHJvcGVydHlOYW1lc0VQTlNfOUV4
ZWNTdGF0ZUVSTlNfMTdQcm9wZXJ0eU5hbWVBcnIKIF9fWk4zSlNDMTJTdHJpbmdPYmplY3QyNGdl
dE93blByb3BlcnR5RGVzY3JpcHRvckVQTlNfOUV4ZWNTdGF0ZUVSS05TXzEwSWRlbnRpZmllckVS
TlNfMThQcm9wZXJ0eURlc2NyaXB0b3JFCiBfX1pOM0pTQzEyU3RyaW5nT2JqZWN0M3B1dEVQTlNf
OUV4ZWNTdGF0ZUVSS05TXzEwSWRlbnRpZmllckVOU183SlNWYWx1ZUVSTlNfMTVQdXRQcm9wZXJ0
eVNsb3RFCiBfX1pOM0pTQzEyU3RyaW5nT2JqZWN0NnNfaW5mb0UKLV9fWk4zSlNDMTJTdHJpbmdP
YmplY3RDMkVQTlNfOUV4ZWNTdGF0ZUVQTlNfOVN0cnVjdHVyZUVSS05TXzdVU3RyaW5nRQorX19a
TjNKU0MxMlN0cmluZ09iamVjdEMyRVJOU18xMkpTR2xvYmFsRGF0YUVQTlNfOVN0cnVjdHVyZUVQ
TlNfOEpTU3RyaW5nRQogX19aTjNKU0MxM1NhbXBsaW5nRmxhZ3M0c3RvcEV2CiBfX1pOM0pTQzEz
U2FtcGxpbmdGbGFnczVzdGFydEV2CiBfX1pOM0pTQzEzU2FtcGxpbmdGbGFnczdzX2ZsYWdzRQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9K
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5kZWYgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
SmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmRlZgpp
bmRleCBiN2EyMWIwODk1NWQ3YzBlNmQyZjEwYjdmMzM4MTQ2M2UxNDczNDZlLi5hZDFmMjQ0N2Rh
OTM3MmM5ZDYwYjBiZTgyNzllM2RhNWI0YjM3MjRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlLmRlZgorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9q
L0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmRlZgpAQCAtMTksNyArMTksNyBAQCBFWFBP
UlRTCiAgICAgPz8wUmVmQ291bnRlZExlYWtDb3VudGVyQFdURkBAUUFFQFBCREBaCiAgICAgPz8w
UmVnRXhwT2JqZWN0QEpTQ0BASUFFQFBBVkpTR2xvYmFsT2JqZWN0QDFAUEFWU3RydWN0dXJlQDFA
UEFWUmVnRXhwQDFAQFoKICAgICA/PzBTSEExQFdURkBAUUFFQFhaCi0gICAgPz8wU3RyaW5nT2Jq
ZWN0QEpTQ0BASUFFQFBBVkV4ZWNTdGF0ZUAxQFBBVlN0cnVjdHVyZUAxQEFCVlVTdHJpbmdAMUBA
WgorICAgID8/MFN0cmluZ09iamVjdEBKU0NAQElBRUBBQVZKU0dsb2JhbERhdGFAMUBQQVZTdHJ1
Y3R1cmVAMUBQQVZKU1N0cmluZ0AxQEBaCiAgICAgPz8wU3RydWN0dXJlQEpTQ0BAQUFFQEFBVkpT
R2xvYmFsRGF0YUAxQFZKU1ZhbHVlQDFAQUJWVHlwZUluZm9AMUBJUEJVQ2xhc3NJbmZvQDFAQFoK
ICAgICA/PzBUaHJlYWRDb25kaXRpb25AV1RGQEBRQUVAWFoKICAgICA/PzBVU3RyaW5nQEpTQ0BA
UUFFQFBCREBaCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCmluZGV4IGFmZWI1ZDlkMTEzOTZhNDlhZjRhZmZj
MTNjMzQ1ODg1YzliMmExMzEuLmUxMDM3MDkwYmQ4Y2ExMjcyNGE1YTZmMTA3ZGIzMWI5NWIxMzM2
ZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCkBAIC0xNTUsMzYgKzE1NSw0MiBAQCBwdWJsaWM6CiAg
ICAgICAgIHJldHVybiBuZXcgKGFsbG9jYXRlQ2VsbDxHbG9iYWxPYmplY3Q+KGdsb2JhbERhdGEu
aGVhcCkpIEdsb2JhbE9iamVjdChnbG9iYWxEYXRhLCBzdHJ1Y3R1cmUsIGFyZ3VtZW50cyk7CiAg
ICAgfQogICAgIHZpcnR1YWwgVVN0cmluZyBjbGFzc05hbWUoKSBjb25zdCB7IHJldHVybiAiZ2xv
YmFsIjsgfQotfTsKLUNPTVBJTEVfQVNTRVJUKCFJc0ludGVnZXI8R2xvYmFsT2JqZWN0Pjo6dmFs
dWUsIFdURl9Jc0ludGVnZXJfR2xvYmFsT2JqZWN0X2ZhbHNlKTsKLUFTU0VSVF9DTEFTU19GSVRT
X0lOX0NFTEwoR2xvYmFsT2JqZWN0KTsKIAotR2xvYmFsT2JqZWN0OjpHbG9iYWxPYmplY3QoSlNH
bG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgVmVjdG9y
PFVTdHJpbmc+JiBhcmd1bWVudHMpCi0gICAgOiBKU0dsb2JhbE9iamVjdChnbG9iYWxEYXRhLCBz
dHJ1Y3R1cmUpCi17Ci0gICAgcHV0RGlyZWN0RnVuY3Rpb24oZ2xvYmFsRXhlYygpLCBKU0Z1bmN0
aW9uOjpjcmVhdGUoZ2xvYmFsRXhlYygpLCB0aGlzLCBmdW5jdGlvblN0cnVjdHVyZSgpLCAxLCBJ
ZGVudGlmaWVyKGdsb2JhbEV4ZWMoKSwgImRlYnVnIiksIGZ1bmN0aW9uRGVidWcpKTsKLSAgICBw
dXREaXJlY3RGdW5jdGlvbihnbG9iYWxFeGVjKCksIEpTRnVuY3Rpb246OmNyZWF0ZShnbG9iYWxF
eGVjKCksIHRoaXMsIGZ1bmN0aW9uU3RydWN0dXJlKCksIDEsIElkZW50aWZpZXIoZ2xvYmFsRXhl
YygpLCAicHJpbnQiKSwgZnVuY3Rpb25QcmludCkpOwotICAgIHB1dERpcmVjdEZ1bmN0aW9uKGds
b2JhbEV4ZWMoKSwgSlNGdW5jdGlvbjo6Y3JlYXRlKGdsb2JhbEV4ZWMoKSwgdGhpcywgZnVuY3Rp
b25TdHJ1Y3R1cmUoKSwgMCwgSWRlbnRpZmllcihnbG9iYWxFeGVjKCksICJxdWl0IiksIGZ1bmN0
aW9uUXVpdCkpOwotICAgIHB1dERpcmVjdEZ1bmN0aW9uKGdsb2JhbEV4ZWMoKSwgSlNGdW5jdGlv
bjo6Y3JlYXRlKGdsb2JhbEV4ZWMoKSwgdGhpcywgZnVuY3Rpb25TdHJ1Y3R1cmUoKSwgMCwgSWRl
bnRpZmllcihnbG9iYWxFeGVjKCksICJnYyIpLCBmdW5jdGlvbkdDKSk7Citwcm90ZWN0ZWQ6Cisg
ICAgdm9pZCBjb25zdHJ1Y3RvckJvZHkoY29uc3QgVmVjdG9yPFVTdHJpbmc+JiBhcmd1bWVudHMp
CisgICAgeworICAgICAgICBwdXREaXJlY3RGdW5jdGlvbihnbG9iYWxFeGVjKCksIEpTRnVuY3Rp
b246OmNyZWF0ZShnbG9iYWxFeGVjKCksIHRoaXMsIGZ1bmN0aW9uU3RydWN0dXJlKCksIDEsIElk
ZW50aWZpZXIoZ2xvYmFsRXhlYygpLCAiZGVidWciKSwgZnVuY3Rpb25EZWJ1ZykpOworICAgICAg
ICBwdXREaXJlY3RGdW5jdGlvbihnbG9iYWxFeGVjKCksIEpTRnVuY3Rpb246OmNyZWF0ZShnbG9i
YWxFeGVjKCksIHRoaXMsIGZ1bmN0aW9uU3RydWN0dXJlKCksIDEsIElkZW50aWZpZXIoZ2xvYmFs
RXhlYygpLCAicHJpbnQiKSwgZnVuY3Rpb25QcmludCkpOworICAgICAgICBwdXREaXJlY3RGdW5j
dGlvbihnbG9iYWxFeGVjKCksIEpTRnVuY3Rpb246OmNyZWF0ZShnbG9iYWxFeGVjKCksIHRoaXMs
IGZ1bmN0aW9uU3RydWN0dXJlKCksIDAsIElkZW50aWZpZXIoZ2xvYmFsRXhlYygpLCAicXVpdCIp
LCBmdW5jdGlvblF1aXQpKTsKKyAgICAgICAgcHV0RGlyZWN0RnVuY3Rpb24oZ2xvYmFsRXhlYygp
LCBKU0Z1bmN0aW9uOjpjcmVhdGUoZ2xvYmFsRXhlYygpLCB0aGlzLCBmdW5jdGlvblN0cnVjdHVy
ZSgpLCAwLCBJZGVudGlmaWVyKGdsb2JhbEV4ZWMoKSwgImdjIiksIGZ1bmN0aW9uR0MpKTsKICNp
Zm5kZWYgTkRFQlVHCi0gICAgcHV0RGlyZWN0RnVuY3Rpb24oZ2xvYmFsRXhlYygpLCBKU0Z1bmN0
aW9uOjpjcmVhdGUoZ2xvYmFsRXhlYygpLCB0aGlzLCBmdW5jdGlvblN0cnVjdHVyZSgpLCAwLCBJ
ZGVudGlmaWVyKGdsb2JhbEV4ZWMoKSwgInJlbGVhc2VFeGVjdXRhYmxlTWVtb3J5IiksIGZ1bmN0
aW9uUmVsZWFzZUV4ZWN1dGFibGVNZW1vcnkpKTsKKyAgICAgICAgcHV0RGlyZWN0RnVuY3Rpb24o
Z2xvYmFsRXhlYygpLCBKU0Z1bmN0aW9uOjpjcmVhdGUoZ2xvYmFsRXhlYygpLCB0aGlzLCBmdW5j
dGlvblN0cnVjdHVyZSgpLCAwLCBJZGVudGlmaWVyKGdsb2JhbEV4ZWMoKSwgInJlbGVhc2VFeGVj
dXRhYmxlTWVtb3J5IiksIGZ1bmN0aW9uUmVsZWFzZUV4ZWN1dGFibGVNZW1vcnkpKTsKICNlbmRp
ZgotICAgIHB1dERpcmVjdEZ1bmN0aW9uKGdsb2JhbEV4ZWMoKSwgSlNGdW5jdGlvbjo6Y3JlYXRl
KGdsb2JhbEV4ZWMoKSwgdGhpcywgZnVuY3Rpb25TdHJ1Y3R1cmUoKSwgMSwgSWRlbnRpZmllcihn
bG9iYWxFeGVjKCksICJ2ZXJzaW9uIiksIGZ1bmN0aW9uVmVyc2lvbikpOwotICAgIHB1dERpcmVj
dEZ1bmN0aW9uKGdsb2JhbEV4ZWMoKSwgSlNGdW5jdGlvbjo6Y3JlYXRlKGdsb2JhbEV4ZWMoKSwg
dGhpcywgZnVuY3Rpb25TdHJ1Y3R1cmUoKSwgMSwgSWRlbnRpZmllcihnbG9iYWxFeGVjKCksICJy
dW4iKSwgZnVuY3Rpb25SdW4pKTsKLSAgICBwdXREaXJlY3RGdW5jdGlvbihnbG9iYWxFeGVjKCks
IEpTRnVuY3Rpb246OmNyZWF0ZShnbG9iYWxFeGVjKCksIHRoaXMsIGZ1bmN0aW9uU3RydWN0dXJl
KCksIDEsIElkZW50aWZpZXIoZ2xvYmFsRXhlYygpLCAibG9hZCIpLCBmdW5jdGlvbkxvYWQpKTsK
LSAgICBwdXREaXJlY3RGdW5jdGlvbihnbG9iYWxFeGVjKCksIEpTRnVuY3Rpb246OmNyZWF0ZShn
bG9iYWxFeGVjKCksIHRoaXMsIGZ1bmN0aW9uU3RydWN0dXJlKCksIDEsIElkZW50aWZpZXIoZ2xv
YmFsRXhlYygpLCAiY2hlY2tTeW50YXgiKSwgZnVuY3Rpb25DaGVja1N5bnRheCkpOwotICAgIHB1
dERpcmVjdEZ1bmN0aW9uKGdsb2JhbEV4ZWMoKSwgSlNGdW5jdGlvbjo6Y3JlYXRlKGdsb2JhbEV4
ZWMoKSwgdGhpcywgZnVuY3Rpb25TdHJ1Y3R1cmUoKSwgMCwgSWRlbnRpZmllcihnbG9iYWxFeGVj
KCksICJyZWFkbGluZSIpLCBmdW5jdGlvblJlYWRsaW5lKSk7Ci0gICAgcHV0RGlyZWN0RnVuY3Rp
b24oZ2xvYmFsRXhlYygpLCBKU0Z1bmN0aW9uOjpjcmVhdGUoZ2xvYmFsRXhlYygpLCB0aGlzLCBm
dW5jdGlvblN0cnVjdHVyZSgpLCAwLCBJZGVudGlmaWVyKGdsb2JhbEV4ZWMoKSwgInByZWNpc2VU
aW1lIiksIGZ1bmN0aW9uUHJlY2lzZVRpbWUpKTsKKyAgICAgICAgcHV0RGlyZWN0RnVuY3Rpb24o
Z2xvYmFsRXhlYygpLCBKU0Z1bmN0aW9uOjpjcmVhdGUoZ2xvYmFsRXhlYygpLCB0aGlzLCBmdW5j
dGlvblN0cnVjdHVyZSgpLCAxLCBJZGVudGlmaWVyKGdsb2JhbEV4ZWMoKSwgInZlcnNpb24iKSwg
ZnVuY3Rpb25WZXJzaW9uKSk7CisgICAgICAgIHB1dERpcmVjdEZ1bmN0aW9uKGdsb2JhbEV4ZWMo
KSwgSlNGdW5jdGlvbjo6Y3JlYXRlKGdsb2JhbEV4ZWMoKSwgdGhpcywgZnVuY3Rpb25TdHJ1Y3R1
cmUoKSwgMSwgSWRlbnRpZmllcihnbG9iYWxFeGVjKCksICJydW4iKSwgZnVuY3Rpb25SdW4pKTsK
KyAgICAgICAgcHV0RGlyZWN0RnVuY3Rpb24oZ2xvYmFsRXhlYygpLCBKU0Z1bmN0aW9uOjpjcmVh
dGUoZ2xvYmFsRXhlYygpLCB0aGlzLCBmdW5jdGlvblN0cnVjdHVyZSgpLCAxLCBJZGVudGlmaWVy
KGdsb2JhbEV4ZWMoKSwgImxvYWQiKSwgZnVuY3Rpb25Mb2FkKSk7CisgICAgICAgIHB1dERpcmVj
dEZ1bmN0aW9uKGdsb2JhbEV4ZWMoKSwgSlNGdW5jdGlvbjo6Y3JlYXRlKGdsb2JhbEV4ZWMoKSwg
dGhpcywgZnVuY3Rpb25TdHJ1Y3R1cmUoKSwgMSwgSWRlbnRpZmllcihnbG9iYWxFeGVjKCksICJj
aGVja1N5bnRheCIpLCBmdW5jdGlvbkNoZWNrU3ludGF4KSk7CisgICAgICAgIHB1dERpcmVjdEZ1
bmN0aW9uKGdsb2JhbEV4ZWMoKSwgSlNGdW5jdGlvbjo6Y3JlYXRlKGdsb2JhbEV4ZWMoKSwgdGhp
cywgZnVuY3Rpb25TdHJ1Y3R1cmUoKSwgMCwgSWRlbnRpZmllcihnbG9iYWxFeGVjKCksICJyZWFk
bGluZSIpLCBmdW5jdGlvblJlYWRsaW5lKSk7CisgICAgICAgIHB1dERpcmVjdEZ1bmN0aW9uKGds
b2JhbEV4ZWMoKSwgSlNGdW5jdGlvbjo6Y3JlYXRlKGdsb2JhbEV4ZWMoKSwgdGhpcywgZnVuY3Rp
b25TdHJ1Y3R1cmUoKSwgMCwgSWRlbnRpZmllcihnbG9iYWxFeGVjKCksICJwcmVjaXNlVGltZSIp
LCBmdW5jdGlvblByZWNpc2VUaW1lKSk7CiAKICNpZiBFTkFCTEUoU0FNUExJTkdfRkxBR1MpCi0g
ICAgcHV0RGlyZWN0RnVuY3Rpb24oZ2xvYmFsRXhlYygpLCBKU0Z1bmN0aW9uOjpjcmVhdGUoZ2xv
YmFsRXhlYygpLCB0aGlzLCBmdW5jdGlvblN0cnVjdHVyZSgpLCAxLCBJZGVudGlmaWVyKGdsb2Jh
bEV4ZWMoKSwgInNldFNhbXBsaW5nRmxhZ3MiKSwgZnVuY3Rpb25TZXRTYW1wbGluZ0ZsYWdzKSk7
Ci0gICAgcHV0RGlyZWN0RnVuY3Rpb24oZ2xvYmFsRXhlYygpLCBKU0Z1bmN0aW9uOjpjcmVhdGUo
Z2xvYmFsRXhlYygpLCB0aGlzLCBmdW5jdGlvblN0cnVjdHVyZSgpLCAxLCBJZGVudGlmaWVyKGds
b2JhbEV4ZWMoKSwgImNsZWFyU2FtcGxpbmdGbGFncyIpLCBmdW5jdGlvbkNsZWFyU2FtcGxpbmdG
bGFncykpOworICAgICAgICBwdXREaXJlY3RGdW5jdGlvbihnbG9iYWxFeGVjKCksIEpTRnVuY3Rp
b246OmNyZWF0ZShnbG9iYWxFeGVjKCksIHRoaXMsIGZ1bmN0aW9uU3RydWN0dXJlKCksIDEsIElk
ZW50aWZpZXIoZ2xvYmFsRXhlYygpLCAic2V0U2FtcGxpbmdGbGFncyIpLCBmdW5jdGlvblNldFNh
bXBsaW5nRmxhZ3MpKTsKKyAgICAgICAgcHV0RGlyZWN0RnVuY3Rpb24oZ2xvYmFsRXhlYygpLCBK
U0Z1bmN0aW9uOjpjcmVhdGUoZ2xvYmFsRXhlYygpLCB0aGlzLCBmdW5jdGlvblN0cnVjdHVyZSgp
LCAxLCBJZGVudGlmaWVyKGdsb2JhbEV4ZWMoKSwgImNsZWFyU2FtcGxpbmdGbGFncyIpLCBmdW5j
dGlvbkNsZWFyU2FtcGxpbmdGbGFncykpOwogI2VuZGlmCiAKLSAgICBKU09iamVjdCogYXJyYXkg
PSBjb25zdHJ1Y3RFbXB0eUFycmF5KGdsb2JhbEV4ZWMoKSk7Ci0gICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBhcmd1bWVudHMuc2l6ZSgpOyArK2kpCi0gICAgICAgIGFycmF5LT5wdXQoZ2xvYmFs
RXhlYygpLCBpLCBqc1N0cmluZyhnbG9iYWxFeGVjKCksIGFyZ3VtZW50c1tpXSkpOwotICAgIHB1
dERpcmVjdChnbG9iYWxFeGVjKCktPmdsb2JhbERhdGEoKSwgSWRlbnRpZmllcihnbG9iYWxFeGVj
KCksICJhcmd1bWVudHMiKSwgYXJyYXkpOworICAgICAgICBKU09iamVjdCogYXJyYXkgPSBjb25z
dHJ1Y3RFbXB0eUFycmF5KGdsb2JhbEV4ZWMoKSk7CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgYXJndW1lbnRzLnNpemUoKTsgKytpKQorICAgICAgICAgICAgYXJyYXktPnB1dChnbG9i
YWxFeGVjKCksIGksIGpzU3RyaW5nKGdsb2JhbEV4ZWMoKSwgYXJndW1lbnRzW2ldKSk7CisgICAg
ICAgIHB1dERpcmVjdChnbG9iYWxFeGVjKCktPmdsb2JhbERhdGEoKSwgSWRlbnRpZmllcihnbG9i
YWxFeGVjKCksICJhcmd1bWVudHMiKSwgYXJyYXkpOworICAgIH0KK307CitDT01QSUxFX0FTU0VS
VCghSXNJbnRlZ2VyPEdsb2JhbE9iamVjdD46OnZhbHVlLCBXVEZfSXNJbnRlZ2VyX0dsb2JhbE9i
amVjdF9mYWxzZSk7CitBU1NFUlRfQ0xBU1NfRklUU19JTl9DRUxMKEdsb2JhbE9iamVjdCk7CisK
K0dsb2JhbE9iamVjdDo6R2xvYmFsT2JqZWN0KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IFZlY3RvcjxVU3RyaW5nPiYgYXJndW1lbnRzKQorICAg
IDogSlNHbG9iYWxPYmplY3QoZ2xvYmFsRGF0YSwgc3RydWN0dXJlKQoreworICAgIGNvbnN0cnVj
dG9yQm9keShhcmd1bWVudHMpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1
bmN0aW9uUHJpbnQoRXhlY1N0YXRlKiBleGVjKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvRXJyb3JJbnN0YW5jZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9FcnJvckluc3RhbmNlLmNwcAppbmRleCAwNDM1MzcyZjEyNjM5YmFiZDY0MTBkY2Zl
MDM0ODFmYTkyMjJkOWFhLi40YjA0MzA5MWM0ZmEyYjlhMGQ1MjM2MThjYWYzZTZlMzM0ZTYzNWIw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvckluc3RhbmNl
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvckluc3RhbmNlLmNw
cApAQCAtMjksOCArMjksNyBAQCBFcnJvckluc3RhbmNlOjpFcnJvckluc3RhbmNlKEpTR2xvYmFs
RGF0YSYgZ2xvYmFsRGF0YSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgOiBKU05vbkZpbmFs
T2JqZWN0KGdsb2JhbERhdGEsIHN0cnVjdHVyZSkKICAgICAsIG1fYXBwZW5kU291cmNlVG9NZXNz
YWdlKGZhbHNlKQogewotICAgIEFTU0VSVChpbmhlcml0cygmc19pbmZvKSk7Ci0gICAgcHV0RGly
ZWN0KGdsb2JhbERhdGEsIGdsb2JhbERhdGEucHJvcGVydHlOYW1lcy0+bWVzc2FnZSwganNTdHJp
bmcoJmdsb2JhbERhdGEsICIiKSwgRG9udEVudW0pOworICAgIGNvbnN0cnVjdG9yQm9keShnbG9i
YWxEYXRhKTsKIH0KIAogRXJyb3JJbnN0YW5jZTo6RXJyb3JJbnN0YW5jZShKU0dsb2JhbERhdGEm
IGdsb2JhbERhdGEsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBVU3RyaW5nJiBtZXNzYWdl
KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JJbnN0YW5j
ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JJbnN0YW5jZS5oCmluZGV4
IGQ2MWVlOTc1ZWMxMGRmZDc4NDc3NWU3M2I1YTE4MjExZjhjMDk0NzguLjNkN2ZiZjNmMGVlYzNh
MGYzY2RkYTQ0ODlkN2NhNGZlMTE0NzY3ZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0Vycm9ySW5zdGFuY2UuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9FcnJvckluc3RhbmNlLmgKQEAgLTUwLDYgKzUwLDEyIEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICBleHBsaWNpdCBFcnJvckluc3RhbmNlKEpTR2xvYmFsRGF0YSYsIFN0cnVjdHVy
ZSopOwogICAgICAgICBleHBsaWNpdCBFcnJvckluc3RhbmNlKEpTR2xvYmFsRGF0YSYsIFN0cnVj
dHVyZSosIGNvbnN0IFVTdHJpbmcmKTsKIAorICAgICAgICB2b2lkIGNvbnN0cnVjdG9yQm9keShK
U0dsb2JhbERhdGEmIGdsb2JhbERhdGEpCisgICAgICAgIHsKKyAgICAgICAgICAgIEFTU0VSVChp
bmhlcml0cygmc19pbmZvKSk7CisgICAgICAgICAgICBwdXREaXJlY3QoZ2xvYmFsRGF0YSwgZ2xv
YmFsRGF0YS5wcm9wZXJ0eU5hbWVzLT5tZXNzYWdlLCBqc1N0cmluZygmZ2xvYmFsRGF0YSwgIiIp
LCBEb250RW51bSk7CisgICAgICAgIH0KKwogICAgICAgICBib29sIG1fYXBwZW5kU291cmNlVG9N
ZXNzYWdlOwogICAgIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0Vycm9yUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vy
cm9yUHJvdG90eXBlLmNwcAppbmRleCAzYTY5ZGQ5MGUyMmY0OWNlOGFlMDYzYjFmZmU5NGI2NjE5
MmY0MTRlLi4zODYwNjhiYzNlNzhmN2JiZGRiMjRjMzQ3YzlkMWZmZDdjZWRhODExIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvclByb3RvdHlwZS5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JQcm90b3R5cGUuY3BwCkBAIC01
Myw5ICs1MywxMyBAQCBBU1NFUlRfQ0xBU1NfRklUU19JTl9DRUxMKEVycm9yUHJvdG90eXBlKTsK
IEVycm9yUHJvdG90eXBlOjpFcnJvclByb3RvdHlwZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlKQogICAgIDogRXJyb3JJ
bnN0YW5jZShleGVjLT5nbG9iYWxEYXRhKCksIHN0cnVjdHVyZSkKIHsKLSAgICBwdXREaXJlY3Qo
ZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkubmFtZSwganNOb250cml2
aWFsU3RyaW5nKGV4ZWMsICJFcnJvciIpLCBEb250RW51bSk7CisgICAgY29uc3RydWN0b3JCb2R5
KGV4ZWMsIGdsb2JhbE9iamVjdCk7Cit9CiAKK3ZvaWQgRXJyb3JQcm90b3R5cGU6OmNvbnN0cnVj
dG9yQm9keShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCit7
CiAgICAgQVNTRVJUKGluaGVyaXRzKCZzX2luZm8pKTsKKyAgICBwdXREaXJlY3QoZXhlYy0+Z2xv
YmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkubmFtZSwganNOb250cml2aWFsU3RyaW5n
KGV4ZWMsICJFcnJvciIpLCBEb250RW51bSk7CiAgICAgcHV0QW5vbnltb3VzVmFsdWUoZ2xvYmFs
T2JqZWN0LT5nbG9iYWxEYXRhKCksIDAsIGdsb2JhbE9iamVjdCk7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yUHJvdG90eXBlLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvclByb3RvdHlwZS5oCmluZGV4IDQwNTI4MzYxYWJi
MjEyYTNiNDY2NWJhNDQxZjJhMjA1MWE4ZTBhMmUuLjk4MzU3MmI2MjIzYTdiZDM4ZmMzZTVhYTE4
NTY5YmMwODQ0MGVkNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0Vycm9yUHJvdG90eXBlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJy
b3JQcm90b3R5cGUuaApAQCAtNDUsNiArNDUsOCBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIHBy
b3RlY3RlZDoKICAgICAgICAgRXJyb3JQcm90b3R5cGUoRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmpl
Y3QqLCBTdHJ1Y3R1cmUqKTsKKyAgICAgICAgdm9pZCBjb25zdHJ1Y3RvckJvZHkoRXhlY1N0YXRl
KiwgSlNHbG9iYWxPYmplY3QqKTsKKwogICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3Ry
dWN0dXJlRmxhZ3MgPSBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBFcnJvckluc3RhbmNl
OjpTdHJ1Y3R1cmVGbGFnczsKICAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIEFub255bW91
c1Nsb3RDb3VudCA9IEVycm9ySW5zdGFuY2U6OkFub255bW91c1Nsb3RDb3VudCArIDE7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5jcHAKaW5kZXggNjc3YTg5
YmYzNzU0MzhiZTk0MDAwNGM1MmZlZTA3ZDNhOGI4MGRlNi4uNDhiZjE2M2RiYzllN2M0ODNjZTU1
OGFmMDllZTZmMzg2NjE1NzcxZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRXhlY3V0YWJsZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
RXhlY3V0YWJsZS5jcHAKQEAgLTE0Miw5ICsxNDIsNyBAQCBGdW5jdGlvbkV4ZWN1dGFibGU6OkZ1
bmN0aW9uRXhlY3V0YWJsZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIGNvbnN0IElkZW50aWZp
ZQogICAgICwgbV9uYW1lKG5hbWUpCiAgICAgLCBtX3N5bWJvbFRhYmxlKDApCiB7Ci0gICAgbV9m
aXJzdExpbmUgPSBmaXJzdExpbmU7Ci0gICAgbV9sYXN0TGluZSA9IGxhc3RMaW5lOwotICAgIG1f
bmFtZVZhbHVlLnNldChnbG9iYWxEYXRhLCB0aGlzLCBqc1N0cmluZygmZ2xvYmFsRGF0YSwgbmFt
ZS51c3RyaW5nKCkpKTsKKyAgICBjb25zdHJ1Y3RvckJvZHkoZ2xvYmFsRGF0YSwgbmFtZSwgZmly
c3RMaW5lLCBsYXN0TGluZSk7CiB9CiAKIEZ1bmN0aW9uRXhlY3V0YWJsZTo6RnVuY3Rpb25FeGVj
dXRhYmxlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgbmFtZSwgY29uc3QgU291
cmNlQ29kZSYgc291cmNlLCBib29sIGZvcmNlVXNlc0FyZ3VtZW50cywgRnVuY3Rpb25QYXJhbWV0
ZXJzKiBwYXJhbWV0ZXJzLCBib29sIGluU3RyaWN0Q29udGV4dCwgaW50IGZpcnN0TGluZSwgaW50
IGxhc3RMaW5lKQpAQCAtMTU3LDcgKzE1NSw3IEBAIEZ1bmN0aW9uRXhlY3V0YWJsZTo6RnVuY3Rp
b25FeGVjdXRhYmxlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgbmFtZSwKIHsK
ICAgICBtX2ZpcnN0TGluZSA9IGZpcnN0TGluZTsKICAgICBtX2xhc3RMaW5lID0gbGFzdExpbmU7
Ci0gICAgbV9uYW1lVmFsdWUuc2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhpcywganNTdHJpbmco
JmV4ZWMtPmdsb2JhbERhdGEoKSwgbmFtZS51c3RyaW5nKCkpKTsKKyAgICBjb25zdHJ1Y3RvckJv
ZHkoZXhlYy0+Z2xvYmFsRGF0YSgpLCBuYW1lLCBmaXJzdExpbmUsIGxhc3RMaW5lKTsKIH0KIAog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmgKaW5kZXggYmFiMzJi
Mjk4NzVjZGI0YTk1NjEzN2IwNzM3ZDIyOWE4NzFhYTZkOS4uY2UyOThmZWM5NWEzNzA3NzUxNjA3
MjljMzY3M2ZkYzRmNWNjZTViNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRXhlY3V0YWJsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4
ZWN1dGFibGUuaApAQCAtNTA0LDYgKzUwNCwxNCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAg
CiAgICAgICAgIHN0YXRpYyBjb25zdCBDbGFzc0luZm8gc19pbmZvOwogCisgICAgcHJvdGVjdGVk
OgorICAgICAgICB2b2lkIGNvbnN0cnVjdG9yQm9keShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEs
IGNvbnN0IElkZW50aWZpZXImIG5hbWUsIGludCBmaXJzdExpbmUsIGludCBsYXN0TGluZSkKKyAg
ICAgICAgeworICAgICAgICAgICAgbV9maXJzdExpbmUgPSBmaXJzdExpbmU7CisgICAgICAgICAg
ICBtX2xhc3RMaW5lID0gbGFzdExpbmU7CisgICAgICAgICAgICBtX25hbWVWYWx1ZS5zZXQoZ2xv
YmFsRGF0YSwgdGhpcywganNTdHJpbmcoJmdsb2JhbERhdGEsIG5hbWUudXN0cmluZygpKSk7Cisg
ICAgICAgIH0KKwogICAgIHByaXZhdGU6CiAgICAgICAgIEZ1bmN0aW9uRXhlY3V0YWJsZShKU0ds
b2JhbERhdGEmLCBjb25zdCBJZGVudGlmaWVyJiBuYW1lLCBjb25zdCBTb3VyY2VDb2RlJiwgYm9v
bCBmb3JjZVVzZXNBcmd1bWVudHMsIEZ1bmN0aW9uUGFyYW1ldGVycyosIGJvb2wsIGludCBmaXJz
dExpbmUsIGludCBsYXN0TGluZSk7CiAgICAgICAgIEZ1bmN0aW9uRXhlY3V0YWJsZShFeGVjU3Rh
dGUqLCBjb25zdCBJZGVudGlmaWVyJiBuYW1lLCBjb25zdCBTb3VyY2VDb2RlJiwgYm9vbCBmb3Jj
ZVVzZXNBcmd1bWVudHMsIEZ1bmN0aW9uUGFyYW1ldGVycyosIGJvb2wsIGludCBmaXJzdExpbmUs
IGludCBsYXN0TGluZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9JbnRlcm5hbEZ1bmN0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lu
dGVybmFsRnVuY3Rpb24uY3BwCmluZGV4IGMzYjA3ZjgyOTcwMjhlOTZmMmZmNTAzZDk1MTc4ZjFj
Y2Y5OGY2YWUuLmJjYTE3NDcxMzJkNGM5NzMxN2Q1N2NkODBlNDkxZDQ4NjI4YWNlOTAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGVybmFsRnVuY3Rpb24uY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGVybmFsRnVuY3Rpb24uY3Bw
CkBAIC00NCw4ICs0NCw3IEBAIEludGVybmFsRnVuY3Rpb246OkludGVybmFsRnVuY3Rpb24oVlB0
clN0ZWFsaW5nSGFja1R5cGUpCiBJbnRlcm5hbEZ1bmN0aW9uOjpJbnRlcm5hbEZ1bmN0aW9uKEpT
R2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IElkZW50aWZpZXImIG5hbWUpCiAgICAgOiBKU09iamVj
dFdpdGhHbG9iYWxPYmplY3QoZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpCiB7Ci0gICAgQVNTRVJU
KGluaGVyaXRzKCZzX2luZm8pKTsKLSAgICBwdXREaXJlY3QoKmdsb2JhbERhdGEsIGdsb2JhbERh
dGEtPnByb3BlcnR5TmFtZXMtPm5hbWUsIGpzU3RyaW5nKGdsb2JhbERhdGEsIG5hbWUuaXNOdWxs
KCkgPyAiIiA6IG5hbWUudXN0cmluZygpKSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5IHwgRG9udEVu
dW0pOworICAgIGNvbnN0cnVjdG9yQm9keSgqZ2xvYmFsRGF0YSwgbmFtZSk7CiB9CiAKIGNvbnN0
IFVTdHJpbmcmIEludGVybmFsRnVuY3Rpb246Om5hbWUoRXhlY1N0YXRlKiBleGVjKQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50ZXJuYWxGdW5jdGlvbi5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50ZXJuYWxGdW5jdGlvbi5oCmluZGV4IDgz
MjQzYjNmZGZmNmQ0Y2Y4YmYzNGZjMTc0NWRmNTY1YjlmNGY3ZGYuLjE0MzZmMzJkNmU3YTdkZTI4
ZjU0ZjkxMDkwM2JkMWY3ODEwNzBlNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0ludGVybmFsRnVuY3Rpb24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9JbnRlcm5hbEZ1bmN0aW9uLmgKQEAgLTU0LDYgKzU0LDEyIEBAIG5hbWVzcGFjZSBK
U0MgewogCiAgICAgICAgIEludGVybmFsRnVuY3Rpb24oSlNHbG9iYWxEYXRhKiwgSlNHbG9iYWxP
YmplY3QqLCBTdHJ1Y3R1cmUqLCBjb25zdCBJZGVudGlmaWVyJik7CiAKKyAgICAgICAgdm9pZCBj
b25zdHJ1Y3RvckJvZHkoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBjb25zdCBJZGVudGlmaWVy
JiBuYW1lKQorICAgICAgICB7CisgICAgICAgICAgICBBU1NFUlQoaW5oZXJpdHMoJnNfaW5mbykp
OworICAgICAgICAgICAgcHV0RGlyZWN0KGdsb2JhbERhdGEsIGdsb2JhbERhdGEucHJvcGVydHlO
YW1lcy0+bmFtZSwganNTdHJpbmcoJmdsb2JhbERhdGEsIG5hbWUuaXNOdWxsKCkgPyAiIiA6IG5h
bWUudXN0cmluZygpKSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5IHwgRG9udEVudW0pOworICAgICAg
ICB9CisKICAgICBwcml2YXRlOgogICAgICAgICB2aXJ0dWFsIENhbGxUeXBlIGdldENhbGxEYXRh
KENhbGxEYXRhJikgPSAwOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0J5dGVBcnJheS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0J5
dGVBcnJheS5jcHAKaW5kZXggZDkyNGE3YTFiMzg4Y2I1YzUxMmI5OGQzMzFkNWM1MDQ2N2ZhOWU0
NC4uMjliNDU2NDMyYWViMjk1YjExZjkxYTExN2MxYTE1MWMwMjZlZmFkMCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCeXRlQXJyYXkuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQnl0ZUFycmF5LmNwcApAQCAtMzksNyArMzksNyBA
QCBKU0J5dGVBcnJheTo6SlNCeXRlQXJyYXkoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSwgQnl0ZUFycmF5KiBzdG9yYQogICAgIDogSlNOb25GaW5hbE9iamVjdChleGVjLT5n
bG9iYWxEYXRhKCksIHN0cnVjdHVyZSkKICAgICAsIG1fc3RvcmFnZShzdG9yYWdlKQogewotICAg
IHB1dERpcmVjdChleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPmdsb2JhbERhdGEoKS5wcm9wZXJ0
eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVyKG1fc3RvcmFnZS0+bGVuZ3RoKCkpLCBSZWFkT25seSB8
IERvbnREZWxldGUpOworICAgIGNvbnN0cnVjdG9yQm9keShleGVjKTsKIH0KICAgICAgICAgCiBK
U0J5dGVBcnJheSogSlNCeXRlQXJyYXk6OmNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVy
ZSogc3RydWN0dXJlLCBCeXRlQXJyYXkqIHN0b3JhZ2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0J5dGVBcnJheS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNCeXRlQXJyYXkuaAppbmRleCA4NjkxNTY5YjUyZjYxZWY1NzI4MDI3ODZhZTI3
OTgxMzg0MDUwM2E0Li5kMmQyYTY2NDM1NDA2ZWI5Y2U5ZDQyMjkyMjE0NjgyYmE5ZjYzMzJjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0J5dGVBcnJheS5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQnl0ZUFycmF5LmgKQEAgLTEwNCw2
ICsxMDQsMTEgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgcHJvdGVjdGVkOgogICAgICAgICBzdGF0
aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0
eVNsb3QgfCBPdmVycmlkZXNHZXRQcm9wZXJ0eU5hbWVzIHwgSlNPYmplY3Q6OlN0cnVjdHVyZUZs
YWdzOwogCisgICAgICAgIHZvaWQgY29uc3RydWN0b3JCb2R5KEV4ZWNTdGF0ZSogZXhlYykKKyAg
ICAgICAgeworICAgICAgICAgICAgcHV0RGlyZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+
Z2xvYmFsRGF0YSgpLnByb3BlcnR5TmFtZXMtPmxlbmd0aCwganNOdW1iZXIobV9zdG9yYWdlLT5s
ZW5ndGgoKSksIFJlYWRPbmx5IHwgRG9udERlbGV0ZSk7CisgICAgICAgIH0KKwogICAgIHByaXZh
dGU6CiAgICAgICAgIEpTQnl0ZUFycmF5KFZQdHJTdGVhbGluZ0hhY2tUeXBlKQogICAgICAgICAg
ICAgOiBKU05vbkZpbmFsT2JqZWN0KFZQdHJTdGVhbGluZ0hhY2spCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwCmluZGV4IDEzZjFlYWI1MjFkZWQ1YWRhYzFj
NzI5MDgwNjczNGI2NDAyYjBhNGYuLjQ5OWFlYjZkMjc0OGMyOTQwODkwYmMyYmJjN2RkOGRhODY0
ZWJlZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rp
b24uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3Bw
CkBAIC02MywyNSArNjMsMTkgQEAgSlNGdW5jdGlvbjo6SlNGdW5jdGlvbihWUHRyU3RlYWxpbmdI
YWNrVHlwZSkKIAogSlNGdW5jdGlvbjo6SlNGdW5jdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBpbnQgbGVuZ3Ro
LCBjb25zdCBJZGVudGlmaWVyJiBuYW1lLCBOYXRpdmVFeGVjdXRhYmxlKiB0aHVuaykKICAgICA6
IEJhc2UoZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpCi0gICAgLCBtX2V4ZWN1dGFibGUoZXhlYy0+
Z2xvYmFsRGF0YSgpLCB0aGlzLCB0aHVuaykKKyAgICAsIG1fZXhlY3V0YWJsZSgpCiAgICAgLCBt
X3Njb3BlQ2hhaW4oZXhlYy0+Z2xvYmFsRGF0YSgpLCB0aGlzLCBnbG9iYWxPYmplY3QtPmdsb2Jh
bFNjb3BlQ2hhaW4oKSkKIHsKLSAgICBBU1NFUlQoaW5oZXJpdHMoJnNfaW5mbykpOwotICAgIHB1
dERpcmVjdChleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPmdsb2JhbERhdGEoKS5wcm9wZXJ0eU5h
bWVzLT5uYW1lLCBqc1N0cmluZyhleGVjLCBuYW1lLmlzTnVsbCgpID8gIiIgOiBuYW1lLnVzdHJp
bmcoKSksIERvbnREZWxldGUgfCBSZWFkT25seSB8IERvbnRFbnVtKTsKLSAgICBwdXREaXJlY3Qo
ZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3RoLCBqc051bWJl
cihsZW5ndGgpLCBEb250RGVsZXRlIHwgUmVhZE9ubHkgfCBEb250RW51bSk7CisgICAgY29uc3Ry
dWN0b3JCb2R5KGV4ZWMsIGxlbmd0aCwgbmFtZSwgdGh1bmspOwogfQogCiBKU0Z1bmN0aW9uOjpK
U0Z1bmN0aW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGludCBsZW5ndGgsIGNvbnN0IElkZW50aWZpZXImIG5hbWUs
IE5hdGl2ZUZ1bmN0aW9uIGZ1bmMpCiAgICAgOiBCYXNlKGdsb2JhbE9iamVjdCwgc3RydWN0dXJl
KQorICAgICwgbV9leGVjdXRhYmxlKCkKICAgICAsIG1fc2NvcGVDaGFpbihleGVjLT5nbG9iYWxE
YXRhKCksIHRoaXMsIGdsb2JhbE9iamVjdC0+Z2xvYmFsU2NvcGVDaGFpbigpKQogewotICAgIEFT
U0VSVChpbmhlcml0cygmc19pbmZvKSk7Ci0gICAgCiAgICAgLy8gQ2FuJ3QgZG8gdGhpcyBkdXJp
bmcgaW5pdGlhbGl6YXRpb24gYmVjYXVzZSBnZXRIb3N0RnVuY3Rpb24gbWlnaHQgZG8gYSBHQyBh
bGxvY2F0aW9uLgotICAgIG1fZXhlY3V0YWJsZS5zZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCB0aGlz
LCBleGVjLT5nbG9iYWxEYXRhKCkuZ2V0SG9zdEZ1bmN0aW9uKGZ1bmMpKTsKLSAgICAKLSAgICBw
dXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5nbG9iYWxEYXRhKCkucHJvcGVydHlO
YW1lcy0+bmFtZSwganNTdHJpbmcoZXhlYywgbmFtZS5pc051bGwoKSA/ICIiIDogbmFtZS51c3Ry
aW5nKCkpLCBEb250RGVsZXRlIHwgUmVhZE9ubHkgfCBEb250RW51bSk7Ci0gICAgcHV0RGlyZWN0
KGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLmxlbmd0aCwganNOdW1i
ZXIobGVuZ3RoKSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5IHwgRG9udEVudW0pOworICAgIGNvbnN0
cnVjdG9yQm9keShleGVjLCBsZW5ndGgsIG5hbWUsICBleGVjLT5nbG9iYWxEYXRhKCkuZ2V0SG9z
dEZ1bmN0aW9uKGZ1bmMpKTsKIH0KIAogSlNGdW5jdGlvbjo6SlNGdW5jdGlvbihFeGVjU3RhdGUq
IGV4ZWMsIEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSwgU2NvcGVDaGFpbk5vZGUqIHNj
b3BlQ2hhaW5Ob2RlKQpAQCAtOTQsNiArODgsMTQgQEAgSlNGdW5jdGlvbjo6SlNGdW5jdGlvbihF
eGVjU3RhdGUqIGV4ZWMsIEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSwgU2NvcGVDaGEK
ICAgICBwdXREaXJlY3RPZmZzZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCBzY29wZUNoYWluTm9kZS0+
Z2xvYmFsT2JqZWN0LT5mdW5jdGlvbk5hbWVPZmZzZXQoKSwgZXhlY3V0YWJsZS0+bmFtZVZhbHVl
KCkpOwogfQogCitpbmxpbmUgdm9pZCBKU0Z1bmN0aW9uOjpjb25zdHJ1Y3RvckJvZHkoRXhlY1N0
YXRlKiBleGVjLCBpbnQgbGVuZ3RoLCBjb25zdCBJZGVudGlmaWVyJiBuYW1lLCBFeGVjdXRhYmxl
QmFzZSogZXhlY3V0YWJsZSkKK3sKKyAgICBBU1NFUlQoaW5oZXJpdHMoJnNfaW5mbykpOworICAg
IG1fZXhlY3V0YWJsZS5zZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCB0aGlzLCBleGVjdXRhYmxlKTsK
KyAgICBwdXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5nbG9iYWxEYXRhKCkucHJv
cGVydHlOYW1lcy0+bmFtZSwganNTdHJpbmcoZXhlYywgbmFtZS5pc051bGwoKSA/ICIiIDogbmFt
ZS51c3RyaW5nKCkpLCBEb250RGVsZXRlIHwgUmVhZE9ubHkgfCBEb250RW51bSk7CisgICAgcHV0
RGlyZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLmxlbmd0aCwg
anNOdW1iZXIobGVuZ3RoKSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5IHwgRG9udEVudW0pOworfQor
CiBKU0Z1bmN0aW9uOjp+SlNGdW5jdGlvbigpCiB7CiAgICAgQVNTRVJUKHZwdHIoKSA9PSBKU0ds
b2JhbERhdGE6OmpzRnVuY3Rpb25WUHRyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTRnVuY3Rpb24uaAppbmRleCAyOWNiZmQwZjRmNmFlMjI3NDg2ZGIwMjU2NmM0OTI1NGQ3NDIy
ZGI0Li44YjczYjBiZTJmMmEyOTk3ZDkwOTA2MDEyOTczMGQwZGY1MGEwZGQ3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oCkBAIC0xMjMsNiArMTIzLDggQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgcHJvdGVjdGVkOgogICAgICAgICBjb25zdCBzdGF0aWMgdW5z
aWduZWQgU3RydWN0dXJlRmxhZ3MgPSBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBJbXBs
ZW1lbnRzSGFzSW5zdGFuY2UgfCBPdmVycmlkZXNWaXNpdENoaWxkcmVuIHwgT3ZlcnJpZGVzR2V0
UHJvcGVydHlOYW1lcyB8IEpTT2JqZWN0OjpTdHJ1Y3R1cmVGbGFnczsKIAorICAgICAgICB2b2lk
IGNvbnN0cnVjdG9yQm9keShFeGVjU3RhdGUqLCBpbnQgbGVuZ3RoLCBjb25zdCBJZGVudGlmaWVy
JiBuYW1lLCBFeGVjdXRhYmxlQmFzZSopOworCiAgICAgcHJpdmF0ZToKICAgICAgICAgZXhwbGlj
aXQgSlNGdW5jdGlvbihWUHRyU3RlYWxpbmdIYWNrVHlwZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCmluZGV4IDU5Y2FkNTBhYzM0YWU5ZGM3
MGM0NmYwMDE4MjA0MzgwMGQ4ZGU3ZTQuLjI0YWE1YzQxZjllNzQ2MjI3M2M0MDYzZWQyNmIzNDRk
YWRlN2U4OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xv
YmFsT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxP
YmplY3QuaApAQCAtMTU5LDkgKzE1OSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAg
LCBtX3dlYWtSYW5kb20oc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHJhbmRvbU51bWJlcigpICogKHN0
ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSArIDEuMCkpKQogICAgICAgICAgICAg
LCBtX2V2YWxFbmFibGVkKHRydWUpCiAgICAgICAgIHsKLSAgICAgICAgICAgIENPTVBJTEVfQVNT
RVJUKEpTR2xvYmFsT2JqZWN0OjpBbm9ueW1vdXNTbG90Q291bnQgPT0gMSwgSlNHbG9iYWxPYmpl
Y3RfaGFzX29ubHlfYV9zaW5nbGVfc2xvdCk7Ci0gICAgICAgICAgICBwdXRUaGlzVG9Bbm9ueW1v
dXNWYWx1ZSgwKTsKLSAgICAgICAgICAgIGluaXQodGhpcyk7CisgICAgICAgICAgICBjb25zdHJ1
Y3RvckJvZHkodGhpcyk7CiAgICAgICAgIH0KIAogICAgICAgICBKU0dsb2JhbE9iamVjdChKU0ds
b2JhbERhdGEmIGdsb2JhbERhdGEsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU09iamVjdCogdGhp
c1ZhbHVlKQpAQCAtMTcxLDYgKzE2OSwxMSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAg
ICwgbV93ZWFrUmFuZG9tKHN0YXRpY19jYXN0PHVuc2lnbmVkPihyYW5kb21OdW1iZXIoKSAqIChz
dGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkgKyAxLjApKSkKICAgICAgICAgICAg
ICwgbV9ldmFsRW5hYmxlZCh0cnVlKQogICAgICAgICB7CisgICAgICAgICAgICBjb25zdHJ1Y3Rv
ckJvZHkodGhpc1ZhbHVlKTsKKyAgICAgICAgfQorCisgICAgICAgIHZvaWQgY29uc3RydWN0b3JC
b2R5KEpTT2JqZWN0KiB0aGlzVmFsdWUpCisgICAgICAgIHsKICAgICAgICAgICAgIENPTVBJTEVf
QVNTRVJUKEpTR2xvYmFsT2JqZWN0OjpBbm9ueW1vdXNTbG90Q291bnQgPT0gMSwgSlNHbG9iYWxP
YmplY3RfaGFzX29ubHlfYV9zaW5nbGVfc2xvdCk7CiAgICAgICAgICAgICBwdXRUaGlzVG9Bbm9u
eW1vdXNWYWx1ZSgwKTsKICAgICAgICAgICAgIGluaXQodGhpc1ZhbHVlKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5j
cHAKaW5kZXggODAxMmU5ZGQxMTU2YTc2ODhhZDIwZGMxMTU5OWYyYTJkNTJkOGY4Mi4uYzRjZjg4
OGFkNmJhMWQ5M2FkNzk4MGRjZTE3NmM4Njc4NDhkZTBlNCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5jcHAKQEAg
LTQzLDkgKzQzLDcgQEAgaW5saW5lIEpTUHJvcGVydHlOYW1lSXRlcmF0b3I6OkpTUHJvcGVydHlO
YW1lSXRlcmF0b3IoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU4KICAgICAsIG1fanNTdHJpbmdz
U2l6ZShwcm9wZXJ0eU5hbWVBcnJheURhdGEtPnByb3BlcnR5TmFtZVZlY3RvcigpLnNpemUoKSkK
ICAgICAsIG1fanNTdHJpbmdzKGFkb3B0QXJyYXlQdHIobmV3IFdyaXRlQmFycmllcjxVbmtub3du
PlttX2pzU3RyaW5nc1NpemVdKSkKIHsKLSAgICBQcm9wZXJ0eU5hbWVBcnJheURhdGE6OlByb3Bl
cnR5TmFtZVZlY3RvciYgcHJvcGVydHlOYW1lVmVjdG9yID0gcHJvcGVydHlOYW1lQXJyYXlEYXRh
LT5wcm9wZXJ0eU5hbWVWZWN0b3IoKTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fanNT
dHJpbmdzU2l6ZTsgKytpKQotICAgICAgICBtX2pzU3RyaW5nc1tpXS5zZXQoZXhlYy0+Z2xvYmFs
RGF0YSgpLCB0aGlzLCBqc093bmVkU3RyaW5nKGV4ZWMsIHByb3BlcnR5TmFtZVZlY3RvcltpXS51
c3RyaW5nKCkpKTsKKyAgICBjb25zdHJ1Y3RvckJvZHkoZXhlYywgcHJvcGVydHlOYW1lQXJyYXlE
YXRhKTsKIH0KIAogSlNQcm9wZXJ0eU5hbWVJdGVyYXRvciogSlNQcm9wZXJ0eU5hbWVJdGVyYXRv
cjo6Y3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIG8pCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgKaW5kZXgg
ZDJiNjExZGY2YjMyMGIwOWNhNTNlYThiNzg5MDFiNTZlMGJmZWZiNy4uMTgzMTBmYThjN2U4YjEy
N2EzYmE4YTdlYzU1MTA0MjBkMjY2MDcyNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuaApAQCAtODQsNiArODQsMTQg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIAogICAgICAgICBzdGF0aWMgY29uc3QgQ2xhc3NJ
bmZvIHNfaW5mbzsKIAorICAgIHByb3RlY3RlZDoKKyAgICAgICAgdm9pZCBjb25zdHJ1Y3RvckJv
ZHkoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWVBcnJheURhdGEqIHByb3BlcnR5TmFtZUFy
cmF5RGF0YSkKKyAgICAgICAgeworICAgICAgICAgICAgUHJvcGVydHlOYW1lQXJyYXlEYXRhOjpQ
cm9wZXJ0eU5hbWVWZWN0b3ImIHByb3BlcnR5TmFtZVZlY3RvciA9IHByb3BlcnR5TmFtZUFycmF5
RGF0YS0+cHJvcGVydHlOYW1lVmVjdG9yKCk7CisgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IG1fanNTdHJpbmdzU2l6ZTsgKytpKQorICAgICAgICAgICAgICAgIG1fanNTdHJpbmdz
W2ldLnNldChleGVjLT5nbG9iYWxEYXRhKCksIHRoaXMsIGpzT3duZWRTdHJpbmcoZXhlYywgcHJv
cGVydHlOYW1lVmVjdG9yW2ldLnVzdHJpbmcoKSkpOworICAgICAgICB9CisKICAgICBwcml2YXRl
OgogICAgICAgICBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yKEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFt
ZUFycmF5RGF0YSogcHJvcGVydHlOYW1lQXJyYXlEYXRhLCBzaXplX3QgbnVtQ2FjaGVhYmxlU2xv
dCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5n
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5oCmluZGV4IDMxNzEx
NzU3NjFmM2U4Yjc2NTc4ZmRjYTRkMGY0ZDUzM2MwMzJlZjIuLjkwOTk0ZmJlMzg5OGZlODg2ZjIx
ZWI0MzFjYTFlNWQzZGY4ZjU4NDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTU3RyaW5nLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNT
dHJpbmcuaApAQCAtMjY3LDExICsyNjcsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAg
ICwgbV9sZW5ndGgoMCkKICAgICAgICAgICAgICwgbV9maWJlckNvdW50KHNfbWF4SW50ZXJuYWxS
b3BlTGVuZ3RoKQogICAgICAgICB7Ci0gICAgICAgICAgICB1bnNpZ25lZCBpbmRleCA9IDA7Ci0g
ICAgICAgICAgICBhcHBlbmRWYWx1ZUluQ29uc3RydWN0QW5kSW5jcmVtZW50TGVuZ3RoKGV4ZWMs
IGluZGV4LCB2MSk7Ci0gICAgICAgICAgICBhcHBlbmRWYWx1ZUluQ29uc3RydWN0QW5kSW5jcmVt
ZW50TGVuZ3RoKGV4ZWMsIGluZGV4LCB2Mik7Ci0gICAgICAgICAgICBhcHBlbmRWYWx1ZUluQ29u
c3RydWN0QW5kSW5jcmVtZW50TGVuZ3RoKGV4ZWMsIGluZGV4LCB2Myk7Ci0gICAgICAgICAgICBB
U1NFUlQoaW5kZXggPT0gc19tYXhJbnRlcm5hbFJvcGVMZW5ndGgpOworICAgICAgICAgICAgY29u
c3RydWN0b3JCb2R5KGV4ZWMsIHYxLCB2MiwgdjMpOwogICAgICAgICB9CiAKICAgICAgICAgLy8g
VGhpcyBjb25zdHJ1Y3RvciBjb25zdHJ1Y3RzIGEgbmV3IHN0cmluZyBieSBjb25jYXRlbmF0aW5n
IHUxICYgdTIuCkBAIC0yOTksNiArMjk1LDE2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAg
ICAgQVNTRVJUKGluZGV4IDw9IHNfbWF4SW50ZXJuYWxSb3BlTGVuZ3RoKTsKICAgICAgICAgfQog
CisgICAgcHJvdGVjdGVkOgorICAgICAgICB2b2lkIGNvbnN0cnVjdG9yQm9keShFeGVjU3RhdGUq
IGV4ZWMsIEpTVmFsdWUgdjEsIEpTVmFsdWUgdjIsIEpTVmFsdWUgdjMpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIHVuc2lnbmVkIGluZGV4ID0gMDsKKyAgICAgICAgICAgIGFwcGVuZFZhbHVlSW5D
b25zdHJ1Y3RBbmRJbmNyZW1lbnRMZW5ndGgoZXhlYywgaW5kZXgsIHYxKTsKKyAgICAgICAgICAg
IGFwcGVuZFZhbHVlSW5Db25zdHJ1Y3RBbmRJbmNyZW1lbnRMZW5ndGgoZXhlYywgaW5kZXgsIHYy
KTsKKyAgICAgICAgICAgIGFwcGVuZFZhbHVlSW5Db25zdHJ1Y3RBbmRJbmNyZW1lbnRMZW5ndGgo
ZXhlYywgaW5kZXgsIHYzKTsKKyAgICAgICAgICAgIEFTU0VSVChpbmRleCA9PSBzX21heEludGVy
bmFsUm9wZUxlbmd0aCk7CisgICAgICAgIH0KKwogICAgIHB1YmxpYzoKICAgICAgICAgc3RhdGlj
IEpTU3RyaW5nKiBjcmVhdGUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBjb25zdCBVU3RyaW5n
JiB2YWx1ZSkKICAgICAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9OYXRpdmVFcnJvckNvbnN0cnVjdG9yLmNwcAppbmRleCA4NWZmMGE4MmJhMjI0NDBj
NWZiMzg3M2JlNGZiZjI2NGFkZjJmNmEzLi4wZjFhMDc0YTBlZDE5OTUzOWQ2NjUxMjJkYmI1MmRj
ZmUzZTc5YzIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OYXRp
dmVFcnJvckNvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9OYXRpdmVFcnJvckNvbnN0cnVjdG9yLmNwcApAQCAtMzUsMTUgKzM1LDcgQEAgY29uc3QgQ2xh
c3NJbmZvIE5hdGl2ZUVycm9yQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIkZ1bmN0aW9uIiwgJklu
dGVybmFsRnVuY3Rpb24KIE5hdGl2ZUVycm9yQ29uc3RydWN0b3I6Ok5hdGl2ZUVycm9yQ29uc3Ry
dWN0b3IoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSwgU3RydWN0dXJlKiBwcm90b3R5cGVTdHJ1Y3R1cmUsIGNvbnN0IFVT
dHJpbmcmIG5hbWVBbmRNZXNzYWdlKQogICAgIDogSW50ZXJuYWxGdW5jdGlvbigmZXhlYy0+Z2xv
YmFsRGF0YSgpLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgSWRlbnRpZmllcihleGVjLCBuYW1l
QW5kTWVzc2FnZSkpCiB7Ci0gICAgQVNTRVJUKGluaGVyaXRzKCZzX2luZm8pKTsKLQotICAgIE5h
dGl2ZUVycm9yUHJvdG90eXBlKiBwcm90b3R5cGUgPSBOYXRpdmVFcnJvclByb3RvdHlwZTo6Y3Jl
YXRlKGV4ZWMsIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlU3RydWN0dXJlLCBuYW1lQW5kTWVzc2Fn
ZSwgdGhpcyk7Ci0KLSAgICBwdXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5wcm9w
ZXJ0eU5hbWVzKCkubGVuZ3RoLCBqc051bWJlcigxKSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5IHwg
RG9udEVudW0pOyAvLyBFQ01BIDE1LjExLjcuNQotICAgIHB1dERpcmVjdChleGVjLT5nbG9iYWxE
YXRhKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5wcm90b3R5cGUsIHByb3RvdHlwZSwgRG9udERl
bGV0ZSB8IFJlYWRPbmx5IHwgRG9udEVudW0pOwotICAgIG1fZXJyb3JTdHJ1Y3R1cmUuc2V0KGV4
ZWMtPmdsb2JhbERhdGEoKSwgdGhpcywgRXJyb3JJbnN0YW5jZTo6Y3JlYXRlU3RydWN0dXJlKGV4
ZWMtPmdsb2JhbERhdGEoKSwgcHJvdG90eXBlKSk7Ci0gICAgQVNTRVJUKG1fZXJyb3JTdHJ1Y3R1
cmUpOwotICAgIEFTU0VSVChtX2Vycm9yU3RydWN0dXJlLT50eXBlSW5mbygpLnR5cGUoKSA9PSBP
YmplY3RUeXBlKTsKKyAgICBjb25zdHJ1Y3RvckJvZHkoZXhlYywgZ2xvYmFsT2JqZWN0LCBwcm90
b3R5cGVTdHJ1Y3R1cmUsIG5hbWVBbmRNZXNzYWdlKTsKIH0KIAogdm9pZCBOYXRpdmVFcnJvckNv
bnN0cnVjdG9yOjp2aXNpdENoaWxkcmVuKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5o
CmluZGV4IDNlYWJjN2E1NWNhZmNhN2M5ZjAzZTEyNjgyOGVlYTJjZTFjNTI4NzUuLjgzMGM3NzQ1
NmFmN2ZhOTBkMzQ0ODkyMDhmM2UwYjgxOWYxMWRkNTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUVycm9yQ29uc3RydWN0b3IuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9OYXRpdmVFcnJvckNvbnN0cnVjdG9yLmgKQEAgLTIyLDYg
KzIyLDcgQEAKICNkZWZpbmUgTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvcl9oCiAKICNpbmNsdWRlICJJ
bnRlcm5hbEZ1bmN0aW9uLmgiCisjaW5jbHVkZSAiTmF0aXZlRXJyb3JQcm90b3R5cGUuaCIKIAog
bmFtZXNwYWNlIEpTQyB7CiAKQEAgLTQ3LDYgKzQ4LDIwIEBAIG5hbWVzcGFjZSBKU0MgewogCiAg
ICAgICAgIFN0cnVjdHVyZSogZXJyb3JTdHJ1Y3R1cmUoKSB7IHJldHVybiBtX2Vycm9yU3RydWN0
dXJlLmdldCgpOyB9CiAKKyAgICBwcm90ZWN0ZWQ6CisgICAgICAgIHZvaWQgY29uc3RydWN0b3JC
b2R5KEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0
dXJlKiBwcm90b3R5cGVTdHJ1Y3R1cmUsIGNvbnN0IFVTdHJpbmcmIG5hbWVBbmRNZXNzYWdlKQor
ICAgICAgICB7CisgICAgICAgICAgICBBU1NFUlQoaW5oZXJpdHMoJnNfaW5mbykpOworCisgICAg
ICAgICAgICBOYXRpdmVFcnJvclByb3RvdHlwZSogcHJvdG90eXBlID0gTmF0aXZlRXJyb3JQcm90
b3R5cGU6OmNyZWF0ZShleGVjLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZVN0cnVjdHVyZSwgbmFt
ZUFuZE1lc3NhZ2UsIHRoaXMpOworCisgICAgICAgICAgICBwdXREaXJlY3QoZXhlYy0+Z2xvYmFs
RGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3RoLCBqc051bWJlcigxKSwgRG9udERl
bGV0ZSB8IFJlYWRPbmx5IHwgRG9udEVudW0pOyAvLyBFQ01BIDE1LjExLjcuNQorICAgICAgICAg
ICAgcHV0RGlyZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLnBy
b3RvdHlwZSwgcHJvdG90eXBlLCBEb250RGVsZXRlIHwgUmVhZE9ubHkgfCBEb250RW51bSk7Cisg
ICAgICAgICAgICBtX2Vycm9yU3RydWN0dXJlLnNldChleGVjLT5nbG9iYWxEYXRhKCksIHRoaXMs
IEVycm9ySW5zdGFuY2U6OmNyZWF0ZVN0cnVjdHVyZShleGVjLT5nbG9iYWxEYXRhKCksIHByb3Rv
dHlwZSkpOworICAgICAgICAgICAgQVNTRVJUKG1fZXJyb3JTdHJ1Y3R1cmUpOworICAgICAgICAg
ICAgQVNTRVJUKG1fZXJyb3JTdHJ1Y3R1cmUtPnR5cGVJbmZvKCkudHlwZSgpID09IE9iamVjdFR5
cGUpOworICAgICAgICB9CisKICAgICBwcml2YXRlOgogICAgICAgICBOYXRpdmVFcnJvckNvbnN0
cnVjdG9yKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgU3RydWN0dXJl
KiBwcm90b3R5cGVTdHJ1Y3R1cmUsIGNvbnN0IFVTdHJpbmcmKTsKICAgICAgICAgc3RhdGljIGNv
bnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbiB8IElu
dGVybmFsRnVuY3Rpb246OlN0cnVjdHVyZUZsYWdzOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXJyb3JQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXJyb3JQcm90b3R5cGUuY3BwCmluZGV4IDY4MzA2NjAx
MjdhZjMyYmUwZmIyODc4ZTQwOWVjZDQ4MmQ5ZDI4MWIuLjAwOWYwODBlNWFkNGYxYzVjYWUzOWZl
NTYzMDI0OTI0NjBlMWI1ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL05hdGl2ZUVycm9yUHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9OYXRpdmVFcnJvclByb3RvdHlwZS5jcHAKQEAgLTMzLDYgKzMzLDExIEBAIEFTU0VS
VF9DTEFTU19GSVRTX0lOX0NFTEwoTmF0aXZlRXJyb3JQcm90b3R5cGUpOwogTmF0aXZlRXJyb3JQ
cm90b3R5cGU6Ok5hdGl2ZUVycm9yUHJvdG90eXBlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IFVTdHJpbmcm
IG5hbWVBbmRNZXNzYWdlLCBOYXRpdmVFcnJvckNvbnN0cnVjdG9yKiBjb25zdHJ1Y3RvcikKICAg
ICA6IEVycm9yUHJvdG90eXBlKGV4ZWMsIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlKQogeworICAg
IGNvbnN0cnVjdG9yQm9keShleGVjLCBuYW1lQW5kTWVzc2FnZSwgY29uc3RydWN0b3IpOworfQor
CitpbmxpbmUgdm9pZCBOYXRpdmVFcnJvclByb3RvdHlwZTo6Y29uc3RydWN0b3JCb2R5KEV4ZWNT
dGF0ZSogZXhlYywgY29uc3QgVVN0cmluZyYgbmFtZUFuZE1lc3NhZ2UsIE5hdGl2ZUVycm9yQ29u
c3RydWN0b3IqIGNvbnN0cnVjdG9yKQorewogICAgIHB1dERpcmVjdChleGVjLT5nbG9iYWxEYXRh
KCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5uYW1lLCBqc1N0cmluZyhleGVjLCBuYW1lQW5kTWVz
c2FnZSksIERvbnRFbnVtKTsKICAgICBwdXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVj
LT5wcm9wZXJ0eU5hbWVzKCkubWVzc2FnZSwganNTdHJpbmcoZXhlYywgbmFtZUFuZE1lc3NhZ2Up
LCBEb250RW51bSk7CiAgICAgcHV0RGlyZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+cHJv
cGVydHlOYW1lcygpLmNvbnN0cnVjdG9yLCBjb25zdHJ1Y3RvciwgRG9udEVudW0pOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXJyb3JQcm90b3R5cGUu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUVycm9yUHJvdG90eXBlLmgK
aW5kZXggMWJiMjMwOTAzMzU0ZmNhN2MxMGEwNTZmNTQ5NWY2MzY5NTQ3Y2Q1OS4uM2JhNmQwMGM0
NjU2NTRiNzcwNjBmMjM3YmU3NzkxMmVkNTk3MzRmZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXJyb3JQcm90b3R5cGUuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9OYXRpdmVFcnJvclByb3RvdHlwZS5oCkBAIC0zNyw2ICszNyw5
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gbmV3IChh
bGxvY2F0ZUNlbGw8TmF0aXZlRXJyb3JQcm90b3R5cGU+KCpleGVjLT5oZWFwKCkpKSBOYXRpdmVF
cnJvclByb3RvdHlwZShleGVjLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgbmFtZUFuZE1lc3Nh
Z2UsIGNvbnN0cnVjdG9yKTsKICAgICAgICAgfQorCisgICAgcHJvdGVjdGVkOgorICAgICAgICB2
b2lkIGNvbnN0cnVjdG9yQm9keShFeGVjU3RhdGUqLCBjb25zdCBVU3RyaW5nJiBuYW1lQW5kTWVz
c2FnZSwgTmF0aXZlRXJyb3JDb25zdHJ1Y3RvciopOwogICAgIH07CiAKIH0gLy8gbmFtZXNwYWNl
IEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nT2Jq
ZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ09iamVjdC5jcHAK
aW5kZXggNjdkYzI5MWIwOWVjZjdkN2ViYTg4YWFmMjk2ZmE1MzQ4ZWMyMmNmOS4uMWQwYzdhYmY5
OGQwODdjMGI1MTdiNTIwMjQ2ZTJhOGVmZWIzMDc2NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TdHJpbmdPYmplY3QuY3BwCkBAIC0yOSwxMyArMjksNiBAQCBBU1NFUlRf
Q0xBU1NfRklUU19JTl9DRUxMKFN0cmluZ09iamVjdCk7CiAKIGNvbnN0IENsYXNzSW5mbyBTdHJp
bmdPYmplY3Q6OnNfaW5mbyA9IHsgIlN0cmluZyIsICZKU1dyYXBwZXJPYmplY3Q6OnNfaW5mbywg
MCwgMCB9OwogCi1TdHJpbmdPYmplY3Q6OlN0cmluZ09iamVjdChFeGVjU3RhdGUqIGV4ZWMsIFN0
cnVjdHVyZSogc3RydWN0dXJlKQotICAgIDogSlNXcmFwcGVyT2JqZWN0KGV4ZWMtPmdsb2JhbERh
dGEoKSwgc3RydWN0dXJlKQotewotICAgIEFTU0VSVChpbmhlcml0cygmc19pbmZvKSk7Ci0gICAg
c2V0SW50ZXJuYWxWYWx1ZShleGVjLT5nbG9iYWxEYXRhKCksIGpzRW1wdHlTdHJpbmcoZXhlYykp
OwotfQotCiBTdHJpbmdPYmplY3Q6OlN0cmluZ09iamVjdChKU0dsb2JhbERhdGEmIGdsb2JhbERh
dGEsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU1N0cmluZyogc3RyaW5nKQogICAgIDogSlNXcmFw
cGVyT2JqZWN0KGdsb2JhbERhdGEsIHN0cnVjdHVyZSkKIHsKQEAgLTQzLDEzICszNiw2IEBAIFN0
cmluZ09iamVjdDo6U3RyaW5nT2JqZWN0KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUsIEpTU3RyCiAgICAgc2V0SW50ZXJuYWxWYWx1ZShnbG9iYWxEYXRhLCBz
dHJpbmcpOwogfQogCi1TdHJpbmdPYmplY3Q6OlN0cmluZ09iamVjdChFeGVjU3RhdGUqIGV4ZWMs
IFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBVU3RyaW5nJiBzdHJpbmcpCi0gICAgOiBKU1dy
YXBwZXJPYmplY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBzdHJ1Y3R1cmUpCi17Ci0gICAgQVNTRVJU
KGluaGVyaXRzKCZzX2luZm8pKTsKLSAgICBzZXRJbnRlcm5hbFZhbHVlKGV4ZWMtPmdsb2JhbERh
dGEoKSwganNTdHJpbmcoZXhlYywgc3RyaW5nKSk7Ci19Ci0KIGJvb2wgU3RyaW5nT2JqZWN0Ojpn
ZXRPd25Qcm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9w
ZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBpZiAoaW50ZXJuYWxWYWx1ZSgp
LT5nZXRTdHJpbmdQcm9wZXJ0eVNsb3QoZXhlYywgcHJvcGVydHlOYW1lLCBzbG90KSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ09iamVjdC5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0LmgKaW5kZXggODBlNWJlYzU3
Nzc3NTUxYWEyMTk3NzQ1MDU3YWUxOTA5MjhhNzE2ZS4uN2QxMzVjMWU0MTIyZmFlN2ZhZmYxOGRi
MmUxYmEzN2Q3NWNkNDU1ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU3RyaW5nT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3Ry
aW5nT2JqZWN0LmgKQEAgLTMyLDE0ICszMiwxNSBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAg
ICBzdGF0aWMgU3RyaW5nT2JqZWN0KiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSkKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIG5ldyAoYWxsb2NhdGVD
ZWxsPFN0cmluZ09iamVjdD4oKmV4ZWMtPmhlYXAoKSkpIFN0cmluZ09iamVjdChleGVjLCBzdHJ1
Y3R1cmUpOyAgCisgICAgICAgICAgICBKU1N0cmluZyogc3RyaW5nID0ganNFbXB0eVN0cmluZyhl
eGVjKTsKKyAgICAgICAgICAgIHJldHVybiBuZXcgKGFsbG9jYXRlQ2VsbDxTdHJpbmdPYmplY3Q+
KCpleGVjLT5oZWFwKCkpKSBTdHJpbmdPYmplY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBzdHJ1Y3R1
cmUsIHN0cmluZyk7ICAKICAgICAgICAgfQogICAgICAgICBzdGF0aWMgU3RyaW5nT2JqZWN0KiBj
cmVhdGUoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgVVN0cmlu
ZyYgc3RyKQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gbmV3IChhbGxvY2F0ZUNlbGw8
U3RyaW5nT2JqZWN0PigqZXhlYy0+aGVhcCgpKSkgU3RyaW5nT2JqZWN0KGV4ZWMsIHN0cnVjdHVy
ZSwgc3RyKTsgIAorICAgICAgICAgICAgSlNTdHJpbmcqIHN0cmluZyA9IGpzU3RyaW5nKGV4ZWMs
IHN0cik7CisgICAgICAgICAgICByZXR1cm4gbmV3IChhbGxvY2F0ZUNlbGw8U3RyaW5nT2JqZWN0
PigqZXhlYy0+aGVhcCgpKSkgU3RyaW5nT2JqZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwgc3RydWN0
dXJlLCBzdHJpbmcpOwogICAgICAgICB9CiAgICAgICAgIHN0YXRpYyBTdHJpbmdPYmplY3QqIGNy
ZWF0ZShFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCosIEpTU3RyaW5nKik7Ci0gICAgICAgIAog
CiAgICAgICAgIHZpcnR1YWwgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiwgY29u
c3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKICAgICAgICAgdmly
dHVhbCBib29sIGdldE93blByb3BlcnR5U2xvdChFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0
eU5hbWUsIFByb3BlcnR5U2xvdCYpOwpAQCAtNTksOCArNjAsNiBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgfQogCiAgICAgcHJvdGVjdGVkOgotICAgICAgICBTdHJpbmdPYmplY3QoRXhlY1N0
YXRlKiwgU3RydWN0dXJlKik7Ci0gICAgICAgIFN0cmluZ09iamVjdChFeGVjU3RhdGUqLCBTdHJ1
Y3R1cmUqLCBjb25zdCBVU3RyaW5nJik7CiAgICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBT
dHJ1Y3R1cmVGbGFncyA9IE92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8IE92ZXJyaWRlc0dl
dFByb3BlcnR5TmFtZXMgfCBKU1dyYXBwZXJPYmplY3Q6OlN0cnVjdHVyZUZsYWdzOwogICAgICAg
ICBTdHJpbmdPYmplY3QoSlNHbG9iYWxEYXRhJiwgU3RydWN0dXJlKiwgSlNTdHJpbmcqKTsKICAg
ICB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nT2Jq
ZWN0VGhhdE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1N0cmluZ09iamVjdFRoYXRNYXNxdWVyYWRlc0FzVW5kZWZpbmVkLmgKaW5kZXggZDQy
MzBlYThmNDUzMWQ0Y2U4ODRmMGJhMTU3NDg5MGY2MWE0NDgxMi4uNjk0MzZkN2UzNmY0ODEwNjI5
MGZiOGNlZjY2ZTlkNjZkNzk2N2M0ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvU3RyaW5nT2JqZWN0VGhhdE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdPYmplY3RUaGF0TWFzcXVlcmFkZXNB
c1VuZGVmaW5lZC5oCkBAIC0zNCwxMyArMzQsMTQgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAg
ICAgc3RhdGljIFN0cmluZ09iamVjdFRoYXRNYXNxdWVyYWRlc0FzVW5kZWZpbmVkKiBjcmVhdGUo
RXhlY1N0YXRlKiBleGVjLCBjb25zdCBVU3RyaW5nJiBzdHJpbmcpCiAgICAgICAgIHsKKyAgICAg
ICAgICAgIEpTU3RyaW5nKiBuZXdTdHJpbmcgPSBqc1N0cmluZyhleGVjLCBzdHJpbmcpOwogICAg
ICAgICAgICAgcmV0dXJuIG5ldyAoYWxsb2NhdGVDZWxsPFN0cmluZ09iamVjdFRoYXRNYXNxdWVy
YWRlc0FzVW5kZWZpbmVkPigqZXhlYy0+aGVhcCgpKSkgU3RyaW5nT2JqZWN0VGhhdE1hc3F1ZXJh
ZGVzQXNVbmRlZmluZWQoZXhlYywKLSAgICAgICAgICAgICAgICBjcmVhdGVTdHJ1Y3R1cmUoZXhl
Yy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPnN0cmluZ1Byb3Rv
dHlwZSgpKSwgc3RyaW5nKTsKKyAgICAgICAgICAgICAgICBjcmVhdGVTdHJ1Y3R1cmUoZXhlYy0+
Z2xvYmFsRGF0YSgpLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPnN0cmluZ1Byb3RvdHlw
ZSgpKSwgbmV3U3RyaW5nKTsKICAgICAgICAgfQogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgU3Ry
aW5nT2JqZWN0VGhhdE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQoRXhlY1N0YXRlKiBleGVjLCBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgVVN0cmluZyYgc3RyaW5nKQotICAgICAgICAgICAgOiBT
dHJpbmdPYmplY3QoZXhlYywgc3RydWN0dXJlLCBzdHJpbmcpCisgICAgICAgIFN0cmluZ09iamVj
dFRoYXRNYXNxdWVyYWRlc0FzVW5kZWZpbmVkKEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUsIEpTU3RyaW5nKiBzdHJpbmcpCisgICAgICAgICAgICA6IFN0cmluZ09iamVjdChl
eGVjLT5nbG9iYWxEYXRhKCksIHN0cnVjdHVyZSwgc3RyaW5nKQogICAgICAgICB7CiAgICAgICAg
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJv
dG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1Byb3RvdHlw
ZS5jcHAKaW5kZXggNDI4N2QzYWZlYjU0ODliNjNmOTE0ZDZlZWE5MDExNjRkNTdlODQ1Ni4uMGZj
NjA2Zjc0NzNmODk5NWEzZjRhOGRhZmQ2M2IwMDk3NGZjZWQ1OSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdQcm90b3R5cGUuY3BwCkBAIC0xMzEsOCArMTMx
LDggQEAgY29uc3QgQ2xhc3NJbmZvIFN0cmluZ1Byb3RvdHlwZTo6c19pbmZvID0geyAiU3RyaW5n
IiwgJlN0cmluZ09iamVjdDo6c19pbmZvLCAwLAogKi8KIAogLy8gRUNNQSAxNS41LjQKLVN0cmlu
Z1Byb3RvdHlwZTo6U3RyaW5nUHJvdG90eXBlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCi0gICAgOiBTdHJpbmdPYmpl
Y3QoZXhlYywgc3RydWN0dXJlKQorU3RyaW5nUHJvdG90eXBlOjpTdHJpbmdQcm90b3R5cGUoRXhl
Y1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSwgSlNTdHJpbmcqIG5hbWVBbmRNZXNzYWdlKQorICAgIDogU3RyaW5nT2JqZWN0KGV4
ZWMtPmdsb2JhbERhdGEoKSwgc3RydWN0dXJlLCBuYW1lQW5kTWVzc2FnZSkKIHsKICAgICBBU1NF
UlQoaW5oZXJpdHMoJnNfaW5mbykpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9TdHJpbmdQcm90b3R5cGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1N0cmluZ1Byb3RvdHlwZS5oCmluZGV4IDAzYTY3ZDhjNWVjZTE4NGM2NDVhMjFhNDVlNTNh
ZWM1MjkxNjg2MjAuLjIxNzU4NWZhNjBkNmI5MjcwNDdlZmU5NDkwNTQyNDQzM2M3ZmQwZmMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5oCkBA
IC0yOSwxNCArMjksMTUgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBTdHJpbmdQcm90
b3R5cGUgOiBwdWJsaWMgU3RyaW5nT2JqZWN0IHsKICAgICBwcml2YXRlOgotICAgICAgICBTdHJp
bmdQcm90b3R5cGUoRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqKTsKKyAg
ICAgICAgU3RyaW5nUHJvdG90eXBlKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0
dXJlKiwgSlNTdHJpbmcqKTsKIAogICAgIHB1YmxpYzoKICAgICAgICAgdHlwZWRlZiBTdHJpbmdP
YmplY3QgQmFzZTsKIAogICAgICAgICBzdGF0aWMgU3RyaW5nUHJvdG90eXBlKiBjcmVhdGUoRXhl
Y1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSkKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIG5ldyAoYWxsb2NhdGVDZWxs
PFN0cmluZ1Byb3RvdHlwZT4oKmV4ZWMtPmhlYXAoKSkpIFN0cmluZ1Byb3RvdHlwZShleGVjLCBn
bG9iYWxPYmplY3QsIHN0cnVjdHVyZSk7CisgICAgICAgICAgICBKU1N0cmluZyogbmFtZUFuZE1l
c3NhZ2UgPSBqc0VtcHR5U3RyaW5nKGV4ZWMpOworICAgICAgICAgICAgcmV0dXJuIG5ldyAoYWxs
b2NhdGVDZWxsPFN0cmluZ1Byb3RvdHlwZT4oKmV4ZWMtPmhlYXAoKSkpIFN0cmluZ1Byb3RvdHlw
ZShleGVjLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgbmFtZUFuZE1lc3NhZ2UpOwogICAgICAg
ICB9CiAKICAgICAgICAgdmlydHVhbCBib29sIGdldE93blByb3BlcnR5U2xvdChFeGVjU3RhdGUq
LCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
CmluZGV4IDBmMzgwZWVlYTU4Y2JjMWJkNjZiYzVjMGM3MDc2ZmMyOTU4NDM0ZTMuLjBmZmQxNzVm
YzllYTFlZTIxODFhMjBkNTY1NThmZWM4NzhiOGU0NGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwy
NyBAQAorMjAxMS0wOC0xOCAgTWFyayBIYWhuZW5iZXJnICA8bWhhaG5lbmJlcmdAYXBwbGUuY29t
PgorCisgICAgICAgIE1vdmUgYWxsb2NhdGlvbiBpbiBjb25zdHJ1Y3RvcnMgaW50byBzZXBhcmF0
ZSBjb25zdHJ1Y3RvckJvZHkoKSBtZXRob2RzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD02NjI2NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4KKworICAgICAgICBSZWZhY3RvcmluZyB0
byBwdXQgYWxsIGFsbG9jYXRpb25zIHRoYXQgbmVlZCB0byBiZSBkb25lIGFmdGVyIHRoZSBvYmpl
Y3QncyAKKyAgICAgICAgaW5pdGlhbGl6YXRpb24gbGlzdCBoYXMgZXhlY3V0ZWQgYnV0IGJlZm9y
ZSB0aGUgb2JqZWN0IGlzIHJlYWR5IGZvciB1c2UgCisgICAgICAgIGludG8gYSBzZXBhcmF0ZSBj
b25zdHJ1Y3RvckJvZHkoKSBtZXRob2QuICBUaGlzIG1ldGhvZCBpcyBzdGlsbCBjYWxsZWQgYnkg
dGhlIGNvbnN0cnVjdG9yLCAKKyAgICAgICAgc28gdGhlIHBhdGNoIGRvZXNuJ3QgcmVzb2x2ZSBh
bnkgcG90ZW50aWFsIGlzc3VlcywgaXQncyBqdXN0IHRvIHNldCB1cCB0aGUgY29kZSBmb3IgZnVy
dGhlciByZWZhY3RvcmluZy4KKworICAgICAgICAqIGJyaWRnZS9vYmpjL09iakNSdW50aW1lT2Jq
ZWN0Lmg6CisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpPYmpDUnVudGltZU9iamVjdDo6Y3JlYXRl
KToKKyAgICAgICAgKiBicmlkZ2Uvb2JqYy9PYmpDUnVudGltZU9iamVjdC5tbToKKyAgICAgICAg
KiBicmlkZ2Uvb2JqYy9vYmpjX2luc3RhbmNlLm1tOgorICAgICAgICAoT2JqQ1J1bnRpbWVNZXRo
b2Q6OmNyZWF0ZSk6CisgICAgICAgIChPYmpDUnVudGltZU1ldGhvZDo6T2JqQ1J1bnRpbWVNZXRo
b2QpOgorICAgICAgICAqIGJyaWRnZS9ydW50aW1lX2FycmF5LmNwcDoKKyAgICAgICAgKiBicmlk
Z2UvcnVudGltZV9hcnJheS5oOgorICAgICAgICAoSlNDOjpSdW50aW1lQXJyYXk6OmNyZWF0ZSk6
CisKIDIwMTEtMDgtMTggIEphbWVzIFJvYmluc29uICA8amFtZXNyQGNocm9taXVtLm9yZz4KIAog
ICAgICAgICBbY2hyb21pdW1dIERyYXcgdGhlIHJvb3QvIm5vbi1jb21wb3NpdGVkIGNvbnRlbnQi
IGluIGNvbXBvc2l0b3Igc2lkZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL29i
amMvT2JqQ1J1bnRpbWVPYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL09iakNS
dW50aW1lT2JqZWN0LmgKaW5kZXggNjRjY2ZmNmVhYWZjY2NiNTUxYzBkNWRhNzBmMjQ2MTNhY2Fl
MjU2MS4uYTg4MTNmZTNmNzhlOGZhNTNlMjNjM2JhYWI5NzBjNDMyZGUwZmZkMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvT2JqQ1J1bnRpbWVPYmplY3QuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9PYmpDUnVudGltZU9iamVjdC5oCkBAIC0zOSw2ICsz
OSw4IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBPYmpDUnVudGltZU9iamVjdCogY3JlYXRlKEV4
ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUGFzc1JlZlB0cjxP
YmpjSW5zdGFuY2U+IGluc3QpCiAgICAgeworICAgICAgICAvLyBGSVhNRTogZGVwcmVjYXRlZEdl
dERPTVN0cnVjdHVyZSB1c2VzIHRoZSBwcm90b3R5cGUgb2ZmIG9mIHRoZSB3cm9uZyBnbG9iYWwg
b2JqZWN0CisgICAgICAgIC8vIFdlIG5lZWQgdG8gcGFzcyBpbiB0aGUgcmlnaHQgZ2xvYmFsIG9i
amVjdCBmb3IgImkiLgogICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IFdlYkNvcmU6OmRl
cHJlY2F0ZWRHZXRET01TdHJ1Y3R1cmU8T2JqQ1J1bnRpbWVPYmplY3Q+KGV4ZWMpOwogICAgICAg
ICByZXR1cm4gbmV3IChhbGxvY2F0ZUNlbGw8T2JqQ1J1bnRpbWVPYmplY3Q+KCpleGVjLT5oZWFw
KCkpKSBPYmpDUnVudGltZU9iamVjdChleGVjLCBnbG9iYWxPYmplY3QsIGluc3QsIHN0cnVjdHVy
ZSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvT2JqQ1J1
bnRpbWVPYmplY3QubW0gYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9PYmpDUnVudGltZU9i
amVjdC5tbQppbmRleCA1ODQ4ZmUzMDM3YTFmZTU2NTUwZGMwMjJhNTdkMGNlNTQwNjVjNmU0Li5l
YTg2MjYzMmRlYzRjZmU3YWVkZDYxZGU1ODRiYjJkNWMwZWI4ZmE5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9PYmpDUnVudGltZU9iamVjdC5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9icmlkZ2Uvb2JqYy9PYmpDUnVudGltZU9iamVjdC5tbQpAQCAtMzYsOCArMzYsNiBA
QCBuYW1lc3BhY2UgQmluZGluZ3MgewogY29uc3QgQ2xhc3NJbmZvIE9iakNSdW50aW1lT2JqZWN0
OjpzX2luZm8gPSB7ICJPYmpDUnVudGltZU9iamVjdCIsICZSdW50aW1lT2JqZWN0OjpzX2luZm8s
IDAsIDAgfTsKIAogT2JqQ1J1bnRpbWVPYmplY3Q6Ok9iakNSdW50aW1lT2JqZWN0KEV4ZWNTdGF0
ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUGFzc1JlZlB0cjxPYmpjSW5z
dGFuY2U+IGluc3RhbmNlLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKLSAgICAvLyBGSVhNRTogZGVw
cmVjYXRlZEdldERPTVN0cnVjdHVyZSB1c2VzIHRoZSBwcm90b3R5cGUgb2ZmIG9mIHRoZSB3cm9u
ZyBnbG9iYWwgb2JqZWN0Ci0gICAgLy8gV2UgbmVlZCB0byBwYXNzIGluIHRoZSByaWdodCBnbG9i
YWwgb2JqZWN0IGZvciAiaSIuCiAgICAgOiBSdW50aW1lT2JqZWN0KGV4ZWMsIGdsb2JhbE9iamVj
dCwgc3RydWN0dXJlLCBpbnN0YW5jZSkKIHsKICAgICBBU1NFUlQoaW5oZXJpdHMoJnNfaW5mbykp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19pbnN0YW5jZS5t
bSBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfaW5zdGFuY2UubW0KaW5kZXggMDQx
ZjkyMzc3NmJhNWQ4MDFmNWQ3OGYzODI4YmQ5ZGU0ZmRlNzYyNy4uZGNkYzdiNmE2OGIzYmQ2NDg2
NzFiZWRlNjdkNWI5OWI3ZDYxZjA2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdl
L29iamMvb2JqY19pbnN0YW5jZS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9v
YmpjX2luc3RhbmNlLm1tCkBAIC0xNzUsNyArMTc1LDEwIEBAIGNsYXNzIE9iakNSdW50aW1lTWV0
aG9kIDogcHVibGljIFJ1bnRpbWVNZXRob2QgewogcHVibGljOgogICAgIHN0YXRpYyBPYmpDUnVu
dGltZU1ldGhvZCogY3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgY29uc3QgSWRlbnRpZmllciYgbmFtZSwgQmluZGluZ3M6Ok1ldGhvZExpc3QmIGxp
c3QpCiAgICAgewotICAgICAgICByZXR1cm4gbmV3IChhbGxvY2F0ZUNlbGw8T2JqQ1J1bnRpbWVN
ZXRob2Q+KCpleGVjLT5oZWFwKCkpKSBPYmpDUnVudGltZU1ldGhvZChleGVjLCBnbG9iYWxPYmpl
Y3QsIG5hbWUsIGxpc3QpOworICAgICAgICAvLyBGSVhNRTogZGVwcmVjYXRlZEdldERPTVN0cnVj
dHVyZSB1c2VzIHRoZSBwcm90b3R5cGUgb2ZmIG9mIHRoZSB3cm9uZyBnbG9iYWwgb2JqZWN0Cisg
ICAgICAgIC8vIFdlIG5lZWQgdG8gcGFzcyBpbiB0aGUgcmlnaHQgZ2xvYmFsIG9iamVjdCBmb3Ig
ImkiLgorICAgICAgICBTdHJ1Y3R1cmUqIGRvbVN0cnVjdHVyZSA9IFdlYkNvcmU6OmRlcHJlY2F0
ZWRHZXRET01TdHJ1Y3R1cmU8T2JqQ1J1bnRpbWVNZXRob2Q+KGV4ZWMpOworICAgICAgICByZXR1
cm4gbmV3IChhbGxvY2F0ZUNlbGw8T2JqQ1J1bnRpbWVNZXRob2Q+KCpleGVjLT5oZWFwKCkpKSBP
YmpDUnVudGltZU1ldGhvZChleGVjLCBnbG9iYWxPYmplY3QsIGRvbVN0cnVjdHVyZSwgbmFtZSwg
bGlzdCk7CiAgICAgfQogCiAgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpT
R2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNWYWx1ZSBwcm90b3R5cGUpCkBAIC0xODYsMTAgKzE4
OSw4IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3QgQ2xhc3NJbmZvIHNfaW5mbzsKIAogcHJp
dmF0ZToKLSAgICBPYmpDUnVudGltZU1ldGhvZChFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IElkZW50aWZpZXImIG5hbWUsIEJpbmRpbmdzOjpNZXRo
b2RMaXN0JiBsaXN0KQotICAgICAgICAvLyBGSVhNRTogZGVwcmVjYXRlZEdldERPTVN0cnVjdHVy
ZSB1c2VzIHRoZSBwcm90b3R5cGUgb2ZmIG9mIHRoZSB3cm9uZyBnbG9iYWwgb2JqZWN0Ci0gICAg
ICAgIC8vIFdlIG5lZWQgdG8gcGFzcyBpbiB0aGUgcmlnaHQgZ2xvYmFsIG9iamVjdCBmb3IgImki
LgotICAgICAgICA6IFJ1bnRpbWVNZXRob2QoZXhlYywgZ2xvYmFsT2JqZWN0LCBXZWJDb3JlOjpk
ZXByZWNhdGVkR2V0RE9NU3RydWN0dXJlPE9iakNSdW50aW1lTWV0aG9kPihleGVjKSwgbmFtZSwg
bGlzdCkKKyAgICBPYmpDUnVudGltZU1ldGhvZChFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBJZGVudGlmaWVy
JiBuYW1lLCBCaW5kaW5nczo6TWV0aG9kTGlzdCYgbGlzdCkKKyAgICAgICAgOiBSdW50aW1lTWV0
aG9kKGV4ZWMsIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBuYW1lLCBsaXN0KQogICAgIHsKICAg
ICAgICAgQVNTRVJUKGluaGVyaXRzKCZzX2luZm8pKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9hcnJheS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9icmlk
Z2UvcnVudGltZV9hcnJheS5jcHAKaW5kZXggZDA1NjQ5NGVkODBhYTFkMzkxZmRlMGFiZDA5ZWRh
NDIwNDI5MWI1NC4uYjVmN2EwNzhiMmMwMGNmOGRmZGM4MDkwYzdhZjg0MDIxMjRkNjU3YiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfYXJyYXkuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX2FycmF5LmNwcApAQCAtMzgsOCArMzgsNiBAQCBu
YW1lc3BhY2UgSlNDIHsKIGNvbnN0IENsYXNzSW5mbyBSdW50aW1lQXJyYXk6OnNfaW5mbyA9IHsg
IlJ1bnRpbWVBcnJheSIsICZKU0FycmF5OjpzX2luZm8sIDAsIDAgfTsKIAogUnVudGltZUFycmF5
OjpSdW50aW1lQXJyYXkoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgQmlu
ZGluZ3M6OkFycmF5KiBhcnJheSkKLSAgICAvLyBGSVhNRTogZGVwcmVjYXRlZEdldERPTVN0cnVj
dHVyZSB1c2VzIHRoZSBwcm90b3R5cGUgb2ZmIG9mIHRoZSB3cm9uZyBnbG9iYWwgb2JqZWN0Ci0g
ICAgLy8gV2UgbmVlZCB0byBwYXNzIGluIHRoZSByaWdodCBnbG9iYWwgb2JqZWN0IGZvciAiYXJy
YXkiLgogICAgIDogSlNBcnJheShleGVjLT5nbG9iYWxEYXRhKCksIHN0cnVjdHVyZSkKIHsKICAg
ICBBU1NFUlQoaW5oZXJpdHMoJnNfaW5mbykpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YnJpZGdlL3J1bnRpbWVfYXJyYXkuaCBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX2Fy
cmF5LmgKaW5kZXggNDllMzkzZjg3OWY3NmQ3YWMzZTBjODVkMzA3MzZhNmQ3NTY2NmZkZC4uY2I3
YmM2MzU3NzZkOGViYzkxMDM5NTMyMGFlZmRlNDJiY2I5MDZkNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfYXJyYXkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlk
Z2UvcnVudGltZV9hcnJheS5oCkBAIC0zOCw2ICszOCw4IEBAIHB1YmxpYzoKIAogICAgIHN0YXRp
YyBSdW50aW1lQXJyYXkqIGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIEJpbmRpbmdzOjpBcnJheSog
YXJyYXkpCiAgICAgeworICAgICAgICAvLyBGSVhNRTogZGVwcmVjYXRlZEdldERPTVN0cnVjdHVy
ZSB1c2VzIHRoZSBwcm90b3R5cGUgb2ZmIG9mIHRoZSB3cm9uZyBnbG9iYWwgb2JqZWN0CisgICAg
ICAgIC8vIFdlIG5lZWQgdG8gcGFzcyBpbiB0aGUgcmlnaHQgZ2xvYmFsIG9iamVjdCBmb3IgImFy
cmF5Ii4KICAgICAgICAgU3RydWN0dXJlKiBkb21TdHJ1Y3R1cmUgPSBXZWJDb3JlOjpkZXByZWNh
dGVkR2V0RE9NU3RydWN0dXJlPFJ1bnRpbWVBcnJheT4oZXhlYyk7CiAgICAgICAgIHJldHVybiBu
ZXcgKGFsbG9jYXRlQ2VsbDxSdW50aW1lQXJyYXk+KCpleGVjLT5oZWFwKCkpKSBSdW50aW1lQXJy
YXkoZXhlYywgZG9tU3RydWN0dXJlLCBhcnJheSk7CiAgICAgfQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>