<?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>113852</bug_id>
          
          <creation_ts>2013-04-02 23:48:18 -0700</creation_ts>
          <short_desc>Refine LOG messages in WebSocket related components</short_desc>
          <delta_ts>2013-04-03 05:14:24 -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>WebCore JavaScript</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P3</priority>
          <bug_severity>Minor</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Takeshi Yoshino">tyoshino</reporter>
          <assigned_to name="Takeshi Yoshino">tyoshino</assigned_to>
          <cc>ap</cc>
    
    <cc>ricea</cc>
    
    <cc>tkent</cc>
    
    <cc>toyoshim</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>yhirano</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>868476</commentid>
    <comment_count>0</comment_count>
    <who name="Takeshi Yoshino">tyoshino</who>
    <bug_when>2013-04-02 23:48:18 -0700</bug_when>
    <thetext>- LOG messages should contain method names to ease identifying where the event occurred.
- For consistency, make all messages print the pointer of the origin instance.
- Quote UTF8 data in LOG messages.
- For overloaded methods, add the type to clarify which one is run</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>868480</commentid>
    <comment_count>1</comment_count>
      <attachid>196290</attachid>
    <who name="Takeshi Yoshino">tyoshino</who>
    <bug_when>2013-04-02 23:51:25 -0700</bug_when>
    <thetext>Created attachment 196290
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>868503</commentid>
    <comment_count>2</comment_count>
      <attachid>196290</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2013-04-03 00:56:49 -0700</bug_when>
    <thetext>Comment on attachment 196290
Patch

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

&gt; Source/WebCore/Modules/websockets/WebSocketChannel.cpp:390
&gt; +        LOG(Network, &quot;WebSocketChannel %p appendToBuffer Buffer overflow (%lu bytes already in receive buffer and appending %lu bytes)&quot;, this, static_cast&lt;unsigned long&gt;(m_buffer.size()), static_cast&lt;unsigned long&gt;(len));

appendToBuffer -&gt; appendToBuffer() for consistency?

&gt; Source/WebCore/Modules/websockets/WebSocketChannel.cpp:468
&gt; +    LOG(Network, &quot;WebSocketChannel %p startClosingHandshake code=%d m_receivedClosingHandshake=%d&quot;, this, m_closing, m_receivedClosingHandshake);

startClosingHandshake -&gt; startClosingHandshake() ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>868530</commentid>
    <comment_count>3</comment_count>
      <attachid>196302</attachid>
    <who name="Takeshi Yoshino">tyoshino</who>
    <bug_when>2013-04-03 01:48:46 -0700</bug_when>
    <thetext>Created attachment 196302
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>868531</commentid>
    <comment_count>4</comment_count>
    <who name="Takeshi Yoshino">tyoshino</who>
    <bug_when>2013-04-03 01:49:16 -0700</bug_when>
    <thetext>(In reply to comment #2)

Thanks for review. Fixed both.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>868580</commentid>
    <comment_count>5</comment_count>
      <attachid>196314</attachid>
    <who name="Takeshi Yoshino">tyoshino</who>
    <bug_when>2013-04-03 03:19:52 -0700</bug_when>
    <thetext>Created attachment 196314
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>868582</commentid>
    <comment_count>6</comment_count>
    <who name="Takeshi Yoshino">tyoshino</who>
    <bug_when>2013-04-03 03:21:18 -0700</bug_when>
    <thetext>(In reply to comment #5)

Sorry for last minute fix. Replaced %p in WebSocket.cpp L356 with &apos;%s&apos; as it&apos;s printable URL data.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>868636</commentid>
    <comment_count>7</comment_count>
      <attachid>196314</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-04-03 05:14:19 -0700</bug_when>
    <thetext>Comment on attachment 196314
Patch

Clearing flags on attachment: 196314

Committed r147542: &lt;http://trac.webkit.org/changeset/147542&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>868637</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-04-03 05:14:24 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>196290</attachid>
            <date>2013-04-02 23:51:25 -0700</date>
            <delta_ts>2013-04-03 01:48:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-113852-20130403155115.patch</filename>
            <type>text/plain</type>
            <size>28667</size>
            <attacher name="Takeshi Yoshino">tyoshino</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ3MzU2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDhmOTIxOWM4MzM4MTky
MzkyNjUwN2Y0OTM3MTM0YzVkOGJlYjhmZS4uNjYyNzYxNmZjZmE0NDlmMTAwMWQ3YThiZGVhMWUz
MDdlYTVlODBlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY1IEBACisyMDEzLTA0LTAyICBUYWtl
c2hpIFlvc2hpbm8gIDx0eW9zaGlub0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmVmaW5lIExP
RyBtZXNzYWdlcyBpbiBXZWJTb2NrZXQgcmVsYXRlZCBjb21wb25lbnRzCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTM4NTIKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZWZpbmUgTE9HIG1lc3NhZ2VzIGJ5
CisgICAgICAgIC0gTWFrZSB0aGVtIGNvbnRhaW4gbWV0aG9kIG5hbWVzIHRvIGVhc2UgaWRlbnRp
Znlpbmcgd2hlcmUgdGhlIGV2ZW50IG9jY3VycmVkLgorICAgICAgICAtIEZvciBjb25zaXN0ZW5j
eSwgbWFrZSBhbGwgbWVzc2FnZXMgcHJpbnQgdGhlIHBvaW50ZXIgb2YgdGhlIG9yaWdpbiBpbnN0
YW5jZS4KKyAgICAgICAgLSBRdW90ZSBVVEY4IGRhdGEgaW4gTE9HIG1lc3NhZ2VzLgorICAgICAg
ICAtIEZvciBvdmVybG9hZGVkIG1ldGhvZHMsIGFkZCB0aGUgdHlwZSB0byBjbGFyaWZ5IHdoaWNo
IG9uZSBpcyBydW4KKworICAgICAgICAqIE1vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0Ojpjb25uZWN0KToKKyAgICAgICAgKFdlYkNv
cmU6OldlYlNvY2tldDo6c2VuZCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXQ6OmNsb3Nl
KToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldDo6Y29udGV4dERlc3Ryb3llZCk6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJTb2NrZXQ6OmRpZENvbm5lY3QpOgorICAgICAgICAoV2ViQ29yZTo6
V2ViU29ja2V0OjpkaWRSZWNlaXZlTWVzc2FnZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2Nr
ZXQ6OmRpZFJlY2VpdmVCaW5hcnlEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldDo6
ZGlkUmVjZWl2ZU1lc3NhZ2VFcnJvcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXQ6OmRp
ZFVwZGF0ZUJ1ZmZlcmVkQW1vdW50KToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldDo6ZGlk
U3RhcnRDbG9zaW5nSGFuZHNoYWtlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldDo6ZGlk
Q2xvc2UpOgorICAgICAgICAqIE1vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldENoYW5uZWw6OmNvbm5lY3QpOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViU29ja2V0Q2hhbm5lbDo6c3VicHJvdG9jb2wpOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViU29ja2V0Q2hhbm5lbDo6ZXh0ZW5zaW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJTb2NrZXRDaGFubmVsOjpzZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldENoYW5u
ZWw6OmJ1ZmZlcmVkQW1vdW50KToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldENoYW5uZWw6
OmNsb3NlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldENoYW5uZWw6OmZhaWwpOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViU29ja2V0Q2hhbm5lbDo6ZGlzY29ubmVjdCk6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJTb2NrZXRDaGFubmVsOjp3aWxsT3BlblNvY2tldFN0cmVhbSk6CisgICAgICAg
IChXZWJDb3JlOjpXZWJTb2NrZXRDaGFubmVsOjpkaWRPcGVuU29ja2V0U3RyZWFtKToKKyAgICAg
ICAgKFdlYkNvcmU6OldlYlNvY2tldENoYW5uZWw6OmRpZENsb3NlU29ja2V0U3RyZWFtKToKKyAg
ICAgICAgKFdlYkNvcmU6OldlYlNvY2tldENoYW5uZWw6OmRpZFJlY2VpdmVTb2NrZXRTdHJlYW1E
YXRhKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldENoYW5uZWw6OmRpZEZhaWxTb2NrZXRT
dHJlYW0pOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0Q2hhbm5lbDo6ZGlkU3RhcnRMb2Fk
aW5nKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldENoYW5uZWw6OmRpZFJlY2VpdmVEYXRh
KToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldENoYW5uZWw6OmRpZEZpbmlzaExvYWRpbmcp
OgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0Q2hhbm5lbDo6ZGlkRmFpbCk6CisgICAgICAg
IChXZWJDb3JlOjpXZWJTb2NrZXRDaGFubmVsOjphcHBlbmRUb0J1ZmZlcik6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJTb2NrZXRDaGFubmVsOjpwcm9jZXNzQnVmZmVyKToKKyAgICAgICAgKFdlYkNv
cmU6OldlYlNvY2tldENoYW5uZWw6OnN0YXJ0Q2xvc2luZ0hhbmRzaGFrZSk6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJTb2NrZXRDaGFubmVsOjpjbG9zaW5nVGltZXJGaXJlZCk6CisgICAgICAgICog
TW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldERlZmxhdGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OldlYlNvY2tldERlZmxhdGVyOjp+V2ViU29ja2V0RGVmbGF0ZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViU29ja2V0SW5mbGF0ZXI6On5XZWJTb2NrZXRJbmZsYXRlcik6CisgICAgICAgICog
TW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpXZWJTb2NrZXRIYW5kc2hha2U6OnJlYWRTZXJ2ZXJIYW5kc2hha2UpOgorICAgICAgICAq
IHBsYXRmb3JtL25ldHdvcmsvY2hyb21pdW0vU29ja2V0U3RyZWFtSGFuZGxlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNvY2tldFN0cmVhbUhhbmRsZUludGVybmFsOjpjb25uZWN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlNvY2tldFN0cmVhbUhhbmRsZUludGVybmFsOjpzZW5kKToKKyAgICAgICAg
KFdlYkNvcmU6OlNvY2tldFN0cmVhbUhhbmRsZUludGVybmFsOjpjbG9zZSk6CisgICAgICAgIChX
ZWJDb3JlOjpTb2NrZXRTdHJlYW1IYW5kbGVJbnRlcm5hbDo6ZGlkT3BlblN0cmVhbSk6CisgICAg
ICAgIChXZWJDb3JlOjpTb2NrZXRTdHJlYW1IYW5kbGVJbnRlcm5hbDo6ZGlkU2VuZERhdGEpOgor
ICAgICAgICAoV2ViQ29yZTo6U29ja2V0U3RyZWFtSGFuZGxlSW50ZXJuYWw6OmRpZFJlY2VpdmVE
YXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlNvY2tldFN0cmVhbUhhbmRsZUludGVybmFsOjpkaWRD
bG9zZSk6CisgICAgICAgIChXZWJDb3JlOjpTb2NrZXRTdHJlYW1IYW5kbGVJbnRlcm5hbDo6ZGlk
RmFpbCk6CisKIDIwMTMtMDQtMDEgIFRpbW90aHkgSGF0Y2hlciAgPHRpbW90aHlAYXBwbGUuY29t
PgogCiAgICAgICAgIE1ha2UgJ3RoaXMnIGV2YWx1YXRlIHRvIHRoZSBjb3JyZWN0IG9iamVjdCB3
aGVuIHBhdXNlZCBpbiB0aGUgRGVidWdnZXIuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwCmluZGV4IDgxZWZhM2U1OWExN2I0ZGFhZjhmNzZmMDcx
YjM1NjE0N2VjZTk4N2MuLmZmMzk3N2MyYTY1MjhiNjgzODQzYzg0MmUzYjhjN2QyZTZiOTViY2Ug
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuY3Bw
CkBAIC0yMTEsNyArMjExLDcgQEAgdm9pZCBXZWJTb2NrZXQ6OmNvbm5lY3QoY29uc3QgU3RyaW5n
JiB1cmwsIGNvbnN0IFN0cmluZyYgcHJvdG9jb2wsIEV4Y2VwdGlvbkNvZGUKIAogdm9pZCBXZWJT
b2NrZXQ6OmNvbm5lY3QoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBw
cm90b2NvbHMsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewotICAgIExPRyhOZXR3b3JrLCAiV2ViU29j
a2V0ICVwIGNvbm5lY3QgdG8gJXMiLCB0aGlzLCB1cmwudXRmOCgpLmRhdGEoKSk7CisgICAgTE9H
KE5ldHdvcmssICJXZWJTb2NrZXQgJXAgY29ubmVjdCgpIHVybD0nJXMnIiwgdGhpcywgdXJsLnV0
ZjgoKS5kYXRhKCkpOwogICAgIG1fdXJsID0gS1VSTChLVVJMKCksIHVybCk7CiAKICAgICBpZiAo
IW1fdXJsLmlzVmFsaWQoKSkgewpAQCAtMjkyLDcgKzI5Miw3IEBAIHZvaWQgV2ViU29ja2V0Ojpj
b25uZWN0KGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcHJvdG9jb2xz
LCBFeGNlCiAKIGJvb2wgV2ViU29ja2V0OjpzZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgRXhj
ZXB0aW9uQ29kZSYgZWMpCiB7Ci0gICAgTE9HKE5ldHdvcmssICJXZWJTb2NrZXQgJXAgc2VuZCAl
cyIsIHRoaXMsIG1lc3NhZ2UudXRmOCgpLmRhdGEoKSk7CisgICAgTE9HKE5ldHdvcmssICJXZWJT
b2NrZXQgJXAgc2VuZCgpIFNlbmRpbmcgU3RyaW5nICclcyciLCB0aGlzLCBtZXNzYWdlLnV0Zjgo
KS5kYXRhKCkpOwogICAgIGlmIChtX3N0YXRlID09IENPTk5FQ1RJTkcpIHsKICAgICAgICAgZWMg
PSBJTlZBTElEX1NUQVRFX0VSUjsKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMzE2LDcgKzMx
Niw3IEBAIGJvb2wgV2ViU29ja2V0OjpzZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgRXhjZXB0
aW9uQ29kZSYgZWMpCiAKIGJvb2wgV2ViU29ja2V0OjpzZW5kKEFycmF5QnVmZmVyKiBiaW5hcnlE
YXRhLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKLSAgICBMT0coTmV0d29yaywgIldlYlNvY2tldCAl
cCBzZW5kIGFycmF5YnVmZmVyICVwIiwgdGhpcywgYmluYXJ5RGF0YSk7CisgICAgTE9HKE5ldHdv
cmssICJXZWJTb2NrZXQgJXAgc2VuZCgpIFNlbmRpbmcgQXJyYXlCdWZmZXIgJXAiLCB0aGlzLCBi
aW5hcnlEYXRhKTsKICAgICBBU1NFUlQoYmluYXJ5RGF0YSk7CiAgICAgaWYgKG1fc3RhdGUgPT0g
Q09OTkVDVElORykgewogICAgICAgICBlYyA9IElOVkFMSURfU1RBVEVfRVJSOwpAQCAtMzM0LDcg
KzMzNCw3IEBAIGJvb2wgV2ViU29ja2V0OjpzZW5kKEFycmF5QnVmZmVyKiBiaW5hcnlEYXRhLCBF
eGNlcHRpb25Db2RlJiBlYykKIAogYm9vbCBXZWJTb2NrZXQ6OnNlbmQoQXJyYXlCdWZmZXJWaWV3
KiBhcnJheUJ1ZmZlclZpZXcsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewotICAgIExPRyhOZXR3b3Jr
LCAiV2ViU29ja2V0ICVwIHNlbmQgYXJyYXlidWZmZXJ2aWV3ICVwIiwgdGhpcywgYXJyYXlCdWZm
ZXJWaWV3KTsKKyAgICBMT0coTmV0d29yaywgIldlYlNvY2tldCAlcCBzZW5kKCkgU2VuZGluZyBB
cnJheUJ1ZmZlclZpZXcgJXAiLCB0aGlzLCBhcnJheUJ1ZmZlclZpZXcpOwogICAgIEFTU0VSVChh
cnJheUJ1ZmZlclZpZXcpOwogICAgIGlmIChtX3N0YXRlID09IENPTk5FQ1RJTkcpIHsKICAgICAg
ICAgZWMgPSBJTlZBTElEX1NUQVRFX0VSUjsKQEAgLTM1Myw3ICszNTMsNyBAQCBib29sIFdlYlNv
Y2tldDo6c2VuZChBcnJheUJ1ZmZlclZpZXcqIGFycmF5QnVmZmVyVmlldywgRXhjZXB0aW9uQ29k
ZSYgZWMpCiAKIGJvb2wgV2ViU29ja2V0OjpzZW5kKEJsb2IqIGJpbmFyeURhdGEsIEV4Y2VwdGlv
bkNvZGUmIGVjKQogewotICAgIExPRyhOZXR3b3JrLCAiV2ViU29ja2V0ICVwIHNlbmQgYmxvYiAl
cyIsIHRoaXMsIGJpbmFyeURhdGEtPnVybCgpLmVsaWRlZFN0cmluZygpLnV0ZjgoKS5kYXRhKCkp
OworICAgIExPRyhOZXR3b3JrLCAiV2ViU29ja2V0ICVwIHNlbmQoKSBTZW5kaW5nIEJsb2IgJXAi
LCB0aGlzLCBiaW5hcnlEYXRhLT51cmwoKS5lbGlkZWRTdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsK
ICAgICBBU1NFUlQoYmluYXJ5RGF0YSk7CiAgICAgaWYgKG1fc3RhdGUgPT0gQ09OTkVDVElORykg
ewogICAgICAgICBlYyA9IElOVkFMSURfU1RBVEVfRVJSOwpAQCAtMzcyLDkgKzM3Miw5IEBAIGJv
b2wgV2ViU29ja2V0OjpzZW5kKEJsb2IqIGJpbmFyeURhdGEsIEV4Y2VwdGlvbkNvZGUmIGVjKQog
dm9pZCBXZWJTb2NrZXQ6OmNsb3NlKGludCBjb2RlLCBjb25zdCBTdHJpbmcmIHJlYXNvbiwgRXhj
ZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgaWYgKGNvZGUgPT0gV2ViU29ja2V0Q2hhbm5lbDo6Q2xv
c2VFdmVudENvZGVOb3RTcGVjaWZpZWQpCi0gICAgICAgIExPRyhOZXR3b3JrLCAiV2ViU29ja2V0
ICVwIGNsb3NlIHdpdGhvdXQgY29kZSBhbmQgcmVhc29uIiwgdGhpcyk7CisgICAgICAgIExPRyhO
ZXR3b3JrLCAiV2ViU29ja2V0ICVwIGNsb3NlKCkgd2l0aG91dCBjb2RlIGFuZCByZWFzb24iLCB0
aGlzKTsKICAgICBlbHNlIHsKLSAgICAgICAgTE9HKE5ldHdvcmssICJXZWJTb2NrZXQgJXAgY2xv
c2Ugd2l0aCBjb2RlID0gJWQsIHJlYXNvbiA9ICVzIiwgdGhpcywgY29kZSwgcmVhc29uLnV0Zjgo
KS5kYXRhKCkpOworICAgICAgICBMT0coTmV0d29yaywgIldlYlNvY2tldCAlcCBjbG9zZSgpIGNv
ZGU9JWQgcmVhc29uPSclcyciLCB0aGlzLCBjb2RlLCByZWFzb24udXRmOCgpLmRhdGEoKSk7CiAg
ICAgICAgIGlmICghKGNvZGUgPT0gV2ViU29ja2V0Q2hhbm5lbDo6Q2xvc2VFdmVudENvZGVOb3Jt
YWxDbG9zdXJlIHx8IChXZWJTb2NrZXRDaGFubmVsOjpDbG9zZUV2ZW50Q29kZU1pbmltdW1Vc2Vy
RGVmaW5lZCA8PSBjb2RlICYmIGNvZGUgPD0gV2ViU29ja2V0Q2hhbm5lbDo6Q2xvc2VFdmVudENv
ZGVNYXhpbXVtVXNlckRlZmluZWQpKSkgewogICAgICAgICAgICAgZWMgPSBJTlZBTElEX0FDQ0VT
U19FUlI7CiAgICAgICAgICAgICByZXR1cm47CkBAIC00NjEsNyArNDYxLDcgQEAgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogV2ViU29ja2V0OjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QK
IAogdm9pZCBXZWJTb2NrZXQ6OmNvbnRleHREZXN0cm95ZWQoKQogewotICAgIExPRyhOZXR3b3Jr
LCAiV2ViU29ja2V0ICVwIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgZGVzdHJveWVkIiwgdGhpcyk7
CisgICAgTE9HKE5ldHdvcmssICJXZWJTb2NrZXQgJXAgY29udGV4dERlc3Ryb3llZCgpIiwgdGhp
cyk7CiAgICAgQVNTRVJUKCFtX2NoYW5uZWwpOwogICAgIEFTU0VSVChtX3N0YXRlID09IENMT1NF
RCk7CiAgICAgQWN0aXZlRE9NT2JqZWN0Ojpjb250ZXh0RGVzdHJveWVkKCk7CkBAIC00OTgsNyAr
NDk4LDcgQEAgdm9pZCBXZWJTb2NrZXQ6OnN0b3AoKQogCiB2b2lkIFdlYlNvY2tldDo6ZGlkQ29u
bmVjdCgpCiB7Ci0gICAgTE9HKE5ldHdvcmssICJXZWJTb2NrZXQgJXAgZGlkQ29ubmVjdCIsIHRo
aXMpOworICAgIExPRyhOZXR3b3JrLCAiV2ViU29ja2V0ICVwIGRpZENvbm5lY3QoKSIsIHRoaXMp
OwogICAgIGlmIChtX3N0YXRlICE9IENPTk5FQ1RJTkcpIHsKICAgICAgICAgZGlkQ2xvc2UoMCwg
Q2xvc2luZ0hhbmRzaGFrZUluY29tcGxldGUsIFdlYlNvY2tldENoYW5uZWw6OkNsb3NlRXZlbnRD
b2RlQWJub3JtYWxDbG9zdXJlLCAiIik7CiAgICAgICAgIHJldHVybjsKQEAgLTUxMiw3ICs1MTIs
NyBAQCB2b2lkIFdlYlNvY2tldDo6ZGlkQ29ubmVjdCgpCiAKIHZvaWQgV2ViU29ja2V0OjpkaWRS
ZWNlaXZlTWVzc2FnZShjb25zdCBTdHJpbmcmIG1zZykKIHsKLSAgICBMT0coTmV0d29yaywgIldl
YlNvY2tldCAlcCBkaWRSZWNlaXZlTWVzc2FnZSAlcyIsIHRoaXMsIG1zZy51dGY4KCkuZGF0YSgp
KTsKKyAgICBMT0coTmV0d29yaywgIldlYlNvY2tldCAlcCBkaWRSZWNlaXZlTWVzc2FnZSgpIFRl
eHQgbWVzc2FnZSAnJXMnIiwgdGhpcywgbXNnLnV0ZjgoKS5kYXRhKCkpOwogICAgIGlmIChtX3N0
YXRlICE9IE9QRU4gJiYgbV9zdGF0ZSAhPSBDTE9TSU5HKQogICAgICAgICByZXR1cm47CiAgICAg
QVNTRVJUKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7CkBAIC01MjEsNiArNTIxLDcgQEAgdm9p
ZCBXZWJTb2NrZXQ6OmRpZFJlY2VpdmVNZXNzYWdlKGNvbnN0IFN0cmluZyYgbXNnKQogCiB2b2lk
IFdlYlNvY2tldDo6ZGlkUmVjZWl2ZUJpbmFyeURhdGEoUGFzc093blB0cjxWZWN0b3I8Y2hhcj4g
PiBiaW5hcnlEYXRhKQogeworICAgIExPRyhOZXR3b3JrLCAiV2ViU29ja2V0ICVwIGRpZFJlY2Vp
dmVCaW5hcnlEYXRhKCkgJWx1IGJ5dGUgYmluYXJ5IG1lc3NhZ2UiLCB0aGlzLCBiaW5hcnlEYXRh
LT5zaXplKCkpOwogICAgIHN3aXRjaCAobV9iaW5hcnlUeXBlKSB7CiAgICAgY2FzZSBCaW5hcnlU
eXBlQmxvYjogewogICAgICAgICBzaXplX3Qgc2l6ZSA9IGJpbmFyeURhdGEtPnNpemUoKTsKQEAg
LTU0MSwxNCArNTQyLDE0IEBAIHZvaWQgV2ViU29ja2V0OjpkaWRSZWNlaXZlQmluYXJ5RGF0YShQ
YXNzT3duUHRyPFZlY3RvcjxjaGFyPiA+IGJpbmFyeURhdGEpCiAKIHZvaWQgV2ViU29ja2V0Ojpk
aWRSZWNlaXZlTWVzc2FnZUVycm9yKCkKIHsKLSAgICBMT0coTmV0d29yaywgIldlYlNvY2tldCAl
cCBkaWRSZWNlaXZlRXJyb3JNZXNzYWdlIiwgdGhpcyk7CisgICAgTE9HKE5ldHdvcmssICJXZWJT
b2NrZXQgJXAgZGlkUmVjZWl2ZUVycm9yTWVzc2FnZSgpIiwgdGhpcyk7CiAgICAgQVNTRVJUKHNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7CiAgICAgZGlzcGF0Y2hFdmVudChFdmVudDo6Y3JlYXRl
KGV2ZW50TmFtZXMoKS5lcnJvckV2ZW50LCBmYWxzZSwgZmFsc2UpKTsKIH0KIAogdm9pZCBXZWJT
b2NrZXQ6OmRpZFVwZGF0ZUJ1ZmZlcmVkQW1vdW50KHVuc2lnbmVkIGxvbmcgYnVmZmVyZWRBbW91
bnQpCiB7Ci0gICAgTE9HKE5ldHdvcmssICJXZWJTb2NrZXQgJXAgZGlkVXBkYXRlQnVmZmVyZWRB
bW91bnQgJWx1IiwgdGhpcywgYnVmZmVyZWRBbW91bnQpOworICAgIExPRyhOZXR3b3JrLCAiV2Vi
U29ja2V0ICVwIGRpZFVwZGF0ZUJ1ZmZlcmVkQW1vdW50KCkgTmV3IGJ1ZmZlcmVkQW1vdW50IGlz
ICVsdSIsIHRoaXMsIGJ1ZmZlcmVkQW1vdW50KTsKICAgICBpZiAobV9zdGF0ZSA9PSBDTE9TRUQp
CiAgICAgICAgIHJldHVybjsKICAgICBtX2J1ZmZlcmVkQW1vdW50ID0gYnVmZmVyZWRBbW91bnQ7
CkBAIC01NTYsMTMgKzU1NywxMyBAQCB2b2lkIFdlYlNvY2tldDo6ZGlkVXBkYXRlQnVmZmVyZWRB
bW91bnQodW5zaWduZWQgbG9uZyBidWZmZXJlZEFtb3VudCkKIAogdm9pZCBXZWJTb2NrZXQ6OmRp
ZFN0YXJ0Q2xvc2luZ0hhbmRzaGFrZSgpCiB7Ci0gICAgTE9HKE5ldHdvcmssICJXZWJTb2NrZXQg
JXAgZGlkU3RhcnRDbG9zaW5nSGFuZHNoYWtlIiwgdGhpcyk7CisgICAgTE9HKE5ldHdvcmssICJX
ZWJTb2NrZXQgJXAgZGlkU3RhcnRDbG9zaW5nSGFuZHNoYWtlKCkiLCB0aGlzKTsKICAgICBtX3N0
YXRlID0gQ0xPU0lORzsKIH0KIAogdm9pZCBXZWJTb2NrZXQ6OmRpZENsb3NlKHVuc2lnbmVkIGxv
bmcgdW5oYW5kbGVkQnVmZmVyZWRBbW91bnQsIENsb3NpbmdIYW5kc2hha2VDb21wbGV0aW9uU3Rh
dHVzIGNsb3NpbmdIYW5kc2hha2VDb21wbGV0aW9uLCB1bnNpZ25lZCBzaG9ydCBjb2RlLCBjb25z
dCBTdHJpbmcmIHJlYXNvbikKIHsKLSAgICBMT0coTmV0d29yaywgIldlYlNvY2tldCAlcCBkaWRD
bG9zZSIsIHRoaXMpOworICAgIExPRyhOZXR3b3JrLCAiV2ViU29ja2V0ICVwIGRpZENsb3NlKCki
LCB0aGlzKTsKICAgICBpZiAoIW1fY2hhbm5lbCkKICAgICAgICAgcmV0dXJuOwogICAgIGJvb2wg
d2FzQ2xlYW4gPSBtX3N0YXRlID09IENMT1NJTkcgJiYgIXVuaGFuZGxlZEJ1ZmZlcmVkQW1vdW50
ICYmIGNsb3NpbmdIYW5kc2hha2VDb21wbGV0aW9uID09IENsb3NpbmdIYW5kc2hha2VDb21wbGV0
ZSAmJiBjb2RlICE9IFdlYlNvY2tldENoYW5uZWw6OkNsb3NlRXZlbnRDb2RlQWJub3JtYWxDbG9z
dXJlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNv
Y2tldENoYW5uZWwuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNv
Y2tldENoYW5uZWwuY3BwCmluZGV4IDViNDVlMWE0MWY4MWNlOWUyNjhjNmM0YzU1ZDg5OTI0Mjlk
NjcxZGIuLmQxYWYxOWZkOWM4MDY3ZjNhMDFiMzcyNTcyYjM1YjcwOWM3YmFjMzYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5l
bC5jcHAKQEAgLTEwMCw3ICsxMDAsNyBAQCBXZWJTb2NrZXRDaGFubmVsOjp+V2ViU29ja2V0Q2hh
bm5lbCgpCiAKIHZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6Y29ubmVjdChjb25zdCBLVVJMJiB1cmws
IGNvbnN0IFN0cmluZyYgcHJvdG9jb2wpCiB7Ci0gICAgTE9HKE5ldHdvcmssICJXZWJTb2NrZXRD
aGFubmVsICVwIGNvbm5lY3QiLCB0aGlzKTsKKyAgICBMT0coTmV0d29yaywgIldlYlNvY2tldENo
YW5uZWwgJXAgY29ubmVjdCgpIiwgdGhpcyk7CiAgICAgQVNTRVJUKCFtX2hhbmRsZSk7CiAgICAg
QVNTRVJUKCFtX3N1c3BlbmRlZCk7CiAgICAgbV9oYW5kc2hha2UgPSBhZG9wdFB0cihuZXcgV2Vi
U29ja2V0SGFuZHNoYWtlKHVybCwgcHJvdG9jb2wsIG1fZG9jdW1lbnQpKTsKQEAgLTExNSw3ICsx
MTUsNyBAQCB2b2lkIFdlYlNvY2tldENoYW5uZWw6OmNvbm5lY3QoY29uc3QgS1VSTCYgdXJsLCBj
b25zdCBTdHJpbmcmIHByb3RvY29sKQogCiBTdHJpbmcgV2ViU29ja2V0Q2hhbm5lbDo6c3VicHJv
dG9jb2woKQogewotICAgIExPRyhOZXR3b3JrLCAiV2ViU29ja2V0Q2hhbm5lbCAlcCBzdWJwcm90
b2NvbCIsIHRoaXMpOworICAgIExPRyhOZXR3b3JrLCAiV2ViU29ja2V0Q2hhbm5lbCAlcCBzdWJw
cm90b2NvbCgpIiwgdGhpcyk7CiAgICAgaWYgKCFtX2hhbmRzaGFrZSB8fCBtX2hhbmRzaGFrZS0+
bW9kZSgpICE9IFdlYlNvY2tldEhhbmRzaGFrZTo6Q29ubmVjdGVkKQogICAgICAgICByZXR1cm4g
IiI7CiAgICAgU3RyaW5nIHNlcnZlclByb3RvY29sID0gbV9oYW5kc2hha2UtPnNlcnZlcldlYlNv
Y2tldFByb3RvY29sKCk7CkBAIC0xMjYsNyArMTI2LDcgQEAgU3RyaW5nIFdlYlNvY2tldENoYW5u
ZWw6OnN1YnByb3RvY29sKCkKIAogU3RyaW5nIFdlYlNvY2tldENoYW5uZWw6OmV4dGVuc2lvbnMo
KQogewotICAgIExPRyhOZXR3b3JrLCAiV2ViU29ja2V0Q2hhbm5lbCAlcCBleHRlbnNpb25zIiwg
dGhpcyk7CisgICAgTE9HKE5ldHdvcmssICJXZWJTb2NrZXRDaGFubmVsICVwIGV4dGVuc2lvbnMo
KSIsIHRoaXMpOwogICAgIGlmICghbV9oYW5kc2hha2UgfHwgbV9oYW5kc2hha2UtPm1vZGUoKSAh
PSBXZWJTb2NrZXRIYW5kc2hha2U6OkNvbm5lY3RlZCkKICAgICAgICAgcmV0dXJuICIiOwogICAg
IFN0cmluZyBleHRlbnNpb25zID0gbV9oYW5kc2hha2UtPmFjY2VwdGVkRXh0ZW5zaW9ucygpOwpA
QCAtMTM3LDcgKzEzNyw3IEBAIFN0cmluZyBXZWJTb2NrZXRDaGFubmVsOjpleHRlbnNpb25zKCkK
IAogVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OlNlbmRSZXN1bHQgV2ViU29ja2V0Q2hhbm5l
bDo6c2VuZChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiB7Ci0gICAgTE9HKE5ldHdvcmssICJXZWJT
b2NrZXRDaGFubmVsICVwIHNlbmQgJXMiLCB0aGlzLCBtZXNzYWdlLnV0ZjgoKS5kYXRhKCkpOwor
ICAgIExPRyhOZXR3b3JrLCAiV2ViU29ja2V0Q2hhbm5lbCAlcCBzZW5kKCkgU2VuZGluZyBTdHJp
bmcgJyVzJyIsIHRoaXMsIG1lc3NhZ2UudXRmOCgpLmRhdGEoKSk7CiAgICAgQ1N0cmluZyB1dGY4
ID0gbWVzc2FnZS51dGY4KFN0cmluZzo6U3RyaWN0Q29udmVyc2lvblJlcGxhY2luZ1VucGFpcmVk
U3Vycm9nYXRlc1dpdGhGRkZEKTsKICAgICBlbnF1ZXVlVGV4dEZyYW1lKHV0ZjgpOwogICAgIC8v
IEFjY29yZGluZyB0byBXZWJTb2NrZXQgQVBJIHNwZWNpZmljYXRpb24sIFdlYlNvY2tldC5zZW5k
KCkgc2hvdWxkIHJldHVybiB2b2lkIGluc3RlYWQKQEAgLTE1MSwyOCArMTUxLDI4IEBAIFRocmVh
ZGFibGVXZWJTb2NrZXRDaGFubmVsOjpTZW5kUmVzdWx0IFdlYlNvY2tldENoYW5uZWw6OnNlbmQo
Y29uc3QgU3RyaW5nJiBtZXNzCiAKIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpTZW5kUmVz
dWx0IFdlYlNvY2tldENoYW5uZWw6OnNlbmQoY29uc3QgQXJyYXlCdWZmZXImIGJpbmFyeURhdGEs
IHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGJ5dGVMZW5ndGgpCiB7Ci0gICAgTE9HKE5l
dHdvcmssICJXZWJTb2NrZXRDaGFubmVsICVwIHNlbmQgYXJyYXlidWZmZXIgJXAgJXUgJXUiLCB0
aGlzLCAmYmluYXJ5RGF0YSwgYnl0ZU9mZnNldCwgYnl0ZUxlbmd0aCk7CisgICAgTE9HKE5ldHdv
cmssICJXZWJTb2NrZXRDaGFubmVsICVwIHNlbmQoKSBTZW5kaW5nIEFycmF5QnVmZmVyICVwIGJ5
dGVPZmZzZXQ9JXUgYnl0ZUxlbmd0aD0ldSIsIHRoaXMsICZiaW5hcnlEYXRhLCBieXRlT2Zmc2V0
LCBieXRlTGVuZ3RoKTsKICAgICBlbnF1ZXVlUmF3RnJhbWUoV2ViU29ja2V0RnJhbWU6Ok9wQ29k
ZUJpbmFyeSwgc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KGJpbmFyeURhdGEuZGF0YSgpKSArIGJ5
dGVPZmZzZXQsIGJ5dGVMZW5ndGgpOwogICAgIHJldHVybiBUaHJlYWRhYmxlV2ViU29ja2V0Q2hh
bm5lbDo6U2VuZFN1Y2Nlc3M7CiB9CiAKIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpTZW5k
UmVzdWx0IFdlYlNvY2tldENoYW5uZWw6OnNlbmQoY29uc3QgQmxvYiYgYmluYXJ5RGF0YSkKIHsK
LSAgICBMT0coTmV0d29yaywgIldlYlNvY2tldENoYW5uZWwgJXAgc2VuZCBibG9iICVzIiwgdGhp
cywgYmluYXJ5RGF0YS51cmwoKS5lbGlkZWRTdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICBM
T0coTmV0d29yaywgIldlYlNvY2tldENoYW5uZWwgJXAgc2VuZCgpIFNlbmRpbmcgQmxvYiAnJXMn
IiwgdGhpcywgYmluYXJ5RGF0YS51cmwoKS5lbGlkZWRTdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsK
ICAgICBlbnF1ZXVlQmxvYkZyYW1lKFdlYlNvY2tldEZyYW1lOjpPcENvZGVCaW5hcnksIGJpbmFy
eURhdGEpOwogICAgIHJldHVybiBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6U2VuZFN1Y2Nl
c3M7CiB9CiAKIGJvb2wgV2ViU29ja2V0Q2hhbm5lbDo6c2VuZChjb25zdCBjaGFyKiBkYXRhLCBp
bnQgbGVuZ3RoKQogewotICAgIExPRyhOZXR3b3JrLCAiV2ViU29ja2V0Q2hhbm5lbCAlcCBzZW5k
IGJpbmFyeSAlcCAoJWRCKSIsIHRoaXMsIGRhdGEsIGxlbmd0aCk7CisgICAgTE9HKE5ldHdvcmss
ICJXZWJTb2NrZXRDaGFubmVsICVwIHNlbmQoKSBTZW5kaW5nIGNoYXIqIGRhdGE9JXAgbGVuZ3Ro
PSVkIiwgdGhpcywgZGF0YSwgbGVuZ3RoKTsKICAgICBlbnF1ZXVlUmF3RnJhbWUoV2ViU29ja2V0
RnJhbWU6Ok9wQ29kZUJpbmFyeSwgZGF0YSwgbGVuZ3RoKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0K
IAogdW5zaWduZWQgbG9uZyBXZWJTb2NrZXRDaGFubmVsOjpidWZmZXJlZEFtb3VudCgpIGNvbnN0
CiB7Ci0gICAgTE9HKE5ldHdvcmssICJXZWJTb2NrZXRDaGFubmVsICVwIGJ1ZmZlcmVkQW1vdW50
IiwgdGhpcyk7CisgICAgTE9HKE5ldHdvcmssICJXZWJTb2NrZXRDaGFubmVsICVwIGJ1ZmZlcmVk
QW1vdW50KCkiLCB0aGlzKTsKICAgICBBU1NFUlQobV9oYW5kbGUpOwogICAgIEFTU0VSVCghbV9z
dXNwZW5kZWQpOwogICAgIHJldHVybiBtX2hhbmRsZS0+YnVmZmVyZWRBbW91bnQoKTsKQEAgLTE4
MCw3ICsxODAsNyBAQCB1bnNpZ25lZCBsb25nIFdlYlNvY2tldENoYW5uZWw6OmJ1ZmZlcmVkQW1v
dW50KCkgY29uc3QKIAogdm9pZCBXZWJTb2NrZXRDaGFubmVsOjpjbG9zZShpbnQgY29kZSwgY29u
c3QgU3RyaW5nJiByZWFzb24pCiB7Ci0gICAgTE9HKE5ldHdvcmssICJXZWJTb2NrZXRDaGFubmVs
ICVwIGNsb3NlIiwgdGhpcyk7CisgICAgTE9HKE5ldHdvcmssICJXZWJTb2NrZXRDaGFubmVsICVw
IGNsb3NlKCkgY29kZT0lZCByZWFzb249JyVzJyIsIHRoaXMsIGNvZGUsIHJlYXNvbi51dGY4KCku
ZGF0YSgpKTsKICAgICBBU1NFUlQoIW1fc3VzcGVuZGVkKTsKICAgICBpZiAoIW1faGFuZGxlKQog
ICAgICAgICByZXR1cm47CkBAIC0xOTEsNyArMTkxLDcgQEAgdm9pZCBXZWJTb2NrZXRDaGFubmVs
OjpjbG9zZShpbnQgY29kZSwgY29uc3QgU3RyaW5nJiByZWFzb24pCiAKIHZvaWQgV2ViU29ja2V0
Q2hhbm5lbDo6ZmFpbChjb25zdCBTdHJpbmcmIHJlYXNvbikKIHsKLSAgICBMT0coTmV0d29yaywg
IldlYlNvY2tldENoYW5uZWwgJXAgZmFpbDogJXMiLCB0aGlzLCByZWFzb24udXRmOCgpLmRhdGEo
KSk7CisgICAgTE9HKE5ldHdvcmssICJXZWJTb2NrZXRDaGFubmVsICVwIGZhaWwoKSByZWFzb249
JyVzJyIsIHRoaXMsIHJlYXNvbi51dGY4KCkuZGF0YSgpKTsKICAgICBBU1NFUlQoIW1fc3VzcGVu
ZGVkKTsKICAgICBpZiAobV9kb2N1bWVudCkgewogICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb246OmRpZFJlY2VpdmVXZWJTb2NrZXRGcmFtZUVycm9yKG1fZG9jdW1lbnQsIG1faWRlbnRp
ZmllciwgcmVhc29uKTsKQEAgLTIxNSw3ICsyMTUsNyBAQCB2b2lkIFdlYlNvY2tldENoYW5uZWw6
OmZhaWwoY29uc3QgU3RyaW5nJiByZWFzb24pCiAKIHZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6ZGlz
Y29ubmVjdCgpCiB7Ci0gICAgTE9HKE5ldHdvcmssICJXZWJTb2NrZXRDaGFubmVsICVwIGRpc2Nv
bm5lY3QiLCB0aGlzKTsKKyAgICBMT0coTmV0d29yaywgIldlYlNvY2tldENoYW5uZWwgJXAgZGlz
Y29ubmVjdCgpIiwgdGhpcyk7CiAgICAgaWYgKG1faWRlbnRpZmllciAmJiBtX2RvY3VtZW50KQog
ICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZENsb3NlV2ViU29ja2V0KG1fZG9j
dW1lbnQsIG1faWRlbnRpZmllcik7CiAgICAgaWYgKG1faGFuZHNoYWtlKQpAQCAtMjQwLDcgKzI0
MCw3IEBAIHZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6cmVzdW1lKCkKIAogdm9pZCBXZWJTb2NrZXRD
aGFubmVsOjp3aWxsT3BlblNvY2tldFN0cmVhbShTb2NrZXRTdHJlYW1IYW5kbGUqIGhhbmRsZSkK
IHsKLSAgICBMT0coTmV0d29yaywgIldlYlNvY2tldENoYW5uZWwgJXAgd2lsbE9wZW5zb2NrZXRT
dHJlYW0iLCB0aGlzKTsKKyAgICBMT0coTmV0d29yaywgIldlYlNvY2tldENoYW5uZWwgJXAgd2ls
bE9wZW5Tb2NrZXRTdHJlYW0oKSIsIHRoaXMpOwogICAgIEFTU0VSVChoYW5kbGUpOwogICAgIGlm
IChtX2RvY3VtZW50LT5mcmFtZSgpKQogICAgICAgICBtX2RvY3VtZW50LT5mcmFtZSgpLT5sb2Fk
ZXIoKS0+Y2xpZW50KCktPmRpc3BhdGNoV2lsbE9wZW5Tb2NrZXRTdHJlYW0oaGFuZGxlKTsKQEAg
LTI0OCw3ICsyNDgsNyBAQCB2b2lkIFdlYlNvY2tldENoYW5uZWw6OndpbGxPcGVuU29ja2V0U3Ry
ZWFtKFNvY2tldFN0cmVhbUhhbmRsZSogaGFuZGxlKQogCiB2b2lkIFdlYlNvY2tldENoYW5uZWw6
OmRpZE9wZW5Tb2NrZXRTdHJlYW0oU29ja2V0U3RyZWFtSGFuZGxlKiBoYW5kbGUpCiB7Ci0gICAg
TE9HKE5ldHdvcmssICJXZWJTb2NrZXRDaGFubmVsICVwIGRpZE9wZW5Tb2NrZXRTdHJlYW0iLCB0
aGlzKTsKKyAgICBMT0coTmV0d29yaywgIldlYlNvY2tldENoYW5uZWwgJXAgZGlkT3BlblNvY2tl
dFN0cmVhbSgpIiwgdGhpcyk7CiAgICAgQVNTRVJUKGhhbmRsZSA9PSBtX2hhbmRsZSk7CiAgICAg
aWYgKCFtX2RvY3VtZW50KQogICAgICAgICByZXR1cm47CkBAIC0yNjEsNyArMjYxLDcgQEAgdm9p
ZCBXZWJTb2NrZXRDaGFubmVsOjpkaWRPcGVuU29ja2V0U3RyZWFtKFNvY2tldFN0cmVhbUhhbmRs
ZSogaGFuZGxlKQogCiB2b2lkIFdlYlNvY2tldENoYW5uZWw6OmRpZENsb3NlU29ja2V0U3RyZWFt
KFNvY2tldFN0cmVhbUhhbmRsZSogaGFuZGxlKQogewotICAgIExPRyhOZXR3b3JrLCAiV2ViU29j
a2V0Q2hhbm5lbCAlcCBkaWRDbG9zZVNvY2tldFN0cmVhbSIsIHRoaXMpOworICAgIExPRyhOZXR3
b3JrLCAiV2ViU29ja2V0Q2hhbm5lbCAlcCBkaWRDbG9zZVNvY2tldFN0cmVhbSgpIiwgdGhpcyk7
CiAgICAgaWYgKG1faWRlbnRpZmllciAmJiBtX2RvY3VtZW50KQogICAgICAgICBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb246OmRpZENsb3NlV2ViU29ja2V0KG1fZG9jdW1lbnQsIG1faWRlbnRpZmll
cik7CiAgICAgQVNTRVJUX1VOVVNFRChoYW5kbGUsIGhhbmRsZSA9PSBtX2hhbmRsZSB8fCAhbV9o
YW5kbGUpOwpAQCAtMjg2LDcgKzI4Niw3IEBAIHZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6ZGlkQ2xv
c2VTb2NrZXRTdHJlYW0oU29ja2V0U3RyZWFtSGFuZGxlKiBoYW5kbGUpCiAKIHZvaWQgV2ViU29j
a2V0Q2hhbm5lbDo6ZGlkUmVjZWl2ZVNvY2tldFN0cmVhbURhdGEoU29ja2V0U3RyZWFtSGFuZGxl
KiBoYW5kbGUsIGNvbnN0IGNoYXIqIGRhdGEsIGludCBsZW4pCiB7Ci0gICAgTE9HKE5ldHdvcmss
ICJXZWJTb2NrZXRDaGFubmVsICVwIGRpZFJlY2VpdmVTb2NrZXRTdHJlYW1EYXRhICVkIiwgdGhp
cywgbGVuKTsKKyAgICBMT0coTmV0d29yaywgIldlYlNvY2tldENoYW5uZWwgJXAgZGlkUmVjZWl2
ZVNvY2tldFN0cmVhbURhdGEoKSBSZWNlaXZlZCAlZCBieXRlcyIsIHRoaXMsIGxlbik7CiAgICAg
UmVmUHRyPFdlYlNvY2tldENoYW5uZWw+IHByb3RlY3QodGhpcyk7IC8vIFRoZSBjbGllbnQgY2Fu
IGNsb3NlIHRoZSBjaGFubmVsLCBwb3RlbnRpYWxseSByZW1vdmluZyB0aGUgbGFzdCByZWZlcmVu
Y2UuCiAgICAgQVNTRVJUKGhhbmRsZSA9PSBtX2hhbmRsZSk7CiAgICAgaWYgKCFtX2RvY3VtZW50
KSB7CkBAIC0zMjEsNyArMzIxLDcgQEAgdm9pZCBXZWJTb2NrZXRDaGFubmVsOjpkaWRVcGRhdGVC
dWZmZXJlZEFtb3VudChTb2NrZXRTdHJlYW1IYW5kbGUqLCBzaXplX3QgYnVmZmUKIAogdm9pZCBX
ZWJTb2NrZXRDaGFubmVsOjpkaWRGYWlsU29ja2V0U3RyZWFtKFNvY2tldFN0cmVhbUhhbmRsZSog
aGFuZGxlLCBjb25zdCBTb2NrZXRTdHJlYW1FcnJvciYgZXJyb3IpCiB7Ci0gICAgTE9HKE5ldHdv
cmssICJXZWJTb2NrZXRDaGFubmVsICVwIGRpZEZhaWxTb2NrZXRTdHJlYW0iLCB0aGlzKTsKKyAg
ICBMT0coTmV0d29yaywgIldlYlNvY2tldENoYW5uZWwgJXAgZGlkRmFpbFNvY2tldFN0cmVhbSgp
IiwgdGhpcyk7CiAgICAgQVNTRVJUKGhhbmRsZSA9PSBtX2hhbmRsZSB8fCAhbV9oYW5kbGUpOwog
ICAgIGlmIChtX2RvY3VtZW50KSB7CiAgICAgICAgIFN0cmluZyBtZXNzYWdlOwpAQCAtMzQ5LDIx
ICszNDksMjEgQEAgdm9pZCBXZWJTb2NrZXRDaGFubmVsOjpkaWRDYW5jZWxBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZShTb2NrZXRTdHJlYW1IYW5kbGUqLCBjb24KICNpZiBFTkFCTEUoQkxPQikKIHZv
aWQgV2ViU29ja2V0Q2hhbm5lbDo6ZGlkU3RhcnRMb2FkaW5nKCkKIHsKLSAgICBMT0coTmV0d29y
aywgIldlYlNvY2tldENoYW5uZWwgJXAgZGlkU3RhcnRMb2FkaW5nIiwgdGhpcyk7CisgICAgTE9H
KE5ldHdvcmssICJXZWJTb2NrZXRDaGFubmVsICVwIGRpZFN0YXJ0TG9hZGluZygpIiwgdGhpcyk7
CiAgICAgQVNTRVJUKG1fYmxvYkxvYWRlcik7CiAgICAgQVNTRVJUKG1fYmxvYkxvYWRlclN0YXR1
cyA9PSBCbG9iTG9hZGVyU3RhcnRlZCk7CiB9CiAKIHZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6ZGlk
UmVjZWl2ZURhdGEoKQogewotICAgIExPRyhOZXR3b3JrLCAiV2ViU29ja2V0Q2hhbm5lbCAlcCBk
aWRSZWNlaXZlRGF0YSIsIHRoaXMpOworICAgIExPRyhOZXR3b3JrLCAiV2ViU29ja2V0Q2hhbm5l
bCAlcCBkaWRSZWNlaXZlRGF0YSgpIiwgdGhpcyk7CiAgICAgQVNTRVJUKG1fYmxvYkxvYWRlcik7
CiAgICAgQVNTRVJUKG1fYmxvYkxvYWRlclN0YXR1cyA9PSBCbG9iTG9hZGVyU3RhcnRlZCk7CiB9
CiAKIHZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6ZGlkRmluaXNoTG9hZGluZygpCiB7Ci0gICAgTE9H
KE5ldHdvcmssICJXZWJTb2NrZXRDaGFubmVsICVwIGRpZEZpbmlzaExvYWRpbmciLCB0aGlzKTsK
KyAgICBMT0coTmV0d29yaywgIldlYlNvY2tldENoYW5uZWwgJXAgZGlkRmluaXNoTG9hZGluZygp
IiwgdGhpcyk7CiAgICAgQVNTRVJUKG1fYmxvYkxvYWRlcik7CiAgICAgQVNTRVJUKG1fYmxvYkxv
YWRlclN0YXR1cyA9PSBCbG9iTG9hZGVyU3RhcnRlZCk7CiAgICAgbV9ibG9iTG9hZGVyU3RhdHVz
ID0gQmxvYkxvYWRlckZpbmlzaGVkOwpAQCAtMzczLDcgKzM3Myw3IEBAIHZvaWQgV2ViU29ja2V0
Q2hhbm5lbDo6ZGlkRmluaXNoTG9hZGluZygpCiAKIHZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6ZGlk
RmFpbChpbnQgZXJyb3JDb2RlKQogewotICAgIExPRyhOZXR3b3JrLCAiV2ViU29ja2V0Q2hhbm5l
bCAlcCBkaWRGYWlsICVkIiwgdGhpcywgZXJyb3JDb2RlKTsKKyAgICBMT0coTmV0d29yaywgIldl
YlNvY2tldENoYW5uZWwgJXAgZGlkRmFpbCgpIGVycm9yQ29kZT0lZCIsIHRoaXMsIGVycm9yQ29k
ZSk7CiAgICAgQVNTRVJUKG1fYmxvYkxvYWRlcik7CiAgICAgQVNTRVJUKG1fYmxvYkxvYWRlclN0
YXR1cyA9PSBCbG9iTG9hZGVyU3RhcnRlZCk7CiAgICAgbV9ibG9iTG9hZGVyLmNsZWFyKCk7CkBA
IC0zODcsNyArMzg3LDcgQEAgYm9vbCBXZWJTb2NrZXRDaGFubmVsOjphcHBlbmRUb0J1ZmZlcihj
b25zdCBjaGFyKiBkYXRhLCBzaXplX3QgbGVuKQogewogICAgIHNpemVfdCBuZXdCdWZmZXJTaXpl
ID0gbV9idWZmZXIuc2l6ZSgpICsgbGVuOwogICAgIGlmIChuZXdCdWZmZXJTaXplIDwgbV9idWZm
ZXIuc2l6ZSgpKSB7Ci0gICAgICAgIExPRyhOZXR3b3JrLCAiV2ViU29ja2V0IGJ1ZmZlciBvdmVy
ZmxvdyAoJWx1KyVsdSkiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nPihtX2J1ZmZlci5zaXpl
KCkpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nPihsZW4pKTsKKyAgICAgICAgTE9HKE5ldHdv
cmssICJXZWJTb2NrZXRDaGFubmVsICVwIGFwcGVuZFRvQnVmZmVyIEJ1ZmZlciBvdmVyZmxvdyAo
JWx1IGJ5dGVzIGFscmVhZHkgaW4gcmVjZWl2ZSBidWZmZXIgYW5kIGFwcGVuZGluZyAlbHUgYnl0
ZXMpIiwgdGhpcywgc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZz4obV9idWZmZXIuc2l6ZSgpKSwg
c3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZz4obGVuKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICB9CiAgICAgbV9idWZmZXIuYXBwZW5kKGRhdGEsIGxlbik7CkBAIC00MDYsNyArNDA2LDcg
QEAgYm9vbCBXZWJTb2NrZXRDaGFubmVsOjpwcm9jZXNzQnVmZmVyKCkKICAgICBBU1NFUlQoIW1f
c3VzcGVuZGVkKTsKICAgICBBU1NFUlQobV9jbGllbnQpOwogICAgIEFTU0VSVCghbV9idWZmZXIu
aXNFbXB0eSgpKTsKLSAgICBMT0coTmV0d29yaywgIldlYlNvY2tldENoYW5uZWwgJXAgcHJvY2Vz
c0J1ZmZlciAlbHUiLCB0aGlzLCBzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nPihtX2J1ZmZlci5z
aXplKCkpKTsKKyAgICBMT0coTmV0d29yaywgIldlYlNvY2tldENoYW5uZWwgJXAgcHJvY2Vzc0J1
ZmZlcigpIFJlY2VpdmUgYnVmZmVyIGhhcyAlbHUgYnl0ZXMiLCB0aGlzLCBzdGF0aWNfY2FzdDx1
bnNpZ25lZCBsb25nPihtX2J1ZmZlci5zaXplKCkpKTsKIAogICAgIGlmIChtX3Nob3VsZERpc2Nh
cmRSZWNlaXZlZERhdGEpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTQzMiwxNCArNDMyLDE0
IEBAIGJvb2wgV2ViU29ja2V0Q2hhbm5lbDo6cHJvY2Vzc0J1ZmZlcigpCiAgICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgfQogICAgICAgICAgICAgLy8gRklYTUU6IGhhbmRsZSBzZXQtY29v
a2llMi4KLSAgICAgICAgICAgIExPRyhOZXR3b3JrLCAiV2ViU29ja2V0Q2hhbm5lbCAlcCBjb25u
ZWN0ZWQiLCB0aGlzKTsKKyAgICAgICAgICAgIExPRyhOZXR3b3JrLCAiV2ViU29ja2V0Q2hhbm5l
bCAlcCBDb25uZWN0ZWQiLCB0aGlzKTsKICAgICAgICAgICAgIHNraXBCdWZmZXIoaGVhZGVyTGVu
Z3RoKTsKICAgICAgICAgICAgIG1fY2xpZW50LT5kaWRDb25uZWN0KCk7Ci0gICAgICAgICAgICBM
T0coTmV0d29yaywgInJlbWFpbmluZyBpbiByZWFkIGJ1ZiAlbHUiLCBzdGF0aWNfY2FzdDx1bnNp
Z25lZCBsb25nPihtX2J1ZmZlci5zaXplKCkpKTsKKyAgICAgICAgICAgIExPRyhOZXR3b3JrLCAi
V2ViU29ja2V0Q2hhbm5lbCAlcCAlbHUgYnl0ZXMgcmVtYWluaW5nIGluIG1fYnVmZmVyIiwgdGhp
cywgc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZz4obV9idWZmZXIuc2l6ZSgpKSk7CiAgICAgICAg
ICAgICByZXR1cm4gIW1fYnVmZmVyLmlzRW1wdHkoKTsKICAgICAgICAgfQogICAgICAgICBBU1NF
UlQobV9oYW5kc2hha2UtPm1vZGUoKSA9PSBXZWJTb2NrZXRIYW5kc2hha2U6OkZhaWxlZCk7Ci0g
ICAgICAgIExPRyhOZXR3b3JrLCAiV2ViU29ja2V0Q2hhbm5lbCAlcCBjb25uZWN0aW9uIGZhaWxl
ZCIsIHRoaXMpOworICAgICAgICBMT0coTmV0d29yaywgIldlYlNvY2tldENoYW5uZWwgJXAgQ29u
bmVjdGlvbiBmYWlsZWQiLCB0aGlzKTsKICAgICAgICAgc2tpcEJ1ZmZlcihoZWFkZXJMZW5ndGgp
OwogICAgICAgICBtX3Nob3VsZERpc2NhcmRSZWNlaXZlZERhdGEgPSB0cnVlOwogICAgICAgICBm
YWlsKG1faGFuZHNoYWtlLT5mYWlsdXJlUmVhc29uKCkpOwpAQCAtNDY1LDcgKzQ2NSw3IEBAIHZv
aWQgV2ViU29ja2V0Q2hhbm5lbDo6cmVzdW1lVGltZXJGaXJlZChUaW1lcjxXZWJTb2NrZXRDaGFu
bmVsPiogdGltZXIpCiAKIHZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6c3RhcnRDbG9zaW5nSGFuZHNo
YWtlKGludCBjb2RlLCBjb25zdCBTdHJpbmcmIHJlYXNvbikKIHsKLSAgICBMT0coTmV0d29yaywg
IldlYlNvY2tldENoYW5uZWwgJXAgY2xvc2luZyAlZCAlZCIsIHRoaXMsIG1fY2xvc2luZywgbV9y
ZWNlaXZlZENsb3NpbmdIYW5kc2hha2UpOworICAgIExPRyhOZXR3b3JrLCAiV2ViU29ja2V0Q2hh
bm5lbCAlcCBzdGFydENsb3NpbmdIYW5kc2hha2UgY29kZT0lZCBtX3JlY2VpdmVkQ2xvc2luZ0hh
bmRzaGFrZT0lZCIsIHRoaXMsIG1fY2xvc2luZywgbV9yZWNlaXZlZENsb3NpbmdIYW5kc2hha2Up
OwogICAgIGlmIChtX2Nsb3NpbmcpCiAgICAgICAgIHJldHVybjsKICAgICBBU1NFUlQobV9oYW5k
bGUpOwpAQCAtNDg3LDcgKzQ4Nyw3IEBAIHZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6c3RhcnRDbG9z
aW5nSGFuZHNoYWtlKGludCBjb2RlLCBjb25zdCBTdHJpbmcmIHJlYXNvbikKIAogdm9pZCBXZWJT
b2NrZXRDaGFubmVsOjpjbG9zaW5nVGltZXJGaXJlZChUaW1lcjxXZWJTb2NrZXRDaGFubmVsPiog
dGltZXIpCiB7Ci0gICAgTE9HKE5ldHdvcmssICJXZWJTb2NrZXRDaGFubmVsICVwIGNsb3Npbmcg
dGltZXIiLCB0aGlzKTsKKyAgICBMT0coTmV0d29yaywgIldlYlNvY2tldENoYW5uZWwgJXAgY2xv
c2luZ1RpbWVyRmlyZWQoKSIsIHRoaXMpOwogICAgIEFTU0VSVF9VTlVTRUQodGltZXIsICZtX2Ns
b3NpbmdUaW1lciA9PSB0aW1lcik7CiAgICAgaWYgKG1faGFuZGxlKQogICAgICAgICBtX2hhbmRs
ZS0+ZGlzY29ubmVjdCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJz
b2NrZXRzL1dlYlNvY2tldERlZmxhdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
c29ja2V0cy9XZWJTb2NrZXREZWZsYXRlci5jcHAKaW5kZXggYTBjY2VlNTNkYmViYjQ0MGE2MjE2
ZmRkNmVlOWZiOGIzMDY2ODNkNS4uYWVmNGIxZTlkMzMyYjAwN2NjNTkxYTE3NWYxMTNiOTBkODM4
MWFhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNv
Y2tldERlZmxhdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMv
V2ViU29ja2V0RGVmbGF0ZXIuY3BwCkBAIC03MSw3ICs3MSw3IEBAIFdlYlNvY2tldERlZmxhdGVy
Ojp+V2ViU29ja2V0RGVmbGF0ZXIoKQogewogICAgIGludCByZXN1bHQgPSBkZWZsYXRlRW5kKG1f
c3RyZWFtLmdldCgpKTsKICAgICBpZiAocmVzdWx0ICE9IFpfT0spCi0gICAgICAgIExPRyhOZXR3
b3JrLCAiZGVmbGF0ZUVuZCgpIGZhaWxlZDogJWQiLCByZXN1bHQpOworICAgICAgICBMT0coTmV0
d29yaywgIldlYlNvY2tldERlZmxhdGVyICVwIERlc3RydWN0b3IgZGVmbGF0ZUVuZCgpIGZhaWxl
ZDogJWQgaXMgcmV0dXJuZWQiLCB0aGlzLCByZXN1bHQpOwogfQogCiBzdGF0aWMgdm9pZCBzZXRT
dHJlYW1QYXJhbWV0ZXIoel9zdHJlYW0qIHN0cmVhbSwgY29uc3QgY2hhciogaW5wdXREYXRhLCBz
aXplX3QgaW5wdXRMZW5ndGgsIGNoYXIqIG91dHB1dERhdGEsIHNpemVfdCBvdXRwdXRMZW5ndGgp
CkBAIC0xNDgsNyArMTQ4LDcgQEAgV2ViU29ja2V0SW5mbGF0ZXI6On5XZWJTb2NrZXRJbmZsYXRl
cigpCiB7CiAgICAgaW50IHJlc3VsdCA9IGluZmxhdGVFbmQobV9zdHJlYW0uZ2V0KCkpOwogICAg
IGlmIChyZXN1bHQgIT0gWl9PSykKLSAgICAgICAgTE9HKE5ldHdvcmssICJpbmZsYXRlRW5kKCkg
ZmFpbGVkOiAlZCIsIHJlc3VsdCk7CisgICAgICAgIExPRyhOZXR3b3JrLCAiV2ViU29ja2V0SW5m
bGF0ZXIgJXAgRGVzdHJ1Y3RvciBpbmZsYXRlRW5kKCkgZmFpbGVkOiAlZCBpcyByZXR1cm5lZCIs
IHRoaXMsIHJlc3VsdCk7CiB9CiAKIGJvb2wgV2ViU29ja2V0SW5mbGF0ZXI6OmFkZEJ5dGVzKGNv
bnN0IGNoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuY3BwCmluZGV4IGNkYzNi
YzRkZGM5MzJiMzFjMjQ5NDU5Yzk5Y2I3NTQ1Njk5ODkyNTYuLjQ3ZTRlMWYzZmI0MTkyYjZlNTI2
ZTU4ODExMmEwZjdiMjFiNjE3ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuY3BwCkBAIC0yOTYsNyArMjk2LDcg
QEAgaW50IFdlYlNvY2tldEhhbmRzaGFrZTo6cmVhZFNlcnZlckhhbmRzaGFrZShjb25zdCBjaGFy
KiBoZWFkZXIsIHNpemVfdCBsZW4pCiAgICAgICAgIG1fbW9kZSA9IEZhaWxlZDsgLy8gbV9mYWls
dXJlUmVhc29uIGlzIHNldCBpbnNpZGUgcmVhZFN0YXR1c0xpbmUoKS4KICAgICAgICAgcmV0dXJu
IGxlbjsKICAgICB9Ci0gICAgTE9HKE5ldHdvcmssICJyZXNwb25zZSBjb2RlOiAlZCIsIHN0YXR1
c0NvZGUpOworICAgIExPRyhOZXR3b3JrLCAiV2ViU29ja2V0SGFuZHNoYWtlICVwIHJlYWRTZXJ2
ZXJIYW5kc2hha2UoKSBTdGF0dXMgY29kZSBpcyAlZCIsIHRoaXMsIHN0YXR1c0NvZGUpOwogICAg
IG1fcmVzcG9uc2Uuc2V0U3RhdHVzQ29kZShzdGF0dXNDb2RlKTsKICAgICBtX3Jlc3BvbnNlLnNl
dFN0YXR1c1RleHQoc3RhdHVzVGV4dCk7CiAgICAgaWYgKHN0YXR1c0NvZGUgIT0gMTAxKSB7CkBA
IC0zMTIsMTIgKzMxMiwxMiBAQCBpbnQgV2ViU29ja2V0SGFuZHNoYWtlOjpyZWFkU2VydmVySGFu
ZHNoYWtlKGNvbnN0IGNoYXIqIGhlYWRlciwgc2l6ZV90IGxlbikKICAgICB9CiAgICAgY29uc3Qg
Y2hhciogcCA9IHJlYWRIVFRQSGVhZGVycyhoZWFkZXIgKyBsaW5lTGVuZ3RoLCBoZWFkZXIgKyBs
ZW4pOwogICAgIGlmICghcCkgewotICAgICAgICBMT0coTmV0d29yaywgInJlYWRIVFRQSGVhZGVy
cyBmYWlsZWQiKTsKKyAgICAgICAgTE9HKE5ldHdvcmssICJXZWJTb2NrZXRIYW5kc2hha2UgJXAg
cmVhZFNlcnZlckhhbmRzaGFrZSgpIHJlYWRIVFRQSGVhZGVycygpIGZhaWxlZCIsIHRoaXMpOwog
ICAgICAgICBtX21vZGUgPSBGYWlsZWQ7IC8vIG1fZmFpbHVyZVJlYXNvbiBpcyBzZXQgaW5zaWRl
IHJlYWRIVFRQSGVhZGVycygpLgogICAgICAgICByZXR1cm4gbGVuOwogICAgIH0KICAgICBpZiAo
IWNoZWNrUmVzcG9uc2VIZWFkZXJzKCkpIHsKLSAgICAgICAgTE9HKE5ldHdvcmssICJoZWFkZXIg
cHJvY2VzcyBmYWlsZWQiKTsKKyAgICAgICAgTE9HKE5ldHdvcmssICJXZWJTb2NrZXRIYW5kc2hh
a2UgJXAgcmVhZFNlcnZlckhhbmRzaGFrZSgpIGNoZWNrUmVzcG9uc2VIZWFkZXJzKCkgZmFpbGVk
IiwgdGhpcyk7CiAgICAgICAgIG1fbW9kZSA9IEZhaWxlZDsKICAgICAgICAgcmV0dXJuIHAgLSBo
ZWFkZXI7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jaHJvbWl1bS9Tb2NrZXRTdHJlYW1IYW5kbGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jaHJvbWl1bS9Tb2NrZXRTdHJlYW1IYW5kbGUuY3BwCmluZGV4IGQwMzczMjY3
YWRjYjJjMTBjOTk4OTQ0NjFjNGU2NGE4ZGJlMGFkNzYuLmYyNmQ3ODFhZWE3YzQ2YzVjMjhiOTVk
MDY3Y2EzNDYzOWE4MWIyY2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY2hyb21pdW0vU29ja2V0U3RyZWFtSGFuZGxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2Nocm9taXVtL1NvY2tldFN0cmVhbUhhbmRsZS5jcHAKQEAgLTU5
LDcgKzU5LDcgQEAgU29ja2V0U3RyZWFtSGFuZGxlSW50ZXJuYWw6On5Tb2NrZXRTdHJlYW1IYW5k
bGVJbnRlcm5hbCgpCiB2b2lkIFNvY2tldFN0cmVhbUhhbmRsZUludGVybmFsOjpjb25uZWN0KGNv
bnN0IEtVUkwmIHVybCkKIHsKICAgICBtX3NvY2tldCA9IGFkb3B0UHRyKFdlYktpdDo6UGxhdGZv
cm06OmN1cnJlbnQoKS0+Y3JlYXRlU29ja2V0U3RyZWFtSGFuZGxlKCkpOwotICAgIExPRyhOZXR3
b3JrLCAiY29ubmVjdCIpOworICAgIExPRyhOZXR3b3JrLCAiU29ja2V0U3RyZWFtSGFuZGxlSW50
ZXJuYWwgJXAgY29ubmVjdCgpIiwgdGhpcyk7CiAgICAgQVNTRVJUKG1fc29ja2V0KTsKICAgICBB
U1NFUlQobV9oYW5kbGUpOwogICAgIGlmIChtX2hhbmRsZS0+bV9jbGllbnQpCkBAIC02OSwxMiAr
NjksMTIgQEAgdm9pZCBTb2NrZXRTdHJlYW1IYW5kbGVJbnRlcm5hbDo6Y29ubmVjdChjb25zdCBL
VVJMJiB1cmwpCiAKIGludCBTb2NrZXRTdHJlYW1IYW5kbGVJbnRlcm5hbDo6c2VuZChjb25zdCBj
aGFyKiBkYXRhLCBpbnQgbGVuKQogewotICAgIExPRyhOZXR3b3JrLCAic2VuZCBsZW49JWQiLCBs
ZW4pOworICAgIExPRyhOZXR3b3JrLCAiU29ja2V0U3RyZWFtSGFuZGxlSW50ZXJuYWwgJXAgc2Vu
ZCgpIGxlbj0lZCIsIHRoaXMsIGxlbik7CiAgICAgLy8gRklYTUU6IHxtX3NvY2tldHwgc2hvdWxk
IG5vdCBiZSBudWxsIGhlcmUsIGJ1dCBpdCBzZWVtcyB0aGF0IHRoZXJlIGlzIHRoZQogICAgIC8v
IGNhc2UuIFdlIHNob3VsZCBmaWd1cmUgb3V0IHN1Y2ggYSBwYXRoIGFuZCBmaXggaXQgcmF0aGVy
IHRoYW4gY2hlY2tpbmcKICAgICAvLyBudWxsIGhlcmUuCiAgICAgaWYgKCFtX3NvY2tldCkgewot
ICAgICAgICBMT0coTmV0d29yaywgIm1fc29ja2V0IGlzIG51bGwgd2hlbiBzZW5kaW5nLiBJdCBz
aG91bGQgbm90IGJlLiIpOworICAgICAgICBMT0coTmV0d29yaywgIlNvY2tldFN0cmVhbUhhbmRs
ZUludGVybmFsICVwIHNlbmQoKSBtX3NvY2tldCBpcyBOVUxMIiwgdGhpcyk7CiAgICAgICAgIHJl
dHVybiAwOwogICAgIH0KICAgICBpZiAobV9wZW5kaW5nQW1vdW50U2VudCArIGxlbiA+IG1fbWF4
UGVuZGluZ1NlbmRBbGxvd2VkKQpAQCAtODUsMjQgKzg1LDIzIEBAIGludCBTb2NrZXRTdHJlYW1I
YW5kbGVJbnRlcm5hbDo6c2VuZChjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuKQogICAgIFdlYktp
dDo6V2ViRGF0YSB3ZWJkYXRhKGRhdGEsIGxlbik7CiAgICAgaWYgKG1fc29ja2V0LT5zZW5kKHdl
YmRhdGEpKSB7CiAgICAgICAgIG1fcGVuZGluZ0Ftb3VudFNlbnQgKz0gbGVuOwotICAgICAgICBM
T0coTmV0d29yaywgInNlbnQiKTsKKyAgICAgICAgTE9HKE5ldHdvcmssICJTb2NrZXRTdHJlYW1I
YW5kbGVJbnRlcm5hbCAlcCBzZW5kKCkgU2VudCAlZCBieXRlcyIsIHRoaXMsIGxlbik7CiAgICAg
ICAgIHJldHVybiBsZW47CiAgICAgfQotICAgIExPRyhOZXR3b3JrLCAiYnVzeS4gYnVmZmVyaW5n
Iik7CisgICAgTE9HKE5ldHdvcmssICJTb2NrZXRTdHJlYW1IYW5kbGVJbnRlcm5hbCAlcCBzZW5k
KCkgbV9zb2NrZXQtPnNlbmQoKSBmYWlsZWQiLCB0aGlzKTsKICAgICByZXR1cm4gMDsKIH0KIAog
dm9pZCBTb2NrZXRTdHJlYW1IYW5kbGVJbnRlcm5hbDo6Y2xvc2UoKQogewotICAgIExPRyhOZXR3
b3JrLCAiY2xvc2UiKTsKKyAgICBMT0coTmV0d29yaywgIlNvY2tldFN0cmVhbUhhbmRsZUludGVy
bmFsICVwIGNsb3NlKCkiLCB0aGlzKTsKICAgICBpZiAobV9zb2NrZXQpCiAgICAgICAgIG1fc29j
a2V0LT5jbG9zZSgpOwogfQogCiB2b2lkIFNvY2tldFN0cmVhbUhhbmRsZUludGVybmFsOjpkaWRP
cGVuU3RyZWFtKFdlYktpdDo6V2ViU29ja2V0U3RyZWFtSGFuZGxlKiBzb2NrZXRIYW5kbGUsIGlu
dCBtYXhQZW5kaW5nU2VuZEFsbG93ZWQpCiB7Ci0gICAgTE9HKE5ldHdvcmssICJTb2NrZXRTdHJl
YW1IYW5kbGVJbnRlcm5hbDo6ZGlkT3BlbiAlZCIsCi0gICAgICAgIG1heFBlbmRpbmdTZW5kQWxs
b3dlZCk7CisgICAgTE9HKE5ldHdvcmssICJTb2NrZXRTdHJlYW1IYW5kbGVJbnRlcm5hbCAlcCBk
aWRPcGVuU3RyZWFtKCkgbWF4UGVuZGluZ1NlbmRBbGxvd2VkPSVkIiwgdGhpcywgbWF4UGVuZGlu
Z1NlbmRBbGxvd2VkKTsKICAgICBBU1NFUlQobWF4UGVuZGluZ1NlbmRBbGxvd2VkID4gMCk7CiAg
ICAgaWYgKG1faGFuZGxlICYmIG1fc29ja2V0KSB7CiAgICAgICAgIEFTU0VSVChzb2NrZXRIYW5k
bGUgPT0gbV9zb2NrZXQuZ2V0KCkpOwpAQCAtMTEzLDEyICsxMTIsMTIgQEAgdm9pZCBTb2NrZXRT
dHJlYW1IYW5kbGVJbnRlcm5hbDo6ZGlkT3BlblN0cmVhbShXZWJLaXQ6OldlYlNvY2tldFN0cmVh
bUhhbmRsZSogc28KICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgIH0KLSAgICBM
T0coTmV0d29yaywgIm5vIG1faGFuZGxlIG9yIG1fc29ja2V0PyIpOworICAgIExPRyhOZXR3b3Jr
LCAiU29ja2V0U3RyZWFtSGFuZGxlSW50ZXJuYWwgJXAgZGlkT3BlblN0cmVhbSgpIG1faGFuZGxl
IG9yIG1fc29ja2V0IGlzIE5VTEwiLCB0aGlzKTsKIH0KIAogdm9pZCBTb2NrZXRTdHJlYW1IYW5k
bGVJbnRlcm5hbDo6ZGlkU2VuZERhdGEoV2ViS2l0OjpXZWJTb2NrZXRTdHJlYW1IYW5kbGUqIHNv
Y2tldEhhbmRsZSwgaW50IGFtb3VudFNlbnQpCiB7Ci0gICAgTE9HKE5ldHdvcmssICJTb2NrZXRT
dHJlYW1IYW5kbGVJbnRlcm5hbDo6ZGlkU2VuZERhdGEgJWQiLCBhbW91bnRTZW50KTsKKyAgICBM
T0coTmV0d29yaywgIlNvY2tldFN0cmVhbUhhbmRsZUludGVybmFsICVwIGRpZFNlbmREYXRhKCkg
YW1vdW50U2VudD0lZCIsIHRoaXMsIGFtb3VudFNlbnQpOwogICAgIEFTU0VSVChhbW91bnRTZW50
ID4gMCk7CiAgICAgaWYgKG1faGFuZGxlICYmIG1fc29ja2V0KSB7CiAgICAgICAgIEFTU0VSVChz
b2NrZXRIYW5kbGUgPT0gbV9zb2NrZXQuZ2V0KCkpOwpAQCAtMTMwLDcgKzEyOSw3IEBAIHZvaWQg
U29ja2V0U3RyZWFtSGFuZGxlSW50ZXJuYWw6OmRpZFNlbmREYXRhKFdlYktpdDo6V2ViU29ja2V0
U3RyZWFtSGFuZGxlKiBzb2NrCiAKIHZvaWQgU29ja2V0U3RyZWFtSGFuZGxlSW50ZXJuYWw6OmRp
ZFJlY2VpdmVEYXRhKFdlYktpdDo6V2ViU29ja2V0U3RyZWFtSGFuZGxlKiBzb2NrZXRIYW5kbGUs
IGNvbnN0IFdlYktpdDo6V2ViRGF0YSYgZGF0YSkKIHsKLSAgICBMT0coTmV0d29yaywgImRpZFJl
Y2VpdmVEYXRhIik7CisgICAgTE9HKE5ldHdvcmssICJTb2NrZXRTdHJlYW1IYW5kbGVJbnRlcm5h
bCAlcCBkaWRSZWNlaXZlRGF0YSgpIFJlY2VpdmVkICVsdSBieXRlcyIsIHRoaXMsIGRhdGEuc2l6
ZSgpKTsKICAgICBpZiAobV9oYW5kbGUgJiYgbV9zb2NrZXQpIHsKICAgICAgICAgQVNTRVJUKHNv
Y2tldEhhbmRsZSA9PSBtX3NvY2tldC5nZXQoKSk7CiAgICAgICAgIGlmIChtX2hhbmRsZS0+bV9j
bGllbnQpCkBAIC0xNDAsNyArMTM5LDcgQEAgdm9pZCBTb2NrZXRTdHJlYW1IYW5kbGVJbnRlcm5h
bDo6ZGlkUmVjZWl2ZURhdGEoV2ViS2l0OjpXZWJTb2NrZXRTdHJlYW1IYW5kbGUqIHMKIAogdm9p
ZCBTb2NrZXRTdHJlYW1IYW5kbGVJbnRlcm5hbDo6ZGlkQ2xvc2UoV2ViS2l0OjpXZWJTb2NrZXRT
dHJlYW1IYW5kbGUqIHNvY2tldEhhbmRsZSkKIHsKLSAgICBMT0coTmV0d29yaywgImRpZENsb3Nl
Iik7CisgICAgTE9HKE5ldHdvcmssICJTb2NrZXRTdHJlYW1IYW5kbGVJbnRlcm5hbCAlcCBkaWRD
bG9zZSgpIiwgdGhpcyk7CiAgICAgaWYgKG1faGFuZGxlICYmIG1fc29ja2V0KSB7CiAgICAgICAg
IEFTU0VSVChzb2NrZXRIYW5kbGUgPT0gbV9zb2NrZXQuZ2V0KCkpOwogICAgICAgICBtX3NvY2tl
dC5jbGVhcigpOwpAQCAtMTUzLDcgKzE1Miw3IEBAIHZvaWQgU29ja2V0U3RyZWFtSGFuZGxlSW50
ZXJuYWw6OmRpZENsb3NlKFdlYktpdDo6V2ViU29ja2V0U3RyZWFtSGFuZGxlKiBzb2NrZXRICiAK
IHZvaWQgU29ja2V0U3RyZWFtSGFuZGxlSW50ZXJuYWw6OmRpZEZhaWwoV2ViS2l0OjpXZWJTb2Nr
ZXRTdHJlYW1IYW5kbGUqIHNvY2tldEhhbmRsZSwgY29uc3QgV2ViS2l0OjpXZWJTb2NrZXRTdHJl
YW1FcnJvciYgZXJyKQogewotICAgIExPRyhOZXR3b3JrLCAiZGlkRmFpbCIpOworICAgIExPRyhO
ZXR3b3JrLCAiU29ja2V0U3RyZWFtSGFuZGxlSW50ZXJuYWwgJXAgZGlkRmFpbCgpIiwgdGhpcyk7
CiAgICAgaWYgKG1faGFuZGxlICYmIG1fc29ja2V0KSB7CiAgICAgICAgIEFTU0VSVChzb2NrZXRI
YW5kbGUgPT0gbV9zb2NrZXQuZ2V0KCkpOwogICAgICAgICBtX3NvY2tldC5jbGVhcigpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>196302</attachid>
            <date>2013-04-03 01:48:46 -0700</date>
            <delta_ts>2013-04-03 03:19:48 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-113852-20130403174836.patch</filename>
            <type>text/plain</type>
            <size>28671</size>
            <attacher name="Takeshi Yoshino">tyoshino</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ3MzU2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDhmOTIxOWM4MzM4MTky
MzkyNjUwN2Y0OTM3MTM0YzVkOGJlYjhmZS4uNjYyNzYxNmZjZmE0NDlmMTAwMWQ3YThiZGVhMWUz
MDdlYTVlODBlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY1IEBACisyMDEzLTA0LTAyICBUYWtl
c2hpIFlvc2hpbm8gIDx0eW9zaGlub0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmVmaW5lIExP
RyBtZXNzYWdlcyBpbiBXZWJTb2NrZXQgcmVsYXRlZCBjb21wb25lbnRzCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTM4NTIKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZWZpbmUgTE9HIG1lc3NhZ2VzIGJ5
CisgICAgICAgIC0gTWFrZSB0aGVtIGNvbnRhaW4gbWV0aG9kIG5hbWVzIHRvIGVhc2UgaWRlbnRp
Znlpbmcgd2hlcmUgdGhlIGV2ZW50IG9jY3VycmVkLgorICAgICAgICAtIEZvciBjb25zaXN0ZW5j
eSwgbWFrZSBhbGwgbWVzc2FnZXMgcHJpbnQgdGhlIHBvaW50ZXIgb2YgdGhlIG9yaWdpbiBpbnN0
YW5jZS4KKyAgICAgICAgLSBRdW90ZSBVVEY4IGRhdGEgaW4gTE9HIG1lc3NhZ2VzLgorICAgICAg
ICAtIEZvciBvdmVybG9hZGVkIG1ldGhvZHMsIGFkZCB0aGUgdHlwZSB0byBjbGFyaWZ5IHdoaWNo
IG9uZSBpcyBydW4KKworICAgICAgICAqIE1vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0Ojpjb25uZWN0KToKKyAgICAgICAgKFdlYkNv
cmU6OldlYlNvY2tldDo6c2VuZCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXQ6OmNsb3Nl
KToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldDo6Y29udGV4dERlc3Ryb3llZCk6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJTb2NrZXQ6OmRpZENvbm5lY3QpOgorICAgICAgICAoV2ViQ29yZTo6
V2ViU29ja2V0OjpkaWRSZWNlaXZlTWVzc2FnZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2Nr
ZXQ6OmRpZFJlY2VpdmVCaW5hcnlEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldDo6
ZGlkUmVjZWl2ZU1lc3NhZ2VFcnJvcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXQ6OmRp
ZFVwZGF0ZUJ1ZmZlcmVkQW1vdW50KToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldDo6ZGlk
U3RhcnRDbG9zaW5nSGFuZHNoYWtlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldDo6ZGlk
Q2xvc2UpOgorICAgICAgICAqIE1vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldENoYW5uZWw6OmNvbm5lY3QpOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViU29ja2V0Q2hhbm5lbDo6c3VicHJvdG9jb2wpOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViU29ja2V0Q2hhbm5lbDo6ZXh0ZW5zaW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJTb2NrZXRDaGFubmVsOjpzZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldENoYW5u
ZWw6OmJ1ZmZlcmVkQW1vdW50KToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldENoYW5uZWw6
OmNsb3NlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldENoYW5uZWw6OmZhaWwpOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViU29ja2V0Q2hhbm5lbDo6ZGlzY29ubmVjdCk6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJTb2NrZXRDaGFubmVsOjp3aWxsT3BlblNvY2tldFN0cmVhbSk6CisgICAgICAg
IChXZWJDb3JlOjpXZWJTb2NrZXRDaGFubmVsOjpkaWRPcGVuU29ja2V0U3RyZWFtKToKKyAgICAg
ICAgKFdlYkNvcmU6OldlYlNvY2tldENoYW5uZWw6OmRpZENsb3NlU29ja2V0U3RyZWFtKToKKyAg
ICAgICAgKFdlYkNvcmU6OldlYlNvY2tldENoYW5uZWw6OmRpZFJlY2VpdmVTb2NrZXRTdHJlYW1E
YXRhKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldENoYW5uZWw6OmRpZEZhaWxTb2NrZXRT
dHJlYW0pOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0Q2hhbm5lbDo6ZGlkU3RhcnRMb2Fk
aW5nKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldENoYW5uZWw6OmRpZFJlY2VpdmVEYXRh
KToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldENoYW5uZWw6OmRpZEZpbmlzaExvYWRpbmcp
OgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0Q2hhbm5lbDo6ZGlkRmFpbCk6CisgICAgICAg
IChXZWJDb3JlOjpXZWJTb2NrZXRDaGFubmVsOjphcHBlbmRUb0J1ZmZlcik6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJTb2NrZXRDaGFubmVsOjpwcm9jZXNzQnVmZmVyKToKKyAgICAgICAgKFdlYkNv
cmU6OldlYlNvY2tldENoYW5uZWw6OnN0YXJ0Q2xvc2luZ0hhbmRzaGFrZSk6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJTb2NrZXRDaGFubmVsOjpjbG9zaW5nVGltZXJGaXJlZCk6CisgICAgICAgICog
TW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldERlZmxhdGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OldlYlNvY2tldERlZmxhdGVyOjp+V2ViU29ja2V0RGVmbGF0ZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViU29ja2V0SW5mbGF0ZXI6On5XZWJTb2NrZXRJbmZsYXRlcik6CisgICAgICAgICog
TW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpXZWJTb2NrZXRIYW5kc2hha2U6OnJlYWRTZXJ2ZXJIYW5kc2hha2UpOgorICAgICAgICAq
IHBsYXRmb3JtL25ldHdvcmsvY2hyb21pdW0vU29ja2V0U3RyZWFtSGFuZGxlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNvY2tldFN0cmVhbUhhbmRsZUludGVybmFsOjpjb25uZWN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlNvY2tldFN0cmVhbUhhbmRsZUludGVybmFsOjpzZW5kKToKKyAgICAgICAg
KFdlYkNvcmU6OlNvY2tldFN0cmVhbUhhbmRsZUludGVybmFsOjpjbG9zZSk6CisgICAgICAgIChX
ZWJDb3JlOjpTb2NrZXRTdHJlYW1IYW5kbGVJbnRlcm5hbDo6ZGlkT3BlblN0cmVhbSk6CisgICAg
ICAgIChXZWJDb3JlOjpTb2NrZXRTdHJlYW1IYW5kbGVJbnRlcm5hbDo6ZGlkU2VuZERhdGEpOgor
ICAgICAgICAoV2ViQ29yZTo6U29ja2V0U3RyZWFtSGFuZGxlSW50ZXJuYWw6OmRpZFJlY2VpdmVE
YXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlNvY2tldFN0cmVhbUhhbmRsZUludGVybmFsOjpkaWRD
bG9zZSk6CisgICAgICAgIChXZWJDb3JlOjpTb2NrZXRTdHJlYW1IYW5kbGVJbnRlcm5hbDo6ZGlk
RmFpbCk6CisKIDIwMTMtMDQtMDEgIFRpbW90aHkgSGF0Y2hlciAgPHRpbW90aHlAYXBwbGUuY29t
PgogCiAgICAgICAgIE1ha2UgJ3RoaXMnIGV2YWx1YXRlIHRvIHRoZSBjb3JyZWN0IG9iamVjdCB3
aGVuIHBhdXNlZCBpbiB0aGUgRGVidWdnZXIuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwCmluZGV4IDgxZWZhM2U1OWExN2I0ZGFhZjhmNzZmMDcx
YjM1NjE0N2VjZTk4N2MuLmZmMzk3N2MyYTY1MjhiNjgzODQzYzg0MmUzYjhjN2QyZTZiOTViY2Ug
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuY3Bw
CkBAIC0yMTEsNyArMjExLDcgQEAgdm9pZCBXZWJTb2NrZXQ6OmNvbm5lY3QoY29uc3QgU3RyaW5n
JiB1cmwsIGNvbnN0IFN0cmluZyYgcHJvdG9jb2wsIEV4Y2VwdGlvbkNvZGUKIAogdm9pZCBXZWJT
b2NrZXQ6OmNvbm5lY3QoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBw
cm90b2NvbHMsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewotICAgIExPRyhOZXR3b3JrLCAiV2ViU29j
a2V0ICVwIGNvbm5lY3QgdG8gJXMiLCB0aGlzLCB1cmwudXRmOCgpLmRhdGEoKSk7CisgICAgTE9H
KE5ldHdvcmssICJXZWJTb2NrZXQgJXAgY29ubmVjdCgpIHVybD0nJXMnIiwgdGhpcywgdXJsLnV0
ZjgoKS5kYXRhKCkpOwogICAgIG1fdXJsID0gS1VSTChLVVJMKCksIHVybCk7CiAKICAgICBpZiAo
IW1fdXJsLmlzVmFsaWQoKSkgewpAQCAtMjkyLDcgKzI5Miw3IEBAIHZvaWQgV2ViU29ja2V0Ojpj
b25uZWN0KGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcHJvdG9jb2xz
LCBFeGNlCiAKIGJvb2wgV2ViU29ja2V0OjpzZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgRXhj
ZXB0aW9uQ29kZSYgZWMpCiB7Ci0gICAgTE9HKE5ldHdvcmssICJXZWJTb2NrZXQgJXAgc2VuZCAl
cyIsIHRoaXMsIG1lc3NhZ2UudXRmOCgpLmRhdGEoKSk7CisgICAgTE9HKE5ldHdvcmssICJXZWJT
b2NrZXQgJXAgc2VuZCgpIFNlbmRpbmcgU3RyaW5nICclcyciLCB0aGlzLCBtZXNzYWdlLnV0Zjgo
KS5kYXRhKCkpOwogICAgIGlmIChtX3N0YXRlID09IENPTk5FQ1RJTkcpIHsKICAgICAgICAgZWMg
PSBJTlZBTElEX1NUQVRFX0VSUjsKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMzE2LDcgKzMx
Niw3IEBAIGJvb2wgV2ViU29ja2V0OjpzZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgRXhjZXB0
aW9uQ29kZSYgZWMpCiAKIGJvb2wgV2ViU29ja2V0OjpzZW5kKEFycmF5QnVmZmVyKiBiaW5hcnlE
YXRhLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKLSAgICBMT0coTmV0d29yaywgIldlYlNvY2tldCAl
cCBzZW5kIGFycmF5YnVmZmVyICVwIiwgdGhpcywgYmluYXJ5RGF0YSk7CisgICAgTE9HKE5ldHdv
cmssICJXZWJTb2NrZXQgJXAgc2VuZCgpIFNlbmRpbmcgQXJyYXlCdWZmZXIgJXAiLCB0aGlzLCBi
aW5hcnlEYXRhKTsKICAgICBBU1NFUlQoYmluYXJ5RGF0YSk7CiAgICAgaWYgKG1fc3RhdGUgPT0g
Q09OTkVDVElORykgewogICAgICAgICBlYyA9IElOVkFMSURfU1RBVEVfRVJSOwpAQCAtMzM0LDcg
KzMzNCw3IEBAIGJvb2wgV2ViU29ja2V0OjpzZW5kKEFycmF5QnVmZmVyKiBiaW5hcnlEYXRhLCBF
eGNlcHRpb25Db2RlJiBlYykKIAogYm9vbCBXZWJTb2NrZXQ6OnNlbmQoQXJyYXlCdWZmZXJWaWV3
KiBhcnJheUJ1ZmZlclZpZXcsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewotICAgIExPRyhOZXR3b3Jr
LCAiV2ViU29ja2V0ICVwIHNlbmQgYXJyYXlidWZmZXJ2aWV3ICVwIiwgdGhpcywgYXJyYXlCdWZm
ZXJWaWV3KTsKKyAgICBMT0coTmV0d29yaywgIldlYlNvY2tldCAlcCBzZW5kKCkgU2VuZGluZyBB
cnJheUJ1ZmZlclZpZXcgJXAiLCB0aGlzLCBhcnJheUJ1ZmZlclZpZXcpOwogICAgIEFTU0VSVChh
cnJheUJ1ZmZlclZpZXcpOwogICAgIGlmIChtX3N0YXRlID09IENPTk5FQ1RJTkcpIHsKICAgICAg
ICAgZWMgPSBJTlZBTElEX1NUQVRFX0VSUjsKQEAgLTM1Myw3ICszNTMsNyBAQCBib29sIFdlYlNv
Y2tldDo6c2VuZChBcnJheUJ1ZmZlclZpZXcqIGFycmF5QnVmZmVyVmlldywgRXhjZXB0aW9uQ29k
ZSYgZWMpCiAKIGJvb2wgV2ViU29ja2V0OjpzZW5kKEJsb2IqIGJpbmFyeURhdGEsIEV4Y2VwdGlv
bkNvZGUmIGVjKQogewotICAgIExPRyhOZXR3b3JrLCAiV2ViU29ja2V0ICVwIHNlbmQgYmxvYiAl
cyIsIHRoaXMsIGJpbmFyeURhdGEtPnVybCgpLmVsaWRlZFN0cmluZygpLnV0ZjgoKS5kYXRhKCkp
OworICAgIExPRyhOZXR3b3JrLCAiV2ViU29ja2V0ICVwIHNlbmQoKSBTZW5kaW5nIEJsb2IgJXAi
LCB0aGlzLCBiaW5hcnlEYXRhLT51cmwoKS5lbGlkZWRTdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsK
ICAgICBBU1NFUlQoYmluYXJ5RGF0YSk7CiAgICAgaWYgKG1fc3RhdGUgPT0gQ09OTkVDVElORykg
ewogICAgICAgICBlYyA9IElOVkFMSURfU1RBVEVfRVJSOwpAQCAtMzcyLDkgKzM3Miw5IEBAIGJv
b2wgV2ViU29ja2V0OjpzZW5kKEJsb2IqIGJpbmFyeURhdGEsIEV4Y2VwdGlvbkNvZGUmIGVjKQog
dm9pZCBXZWJTb2NrZXQ6OmNsb3NlKGludCBjb2RlLCBjb25zdCBTdHJpbmcmIHJlYXNvbiwgRXhj
ZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgaWYgKGNvZGUgPT0gV2ViU29ja2V0Q2hhbm5lbDo6Q2xv
c2VFdmVudENvZGVOb3RTcGVjaWZpZWQpCi0gICAgICAgIExPRyhOZXR3b3JrLCAiV2ViU29ja2V0
ICVwIGNsb3NlIHdpdGhvdXQgY29kZSBhbmQgcmVhc29uIiwgdGhpcyk7CisgICAgICAgIExPRyhO
ZXR3b3JrLCAiV2ViU29ja2V0ICVwIGNsb3NlKCkgd2l0aG91dCBjb2RlIGFuZCByZWFzb24iLCB0
aGlzKTsKICAgICBlbHNlIHsKLSAgICAgICAgTE9HKE5ldHdvcmssICJXZWJTb2NrZXQgJXAgY2xv
c2Ugd2l0aCBjb2RlID0gJWQsIHJlYXNvbiA9ICVzIiwgdGhpcywgY29kZSwgcmVhc29uLnV0Zjgo
KS5kYXRhKCkpOworICAgICAgICBMT0coTmV0d29yaywgIldlYlNvY2tldCAlcCBjbG9zZSgpIGNv
ZGU9JWQgcmVhc29uPSclcyciLCB0aGlzLCBjb2RlLCByZWFzb24udXRmOCgpLmRhdGEoKSk7CiAg
ICAgICAgIGlmICghKGNvZGUgPT0gV2ViU29ja2V0Q2hhbm5lbDo6Q2xvc2VFdmVudENvZGVOb3Jt
YWxDbG9zdXJlIHx8IChXZWJTb2NrZXRDaGFubmVsOjpDbG9zZUV2ZW50Q29kZU1pbmltdW1Vc2Vy
RGVmaW5lZCA8PSBjb2RlICYmIGNvZGUgPD0gV2ViU29ja2V0Q2hhbm5lbDo6Q2xvc2VFdmVudENv
ZGVNYXhpbXVtVXNlckRlZmluZWQpKSkgewogICAgICAgICAgICAgZWMgPSBJTlZBTElEX0FDQ0VT
U19FUlI7CiAgICAgICAgICAgICByZXR1cm47CkBAIC00NjEsNyArNDYxLDcgQEAgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogV2ViU29ja2V0OjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QK
IAogdm9pZCBXZWJTb2NrZXQ6OmNvbnRleHREZXN0cm95ZWQoKQogewotICAgIExPRyhOZXR3b3Jr
LCAiV2ViU29ja2V0ICVwIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgZGVzdHJveWVkIiwgdGhpcyk7
CisgICAgTE9HKE5ldHdvcmssICJXZWJTb2NrZXQgJXAgY29udGV4dERlc3Ryb3llZCgpIiwgdGhp
cyk7CiAgICAgQVNTRVJUKCFtX2NoYW5uZWwpOwogICAgIEFTU0VSVChtX3N0YXRlID09IENMT1NF
RCk7CiAgICAgQWN0aXZlRE9NT2JqZWN0Ojpjb250ZXh0RGVzdHJveWVkKCk7CkBAIC00OTgsNyAr
NDk4LDcgQEAgdm9pZCBXZWJTb2NrZXQ6OnN0b3AoKQogCiB2b2lkIFdlYlNvY2tldDo6ZGlkQ29u
bmVjdCgpCiB7Ci0gICAgTE9HKE5ldHdvcmssICJXZWJTb2NrZXQgJXAgZGlkQ29ubmVjdCIsIHRo
aXMpOworICAgIExPRyhOZXR3b3JrLCAiV2ViU29ja2V0ICVwIGRpZENvbm5lY3QoKSIsIHRoaXMp
OwogICAgIGlmIChtX3N0YXRlICE9IENPTk5FQ1RJTkcpIHsKICAgICAgICAgZGlkQ2xvc2UoMCwg
Q2xvc2luZ0hhbmRzaGFrZUluY29tcGxldGUsIFdlYlNvY2tldENoYW5uZWw6OkNsb3NlRXZlbnRD
b2RlQWJub3JtYWxDbG9zdXJlLCAiIik7CiAgICAgICAgIHJldHVybjsKQEAgLTUxMiw3ICs1MTIs
NyBAQCB2b2lkIFdlYlNvY2tldDo6ZGlkQ29ubmVjdCgpCiAKIHZvaWQgV2ViU29ja2V0OjpkaWRS
ZWNlaXZlTWVzc2FnZShjb25zdCBTdHJpbmcmIG1zZykKIHsKLSAgICBMT0coTmV0d29yaywgIldl
YlNvY2tldCAlcCBkaWRSZWNlaXZlTWVzc2FnZSAlcyIsIHRoaXMsIG1zZy51dGY4KCkuZGF0YSgp
KTsKKyAgICBMT0coTmV0d29yaywgIldlYlNvY2tldCAlcCBkaWRSZWNlaXZlTWVzc2FnZSgpIFRl
eHQgbWVzc2FnZSAnJXMnIiwgdGhpcywgbXNnLnV0ZjgoKS5kYXRhKCkpOwogICAgIGlmIChtX3N0
YXRlICE9IE9QRU4gJiYgbV9zdGF0ZSAhPSBDTE9TSU5HKQogICAgICAgICByZXR1cm47CiAgICAg
QVNTRVJUKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7CkBAIC01MjEsNiArNTIxLDcgQEAgdm9p
ZCBXZWJTb2NrZXQ6OmRpZFJlY2VpdmVNZXNzYWdlKGNvbnN0IFN0cmluZyYgbXNnKQogCiB2b2lk
IFdlYlNvY2tldDo6ZGlkUmVjZWl2ZUJpbmFyeURhdGEoUGFzc093blB0cjxWZWN0b3I8Y2hhcj4g
PiBiaW5hcnlEYXRhKQogeworICAgIExPRyhOZXR3b3JrLCAiV2ViU29ja2V0ICVwIGRpZFJlY2Vp
dmVCaW5hcnlEYXRhKCkgJWx1IGJ5dGUgYmluYXJ5IG1lc3NhZ2UiLCB0aGlzLCBiaW5hcnlEYXRh
LT5zaXplKCkpOwogICAgIHN3aXRjaCAobV9iaW5hcnlUeXBlKSB7CiAgICAgY2FzZSBCaW5hcnlU
eXBlQmxvYjogewogICAgICAgICBzaXplX3Qgc2l6ZSA9IGJpbmFyeURhdGEtPnNpemUoKTsKQEAg
LTU0MSwxNCArNTQyLDE0IEBAIHZvaWQgV2ViU29ja2V0OjpkaWRSZWNlaXZlQmluYXJ5RGF0YShQ
YXNzT3duUHRyPFZlY3RvcjxjaGFyPiA+IGJpbmFyeURhdGEpCiAKIHZvaWQgV2ViU29ja2V0Ojpk
aWRSZWNlaXZlTWVzc2FnZUVycm9yKCkKIHsKLSAgICBMT0coTmV0d29yaywgIldlYlNvY2tldCAl
cCBkaWRSZWNlaXZlRXJyb3JNZXNzYWdlIiwgdGhpcyk7CisgICAgTE9HKE5ldHdvcmssICJXZWJT
b2NrZXQgJXAgZGlkUmVjZWl2ZUVycm9yTWVzc2FnZSgpIiwgdGhpcyk7CiAgICAgQVNTRVJUKHNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7CiAgICAgZGlzcGF0Y2hFdmVudChFdmVudDo6Y3JlYXRl
KGV2ZW50TmFtZXMoKS5lcnJvckV2ZW50LCBmYWxzZSwgZmFsc2UpKTsKIH0KIAogdm9pZCBXZWJT
b2NrZXQ6OmRpZFVwZGF0ZUJ1ZmZlcmVkQW1vdW50KHVuc2lnbmVkIGxvbmcgYnVmZmVyZWRBbW91
bnQpCiB7Ci0gICAgTE9HKE5ldHdvcmssICJXZWJTb2NrZXQgJXAgZGlkVXBkYXRlQnVmZmVyZWRB
bW91bnQgJWx1IiwgdGhpcywgYnVmZmVyZWRBbW91bnQpOworICAgIExPRyhOZXR3b3JrLCAiV2Vi
U29ja2V0ICVwIGRpZFVwZGF0ZUJ1ZmZlcmVkQW1vdW50KCkgTmV3IGJ1ZmZlcmVkQW1vdW50IGlz
ICVsdSIsIHRoaXMsIGJ1ZmZlcmVkQW1vdW50KTsKICAgICBpZiAobV9zdGF0ZSA9PSBDTE9TRUQp
CiAgICAgICAgIHJldHVybjsKICAgICBtX2J1ZmZlcmVkQW1vdW50ID0gYnVmZmVyZWRBbW91bnQ7
CkBAIC01NTYsMTMgKzU1NywxMyBAQCB2b2lkIFdlYlNvY2tldDo6ZGlkVXBkYXRlQnVmZmVyZWRB
bW91bnQodW5zaWduZWQgbG9uZyBidWZmZXJlZEFtb3VudCkKIAogdm9pZCBXZWJTb2NrZXQ6OmRp
ZFN0YXJ0Q2xvc2luZ0hhbmRzaGFrZSgpCiB7Ci0gICAgTE9HKE5ldHdvcmssICJXZWJTb2NrZXQg
JXAgZGlkU3RhcnRDbG9zaW5nSGFuZHNoYWtlIiwgdGhpcyk7CisgICAgTE9HKE5ldHdvcmssICJX
ZWJTb2NrZXQgJXAgZGlkU3RhcnRDbG9zaW5nSGFuZHNoYWtlKCkiLCB0aGlzKTsKICAgICBtX3N0
YXRlID0gQ0xPU0lORzsKIH0KIAogdm9pZCBXZWJTb2NrZXQ6OmRpZENsb3NlKHVuc2lnbmVkIGxv
bmcgdW5oYW5kbGVkQnVmZmVyZWRBbW91bnQsIENsb3NpbmdIYW5kc2hha2VDb21wbGV0aW9uU3Rh
dHVzIGNsb3NpbmdIYW5kc2hha2VDb21wbGV0aW9uLCB1bnNpZ25lZCBzaG9ydCBjb2RlLCBjb25z
dCBTdHJpbmcmIHJlYXNvbikKIHsKLSAgICBMT0coTmV0d29yaywgIldlYlNvY2tldCAlcCBkaWRD
bG9zZSIsIHRoaXMpOworICAgIExPRyhOZXR3b3JrLCAiV2ViU29ja2V0ICVwIGRpZENsb3NlKCki
LCB0aGlzKTsKICAgICBpZiAoIW1fY2hhbm5lbCkKICAgICAgICAgcmV0dXJuOwogICAgIGJvb2wg
d2FzQ2xlYW4gPSBtX3N0YXRlID09IENMT1NJTkcgJiYgIXVuaGFuZGxlZEJ1ZmZlcmVkQW1vdW50
ICYmIGNsb3NpbmdIYW5kc2hha2VDb21wbGV0aW9uID09IENsb3NpbmdIYW5kc2hha2VDb21wbGV0
ZSAmJiBjb2RlICE9IFdlYlNvY2tldENoYW5uZWw6OkNsb3NlRXZlbnRDb2RlQWJub3JtYWxDbG9z
dXJlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNv
Y2tldENoYW5uZWwuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNv
Y2tldENoYW5uZWwuY3BwCmluZGV4IDViNDVlMWE0MWY4MWNlOWUyNjhjNmM0YzU1ZDg5OTI0Mjlk
NjcxZGIuLjNlNmZhYzU5ZjNhZDllYmMwZWJhODQ5MWEwYTVkYzUwM2EwNzQ3NDYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5l
bC5jcHAKQEAgLTEwMCw3ICsxMDAsNyBAQCBXZWJTb2NrZXRDaGFubmVsOjp+V2ViU29ja2V0Q2hh
bm5lbCgpCiAKIHZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6Y29ubmVjdChjb25zdCBLVVJMJiB1cmws
IGNvbnN0IFN0cmluZyYgcHJvdG9jb2wpCiB7Ci0gICAgTE9HKE5ldHdvcmssICJXZWJTb2NrZXRD
aGFubmVsICVwIGNvbm5lY3QiLCB0aGlzKTsKKyAgICBMT0coTmV0d29yaywgIldlYlNvY2tldENo
YW5uZWwgJXAgY29ubmVjdCgpIiwgdGhpcyk7CiAgICAgQVNTRVJUKCFtX2hhbmRsZSk7CiAgICAg
QVNTRVJUKCFtX3N1c3BlbmRlZCk7CiAgICAgbV9oYW5kc2hha2UgPSBhZG9wdFB0cihuZXcgV2Vi
U29ja2V0SGFuZHNoYWtlKHVybCwgcHJvdG9jb2wsIG1fZG9jdW1lbnQpKTsKQEAgLTExNSw3ICsx
MTUsNyBAQCB2b2lkIFdlYlNvY2tldENoYW5uZWw6OmNvbm5lY3QoY29uc3QgS1VSTCYgdXJsLCBj
b25zdCBTdHJpbmcmIHByb3RvY29sKQogCiBTdHJpbmcgV2ViU29ja2V0Q2hhbm5lbDo6c3VicHJv
dG9jb2woKQogewotICAgIExPRyhOZXR3b3JrLCAiV2ViU29ja2V0Q2hhbm5lbCAlcCBzdWJwcm90
b2NvbCIsIHRoaXMpOworICAgIExPRyhOZXR3b3JrLCAiV2ViU29ja2V0Q2hhbm5lbCAlcCBzdWJw
cm90b2NvbCgpIiwgdGhpcyk7CiAgICAgaWYgKCFtX2hhbmRzaGFrZSB8fCBtX2hhbmRzaGFrZS0+
bW9kZSgpICE9IFdlYlNvY2tldEhhbmRzaGFrZTo6Q29ubmVjdGVkKQogICAgICAgICByZXR1cm4g
IiI7CiAgICAgU3RyaW5nIHNlcnZlclByb3RvY29sID0gbV9oYW5kc2hha2UtPnNlcnZlcldlYlNv
Y2tldFByb3RvY29sKCk7CkBAIC0xMjYsNyArMTI2LDcgQEAgU3RyaW5nIFdlYlNvY2tldENoYW5u
ZWw6OnN1YnByb3RvY29sKCkKIAogU3RyaW5nIFdlYlNvY2tldENoYW5uZWw6OmV4dGVuc2lvbnMo
KQogewotICAgIExPRyhOZXR3b3JrLCAiV2ViU29ja2V0Q2hhbm5lbCAlcCBleHRlbnNpb25zIiwg
dGhpcyk7CisgICAgTE9HKE5ldHdvcmssICJXZWJTb2NrZXRDaGFubmVsICVwIGV4dGVuc2lvbnMo
KSIsIHRoaXMpOwogICAgIGlmICghbV9oYW5kc2hha2UgfHwgbV9oYW5kc2hha2UtPm1vZGUoKSAh
PSBXZWJTb2NrZXRIYW5kc2hha2U6OkNvbm5lY3RlZCkKICAgICAgICAgcmV0dXJuICIiOwogICAg
IFN0cmluZyBleHRlbnNpb25zID0gbV9oYW5kc2hha2UtPmFjY2VwdGVkRXh0ZW5zaW9ucygpOwpA
QCAtMTM3LDcgKzEzNyw3IEBAIFN0cmluZyBXZWJTb2NrZXRDaGFubmVsOjpleHRlbnNpb25zKCkK
IAogVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OlNlbmRSZXN1bHQgV2ViU29ja2V0Q2hhbm5l
bDo6c2VuZChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiB7Ci0gICAgTE9HKE5ldHdvcmssICJXZWJT
b2NrZXRDaGFubmVsICVwIHNlbmQgJXMiLCB0aGlzLCBtZXNzYWdlLnV0ZjgoKS5kYXRhKCkpOwor
ICAgIExPRyhOZXR3b3JrLCAiV2ViU29ja2V0Q2hhbm5lbCAlcCBzZW5kKCkgU2VuZGluZyBTdHJp
bmcgJyVzJyIsIHRoaXMsIG1lc3NhZ2UudXRmOCgpLmRhdGEoKSk7CiAgICAgQ1N0cmluZyB1dGY4
ID0gbWVzc2FnZS51dGY4KFN0cmluZzo6U3RyaWN0Q29udmVyc2lvblJlcGxhY2luZ1VucGFpcmVk
U3Vycm9nYXRlc1dpdGhGRkZEKTsKICAgICBlbnF1ZXVlVGV4dEZyYW1lKHV0ZjgpOwogICAgIC8v
IEFjY29yZGluZyB0byBXZWJTb2NrZXQgQVBJIHNwZWNpZmljYXRpb24sIFdlYlNvY2tldC5zZW5k
KCkgc2hvdWxkIHJldHVybiB2b2lkIGluc3RlYWQKQEAgLTE1MSwyOCArMTUxLDI4IEBAIFRocmVh
ZGFibGVXZWJTb2NrZXRDaGFubmVsOjpTZW5kUmVzdWx0IFdlYlNvY2tldENoYW5uZWw6OnNlbmQo
Y29uc3QgU3RyaW5nJiBtZXNzCiAKIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpTZW5kUmVz
dWx0IFdlYlNvY2tldENoYW5uZWw6OnNlbmQoY29uc3QgQXJyYXlCdWZmZXImIGJpbmFyeURhdGEs
IHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGJ5dGVMZW5ndGgpCiB7Ci0gICAgTE9HKE5l
dHdvcmssICJXZWJTb2NrZXRDaGFubmVsICVwIHNlbmQgYXJyYXlidWZmZXIgJXAgJXUgJXUiLCB0
aGlzLCAmYmluYXJ5RGF0YSwgYnl0ZU9mZnNldCwgYnl0ZUxlbmd0aCk7CisgICAgTE9HKE5ldHdv
cmssICJXZWJTb2NrZXRDaGFubmVsICVwIHNlbmQoKSBTZW5kaW5nIEFycmF5QnVmZmVyICVwIGJ5
dGVPZmZzZXQ9JXUgYnl0ZUxlbmd0aD0ldSIsIHRoaXMsICZiaW5hcnlEYXRhLCBieXRlT2Zmc2V0
LCBieXRlTGVuZ3RoKTsKICAgICBlbnF1ZXVlUmF3RnJhbWUoV2ViU29ja2V0RnJhbWU6Ok9wQ29k
ZUJpbmFyeSwgc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KGJpbmFyeURhdGEuZGF0YSgpKSArIGJ5
dGVPZmZzZXQsIGJ5dGVMZW5ndGgpOwogICAgIHJldHVybiBUaHJlYWRhYmxlV2ViU29ja2V0Q2hh
bm5lbDo6U2VuZFN1Y2Nlc3M7CiB9CiAKIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpTZW5k
UmVzdWx0IFdlYlNvY2tldENoYW5uZWw6OnNlbmQoY29uc3QgQmxvYiYgYmluYXJ5RGF0YSkKIHsK
LSAgICBMT0coTmV0d29yaywgIldlYlNvY2tldENoYW5uZWwgJXAgc2VuZCBibG9iICVzIiwgdGhp
cywgYmluYXJ5RGF0YS51cmwoKS5lbGlkZWRTdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICBM
T0coTmV0d29yaywgIldlYlNvY2tldENoYW5uZWwgJXAgc2VuZCgpIFNlbmRpbmcgQmxvYiAnJXMn
IiwgdGhpcywgYmluYXJ5RGF0YS51cmwoKS5lbGlkZWRTdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsK
ICAgICBlbnF1ZXVlQmxvYkZyYW1lKFdlYlNvY2tldEZyYW1lOjpPcENvZGVCaW5hcnksIGJpbmFy
eURhdGEpOwogICAgIHJldHVybiBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6U2VuZFN1Y2Nl
c3M7CiB9CiAKIGJvb2wgV2ViU29ja2V0Q2hhbm5lbDo6c2VuZChjb25zdCBjaGFyKiBkYXRhLCBp
bnQgbGVuZ3RoKQogewotICAgIExPRyhOZXR3b3JrLCAiV2ViU29ja2V0Q2hhbm5lbCAlcCBzZW5k
IGJpbmFyeSAlcCAoJWRCKSIsIHRoaXMsIGRhdGEsIGxlbmd0aCk7CisgICAgTE9HKE5ldHdvcmss
ICJXZWJTb2NrZXRDaGFubmVsICVwIHNlbmQoKSBTZW5kaW5nIGNoYXIqIGRhdGE9JXAgbGVuZ3Ro
PSVkIiwgdGhpcywgZGF0YSwgbGVuZ3RoKTsKICAgICBlbnF1ZXVlUmF3RnJhbWUoV2ViU29ja2V0
RnJhbWU6Ok9wQ29kZUJpbmFyeSwgZGF0YSwgbGVuZ3RoKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0K
IAogdW5zaWduZWQgbG9uZyBXZWJTb2NrZXRDaGFubmVsOjpidWZmZXJlZEFtb3VudCgpIGNvbnN0
CiB7Ci0gICAgTE9HKE5ldHdvcmssICJXZWJTb2NrZXRDaGFubmVsICVwIGJ1ZmZlcmVkQW1vdW50
IiwgdGhpcyk7CisgICAgTE9HKE5ldHdvcmssICJXZWJTb2NrZXRDaGFubmVsICVwIGJ1ZmZlcmVk
QW1vdW50KCkiLCB0aGlzKTsKICAgICBBU1NFUlQobV9oYW5kbGUpOwogICAgIEFTU0VSVCghbV9z
dXNwZW5kZWQpOwogICAgIHJldHVybiBtX2hhbmRsZS0+YnVmZmVyZWRBbW91bnQoKTsKQEAgLTE4
MCw3ICsxODAsNyBAQCB1bnNpZ25lZCBsb25nIFdlYlNvY2tldENoYW5uZWw6OmJ1ZmZlcmVkQW1v
dW50KCkgY29uc3QKIAogdm9pZCBXZWJTb2NrZXRDaGFubmVsOjpjbG9zZShpbnQgY29kZSwgY29u
c3QgU3RyaW5nJiByZWFzb24pCiB7Ci0gICAgTE9HKE5ldHdvcmssICJXZWJTb2NrZXRDaGFubmVs
ICVwIGNsb3NlIiwgdGhpcyk7CisgICAgTE9HKE5ldHdvcmssICJXZWJTb2NrZXRDaGFubmVsICVw
IGNsb3NlKCkgY29kZT0lZCByZWFzb249JyVzJyIsIHRoaXMsIGNvZGUsIHJlYXNvbi51dGY4KCku
ZGF0YSgpKTsKICAgICBBU1NFUlQoIW1fc3VzcGVuZGVkKTsKICAgICBpZiAoIW1faGFuZGxlKQog
ICAgICAgICByZXR1cm47CkBAIC0xOTEsNyArMTkxLDcgQEAgdm9pZCBXZWJTb2NrZXRDaGFubmVs
OjpjbG9zZShpbnQgY29kZSwgY29uc3QgU3RyaW5nJiByZWFzb24pCiAKIHZvaWQgV2ViU29ja2V0
Q2hhbm5lbDo6ZmFpbChjb25zdCBTdHJpbmcmIHJlYXNvbikKIHsKLSAgICBMT0coTmV0d29yaywg
IldlYlNvY2tldENoYW5uZWwgJXAgZmFpbDogJXMiLCB0aGlzLCByZWFzb24udXRmOCgpLmRhdGEo
KSk7CisgICAgTE9HKE5ldHdvcmssICJXZWJTb2NrZXRDaGFubmVsICVwIGZhaWwoKSByZWFzb249
JyVzJyIsIHRoaXMsIHJlYXNvbi51dGY4KCkuZGF0YSgpKTsKICAgICBBU1NFUlQoIW1fc3VzcGVu
ZGVkKTsKICAgICBpZiAobV9kb2N1bWVudCkgewogICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb246OmRpZFJlY2VpdmVXZWJTb2NrZXRGcmFtZUVycm9yKG1fZG9jdW1lbnQsIG1faWRlbnRp
ZmllciwgcmVhc29uKTsKQEAgLTIxNSw3ICsyMTUsNyBAQCB2b2lkIFdlYlNvY2tldENoYW5uZWw6
OmZhaWwoY29uc3QgU3RyaW5nJiByZWFzb24pCiAKIHZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6ZGlz
Y29ubmVjdCgpCiB7Ci0gICAgTE9HKE5ldHdvcmssICJXZWJTb2NrZXRDaGFubmVsICVwIGRpc2Nv
bm5lY3QiLCB0aGlzKTsKKyAgICBMT0coTmV0d29yaywgIldlYlNvY2tldENoYW5uZWwgJXAgZGlz
Y29ubmVjdCgpIiwgdGhpcyk7CiAgICAgaWYgKG1faWRlbnRpZmllciAmJiBtX2RvY3VtZW50KQog
ICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZENsb3NlV2ViU29ja2V0KG1fZG9j
dW1lbnQsIG1faWRlbnRpZmllcik7CiAgICAgaWYgKG1faGFuZHNoYWtlKQpAQCAtMjQwLDcgKzI0
MCw3IEBAIHZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6cmVzdW1lKCkKIAogdm9pZCBXZWJTb2NrZXRD
aGFubmVsOjp3aWxsT3BlblNvY2tldFN0cmVhbShTb2NrZXRTdHJlYW1IYW5kbGUqIGhhbmRsZSkK
IHsKLSAgICBMT0coTmV0d29yaywgIldlYlNvY2tldENoYW5uZWwgJXAgd2lsbE9wZW5zb2NrZXRT
dHJlYW0iLCB0aGlzKTsKKyAgICBMT0coTmV0d29yaywgIldlYlNvY2tldENoYW5uZWwgJXAgd2ls
bE9wZW5Tb2NrZXRTdHJlYW0oKSIsIHRoaXMpOwogICAgIEFTU0VSVChoYW5kbGUpOwogICAgIGlm
IChtX2RvY3VtZW50LT5mcmFtZSgpKQogICAgICAgICBtX2RvY3VtZW50LT5mcmFtZSgpLT5sb2Fk
ZXIoKS0+Y2xpZW50KCktPmRpc3BhdGNoV2lsbE9wZW5Tb2NrZXRTdHJlYW0oaGFuZGxlKTsKQEAg
LTI0OCw3ICsyNDgsNyBAQCB2b2lkIFdlYlNvY2tldENoYW5uZWw6OndpbGxPcGVuU29ja2V0U3Ry
ZWFtKFNvY2tldFN0cmVhbUhhbmRsZSogaGFuZGxlKQogCiB2b2lkIFdlYlNvY2tldENoYW5uZWw6
OmRpZE9wZW5Tb2NrZXRTdHJlYW0oU29ja2V0U3RyZWFtSGFuZGxlKiBoYW5kbGUpCiB7Ci0gICAg
TE9HKE5ldHdvcmssICJXZWJTb2NrZXRDaGFubmVsICVwIGRpZE9wZW5Tb2NrZXRTdHJlYW0iLCB0
aGlzKTsKKyAgICBMT0coTmV0d29yaywgIldlYlNvY2tldENoYW5uZWwgJXAgZGlkT3BlblNvY2tl
dFN0cmVhbSgpIiwgdGhpcyk7CiAgICAgQVNTRVJUKGhhbmRsZSA9PSBtX2hhbmRsZSk7CiAgICAg
aWYgKCFtX2RvY3VtZW50KQogICAgICAgICByZXR1cm47CkBAIC0yNjEsNyArMjYxLDcgQEAgdm9p
ZCBXZWJTb2NrZXRDaGFubmVsOjpkaWRPcGVuU29ja2V0U3RyZWFtKFNvY2tldFN0cmVhbUhhbmRs
ZSogaGFuZGxlKQogCiB2b2lkIFdlYlNvY2tldENoYW5uZWw6OmRpZENsb3NlU29ja2V0U3RyZWFt
KFNvY2tldFN0cmVhbUhhbmRsZSogaGFuZGxlKQogewotICAgIExPRyhOZXR3b3JrLCAiV2ViU29j
a2V0Q2hhbm5lbCAlcCBkaWRDbG9zZVNvY2tldFN0cmVhbSIsIHRoaXMpOworICAgIExPRyhOZXR3
b3JrLCAiV2ViU29ja2V0Q2hhbm5lbCAlcCBkaWRDbG9zZVNvY2tldFN0cmVhbSgpIiwgdGhpcyk7
CiAgICAgaWYgKG1faWRlbnRpZmllciAmJiBtX2RvY3VtZW50KQogICAgICAgICBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb246OmRpZENsb3NlV2ViU29ja2V0KG1fZG9jdW1lbnQsIG1faWRlbnRpZmll
cik7CiAgICAgQVNTRVJUX1VOVVNFRChoYW5kbGUsIGhhbmRsZSA9PSBtX2hhbmRsZSB8fCAhbV9o
YW5kbGUpOwpAQCAtMjg2LDcgKzI4Niw3IEBAIHZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6ZGlkQ2xv
c2VTb2NrZXRTdHJlYW0oU29ja2V0U3RyZWFtSGFuZGxlKiBoYW5kbGUpCiAKIHZvaWQgV2ViU29j
a2V0Q2hhbm5lbDo6ZGlkUmVjZWl2ZVNvY2tldFN0cmVhbURhdGEoU29ja2V0U3RyZWFtSGFuZGxl
KiBoYW5kbGUsIGNvbnN0IGNoYXIqIGRhdGEsIGludCBsZW4pCiB7Ci0gICAgTE9HKE5ldHdvcmss
ICJXZWJTb2NrZXRDaGFubmVsICVwIGRpZFJlY2VpdmVTb2NrZXRTdHJlYW1EYXRhICVkIiwgdGhp
cywgbGVuKTsKKyAgICBMT0coTmV0d29yaywgIldlYlNvY2tldENoYW5uZWwgJXAgZGlkUmVjZWl2
ZVNvY2tldFN0cmVhbURhdGEoKSBSZWNlaXZlZCAlZCBieXRlcyIsIHRoaXMsIGxlbik7CiAgICAg
UmVmUHRyPFdlYlNvY2tldENoYW5uZWw+IHByb3RlY3QodGhpcyk7IC8vIFRoZSBjbGllbnQgY2Fu
IGNsb3NlIHRoZSBjaGFubmVsLCBwb3RlbnRpYWxseSByZW1vdmluZyB0aGUgbGFzdCByZWZlcmVu
Y2UuCiAgICAgQVNTRVJUKGhhbmRsZSA9PSBtX2hhbmRsZSk7CiAgICAgaWYgKCFtX2RvY3VtZW50
KSB7CkBAIC0zMjEsNyArMzIxLDcgQEAgdm9pZCBXZWJTb2NrZXRDaGFubmVsOjpkaWRVcGRhdGVC
dWZmZXJlZEFtb3VudChTb2NrZXRTdHJlYW1IYW5kbGUqLCBzaXplX3QgYnVmZmUKIAogdm9pZCBX
ZWJTb2NrZXRDaGFubmVsOjpkaWRGYWlsU29ja2V0U3RyZWFtKFNvY2tldFN0cmVhbUhhbmRsZSog
aGFuZGxlLCBjb25zdCBTb2NrZXRTdHJlYW1FcnJvciYgZXJyb3IpCiB7Ci0gICAgTE9HKE5ldHdv
cmssICJXZWJTb2NrZXRDaGFubmVsICVwIGRpZEZhaWxTb2NrZXRTdHJlYW0iLCB0aGlzKTsKKyAg
ICBMT0coTmV0d29yaywgIldlYlNvY2tldENoYW5uZWwgJXAgZGlkRmFpbFNvY2tldFN0cmVhbSgp
IiwgdGhpcyk7CiAgICAgQVNTRVJUKGhhbmRsZSA9PSBtX2hhbmRsZSB8fCAhbV9oYW5kbGUpOwog
ICAgIGlmIChtX2RvY3VtZW50KSB7CiAgICAgICAgIFN0cmluZyBtZXNzYWdlOwpAQCAtMzQ5LDIx
ICszNDksMjEgQEAgdm9pZCBXZWJTb2NrZXRDaGFubmVsOjpkaWRDYW5jZWxBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZShTb2NrZXRTdHJlYW1IYW5kbGUqLCBjb24KICNpZiBFTkFCTEUoQkxPQikKIHZv
aWQgV2ViU29ja2V0Q2hhbm5lbDo6ZGlkU3RhcnRMb2FkaW5nKCkKIHsKLSAgICBMT0coTmV0d29y
aywgIldlYlNvY2tldENoYW5uZWwgJXAgZGlkU3RhcnRMb2FkaW5nIiwgdGhpcyk7CisgICAgTE9H
KE5ldHdvcmssICJXZWJTb2NrZXRDaGFubmVsICVwIGRpZFN0YXJ0TG9hZGluZygpIiwgdGhpcyk7
CiAgICAgQVNTRVJUKG1fYmxvYkxvYWRlcik7CiAgICAgQVNTRVJUKG1fYmxvYkxvYWRlclN0YXR1
cyA9PSBCbG9iTG9hZGVyU3RhcnRlZCk7CiB9CiAKIHZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6ZGlk
UmVjZWl2ZURhdGEoKQogewotICAgIExPRyhOZXR3b3JrLCAiV2ViU29ja2V0Q2hhbm5lbCAlcCBk
aWRSZWNlaXZlRGF0YSIsIHRoaXMpOworICAgIExPRyhOZXR3b3JrLCAiV2ViU29ja2V0Q2hhbm5l
bCAlcCBkaWRSZWNlaXZlRGF0YSgpIiwgdGhpcyk7CiAgICAgQVNTRVJUKG1fYmxvYkxvYWRlcik7
CiAgICAgQVNTRVJUKG1fYmxvYkxvYWRlclN0YXR1cyA9PSBCbG9iTG9hZGVyU3RhcnRlZCk7CiB9
CiAKIHZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6ZGlkRmluaXNoTG9hZGluZygpCiB7Ci0gICAgTE9H
KE5ldHdvcmssICJXZWJTb2NrZXRDaGFubmVsICVwIGRpZEZpbmlzaExvYWRpbmciLCB0aGlzKTsK
KyAgICBMT0coTmV0d29yaywgIldlYlNvY2tldENoYW5uZWwgJXAgZGlkRmluaXNoTG9hZGluZygp
IiwgdGhpcyk7CiAgICAgQVNTRVJUKG1fYmxvYkxvYWRlcik7CiAgICAgQVNTRVJUKG1fYmxvYkxv
YWRlclN0YXR1cyA9PSBCbG9iTG9hZGVyU3RhcnRlZCk7CiAgICAgbV9ibG9iTG9hZGVyU3RhdHVz
ID0gQmxvYkxvYWRlckZpbmlzaGVkOwpAQCAtMzczLDcgKzM3Myw3IEBAIHZvaWQgV2ViU29ja2V0
Q2hhbm5lbDo6ZGlkRmluaXNoTG9hZGluZygpCiAKIHZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6ZGlk
RmFpbChpbnQgZXJyb3JDb2RlKQogewotICAgIExPRyhOZXR3b3JrLCAiV2ViU29ja2V0Q2hhbm5l
bCAlcCBkaWRGYWlsICVkIiwgdGhpcywgZXJyb3JDb2RlKTsKKyAgICBMT0coTmV0d29yaywgIldl
YlNvY2tldENoYW5uZWwgJXAgZGlkRmFpbCgpIGVycm9yQ29kZT0lZCIsIHRoaXMsIGVycm9yQ29k
ZSk7CiAgICAgQVNTRVJUKG1fYmxvYkxvYWRlcik7CiAgICAgQVNTRVJUKG1fYmxvYkxvYWRlclN0
YXR1cyA9PSBCbG9iTG9hZGVyU3RhcnRlZCk7CiAgICAgbV9ibG9iTG9hZGVyLmNsZWFyKCk7CkBA
IC0zODcsNyArMzg3LDcgQEAgYm9vbCBXZWJTb2NrZXRDaGFubmVsOjphcHBlbmRUb0J1ZmZlcihj
b25zdCBjaGFyKiBkYXRhLCBzaXplX3QgbGVuKQogewogICAgIHNpemVfdCBuZXdCdWZmZXJTaXpl
ID0gbV9idWZmZXIuc2l6ZSgpICsgbGVuOwogICAgIGlmIChuZXdCdWZmZXJTaXplIDwgbV9idWZm
ZXIuc2l6ZSgpKSB7Ci0gICAgICAgIExPRyhOZXR3b3JrLCAiV2ViU29ja2V0IGJ1ZmZlciBvdmVy
ZmxvdyAoJWx1KyVsdSkiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nPihtX2J1ZmZlci5zaXpl
KCkpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nPihsZW4pKTsKKyAgICAgICAgTE9HKE5ldHdv
cmssICJXZWJTb2NrZXRDaGFubmVsICVwIGFwcGVuZFRvQnVmZmVyKCkgQnVmZmVyIG92ZXJmbG93
ICglbHUgYnl0ZXMgYWxyZWFkeSBpbiByZWNlaXZlIGJ1ZmZlciBhbmQgYXBwZW5kaW5nICVsdSBi
eXRlcykiLCB0aGlzLCBzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nPihtX2J1ZmZlci5zaXplKCkp
LCBzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nPihsZW4pKTsKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIH0KICAgICBtX2J1ZmZlci5hcHBlbmQoZGF0YSwgbGVuKTsKQEAgLTQwNiw3ICs0MDYs
NyBAQCBib29sIFdlYlNvY2tldENoYW5uZWw6OnByb2Nlc3NCdWZmZXIoKQogICAgIEFTU0VSVCgh
bV9zdXNwZW5kZWQpOwogICAgIEFTU0VSVChtX2NsaWVudCk7CiAgICAgQVNTRVJUKCFtX2J1ZmZl
ci5pc0VtcHR5KCkpOwotICAgIExPRyhOZXR3b3JrLCAiV2ViU29ja2V0Q2hhbm5lbCAlcCBwcm9j
ZXNzQnVmZmVyICVsdSIsIHRoaXMsIHN0YXRpY19jYXN0PHVuc2lnbmVkIGxvbmc+KG1fYnVmZmVy
LnNpemUoKSkpOworICAgIExPRyhOZXR3b3JrLCAiV2ViU29ja2V0Q2hhbm5lbCAlcCBwcm9jZXNz
QnVmZmVyKCkgUmVjZWl2ZSBidWZmZXIgaGFzICVsdSBieXRlcyIsIHRoaXMsIHN0YXRpY19jYXN0
PHVuc2lnbmVkIGxvbmc+KG1fYnVmZmVyLnNpemUoKSkpOwogCiAgICAgaWYgKG1fc2hvdWxkRGlz
Y2FyZFJlY2VpdmVkRGF0YSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNDMyLDE0ICs0MzIs
MTQgQEAgYm9vbCBXZWJTb2NrZXRDaGFubmVsOjpwcm9jZXNzQnVmZmVyKCkKICAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAvLyBGSVhNRTogaGFuZGxlIHNldC1j
b29raWUyLgotICAgICAgICAgICAgTE9HKE5ldHdvcmssICJXZWJTb2NrZXRDaGFubmVsICVwIGNv
bm5lY3RlZCIsIHRoaXMpOworICAgICAgICAgICAgTE9HKE5ldHdvcmssICJXZWJTb2NrZXRDaGFu
bmVsICVwIENvbm5lY3RlZCIsIHRoaXMpOwogICAgICAgICAgICAgc2tpcEJ1ZmZlcihoZWFkZXJM
ZW5ndGgpOwogICAgICAgICAgICAgbV9jbGllbnQtPmRpZENvbm5lY3QoKTsKLSAgICAgICAgICAg
IExPRyhOZXR3b3JrLCAicmVtYWluaW5nIGluIHJlYWQgYnVmICVsdSIsIHN0YXRpY19jYXN0PHVu
c2lnbmVkIGxvbmc+KG1fYnVmZmVyLnNpemUoKSkpOworICAgICAgICAgICAgTE9HKE5ldHdvcmss
ICJXZWJTb2NrZXRDaGFubmVsICVwICVsdSBieXRlcyByZW1haW5pbmcgaW4gbV9idWZmZXIiLCB0
aGlzLCBzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nPihtX2J1ZmZlci5zaXplKCkpKTsKICAgICAg
ICAgICAgIHJldHVybiAhbV9idWZmZXIuaXNFbXB0eSgpOwogICAgICAgICB9CiAgICAgICAgIEFT
U0VSVChtX2hhbmRzaGFrZS0+bW9kZSgpID09IFdlYlNvY2tldEhhbmRzaGFrZTo6RmFpbGVkKTsK
LSAgICAgICAgTE9HKE5ldHdvcmssICJXZWJTb2NrZXRDaGFubmVsICVwIGNvbm5lY3Rpb24gZmFp
bGVkIiwgdGhpcyk7CisgICAgICAgIExPRyhOZXR3b3JrLCAiV2ViU29ja2V0Q2hhbm5lbCAlcCBD
b25uZWN0aW9uIGZhaWxlZCIsIHRoaXMpOwogICAgICAgICBza2lwQnVmZmVyKGhlYWRlckxlbmd0
aCk7CiAgICAgICAgIG1fc2hvdWxkRGlzY2FyZFJlY2VpdmVkRGF0YSA9IHRydWU7CiAgICAgICAg
IGZhaWwobV9oYW5kc2hha2UtPmZhaWx1cmVSZWFzb24oKSk7CkBAIC00NjUsNyArNDY1LDcgQEAg
dm9pZCBXZWJTb2NrZXRDaGFubmVsOjpyZXN1bWVUaW1lckZpcmVkKFRpbWVyPFdlYlNvY2tldENo
YW5uZWw+KiB0aW1lcikKIAogdm9pZCBXZWJTb2NrZXRDaGFubmVsOjpzdGFydENsb3NpbmdIYW5k
c2hha2UoaW50IGNvZGUsIGNvbnN0IFN0cmluZyYgcmVhc29uKQogewotICAgIExPRyhOZXR3b3Jr
LCAiV2ViU29ja2V0Q2hhbm5lbCAlcCBjbG9zaW5nICVkICVkIiwgdGhpcywgbV9jbG9zaW5nLCBt
X3JlY2VpdmVkQ2xvc2luZ0hhbmRzaGFrZSk7CisgICAgTE9HKE5ldHdvcmssICJXZWJTb2NrZXRD
aGFubmVsICVwIHN0YXJ0Q2xvc2luZ0hhbmRzaGFrZSgpIGNvZGU9JWQgbV9yZWNlaXZlZENsb3Np
bmdIYW5kc2hha2U9JWQiLCB0aGlzLCBtX2Nsb3NpbmcsIG1fcmVjZWl2ZWRDbG9zaW5nSGFuZHNo
YWtlKTsKICAgICBpZiAobV9jbG9zaW5nKQogICAgICAgICByZXR1cm47CiAgICAgQVNTRVJUKG1f
aGFuZGxlKTsKQEAgLTQ4Nyw3ICs0ODcsNyBAQCB2b2lkIFdlYlNvY2tldENoYW5uZWw6OnN0YXJ0
Q2xvc2luZ0hhbmRzaGFrZShpbnQgY29kZSwgY29uc3QgU3RyaW5nJiByZWFzb24pCiAKIHZvaWQg
V2ViU29ja2V0Q2hhbm5lbDo6Y2xvc2luZ1RpbWVyRmlyZWQoVGltZXI8V2ViU29ja2V0Q2hhbm5l
bD4qIHRpbWVyKQogewotICAgIExPRyhOZXR3b3JrLCAiV2ViU29ja2V0Q2hhbm5lbCAlcCBjbG9z
aW5nIHRpbWVyIiwgdGhpcyk7CisgICAgTE9HKE5ldHdvcmssICJXZWJTb2NrZXRDaGFubmVsICVw
IGNsb3NpbmdUaW1lckZpcmVkKCkiLCB0aGlzKTsKICAgICBBU1NFUlRfVU5VU0VEKHRpbWVyLCAm
bV9jbG9zaW5nVGltZXIgPT0gdGltZXIpOwogICAgIGlmIChtX2hhbmRsZSkKICAgICAgICAgbV9o
YW5kbGUtPmRpc2Nvbm5lY3QoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2Vic29ja2V0cy9XZWJTb2NrZXREZWZsYXRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYnNvY2tldHMvV2ViU29ja2V0RGVmbGF0ZXIuY3BwCmluZGV4IGEwY2NlZTUzZGJlYmI0NDBh
NjIxNmZkZDZlZTlmYjhiMzA2NjgzZDUuLmFlZjRiMWU5ZDMzMmIwMDdjYzU5MWExNzVmMTEzYjkw
ZDgzODFhYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9X
ZWJTb2NrZXREZWZsYXRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2Nr
ZXRzL1dlYlNvY2tldERlZmxhdGVyLmNwcApAQCAtNzEsNyArNzEsNyBAQCBXZWJTb2NrZXREZWZs
YXRlcjo6fldlYlNvY2tldERlZmxhdGVyKCkKIHsKICAgICBpbnQgcmVzdWx0ID0gZGVmbGF0ZUVu
ZChtX3N0cmVhbS5nZXQoKSk7CiAgICAgaWYgKHJlc3VsdCAhPSBaX09LKQotICAgICAgICBMT0co
TmV0d29yaywgImRlZmxhdGVFbmQoKSBmYWlsZWQ6ICVkIiwgcmVzdWx0KTsKKyAgICAgICAgTE9H
KE5ldHdvcmssICJXZWJTb2NrZXREZWZsYXRlciAlcCBEZXN0cnVjdG9yIGRlZmxhdGVFbmQoKSBm
YWlsZWQ6ICVkIGlzIHJldHVybmVkIiwgdGhpcywgcmVzdWx0KTsKIH0KIAogc3RhdGljIHZvaWQg
c2V0U3RyZWFtUGFyYW1ldGVyKHpfc3RyZWFtKiBzdHJlYW0sIGNvbnN0IGNoYXIqIGlucHV0RGF0
YSwgc2l6ZV90IGlucHV0TGVuZ3RoLCBjaGFyKiBvdXRwdXREYXRhLCBzaXplX3Qgb3V0cHV0TGVu
Z3RoKQpAQCAtMTQ4LDcgKzE0OCw3IEBAIFdlYlNvY2tldEluZmxhdGVyOjp+V2ViU29ja2V0SW5m
bGF0ZXIoKQogewogICAgIGludCByZXN1bHQgPSBpbmZsYXRlRW5kKG1fc3RyZWFtLmdldCgpKTsK
ICAgICBpZiAocmVzdWx0ICE9IFpfT0spCi0gICAgICAgIExPRyhOZXR3b3JrLCAiaW5mbGF0ZUVu
ZCgpIGZhaWxlZDogJWQiLCByZXN1bHQpOworICAgICAgICBMT0coTmV0d29yaywgIldlYlNvY2tl
dEluZmxhdGVyICVwIERlc3RydWN0b3IgaW5mbGF0ZUVuZCgpIGZhaWxlZDogJWQgaXMgcmV0dXJu
ZWQiLCB0aGlzLCByZXN1bHQpOwogfQogCiBib29sIFdlYlNvY2tldEluZmxhdGVyOjphZGRCeXRl
cyhjb25zdCBjaGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmNwcAppbmRleCBj
ZGMzYmM0ZGRjOTMyYjMxYzI0OTQ1OWM5OWNiNzU0NTY5OTg5MjU2Li40N2U0ZTFmM2ZiNDE5MmI2
ZTUyNmU1ODgxMTJhMGY3YjIxYjYxN2Q3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmNwcApAQCAtMjk2LDcgKzI5
Niw3IEBAIGludCBXZWJTb2NrZXRIYW5kc2hha2U6OnJlYWRTZXJ2ZXJIYW5kc2hha2UoY29uc3Qg
Y2hhciogaGVhZGVyLCBzaXplX3QgbGVuKQogICAgICAgICBtX21vZGUgPSBGYWlsZWQ7IC8vIG1f
ZmFpbHVyZVJlYXNvbiBpcyBzZXQgaW5zaWRlIHJlYWRTdGF0dXNMaW5lKCkuCiAgICAgICAgIHJl
dHVybiBsZW47CiAgICAgfQotICAgIExPRyhOZXR3b3JrLCAicmVzcG9uc2UgY29kZTogJWQiLCBz
dGF0dXNDb2RlKTsKKyAgICBMT0coTmV0d29yaywgIldlYlNvY2tldEhhbmRzaGFrZSAlcCByZWFk
U2VydmVySGFuZHNoYWtlKCkgU3RhdHVzIGNvZGUgaXMgJWQiLCB0aGlzLCBzdGF0dXNDb2RlKTsK
ICAgICBtX3Jlc3BvbnNlLnNldFN0YXR1c0NvZGUoc3RhdHVzQ29kZSk7CiAgICAgbV9yZXNwb25z
ZS5zZXRTdGF0dXNUZXh0KHN0YXR1c1RleHQpOwogICAgIGlmIChzdGF0dXNDb2RlICE9IDEwMSkg
ewpAQCAtMzEyLDEyICszMTIsMTIgQEAgaW50IFdlYlNvY2tldEhhbmRzaGFrZTo6cmVhZFNlcnZl
ckhhbmRzaGFrZShjb25zdCBjaGFyKiBoZWFkZXIsIHNpemVfdCBsZW4pCiAgICAgfQogICAgIGNv
bnN0IGNoYXIqIHAgPSByZWFkSFRUUEhlYWRlcnMoaGVhZGVyICsgbGluZUxlbmd0aCwgaGVhZGVy
ICsgbGVuKTsKICAgICBpZiAoIXApIHsKLSAgICAgICAgTE9HKE5ldHdvcmssICJyZWFkSFRUUEhl
YWRlcnMgZmFpbGVkIik7CisgICAgICAgIExPRyhOZXR3b3JrLCAiV2ViU29ja2V0SGFuZHNoYWtl
ICVwIHJlYWRTZXJ2ZXJIYW5kc2hha2UoKSByZWFkSFRUUEhlYWRlcnMoKSBmYWlsZWQiLCB0aGlz
KTsKICAgICAgICAgbV9tb2RlID0gRmFpbGVkOyAvLyBtX2ZhaWx1cmVSZWFzb24gaXMgc2V0IGlu
c2lkZSByZWFkSFRUUEhlYWRlcnMoKS4KICAgICAgICAgcmV0dXJuIGxlbjsKICAgICB9CiAgICAg
aWYgKCFjaGVja1Jlc3BvbnNlSGVhZGVycygpKSB7Ci0gICAgICAgIExPRyhOZXR3b3JrLCAiaGVh
ZGVyIHByb2Nlc3MgZmFpbGVkIik7CisgICAgICAgIExPRyhOZXR3b3JrLCAiV2ViU29ja2V0SGFu
ZHNoYWtlICVwIHJlYWRTZXJ2ZXJIYW5kc2hha2UoKSBjaGVja1Jlc3BvbnNlSGVhZGVycygpIGZh
aWxlZCIsIHRoaXMpOwogICAgICAgICBtX21vZGUgPSBGYWlsZWQ7CiAgICAgICAgIHJldHVybiBw
IC0gaGVhZGVyOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY2hyb21pdW0vU29ja2V0U3RyZWFtSGFuZGxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY2hyb21pdW0vU29ja2V0U3RyZWFtSGFuZGxlLmNwcAppbmRleCBkMDM3
MzI2N2FkY2IyYzEwYzk5ODk0NDYxYzRlNjRhOGRiZTBhZDc2Li5mMjZkNzgxYWVhN2M0NmM1YzI4
Yjk1ZDA2N2NhMzQ2MzlhODFiMmNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2Nocm9taXVtL1NvY2tldFN0cmVhbUhhbmRsZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jaHJvbWl1bS9Tb2NrZXRTdHJlYW1IYW5kbGUuY3BwCkBA
IC01OSw3ICs1OSw3IEBAIFNvY2tldFN0cmVhbUhhbmRsZUludGVybmFsOjp+U29ja2V0U3RyZWFt
SGFuZGxlSW50ZXJuYWwoKQogdm9pZCBTb2NrZXRTdHJlYW1IYW5kbGVJbnRlcm5hbDo6Y29ubmVj
dChjb25zdCBLVVJMJiB1cmwpCiB7CiAgICAgbV9zb2NrZXQgPSBhZG9wdFB0cihXZWJLaXQ6OlBs
YXRmb3JtOjpjdXJyZW50KCktPmNyZWF0ZVNvY2tldFN0cmVhbUhhbmRsZSgpKTsKLSAgICBMT0co
TmV0d29yaywgImNvbm5lY3QiKTsKKyAgICBMT0coTmV0d29yaywgIlNvY2tldFN0cmVhbUhhbmRs
ZUludGVybmFsICVwIGNvbm5lY3QoKSIsIHRoaXMpOwogICAgIEFTU0VSVChtX3NvY2tldCk7CiAg
ICAgQVNTRVJUKG1faGFuZGxlKTsKICAgICBpZiAobV9oYW5kbGUtPm1fY2xpZW50KQpAQCAtNjks
MTIgKzY5LDEyIEBAIHZvaWQgU29ja2V0U3RyZWFtSGFuZGxlSW50ZXJuYWw6OmNvbm5lY3QoY29u
c3QgS1VSTCYgdXJsKQogCiBpbnQgU29ja2V0U3RyZWFtSGFuZGxlSW50ZXJuYWw6OnNlbmQoY29u
c3QgY2hhciogZGF0YSwgaW50IGxlbikKIHsKLSAgICBMT0coTmV0d29yaywgInNlbmQgbGVuPSVk
IiwgbGVuKTsKKyAgICBMT0coTmV0d29yaywgIlNvY2tldFN0cmVhbUhhbmRsZUludGVybmFsICVw
IHNlbmQoKSBsZW49JWQiLCB0aGlzLCBsZW4pOwogICAgIC8vIEZJWE1FOiB8bV9zb2NrZXR8IHNo
b3VsZCBub3QgYmUgbnVsbCBoZXJlLCBidXQgaXQgc2VlbXMgdGhhdCB0aGVyZSBpcyB0aGUKICAg
ICAvLyBjYXNlLiBXZSBzaG91bGQgZmlndXJlIG91dCBzdWNoIGEgcGF0aCBhbmQgZml4IGl0IHJh
dGhlciB0aGFuIGNoZWNraW5nCiAgICAgLy8gbnVsbCBoZXJlLgogICAgIGlmICghbV9zb2NrZXQp
IHsKLSAgICAgICAgTE9HKE5ldHdvcmssICJtX3NvY2tldCBpcyBudWxsIHdoZW4gc2VuZGluZy4g
SXQgc2hvdWxkIG5vdCBiZS4iKTsKKyAgICAgICAgTE9HKE5ldHdvcmssICJTb2NrZXRTdHJlYW1I
YW5kbGVJbnRlcm5hbCAlcCBzZW5kKCkgbV9zb2NrZXQgaXMgTlVMTCIsIHRoaXMpOwogICAgICAg
ICByZXR1cm4gMDsKICAgICB9CiAgICAgaWYgKG1fcGVuZGluZ0Ftb3VudFNlbnQgKyBsZW4gPiBt
X21heFBlbmRpbmdTZW5kQWxsb3dlZCkKQEAgLTg1LDI0ICs4NSwyMyBAQCBpbnQgU29ja2V0U3Ry
ZWFtSGFuZGxlSW50ZXJuYWw6OnNlbmQoY29uc3QgY2hhciogZGF0YSwgaW50IGxlbikKICAgICBX
ZWJLaXQ6OldlYkRhdGEgd2ViZGF0YShkYXRhLCBsZW4pOwogICAgIGlmIChtX3NvY2tldC0+c2Vu
ZCh3ZWJkYXRhKSkgewogICAgICAgICBtX3BlbmRpbmdBbW91bnRTZW50ICs9IGxlbjsKLSAgICAg
ICAgTE9HKE5ldHdvcmssICJzZW50Iik7CisgICAgICAgIExPRyhOZXR3b3JrLCAiU29ja2V0U3Ry
ZWFtSGFuZGxlSW50ZXJuYWwgJXAgc2VuZCgpIFNlbnQgJWQgYnl0ZXMiLCB0aGlzLCBsZW4pOwog
ICAgICAgICByZXR1cm4gbGVuOwogICAgIH0KLSAgICBMT0coTmV0d29yaywgImJ1c3kuIGJ1ZmZl
cmluZyIpOworICAgIExPRyhOZXR3b3JrLCAiU29ja2V0U3RyZWFtSGFuZGxlSW50ZXJuYWwgJXAg
c2VuZCgpIG1fc29ja2V0LT5zZW5kKCkgZmFpbGVkIiwgdGhpcyk7CiAgICAgcmV0dXJuIDA7CiB9
CiAKIHZvaWQgU29ja2V0U3RyZWFtSGFuZGxlSW50ZXJuYWw6OmNsb3NlKCkKIHsKLSAgICBMT0co
TmV0d29yaywgImNsb3NlIik7CisgICAgTE9HKE5ldHdvcmssICJTb2NrZXRTdHJlYW1IYW5kbGVJ
bnRlcm5hbCAlcCBjbG9zZSgpIiwgdGhpcyk7CiAgICAgaWYgKG1fc29ja2V0KQogICAgICAgICBt
X3NvY2tldC0+Y2xvc2UoKTsKIH0KIAogdm9pZCBTb2NrZXRTdHJlYW1IYW5kbGVJbnRlcm5hbDo6
ZGlkT3BlblN0cmVhbShXZWJLaXQ6OldlYlNvY2tldFN0cmVhbUhhbmRsZSogc29ja2V0SGFuZGxl
LCBpbnQgbWF4UGVuZGluZ1NlbmRBbGxvd2VkKQogewotICAgIExPRyhOZXR3b3JrLCAiU29ja2V0
U3RyZWFtSGFuZGxlSW50ZXJuYWw6OmRpZE9wZW4gJWQiLAotICAgICAgICBtYXhQZW5kaW5nU2Vu
ZEFsbG93ZWQpOworICAgIExPRyhOZXR3b3JrLCAiU29ja2V0U3RyZWFtSGFuZGxlSW50ZXJuYWwg
JXAgZGlkT3BlblN0cmVhbSgpIG1heFBlbmRpbmdTZW5kQWxsb3dlZD0lZCIsIHRoaXMsIG1heFBl
bmRpbmdTZW5kQWxsb3dlZCk7CiAgICAgQVNTRVJUKG1heFBlbmRpbmdTZW5kQWxsb3dlZCA+IDAp
OwogICAgIGlmIChtX2hhbmRsZSAmJiBtX3NvY2tldCkgewogICAgICAgICBBU1NFUlQoc29ja2V0
SGFuZGxlID09IG1fc29ja2V0LmdldCgpKTsKQEAgLTExMywxMiArMTEyLDEyIEBAIHZvaWQgU29j
a2V0U3RyZWFtSGFuZGxlSW50ZXJuYWw6OmRpZE9wZW5TdHJlYW0oV2ViS2l0OjpXZWJTb2NrZXRT
dHJlYW1IYW5kbGUqIHNvCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICB9Ci0g
ICAgTE9HKE5ldHdvcmssICJubyBtX2hhbmRsZSBvciBtX3NvY2tldD8iKTsKKyAgICBMT0coTmV0
d29yaywgIlNvY2tldFN0cmVhbUhhbmRsZUludGVybmFsICVwIGRpZE9wZW5TdHJlYW0oKSBtX2hh
bmRsZSBvciBtX3NvY2tldCBpcyBOVUxMIiwgdGhpcyk7CiB9CiAKIHZvaWQgU29ja2V0U3RyZWFt
SGFuZGxlSW50ZXJuYWw6OmRpZFNlbmREYXRhKFdlYktpdDo6V2ViU29ja2V0U3RyZWFtSGFuZGxl
KiBzb2NrZXRIYW5kbGUsIGludCBhbW91bnRTZW50KQogewotICAgIExPRyhOZXR3b3JrLCAiU29j
a2V0U3RyZWFtSGFuZGxlSW50ZXJuYWw6OmRpZFNlbmREYXRhICVkIiwgYW1vdW50U2VudCk7Cisg
ICAgTE9HKE5ldHdvcmssICJTb2NrZXRTdHJlYW1IYW5kbGVJbnRlcm5hbCAlcCBkaWRTZW5kRGF0
YSgpIGFtb3VudFNlbnQ9JWQiLCB0aGlzLCBhbW91bnRTZW50KTsKICAgICBBU1NFUlQoYW1vdW50
U2VudCA+IDApOwogICAgIGlmIChtX2hhbmRsZSAmJiBtX3NvY2tldCkgewogICAgICAgICBBU1NF
UlQoc29ja2V0SGFuZGxlID09IG1fc29ja2V0LmdldCgpKTsKQEAgLTEzMCw3ICsxMjksNyBAQCB2
b2lkIFNvY2tldFN0cmVhbUhhbmRsZUludGVybmFsOjpkaWRTZW5kRGF0YShXZWJLaXQ6OldlYlNv
Y2tldFN0cmVhbUhhbmRsZSogc29jawogCiB2b2lkIFNvY2tldFN0cmVhbUhhbmRsZUludGVybmFs
OjpkaWRSZWNlaXZlRGF0YShXZWJLaXQ6OldlYlNvY2tldFN0cmVhbUhhbmRsZSogc29ja2V0SGFu
ZGxlLCBjb25zdCBXZWJLaXQ6OldlYkRhdGEmIGRhdGEpCiB7Ci0gICAgTE9HKE5ldHdvcmssICJk
aWRSZWNlaXZlRGF0YSIpOworICAgIExPRyhOZXR3b3JrLCAiU29ja2V0U3RyZWFtSGFuZGxlSW50
ZXJuYWwgJXAgZGlkUmVjZWl2ZURhdGEoKSBSZWNlaXZlZCAlbHUgYnl0ZXMiLCB0aGlzLCBkYXRh
LnNpemUoKSk7CiAgICAgaWYgKG1faGFuZGxlICYmIG1fc29ja2V0KSB7CiAgICAgICAgIEFTU0VS
VChzb2NrZXRIYW5kbGUgPT0gbV9zb2NrZXQuZ2V0KCkpOwogICAgICAgICBpZiAobV9oYW5kbGUt
Pm1fY2xpZW50KQpAQCAtMTQwLDcgKzEzOSw3IEBAIHZvaWQgU29ja2V0U3RyZWFtSGFuZGxlSW50
ZXJuYWw6OmRpZFJlY2VpdmVEYXRhKFdlYktpdDo6V2ViU29ja2V0U3RyZWFtSGFuZGxlKiBzCiAK
IHZvaWQgU29ja2V0U3RyZWFtSGFuZGxlSW50ZXJuYWw6OmRpZENsb3NlKFdlYktpdDo6V2ViU29j
a2V0U3RyZWFtSGFuZGxlKiBzb2NrZXRIYW5kbGUpCiB7Ci0gICAgTE9HKE5ldHdvcmssICJkaWRD
bG9zZSIpOworICAgIExPRyhOZXR3b3JrLCAiU29ja2V0U3RyZWFtSGFuZGxlSW50ZXJuYWwgJXAg
ZGlkQ2xvc2UoKSIsIHRoaXMpOwogICAgIGlmIChtX2hhbmRsZSAmJiBtX3NvY2tldCkgewogICAg
ICAgICBBU1NFUlQoc29ja2V0SGFuZGxlID09IG1fc29ja2V0LmdldCgpKTsKICAgICAgICAgbV9z
b2NrZXQuY2xlYXIoKTsKQEAgLTE1Myw3ICsxNTIsNyBAQCB2b2lkIFNvY2tldFN0cmVhbUhhbmRs
ZUludGVybmFsOjpkaWRDbG9zZShXZWJLaXQ6OldlYlNvY2tldFN0cmVhbUhhbmRsZSogc29ja2V0
SAogCiB2b2lkIFNvY2tldFN0cmVhbUhhbmRsZUludGVybmFsOjpkaWRGYWlsKFdlYktpdDo6V2Vi
U29ja2V0U3RyZWFtSGFuZGxlKiBzb2NrZXRIYW5kbGUsIGNvbnN0IFdlYktpdDo6V2ViU29ja2V0
U3RyZWFtRXJyb3ImIGVycikKIHsKLSAgICBMT0coTmV0d29yaywgImRpZEZhaWwiKTsKKyAgICBM
T0coTmV0d29yaywgIlNvY2tldFN0cmVhbUhhbmRsZUludGVybmFsICVwIGRpZEZhaWwoKSIsIHRo
aXMpOwogICAgIGlmIChtX2hhbmRsZSAmJiBtX3NvY2tldCkgewogICAgICAgICBBU1NFUlQoc29j
a2V0SGFuZGxlID09IG1fc29ja2V0LmdldCgpKTsKICAgICAgICAgbV9zb2NrZXQuY2xlYXIoKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>196314</attachid>
            <date>2013-04-03 03:19:52 -0700</date>
            <delta_ts>2013-04-03 05:14:19 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-113852-20130403191942.patch</filename>
            <type>text/plain</type>
            <size>28673</size>
            <attacher name="Takeshi Yoshino">tyoshino</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ3MzU2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDhmOTIxOWM4MzM4MTky
MzkyNjUwN2Y0OTM3MTM0YzVkOGJlYjhmZS4uNjYyNzYxNmZjZmE0NDlmMTAwMWQ3YThiZGVhMWUz
MDdlYTVlODBlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY1IEBACisyMDEzLTA0LTAyICBUYWtl
c2hpIFlvc2hpbm8gIDx0eW9zaGlub0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmVmaW5lIExP
RyBtZXNzYWdlcyBpbiBXZWJTb2NrZXQgcmVsYXRlZCBjb21wb25lbnRzCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTM4NTIKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZWZpbmUgTE9HIG1lc3NhZ2VzIGJ5
CisgICAgICAgIC0gTWFrZSB0aGVtIGNvbnRhaW4gbWV0aG9kIG5hbWVzIHRvIGVhc2UgaWRlbnRp
Znlpbmcgd2hlcmUgdGhlIGV2ZW50IG9jY3VycmVkLgorICAgICAgICAtIEZvciBjb25zaXN0ZW5j
eSwgbWFrZSBhbGwgbWVzc2FnZXMgcHJpbnQgdGhlIHBvaW50ZXIgb2YgdGhlIG9yaWdpbiBpbnN0
YW5jZS4KKyAgICAgICAgLSBRdW90ZSBVVEY4IGRhdGEgaW4gTE9HIG1lc3NhZ2VzLgorICAgICAg
ICAtIEZvciBvdmVybG9hZGVkIG1ldGhvZHMsIGFkZCB0aGUgdHlwZSB0byBjbGFyaWZ5IHdoaWNo
IG9uZSBpcyBydW4KKworICAgICAgICAqIE1vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0Ojpjb25uZWN0KToKKyAgICAgICAgKFdlYkNv
cmU6OldlYlNvY2tldDo6c2VuZCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXQ6OmNsb3Nl
KToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldDo6Y29udGV4dERlc3Ryb3llZCk6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJTb2NrZXQ6OmRpZENvbm5lY3QpOgorICAgICAgICAoV2ViQ29yZTo6
V2ViU29ja2V0OjpkaWRSZWNlaXZlTWVzc2FnZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2Nr
ZXQ6OmRpZFJlY2VpdmVCaW5hcnlEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldDo6
ZGlkUmVjZWl2ZU1lc3NhZ2VFcnJvcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXQ6OmRp
ZFVwZGF0ZUJ1ZmZlcmVkQW1vdW50KToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldDo6ZGlk
U3RhcnRDbG9zaW5nSGFuZHNoYWtlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldDo6ZGlk
Q2xvc2UpOgorICAgICAgICAqIE1vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldENoYW5uZWw6OmNvbm5lY3QpOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViU29ja2V0Q2hhbm5lbDo6c3VicHJvdG9jb2wpOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViU29ja2V0Q2hhbm5lbDo6ZXh0ZW5zaW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJTb2NrZXRDaGFubmVsOjpzZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldENoYW5u
ZWw6OmJ1ZmZlcmVkQW1vdW50KToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldENoYW5uZWw6
OmNsb3NlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldENoYW5uZWw6OmZhaWwpOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViU29ja2V0Q2hhbm5lbDo6ZGlzY29ubmVjdCk6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJTb2NrZXRDaGFubmVsOjp3aWxsT3BlblNvY2tldFN0cmVhbSk6CisgICAgICAg
IChXZWJDb3JlOjpXZWJTb2NrZXRDaGFubmVsOjpkaWRPcGVuU29ja2V0U3RyZWFtKToKKyAgICAg
ICAgKFdlYkNvcmU6OldlYlNvY2tldENoYW5uZWw6OmRpZENsb3NlU29ja2V0U3RyZWFtKToKKyAg
ICAgICAgKFdlYkNvcmU6OldlYlNvY2tldENoYW5uZWw6OmRpZFJlY2VpdmVTb2NrZXRTdHJlYW1E
YXRhKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldENoYW5uZWw6OmRpZEZhaWxTb2NrZXRT
dHJlYW0pOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0Q2hhbm5lbDo6ZGlkU3RhcnRMb2Fk
aW5nKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldENoYW5uZWw6OmRpZFJlY2VpdmVEYXRh
KToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldENoYW5uZWw6OmRpZEZpbmlzaExvYWRpbmcp
OgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0Q2hhbm5lbDo6ZGlkRmFpbCk6CisgICAgICAg
IChXZWJDb3JlOjpXZWJTb2NrZXRDaGFubmVsOjphcHBlbmRUb0J1ZmZlcik6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJTb2NrZXRDaGFubmVsOjpwcm9jZXNzQnVmZmVyKToKKyAgICAgICAgKFdlYkNv
cmU6OldlYlNvY2tldENoYW5uZWw6OnN0YXJ0Q2xvc2luZ0hhbmRzaGFrZSk6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJTb2NrZXRDaGFubmVsOjpjbG9zaW5nVGltZXJGaXJlZCk6CisgICAgICAgICog
TW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldERlZmxhdGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OldlYlNvY2tldERlZmxhdGVyOjp+V2ViU29ja2V0RGVmbGF0ZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViU29ja2V0SW5mbGF0ZXI6On5XZWJTb2NrZXRJbmZsYXRlcik6CisgICAgICAgICog
TW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpXZWJTb2NrZXRIYW5kc2hha2U6OnJlYWRTZXJ2ZXJIYW5kc2hha2UpOgorICAgICAgICAq
IHBsYXRmb3JtL25ldHdvcmsvY2hyb21pdW0vU29ja2V0U3RyZWFtSGFuZGxlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNvY2tldFN0cmVhbUhhbmRsZUludGVybmFsOjpjb25uZWN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlNvY2tldFN0cmVhbUhhbmRsZUludGVybmFsOjpzZW5kKToKKyAgICAgICAg
KFdlYkNvcmU6OlNvY2tldFN0cmVhbUhhbmRsZUludGVybmFsOjpjbG9zZSk6CisgICAgICAgIChX
ZWJDb3JlOjpTb2NrZXRTdHJlYW1IYW5kbGVJbnRlcm5hbDo6ZGlkT3BlblN0cmVhbSk6CisgICAg
ICAgIChXZWJDb3JlOjpTb2NrZXRTdHJlYW1IYW5kbGVJbnRlcm5hbDo6ZGlkU2VuZERhdGEpOgor
ICAgICAgICAoV2ViQ29yZTo6U29ja2V0U3RyZWFtSGFuZGxlSW50ZXJuYWw6OmRpZFJlY2VpdmVE
YXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlNvY2tldFN0cmVhbUhhbmRsZUludGVybmFsOjpkaWRD
bG9zZSk6CisgICAgICAgIChXZWJDb3JlOjpTb2NrZXRTdHJlYW1IYW5kbGVJbnRlcm5hbDo6ZGlk
RmFpbCk6CisKIDIwMTMtMDQtMDEgIFRpbW90aHkgSGF0Y2hlciAgPHRpbW90aHlAYXBwbGUuY29t
PgogCiAgICAgICAgIE1ha2UgJ3RoaXMnIGV2YWx1YXRlIHRvIHRoZSBjb3JyZWN0IG9iamVjdCB3
aGVuIHBhdXNlZCBpbiB0aGUgRGVidWdnZXIuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwCmluZGV4IDgxZWZhM2U1OWExN2I0ZGFhZjhmNzZmMDcx
YjM1NjE0N2VjZTk4N2MuLjg3YjAxZjUyZWZmOWQ2ZGM4ZDNlNTQ0YWRiMjk3MTlmM2VkMGMzOGUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuY3Bw
CkBAIC0yMTEsNyArMjExLDcgQEAgdm9pZCBXZWJTb2NrZXQ6OmNvbm5lY3QoY29uc3QgU3RyaW5n
JiB1cmwsIGNvbnN0IFN0cmluZyYgcHJvdG9jb2wsIEV4Y2VwdGlvbkNvZGUKIAogdm9pZCBXZWJT
b2NrZXQ6OmNvbm5lY3QoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBw
cm90b2NvbHMsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewotICAgIExPRyhOZXR3b3JrLCAiV2ViU29j
a2V0ICVwIGNvbm5lY3QgdG8gJXMiLCB0aGlzLCB1cmwudXRmOCgpLmRhdGEoKSk7CisgICAgTE9H
KE5ldHdvcmssICJXZWJTb2NrZXQgJXAgY29ubmVjdCgpIHVybD0nJXMnIiwgdGhpcywgdXJsLnV0
ZjgoKS5kYXRhKCkpOwogICAgIG1fdXJsID0gS1VSTChLVVJMKCksIHVybCk7CiAKICAgICBpZiAo
IW1fdXJsLmlzVmFsaWQoKSkgewpAQCAtMjkyLDcgKzI5Miw3IEBAIHZvaWQgV2ViU29ja2V0Ojpj
b25uZWN0KGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcHJvdG9jb2xz
LCBFeGNlCiAKIGJvb2wgV2ViU29ja2V0OjpzZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgRXhj
ZXB0aW9uQ29kZSYgZWMpCiB7Ci0gICAgTE9HKE5ldHdvcmssICJXZWJTb2NrZXQgJXAgc2VuZCAl
cyIsIHRoaXMsIG1lc3NhZ2UudXRmOCgpLmRhdGEoKSk7CisgICAgTE9HKE5ldHdvcmssICJXZWJT
b2NrZXQgJXAgc2VuZCgpIFNlbmRpbmcgU3RyaW5nICclcyciLCB0aGlzLCBtZXNzYWdlLnV0Zjgo
KS5kYXRhKCkpOwogICAgIGlmIChtX3N0YXRlID09IENPTk5FQ1RJTkcpIHsKICAgICAgICAgZWMg
PSBJTlZBTElEX1NUQVRFX0VSUjsKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMzE2LDcgKzMx
Niw3IEBAIGJvb2wgV2ViU29ja2V0OjpzZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgRXhjZXB0
aW9uQ29kZSYgZWMpCiAKIGJvb2wgV2ViU29ja2V0OjpzZW5kKEFycmF5QnVmZmVyKiBiaW5hcnlE
YXRhLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKLSAgICBMT0coTmV0d29yaywgIldlYlNvY2tldCAl
cCBzZW5kIGFycmF5YnVmZmVyICVwIiwgdGhpcywgYmluYXJ5RGF0YSk7CisgICAgTE9HKE5ldHdv
cmssICJXZWJTb2NrZXQgJXAgc2VuZCgpIFNlbmRpbmcgQXJyYXlCdWZmZXIgJXAiLCB0aGlzLCBi
aW5hcnlEYXRhKTsKICAgICBBU1NFUlQoYmluYXJ5RGF0YSk7CiAgICAgaWYgKG1fc3RhdGUgPT0g
Q09OTkVDVElORykgewogICAgICAgICBlYyA9IElOVkFMSURfU1RBVEVfRVJSOwpAQCAtMzM0LDcg
KzMzNCw3IEBAIGJvb2wgV2ViU29ja2V0OjpzZW5kKEFycmF5QnVmZmVyKiBiaW5hcnlEYXRhLCBF
eGNlcHRpb25Db2RlJiBlYykKIAogYm9vbCBXZWJTb2NrZXQ6OnNlbmQoQXJyYXlCdWZmZXJWaWV3
KiBhcnJheUJ1ZmZlclZpZXcsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewotICAgIExPRyhOZXR3b3Jr
LCAiV2ViU29ja2V0ICVwIHNlbmQgYXJyYXlidWZmZXJ2aWV3ICVwIiwgdGhpcywgYXJyYXlCdWZm
ZXJWaWV3KTsKKyAgICBMT0coTmV0d29yaywgIldlYlNvY2tldCAlcCBzZW5kKCkgU2VuZGluZyBB
cnJheUJ1ZmZlclZpZXcgJXAiLCB0aGlzLCBhcnJheUJ1ZmZlclZpZXcpOwogICAgIEFTU0VSVChh
cnJheUJ1ZmZlclZpZXcpOwogICAgIGlmIChtX3N0YXRlID09IENPTk5FQ1RJTkcpIHsKICAgICAg
ICAgZWMgPSBJTlZBTElEX1NUQVRFX0VSUjsKQEAgLTM1Myw3ICszNTMsNyBAQCBib29sIFdlYlNv
Y2tldDo6c2VuZChBcnJheUJ1ZmZlclZpZXcqIGFycmF5QnVmZmVyVmlldywgRXhjZXB0aW9uQ29k
ZSYgZWMpCiAKIGJvb2wgV2ViU29ja2V0OjpzZW5kKEJsb2IqIGJpbmFyeURhdGEsIEV4Y2VwdGlv
bkNvZGUmIGVjKQogewotICAgIExPRyhOZXR3b3JrLCAiV2ViU29ja2V0ICVwIHNlbmQgYmxvYiAl
cyIsIHRoaXMsIGJpbmFyeURhdGEtPnVybCgpLmVsaWRlZFN0cmluZygpLnV0ZjgoKS5kYXRhKCkp
OworICAgIExPRyhOZXR3b3JrLCAiV2ViU29ja2V0ICVwIHNlbmQoKSBTZW5kaW5nIEJsb2IgJyVz
JyIsIHRoaXMsIGJpbmFyeURhdGEtPnVybCgpLmVsaWRlZFN0cmluZygpLnV0ZjgoKS5kYXRhKCkp
OwogICAgIEFTU0VSVChiaW5hcnlEYXRhKTsKICAgICBpZiAobV9zdGF0ZSA9PSBDT05ORUNUSU5H
KSB7CiAgICAgICAgIGVjID0gSU5WQUxJRF9TVEFURV9FUlI7CkBAIC0zNzIsOSArMzcyLDkgQEAg
Ym9vbCBXZWJTb2NrZXQ6OnNlbmQoQmxvYiogYmluYXJ5RGF0YSwgRXhjZXB0aW9uQ29kZSYgZWMp
CiB2b2lkIFdlYlNvY2tldDo6Y2xvc2UoaW50IGNvZGUsIGNvbnN0IFN0cmluZyYgcmVhc29uLCBF
eGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBpZiAoY29kZSA9PSBXZWJTb2NrZXRDaGFubmVsOjpD
bG9zZUV2ZW50Q29kZU5vdFNwZWNpZmllZCkKLSAgICAgICAgTE9HKE5ldHdvcmssICJXZWJTb2Nr
ZXQgJXAgY2xvc2Ugd2l0aG91dCBjb2RlIGFuZCByZWFzb24iLCB0aGlzKTsKKyAgICAgICAgTE9H
KE5ldHdvcmssICJXZWJTb2NrZXQgJXAgY2xvc2UoKSB3aXRob3V0IGNvZGUgYW5kIHJlYXNvbiIs
IHRoaXMpOwogICAgIGVsc2UgewotICAgICAgICBMT0coTmV0d29yaywgIldlYlNvY2tldCAlcCBj
bG9zZSB3aXRoIGNvZGUgPSAlZCwgcmVhc29uID0gJXMiLCB0aGlzLCBjb2RlLCByZWFzb24udXRm
OCgpLmRhdGEoKSk7CisgICAgICAgIExPRyhOZXR3b3JrLCAiV2ViU29ja2V0ICVwIGNsb3NlKCkg
Y29kZT0lZCByZWFzb249JyVzJyIsIHRoaXMsIGNvZGUsIHJlYXNvbi51dGY4KCkuZGF0YSgpKTsK
ICAgICAgICAgaWYgKCEoY29kZSA9PSBXZWJTb2NrZXRDaGFubmVsOjpDbG9zZUV2ZW50Q29kZU5v
cm1hbENsb3N1cmUgfHwgKFdlYlNvY2tldENoYW5uZWw6OkNsb3NlRXZlbnRDb2RlTWluaW11bVVz
ZXJEZWZpbmVkIDw9IGNvZGUgJiYgY29kZSA8PSBXZWJTb2NrZXRDaGFubmVsOjpDbG9zZUV2ZW50
Q29kZU1heGltdW1Vc2VyRGVmaW5lZCkpKSB7CiAgICAgICAgICAgICBlYyA9IElOVkFMSURfQUND
RVNTX0VSUjsKICAgICAgICAgICAgIHJldHVybjsKQEAgLTQ2MSw3ICs0NjEsNyBAQCBTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBXZWJTb2NrZXQ6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25z
dAogCiB2b2lkIFdlYlNvY2tldDo6Y29udGV4dERlc3Ryb3llZCgpCiB7Ci0gICAgTE9HKE5ldHdv
cmssICJXZWJTb2NrZXQgJXAgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCBkZXN0cm95ZWQiLCB0aGlz
KTsKKyAgICBMT0coTmV0d29yaywgIldlYlNvY2tldCAlcCBjb250ZXh0RGVzdHJveWVkKCkiLCB0
aGlzKTsKICAgICBBU1NFUlQoIW1fY2hhbm5lbCk7CiAgICAgQVNTRVJUKG1fc3RhdGUgPT0gQ0xP
U0VEKTsKICAgICBBY3RpdmVET01PYmplY3Q6OmNvbnRleHREZXN0cm95ZWQoKTsKQEAgLTQ5OCw3
ICs0OTgsNyBAQCB2b2lkIFdlYlNvY2tldDo6c3RvcCgpCiAKIHZvaWQgV2ViU29ja2V0OjpkaWRD
b25uZWN0KCkKIHsKLSAgICBMT0coTmV0d29yaywgIldlYlNvY2tldCAlcCBkaWRDb25uZWN0Iiwg
dGhpcyk7CisgICAgTE9HKE5ldHdvcmssICJXZWJTb2NrZXQgJXAgZGlkQ29ubmVjdCgpIiwgdGhp
cyk7CiAgICAgaWYgKG1fc3RhdGUgIT0gQ09OTkVDVElORykgewogICAgICAgICBkaWRDbG9zZSgw
LCBDbG9zaW5nSGFuZHNoYWtlSW5jb21wbGV0ZSwgV2ViU29ja2V0Q2hhbm5lbDo6Q2xvc2VFdmVu
dENvZGVBYm5vcm1hbENsb3N1cmUsICIiKTsKICAgICAgICAgcmV0dXJuOwpAQCAtNTEyLDcgKzUx
Miw3IEBAIHZvaWQgV2ViU29ja2V0OjpkaWRDb25uZWN0KCkKIAogdm9pZCBXZWJTb2NrZXQ6OmRp
ZFJlY2VpdmVNZXNzYWdlKGNvbnN0IFN0cmluZyYgbXNnKQogewotICAgIExPRyhOZXR3b3JrLCAi
V2ViU29ja2V0ICVwIGRpZFJlY2VpdmVNZXNzYWdlICVzIiwgdGhpcywgbXNnLnV0ZjgoKS5kYXRh
KCkpOworICAgIExPRyhOZXR3b3JrLCAiV2ViU29ja2V0ICVwIGRpZFJlY2VpdmVNZXNzYWdlKCkg
VGV4dCBtZXNzYWdlICclcyciLCB0aGlzLCBtc2cudXRmOCgpLmRhdGEoKSk7CiAgICAgaWYgKG1f
c3RhdGUgIT0gT1BFTiAmJiBtX3N0YXRlICE9IENMT1NJTkcpCiAgICAgICAgIHJldHVybjsKICAg
ICBBU1NFUlQoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKQEAgLTUyMSw2ICs1MjEsNyBAQCB2
b2lkIFdlYlNvY2tldDo6ZGlkUmVjZWl2ZU1lc3NhZ2UoY29uc3QgU3RyaW5nJiBtc2cpCiAKIHZv
aWQgV2ViU29ja2V0OjpkaWRSZWNlaXZlQmluYXJ5RGF0YShQYXNzT3duUHRyPFZlY3RvcjxjaGFy
PiA+IGJpbmFyeURhdGEpCiB7CisgICAgTE9HKE5ldHdvcmssICJXZWJTb2NrZXQgJXAgZGlkUmVj
ZWl2ZUJpbmFyeURhdGEoKSAlbHUgYnl0ZSBiaW5hcnkgbWVzc2FnZSIsIHRoaXMsIGJpbmFyeURh
dGEtPnNpemUoKSk7CiAgICAgc3dpdGNoIChtX2JpbmFyeVR5cGUpIHsKICAgICBjYXNlIEJpbmFy
eVR5cGVCbG9iOiB7CiAgICAgICAgIHNpemVfdCBzaXplID0gYmluYXJ5RGF0YS0+c2l6ZSgpOwpA
QCAtNTQxLDE0ICs1NDIsMTQgQEAgdm9pZCBXZWJTb2NrZXQ6OmRpZFJlY2VpdmVCaW5hcnlEYXRh
KFBhc3NPd25QdHI8VmVjdG9yPGNoYXI+ID4gYmluYXJ5RGF0YSkKIAogdm9pZCBXZWJTb2NrZXQ6
OmRpZFJlY2VpdmVNZXNzYWdlRXJyb3IoKQogewotICAgIExPRyhOZXR3b3JrLCAiV2ViU29ja2V0
ICVwIGRpZFJlY2VpdmVFcnJvck1lc3NhZ2UiLCB0aGlzKTsKKyAgICBMT0coTmV0d29yaywgIldl
YlNvY2tldCAlcCBkaWRSZWNlaXZlRXJyb3JNZXNzYWdlKCkiLCB0aGlzKTsKICAgICBBU1NFUlQo
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKICAgICBkaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVh
dGUoZXZlbnROYW1lcygpLmVycm9yRXZlbnQsIGZhbHNlLCBmYWxzZSkpOwogfQogCiB2b2lkIFdl
YlNvY2tldDo6ZGlkVXBkYXRlQnVmZmVyZWRBbW91bnQodW5zaWduZWQgbG9uZyBidWZmZXJlZEFt
b3VudCkKIHsKLSAgICBMT0coTmV0d29yaywgIldlYlNvY2tldCAlcCBkaWRVcGRhdGVCdWZmZXJl
ZEFtb3VudCAlbHUiLCB0aGlzLCBidWZmZXJlZEFtb3VudCk7CisgICAgTE9HKE5ldHdvcmssICJX
ZWJTb2NrZXQgJXAgZGlkVXBkYXRlQnVmZmVyZWRBbW91bnQoKSBOZXcgYnVmZmVyZWRBbW91bnQg
aXMgJWx1IiwgdGhpcywgYnVmZmVyZWRBbW91bnQpOwogICAgIGlmIChtX3N0YXRlID09IENMT1NF
RCkKICAgICAgICAgcmV0dXJuOwogICAgIG1fYnVmZmVyZWRBbW91bnQgPSBidWZmZXJlZEFtb3Vu
dDsKQEAgLTU1NiwxMyArNTU3LDEzIEBAIHZvaWQgV2ViU29ja2V0OjpkaWRVcGRhdGVCdWZmZXJl
ZEFtb3VudCh1bnNpZ25lZCBsb25nIGJ1ZmZlcmVkQW1vdW50KQogCiB2b2lkIFdlYlNvY2tldDo6
ZGlkU3RhcnRDbG9zaW5nSGFuZHNoYWtlKCkKIHsKLSAgICBMT0coTmV0d29yaywgIldlYlNvY2tl
dCAlcCBkaWRTdGFydENsb3NpbmdIYW5kc2hha2UiLCB0aGlzKTsKKyAgICBMT0coTmV0d29yaywg
IldlYlNvY2tldCAlcCBkaWRTdGFydENsb3NpbmdIYW5kc2hha2UoKSIsIHRoaXMpOwogICAgIG1f
c3RhdGUgPSBDTE9TSU5HOwogfQogCiB2b2lkIFdlYlNvY2tldDo6ZGlkQ2xvc2UodW5zaWduZWQg
bG9uZyB1bmhhbmRsZWRCdWZmZXJlZEFtb3VudCwgQ2xvc2luZ0hhbmRzaGFrZUNvbXBsZXRpb25T
dGF0dXMgY2xvc2luZ0hhbmRzaGFrZUNvbXBsZXRpb24sIHVuc2lnbmVkIHNob3J0IGNvZGUsIGNv
bnN0IFN0cmluZyYgcmVhc29uKQogewotICAgIExPRyhOZXR3b3JrLCAiV2ViU29ja2V0ICVwIGRp
ZENsb3NlIiwgdGhpcyk7CisgICAgTE9HKE5ldHdvcmssICJXZWJTb2NrZXQgJXAgZGlkQ2xvc2Uo
KSIsIHRoaXMpOwogICAgIGlmICghbV9jaGFubmVsKQogICAgICAgICByZXR1cm47CiAgICAgYm9v
bCB3YXNDbGVhbiA9IG1fc3RhdGUgPT0gQ0xPU0lORyAmJiAhdW5oYW5kbGVkQnVmZmVyZWRBbW91
bnQgJiYgY2xvc2luZ0hhbmRzaGFrZUNvbXBsZXRpb24gPT0gQ2xvc2luZ0hhbmRzaGFrZUNvbXBs
ZXRlICYmIGNvZGUgIT0gV2ViU29ja2V0Q2hhbm5lbDo6Q2xvc2VFdmVudENvZGVBYm5vcm1hbENs
b3N1cmU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2Vi
U29ja2V0Q2hhbm5lbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2Vi
U29ja2V0Q2hhbm5lbC5jcHAKaW5kZXggNWI0NWUxYTQxZjgxY2U5ZTI2OGM2YzRjNTVkODk5MjQy
OWQ2NzFkYi4uM2U2ZmFjNTlmM2FkOWViYzBlYmE4NDkxYTBhNWRjNTAzYTA3NDc0NiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFu
bmVsLmNwcApAQCAtMTAwLDcgKzEwMCw3IEBAIFdlYlNvY2tldENoYW5uZWw6On5XZWJTb2NrZXRD
aGFubmVsKCkKIAogdm9pZCBXZWJTb2NrZXRDaGFubmVsOjpjb25uZWN0KGNvbnN0IEtVUkwmIHVy
bCwgY29uc3QgU3RyaW5nJiBwcm90b2NvbCkKIHsKLSAgICBMT0coTmV0d29yaywgIldlYlNvY2tl
dENoYW5uZWwgJXAgY29ubmVjdCIsIHRoaXMpOworICAgIExPRyhOZXR3b3JrLCAiV2ViU29ja2V0
Q2hhbm5lbCAlcCBjb25uZWN0KCkiLCB0aGlzKTsKICAgICBBU1NFUlQoIW1faGFuZGxlKTsKICAg
ICBBU1NFUlQoIW1fc3VzcGVuZGVkKTsKICAgICBtX2hhbmRzaGFrZSA9IGFkb3B0UHRyKG5ldyBX
ZWJTb2NrZXRIYW5kc2hha2UodXJsLCBwcm90b2NvbCwgbV9kb2N1bWVudCkpOwpAQCAtMTE1LDcg
KzExNSw3IEBAIHZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6Y29ubmVjdChjb25zdCBLVVJMJiB1cmws
IGNvbnN0IFN0cmluZyYgcHJvdG9jb2wpCiAKIFN0cmluZyBXZWJTb2NrZXRDaGFubmVsOjpzdWJw
cm90b2NvbCgpCiB7Ci0gICAgTE9HKE5ldHdvcmssICJXZWJTb2NrZXRDaGFubmVsICVwIHN1YnBy
b3RvY29sIiwgdGhpcyk7CisgICAgTE9HKE5ldHdvcmssICJXZWJTb2NrZXRDaGFubmVsICVwIHN1
YnByb3RvY29sKCkiLCB0aGlzKTsKICAgICBpZiAoIW1faGFuZHNoYWtlIHx8IG1faGFuZHNoYWtl
LT5tb2RlKCkgIT0gV2ViU29ja2V0SGFuZHNoYWtlOjpDb25uZWN0ZWQpCiAgICAgICAgIHJldHVy
biAiIjsKICAgICBTdHJpbmcgc2VydmVyUHJvdG9jb2wgPSBtX2hhbmRzaGFrZS0+c2VydmVyV2Vi
U29ja2V0UHJvdG9jb2woKTsKQEAgLTEyNiw3ICsxMjYsNyBAQCBTdHJpbmcgV2ViU29ja2V0Q2hh
bm5lbDo6c3VicHJvdG9jb2woKQogCiBTdHJpbmcgV2ViU29ja2V0Q2hhbm5lbDo6ZXh0ZW5zaW9u
cygpCiB7Ci0gICAgTE9HKE5ldHdvcmssICJXZWJTb2NrZXRDaGFubmVsICVwIGV4dGVuc2lvbnMi
LCB0aGlzKTsKKyAgICBMT0coTmV0d29yaywgIldlYlNvY2tldENoYW5uZWwgJXAgZXh0ZW5zaW9u
cygpIiwgdGhpcyk7CiAgICAgaWYgKCFtX2hhbmRzaGFrZSB8fCBtX2hhbmRzaGFrZS0+bW9kZSgp
ICE9IFdlYlNvY2tldEhhbmRzaGFrZTo6Q29ubmVjdGVkKQogICAgICAgICByZXR1cm4gIiI7CiAg
ICAgU3RyaW5nIGV4dGVuc2lvbnMgPSBtX2hhbmRzaGFrZS0+YWNjZXB0ZWRFeHRlbnNpb25zKCk7
CkBAIC0xMzcsNyArMTM3LDcgQEAgU3RyaW5nIFdlYlNvY2tldENoYW5uZWw6OmV4dGVuc2lvbnMo
KQogCiBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6U2VuZFJlc3VsdCBXZWJTb2NrZXRDaGFu
bmVsOjpzZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKIHsKLSAgICBMT0coTmV0d29yaywgIldl
YlNvY2tldENoYW5uZWwgJXAgc2VuZCAlcyIsIHRoaXMsIG1lc3NhZ2UudXRmOCgpLmRhdGEoKSk7
CisgICAgTE9HKE5ldHdvcmssICJXZWJTb2NrZXRDaGFubmVsICVwIHNlbmQoKSBTZW5kaW5nIFN0
cmluZyAnJXMnIiwgdGhpcywgbWVzc2FnZS51dGY4KCkuZGF0YSgpKTsKICAgICBDU3RyaW5nIHV0
ZjggPSBtZXNzYWdlLnV0ZjgoU3RyaW5nOjpTdHJpY3RDb252ZXJzaW9uUmVwbGFjaW5nVW5wYWly
ZWRTdXJyb2dhdGVzV2l0aEZGRkQpOwogICAgIGVucXVldWVUZXh0RnJhbWUodXRmOCk7CiAgICAg
Ly8gQWNjb3JkaW5nIHRvIFdlYlNvY2tldCBBUEkgc3BlY2lmaWNhdGlvbiwgV2ViU29ja2V0LnNl
bmQoKSBzaG91bGQgcmV0dXJuIHZvaWQgaW5zdGVhZApAQCAtMTUxLDI4ICsxNTEsMjggQEAgVGhy
ZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OlNlbmRSZXN1bHQgV2ViU29ja2V0Q2hhbm5lbDo6c2Vu
ZChjb25zdCBTdHJpbmcmIG1lc3MKIAogVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OlNlbmRS
ZXN1bHQgV2ViU29ja2V0Q2hhbm5lbDo6c2VuZChjb25zdCBBcnJheUJ1ZmZlciYgYmluYXJ5RGF0
YSwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgYnl0ZUxlbmd0aCkKIHsKLSAgICBMT0co
TmV0d29yaywgIldlYlNvY2tldENoYW5uZWwgJXAgc2VuZCBhcnJheWJ1ZmZlciAlcCAldSAldSIs
IHRoaXMsICZiaW5hcnlEYXRhLCBieXRlT2Zmc2V0LCBieXRlTGVuZ3RoKTsKKyAgICBMT0coTmV0
d29yaywgIldlYlNvY2tldENoYW5uZWwgJXAgc2VuZCgpIFNlbmRpbmcgQXJyYXlCdWZmZXIgJXAg
Ynl0ZU9mZnNldD0ldSBieXRlTGVuZ3RoPSV1IiwgdGhpcywgJmJpbmFyeURhdGEsIGJ5dGVPZmZz
ZXQsIGJ5dGVMZW5ndGgpOwogICAgIGVucXVldWVSYXdGcmFtZShXZWJTb2NrZXRGcmFtZTo6T3BD
b2RlQmluYXJ5LCBzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4oYmluYXJ5RGF0YS5kYXRhKCkpICsg
Ynl0ZU9mZnNldCwgYnl0ZUxlbmd0aCk7CiAgICAgcmV0dXJuIFRocmVhZGFibGVXZWJTb2NrZXRD
aGFubmVsOjpTZW5kU3VjY2VzczsKIH0KIAogVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OlNl
bmRSZXN1bHQgV2ViU29ja2V0Q2hhbm5lbDo6c2VuZChjb25zdCBCbG9iJiBiaW5hcnlEYXRhKQog
ewotICAgIExPRyhOZXR3b3JrLCAiV2ViU29ja2V0Q2hhbm5lbCAlcCBzZW5kIGJsb2IgJXMiLCB0
aGlzLCBiaW5hcnlEYXRhLnVybCgpLmVsaWRlZFN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOworICAg
IExPRyhOZXR3b3JrLCAiV2ViU29ja2V0Q2hhbm5lbCAlcCBzZW5kKCkgU2VuZGluZyBCbG9iICcl
cyciLCB0aGlzLCBiaW5hcnlEYXRhLnVybCgpLmVsaWRlZFN0cmluZygpLnV0ZjgoKS5kYXRhKCkp
OwogICAgIGVucXVldWVCbG9iRnJhbWUoV2ViU29ja2V0RnJhbWU6Ok9wQ29kZUJpbmFyeSwgYmlu
YXJ5RGF0YSk7CiAgICAgcmV0dXJuIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpTZW5kU3Vj
Y2VzczsKIH0KIAogYm9vbCBXZWJTb2NrZXRDaGFubmVsOjpzZW5kKGNvbnN0IGNoYXIqIGRhdGEs
IGludCBsZW5ndGgpCiB7Ci0gICAgTE9HKE5ldHdvcmssICJXZWJTb2NrZXRDaGFubmVsICVwIHNl
bmQgYmluYXJ5ICVwICglZEIpIiwgdGhpcywgZGF0YSwgbGVuZ3RoKTsKKyAgICBMT0coTmV0d29y
aywgIldlYlNvY2tldENoYW5uZWwgJXAgc2VuZCgpIFNlbmRpbmcgY2hhciogZGF0YT0lcCBsZW5n
dGg9JWQiLCB0aGlzLCBkYXRhLCBsZW5ndGgpOwogICAgIGVucXVldWVSYXdGcmFtZShXZWJTb2Nr
ZXRGcmFtZTo6T3BDb2RlQmluYXJ5LCBkYXRhLCBsZW5ndGgpOwogICAgIHJldHVybiB0cnVlOwog
fQogCiB1bnNpZ25lZCBsb25nIFdlYlNvY2tldENoYW5uZWw6OmJ1ZmZlcmVkQW1vdW50KCkgY29u
c3QKIHsKLSAgICBMT0coTmV0d29yaywgIldlYlNvY2tldENoYW5uZWwgJXAgYnVmZmVyZWRBbW91
bnQiLCB0aGlzKTsKKyAgICBMT0coTmV0d29yaywgIldlYlNvY2tldENoYW5uZWwgJXAgYnVmZmVy
ZWRBbW91bnQoKSIsIHRoaXMpOwogICAgIEFTU0VSVChtX2hhbmRsZSk7CiAgICAgQVNTRVJUKCFt
X3N1c3BlbmRlZCk7CiAgICAgcmV0dXJuIG1faGFuZGxlLT5idWZmZXJlZEFtb3VudCgpOwpAQCAt
MTgwLDcgKzE4MCw3IEBAIHVuc2lnbmVkIGxvbmcgV2ViU29ja2V0Q2hhbm5lbDo6YnVmZmVyZWRB
bW91bnQoKSBjb25zdAogCiB2b2lkIFdlYlNvY2tldENoYW5uZWw6OmNsb3NlKGludCBjb2RlLCBj
b25zdCBTdHJpbmcmIHJlYXNvbikKIHsKLSAgICBMT0coTmV0d29yaywgIldlYlNvY2tldENoYW5u
ZWwgJXAgY2xvc2UiLCB0aGlzKTsKKyAgICBMT0coTmV0d29yaywgIldlYlNvY2tldENoYW5uZWwg
JXAgY2xvc2UoKSBjb2RlPSVkIHJlYXNvbj0nJXMnIiwgdGhpcywgY29kZSwgcmVhc29uLnV0Zjgo
KS5kYXRhKCkpOwogICAgIEFTU0VSVCghbV9zdXNwZW5kZWQpOwogICAgIGlmICghbV9oYW5kbGUp
CiAgICAgICAgIHJldHVybjsKQEAgLTE5MSw3ICsxOTEsNyBAQCB2b2lkIFdlYlNvY2tldENoYW5u
ZWw6OmNsb3NlKGludCBjb2RlLCBjb25zdCBTdHJpbmcmIHJlYXNvbikKIAogdm9pZCBXZWJTb2Nr
ZXRDaGFubmVsOjpmYWlsKGNvbnN0IFN0cmluZyYgcmVhc29uKQogewotICAgIExPRyhOZXR3b3Jr
LCAiV2ViU29ja2V0Q2hhbm5lbCAlcCBmYWlsOiAlcyIsIHRoaXMsIHJlYXNvbi51dGY4KCkuZGF0
YSgpKTsKKyAgICBMT0coTmV0d29yaywgIldlYlNvY2tldENoYW5uZWwgJXAgZmFpbCgpIHJlYXNv
bj0nJXMnIiwgdGhpcywgcmVhc29uLnV0ZjgoKS5kYXRhKCkpOwogICAgIEFTU0VSVCghbV9zdXNw
ZW5kZWQpOwogICAgIGlmIChtX2RvY3VtZW50KSB7CiAgICAgICAgIEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6ZGlkUmVjZWl2ZVdlYlNvY2tldEZyYW1lRXJyb3IobV9kb2N1bWVudCwgbV9pZGVu
dGlmaWVyLCByZWFzb24pOwpAQCAtMjE1LDcgKzIxNSw3IEBAIHZvaWQgV2ViU29ja2V0Q2hhbm5l
bDo6ZmFpbChjb25zdCBTdHJpbmcmIHJlYXNvbikKIAogdm9pZCBXZWJTb2NrZXRDaGFubmVsOjpk
aXNjb25uZWN0KCkKIHsKLSAgICBMT0coTmV0d29yaywgIldlYlNvY2tldENoYW5uZWwgJXAgZGlz
Y29ubmVjdCIsIHRoaXMpOworICAgIExPRyhOZXR3b3JrLCAiV2ViU29ja2V0Q2hhbm5lbCAlcCBk
aXNjb25uZWN0KCkiLCB0aGlzKTsKICAgICBpZiAobV9pZGVudGlmaWVyICYmIG1fZG9jdW1lbnQp
CiAgICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkQ2xvc2VXZWJTb2NrZXQobV9k
b2N1bWVudCwgbV9pZGVudGlmaWVyKTsKICAgICBpZiAobV9oYW5kc2hha2UpCkBAIC0yNDAsNyAr
MjQwLDcgQEAgdm9pZCBXZWJTb2NrZXRDaGFubmVsOjpyZXN1bWUoKQogCiB2b2lkIFdlYlNvY2tl
dENoYW5uZWw6OndpbGxPcGVuU29ja2V0U3RyZWFtKFNvY2tldFN0cmVhbUhhbmRsZSogaGFuZGxl
KQogewotICAgIExPRyhOZXR3b3JrLCAiV2ViU29ja2V0Q2hhbm5lbCAlcCB3aWxsT3BlbnNvY2tl
dFN0cmVhbSIsIHRoaXMpOworICAgIExPRyhOZXR3b3JrLCAiV2ViU29ja2V0Q2hhbm5lbCAlcCB3
aWxsT3BlblNvY2tldFN0cmVhbSgpIiwgdGhpcyk7CiAgICAgQVNTRVJUKGhhbmRsZSk7CiAgICAg
aWYgKG1fZG9jdW1lbnQtPmZyYW1lKCkpCiAgICAgICAgIG1fZG9jdW1lbnQtPmZyYW1lKCktPmxv
YWRlcigpLT5jbGllbnQoKS0+ZGlzcGF0Y2hXaWxsT3BlblNvY2tldFN0cmVhbShoYW5kbGUpOwpA
QCAtMjQ4LDcgKzI0OCw3IEBAIHZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6d2lsbE9wZW5Tb2NrZXRT
dHJlYW0oU29ja2V0U3RyZWFtSGFuZGxlKiBoYW5kbGUpCiAKIHZvaWQgV2ViU29ja2V0Q2hhbm5l
bDo6ZGlkT3BlblNvY2tldFN0cmVhbShTb2NrZXRTdHJlYW1IYW5kbGUqIGhhbmRsZSkKIHsKLSAg
ICBMT0coTmV0d29yaywgIldlYlNvY2tldENoYW5uZWwgJXAgZGlkT3BlblNvY2tldFN0cmVhbSIs
IHRoaXMpOworICAgIExPRyhOZXR3b3JrLCAiV2ViU29ja2V0Q2hhbm5lbCAlcCBkaWRPcGVuU29j
a2V0U3RyZWFtKCkiLCB0aGlzKTsKICAgICBBU1NFUlQoaGFuZGxlID09IG1faGFuZGxlKTsKICAg
ICBpZiAoIW1fZG9jdW1lbnQpCiAgICAgICAgIHJldHVybjsKQEAgLTI2MSw3ICsyNjEsNyBAQCB2
b2lkIFdlYlNvY2tldENoYW5uZWw6OmRpZE9wZW5Tb2NrZXRTdHJlYW0oU29ja2V0U3RyZWFtSGFu
ZGxlKiBoYW5kbGUpCiAKIHZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6ZGlkQ2xvc2VTb2NrZXRTdHJl
YW0oU29ja2V0U3RyZWFtSGFuZGxlKiBoYW5kbGUpCiB7Ci0gICAgTE9HKE5ldHdvcmssICJXZWJT
b2NrZXRDaGFubmVsICVwIGRpZENsb3NlU29ja2V0U3RyZWFtIiwgdGhpcyk7CisgICAgTE9HKE5l
dHdvcmssICJXZWJTb2NrZXRDaGFubmVsICVwIGRpZENsb3NlU29ja2V0U3RyZWFtKCkiLCB0aGlz
KTsKICAgICBpZiAobV9pZGVudGlmaWVyICYmIG1fZG9jdW1lbnQpCiAgICAgICAgIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbjo6ZGlkQ2xvc2VXZWJTb2NrZXQobV9kb2N1bWVudCwgbV9pZGVudGlm
aWVyKTsKICAgICBBU1NFUlRfVU5VU0VEKGhhbmRsZSwgaGFuZGxlID09IG1faGFuZGxlIHx8ICFt
X2hhbmRsZSk7CkBAIC0yODYsNyArMjg2LDcgQEAgdm9pZCBXZWJTb2NrZXRDaGFubmVsOjpkaWRD
bG9zZVNvY2tldFN0cmVhbShTb2NrZXRTdHJlYW1IYW5kbGUqIGhhbmRsZSkKIAogdm9pZCBXZWJT
b2NrZXRDaGFubmVsOjpkaWRSZWNlaXZlU29ja2V0U3RyZWFtRGF0YShTb2NrZXRTdHJlYW1IYW5k
bGUqIGhhbmRsZSwgY29uc3QgY2hhciogZGF0YSwgaW50IGxlbikKIHsKLSAgICBMT0coTmV0d29y
aywgIldlYlNvY2tldENoYW5uZWwgJXAgZGlkUmVjZWl2ZVNvY2tldFN0cmVhbURhdGEgJWQiLCB0
aGlzLCBsZW4pOworICAgIExPRyhOZXR3b3JrLCAiV2ViU29ja2V0Q2hhbm5lbCAlcCBkaWRSZWNl
aXZlU29ja2V0U3RyZWFtRGF0YSgpIFJlY2VpdmVkICVkIGJ5dGVzIiwgdGhpcywgbGVuKTsKICAg
ICBSZWZQdHI8V2ViU29ja2V0Q2hhbm5lbD4gcHJvdGVjdCh0aGlzKTsgLy8gVGhlIGNsaWVudCBj
YW4gY2xvc2UgdGhlIGNoYW5uZWwsIHBvdGVudGlhbGx5IHJlbW92aW5nIHRoZSBsYXN0IHJlZmVy
ZW5jZS4KICAgICBBU1NFUlQoaGFuZGxlID09IG1faGFuZGxlKTsKICAgICBpZiAoIW1fZG9jdW1l
bnQpIHsKQEAgLTMyMSw3ICszMjEsNyBAQCB2b2lkIFdlYlNvY2tldENoYW5uZWw6OmRpZFVwZGF0
ZUJ1ZmZlcmVkQW1vdW50KFNvY2tldFN0cmVhbUhhbmRsZSosIHNpemVfdCBidWZmZQogCiB2b2lk
IFdlYlNvY2tldENoYW5uZWw6OmRpZEZhaWxTb2NrZXRTdHJlYW0oU29ja2V0U3RyZWFtSGFuZGxl
KiBoYW5kbGUsIGNvbnN0IFNvY2tldFN0cmVhbUVycm9yJiBlcnJvcikKIHsKLSAgICBMT0coTmV0
d29yaywgIldlYlNvY2tldENoYW5uZWwgJXAgZGlkRmFpbFNvY2tldFN0cmVhbSIsIHRoaXMpOwor
ICAgIExPRyhOZXR3b3JrLCAiV2ViU29ja2V0Q2hhbm5lbCAlcCBkaWRGYWlsU29ja2V0U3RyZWFt
KCkiLCB0aGlzKTsKICAgICBBU1NFUlQoaGFuZGxlID09IG1faGFuZGxlIHx8ICFtX2hhbmRsZSk7
CiAgICAgaWYgKG1fZG9jdW1lbnQpIHsKICAgICAgICAgU3RyaW5nIG1lc3NhZ2U7CkBAIC0zNDks
MjEgKzM0OSwyMSBAQCB2b2lkIFdlYlNvY2tldENoYW5uZWw6OmRpZENhbmNlbEF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlKFNvY2tldFN0cmVhbUhhbmRsZSosIGNvbgogI2lmIEVOQUJMRShCTE9CKQog
dm9pZCBXZWJTb2NrZXRDaGFubmVsOjpkaWRTdGFydExvYWRpbmcoKQogewotICAgIExPRyhOZXR3
b3JrLCAiV2ViU29ja2V0Q2hhbm5lbCAlcCBkaWRTdGFydExvYWRpbmciLCB0aGlzKTsKKyAgICBM
T0coTmV0d29yaywgIldlYlNvY2tldENoYW5uZWwgJXAgZGlkU3RhcnRMb2FkaW5nKCkiLCB0aGlz
KTsKICAgICBBU1NFUlQobV9ibG9iTG9hZGVyKTsKICAgICBBU1NFUlQobV9ibG9iTG9hZGVyU3Rh
dHVzID09IEJsb2JMb2FkZXJTdGFydGVkKTsKIH0KIAogdm9pZCBXZWJTb2NrZXRDaGFubmVsOjpk
aWRSZWNlaXZlRGF0YSgpCiB7Ci0gICAgTE9HKE5ldHdvcmssICJXZWJTb2NrZXRDaGFubmVsICVw
IGRpZFJlY2VpdmVEYXRhIiwgdGhpcyk7CisgICAgTE9HKE5ldHdvcmssICJXZWJTb2NrZXRDaGFu
bmVsICVwIGRpZFJlY2VpdmVEYXRhKCkiLCB0aGlzKTsKICAgICBBU1NFUlQobV9ibG9iTG9hZGVy
KTsKICAgICBBU1NFUlQobV9ibG9iTG9hZGVyU3RhdHVzID09IEJsb2JMb2FkZXJTdGFydGVkKTsK
IH0KIAogdm9pZCBXZWJTb2NrZXRDaGFubmVsOjpkaWRGaW5pc2hMb2FkaW5nKCkKIHsKLSAgICBM
T0coTmV0d29yaywgIldlYlNvY2tldENoYW5uZWwgJXAgZGlkRmluaXNoTG9hZGluZyIsIHRoaXMp
OworICAgIExPRyhOZXR3b3JrLCAiV2ViU29ja2V0Q2hhbm5lbCAlcCBkaWRGaW5pc2hMb2FkaW5n
KCkiLCB0aGlzKTsKICAgICBBU1NFUlQobV9ibG9iTG9hZGVyKTsKICAgICBBU1NFUlQobV9ibG9i
TG9hZGVyU3RhdHVzID09IEJsb2JMb2FkZXJTdGFydGVkKTsKICAgICBtX2Jsb2JMb2FkZXJTdGF0
dXMgPSBCbG9iTG9hZGVyRmluaXNoZWQ7CkBAIC0zNzMsNyArMzczLDcgQEAgdm9pZCBXZWJTb2Nr
ZXRDaGFubmVsOjpkaWRGaW5pc2hMb2FkaW5nKCkKIAogdm9pZCBXZWJTb2NrZXRDaGFubmVsOjpk
aWRGYWlsKGludCBlcnJvckNvZGUpCiB7Ci0gICAgTE9HKE5ldHdvcmssICJXZWJTb2NrZXRDaGFu
bmVsICVwIGRpZEZhaWwgJWQiLCB0aGlzLCBlcnJvckNvZGUpOworICAgIExPRyhOZXR3b3JrLCAi
V2ViU29ja2V0Q2hhbm5lbCAlcCBkaWRGYWlsKCkgZXJyb3JDb2RlPSVkIiwgdGhpcywgZXJyb3JD
b2RlKTsKICAgICBBU1NFUlQobV9ibG9iTG9hZGVyKTsKICAgICBBU1NFUlQobV9ibG9iTG9hZGVy
U3RhdHVzID09IEJsb2JMb2FkZXJTdGFydGVkKTsKICAgICBtX2Jsb2JMb2FkZXIuY2xlYXIoKTsK
QEAgLTM4Nyw3ICszODcsNyBAQCBib29sIFdlYlNvY2tldENoYW5uZWw6OmFwcGVuZFRvQnVmZmVy
KGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBsZW4pCiB7CiAgICAgc2l6ZV90IG5ld0J1ZmZlclNp
emUgPSBtX2J1ZmZlci5zaXplKCkgKyBsZW47CiAgICAgaWYgKG5ld0J1ZmZlclNpemUgPCBtX2J1
ZmZlci5zaXplKCkpIHsKLSAgICAgICAgTE9HKE5ldHdvcmssICJXZWJTb2NrZXQgYnVmZmVyIG92
ZXJmbG93ICglbHUrJWx1KSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkIGxvbmc+KG1fYnVmZmVyLnNp
emUoKSksIHN0YXRpY19jYXN0PHVuc2lnbmVkIGxvbmc+KGxlbikpOworICAgICAgICBMT0coTmV0
d29yaywgIldlYlNvY2tldENoYW5uZWwgJXAgYXBwZW5kVG9CdWZmZXIoKSBCdWZmZXIgb3ZlcmZs
b3cgKCVsdSBieXRlcyBhbHJlYWR5IGluIHJlY2VpdmUgYnVmZmVyIGFuZCBhcHBlbmRpbmcgJWx1
IGJ5dGVzKSIsIHRoaXMsIHN0YXRpY19jYXN0PHVuc2lnbmVkIGxvbmc+KG1fYnVmZmVyLnNpemUo
KSksIHN0YXRpY19jYXN0PHVuc2lnbmVkIGxvbmc+KGxlbikpOwogICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgfQogICAgIG1fYnVmZmVyLmFwcGVuZChkYXRhLCBsZW4pOwpAQCAtNDA2LDcgKzQw
Niw3IEBAIGJvb2wgV2ViU29ja2V0Q2hhbm5lbDo6cHJvY2Vzc0J1ZmZlcigpCiAgICAgQVNTRVJU
KCFtX3N1c3BlbmRlZCk7CiAgICAgQVNTRVJUKG1fY2xpZW50KTsKICAgICBBU1NFUlQoIW1fYnVm
ZmVyLmlzRW1wdHkoKSk7Ci0gICAgTE9HKE5ldHdvcmssICJXZWJTb2NrZXRDaGFubmVsICVwIHBy
b2Nlc3NCdWZmZXIgJWx1IiwgdGhpcywgc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZz4obV9idWZm
ZXIuc2l6ZSgpKSk7CisgICAgTE9HKE5ldHdvcmssICJXZWJTb2NrZXRDaGFubmVsICVwIHByb2Nl
c3NCdWZmZXIoKSBSZWNlaXZlIGJ1ZmZlciBoYXMgJWx1IGJ5dGVzIiwgdGhpcywgc3RhdGljX2Nh
c3Q8dW5zaWduZWQgbG9uZz4obV9idWZmZXIuc2l6ZSgpKSk7CiAKICAgICBpZiAobV9zaG91bGRE
aXNjYXJkUmVjZWl2ZWREYXRhKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC00MzIsMTQgKzQz
MiwxNCBAQCBib29sIFdlYlNvY2tldENoYW5uZWw6OnByb2Nlc3NCdWZmZXIoKQogICAgICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgICAgIC8vIEZJWE1FOiBoYW5kbGUgc2V0
LWNvb2tpZTIuCi0gICAgICAgICAgICBMT0coTmV0d29yaywgIldlYlNvY2tldENoYW5uZWwgJXAg
Y29ubmVjdGVkIiwgdGhpcyk7CisgICAgICAgICAgICBMT0coTmV0d29yaywgIldlYlNvY2tldENo
YW5uZWwgJXAgQ29ubmVjdGVkIiwgdGhpcyk7CiAgICAgICAgICAgICBza2lwQnVmZmVyKGhlYWRl
ckxlbmd0aCk7CiAgICAgICAgICAgICBtX2NsaWVudC0+ZGlkQ29ubmVjdCgpOwotICAgICAgICAg
ICAgTE9HKE5ldHdvcmssICJyZW1haW5pbmcgaW4gcmVhZCBidWYgJWx1Iiwgc3RhdGljX2Nhc3Q8
dW5zaWduZWQgbG9uZz4obV9idWZmZXIuc2l6ZSgpKSk7CisgICAgICAgICAgICBMT0coTmV0d29y
aywgIldlYlNvY2tldENoYW5uZWwgJXAgJWx1IGJ5dGVzIHJlbWFpbmluZyBpbiBtX2J1ZmZlciIs
IHRoaXMsIHN0YXRpY19jYXN0PHVuc2lnbmVkIGxvbmc+KG1fYnVmZmVyLnNpemUoKSkpOwogICAg
ICAgICAgICAgcmV0dXJuICFtX2J1ZmZlci5pc0VtcHR5KCk7CiAgICAgICAgIH0KICAgICAgICAg
QVNTRVJUKG1faGFuZHNoYWtlLT5tb2RlKCkgPT0gV2ViU29ja2V0SGFuZHNoYWtlOjpGYWlsZWQp
OwotICAgICAgICBMT0coTmV0d29yaywgIldlYlNvY2tldENoYW5uZWwgJXAgY29ubmVjdGlvbiBm
YWlsZWQiLCB0aGlzKTsKKyAgICAgICAgTE9HKE5ldHdvcmssICJXZWJTb2NrZXRDaGFubmVsICVw
IENvbm5lY3Rpb24gZmFpbGVkIiwgdGhpcyk7CiAgICAgICAgIHNraXBCdWZmZXIoaGVhZGVyTGVu
Z3RoKTsKICAgICAgICAgbV9zaG91bGREaXNjYXJkUmVjZWl2ZWREYXRhID0gdHJ1ZTsKICAgICAg
ICAgZmFpbChtX2hhbmRzaGFrZS0+ZmFpbHVyZVJlYXNvbigpKTsKQEAgLTQ2NSw3ICs0NjUsNyBA
QCB2b2lkIFdlYlNvY2tldENoYW5uZWw6OnJlc3VtZVRpbWVyRmlyZWQoVGltZXI8V2ViU29ja2V0
Q2hhbm5lbD4qIHRpbWVyKQogCiB2b2lkIFdlYlNvY2tldENoYW5uZWw6OnN0YXJ0Q2xvc2luZ0hh
bmRzaGFrZShpbnQgY29kZSwgY29uc3QgU3RyaW5nJiByZWFzb24pCiB7Ci0gICAgTE9HKE5ldHdv
cmssICJXZWJTb2NrZXRDaGFubmVsICVwIGNsb3NpbmcgJWQgJWQiLCB0aGlzLCBtX2Nsb3Npbmcs
IG1fcmVjZWl2ZWRDbG9zaW5nSGFuZHNoYWtlKTsKKyAgICBMT0coTmV0d29yaywgIldlYlNvY2tl
dENoYW5uZWwgJXAgc3RhcnRDbG9zaW5nSGFuZHNoYWtlKCkgY29kZT0lZCBtX3JlY2VpdmVkQ2xv
c2luZ0hhbmRzaGFrZT0lZCIsIHRoaXMsIG1fY2xvc2luZywgbV9yZWNlaXZlZENsb3NpbmdIYW5k
c2hha2UpOwogICAgIGlmIChtX2Nsb3NpbmcpCiAgICAgICAgIHJldHVybjsKICAgICBBU1NFUlQo
bV9oYW5kbGUpOwpAQCAtNDg3LDcgKzQ4Nyw3IEBAIHZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6c3Rh
cnRDbG9zaW5nSGFuZHNoYWtlKGludCBjb2RlLCBjb25zdCBTdHJpbmcmIHJlYXNvbikKIAogdm9p
ZCBXZWJTb2NrZXRDaGFubmVsOjpjbG9zaW5nVGltZXJGaXJlZChUaW1lcjxXZWJTb2NrZXRDaGFu
bmVsPiogdGltZXIpCiB7Ci0gICAgTE9HKE5ldHdvcmssICJXZWJTb2NrZXRDaGFubmVsICVwIGNs
b3NpbmcgdGltZXIiLCB0aGlzKTsKKyAgICBMT0coTmV0d29yaywgIldlYlNvY2tldENoYW5uZWwg
JXAgY2xvc2luZ1RpbWVyRmlyZWQoKSIsIHRoaXMpOwogICAgIEFTU0VSVF9VTlVTRUQodGltZXIs
ICZtX2Nsb3NpbmdUaW1lciA9PSB0aW1lcik7CiAgICAgaWYgKG1faGFuZGxlKQogICAgICAgICBt
X2hhbmRsZS0+ZGlzY29ubmVjdCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJzb2NrZXRzL1dlYlNvY2tldERlZmxhdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2Vic29ja2V0cy9XZWJTb2NrZXREZWZsYXRlci5jcHAKaW5kZXggYTBjY2VlNTNkYmViYjQ0
MGE2MjE2ZmRkNmVlOWZiOGIzMDY2ODNkNS4uYWVmNGIxZTlkMzMyYjAwN2NjNTkxYTE3NWYxMTNi
OTBkODM4MWFhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRz
L1dlYlNvY2tldERlZmxhdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNv
Y2tldHMvV2ViU29ja2V0RGVmbGF0ZXIuY3BwCkBAIC03MSw3ICs3MSw3IEBAIFdlYlNvY2tldERl
ZmxhdGVyOjp+V2ViU29ja2V0RGVmbGF0ZXIoKQogewogICAgIGludCByZXN1bHQgPSBkZWZsYXRl
RW5kKG1fc3RyZWFtLmdldCgpKTsKICAgICBpZiAocmVzdWx0ICE9IFpfT0spCi0gICAgICAgIExP
RyhOZXR3b3JrLCAiZGVmbGF0ZUVuZCgpIGZhaWxlZDogJWQiLCByZXN1bHQpOworICAgICAgICBM
T0coTmV0d29yaywgIldlYlNvY2tldERlZmxhdGVyICVwIERlc3RydWN0b3IgZGVmbGF0ZUVuZCgp
IGZhaWxlZDogJWQgaXMgcmV0dXJuZWQiLCB0aGlzLCByZXN1bHQpOwogfQogCiBzdGF0aWMgdm9p
ZCBzZXRTdHJlYW1QYXJhbWV0ZXIoel9zdHJlYW0qIHN0cmVhbSwgY29uc3QgY2hhciogaW5wdXRE
YXRhLCBzaXplX3QgaW5wdXRMZW5ndGgsIGNoYXIqIG91dHB1dERhdGEsIHNpemVfdCBvdXRwdXRM
ZW5ndGgpCkBAIC0xNDgsNyArMTQ4LDcgQEAgV2ViU29ja2V0SW5mbGF0ZXI6On5XZWJTb2NrZXRJ
bmZsYXRlcigpCiB7CiAgICAgaW50IHJlc3VsdCA9IGluZmxhdGVFbmQobV9zdHJlYW0uZ2V0KCkp
OwogICAgIGlmIChyZXN1bHQgIT0gWl9PSykKLSAgICAgICAgTE9HKE5ldHdvcmssICJpbmZsYXRl
RW5kKCkgZmFpbGVkOiAlZCIsIHJlc3VsdCk7CisgICAgICAgIExPRyhOZXR3b3JrLCAiV2ViU29j
a2V0SW5mbGF0ZXIgJXAgRGVzdHJ1Y3RvciBpbmZsYXRlRW5kKCkgZmFpbGVkOiAlZCBpcyByZXR1
cm5lZCIsIHRoaXMsIHJlc3VsdCk7CiB9CiAKIGJvb2wgV2ViU29ja2V0SW5mbGF0ZXI6OmFkZEJ5
dGVzKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuY3BwCmluZGV4
IGNkYzNiYzRkZGM5MzJiMzFjMjQ5NDU5Yzk5Y2I3NTQ1Njk5ODkyNTYuLjQ3ZTRlMWYzZmI0MTky
YjZlNTI2ZTU4ODExMmEwZjdiMjFiNjE3ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuY3BwCkBAIC0yOTYsNyAr
Mjk2LDcgQEAgaW50IFdlYlNvY2tldEhhbmRzaGFrZTo6cmVhZFNlcnZlckhhbmRzaGFrZShjb25z
dCBjaGFyKiBoZWFkZXIsIHNpemVfdCBsZW4pCiAgICAgICAgIG1fbW9kZSA9IEZhaWxlZDsgLy8g
bV9mYWlsdXJlUmVhc29uIGlzIHNldCBpbnNpZGUgcmVhZFN0YXR1c0xpbmUoKS4KICAgICAgICAg
cmV0dXJuIGxlbjsKICAgICB9Ci0gICAgTE9HKE5ldHdvcmssICJyZXNwb25zZSBjb2RlOiAlZCIs
IHN0YXR1c0NvZGUpOworICAgIExPRyhOZXR3b3JrLCAiV2ViU29ja2V0SGFuZHNoYWtlICVwIHJl
YWRTZXJ2ZXJIYW5kc2hha2UoKSBTdGF0dXMgY29kZSBpcyAlZCIsIHRoaXMsIHN0YXR1c0NvZGUp
OwogICAgIG1fcmVzcG9uc2Uuc2V0U3RhdHVzQ29kZShzdGF0dXNDb2RlKTsKICAgICBtX3Jlc3Bv
bnNlLnNldFN0YXR1c1RleHQoc3RhdHVzVGV4dCk7CiAgICAgaWYgKHN0YXR1c0NvZGUgIT0gMTAx
KSB7CkBAIC0zMTIsMTIgKzMxMiwxMiBAQCBpbnQgV2ViU29ja2V0SGFuZHNoYWtlOjpyZWFkU2Vy
dmVySGFuZHNoYWtlKGNvbnN0IGNoYXIqIGhlYWRlciwgc2l6ZV90IGxlbikKICAgICB9CiAgICAg
Y29uc3QgY2hhciogcCA9IHJlYWRIVFRQSGVhZGVycyhoZWFkZXIgKyBsaW5lTGVuZ3RoLCBoZWFk
ZXIgKyBsZW4pOwogICAgIGlmICghcCkgewotICAgICAgICBMT0coTmV0d29yaywgInJlYWRIVFRQ
SGVhZGVycyBmYWlsZWQiKTsKKyAgICAgICAgTE9HKE5ldHdvcmssICJXZWJTb2NrZXRIYW5kc2hh
a2UgJXAgcmVhZFNlcnZlckhhbmRzaGFrZSgpIHJlYWRIVFRQSGVhZGVycygpIGZhaWxlZCIsIHRo
aXMpOwogICAgICAgICBtX21vZGUgPSBGYWlsZWQ7IC8vIG1fZmFpbHVyZVJlYXNvbiBpcyBzZXQg
aW5zaWRlIHJlYWRIVFRQSGVhZGVycygpLgogICAgICAgICByZXR1cm4gbGVuOwogICAgIH0KICAg
ICBpZiAoIWNoZWNrUmVzcG9uc2VIZWFkZXJzKCkpIHsKLSAgICAgICAgTE9HKE5ldHdvcmssICJo
ZWFkZXIgcHJvY2VzcyBmYWlsZWQiKTsKKyAgICAgICAgTE9HKE5ldHdvcmssICJXZWJTb2NrZXRI
YW5kc2hha2UgJXAgcmVhZFNlcnZlckhhbmRzaGFrZSgpIGNoZWNrUmVzcG9uc2VIZWFkZXJzKCkg
ZmFpbGVkIiwgdGhpcyk7CiAgICAgICAgIG1fbW9kZSA9IEZhaWxlZDsKICAgICAgICAgcmV0dXJu
IHAgLSBoZWFkZXI7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jaHJvbWl1bS9Tb2NrZXRTdHJlYW1IYW5kbGUuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jaHJvbWl1bS9Tb2NrZXRTdHJlYW1IYW5kbGUuY3BwCmluZGV4IGQw
MzczMjY3YWRjYjJjMTBjOTk4OTQ0NjFjNGU2NGE4ZGJlMGFkNzYuLmYyNmQ3ODFhZWE3YzQ2YzVj
MjhiOTVkMDY3Y2EzNDYzOWE4MWIyY2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY2hyb21pdW0vU29ja2V0U3RyZWFtSGFuZGxlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2Nocm9taXVtL1NvY2tldFN0cmVhbUhhbmRsZS5jcHAK
QEAgLTU5LDcgKzU5LDcgQEAgU29ja2V0U3RyZWFtSGFuZGxlSW50ZXJuYWw6On5Tb2NrZXRTdHJl
YW1IYW5kbGVJbnRlcm5hbCgpCiB2b2lkIFNvY2tldFN0cmVhbUhhbmRsZUludGVybmFsOjpjb25u
ZWN0KGNvbnN0IEtVUkwmIHVybCkKIHsKICAgICBtX3NvY2tldCA9IGFkb3B0UHRyKFdlYktpdDo6
UGxhdGZvcm06OmN1cnJlbnQoKS0+Y3JlYXRlU29ja2V0U3RyZWFtSGFuZGxlKCkpOwotICAgIExP
RyhOZXR3b3JrLCAiY29ubmVjdCIpOworICAgIExPRyhOZXR3b3JrLCAiU29ja2V0U3RyZWFtSGFu
ZGxlSW50ZXJuYWwgJXAgY29ubmVjdCgpIiwgdGhpcyk7CiAgICAgQVNTRVJUKG1fc29ja2V0KTsK
ICAgICBBU1NFUlQobV9oYW5kbGUpOwogICAgIGlmIChtX2hhbmRsZS0+bV9jbGllbnQpCkBAIC02
OSwxMiArNjksMTIgQEAgdm9pZCBTb2NrZXRTdHJlYW1IYW5kbGVJbnRlcm5hbDo6Y29ubmVjdChj
b25zdCBLVVJMJiB1cmwpCiAKIGludCBTb2NrZXRTdHJlYW1IYW5kbGVJbnRlcm5hbDo6c2VuZChj
b25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuKQogewotICAgIExPRyhOZXR3b3JrLCAic2VuZCBsZW49
JWQiLCBsZW4pOworICAgIExPRyhOZXR3b3JrLCAiU29ja2V0U3RyZWFtSGFuZGxlSW50ZXJuYWwg
JXAgc2VuZCgpIGxlbj0lZCIsIHRoaXMsIGxlbik7CiAgICAgLy8gRklYTUU6IHxtX3NvY2tldHwg
c2hvdWxkIG5vdCBiZSBudWxsIGhlcmUsIGJ1dCBpdCBzZWVtcyB0aGF0IHRoZXJlIGlzIHRoZQog
ICAgIC8vIGNhc2UuIFdlIHNob3VsZCBmaWd1cmUgb3V0IHN1Y2ggYSBwYXRoIGFuZCBmaXggaXQg
cmF0aGVyIHRoYW4gY2hlY2tpbmcKICAgICAvLyBudWxsIGhlcmUuCiAgICAgaWYgKCFtX3NvY2tl
dCkgewotICAgICAgICBMT0coTmV0d29yaywgIm1fc29ja2V0IGlzIG51bGwgd2hlbiBzZW5kaW5n
LiBJdCBzaG91bGQgbm90IGJlLiIpOworICAgICAgICBMT0coTmV0d29yaywgIlNvY2tldFN0cmVh
bUhhbmRsZUludGVybmFsICVwIHNlbmQoKSBtX3NvY2tldCBpcyBOVUxMIiwgdGhpcyk7CiAgICAg
ICAgIHJldHVybiAwOwogICAgIH0KICAgICBpZiAobV9wZW5kaW5nQW1vdW50U2VudCArIGxlbiA+
IG1fbWF4UGVuZGluZ1NlbmRBbGxvd2VkKQpAQCAtODUsMjQgKzg1LDIzIEBAIGludCBTb2NrZXRT
dHJlYW1IYW5kbGVJbnRlcm5hbDo6c2VuZChjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuKQogICAg
IFdlYktpdDo6V2ViRGF0YSB3ZWJkYXRhKGRhdGEsIGxlbik7CiAgICAgaWYgKG1fc29ja2V0LT5z
ZW5kKHdlYmRhdGEpKSB7CiAgICAgICAgIG1fcGVuZGluZ0Ftb3VudFNlbnQgKz0gbGVuOwotICAg
ICAgICBMT0coTmV0d29yaywgInNlbnQiKTsKKyAgICAgICAgTE9HKE5ldHdvcmssICJTb2NrZXRT
dHJlYW1IYW5kbGVJbnRlcm5hbCAlcCBzZW5kKCkgU2VudCAlZCBieXRlcyIsIHRoaXMsIGxlbik7
CiAgICAgICAgIHJldHVybiBsZW47CiAgICAgfQotICAgIExPRyhOZXR3b3JrLCAiYnVzeS4gYnVm
ZmVyaW5nIik7CisgICAgTE9HKE5ldHdvcmssICJTb2NrZXRTdHJlYW1IYW5kbGVJbnRlcm5hbCAl
cCBzZW5kKCkgbV9zb2NrZXQtPnNlbmQoKSBmYWlsZWQiLCB0aGlzKTsKICAgICByZXR1cm4gMDsK
IH0KIAogdm9pZCBTb2NrZXRTdHJlYW1IYW5kbGVJbnRlcm5hbDo6Y2xvc2UoKQogewotICAgIExP
RyhOZXR3b3JrLCAiY2xvc2UiKTsKKyAgICBMT0coTmV0d29yaywgIlNvY2tldFN0cmVhbUhhbmRs
ZUludGVybmFsICVwIGNsb3NlKCkiLCB0aGlzKTsKICAgICBpZiAobV9zb2NrZXQpCiAgICAgICAg
IG1fc29ja2V0LT5jbG9zZSgpOwogfQogCiB2b2lkIFNvY2tldFN0cmVhbUhhbmRsZUludGVybmFs
OjpkaWRPcGVuU3RyZWFtKFdlYktpdDo6V2ViU29ja2V0U3RyZWFtSGFuZGxlKiBzb2NrZXRIYW5k
bGUsIGludCBtYXhQZW5kaW5nU2VuZEFsbG93ZWQpCiB7Ci0gICAgTE9HKE5ldHdvcmssICJTb2Nr
ZXRTdHJlYW1IYW5kbGVJbnRlcm5hbDo6ZGlkT3BlbiAlZCIsCi0gICAgICAgIG1heFBlbmRpbmdT
ZW5kQWxsb3dlZCk7CisgICAgTE9HKE5ldHdvcmssICJTb2NrZXRTdHJlYW1IYW5kbGVJbnRlcm5h
bCAlcCBkaWRPcGVuU3RyZWFtKCkgbWF4UGVuZGluZ1NlbmRBbGxvd2VkPSVkIiwgdGhpcywgbWF4
UGVuZGluZ1NlbmRBbGxvd2VkKTsKICAgICBBU1NFUlQobWF4UGVuZGluZ1NlbmRBbGxvd2VkID4g
MCk7CiAgICAgaWYgKG1faGFuZGxlICYmIG1fc29ja2V0KSB7CiAgICAgICAgIEFTU0VSVChzb2Nr
ZXRIYW5kbGUgPT0gbV9zb2NrZXQuZ2V0KCkpOwpAQCAtMTEzLDEyICsxMTIsMTIgQEAgdm9pZCBT
b2NrZXRTdHJlYW1IYW5kbGVJbnRlcm5hbDo6ZGlkT3BlblN0cmVhbShXZWJLaXQ6OldlYlNvY2tl
dFN0cmVhbUhhbmRsZSogc28KICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgIH0K
LSAgICBMT0coTmV0d29yaywgIm5vIG1faGFuZGxlIG9yIG1fc29ja2V0PyIpOworICAgIExPRyhO
ZXR3b3JrLCAiU29ja2V0U3RyZWFtSGFuZGxlSW50ZXJuYWwgJXAgZGlkT3BlblN0cmVhbSgpIG1f
aGFuZGxlIG9yIG1fc29ja2V0IGlzIE5VTEwiLCB0aGlzKTsKIH0KIAogdm9pZCBTb2NrZXRTdHJl
YW1IYW5kbGVJbnRlcm5hbDo6ZGlkU2VuZERhdGEoV2ViS2l0OjpXZWJTb2NrZXRTdHJlYW1IYW5k
bGUqIHNvY2tldEhhbmRsZSwgaW50IGFtb3VudFNlbnQpCiB7Ci0gICAgTE9HKE5ldHdvcmssICJT
b2NrZXRTdHJlYW1IYW5kbGVJbnRlcm5hbDo6ZGlkU2VuZERhdGEgJWQiLCBhbW91bnRTZW50KTsK
KyAgICBMT0coTmV0d29yaywgIlNvY2tldFN0cmVhbUhhbmRsZUludGVybmFsICVwIGRpZFNlbmRE
YXRhKCkgYW1vdW50U2VudD0lZCIsIHRoaXMsIGFtb3VudFNlbnQpOwogICAgIEFTU0VSVChhbW91
bnRTZW50ID4gMCk7CiAgICAgaWYgKG1faGFuZGxlICYmIG1fc29ja2V0KSB7CiAgICAgICAgIEFT
U0VSVChzb2NrZXRIYW5kbGUgPT0gbV9zb2NrZXQuZ2V0KCkpOwpAQCAtMTMwLDcgKzEyOSw3IEBA
IHZvaWQgU29ja2V0U3RyZWFtSGFuZGxlSW50ZXJuYWw6OmRpZFNlbmREYXRhKFdlYktpdDo6V2Vi
U29ja2V0U3RyZWFtSGFuZGxlKiBzb2NrCiAKIHZvaWQgU29ja2V0U3RyZWFtSGFuZGxlSW50ZXJu
YWw6OmRpZFJlY2VpdmVEYXRhKFdlYktpdDo6V2ViU29ja2V0U3RyZWFtSGFuZGxlKiBzb2NrZXRI
YW5kbGUsIGNvbnN0IFdlYktpdDo6V2ViRGF0YSYgZGF0YSkKIHsKLSAgICBMT0coTmV0d29yaywg
ImRpZFJlY2VpdmVEYXRhIik7CisgICAgTE9HKE5ldHdvcmssICJTb2NrZXRTdHJlYW1IYW5kbGVJ
bnRlcm5hbCAlcCBkaWRSZWNlaXZlRGF0YSgpIFJlY2VpdmVkICVsdSBieXRlcyIsIHRoaXMsIGRh
dGEuc2l6ZSgpKTsKICAgICBpZiAobV9oYW5kbGUgJiYgbV9zb2NrZXQpIHsKICAgICAgICAgQVNT
RVJUKHNvY2tldEhhbmRsZSA9PSBtX3NvY2tldC5nZXQoKSk7CiAgICAgICAgIGlmIChtX2hhbmRs
ZS0+bV9jbGllbnQpCkBAIC0xNDAsNyArMTM5LDcgQEAgdm9pZCBTb2NrZXRTdHJlYW1IYW5kbGVJ
bnRlcm5hbDo6ZGlkUmVjZWl2ZURhdGEoV2ViS2l0OjpXZWJTb2NrZXRTdHJlYW1IYW5kbGUqIHMK
IAogdm9pZCBTb2NrZXRTdHJlYW1IYW5kbGVJbnRlcm5hbDo6ZGlkQ2xvc2UoV2ViS2l0OjpXZWJT
b2NrZXRTdHJlYW1IYW5kbGUqIHNvY2tldEhhbmRsZSkKIHsKLSAgICBMT0coTmV0d29yaywgImRp
ZENsb3NlIik7CisgICAgTE9HKE5ldHdvcmssICJTb2NrZXRTdHJlYW1IYW5kbGVJbnRlcm5hbCAl
cCBkaWRDbG9zZSgpIiwgdGhpcyk7CiAgICAgaWYgKG1faGFuZGxlICYmIG1fc29ja2V0KSB7CiAg
ICAgICAgIEFTU0VSVChzb2NrZXRIYW5kbGUgPT0gbV9zb2NrZXQuZ2V0KCkpOwogICAgICAgICBt
X3NvY2tldC5jbGVhcigpOwpAQCAtMTUzLDcgKzE1Miw3IEBAIHZvaWQgU29ja2V0U3RyZWFtSGFu
ZGxlSW50ZXJuYWw6OmRpZENsb3NlKFdlYktpdDo6V2ViU29ja2V0U3RyZWFtSGFuZGxlKiBzb2Nr
ZXRICiAKIHZvaWQgU29ja2V0U3RyZWFtSGFuZGxlSW50ZXJuYWw6OmRpZEZhaWwoV2ViS2l0OjpX
ZWJTb2NrZXRTdHJlYW1IYW5kbGUqIHNvY2tldEhhbmRsZSwgY29uc3QgV2ViS2l0OjpXZWJTb2Nr
ZXRTdHJlYW1FcnJvciYgZXJyKQogewotICAgIExPRyhOZXR3b3JrLCAiZGlkRmFpbCIpOworICAg
IExPRyhOZXR3b3JrLCAiU29ja2V0U3RyZWFtSGFuZGxlSW50ZXJuYWwgJXAgZGlkRmFpbCgpIiwg
dGhpcyk7CiAgICAgaWYgKG1faGFuZGxlICYmIG1fc29ja2V0KSB7CiAgICAgICAgIEFTU0VSVChz
b2NrZXRIYW5kbGUgPT0gbV9zb2NrZXQuZ2V0KCkpOwogICAgICAgICBtX3NvY2tldC5jbGVhcigp
Owo=
</data>

          </attachment>
      

    </bug>

</bugzilla>