<?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>105725</bug_id>
          
          <creation_ts>2012-12-24 09:29:44 -0800</creation_ts>
          <short_desc>Web Inspector: Native Memory Instrumentation: propagate ownership type to the serialized heap graph</short_desc>
          <delta_ts>2012-12-24 23:03:10 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Inspector (Deprecated)</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Ilya Tikhonovsky">loislo</reporter>
          <assigned_to name="Ilya Tikhonovsky">loislo</assigned_to>
          <cc>apavlov</cc>
    
    <cc>benjamin</cc>
    
    <cc>keishi</cc>
    
    <cc>loislo</cc>
    
    <cc>ojan.autocc</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>vsevik</cc>
    
    <cc>web-inspector-bugs</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>796993</commentid>
    <comment_count>0</comment_count>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2012-12-24 09:29:44 -0800</bug_when>
    <thetext>We are collecting information about edges but do not report the edge type.
But we could calculate edge types almost automatically.

Actually WebCore uses three edge types. 
ByPointer usually means a weak reference.
ByOwnPtr means a single strong reference.
ByRefPtr means one or more strong references.

In some cases a pointer to an object could be a strong reference. I hope it is relatively rare case in WebCore.
If it is possible I&apos;ll replace such pointer with OwnPtr. If it is not possible, I&apos;ll introduce addStrongPointerMember method.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>796997</commentid>
    <comment_count>1</comment_count>
      <attachid>180675</attachid>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2012-12-24 09:39:37 -0800</bug_when>
    <thetext>Created attachment 180675
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>797006</commentid>
    <comment_count>2</comment_count>
      <attachid>180675</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-12-24 10:15:31 -0800</bug_when>
    <thetext>Comment on attachment 180675
Patch

Attachment 180675 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/15496533</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>797082</commentid>
    <comment_count>3</comment_count>
      <attachid>180675</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2012-12-24 20:59:11 -0800</bug_when>
    <thetext>Comment on attachment 180675
Patch

You&apos;ll also need to update export symbols I think.

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

&gt; Source/WTF/wtf/MemoryInstrumentation.h:49
&gt; +    ByPointer,

Let&apos;s rename MemoryOwningType to HeapGraphEdgeType and the values to PointerEdge, ReferenceEdge, OwnPtrEdge etc.(I&apos;d prefer simply RefPtr, Pointer etc. but those would conflict with the classes).

&gt; Source/WebCore/inspector/HeapGraphSerializer.cpp:68
&gt; +        : m_refType(0)

I&apos;d leave it as m_type.

&gt; Source/WebCore/inspector/HeapGraphSerializer.cpp:89
&gt; +    memset(m_refTypes, 0, sizeof(m_refTypes));

m_refTypes -&gt; m_edgeTypes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>797089</commentid>
    <comment_count>4</comment_count>
      <attachid>180698</attachid>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2012-12-24 22:00:17 -0800</bug_when>
    <thetext>Created attachment 180698
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>797093</commentid>
    <comment_count>5</comment_count>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2012-12-24 22:20:09 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 180675 [details])
&gt; You&apos;ll also need to update export symbols I think.
&gt; 
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=180675&amp;action=review
&gt; 
&gt; &gt; Source/WTF/wtf/MemoryInstrumentation.h:49
&gt; &gt; +    ByPointer,
&gt; 
&gt; Let&apos;s rename MemoryOwningType to HeapGraphEdgeType and the values to PointerEdge, ReferenceEdge, OwnPtrEdge etc.(I&apos;d prefer simply RefPtr, Pointer etc. but those would conflict with the classes).


MemoryOwningType -&gt; MemberType
ByPointer -&gt; PointerMember,
ByReference -&gt; ReferenceMember,
new type OwnPtrMember,
new type RefPtrMember,
new type LastMemberTypeEntry


&gt; 
&gt; &gt; Source/WebCore/inspector/HeapGraphSerializer.cpp:68
&gt; &gt; +        : m_refType(0)
&gt; 
&gt; I&apos;d leave it as m_type.

done.

&gt; 
&gt; &gt; Source/WebCore/inspector/HeapGraphSerializer.cpp:89
&gt; &gt; +    memset(m_refTypes, 0, sizeof(m_refTypes));
&gt; 
&gt; m_refTypes -&gt; m_edgeTypes.

done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>797101</commentid>
    <comment_count>6</comment_count>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2012-12-24 23:03:10 -0800</bug_when>
    <thetext>Committed r138452: &lt;http://trac.webkit.org/changeset/138452&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>180675</attachid>
            <date>2012-12-24 09:39:37 -0800</date>
            <delta_ts>2012-12-24 22:00:09 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-105725-20121224213650.patch</filename>
            <type>text/plain</type>
            <size>23488</size>
            <attacher name="Ilya Tikhonovsky">loislo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM4NDM4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDdmNjE0OWFiN2JlYTlkMmM3Y2Q0NjJk
NjI1YjUwZTliMGQwMmFkNGMuLjkyODAwZjRlZWQ3ODg1MGNlMGZjNTNlNWNjN2FiNGI0YzI2MzQw
OWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjcgQEAKKzIwMTItMTItMjQgIElseWEgVGlraG9ub3Zza3kgIDxs
b2lzbG9AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IE5hdGl2ZSBNZW1v
cnkgSW5zdHJ1bWVudGF0aW9uOiBwcm9wYWdhdGUgb3duZXJzaGlwIHR5cGUgdG8gdGhlIHNlcmlh
bGl6ZWQgaGVhcCBncmFwaC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTEwNTcyNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIE1lbW9yeU93bmluZ1R5cGUgdmFsdWUgbmFtZXMgd2VyZSBhZGp1c3RlZCBhY2Nv
cmRpbmcgdG8gU3R5bGUgR3VpZGUuCisgICAgICAgIFNvdXJjZSBhcmd1bWVudCB3ZXJlIHJlbW92
ZWQgZnJvbSByZXBvcnRFZGdlLCByZXBvcnRMZWFmIGFuZCBvdGhlciBlZGdlIHJlbGF0ZWQgbWV0
aG9kcyBiZWNhdXNlIGl0IGlzIG5vdCBuZWNlc3NhcnkuCisgICAgICAgIE1lbW9yeU93bmluZ1R5
cGUgYXJndW1lbnQgd2FzIHByb3BhZ2F0ZWQgZnJvbSBNZW1vcnlJbnN0cnVtZW50YXRpb24gZG93
biB0byBIZWFwR3JhcGhTZXJpYWxpemVyLgorCisgICAgICAgIFRoZSBjaGFuZ2VzIGNvdmVyZWQg
YnkgdGVzdHMgaW4gVGVzdFdlYktpdEFQSS4KKworICAgICAgICAqIHd0Zi9NZW1vcnlJbnN0cnVt
ZW50YXRpb24uY3BwOgorICAgICAgICAoV1RGOjpNZW1vcnlJbnN0cnVtZW50YXRpb246OnJlcG9y
dEVkZ2UpOgorICAgICAgICAoV1RGOjpNZW1vcnlJbnN0cnVtZW50YXRpb246OnJlcG9ydExpbmtU
b0J1ZmZlcik6CisgICAgICAgIChXVEY6Ok1lbW9yeUNsYXNzSW5mbzo6YWRkUHJpdmF0ZUJ1ZmZl
cik6CisgICAgICAgICogd3RmL01lbW9yeUluc3RydW1lbnRhdGlvbi5oOgorICAgICAgICAoTWVt
b3J5SW5zdHJ1bWVudGF0aW9uQ2xpZW50KToKKyAgICAgICAgKE1lbW9yeUluc3RydW1lbnRhdGlv
bik6CisgICAgICAgIChXVEY6Ok1lbW9yeUluc3RydW1lbnRhdGlvbjo6YWRkUmF3QnVmZmVyKToK
KyAgICAgICAgKFdURjo6TWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpPd25pbmdUcmFpdHM6OmFkZE9i
amVjdCk6CisgICAgICAgIChXVEY6Ok1lbW9yeUluc3RydW1lbnRhdGlvbjo6YWRkT2JqZWN0SW1w
bCk6CisKIDIwMTItMTItMjEgIElseWEgVGlraG9ub3Zza3kgIDxsb2lzbG9AY2hyb21pdW0ub3Jn
PgogCiAgICAgICAgIFVucmV2aWV3ZWQuIEFub3RoZXIgdHJ5IHRvIGZpeCBBcHBsZSBXaW4gUmVs
ZWFzZSBidWlsZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA1YjI4MjNiYjc5OThhOTgxZGEwMjFiMTE0NzUzYzU0
YmZlZGRlODQ3Li43YmU2MzU0N2U5MjA3NmZmNTc3ZWI2NGYyMDQyZjI2YzJjOWMzMGJiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjkgQEAKKzIwMTItMTItMjQgIElseWEgVGlraG9ub3Zza3kgIDxs
b2lzbG9AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IE5hdGl2ZSBNZW1v
cnkgSW5zdHJ1bWVudGF0aW9uOiBwcm9wYWdhdGUgb3duZXJzaGlwIHR5cGUgdG8gdGhlIHNlcmlh
bGl6ZWQgaGVhcCBncmFwaC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTEwNTcyNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIE1lbW9yeU93bmluZ1R5cGUgdmFsdWUgbmFtZXMgd2VyZSBhZGp1c3RlZCBhY2Nv
cmRpbmcgdG8gU3R5bGUgR3VpZGUuCisgICAgICAgIFNvdXJjZSBhcmd1bWVudCB3ZXJlIHJlbW92
ZWQgZnJvbSByZXBvcnRFZGdlLCByZXBvcnRMZWFmIGFuZCBvdGhlciBlZGdlIHJlbGF0ZWQgbWV0
aG9kcyBiZWNhdXNlIGl0IGlzIG5vdCBuZWNlc3NhcnkuCisgICAgICAgIE1lbW9yeU93bmluZ1R5
cGUgYXJndW1lbnQgd2FzIHByb3BhZ2F0ZWQgZnJvbSBNZW1vcnlJbnN0cnVtZW50YXRpb24gZG93
biB0byBIZWFwR3JhcGhTZXJpYWxpemVyLgorCisgICAgICAgICogaW5zcGVjdG9yL0hlYXBHcmFw
aFNlcmlhbGl6ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SGVhcEdyYXBoRWRnZTo6SGVhcEdy
YXBoRWRnZSk6CisgICAgICAgIChIZWFwR3JhcGhFZGdlKToKKyAgICAgICAgKFdlYkNvcmU6Okhl
YXBHcmFwaFNlcmlhbGl6ZXI6OkhlYXBHcmFwaFNlcmlhbGl6ZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6SGVhcEdyYXBoU2VyaWFsaXplcjo6cmVwb3J0RWRnZSk6CisgICAgICAgIChXZWJDb3JlOjpI
ZWFwR3JhcGhTZXJpYWxpemVyOjpyZXBvcnRMZWFmKToKKyAgICAgICAgKFdlYkNvcmU6OkhlYXBH
cmFwaFNlcmlhbGl6ZXI6OnNlcmlhbGl6ZSk6CisgICAgICAgICogaW5zcGVjdG9yL0hlYXBHcmFw
aFNlcmlhbGl6ZXIuaDoKKyAgICAgICAgKEhlYXBHcmFwaFNlcmlhbGl6ZXIpOgorICAgICAgICAq
IGluc3BlY3Rvci9NZW1vcnlJbnN0cnVtZW50YXRpb25JbXBsLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Ok1lbW9yeUluc3RydW1lbnRhdGlvbkNsaWVudEltcGw6OnJlcG9ydEVkZ2UpOgorICAgICAg
ICAoV2ViQ29yZTo6TWVtb3J5SW5zdHJ1bWVudGF0aW9uQ2xpZW50SW1wbDo6cmVwb3J0TGVhZik6
CisgICAgICAgICogaW5zcGVjdG9yL01lbW9yeUluc3RydW1lbnRhdGlvbkltcGwuaDoKKyAgICAg
ICAgKE1lbW9yeUluc3RydW1lbnRhdGlvbkNsaWVudEltcGwpOgorCiAyMDEyLTEyLTI0ICBBbmRy
ZXkgTHVzaG5pa292ICA8bHVzaG5pa292QGNocm9taXVtLmNvbT4KIAogICAgICAgICBXZWIgSW5z
cGVjdG9yOiByZWZhY3RvciBUZXh0RWRpdG9ySGlnaGxpZ2h0ZXIncyBoaWdobGlnaHQgYXR0cmli
dXRlcyB0byBkZW5zZSBhcnJheQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvTWVtb3J5SW5z
dHJ1bWVudGF0aW9uLmNwcCBiL1NvdXJjZS9XVEYvd3RmL01lbW9yeUluc3RydW1lbnRhdGlvbi5j
cHAKaW5kZXggM2NmNmMwMmJmYzg0NzcwNWNkMzc3MTkxOGYzMzBhNjBlMjg5NzZiMi4uODE0MzVj
NDNhZTVkZTU2MGQ0ZWUyZTg2OGM0MjliMDllNzI4YmRjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dU
Ri93dGYvTWVtb3J5SW5zdHJ1bWVudGF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9NZW1v
cnlJbnN0cnVtZW50YXRpb24uY3BwCkBAIC00OSw5ICs0OSw5IEBAIE1lbW9yeUluc3RydW1lbnRh
dGlvbjo6fk1lbW9yeUluc3RydW1lbnRhdGlvbigpCiB7CiB9CiAKLXZvaWQgTWVtb3J5SW5zdHJ1
bWVudGF0aW9uOjpyZXBvcnRFZGdlKE1lbW9yeU9iamVjdEluZm8qIG93bmVyT2JqZWN0SW5mbywg
Y29uc3Qgdm9pZCogdGFyZ2V0LCBjb25zdCBjaGFyKiBuYW1lKQordm9pZCBNZW1vcnlJbnN0cnVt
ZW50YXRpb246OnJlcG9ydEVkZ2UoY29uc3Qgdm9pZCogdGFyZ2V0LCBjb25zdCBjaGFyKiBuYW1l
LCBNZW1vcnlPd25pbmdUeXBlIG93bmluZ1R5cGUpCiB7Ci0gICAgbV9jbGllbnQtPnJlcG9ydEVk
Z2Uob3duZXJPYmplY3RJbmZvLT5yZXBvcnRlZFBvaW50ZXIoKSwgdGFyZ2V0LCBuYW1lKTsKKyAg
ICBtX2NsaWVudC0+cmVwb3J0RWRnZSh0YXJnZXQsIG5hbWUsIG93bmluZ1R5cGUpOwogfQogCiBN
ZW1vcnlPYmplY3RUeXBlIE1lbW9yeUluc3RydW1lbnRhdGlvbjo6Z2V0T2JqZWN0VHlwZShNZW1v
cnlPYmplY3RJbmZvKiBvYmplY3RJbmZvKQpAQCAtNjQsMTIgKzY0LDEyIEBAIHZvaWQgTWVtb3J5
SW5zdHJ1bWVudGF0aW9uOjpjYWxsUmVwb3J0T2JqZWN0SW5mbyhNZW1vcnlPYmplY3RJbmZvKiBt
ZW1vcnlPYmplY3RJCiAgICAgbWVtb3J5T2JqZWN0SW5mby0+cmVwb3J0T2JqZWN0SW5mbyhwb2lu
dGVyLCBvYmplY3RUeXBlLCBvYmplY3RTaXplKTsKIH0KIAotdm9pZCBNZW1vcnlJbnN0cnVtZW50
YXRpb246OnJlcG9ydExpbmtUb0J1ZmZlcihjb25zdCB2b2lkKiBvd25lciwgY29uc3Qgdm9pZCog
YnVmZmVyLCBNZW1vcnlPYmplY3RUeXBlIG93bmVyT2JqZWN0VHlwZSwgc2l6ZV90IHNpemUsIGNv
bnN0IGNoYXIqIG5vZGVOYW1lLCBjb25zdCBjaGFyKiBlZGdlTmFtZSkKK3ZvaWQgTWVtb3J5SW5z
dHJ1bWVudGF0aW9uOjpyZXBvcnRMaW5rVG9CdWZmZXIoY29uc3Qgdm9pZCogYnVmZmVyLCBNZW1v
cnlPYmplY3RUeXBlIG93bmVyT2JqZWN0VHlwZSwgc2l6ZV90IHNpemUsIGNvbnN0IGNoYXIqIG5v
ZGVOYW1lLCBjb25zdCBjaGFyKiBlZGdlTmFtZSkKIHsKICAgICBNZW1vcnlPYmplY3RJbmZvIG1l
bW9yeU9iamVjdEluZm8odGhpcywgb3duZXJPYmplY3RUeXBlLCAwKTsKICAgICBtZW1vcnlPYmpl
Y3RJbmZvLnJlcG9ydE9iamVjdEluZm8oYnVmZmVyLCBvd25lck9iamVjdFR5cGUsIHNpemUpOwog
ICAgIG1lbW9yeU9iamVjdEluZm8uc2V0TmFtZShub2RlTmFtZSk7Ci0gICAgbV9jbGllbnQtPnJl
cG9ydExlYWYob3duZXIsIG1lbW9yeU9iamVjdEluZm8sIGVkZ2VOYW1lKTsKKyAgICBtX2NsaWVu
dC0+cmVwb3J0TGVhZihtZW1vcnlPYmplY3RJbmZvLCBlZGdlTmFtZSk7CiB9CiAKIE1lbW9yeUlu
c3RydW1lbnRhdGlvbjo6V3JhcHBlckJhc2U6OldyYXBwZXJCYXNlKE1lbW9yeU9iamVjdFR5cGUg
b2JqZWN0VHlwZSwgY29uc3Qgdm9pZCogcG9pbnRlcikKQEAgLTEzNiw3ICsxMzYsNyBAQCB2b2lk
IE1lbW9yeUNsYXNzSW5mbzo6YWRkUHJpdmF0ZUJ1ZmZlcihzaXplX3Qgc2l6ZSwgTWVtb3J5T2Jq
ZWN0VHlwZSBvd25lck9iamVjdAogICAgIGlmICghb3duZXJPYmplY3RUeXBlKQogICAgICAgICBv
d25lck9iamVjdFR5cGUgPSBtX29iamVjdFR5cGU7CiAgICAgbV9tZW1vcnlJbnN0cnVtZW50YXRp
b24tPmNvdW50T2JqZWN0U2l6ZSgwLCBvd25lck9iamVjdFR5cGUsIHNpemUpOwotICAgIG1fbWVt
b3J5SW5zdHJ1bWVudGF0aW9uLT5yZXBvcnRMaW5rVG9CdWZmZXIobV9tZW1vcnlPYmplY3RJbmZv
LT5yZXBvcnRlZFBvaW50ZXIoKSwgMCwgb3duZXJPYmplY3RUeXBlLCBzaXplLCBub2RlTmFtZSwg
ZWRnZU5hbWUpOworICAgIG1fbWVtb3J5SW5zdHJ1bWVudGF0aW9uLT5yZXBvcnRMaW5rVG9CdWZm
ZXIoMCwgb3duZXJPYmplY3RUeXBlLCBzaXplLCBub2RlTmFtZSwgZWRnZU5hbWUpOwogfQogCiB2
b2lkIE1lbW9yeUNsYXNzSW5mbzo6c2V0Q3VzdG9tQWxsb2NhdGlvbihib29sIGN1c3RvbUFsbG9j
YXRpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9NZW1vcnlJbnN0cnVtZW50YXRpb24u
aCBiL1NvdXJjZS9XVEYvd3RmL01lbW9yeUluc3RydW1lbnRhdGlvbi5oCmluZGV4IDBiOTkxNWI2
ZjU4MGJlZWI5YTFiZDAwNjNjZmZjYmEyMzg5ZjcxZjIuLmE3OThiOTBjOWE3ZjRmMzFlZDViNDBi
MDMyZTNjOTFiMjE0ZTAyZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL01lbW9yeUluc3Ry
dW1lbnRhdGlvbi5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL01lbW9yeUluc3RydW1lbnRhdGlvbi5o
CkBAIC00Niw4ICs0NiwxMSBAQCBjbGFzcyBNZW1vcnlJbnN0cnVtZW50YXRpb247CiB0eXBlZGVm
IGNvbnN0IGNoYXIqIE1lbW9yeU9iamVjdFR5cGU7CiAKIGVudW0gTWVtb3J5T3duaW5nVHlwZSB7
Ci0gICAgYnlQb2ludGVyLAotICAgIGJ5UmVmZXJlbmNlCisgICAgQnlQb2ludGVyLAorICAgIEJ5
UmVmZXJlbmNlLAorICAgIEJ5T3duUHRyLAorICAgIEJ5UmVmUHRyLAorICAgIExhc3RPd25pbmdU
eXBlRW50cnkKIH07CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHZvaWQgcmVwb3J0TWVtb3J5VXNh
Z2UoY29uc3QgVCosIE1lbW9yeU9iamVjdEluZm8qKTsKQEAgLTYwLDggKzYzLDggQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgYm9vbCBjaGVja0NvdW50ZWRPYmplY3QoY29uc3Qgdm9pZCopID0gMDsK
IAogICAgIHZpcnR1YWwgdm9pZCByZXBvcnROb2RlKGNvbnN0IE1lbW9yeU9iamVjdEluZm8mKSA9
IDA7Ci0gICAgdmlydHVhbCB2b2lkIHJlcG9ydEVkZ2UoY29uc3Qgdm9pZCogc291cmNlLCBjb25z
dCB2b2lkKiB0YXJnZXQsIGNvbnN0IGNoYXIqIGVkZ2VOYW1lKSA9IDA7Ci0gICAgdmlydHVhbCB2
b2lkIHJlcG9ydExlYWYoY29uc3Qgdm9pZCogc291cmNlLCBjb25zdCBNZW1vcnlPYmplY3RJbmZv
JiwgY29uc3QgY2hhciogZWRnZU5hbWUpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVwb3J0RWRn
ZShjb25zdCB2b2lkKiB0YXJnZXQsIGNvbnN0IGNoYXIqIGVkZ2VOYW1lLCBNZW1vcnlPd25pbmdU
eXBlKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlcG9ydExlYWYoY29uc3QgTWVtb3J5T2JqZWN0
SW5mbyYsIGNvbnN0IGNoYXIqIGVkZ2VOYW1lKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHJlcG9y
dEJhc2VBZGRyZXNzKGNvbnN0IHZvaWQqIGJhc2UsIGNvbnN0IHZvaWQqIHJlYWwpID0gMDsKIH07
CiAKQEAgLTEwNSw3ICsxMDgsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgdmlzaXRlZChjb25zdCB2
b2lkKiBwb2ludGVyKSB7IHJldHVybiBtX2NsaWVudC0+dmlzaXRlZChwb2ludGVyKTsgfQogICAg
IGJvb2wgY2hlY2tDb3VudGVkT2JqZWN0KGNvbnN0IHZvaWQqIHBvaW50ZXIpIHsgcmV0dXJuIG1f
Y2xpZW50LT5jaGVja0NvdW50ZWRPYmplY3QocG9pbnRlcik7IH0KIAotICAgIFdURl9FWFBPUlRf
UFJJVkFURSB2b2lkIHJlcG9ydEVkZ2UoTWVtb3J5T2JqZWN0SW5mbyogb3duZXJPYmplY3RJbmZv
LCBjb25zdCB2b2lkKiB0YXJnZXQsIGNvbnN0IGNoYXIqIGVkZ2VOYW1lKTsKKyAgICBXVEZfRVhQ
T1JUX1BSSVZBVEUgdm9pZCByZXBvcnRFZGdlKGNvbnN0IHZvaWQqIHRhcmdldCwgY29uc3QgY2hh
ciogZWRnZU5hbWUsIE1lbW9yeU93bmluZ1R5cGUpOwogCiAgICAgdmlydHVhbCB2b2lkIGRlZmVy
T2JqZWN0KFBhc3NPd25QdHI8V3JhcHBlckJhc2U+KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHBy
b2Nlc3NEZWZlcnJlZE9iamVjdHMoKSA9IDA7CkBAIC0xNzAsMTUgKzE3MywxNSBAQCBwcml2YXRl
OgogICAgICAgICBpZiAoIWJ1ZmZlciB8fCB2aXNpdGVkKGJ1ZmZlcikpCiAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgIGNvdW50T2JqZWN0U2l6ZShidWZmZXIsIG93bmVyT2JqZWN0VHlwZSwg
c2l6ZSk7Ci0gICAgICAgIHJlcG9ydExpbmtUb0J1ZmZlcihvd25lciwgYnVmZmVyLCBvd25lck9i
amVjdFR5cGUsIHNpemUsIG5vZGVOYW1lLCBlZGdlTmFtZSk7CisgICAgICAgIHJlcG9ydExpbmtU
b0J1ZmZlcihidWZmZXIsIG93bmVyT2JqZWN0VHlwZSwgc2l6ZSwgbm9kZU5hbWUsIGVkZ2VOYW1l
KTsKICAgICB9Ci0gICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgcmVwb3J0TGlua1RvQnVmZmVy
KGNvbnN0IHZvaWQqIG93bmVyLCBjb25zdCB2b2lkKiBidWZmZXIsIE1lbW9yeU9iamVjdFR5cGUg
b3duZXJPYmplY3RUeXBlLCBzaXplX3QsIGNvbnN0IGNoYXIqIG5vZGVOYW1lLCBjb25zdCBjaGFy
KiBlZGdlTmFtZSk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgcmVwb3J0TGlua1RvQnVm
ZmVyKGNvbnN0IHZvaWQqIGJ1ZmZlciwgTWVtb3J5T2JqZWN0VHlwZSBvd25lck9iamVjdFR5cGUs
IHNpemVfdCwgY29uc3QgY2hhciogbm9kZU5hbWUsIGNvbnN0IGNoYXIqIGVkZ2VOYW1lKTsKIAog
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgc3RydWN0IE93bmluZ1RyYWl0cyB7IC8vIERl
ZmF1bHQgYnlSZWZlcmVuY2UgaW1wbGVtZW50YXRpb24uCisgICAgc3RydWN0IE93bmluZ1RyYWl0
cyB7IC8vIERlZmF1bHQgQnlSZWZlcmVuY2UgaW1wbGVtZW50YXRpb24uCiAgICAgICAgIHN0YXRp
YyB2b2lkIGFkZE9iamVjdChNZW1vcnlJbnN0cnVtZW50YXRpb24qIGluc3RydW1lbnRhdGlvbiwg
Y29uc3QgVCYgdCwgTWVtb3J5T2JqZWN0SW5mbyogb3duZXJPYmplY3RJbmZvLCBjb25zdCBjaGFy
KiBlZGdlTmFtZSkKICAgICAgICAgewotICAgICAgICAgICAgaW5zdHJ1bWVudGF0aW9uLT5hZGRP
YmplY3RJbXBsKCZ0LCBvd25lck9iamVjdEluZm8sIGJ5UmVmZXJlbmNlLCBlZGdlTmFtZSk7Cisg
ICAgICAgICAgICBpbnN0cnVtZW50YXRpb24tPmFkZE9iamVjdEltcGwoJnQsIG93bmVyT2JqZWN0
SW5mbywgQnlSZWZlcmVuY2UsIGVkZ2VOYW1lKTsKICAgICAgICAgfQogCiAgICAgICAgIHN0YXRp
YyB2b2lkIGFkZFJvb3RPYmplY3QoTWVtb3J5SW5zdHJ1bWVudGF0aW9uKiBpbnN0cnVtZW50YXRp
b24sIGNvbnN0IFQmIHQsIE1lbW9yeU9iamVjdFR5cGUgb2JqZWN0VHlwZSkKQEAgLTE4OCwxMCAr
MTkxLDEwIEBAIHByaXZhdGU6CiAgICAgfTsKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0g
ICAgc3RydWN0IE93bmluZ1RyYWl0czxUKj4geyAvLyBDdXN0b20gYnlQb2ludGVyIGltcGxlbWVu
dGF0aW9uLgorICAgIHN0cnVjdCBPd25pbmdUcmFpdHM8VCo+IHsgLy8gQ3VzdG9tIEJ5UG9pbnRl
ciBpbXBsZW1lbnRhdGlvbi4KICAgICAgICAgc3RhdGljIHZvaWQgYWRkT2JqZWN0KE1lbW9yeUlu
c3RydW1lbnRhdGlvbiogaW5zdHJ1bWVudGF0aW9uLCBjb25zdCBUKiBjb25zdCYgdCwgTWVtb3J5
T2JqZWN0SW5mbyogb3duZXJPYmplY3RJbmZvLCBjb25zdCBjaGFyKiBlZGdlTmFtZSkKICAgICAg
ICAgewotICAgICAgICAgICAgaW5zdHJ1bWVudGF0aW9uLT5hZGRPYmplY3RJbXBsKHQsIG93bmVy
T2JqZWN0SW5mbywgYnlQb2ludGVyLCBlZGdlTmFtZSk7CisgICAgICAgICAgICBpbnN0cnVtZW50
YXRpb24tPmFkZE9iamVjdEltcGwodCwgb3duZXJPYmplY3RJbmZvLCBCeVBvaW50ZXIsIGVkZ2VO
YW1lKTsKICAgICAgICAgfQogCiAgICAgICAgIHN0YXRpYyB2b2lkIGFkZFJvb3RPYmplY3QoTWVt
b3J5SW5zdHJ1bWVudGF0aW9uKiBpbnN0cnVtZW50YXRpb24sIGNvbnN0IFQqIGNvbnN0JiB0LCBN
ZW1vcnlPYmplY3RUeXBlIG9iamVjdFR5cGUpCkBAIC0yNjMsMTIgKzI2NiwxMiBAQCB2b2lkIHJl
cG9ydE1lbW9yeVVzYWdlKGNvbnN0IFQqIG9iamVjdCwgTWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5
T2JqZWN0SW5mbykKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiB2b2lkIE1lbW9yeUluc3RydW1lbnRh
dGlvbjo6YWRkT2JqZWN0SW1wbChjb25zdCBUKiBvYmplY3QsIE1lbW9yeU9iamVjdEluZm8qIG93
bmVyT2JqZWN0SW5mbywgTWVtb3J5T3duaW5nVHlwZSBvd25pbmdUeXBlLCBjb25zdCBjaGFyKiBl
ZGdlTmFtZSkKIHsKLSAgICBpZiAob3duaW5nVHlwZSA9PSBieVJlZmVyZW5jZSkKKyAgICBpZiAo
b3duaW5nVHlwZSA9PSBCeVJlZmVyZW5jZSkKICAgICAgICAgcmVwb3J0TWVtb3J5VXNhZ2Uob2Jq
ZWN0LCBvd25lck9iamVjdEluZm8pOwogICAgIGVsc2UgewogICAgICAgICBpZiAoIW9iamVjdCkK
ICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgcmVwb3J0RWRnZShvd25lck9iamVjdEluZm8s
IG9iamVjdCwgZWRnZU5hbWUpOworICAgICAgICByZXBvcnRFZGdlKG9iamVjdCwgZWRnZU5hbWUs
IG93bmluZ1R5cGUpOwogICAgICAgICBpZiAodmlzaXRlZChvYmplY3QpKQogICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICBkZWZlck9iamVjdChhZG9wdFB0cihuZXcgV3JhcHBlcjxUPihvYmpl
Y3QsIGdldE9iamVjdFR5cGUob3duZXJPYmplY3RJbmZvKSkpKTsKQEAgLTI3OCwxNyArMjgxLDE3
IEBAIHZvaWQgTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjphZGRPYmplY3RJbXBsKGNvbnN0IFQqIG9i
amVjdCwgTWVtb3J5T2JqZWN0SW5mbyogb3duCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgogdm9pZCBN
ZW1vcnlJbnN0cnVtZW50YXRpb246OmFkZE9iamVjdEltcGwoY29uc3QgT3duUHRyPFQ+KiBvYmpl
Y3QsIE1lbW9yeU9iamVjdEluZm8qIG93bmVyT2JqZWN0SW5mbywgTWVtb3J5T3duaW5nVHlwZSBv
d25pbmdUeXBlLCBjb25zdCBjaGFyKiBlZGdlTmFtZSkKIHsKLSAgICBpZiAob3duaW5nVHlwZSA9
PSBieVBvaW50ZXIgJiYgIXZpc2l0ZWQob2JqZWN0KSkKKyAgICBpZiAob3duaW5nVHlwZSA9PSBC
eVBvaW50ZXIgJiYgIXZpc2l0ZWQob2JqZWN0KSkKICAgICAgICAgY291bnRPYmplY3RTaXplKG9i
amVjdCwgZ2V0T2JqZWN0VHlwZShvd25lck9iamVjdEluZm8pLCBzaXplb2YoKm9iamVjdCkpOwot
ICAgIGFkZE9iamVjdEltcGwob2JqZWN0LT5nZXQoKSwgb3duZXJPYmplY3RJbmZvLCBieVBvaW50
ZXIsIGVkZ2VOYW1lKTsKKyAgICBhZGRPYmplY3RJbXBsKG9iamVjdC0+Z2V0KCksIG93bmVyT2Jq
ZWN0SW5mbywgQnlPd25QdHIsIGVkZ2VOYW1lKTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4K
IHZvaWQgTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjphZGRPYmplY3RJbXBsKGNvbnN0IFJlZlB0cjxU
Piogb2JqZWN0LCBNZW1vcnlPYmplY3RJbmZvKiBvd25lck9iamVjdEluZm8sIE1lbW9yeU93bmlu
Z1R5cGUgb3duaW5nVHlwZSwgY29uc3QgY2hhciogZWRnZU5hbWUpCiB7Ci0gICAgaWYgKG93bmlu
Z1R5cGUgPT0gYnlQb2ludGVyICYmICF2aXNpdGVkKG9iamVjdCkpCisgICAgaWYgKG93bmluZ1R5
cGUgPT0gQnlQb2ludGVyICYmICF2aXNpdGVkKG9iamVjdCkpCiAgICAgICAgIGNvdW50T2JqZWN0
U2l6ZShvYmplY3QsIGdldE9iamVjdFR5cGUob3duZXJPYmplY3RJbmZvKSwgc2l6ZW9mKCpvYmpl
Y3QpKTsKLSAgICBhZGRPYmplY3RJbXBsKG9iamVjdC0+Z2V0KCksIG93bmVyT2JqZWN0SW5mbywg
YnlQb2ludGVyLCBlZGdlTmFtZSk7CisgICAgYWRkT2JqZWN0SW1wbChvYmplY3QtPmdldCgpLCBv
d25lck9iamVjdEluZm8sIEJ5UmVmUHRyLCBlZGdlTmFtZSk7CiB9CiAKIHRlbXBsYXRlPHR5cGVu
YW1lIFQ+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSGVhcEdyYXBoU2Vy
aWFsaXplci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSGVhcEdyYXBoU2VyaWFsaXpl
ci5jcHAKaW5kZXggZTNlODBhNTdjNDY5OWNkMjk0ODQ0YjljODI2NmFmM2NlMzdkZjA2Ny4uYzI3
NDA5Nzk2ODc2ODlkZjkzODBiZDU5NWJkMDg2ZTMzNDEzZTY3MCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0hlYXBHcmFwaFNlcmlhbGl6ZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9IZWFwR3JhcGhTZXJpYWxpemVyLmNwcApAQCAtNjUsMTQgKzY1LDE0
IEBAIHB1YmxpYzoKIGNsYXNzIEhlYXBHcmFwaEVkZ2UgewogcHVibGljOgogICAgIEhlYXBHcmFw
aEVkZ2UoKQotICAgICAgICA6IG1fdHlwZSgwKQorICAgICAgICA6IG1fcmVmVHlwZSgwKQogICAg
ICAgICAsIG1fdGFyZ2V0SW5kZXhJc0tub3duKGZhbHNlKQogICAgICAgICAsIG1fdG9JbmRleCgw
KQogICAgICAgICAsIG1fbmFtZSgwKQogICAgIHsKICAgICB9CiAKLSAgICBpbnQgbV90eXBlOwor
ICAgIGludCBtX3JlZlR5cGU7CiAgICAgYm9vbCBtX3RhcmdldEluZGV4SXNLbm93bjsKICAgICB1
bmlvbiB7CiAgICAgICAgIGNvbnN0IHZvaWQqIG1fdG9PYmplY3Q7CkBAIC04NSw2ICs4NSwxOCBA
QCBIZWFwR3JhcGhTZXJpYWxpemVyOjpIZWFwR3JhcGhTZXJpYWxpemVyKCkKICAgICA6IG1fbGFz
dFJlcG9ydGVkRWRnZUluZGV4KDApCiB7CiAgICAgbV9zdHJpbmdzLmFwcGVuZChTdHJpbmcoKSk7
CisKKyAgICBtZW1zZXQobV9yZWZUeXBlcywgMCwgc2l6ZW9mKG1fcmVmVHlwZXMpKTsKKworICAg
IEFTU0VSVChtX3N0cmluZ3Muc2l6ZSgpKTsKKyAgICBtX3JlZlR5cGVzW1dURjo6QnlQb2ludGVy
XSA9IG1fc3RyaW5ncy5zaXplKCk7CisgICAgbV9zdHJpbmdzLmFwcGVuZCgid2Vha1JlZiIpOwor
CisgICAgbV9yZWZUeXBlc1tXVEY6OkJ5T3duUHRyXSA9IG1fc3RyaW5ncy5zaXplKCk7CisgICAg
bV9zdHJpbmdzLmFwcGVuZCgib3duUmVmIik7CisKKyAgICBtX3JlZlR5cGVzW1dURjo6QnlSZWZQ
dHJdID0gbV9zdHJpbmdzLnNpemUoKTsKKyAgICBtX3N0cmluZ3MuYXBwZW5kKCJjb3VudFJlZiIp
OwogfQogCiBIZWFwR3JhcGhTZXJpYWxpemVyOjp+SGVhcEdyYXBoU2VyaWFsaXplcigpCkBAIC0x
MDYsMTYgKzExOCwxOSBAQCB2b2lkIEhlYXBHcmFwaFNlcmlhbGl6ZXI6OnJlcG9ydE5vZGUoY29u
c3QgV1RGOjpNZW1vcnlPYmplY3RJbmZvJiBpbmZvKQogICAgIG1fbm9kZXMuYXBwZW5kKG5vZGUp
OwogfQogCi12b2lkIEhlYXBHcmFwaFNlcmlhbGl6ZXI6OnJlcG9ydEVkZ2UoY29uc3Qgdm9pZCos
IGNvbnN0IHZvaWQqIHRvLCBjb25zdCBjaGFyKiBuYW1lKQordm9pZCBIZWFwR3JhcGhTZXJpYWxp
emVyOjpyZXBvcnRFZGdlKGNvbnN0IHZvaWQqIHRvLCBjb25zdCBjaGFyKiBuYW1lLCBXVEY6Ok1l
bW9yeU93bmluZ1R5cGUgb3duaW5nVHlwZSkKIHsKICAgICBIZWFwR3JhcGhFZGdlIGVkZ2U7CiAg
ICAgQVNTRVJUKHRvKTsKKyAgICBBU1NFUlQob3duaW5nVHlwZSA+PSAwKTsKKyAgICBBU1NFUlQo
b3duaW5nVHlwZSA8IFdURjo6TGFzdE93bmluZ1R5cGVFbnRyeSk7CisgICAgZWRnZS5tX3JlZlR5
cGUgPSBtX3JlZlR5cGVzW293bmluZ1R5cGVdOwogICAgIGVkZ2UubV90b09iamVjdCA9IHRvOwog
ICAgIGVkZ2UubV9uYW1lID0gYWRkU3RyaW5nKG5hbWUpOwogICAgIG1fZWRnZXMuYXBwZW5kKGVk
Z2UpOwogfQogCi12b2lkIEhlYXBHcmFwaFNlcmlhbGl6ZXI6OnJlcG9ydExlYWYoY29uc3Qgdm9p
ZCosIGNvbnN0IFdURjo6TWVtb3J5T2JqZWN0SW5mbyYgaW5mbywgY29uc3QgY2hhciogZWRnZU5h
bWUpCit2b2lkIEhlYXBHcmFwaFNlcmlhbGl6ZXI6OnJlcG9ydExlYWYoY29uc3QgV1RGOjpNZW1v
cnlPYmplY3RJbmZvJiBpbmZvLCBjb25zdCBjaGFyKiBlZGdlTmFtZSkKIHsKICAgICBIZWFwR3Jh
cGhOb2RlIG5vZGU7CiAgICAgbm9kZS5tX3R5cGUgPSBhZGRTdHJpbmcoaW5mby5vYmplY3RUeXBl
KCkpOwpAQCAtMTI3LDYgKzE0Miw3IEBAIHZvaWQgSGVhcEdyYXBoU2VyaWFsaXplcjo6cmVwb3J0
TGVhZihjb25zdCB2b2lkKiwgY29uc3QgV1RGOjpNZW1vcnlPYmplY3RJbmZvJiBpCiAgICAgbV9u
b2Rlcy5hcHBlbmQobm9kZSk7CiAKICAgICBIZWFwR3JhcGhFZGdlIGVkZ2U7CisgICAgZWRnZS5t
X3JlZlR5cGUgPSBtX3JlZlR5cGVzW1dURjo6QnlPd25QdHJdOwogICAgIGVkZ2UubV90b0luZGV4
ID0gbm9kZUluZGV4OwogICAgIGVkZ2UubV90YXJnZXRJbmRleElzS25vd24gPSB0cnVlOwogICAg
IGVkZ2UubV9uYW1lID0gYWRkU3RyaW5nKGVkZ2VOYW1lKTsKQEAgLTE1Myw3ICsxNjksNyBAQCBQ
YXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gSGVhcEdyYXBoU2VyaWFsaXplcjo6c2VyaWFsaXpl
KCkKICAgICBSZWZQdHI8SW5zcGVjdG9yQXJyYXk+IGVkZ2VzID0gSW5zcGVjdG9yQXJyYXk6OmNy
ZWF0ZSgpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9lZGdlcy5zaXplKCk7IGkrKykg
ewogICAgICAgICBIZWFwR3JhcGhFZGdlJiBlZGdlID0gbV9lZGdlc1tpXTsKLSAgICAgICAgZWRn
ZXMtPnB1c2hJbnQoZWRnZS5tX3R5cGUpOworICAgICAgICBlZGdlcy0+cHVzaEludChlZGdlLm1f
cmVmVHlwZSk7CiAgICAgICAgIGVkZ2VzLT5wdXNoSW50KGVkZ2UubV90b0luZGV4KTsKICAgICAg
ICAgZWRnZXMtPnB1c2hJbnQoZWRnZS5tX25hbWUpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9IZWFwR3JhcGhTZXJpYWxpemVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSGVhcEdyYXBoU2VyaWFsaXplci5oCmluZGV4IDMxMTBhN2YzNDRhOWIxMDA1
YjYzOWJhNmZhOTJjZGQ1MTY1Njk5MWEuLmQxNmE3ZGY0NDhlM2I3ZGE2ZTkyY2YzNzdhYTAzNTY3
ZTQyNGQ3YmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9IZWFwR3JhcGhT
ZXJpYWxpemVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0hlYXBHcmFwaFNlcmlh
bGl6ZXIuaApAQCAtNTIsOCArNTIsOCBAQCBwdWJsaWM6CiAgICAgSGVhcEdyYXBoU2VyaWFsaXpl
cigpOwogICAgIH5IZWFwR3JhcGhTZXJpYWxpemVyKCk7CiAgICAgdm9pZCByZXBvcnROb2RlKGNv
bnN0IFdURjo6TWVtb3J5T2JqZWN0SW5mbyYpOwotICAgIHZvaWQgcmVwb3J0RWRnZShjb25zdCB2
b2lkKiwgY29uc3Qgdm9pZCosIGNvbnN0IGNoYXIqKTsKLSAgICB2b2lkIHJlcG9ydExlYWYoY29u
c3Qgdm9pZCosIGNvbnN0IFdURjo6TWVtb3J5T2JqZWN0SW5mbyYsIGNvbnN0IGNoYXIqKTsKKyAg
ICB2b2lkIHJlcG9ydEVkZ2UoY29uc3Qgdm9pZCosIGNvbnN0IGNoYXIqLCBXVEY6Ok1lbW9yeU93
bmluZ1R5cGUpOworICAgIHZvaWQgcmVwb3J0TGVhZihjb25zdCBXVEY6Ok1lbW9yeU9iamVjdElu
Zm8mLCBjb25zdCBjaGFyKik7CiAgICAgdm9pZCByZXBvcnRCYXNlQWRkcmVzcyhjb25zdCB2b2lk
KiwgY29uc3Qgdm9pZCopOwogCiAgICAgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IHNlcmlh
bGl6ZSgpOwpAQCAtNzcsNiArNzcsOCBAQCBwcml2YXRlOgogCiAgICAgVmVjdG9yPEhlYXBHcmFw
aE5vZGU+IG1fbm9kZXM7CiAgICAgVmVjdG9yPEhlYXBHcmFwaEVkZ2U+IG1fZWRnZXM7CisKKyAg
ICBzaXplX3QgbV9yZWZUeXBlc1tXVEY6Okxhc3RPd25pbmdUeXBlRW50cnldOwogfTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L01lbW9yeUluc3RydW1lbnRhdGlvbkltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L01lbW9yeUluc3RydW1lbnRhdGlvbkltcGwuY3BwCmluZGV4IDJlNTllYjYzMDE5MWVjZTI5ZDFm
OGI1YjI1NWZmODI4OTYwMzNiMDkuLmViNTMxMzY5M2YzMDQ1MjE4NWRjYThiNjdkMDM2NjcyZDE3
NDk5NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9NZW1vcnlJbnN0cnVt
ZW50YXRpb25JbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTWVtb3J5SW5z
dHJ1bWVudGF0aW9uSW1wbC5jcHAKQEAgLTEwMSwxNiArMTAxLDE2IEBAIHZvaWQgTWVtb3J5SW5z
dHJ1bWVudGF0aW9uQ2xpZW50SW1wbDo6cmVwb3J0Tm9kZShjb25zdCBNZW1vcnlPYmplY3RJbmZv
JiBub2RlKQogICAgICAgICBtX2dyYXBoU2VyaWFsaXplci0+cmVwb3J0Tm9kZShub2RlKTsKIH0K
IAotdm9pZCBNZW1vcnlJbnN0cnVtZW50YXRpb25DbGllbnRJbXBsOjpyZXBvcnRFZGdlKGNvbnN0
IHZvaWQqIHNvdXJjZSwgY29uc3Qgdm9pZCogdGFyZ2V0LCBjb25zdCBjaGFyKiBuYW1lKQordm9p
ZCBNZW1vcnlJbnN0cnVtZW50YXRpb25DbGllbnRJbXBsOjpyZXBvcnRFZGdlKGNvbnN0IHZvaWQq
IHRhcmdldCwgY29uc3QgY2hhciogbmFtZSwgTWVtb3J5T3duaW5nVHlwZSBvd25pbmdUeXBlKQog
ewogICAgIGlmIChtX2dyYXBoU2VyaWFsaXplcikKLSAgICAgICAgbV9ncmFwaFNlcmlhbGl6ZXIt
PnJlcG9ydEVkZ2Uoc291cmNlLCB0YXJnZXQsIG5hbWUpOworICAgICAgICBtX2dyYXBoU2VyaWFs
aXplci0+cmVwb3J0RWRnZSh0YXJnZXQsIG5hbWUsIG93bmluZ1R5cGUpOwogfQogCi12b2lkIE1l
bW9yeUluc3RydW1lbnRhdGlvbkNsaWVudEltcGw6OnJlcG9ydExlYWYoY29uc3Qgdm9pZCogb3du
ZXIsIGNvbnN0IE1lbW9yeU9iamVjdEluZm8mIHRhcmdldCwgY29uc3QgY2hhciogZWRnZU5hbWUp
Cit2b2lkIE1lbW9yeUluc3RydW1lbnRhdGlvbkNsaWVudEltcGw6OnJlcG9ydExlYWYoY29uc3Qg
TWVtb3J5T2JqZWN0SW5mbyYgdGFyZ2V0LCBjb25zdCBjaGFyKiBlZGdlTmFtZSkKIHsKICAgICBp
ZiAobV9ncmFwaFNlcmlhbGl6ZXIpCi0gICAgICAgIG1fZ3JhcGhTZXJpYWxpemVyLT5yZXBvcnRM
ZWFmKG93bmVyLCB0YXJnZXQsIGVkZ2VOYW1lKTsKKyAgICAgICAgbV9ncmFwaFNlcmlhbGl6ZXIt
PnJlcG9ydExlYWYodGFyZ2V0LCBlZGdlTmFtZSk7CiB9CiAKIHZvaWQgTWVtb3J5SW5zdHJ1bWVu
dGF0aW9uQ2xpZW50SW1wbDo6cmVwb3J0QmFzZUFkZHJlc3MoY29uc3Qgdm9pZCogYmFzZSwgY29u
c3Qgdm9pZCogcmVhbCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9NZW1v
cnlJbnN0cnVtZW50YXRpb25JbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTWVtb3J5
SW5zdHJ1bWVudGF0aW9uSW1wbC5oCmluZGV4IGJhNGY5OGViOGE0ZmJkZGViNTA4NTVkM2E4ZTI0
MjY1Y2JmNDQxNWYuLmZjZWY1NGZiNmNiNTBmMzRkYjc4M2Y0MWFhMzdhMjVhM2M2YTY1ZDUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9NZW1vcnlJbnN0cnVtZW50YXRpb25J
bXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL01lbW9yeUluc3RydW1lbnRhdGlv
bkltcGwuaApAQCAtNDAsNiArNDAsNyBAQAogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2gu
aD4KIAogdXNpbmcgV1RGOjpNZW1vcnlPYmplY3RUeXBlOwordXNpbmcgV1RGOjpNZW1vcnlPd25p
bmdUeXBlOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTg1LDggKzg2LDggQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgYm9vbCB2aXNpdGVkKGNvbnN0IHZvaWQqKSBPVkVSUklERTsKICAgICB2
aXJ0dWFsIGJvb2wgY2hlY2tDb3VudGVkT2JqZWN0KGNvbnN0IHZvaWQqKSBPVkVSUklERTsKICAg
ICB2aXJ0dWFsIHZvaWQgcmVwb3J0Tm9kZShjb25zdCBNZW1vcnlPYmplY3RJbmZvJikgT1ZFUlJJ
REU7Ci0gICAgdmlydHVhbCB2b2lkIHJlcG9ydEVkZ2UoY29uc3Qgdm9pZCosIGNvbnN0IHZvaWQq
LCBjb25zdCBjaGFyKikgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIHJlcG9ydExlYWYoY29u
c3Qgdm9pZCosIGNvbnN0IE1lbW9yeU9iamVjdEluZm8mLCBjb25zdCBjaGFyKikgT1ZFUlJJREU7
CisgICAgdmlydHVhbCB2b2lkIHJlcG9ydEVkZ2UoY29uc3Qgdm9pZCosIGNvbnN0IGNoYXIqLCBN
ZW1vcnlPd25pbmdUeXBlKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVwb3J0TGVhZihj
b25zdCBNZW1vcnlPYmplY3RJbmZvJiwgY29uc3QgY2hhciopIE9WRVJSSURFOwogICAgIHZpcnR1
YWwgdm9pZCByZXBvcnRCYXNlQWRkcmVzcyhjb25zdCB2b2lkKiwgY29uc3Qgdm9pZCopIE9WRVJS
SURFOwogCiAgICAgdm9pZCByZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKikgY29u
c3Q7CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXgg
N2JlMWYyN2Y4NjJmZjM5MGMyZTRjM2FjNDVkNTIxYmNjNzcwN2EzNS4uZTEyMzkwNGE4MDBkN2Rm
NTFmNWE1ZTRkNzJhMGRiN2U3ZjliODUxNCAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisr
KyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDEyLTEyLTI0ICBJbHlhIFRp
a2hvbm92c2t5ICA8bG9pc2xvQGNocm9taXVtLm9yZz4KKworICAgICAgICBXZWIgSW5zcGVjdG9y
OiBOYXRpdmUgTWVtb3J5IEluc3RydW1lbnRhdGlvbjogcHJvcGFnYXRlIG93bmVyc2hpcCB0eXBl
IHRvIHRoZSBzZXJpYWxpemVkIGhlYXAgZ3JhcGguCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDU3MjUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBNZW1vcnlPd25pbmdUeXBlIHZhbHVlIG5hbWVzIHdlcmUg
YWRqdXN0ZWQgYWNjb3JkaW5nIHRvIFN0eWxlIEd1aWRlLgorICAgICAgICBFeGlzdGluZyB0ZXN0
cyB3ZXJlIGV4dGVuZGVkIHdpdGggbGluayB0eXBlIHZhbGlkYXRpb24uCisKKyAgICAgICAgKiBU
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9NZW1vcnlJbnN0cnVtZW50YXRpb25UZXN0LmNwcDoKKwog
MjAxMi0xMi0yMiAgRGFuIFdpbnNoaXAgIDxkYW53QGdub21lLm9yZz4KIAogICAgICAgICBBZGQg
YSBwYXRjaCB0byBmaXggbGlieG1sMiAyLjkuMCByZWdyZXNzaW9uCmRpZmYgLS1naXQgYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9NZW1vcnlJbnN0cnVtZW50YXRpb25UZXN0LmNwcCBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL01lbW9yeUluc3RydW1lbnRhdGlvblRlc3Qu
Y3BwCmluZGV4IDdiZGNhYzA2Mzc5NDFiYTAwMGZkM2E2MDI4YzFlMWFlNGNiZDc5ZWEuLjdmN2Vm
ODJmYWM1MDE1MTM3ZjI2MTFhMzY3MDk1ZGM5YTI2NmU2MTEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV1RGL01lbW9yeUluc3RydW1lbnRhdGlvblRlc3QuY3BwCisrKyBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL01lbW9yeUluc3RydW1lbnRhdGlvblRlc3Qu
Y3BwCkBAIC03OSwxMSArNzksMjAgQEAgbmFtZXNwYWNlIHsKIHVzaW5nIFdURjo6TWVtb3J5T2Jq
ZWN0SW5mbzsKIHVzaW5nIFdURjo6TWVtb3J5Q2xhc3NJbmZvOwogdXNpbmcgV1RGOjpNZW1vcnlP
YmplY3RUeXBlOwordXNpbmcgV1RGOjpNZW1vcnlPd25pbmdUeXBlOwogCiBNZW1vcnlPYmplY3RU
eXBlIFRlc3RUeXBlID0gIlRlc3RUeXBlIjsKIAogY2xhc3MgTWVtb3J5SW5zdHJ1bWVudGF0aW9u
VGVzdENsaWVudCA6IHB1YmxpYyBXVEY6Ok1lbW9yeUluc3RydW1lbnRhdGlvbkNsaWVudCB7CiBw
dWJsaWM6CisgICAgTWVtb3J5SW5zdHJ1bWVudGF0aW9uVGVzdENsaWVudCgpIDogbV9saW5rcyhX
VEY6Okxhc3RPd25pbmdUeXBlRW50cnkpCisgICAgeworICAgICAgICBtX2xpbmtzW1dURjo6QnlQ
b2ludGVyXSA9IDA7CisgICAgICAgIG1fbGlua3NbV1RGOjpCeVJlZmVyZW5jZV0gPSAwOworICAg
ICAgICBtX2xpbmtzW1dURjo6QnlSZWZQdHJdID0gMDsKKyAgICAgICAgbV9saW5rc1tXVEY6OkJ5
T3duUHRyXSA9IDA7CisgICAgfQorCiAgICAgdmlydHVhbCB2b2lkIGNvdW50T2JqZWN0U2l6ZShj
b25zdCB2b2lkKiwgTWVtb3J5T2JqZWN0VHlwZSBvYmplY3RUeXBlLCBzaXplX3Qgc2l6ZSkKICAg
ICB7CiAgICAgICAgIFR5cGVUb1NpemVNYXA6OkFkZFJlc3VsdCByZXN1bHQgPSBtX3RvdGFsU2l6
ZXMuYWRkKG9iamVjdFR5cGUsIHNpemUpOwpAQCAtOTMsOCArMTAyLDE0IEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIGJvb2wgdmlzaXRlZChjb25zdCB2b2lkKiBvYmplY3QpIHsgcmV0dXJuICFtX3Zp
c2l0ZWRPYmplY3RzLmFkZChvYmplY3QpLmlzTmV3RW50cnk7IH0KICAgICB2aXJ0dWFsIGJvb2wg
Y2hlY2tDb3VudGVkT2JqZWN0KGNvbnN0IHZvaWQqKSB7IHJldHVybiB0cnVlOyB9CiAgICAgdmly
dHVhbCB2b2lkIHJlcG9ydE5vZGUoY29uc3QgTWVtb3J5T2JqZWN0SW5mbyYpIE9WRVJSSURFIHsg
fQotICAgIHZpcnR1YWwgdm9pZCByZXBvcnRFZGdlKGNvbnN0IHZvaWQqLCBjb25zdCB2b2lkKiwg
Y29uc3QgY2hhciopIE9WRVJSSURFIHsgfQotICAgIHZpcnR1YWwgdm9pZCByZXBvcnRMZWFmKGNv
bnN0IHZvaWQqLCBjb25zdCBNZW1vcnlPYmplY3RJbmZvJiwgY29uc3QgY2hhciopIE9WRVJSSURF
IHsgfQorICAgIHZpcnR1YWwgdm9pZCByZXBvcnRFZGdlKGNvbnN0IHZvaWQqLCBjb25zdCBjaGFy
KiwgTWVtb3J5T3duaW5nVHlwZSBvd25pbmdUeXBlKSBPVkVSUklERQorICAgIHsKKyAgICAgICAg
KyttX2xpbmtzW293bmluZ1R5cGVdOworICAgIH0KKyAgICB2aXJ0dWFsIHZvaWQgcmVwb3J0TGVh
Zihjb25zdCBNZW1vcnlPYmplY3RJbmZvJiwgY29uc3QgY2hhciopIE9WRVJSSURFCisgICAgewor
ICAgICAgICArK21fbGlua3NbV1RGOjpCeU93blB0cl07CisgICAgfQogICAgIHZpcnR1YWwgdm9p
ZCByZXBvcnRCYXNlQWRkcmVzcyhjb25zdCB2b2lkKiwgY29uc3Qgdm9pZCopIE9WRVJSSURFIHsg
fQogCiAgICAgc2l6ZV90IHZpc2l0ZWRPYmplY3RzKCkgY29uc3QgeyByZXR1cm4gbV92aXNpdGVk
T2JqZWN0cy5zaXplKCk7IH0KQEAgLTEwNCw2ICsxMTksMTEgQEAgcHVibGljOgogICAgICAgICBy
ZXR1cm4gaSA9PSBtX3RvdGFsU2l6ZXMuZW5kKCkgPyAwIDogaS0+dmFsdWU7CiAgICAgfQogCisg
ICAgc2l6ZV90IGxpbmtzQ291bnQoY29uc3QgV1RGOjpNZW1vcnlPd25pbmdUeXBlIG93bmluZ1R5
cGUpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9saW5rc1tvd25pbmdUeXBlXTsKKyAg
ICB9CisKICAgICBzaXplX3QgcmVwb3J0ZWRTaXplRm9yQWxsVHlwZXMoKSBjb25zdAogICAgIHsK
ICAgICAgICAgc2l6ZV90IHNpemUgPSAwOwpAQCAtMTE2LDYgKzEzNiw3IEBAIHByaXZhdGU6CiAg
ICAgdHlwZWRlZiBIYXNoTWFwPE1lbW9yeU9iamVjdFR5cGUsIHNpemVfdD4gVHlwZVRvU2l6ZU1h
cDsKICAgICBUeXBlVG9TaXplTWFwIG1fdG90YWxTaXplczsKICAgICBXVEY6Okhhc2hTZXQ8Y29u
c3Qgdm9pZCo+IG1fdmlzaXRlZE9iamVjdHM7CisgICAgV1RGOjpWZWN0b3I8c2l6ZV90LCBXVEY6
Okxhc3RPd25pbmdUeXBlRW50cnk+IG1fbGlua3M7CiB9OwogCiBjbGFzcyBJbnN0cnVtZW50YXRp
b25UZXN0SW1wbCA6IHB1YmxpYyBXVEY6Ok1lbW9yeUluc3RydW1lbnRhdGlvbiB7CkBAIC0xMzAs
NiArMTUxLDcgQEAgcHVibGljOgogICAgIHNpemVfdCB2aXNpdGVkT2JqZWN0cygpIGNvbnN0IHsg
cmV0dXJuIG1fY2xpZW50LT52aXNpdGVkT2JqZWN0cygpOyB9CiAgICAgc2l6ZV90IHJlcG9ydGVk
U2l6ZUZvckFsbFR5cGVzKCkgY29uc3QgeyByZXR1cm4gbV9jbGllbnQtPnJlcG9ydGVkU2l6ZUZv
ckFsbFR5cGVzKCk7IH0KICAgICBzaXplX3QgdG90YWxTaXplKGNvbnN0IE1lbW9yeU9iamVjdFR5
cGUgb2JqZWN0VHlwZSkgY29uc3QgeyByZXR1cm4gbV9jbGllbnQtPnRvdGFsU2l6ZShvYmplY3RU
eXBlKTsgfQorICAgIHNpemVfdCBsaW5rc0NvdW50KGNvbnN0IFdURjo6TWVtb3J5T3duaW5nVHlw
ZSBvd25pbmdUeXBlKSBjb25zdCB7ICByZXR1cm4gbV9jbGllbnQtPmxpbmtzQ291bnQob3duaW5n
VHlwZSk7IH0KIAogcHJpdmF0ZToKICAgICBNZW1vcnlJbnN0cnVtZW50YXRpb25UZXN0Q2xpZW50
KiBtX2NsaWVudDsKQEAgLTE5Miw2ICsyMTQsNyBAQCBURVNUKE1lbW9yeUluc3RydW1lbnRhdGlv
blRlc3QsIHNpemVPZikKICAgICBoZWxwZXIuYWRkUm9vdE9iamVjdChpbnN0cnVtZW50ZWQpOwog
ICAgIEVYUEVDVF9FUShzaXplb2YoTm90SW5zdHJ1bWVudGVkKSwgaGVscGVyLnJlcG9ydGVkU2l6
ZUZvckFsbFR5cGVzKCkpOwogICAgIEVYUEVDVF9FUSgxdSwgaGVscGVyLnZpc2l0ZWRPYmplY3Rz
KCkpOworICAgIEVYUEVDVF9FUSgxdSwgaGVscGVyLmxpbmtzQ291bnQoV1RGOjpCeVBvaW50ZXIp
KTsKIH0KIAogVEVTVChNZW1vcnlJbnN0cnVtZW50YXRpb25UZXN0LCBudWxsQ2hlY2spCkBAIC0y
MDEsNiArMjI0LDcgQEAgVEVTVChNZW1vcnlJbnN0cnVtZW50YXRpb25UZXN0LCBudWxsQ2hlY2sp
CiAgICAgaGVscGVyLmFkZFJvb3RPYmplY3QoaW5zdHJ1bWVudGVkKTsKICAgICBFWFBFQ1RfRVEo
MHUsIGhlbHBlci5yZXBvcnRlZFNpemVGb3JBbGxUeXBlcygpKTsKICAgICBFWFBFQ1RfRVEoMHUs
IGhlbHBlci52aXNpdGVkT2JqZWN0cygpKTsKKyAgICBFWFBFQ1RfRVEoMHUsIGhlbHBlci5saW5r
c0NvdW50KFdURjo6QnlQb2ludGVyKSk7CiB9CiAKIFRFU1QoTWVtb3J5SW5zdHJ1bWVudGF0aW9u
VGVzdCwgcHRyVnNSZWYpCkBAIC0yMTEsNiArMjM1LDcgQEAgVEVTVChNZW1vcnlJbnN0cnVtZW50
YXRpb25UZXN0LCBwdHJWc1JlZikKICAgICAgICAgaGVscGVyLmFkZFJvb3RPYmplY3QoJmluc3Ry
dW1lbnRlZCk7CiAgICAgICAgIEVYUEVDVF9FUShzaXplb2YoSW5zdHJ1bWVudGVkKSArIHNpemVv
ZihOb3RJbnN0cnVtZW50ZWQpLCBoZWxwZXIucmVwb3J0ZWRTaXplRm9yQWxsVHlwZXMoKSk7CiAg
ICAgICAgIEVYUEVDVF9FUSgydSwgaGVscGVyLnZpc2l0ZWRPYmplY3RzKCkpOworICAgICAgICBF
WFBFQ1RfRVEoMXUsIGhlbHBlci5saW5rc0NvdW50KFdURjo6QnlQb2ludGVyKSk7CiAgICAgfQog
ICAgIHsKICAgICAgICAgSW5zdHJ1bWVudGF0aW9uVGVzdEhlbHBlciBoZWxwZXI7CkBAIC0yMTgs
NiArMjQzLDcgQEAgVEVTVChNZW1vcnlJbnN0cnVtZW50YXRpb25UZXN0LCBwdHJWc1JlZikKICAg
ICAgICAgaGVscGVyLmFkZFJvb3RPYmplY3QoaW5zdHJ1bWVudGVkKTsKICAgICAgICAgRVhQRUNU
X0VRKHNpemVvZihOb3RJbnN0cnVtZW50ZWQpLCBoZWxwZXIucmVwb3J0ZWRTaXplRm9yQWxsVHlw
ZXMoKSk7CiAgICAgICAgIEVYUEVDVF9FUSgxdSwgaGVscGVyLnZpc2l0ZWRPYmplY3RzKCkpOwor
ICAgICAgICBFWFBFQ1RfRVEoMXUsIGhlbHBlci5saW5rc0NvdW50KFdURjo6QnlQb2ludGVyKSk7
CiAgICAgfQogfQogCkBAIC0yNDEsNiArMjY3LDggQEAgVEVTVChNZW1vcnlJbnN0cnVtZW50YXRp
b25UZXN0LCBvd25QdHJOb3RJbnN0cnVtZW50ZWQpCiAgICAgaGVscGVyLmFkZFJvb3RPYmplY3Qo
aW5zdHJ1bWVudGVkV2l0aE93blB0cik7CiAgICAgRVhQRUNUX0VRKDJ1ICogc2l6ZW9mKE5vdElu
c3RydW1lbnRlZCksIGhlbHBlci5yZXBvcnRlZFNpemVGb3JBbGxUeXBlcygpKTsKICAgICBFWFBF
Q1RfRVEoMnUsIGhlbHBlci52aXNpdGVkT2JqZWN0cygpKTsKKyAgICBFWFBFQ1RfRVEoMXUsIGhl
bHBlci5saW5rc0NvdW50KFdURjo6QnlPd25QdHIpKTsKKyAgICBFWFBFQ1RfRVEoMXUsIGhlbHBl
ci5saW5rc0NvdW50KFdURjo6QnlQb2ludGVyKSk7CiB9CiAKIGNsYXNzIEluc3RydW1lbnRlZFVu
ZGVmaW5lZCB7CkBAIC03NjAsNiArNzg4LDcgQEAgVEVTVChNZW1vcnlJbnN0cnVtZW50YXRpb25U
ZXN0LCBhcnJheUJ1ZmZlcikKICAgICBoZWxwZXIuYWRkUm9vdE9iamVjdCh2YWx1ZSk7CiAgICAg
RVhQRUNUX0VRKHNpemVvZihpbnQpICogMTAwMCArIHNpemVvZihBcnJheUJ1ZmZlciksIGhlbHBl
ci5yZXBvcnRlZFNpemVGb3JBbGxUeXBlcygpKTsKICAgICBFWFBFQ1RfRVEoMnUsIGhlbHBlci52
aXNpdGVkT2JqZWN0cygpKTsKKyAgICBFWFBFQ1RfRVEoMXUsIGhlbHBlci5saW5rc0NvdW50KFdU
Rjo6QnlSZWZQdHIpKTsKIH0KIAogY2xhc3MgQW5jZXN0b3JXaXRoVmlydHVhbE1ldGhvZCB7CkBA
IC04NTEsNyArODgwLDcgQEAgcHJpdmF0ZToKIGNsYXNzIENvdW50TGlua3NGcm9tSW5zdHJ1bWVu
dGVkT2JqZWN0IDogcHVibGljIE1lbW9yeUluc3RydW1lbnRhdGlvblRlc3RDbGllbnQgewogcHVi
bGljOgogICAgIENvdW50TGlua3NGcm9tSW5zdHJ1bWVudGVkT2JqZWN0KCkgOiBtX2xpbmtDb3Vu
dCgwKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgcmVwb3J0RWRnZShjb25zdCB2b2lkKiBzb3VyY2Us
IGNvbnN0IHZvaWQqIGRlc3RpbmF0aW9uLCBjb25zdCBjaGFyKiBuYW1lKSBPVkVSUklERQorICAg
IHZpcnR1YWwgdm9pZCByZXBvcnRFZGdlKGNvbnN0IHZvaWQqLCBjb25zdCBjaGFyKiBuYW1lLCBN
ZW1vcnlPd25pbmdUeXBlKSBPVkVSUklERQogICAgIHsKICAgICAgICAgaWYgKG5hbWUgJiYgIXN0
cmNtcCgibV9ub3RJbnN0cnVtZW50ZWQiLCBuYW1lKSkKICAgICAgICAgICAgIG1fbGlua0NvdW50
Kys7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>180698</attachid>
            <date>2012-12-24 22:00:17 -0800</date>
            <delta_ts>2012-12-24 22:52:33 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-105725-20121225095730.patch</filename>
            <type>text/plain</type>
            <size>25691</size>
            <attacher name="Ilya Tikhonovsky">loislo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM4NDUwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDdmNjE0OWFiN2JlYTlkMmM3Y2Q0NjJk
NjI1YjUwZTliMGQwMmFkNGMuLjQ2YjBjOWZiMjZkM2MwYWU3NTcyMDNmZWJmMmE4MmM0MjUzNzY2
NDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjcgQEAKKzIwMTItMTItMjQgIElseWEgVGlraG9ub3Zza3kgIDxs
b2lzbG9AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IE5hdGl2ZSBNZW1v
cnkgSW5zdHJ1bWVudGF0aW9uOiBwcm9wYWdhdGUgbWVtYmVyIHR5cGUgYXMgZWRnZSB0eXBlIHRv
IHRoZSBzZXJpYWxpemVkIGhlYXAgZ3JhcGguCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMDU3MjUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBNZW1vcnlPd25pbmdUeXBlIHdhcyByZW5hbWVkIHRvIE1lbWJl
clR5cGUuCisgICAgICAgIFNvdXJjZSBhcmd1bWVudCB3ZXJlIHJlbW92ZWQgZnJvbSByZXBvcnRF
ZGdlLCByZXBvcnRMZWFmIGFuZCBvdGhlciBlZGdlIHJlbGF0ZWQgbWV0aG9kcyBiZWNhdXNlIGl0
IGlzIG5vdCBuZWNlc3NhcnkuCisgICAgICAgIE1lbWJlclR5cGUgYXJndW1lbnQgd2FzIHByb3Bh
Z2F0ZWQgZnJvbSBNZW1vcnlJbnN0cnVtZW50YXRpb24gZG93biB0byBIZWFwR3JhcGhTZXJpYWxp
emVyLgorCisgICAgICAgIFRoZSBjaGFuZ2VzIGNvdmVyZWQgYnkgdGVzdHMgaW4gVGVzdFdlYktp
dEFQSS4KKworICAgICAgICAqIHd0Zi9NZW1vcnlJbnN0cnVtZW50YXRpb24uY3BwOgorICAgICAg
ICAoV1RGOjpNZW1vcnlJbnN0cnVtZW50YXRpb246OnJlcG9ydEVkZ2UpOgorICAgICAgICAoV1RG
OjpNZW1vcnlJbnN0cnVtZW50YXRpb246OnJlcG9ydExpbmtUb0J1ZmZlcik6CisgICAgICAgIChX
VEY6Ok1lbW9yeUNsYXNzSW5mbzo6YWRkUHJpdmF0ZUJ1ZmZlcik6CisgICAgICAgICogd3RmL01l
bW9yeUluc3RydW1lbnRhdGlvbi5oOgorICAgICAgICAoTWVtb3J5SW5zdHJ1bWVudGF0aW9uQ2xp
ZW50KToKKyAgICAgICAgKE1lbW9yeUluc3RydW1lbnRhdGlvbik6CisgICAgICAgIChXVEY6Ok1l
bW9yeUluc3RydW1lbnRhdGlvbjo6YWRkUmF3QnVmZmVyKToKKyAgICAgICAgKFdURjo6TWVtb3J5
SW5zdHJ1bWVudGF0aW9uOjpNZW1iZXJUeXBlVHJhaXRzOjphZGRPYmplY3QpOgorICAgICAgICAo
V1RGOjpNZW1vcnlJbnN0cnVtZW50YXRpb246OmFkZE9iamVjdEltcGwpOgorCiAyMDEyLTEyLTIx
ICBJbHlhIFRpa2hvbm92c2t5ICA8bG9pc2xvQGNocm9taXVtLm9yZz4KIAogICAgICAgICBVbnJl
dmlld2VkLiBBbm90aGVyIHRyeSB0byBmaXggQXBwbGUgV2luIFJlbGVhc2UgYnVpbGQuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cKaW5kZXggOTlhZTk4YThjMzdjZTliMTRhMmUyZTM1MWMzNzNhMDgyNTdlZjZkYy4uYzk5ZTRh
NGRiZDNkMjJmZGEwNjI1M2RmMTYwYTMxZDEyMTUyZDg5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDI5IEBACisyMDEyLTEyLTI0ICBJbHlhIFRpa2hvbm92c2t5ICA8bG9pc2xvQGNocm9taXVtLm9y
Zz4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBOYXRpdmUgTWVtb3J5IEluc3RydW1lbnRhdGlv
bjogcHJvcGFnYXRlIG1lbWJlciB0eXBlIGFzIGVkZ2UgdHlwZSB0byB0aGUgc2VyaWFsaXplZCBo
ZWFwIGdyYXBoLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTA1NzI1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgTWVtb3J5T3duaW5nVHlwZSB3YXMgcmVuYW1lZCB0byBNZW1iZXJUeXBlLgorICAgICAgICBT
b3VyY2UgYXJndW1lbnQgd2VyZSByZW1vdmVkIGZyb20gcmVwb3J0RWRnZSwgcmVwb3J0TGVhZiBh
bmQgb3RoZXIgZWRnZSByZWxhdGVkIG1ldGhvZHMgYmVjYXVzZSBpdCBpcyBub3QgbmVjZXNzYXJ5
LgorICAgICAgICBNZW1iZXJUeXBlIGFyZ3VtZW50IHdhcyBwcm9wYWdhdGVkIGZyb20gTWVtb3J5
SW5zdHJ1bWVudGF0aW9uIGRvd24gdG8gSGVhcEdyYXBoU2VyaWFsaXplci4KKworICAgICAgICAq
IGluc3BlY3Rvci9IZWFwR3JhcGhTZXJpYWxpemVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okhl
YXBHcmFwaEVkZ2U6OkhlYXBHcmFwaEVkZ2UpOgorICAgICAgICAoSGVhcEdyYXBoRWRnZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpIZWFwR3JhcGhTZXJpYWxpemVyOjpIZWFwR3JhcGhTZXJpYWxpemVy
KToKKyAgICAgICAgKFdlYkNvcmU6OkhlYXBHcmFwaFNlcmlhbGl6ZXI6OnJlcG9ydEVkZ2UpOgor
ICAgICAgICAoV2ViQ29yZTo6SGVhcEdyYXBoU2VyaWFsaXplcjo6cmVwb3J0TGVhZik6CisgICAg
ICAgIChXZWJDb3JlOjpIZWFwR3JhcGhTZXJpYWxpemVyOjpzZXJpYWxpemUpOgorICAgICAgICAq
IGluc3BlY3Rvci9IZWFwR3JhcGhTZXJpYWxpemVyLmg6CisgICAgICAgIChIZWFwR3JhcGhTZXJp
YWxpemVyKToKKyAgICAgICAgKiBpbnNwZWN0b3IvTWVtb3J5SW5zdHJ1bWVudGF0aW9uSW1wbC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpNZW1vcnlJbnN0cnVtZW50YXRpb25DbGllbnRJbXBsOjpy
ZXBvcnRFZGdlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lbW9yeUluc3RydW1lbnRhdGlvbkNsaWVu
dEltcGw6OnJlcG9ydExlYWYpOgorICAgICAgICAqIGluc3BlY3Rvci9NZW1vcnlJbnN0cnVtZW50
YXRpb25JbXBsLmg6CisgICAgICAgIChNZW1vcnlJbnN0cnVtZW50YXRpb25DbGllbnRJbXBsKToK
KwogMjAxMi0xMi0yNCAgQWxleGVpIEZpbGlwcG92ICA8YWxwaEBjaHJvbWl1bS5vcmc+CiAKICAg
ICAgICAgV2ViIEluc3BlY3RvcjogYWRkIGFzeW5jIEFQSSBmb3IgcGFzc2luZyByZW5kZXJlciBw
cm9jZXNzIG1lbW9yeSBzdGF0cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvTWVtb3J5SW5z
dHJ1bWVudGF0aW9uLmNwcCBiL1NvdXJjZS9XVEYvd3RmL01lbW9yeUluc3RydW1lbnRhdGlvbi5j
cHAKaW5kZXggM2NmNmMwMmJmYzg0NzcwNWNkMzc3MTkxOGYzMzBhNjBlMjg5NzZiMi4uMDI1NWRi
NjU5M2EyOGU5NzYxNGFjNTU4NGQ3NDRlMzM2MmNmMjEwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dU
Ri93dGYvTWVtb3J5SW5zdHJ1bWVudGF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9NZW1v
cnlJbnN0cnVtZW50YXRpb24uY3BwCkBAIC00OSw5ICs0OSw5IEBAIE1lbW9yeUluc3RydW1lbnRh
dGlvbjo6fk1lbW9yeUluc3RydW1lbnRhdGlvbigpCiB7CiB9CiAKLXZvaWQgTWVtb3J5SW5zdHJ1
bWVudGF0aW9uOjpyZXBvcnRFZGdlKE1lbW9yeU9iamVjdEluZm8qIG93bmVyT2JqZWN0SW5mbywg
Y29uc3Qgdm9pZCogdGFyZ2V0LCBjb25zdCBjaGFyKiBuYW1lKQordm9pZCBNZW1vcnlJbnN0cnVt
ZW50YXRpb246OnJlcG9ydEVkZ2UoY29uc3Qgdm9pZCogdGFyZ2V0LCBjb25zdCBjaGFyKiBuYW1l
LCBNZW1iZXJUeXBlIG1lbWJlclR5cGUpCiB7Ci0gICAgbV9jbGllbnQtPnJlcG9ydEVkZ2Uob3du
ZXJPYmplY3RJbmZvLT5yZXBvcnRlZFBvaW50ZXIoKSwgdGFyZ2V0LCBuYW1lKTsKKyAgICBtX2Ns
aWVudC0+cmVwb3J0RWRnZSh0YXJnZXQsIG5hbWUsIG1lbWJlclR5cGUpOwogfQogCiBNZW1vcnlP
YmplY3RUeXBlIE1lbW9yeUluc3RydW1lbnRhdGlvbjo6Z2V0T2JqZWN0VHlwZShNZW1vcnlPYmpl
Y3RJbmZvKiBvYmplY3RJbmZvKQpAQCAtNjQsMTIgKzY0LDEyIEBAIHZvaWQgTWVtb3J5SW5zdHJ1
bWVudGF0aW9uOjpjYWxsUmVwb3J0T2JqZWN0SW5mbyhNZW1vcnlPYmplY3RJbmZvKiBtZW1vcnlP
YmplY3RJCiAgICAgbWVtb3J5T2JqZWN0SW5mby0+cmVwb3J0T2JqZWN0SW5mbyhwb2ludGVyLCBv
YmplY3RUeXBlLCBvYmplY3RTaXplKTsKIH0KIAotdm9pZCBNZW1vcnlJbnN0cnVtZW50YXRpb246
OnJlcG9ydExpbmtUb0J1ZmZlcihjb25zdCB2b2lkKiBvd25lciwgY29uc3Qgdm9pZCogYnVmZmVy
LCBNZW1vcnlPYmplY3RUeXBlIG93bmVyT2JqZWN0VHlwZSwgc2l6ZV90IHNpemUsIGNvbnN0IGNo
YXIqIG5vZGVOYW1lLCBjb25zdCBjaGFyKiBlZGdlTmFtZSkKK3ZvaWQgTWVtb3J5SW5zdHJ1bWVu
dGF0aW9uOjpyZXBvcnRMaW5rVG9CdWZmZXIoY29uc3Qgdm9pZCogYnVmZmVyLCBNZW1vcnlPYmpl
Y3RUeXBlIG93bmVyT2JqZWN0VHlwZSwgc2l6ZV90IHNpemUsIGNvbnN0IGNoYXIqIG5vZGVOYW1l
LCBjb25zdCBjaGFyKiBlZGdlTmFtZSkKIHsKICAgICBNZW1vcnlPYmplY3RJbmZvIG1lbW9yeU9i
amVjdEluZm8odGhpcywgb3duZXJPYmplY3RUeXBlLCAwKTsKICAgICBtZW1vcnlPYmplY3RJbmZv
LnJlcG9ydE9iamVjdEluZm8oYnVmZmVyLCBvd25lck9iamVjdFR5cGUsIHNpemUpOwogICAgIG1l
bW9yeU9iamVjdEluZm8uc2V0TmFtZShub2RlTmFtZSk7Ci0gICAgbV9jbGllbnQtPnJlcG9ydExl
YWYob3duZXIsIG1lbW9yeU9iamVjdEluZm8sIGVkZ2VOYW1lKTsKKyAgICBtX2NsaWVudC0+cmVw
b3J0TGVhZihtZW1vcnlPYmplY3RJbmZvLCBlZGdlTmFtZSk7CiB9CiAKIE1lbW9yeUluc3RydW1l
bnRhdGlvbjo6V3JhcHBlckJhc2U6OldyYXBwZXJCYXNlKE1lbW9yeU9iamVjdFR5cGUgb2JqZWN0
VHlwZSwgY29uc3Qgdm9pZCogcG9pbnRlcikKQEAgLTEyNCw3ICsxMjQsNyBAQCB2b2lkIE1lbW9y
eUNsYXNzSW5mbzo6aW5pdChjb25zdCB2b2lkKiBvYmplY3RBZGRyZXNzLCBNZW1vcnlPYmplY3RU
eXBlIG9iamVjdFR5cAogdm9pZCBNZW1vcnlDbGFzc0luZm86OmFkZFJhd0J1ZmZlcihjb25zdCB2
b2lkKiBidWZmZXIsIHNpemVfdCBzaXplLCBjb25zdCBjaGFyKiBub2RlTmFtZSwgY29uc3QgY2hh
ciogZWRnZU5hbWUpCiB7CiAgICAgaWYgKCFtX3NraXBNZW1iZXJzKQotICAgICAgICBtX21lbW9y
eUluc3RydW1lbnRhdGlvbi0+YWRkUmF3QnVmZmVyKG1fbWVtb3J5T2JqZWN0SW5mby0+cmVwb3J0
ZWRQb2ludGVyKCksIGJ1ZmZlciwgbV9vYmplY3RUeXBlLCBzaXplLCBub2RlTmFtZSwgZWRnZU5h
bWUpOworICAgICAgICBtX21lbW9yeUluc3RydW1lbnRhdGlvbi0+YWRkUmF3QnVmZmVyKGJ1ZmZl
ciwgbV9vYmplY3RUeXBlLCBzaXplLCBub2RlTmFtZSwgZWRnZU5hbWUpOwogfQogCiB2b2lkIE1l
bW9yeUNsYXNzSW5mbzo6YWRkUHJpdmF0ZUJ1ZmZlcihzaXplX3Qgc2l6ZSwgTWVtb3J5T2JqZWN0
VHlwZSBvd25lck9iamVjdFR5cGUsIGNvbnN0IGNoYXIqIG5vZGVOYW1lLCBjb25zdCBjaGFyKiBl
ZGdlTmFtZSkKQEAgLTEzNiw3ICsxMzYsNyBAQCB2b2lkIE1lbW9yeUNsYXNzSW5mbzo6YWRkUHJp
dmF0ZUJ1ZmZlcihzaXplX3Qgc2l6ZSwgTWVtb3J5T2JqZWN0VHlwZSBvd25lck9iamVjdAogICAg
IGlmICghb3duZXJPYmplY3RUeXBlKQogICAgICAgICBvd25lck9iamVjdFR5cGUgPSBtX29iamVj
dFR5cGU7CiAgICAgbV9tZW1vcnlJbnN0cnVtZW50YXRpb24tPmNvdW50T2JqZWN0U2l6ZSgwLCBv
d25lck9iamVjdFR5cGUsIHNpemUpOwotICAgIG1fbWVtb3J5SW5zdHJ1bWVudGF0aW9uLT5yZXBv
cnRMaW5rVG9CdWZmZXIobV9tZW1vcnlPYmplY3RJbmZvLT5yZXBvcnRlZFBvaW50ZXIoKSwgMCwg
b3duZXJPYmplY3RUeXBlLCBzaXplLCBub2RlTmFtZSwgZWRnZU5hbWUpOworICAgIG1fbWVtb3J5
SW5zdHJ1bWVudGF0aW9uLT5yZXBvcnRMaW5rVG9CdWZmZXIoMCwgb3duZXJPYmplY3RUeXBlLCBz
aXplLCBub2RlTmFtZSwgZWRnZU5hbWUpOwogfQogCiB2b2lkIE1lbW9yeUNsYXNzSW5mbzo6c2V0
Q3VzdG9tQWxsb2NhdGlvbihib29sIGN1c3RvbUFsbG9jYXRpb24pCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV1RGL3d0Zi9NZW1vcnlJbnN0cnVtZW50YXRpb24uaCBiL1NvdXJjZS9XVEYvd3RmL01lbW9y
eUluc3RydW1lbnRhdGlvbi5oCmluZGV4IDBiOTkxNWI2ZjU4MGJlZWI5YTFiZDAwNjNjZmZjYmEy
Mzg5ZjcxZjIuLjAxMGU3MTJhNTVhOTdkNTkzYjA1OWVmOGI5ZWQ2NWM5YTk2NDE5M2IgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL01lbW9yeUluc3RydW1lbnRhdGlvbi5oCisrKyBiL1NvdXJj
ZS9XVEYvd3RmL01lbW9yeUluc3RydW1lbnRhdGlvbi5oCkBAIC00NSw5ICs0NSwxMiBAQCBjbGFz
cyBNZW1vcnlJbnN0cnVtZW50YXRpb247CiAKIHR5cGVkZWYgY29uc3QgY2hhciogTWVtb3J5T2Jq
ZWN0VHlwZTsKIAotZW51bSBNZW1vcnlPd25pbmdUeXBlIHsKLSAgICBieVBvaW50ZXIsCi0gICAg
YnlSZWZlcmVuY2UKK2VudW0gTWVtYmVyVHlwZSB7CisgICAgUG9pbnRlck1lbWJlciwKKyAgICBS
ZWZlcmVuY2VNZW1iZXIsCisgICAgT3duUHRyTWVtYmVyLAorICAgIFJlZlB0ck1lbWJlciwKKyAg
ICBMYXN0TWVtYmVyVHlwZUVudHJ5CiB9OwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiB2b2lkIHJl
cG9ydE1lbW9yeVVzYWdlKGNvbnN0IFQqLCBNZW1vcnlPYmplY3RJbmZvKik7CkBAIC02MCw4ICs2
Myw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgY2hlY2tDb3VudGVkT2JqZWN0KGNvbnN0
IHZvaWQqKSA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQgcmVwb3J0Tm9kZShjb25zdCBNZW1vcnlP
YmplY3RJbmZvJikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCByZXBvcnRFZGdlKGNvbnN0IHZvaWQq
IHNvdXJjZSwgY29uc3Qgdm9pZCogdGFyZ2V0LCBjb25zdCBjaGFyKiBlZGdlTmFtZSkgPSAwOwot
ICAgIHZpcnR1YWwgdm9pZCByZXBvcnRMZWFmKGNvbnN0IHZvaWQqIHNvdXJjZSwgY29uc3QgTWVt
b3J5T2JqZWN0SW5mbyYsIGNvbnN0IGNoYXIqIGVkZ2VOYW1lKSA9IDA7CisgICAgdmlydHVhbCB2
b2lkIHJlcG9ydEVkZ2UoY29uc3Qgdm9pZCogdGFyZ2V0LCBjb25zdCBjaGFyKiBlZGdlTmFtZSwg
TWVtYmVyVHlwZSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCByZXBvcnRMZWFmKGNvbnN0IE1lbW9y
eU9iamVjdEluZm8mLCBjb25zdCBjaGFyKiBlZGdlTmFtZSkgPSAwOwogICAgIHZpcnR1YWwgdm9p
ZCByZXBvcnRCYXNlQWRkcmVzcyhjb25zdCB2b2lkKiBiYXNlLCBjb25zdCB2b2lkKiByZWFsKSA9
IDA7CiB9OwogCkBAIC03Miw3ICs3NSw3IEBAIHB1YmxpYzoKIAogICAgIHRlbXBsYXRlIDx0eXBl
bmFtZSBUPiB2b2lkIGFkZFJvb3RPYmplY3QoY29uc3QgVCYgdCwgTWVtb3J5T2JqZWN0VHlwZSBv
YmplY3RUeXBlID0gMCkKICAgICB7Ci0gICAgICAgIE93bmluZ1RyYWl0czxUPjo6YWRkUm9vdE9i
amVjdCh0aGlzLCB0LCBvYmplY3RUeXBlKTsKKyAgICAgICAgTWVtYmVyVHlwZVRyYWl0czxUPjo6
YWRkUm9vdE9iamVjdCh0aGlzLCB0LCBvYmplY3RUeXBlKTsKICAgICAgICAgcHJvY2Vzc0RlZmVy
cmVkT2JqZWN0cygpOwogICAgIH0KIApAQCAtMTA1LDcgKzEwOCw3IEBAIHByaXZhdGU6CiAgICAg
Ym9vbCB2aXNpdGVkKGNvbnN0IHZvaWQqIHBvaW50ZXIpIHsgcmV0dXJuIG1fY2xpZW50LT52aXNp
dGVkKHBvaW50ZXIpOyB9CiAgICAgYm9vbCBjaGVja0NvdW50ZWRPYmplY3QoY29uc3Qgdm9pZCog
cG9pbnRlcikgeyByZXR1cm4gbV9jbGllbnQtPmNoZWNrQ291bnRlZE9iamVjdChwb2ludGVyKTsg
fQogCi0gICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgcmVwb3J0RWRnZShNZW1vcnlPYmplY3RJ
bmZvKiBvd25lck9iamVjdEluZm8sIGNvbnN0IHZvaWQqIHRhcmdldCwgY29uc3QgY2hhciogZWRn
ZU5hbWUpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIHJlcG9ydEVkZ2UoY29uc3Qgdm9p
ZCogdGFyZ2V0LCBjb25zdCBjaGFyKiBlZGdlTmFtZSwgTWVtYmVyVHlwZSk7CiAKICAgICB2aXJ0
dWFsIHZvaWQgZGVmZXJPYmplY3QoUGFzc093blB0cjxXcmFwcGVyQmFzZT4pID0gMDsKICAgICB2
aXJ0dWFsIHZvaWQgcHJvY2Vzc0RlZmVycmVkT2JqZWN0cygpID0gMDsKQEAgLTE2NCwyMSArMTY3
LDIxIEBAIHByaXZhdGU6CiAgICAgICAgIHZpcnR1YWwgdm9pZCBjYWxsUmVwb3J0TWVtb3J5VXNh
Z2UoTWVtb3J5T2JqZWN0SW5mbyopIE9WRVJSSURFOwogICAgIH07CiAKLSAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBUPiB2b2lkIGFkZE9iamVjdChjb25zdCBUJiB0LCBNZW1vcnlPYmplY3RJbmZvKiBv
d25lck9iamVjdEluZm8sIGNvbnN0IGNoYXIqIGVkZ2VOYW1lKSB7IE93bmluZ1RyYWl0czxUPjo6
YWRkT2JqZWN0KHRoaXMsIHQsIG93bmVyT2JqZWN0SW5mbywgZWRnZU5hbWUpOyB9Ci0gICAgdm9p
ZCBhZGRSYXdCdWZmZXIoY29uc3Qgdm9pZCogb3duZXIsIGNvbnN0IHZvaWQqIGJ1ZmZlciwgTWVt
b3J5T2JqZWN0VHlwZSBvd25lck9iamVjdFR5cGUsIHNpemVfdCBzaXplLCBjb25zdCBjaGFyKiBu
b2RlTmFtZSA9IDAsIGNvbnN0IGNoYXIqIGVkZ2VOYW1lID0gMCkKKyAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBUPiB2b2lkIGFkZE9iamVjdChjb25zdCBUJiB0LCBNZW1vcnlPYmplY3RJbmZvKiBvd25l
ck9iamVjdEluZm8sIGNvbnN0IGNoYXIqIGVkZ2VOYW1lKSB7IE1lbWJlclR5cGVUcmFpdHM8VD46
OmFkZE9iamVjdCh0aGlzLCB0LCBvd25lck9iamVjdEluZm8sIGVkZ2VOYW1lKTsgfQorICAgIHZv
aWQgYWRkUmF3QnVmZmVyKGNvbnN0IHZvaWQqIGJ1ZmZlciwgTWVtb3J5T2JqZWN0VHlwZSBvd25l
ck9iamVjdFR5cGUsIHNpemVfdCBzaXplLCBjb25zdCBjaGFyKiBub2RlTmFtZSA9IDAsIGNvbnN0
IGNoYXIqIGVkZ2VOYW1lID0gMCkKICAgICB7CiAgICAgICAgIGlmICghYnVmZmVyIHx8IHZpc2l0
ZWQoYnVmZmVyKSkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgY291bnRPYmplY3RTaXpl
KGJ1ZmZlciwgb3duZXJPYmplY3RUeXBlLCBzaXplKTsKLSAgICAgICAgcmVwb3J0TGlua1RvQnVm
ZmVyKG93bmVyLCBidWZmZXIsIG93bmVyT2JqZWN0VHlwZSwgc2l6ZSwgbm9kZU5hbWUsIGVkZ2VO
YW1lKTsKKyAgICAgICAgcmVwb3J0TGlua1RvQnVmZmVyKGJ1ZmZlciwgb3duZXJPYmplY3RUeXBl
LCBzaXplLCBub2RlTmFtZSwgZWRnZU5hbWUpOwogICAgIH0KLSAgICBXVEZfRVhQT1JUX1BSSVZB
VEUgdm9pZCByZXBvcnRMaW5rVG9CdWZmZXIoY29uc3Qgdm9pZCogb3duZXIsIGNvbnN0IHZvaWQq
IGJ1ZmZlciwgTWVtb3J5T2JqZWN0VHlwZSBvd25lck9iamVjdFR5cGUsIHNpemVfdCwgY29uc3Qg
Y2hhciogbm9kZU5hbWUsIGNvbnN0IGNoYXIqIGVkZ2VOYW1lKTsKKyAgICBXVEZfRVhQT1JUX1BS
SVZBVEUgdm9pZCByZXBvcnRMaW5rVG9CdWZmZXIoY29uc3Qgdm9pZCogYnVmZmVyLCBNZW1vcnlP
YmplY3RUeXBlIG93bmVyT2JqZWN0VHlwZSwgc2l6ZV90LCBjb25zdCBjaGFyKiBub2RlTmFtZSwg
Y29uc3QgY2hhciogZWRnZU5hbWUpOwogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICBz
dHJ1Y3QgT3duaW5nVHJhaXRzIHsgLy8gRGVmYXVsdCBieVJlZmVyZW5jZSBpbXBsZW1lbnRhdGlv
bi4KKyAgICBzdHJ1Y3QgTWVtYmVyVHlwZVRyYWl0cyB7IC8vIERlZmF1bHQgUmVmZXJlbmNlTWVt
YmVyIGltcGxlbWVudGF0aW9uLgogICAgICAgICBzdGF0aWMgdm9pZCBhZGRPYmplY3QoTWVtb3J5
SW5zdHJ1bWVudGF0aW9uKiBpbnN0cnVtZW50YXRpb24sIGNvbnN0IFQmIHQsIE1lbW9yeU9iamVj
dEluZm8qIG93bmVyT2JqZWN0SW5mbywgY29uc3QgY2hhciogZWRnZU5hbWUpCiAgICAgICAgIHsK
LSAgICAgICAgICAgIGluc3RydW1lbnRhdGlvbi0+YWRkT2JqZWN0SW1wbCgmdCwgb3duZXJPYmpl
Y3RJbmZvLCBieVJlZmVyZW5jZSwgZWRnZU5hbWUpOworICAgICAgICAgICAgaW5zdHJ1bWVudGF0
aW9uLT5hZGRPYmplY3RJbXBsKCZ0LCBvd25lck9iamVjdEluZm8sIFJlZmVyZW5jZU1lbWJlciwg
ZWRnZU5hbWUpOwogICAgICAgICB9CiAKICAgICAgICAgc3RhdGljIHZvaWQgYWRkUm9vdE9iamVj
dChNZW1vcnlJbnN0cnVtZW50YXRpb24qIGluc3RydW1lbnRhdGlvbiwgY29uc3QgVCYgdCwgTWVt
b3J5T2JqZWN0VHlwZSBvYmplY3RUeXBlKQpAQCAtMTg4LDEwICsxOTEsMTAgQEAgcHJpdmF0ZToK
ICAgICB9OwogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICBzdHJ1Y3QgT3duaW5nVHJh
aXRzPFQqPiB7IC8vIEN1c3RvbSBieVBvaW50ZXIgaW1wbGVtZW50YXRpb24uCisgICAgc3RydWN0
IE1lbWJlclR5cGVUcmFpdHM8VCo+IHsgLy8gQ3VzdG9tIFBvaW50ZXJNZW1iZXIgaW1wbGVtZW50
YXRpb24uCiAgICAgICAgIHN0YXRpYyB2b2lkIGFkZE9iamVjdChNZW1vcnlJbnN0cnVtZW50YXRp
b24qIGluc3RydW1lbnRhdGlvbiwgY29uc3QgVCogY29uc3QmIHQsIE1lbW9yeU9iamVjdEluZm8q
IG93bmVyT2JqZWN0SW5mbywgY29uc3QgY2hhciogZWRnZU5hbWUpCiAgICAgICAgIHsKLSAgICAg
ICAgICAgIGluc3RydW1lbnRhdGlvbi0+YWRkT2JqZWN0SW1wbCh0LCBvd25lck9iamVjdEluZm8s
IGJ5UG9pbnRlciwgZWRnZU5hbWUpOworICAgICAgICAgICAgaW5zdHJ1bWVudGF0aW9uLT5hZGRP
YmplY3RJbXBsKHQsIG93bmVyT2JqZWN0SW5mbywgUG9pbnRlck1lbWJlciwgZWRnZU5hbWUpOwog
ICAgICAgICB9CiAKICAgICAgICAgc3RhdGljIHZvaWQgYWRkUm9vdE9iamVjdChNZW1vcnlJbnN0
cnVtZW50YXRpb24qIGluc3RydW1lbnRhdGlvbiwgY29uc3QgVCogY29uc3QmIHQsIE1lbW9yeU9i
amVjdFR5cGUgb2JqZWN0VHlwZSkKQEAgLTIwMSw5ICsyMDQsOSBAQCBwcml2YXRlOgogICAgICAg
ICB9CiAgICAgfTsKIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHZvaWQgYWRkT2JqZWN0SW1w
bChjb25zdCBUKiwgTWVtb3J5T2JqZWN0SW5mbyosIE1lbW9yeU93bmluZ1R5cGUsIGNvbnN0IGNo
YXIqIGVkZ2VOYW1lKTsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiB2b2lkIGFkZE9iamVjdElt
cGwoY29uc3QgT3duUHRyPFQ+KiwgTWVtb3J5T2JqZWN0SW5mbyosIE1lbW9yeU93bmluZ1R5cGUs
IGNvbnN0IGNoYXIqIGVkZ2VOYW1lKTsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiB2b2lkIGFk
ZE9iamVjdEltcGwoY29uc3QgUmVmUHRyPFQ+KiwgTWVtb3J5T2JqZWN0SW5mbyosIE1lbW9yeU93
bmluZ1R5cGUsIGNvbnN0IGNoYXIqIGVkZ2VOYW1lKTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBU
PiB2b2lkIGFkZE9iamVjdEltcGwoY29uc3QgVCosIE1lbW9yeU9iamVjdEluZm8qLCBNZW1iZXJU
eXBlLCBjb25zdCBjaGFyKiBlZGdlTmFtZSk7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gdm9p
ZCBhZGRPYmplY3RJbXBsKGNvbnN0IE93blB0cjxUPiosIE1lbW9yeU9iamVjdEluZm8qLCBNZW1i
ZXJUeXBlLCBjb25zdCBjaGFyKiBlZGdlTmFtZSk7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4g
dm9pZCBhZGRPYmplY3RJbXBsKGNvbnN0IFJlZlB0cjxUPiosIE1lbW9yeU9iamVjdEluZm8qLCBN
ZW1iZXJUeXBlLCBjb25zdCBjaGFyKiBlZGdlTmFtZSk7CiAKICAgICBNZW1vcnlJbnN0cnVtZW50
YXRpb25DbGllbnQqIG1fY2xpZW50OwogfTsKQEAgLTI2MSwxNCArMjY0LDE0IEBAIHZvaWQgcmVw
b3J0TWVtb3J5VXNhZ2UoY29uc3QgVCogb2JqZWN0LCBNZW1vcnlPYmplY3RJbmZvKiBtZW1vcnlP
YmplY3RJbmZvKQogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotdm9pZCBNZW1vcnlJbnN0cnVt
ZW50YXRpb246OmFkZE9iamVjdEltcGwoY29uc3QgVCogb2JqZWN0LCBNZW1vcnlPYmplY3RJbmZv
KiBvd25lck9iamVjdEluZm8sIE1lbW9yeU93bmluZ1R5cGUgb3duaW5nVHlwZSwgY29uc3QgY2hh
ciogZWRnZU5hbWUpCit2b2lkIE1lbW9yeUluc3RydW1lbnRhdGlvbjo6YWRkT2JqZWN0SW1wbChj
b25zdCBUKiBvYmplY3QsIE1lbW9yeU9iamVjdEluZm8qIG93bmVyT2JqZWN0SW5mbywgTWVtYmVy
VHlwZSBtZW1iZXJUeXBlLCBjb25zdCBjaGFyKiBlZGdlTmFtZSkKIHsKLSAgICBpZiAob3duaW5n
VHlwZSA9PSBieVJlZmVyZW5jZSkKKyAgICBpZiAobWVtYmVyVHlwZSA9PSBSZWZlcmVuY2VNZW1i
ZXIpCiAgICAgICAgIHJlcG9ydE1lbW9yeVVzYWdlKG9iamVjdCwgb3duZXJPYmplY3RJbmZvKTsK
ICAgICBlbHNlIHsKICAgICAgICAgaWYgKCFvYmplY3QpCiAgICAgICAgICAgICByZXR1cm47Ci0g
ICAgICAgIHJlcG9ydEVkZ2Uob3duZXJPYmplY3RJbmZvLCBvYmplY3QsIGVkZ2VOYW1lKTsKKyAg
ICAgICAgcmVwb3J0RWRnZShvYmplY3QsIGVkZ2VOYW1lLCBtZW1iZXJUeXBlKTsKICAgICAgICAg
aWYgKHZpc2l0ZWQob2JqZWN0KSkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgZGVmZXJP
YmplY3QoYWRvcHRQdHIobmV3IFdyYXBwZXI8VD4ob2JqZWN0LCBnZXRPYmplY3RUeXBlKG93bmVy
T2JqZWN0SW5mbykpKSk7CkBAIC0yNzYsMTkgKzI3OSwxOSBAQCB2b2lkIE1lbW9yeUluc3RydW1l
bnRhdGlvbjo6YWRkT2JqZWN0SW1wbChjb25zdCBUKiBvYmplY3QsIE1lbW9yeU9iamVjdEluZm8q
IG93bgogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotdm9pZCBNZW1vcnlJbnN0cnVtZW50YXRp
b246OmFkZE9iamVjdEltcGwoY29uc3QgT3duUHRyPFQ+KiBvYmplY3QsIE1lbW9yeU9iamVjdElu
Zm8qIG93bmVyT2JqZWN0SW5mbywgTWVtb3J5T3duaW5nVHlwZSBvd25pbmdUeXBlLCBjb25zdCBj
aGFyKiBlZGdlTmFtZSkKK3ZvaWQgTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjphZGRPYmplY3RJbXBs
KGNvbnN0IE93blB0cjxUPiogb2JqZWN0LCBNZW1vcnlPYmplY3RJbmZvKiBvd25lck9iamVjdElu
Zm8sIE1lbWJlclR5cGUgbWVtYmVyVHlwZSwgY29uc3QgY2hhciogZWRnZU5hbWUpCiB7Ci0gICAg
aWYgKG93bmluZ1R5cGUgPT0gYnlQb2ludGVyICYmICF2aXNpdGVkKG9iamVjdCkpCisgICAgaWYg
KG1lbWJlclR5cGUgPT0gUG9pbnRlck1lbWJlciAmJiAhdmlzaXRlZChvYmplY3QpKQogICAgICAg
ICBjb3VudE9iamVjdFNpemUob2JqZWN0LCBnZXRPYmplY3RUeXBlKG93bmVyT2JqZWN0SW5mbyks
IHNpemVvZigqb2JqZWN0KSk7Ci0gICAgYWRkT2JqZWN0SW1wbChvYmplY3QtPmdldCgpLCBvd25l
ck9iamVjdEluZm8sIGJ5UG9pbnRlciwgZWRnZU5hbWUpOworICAgIGFkZE9iamVjdEltcGwob2Jq
ZWN0LT5nZXQoKSwgb3duZXJPYmplY3RJbmZvLCBPd25QdHJNZW1iZXIsIGVkZ2VOYW1lKTsKIH0K
IAogdGVtcGxhdGU8dHlwZW5hbWUgVD4KLXZvaWQgTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjphZGRP
YmplY3RJbXBsKGNvbnN0IFJlZlB0cjxUPiogb2JqZWN0LCBNZW1vcnlPYmplY3RJbmZvKiBvd25l
ck9iamVjdEluZm8sIE1lbW9yeU93bmluZ1R5cGUgb3duaW5nVHlwZSwgY29uc3QgY2hhciogZWRn
ZU5hbWUpCit2b2lkIE1lbW9yeUluc3RydW1lbnRhdGlvbjo6YWRkT2JqZWN0SW1wbChjb25zdCBS
ZWZQdHI8VD4qIG9iamVjdCwgTWVtb3J5T2JqZWN0SW5mbyogb3duZXJPYmplY3RJbmZvLCBNZW1i
ZXJUeXBlIG1lbWJlclR5cGUsIGNvbnN0IGNoYXIqIGVkZ2VOYW1lKQogewotICAgIGlmIChvd25p
bmdUeXBlID09IGJ5UG9pbnRlciAmJiAhdmlzaXRlZChvYmplY3QpKQorICAgIGlmIChtZW1iZXJU
eXBlID09IFBvaW50ZXJNZW1iZXIgJiYgIXZpc2l0ZWQob2JqZWN0KSkKICAgICAgICAgY291bnRP
YmplY3RTaXplKG9iamVjdCwgZ2V0T2JqZWN0VHlwZShvd25lck9iamVjdEluZm8pLCBzaXplb2Yo
Km9iamVjdCkpOwotICAgIGFkZE9iamVjdEltcGwob2JqZWN0LT5nZXQoKSwgb3duZXJPYmplY3RJ
bmZvLCBieVBvaW50ZXIsIGVkZ2VOYW1lKTsKKyAgICBhZGRPYmplY3RJbXBsKG9iamVjdC0+Z2V0
KCksIG93bmVyT2JqZWN0SW5mbywgUmVmUHRyTWVtYmVyLCBlZGdlTmFtZSk7CiB9CiAKIHRlbXBs
YXRlPHR5cGVuYW1lIFQ+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSGVh
cEdyYXBoU2VyaWFsaXplci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSGVhcEdyYXBo
U2VyaWFsaXplci5jcHAKaW5kZXggZTNlODBhNTdjNDY5OWNkMjk0ODQ0YjljODI2NmFmM2NlMzdk
ZjA2Ny4uMWYzMTc5NWNiN2RlYTc2MTRkMjZiYTI3ZDAzOTIwNmM4NWJkZWY3YiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0hlYXBHcmFwaFNlcmlhbGl6ZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9IZWFwR3JhcGhTZXJpYWxpemVyLmNwcApAQCAtODUs
NiArODUsMTggQEAgSGVhcEdyYXBoU2VyaWFsaXplcjo6SGVhcEdyYXBoU2VyaWFsaXplcigpCiAg
ICAgOiBtX2xhc3RSZXBvcnRlZEVkZ2VJbmRleCgwKQogewogICAgIG1fc3RyaW5ncy5hcHBlbmQo
U3RyaW5nKCkpOworCisgICAgbWVtc2V0KG1fZWRnZVR5cGVzLCAwLCBzaXplb2YobV9lZGdlVHlw
ZXMpKTsKKworICAgIEFTU0VSVChtX3N0cmluZ3Muc2l6ZSgpKTsKKyAgICBtX2VkZ2VUeXBlc1tX
VEY6OlBvaW50ZXJNZW1iZXJdID0gbV9zdHJpbmdzLnNpemUoKTsKKyAgICBtX3N0cmluZ3MuYXBw
ZW5kKCJ3ZWFrUmVmIik7CisKKyAgICBtX2VkZ2VUeXBlc1tXVEY6Ok93blB0ck1lbWJlcl0gPSBt
X3N0cmluZ3Muc2l6ZSgpOworICAgIG1fc3RyaW5ncy5hcHBlbmQoIm93blJlZiIpOworCisgICAg
bV9lZGdlVHlwZXNbV1RGOjpSZWZQdHJNZW1iZXJdID0gbV9zdHJpbmdzLnNpemUoKTsKKyAgICBt
X3N0cmluZ3MuYXBwZW5kKCJjb3VudFJlZiIpOwogfQogCiBIZWFwR3JhcGhTZXJpYWxpemVyOjp+
SGVhcEdyYXBoU2VyaWFsaXplcigpCkBAIC0xMDYsMTYgKzExOCwxOSBAQCB2b2lkIEhlYXBHcmFw
aFNlcmlhbGl6ZXI6OnJlcG9ydE5vZGUoY29uc3QgV1RGOjpNZW1vcnlPYmplY3RJbmZvJiBpbmZv
KQogICAgIG1fbm9kZXMuYXBwZW5kKG5vZGUpOwogfQogCi12b2lkIEhlYXBHcmFwaFNlcmlhbGl6
ZXI6OnJlcG9ydEVkZ2UoY29uc3Qgdm9pZCosIGNvbnN0IHZvaWQqIHRvLCBjb25zdCBjaGFyKiBu
YW1lKQordm9pZCBIZWFwR3JhcGhTZXJpYWxpemVyOjpyZXBvcnRFZGdlKGNvbnN0IHZvaWQqIHRv
LCBjb25zdCBjaGFyKiBuYW1lLCBXVEY6Ok1lbWJlclR5cGUgbWVtYmVyVHlwZSkKIHsKICAgICBI
ZWFwR3JhcGhFZGdlIGVkZ2U7CiAgICAgQVNTRVJUKHRvKTsKKyAgICBBU1NFUlQobWVtYmVyVHlw
ZSA+PSAwKTsKKyAgICBBU1NFUlQobWVtYmVyVHlwZSA8IFdURjo6TGFzdE1lbWJlclR5cGVFbnRy
eSk7CisgICAgZWRnZS5tX3R5cGUgPSBtX2VkZ2VUeXBlc1ttZW1iZXJUeXBlXTsKICAgICBlZGdl
Lm1fdG9PYmplY3QgPSB0bzsKICAgICBlZGdlLm1fbmFtZSA9IGFkZFN0cmluZyhuYW1lKTsKICAg
ICBtX2VkZ2VzLmFwcGVuZChlZGdlKTsKIH0KIAotdm9pZCBIZWFwR3JhcGhTZXJpYWxpemVyOjpy
ZXBvcnRMZWFmKGNvbnN0IHZvaWQqLCBjb25zdCBXVEY6Ok1lbW9yeU9iamVjdEluZm8mIGluZm8s
IGNvbnN0IGNoYXIqIGVkZ2VOYW1lKQordm9pZCBIZWFwR3JhcGhTZXJpYWxpemVyOjpyZXBvcnRM
ZWFmKGNvbnN0IFdURjo6TWVtb3J5T2JqZWN0SW5mbyYgaW5mbywgY29uc3QgY2hhciogZWRnZU5h
bWUpCiB7CiAgICAgSGVhcEdyYXBoTm9kZSBub2RlOwogICAgIG5vZGUubV90eXBlID0gYWRkU3Ry
aW5nKGluZm8ub2JqZWN0VHlwZSgpKTsKQEAgLTEyNyw2ICsxNDIsNyBAQCB2b2lkIEhlYXBHcmFw
aFNlcmlhbGl6ZXI6OnJlcG9ydExlYWYoY29uc3Qgdm9pZCosIGNvbnN0IFdURjo6TWVtb3J5T2Jq
ZWN0SW5mbyYgaQogICAgIG1fbm9kZXMuYXBwZW5kKG5vZGUpOwogCiAgICAgSGVhcEdyYXBoRWRn
ZSBlZGdlOworICAgIGVkZ2UubV90eXBlID0gbV9lZGdlVHlwZXNbV1RGOjpPd25QdHJNZW1iZXJd
OwogICAgIGVkZ2UubV90b0luZGV4ID0gbm9kZUluZGV4OwogICAgIGVkZ2UubV90YXJnZXRJbmRl
eElzS25vd24gPSB0cnVlOwogICAgIGVkZ2UubV9uYW1lID0gYWRkU3RyaW5nKGVkZ2VOYW1lKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9IZWFwR3JhcGhTZXJpYWxpemVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSGVhcEdyYXBoU2VyaWFsaXplci5oCmluZGV4
IDMxMTBhN2YzNDRhOWIxMDA1YjYzOWJhNmZhOTJjZGQ1MTY1Njk5MWEuLmQ3OGNiZjU1NjljYzkw
YzQ2ZmJiOWFjMTQ4MjBmMTc5YmRiNGUxZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9IZWFwR3JhcGhTZXJpYWxpemVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0hlYXBHcmFwaFNlcmlhbGl6ZXIuaApAQCAtNTIsOCArNTIsOCBAQCBwdWJsaWM6CiAgICAg
SGVhcEdyYXBoU2VyaWFsaXplcigpOwogICAgIH5IZWFwR3JhcGhTZXJpYWxpemVyKCk7CiAgICAg
dm9pZCByZXBvcnROb2RlKGNvbnN0IFdURjo6TWVtb3J5T2JqZWN0SW5mbyYpOwotICAgIHZvaWQg
cmVwb3J0RWRnZShjb25zdCB2b2lkKiwgY29uc3Qgdm9pZCosIGNvbnN0IGNoYXIqKTsKLSAgICB2
b2lkIHJlcG9ydExlYWYoY29uc3Qgdm9pZCosIGNvbnN0IFdURjo6TWVtb3J5T2JqZWN0SW5mbyYs
IGNvbnN0IGNoYXIqKTsKKyAgICB2b2lkIHJlcG9ydEVkZ2UoY29uc3Qgdm9pZCosIGNvbnN0IGNo
YXIqLCBXVEY6Ok1lbWJlclR5cGUpOworICAgIHZvaWQgcmVwb3J0TGVhZihjb25zdCBXVEY6Ok1l
bW9yeU9iamVjdEluZm8mLCBjb25zdCBjaGFyKik7CiAgICAgdm9pZCByZXBvcnRCYXNlQWRkcmVz
cyhjb25zdCB2b2lkKiwgY29uc3Qgdm9pZCopOwogCiAgICAgUGFzc1JlZlB0cjxJbnNwZWN0b3JP
YmplY3Q+IHNlcmlhbGl6ZSgpOwpAQCAtNzcsNiArNzcsOCBAQCBwcml2YXRlOgogCiAgICAgVmVj
dG9yPEhlYXBHcmFwaE5vZGU+IG1fbm9kZXM7CiAgICAgVmVjdG9yPEhlYXBHcmFwaEVkZ2U+IG1f
ZWRnZXM7CisKKyAgICBzaXplX3QgbV9lZGdlVHlwZXNbV1RGOjpMYXN0TWVtYmVyVHlwZUVudHJ5
XTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9NZW1vcnlJbnN0cnVtZW50YXRpb25JbXBsLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9NZW1vcnlJbnN0cnVtZW50YXRpb25JbXBsLmNwcAppbmRleCAyZTU5ZWI2
MzAxOTFlY2UyOWQxZjhiNWIyNTVmZjgyODk2MDMzYjA5Li41MjkzNmFiYzQ0OTZiYTg3ODczNzA4
MzgwOGIyNDFiYjI2MjdmNzBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
TWVtb3J5SW5zdHJ1bWVudGF0aW9uSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL01lbW9yeUluc3RydW1lbnRhdGlvbkltcGwuY3BwCkBAIC0xMDEsMTYgKzEwMSwxNiBAQCB2
b2lkIE1lbW9yeUluc3RydW1lbnRhdGlvbkNsaWVudEltcGw6OnJlcG9ydE5vZGUoY29uc3QgTWVt
b3J5T2JqZWN0SW5mbyYgbm9kZSkKICAgICAgICAgbV9ncmFwaFNlcmlhbGl6ZXItPnJlcG9ydE5v
ZGUobm9kZSk7CiB9CiAKLXZvaWQgTWVtb3J5SW5zdHJ1bWVudGF0aW9uQ2xpZW50SW1wbDo6cmVw
b3J0RWRnZShjb25zdCB2b2lkKiBzb3VyY2UsIGNvbnN0IHZvaWQqIHRhcmdldCwgY29uc3QgY2hh
ciogbmFtZSkKK3ZvaWQgTWVtb3J5SW5zdHJ1bWVudGF0aW9uQ2xpZW50SW1wbDo6cmVwb3J0RWRn
ZShjb25zdCB2b2lkKiB0YXJnZXQsIGNvbnN0IGNoYXIqIG5hbWUsIE1lbWJlclR5cGUgbWVtYmVy
VHlwZSkKIHsKICAgICBpZiAobV9ncmFwaFNlcmlhbGl6ZXIpCi0gICAgICAgIG1fZ3JhcGhTZXJp
YWxpemVyLT5yZXBvcnRFZGdlKHNvdXJjZSwgdGFyZ2V0LCBuYW1lKTsKKyAgICAgICAgbV9ncmFw
aFNlcmlhbGl6ZXItPnJlcG9ydEVkZ2UodGFyZ2V0LCBuYW1lLCBtZW1iZXJUeXBlKTsKIH0KIAot
dm9pZCBNZW1vcnlJbnN0cnVtZW50YXRpb25DbGllbnRJbXBsOjpyZXBvcnRMZWFmKGNvbnN0IHZv
aWQqIG93bmVyLCBjb25zdCBNZW1vcnlPYmplY3RJbmZvJiB0YXJnZXQsIGNvbnN0IGNoYXIqIGVk
Z2VOYW1lKQordm9pZCBNZW1vcnlJbnN0cnVtZW50YXRpb25DbGllbnRJbXBsOjpyZXBvcnRMZWFm
KGNvbnN0IE1lbW9yeU9iamVjdEluZm8mIHRhcmdldCwgY29uc3QgY2hhciogZWRnZU5hbWUpCiB7
CiAgICAgaWYgKG1fZ3JhcGhTZXJpYWxpemVyKQotICAgICAgICBtX2dyYXBoU2VyaWFsaXplci0+
cmVwb3J0TGVhZihvd25lciwgdGFyZ2V0LCBlZGdlTmFtZSk7CisgICAgICAgIG1fZ3JhcGhTZXJp
YWxpemVyLT5yZXBvcnRMZWFmKHRhcmdldCwgZWRnZU5hbWUpOwogfQogCiB2b2lkIE1lbW9yeUlu
c3RydW1lbnRhdGlvbkNsaWVudEltcGw6OnJlcG9ydEJhc2VBZGRyZXNzKGNvbnN0IHZvaWQqIGJh
c2UsIGNvbnN0IHZvaWQqIHJlYWwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvTWVtb3J5SW5zdHJ1bWVudGF0aW9uSW1wbC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L01lbW9yeUluc3RydW1lbnRhdGlvbkltcGwuaAppbmRleCBiYTRmOThlYjhhNGZiZGRlYjUwODU1
ZDNhOGUyNDI2NWNiZjQ0MTVmLi5jNGY5OGMxZDdiMjM4NzNiY2RiOGI2NjRjNGE1NzZkOGRjMGEy
MTg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTWVtb3J5SW5zdHJ1bWVu
dGF0aW9uSW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9NZW1vcnlJbnN0cnVt
ZW50YXRpb25JbXBsLmgKQEAgLTQwLDYgKzQwLDcgQEAKICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJp
bmdIYXNoLmg+CiAKIHVzaW5nIFdURjo6TWVtb3J5T2JqZWN0VHlwZTsKK3VzaW5nIFdURjo6TWVt
YmVyVHlwZTsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC04NSw4ICs4Niw4IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIGJvb2wgdmlzaXRlZChjb25zdCB2b2lkKikgT1ZFUlJJREU7CiAgICAg
dmlydHVhbCBib29sIGNoZWNrQ291bnRlZE9iamVjdChjb25zdCB2b2lkKikgT1ZFUlJJREU7CiAg
ICAgdmlydHVhbCB2b2lkIHJlcG9ydE5vZGUoY29uc3QgTWVtb3J5T2JqZWN0SW5mbyYpIE9WRVJS
SURFOwotICAgIHZpcnR1YWwgdm9pZCByZXBvcnRFZGdlKGNvbnN0IHZvaWQqLCBjb25zdCB2b2lk
KiwgY29uc3QgY2hhciopIE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCByZXBvcnRMZWFmKGNv
bnN0IHZvaWQqLCBjb25zdCBNZW1vcnlPYmplY3RJbmZvJiwgY29uc3QgY2hhciopIE9WRVJSSURF
OworICAgIHZpcnR1YWwgdm9pZCByZXBvcnRFZGdlKGNvbnN0IHZvaWQqLCBjb25zdCBjaGFyKiwg
TWVtYmVyVHlwZSkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHJlcG9ydExlYWYoY29uc3Qg
TWVtb3J5T2JqZWN0SW5mbyYsIGNvbnN0IGNoYXIqKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZv
aWQgcmVwb3J0QmFzZUFkZHJlc3MoY29uc3Qgdm9pZCosIGNvbnN0IHZvaWQqKSBPVkVSUklERTsK
IAogICAgIHZvaWQgcmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyopIGNvbnN0Owpk
aWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGJkMDE3
NDY1YmRjM2Y1MWY0N2ZmMTM2MmRhNjRlYTBhMWRiZjc5NTAuLjc2NGZjYjg0Mjg0MjNjMzEyMTBm
YzU2ODQ5ZGMwZTM4ZDkzYjdlYTkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9U
b29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxMi0xMi0yNCAgSWx5YSBUaWtob25v
dnNreSAgPGxvaXNsb0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogTmF0
aXZlIE1lbW9yeSBJbnN0cnVtZW50YXRpb246IHByb3BhZ2F0ZSBtZW1iZXIgdHlwZSBhcyBlZGdl
IHR5cGUgdG8gdGhlIHNlcmlhbGl6ZWQgaGVhcCBncmFwaC4KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNTcyNQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1lbWJlclR5cGUgdmFsdWUgbmFtZXMgd2VyZSBh
ZGp1c3RlZCBhY2NvcmRpbmcgdG8gU3R5bGUgR3VpZGUuCisgICAgICAgIEV4aXN0aW5nIHRlc3Rz
IHdlcmUgZXh0ZW5kZWQgd2l0aCBsaW5rIHR5cGUgdmFsaWRhdGlvbi4KKworICAgICAgICAqIFRl
c3RXZWJLaXRBUEkvVGVzdHMvV1RGL01lbW9yeUluc3RydW1lbnRhdGlvblRlc3QuY3BwOgorCiAy
MDEyLTEyLTI0ICBYaWFvYm8gV2FuZyAgPHhid2FuZ0B0b3JjaG1vYmlsZS5jb20uY24+CiAKICAg
ICAgICAgW0JsYWNrQmVycnldIERSVCAtIENyYXNoZWQgd2hlbiBydW5uaW5nIHBpeGVscyB0ZXN0
cwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvTWVtb3J5SW5zdHJ1
bWVudGF0aW9uVGVzdC5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9NZW1vcnlJ
bnN0cnVtZW50YXRpb25UZXN0LmNwcAppbmRleCA3YmRjYWMwNjM3OTQxYmEwMDBmZDNhNjAyOGMx
ZTFhZTRjYmQ3OWVhLi5lMmI3YjMzOWQ0MzllODE2MjA1NjZlZWZkZWJmOThlZGQwZDNjYmY0IDEw
MDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9NZW1vcnlJbnN0cnVtZW50
YXRpb25UZXN0LmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9NZW1vcnlJ
bnN0cnVtZW50YXRpb25UZXN0LmNwcApAQCAtNzksMTEgKzc5LDIwIEBAIG5hbWVzcGFjZSB7CiB1
c2luZyBXVEY6Ok1lbW9yeU9iamVjdEluZm87CiB1c2luZyBXVEY6Ok1lbW9yeUNsYXNzSW5mbzsK
IHVzaW5nIFdURjo6TWVtb3J5T2JqZWN0VHlwZTsKK3VzaW5nIFdURjo6TWVtYmVyVHlwZTsKIAog
TWVtb3J5T2JqZWN0VHlwZSBUZXN0VHlwZSA9ICJUZXN0VHlwZSI7CiAKIGNsYXNzIE1lbW9yeUlu
c3RydW1lbnRhdGlvblRlc3RDbGllbnQgOiBwdWJsaWMgV1RGOjpNZW1vcnlJbnN0cnVtZW50YXRp
b25DbGllbnQgewogcHVibGljOgorICAgIE1lbW9yeUluc3RydW1lbnRhdGlvblRlc3RDbGllbnQo
KSA6IG1fbGlua3MoV1RGOjpMYXN0TWVtYmVyVHlwZUVudHJ5KQorICAgIHsKKyAgICAgICAgbV9s
aW5rc1tXVEY6OlBvaW50ZXJNZW1iZXJdID0gMDsKKyAgICAgICAgbV9saW5rc1tXVEY6OlJlZmVy
ZW5jZU1lbWJlcl0gPSAwOworICAgICAgICBtX2xpbmtzW1dURjo6UmVmUHRyTWVtYmVyXSA9IDA7
CisgICAgICAgIG1fbGlua3NbV1RGOjpPd25QdHJNZW1iZXJdID0gMDsKKyAgICB9CisKICAgICB2
aXJ0dWFsIHZvaWQgY291bnRPYmplY3RTaXplKGNvbnN0IHZvaWQqLCBNZW1vcnlPYmplY3RUeXBl
IG9iamVjdFR5cGUsIHNpemVfdCBzaXplKQogICAgIHsKICAgICAgICAgVHlwZVRvU2l6ZU1hcDo6
QWRkUmVzdWx0IHJlc3VsdCA9IG1fdG90YWxTaXplcy5hZGQob2JqZWN0VHlwZSwgc2l6ZSk7CkBA
IC05Myw4ICsxMDIsMTQgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCB2aXNpdGVkKGNvbnN0
IHZvaWQqIG9iamVjdCkgeyByZXR1cm4gIW1fdmlzaXRlZE9iamVjdHMuYWRkKG9iamVjdCkuaXNO
ZXdFbnRyeTsgfQogICAgIHZpcnR1YWwgYm9vbCBjaGVja0NvdW50ZWRPYmplY3QoY29uc3Qgdm9p
ZCopIHsgcmV0dXJuIHRydWU7IH0KICAgICB2aXJ0dWFsIHZvaWQgcmVwb3J0Tm9kZShjb25zdCBN
ZW1vcnlPYmplY3RJbmZvJikgT1ZFUlJJREUgeyB9Ci0gICAgdmlydHVhbCB2b2lkIHJlcG9ydEVk
Z2UoY29uc3Qgdm9pZCosIGNvbnN0IHZvaWQqLCBjb25zdCBjaGFyKikgT1ZFUlJJREUgeyB9Ci0g
ICAgdmlydHVhbCB2b2lkIHJlcG9ydExlYWYoY29uc3Qgdm9pZCosIGNvbnN0IE1lbW9yeU9iamVj
dEluZm8mLCBjb25zdCBjaGFyKikgT1ZFUlJJREUgeyB9CisgICAgdmlydHVhbCB2b2lkIHJlcG9y
dEVkZ2UoY29uc3Qgdm9pZCosIGNvbnN0IGNoYXIqLCBNZW1iZXJUeXBlIG1lbWJlclR5cGUpIE9W
RVJSSURFCisgICAgeworICAgICAgICArK21fbGlua3NbbWVtYmVyVHlwZV07CisgICAgfQorICAg
IHZpcnR1YWwgdm9pZCByZXBvcnRMZWFmKGNvbnN0IE1lbW9yeU9iamVjdEluZm8mLCBjb25zdCBj
aGFyKikgT1ZFUlJJREUKKyAgICB7CisgICAgICAgICsrbV9saW5rc1tXVEY6Ok93blB0ck1lbWJl
cl07CisgICAgfQogICAgIHZpcnR1YWwgdm9pZCByZXBvcnRCYXNlQWRkcmVzcyhjb25zdCB2b2lk
KiwgY29uc3Qgdm9pZCopIE9WRVJSSURFIHsgfQogCiAgICAgc2l6ZV90IHZpc2l0ZWRPYmplY3Rz
KCkgY29uc3QgeyByZXR1cm4gbV92aXNpdGVkT2JqZWN0cy5zaXplKCk7IH0KQEAgLTEwNCw2ICsx
MTksMTEgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gaSA9PSBtX3RvdGFsU2l6ZXMuZW5kKCkg
PyAwIDogaS0+dmFsdWU7CiAgICAgfQogCisgICAgc2l6ZV90IGxpbmtzQ291bnQoY29uc3QgV1RG
OjpNZW1iZXJUeXBlIG1lbWJlclR5cGUpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9s
aW5rc1ttZW1iZXJUeXBlXTsKKyAgICB9CisKICAgICBzaXplX3QgcmVwb3J0ZWRTaXplRm9yQWxs
VHlwZXMoKSBjb25zdAogICAgIHsKICAgICAgICAgc2l6ZV90IHNpemUgPSAwOwpAQCAtMTE2LDYg
KzEzNiw3IEBAIHByaXZhdGU6CiAgICAgdHlwZWRlZiBIYXNoTWFwPE1lbW9yeU9iamVjdFR5cGUs
IHNpemVfdD4gVHlwZVRvU2l6ZU1hcDsKICAgICBUeXBlVG9TaXplTWFwIG1fdG90YWxTaXplczsK
ICAgICBXVEY6Okhhc2hTZXQ8Y29uc3Qgdm9pZCo+IG1fdmlzaXRlZE9iamVjdHM7CisgICAgV1RG
OjpWZWN0b3I8c2l6ZV90LCBXVEY6Okxhc3RNZW1iZXJUeXBlRW50cnk+IG1fbGlua3M7CiB9Owog
CiBjbGFzcyBJbnN0cnVtZW50YXRpb25UZXN0SW1wbCA6IHB1YmxpYyBXVEY6Ok1lbW9yeUluc3Ry
dW1lbnRhdGlvbiB7CkBAIC0xMzAsNiArMTUxLDcgQEAgcHVibGljOgogICAgIHNpemVfdCB2aXNp
dGVkT2JqZWN0cygpIGNvbnN0IHsgcmV0dXJuIG1fY2xpZW50LT52aXNpdGVkT2JqZWN0cygpOyB9
CiAgICAgc2l6ZV90IHJlcG9ydGVkU2l6ZUZvckFsbFR5cGVzKCkgY29uc3QgeyByZXR1cm4gbV9j
bGllbnQtPnJlcG9ydGVkU2l6ZUZvckFsbFR5cGVzKCk7IH0KICAgICBzaXplX3QgdG90YWxTaXpl
KGNvbnN0IE1lbW9yeU9iamVjdFR5cGUgb2JqZWN0VHlwZSkgY29uc3QgeyByZXR1cm4gbV9jbGll
bnQtPnRvdGFsU2l6ZShvYmplY3RUeXBlKTsgfQorICAgIHNpemVfdCBsaW5rc0NvdW50KGNvbnN0
IFdURjo6TWVtYmVyVHlwZSBtZW1iZXJUeXBlKSBjb25zdCB7ICByZXR1cm4gbV9jbGllbnQtPmxp
bmtzQ291bnQobWVtYmVyVHlwZSk7IH0KIAogcHJpdmF0ZToKICAgICBNZW1vcnlJbnN0cnVtZW50
YXRpb25UZXN0Q2xpZW50KiBtX2NsaWVudDsKQEAgLTE5Miw2ICsyMTQsNyBAQCBURVNUKE1lbW9y
eUluc3RydW1lbnRhdGlvblRlc3QsIHNpemVPZikKICAgICBoZWxwZXIuYWRkUm9vdE9iamVjdChp
bnN0cnVtZW50ZWQpOwogICAgIEVYUEVDVF9FUShzaXplb2YoTm90SW5zdHJ1bWVudGVkKSwgaGVs
cGVyLnJlcG9ydGVkU2l6ZUZvckFsbFR5cGVzKCkpOwogICAgIEVYUEVDVF9FUSgxdSwgaGVscGVy
LnZpc2l0ZWRPYmplY3RzKCkpOworICAgIEVYUEVDVF9FUSgxdSwgaGVscGVyLmxpbmtzQ291bnQo
V1RGOjpQb2ludGVyTWVtYmVyKSk7CiB9CiAKIFRFU1QoTWVtb3J5SW5zdHJ1bWVudGF0aW9uVGVz
dCwgbnVsbENoZWNrKQpAQCAtMjAxLDYgKzIyNCw3IEBAIFRFU1QoTWVtb3J5SW5zdHJ1bWVudGF0
aW9uVGVzdCwgbnVsbENoZWNrKQogICAgIGhlbHBlci5hZGRSb290T2JqZWN0KGluc3RydW1lbnRl
ZCk7CiAgICAgRVhQRUNUX0VRKDB1LCBoZWxwZXIucmVwb3J0ZWRTaXplRm9yQWxsVHlwZXMoKSk7
CiAgICAgRVhQRUNUX0VRKDB1LCBoZWxwZXIudmlzaXRlZE9iamVjdHMoKSk7CisgICAgRVhQRUNU
X0VRKDB1LCBoZWxwZXIubGlua3NDb3VudChXVEY6OlBvaW50ZXJNZW1iZXIpKTsKIH0KIAogVEVT
VChNZW1vcnlJbnN0cnVtZW50YXRpb25UZXN0LCBwdHJWc1JlZikKQEAgLTIxMSw2ICsyMzUsNyBA
QCBURVNUKE1lbW9yeUluc3RydW1lbnRhdGlvblRlc3QsIHB0clZzUmVmKQogICAgICAgICBoZWxw
ZXIuYWRkUm9vdE9iamVjdCgmaW5zdHJ1bWVudGVkKTsKICAgICAgICAgRVhQRUNUX0VRKHNpemVv
ZihJbnN0cnVtZW50ZWQpICsgc2l6ZW9mKE5vdEluc3RydW1lbnRlZCksIGhlbHBlci5yZXBvcnRl
ZFNpemVGb3JBbGxUeXBlcygpKTsKICAgICAgICAgRVhQRUNUX0VRKDJ1LCBoZWxwZXIudmlzaXRl
ZE9iamVjdHMoKSk7CisgICAgICAgIEVYUEVDVF9FUSgxdSwgaGVscGVyLmxpbmtzQ291bnQoV1RG
OjpQb2ludGVyTWVtYmVyKSk7CiAgICAgfQogICAgIHsKICAgICAgICAgSW5zdHJ1bWVudGF0aW9u
VGVzdEhlbHBlciBoZWxwZXI7CkBAIC0yMTgsNiArMjQzLDcgQEAgVEVTVChNZW1vcnlJbnN0cnVt
ZW50YXRpb25UZXN0LCBwdHJWc1JlZikKICAgICAgICAgaGVscGVyLmFkZFJvb3RPYmplY3QoaW5z
dHJ1bWVudGVkKTsKICAgICAgICAgRVhQRUNUX0VRKHNpemVvZihOb3RJbnN0cnVtZW50ZWQpLCBo
ZWxwZXIucmVwb3J0ZWRTaXplRm9yQWxsVHlwZXMoKSk7CiAgICAgICAgIEVYUEVDVF9FUSgxdSwg
aGVscGVyLnZpc2l0ZWRPYmplY3RzKCkpOworICAgICAgICBFWFBFQ1RfRVEoMXUsIGhlbHBlci5s
aW5rc0NvdW50KFdURjo6UG9pbnRlck1lbWJlcikpOwogICAgIH0KIH0KIApAQCAtMjQxLDYgKzI2
Nyw4IEBAIFRFU1QoTWVtb3J5SW5zdHJ1bWVudGF0aW9uVGVzdCwgb3duUHRyTm90SW5zdHJ1bWVu
dGVkKQogICAgIGhlbHBlci5hZGRSb290T2JqZWN0KGluc3RydW1lbnRlZFdpdGhPd25QdHIpOwog
ICAgIEVYUEVDVF9FUSgydSAqIHNpemVvZihOb3RJbnN0cnVtZW50ZWQpLCBoZWxwZXIucmVwb3J0
ZWRTaXplRm9yQWxsVHlwZXMoKSk7CiAgICAgRVhQRUNUX0VRKDJ1LCBoZWxwZXIudmlzaXRlZE9i
amVjdHMoKSk7CisgICAgRVhQRUNUX0VRKDF1LCBoZWxwZXIubGlua3NDb3VudChXVEY6Ok93blB0
ck1lbWJlcikpOworICAgIEVYUEVDVF9FUSgxdSwgaGVscGVyLmxpbmtzQ291bnQoV1RGOjpQb2lu
dGVyTWVtYmVyKSk7CiB9CiAKIGNsYXNzIEluc3RydW1lbnRlZFVuZGVmaW5lZCB7CkBAIC03NjAs
NiArNzg4LDcgQEAgVEVTVChNZW1vcnlJbnN0cnVtZW50YXRpb25UZXN0LCBhcnJheUJ1ZmZlcikK
ICAgICBoZWxwZXIuYWRkUm9vdE9iamVjdCh2YWx1ZSk7CiAgICAgRVhQRUNUX0VRKHNpemVvZihp
bnQpICogMTAwMCArIHNpemVvZihBcnJheUJ1ZmZlciksIGhlbHBlci5yZXBvcnRlZFNpemVGb3JB
bGxUeXBlcygpKTsKICAgICBFWFBFQ1RfRVEoMnUsIGhlbHBlci52aXNpdGVkT2JqZWN0cygpKTsK
KyAgICBFWFBFQ1RfRVEoMXUsIGhlbHBlci5saW5rc0NvdW50KFdURjo6UmVmUHRyTWVtYmVyKSk7
CiB9CiAKIGNsYXNzIEFuY2VzdG9yV2l0aFZpcnR1YWxNZXRob2QgewpAQCAtODUxLDcgKzg4MCw3
IEBAIHByaXZhdGU6CiBjbGFzcyBDb3VudExpbmtzRnJvbUluc3RydW1lbnRlZE9iamVjdCA6IHB1
YmxpYyBNZW1vcnlJbnN0cnVtZW50YXRpb25UZXN0Q2xpZW50IHsKIHB1YmxpYzoKICAgICBDb3Vu
dExpbmtzRnJvbUluc3RydW1lbnRlZE9iamVjdCgpIDogbV9saW5rQ291bnQoMCkgeyB9Ci0gICAg
dmlydHVhbCB2b2lkIHJlcG9ydEVkZ2UoY29uc3Qgdm9pZCogc291cmNlLCBjb25zdCB2b2lkKiBk
ZXN0aW5hdGlvbiwgY29uc3QgY2hhciogbmFtZSkgT1ZFUlJJREUKKyAgICB2aXJ0dWFsIHZvaWQg
cmVwb3J0RWRnZShjb25zdCB2b2lkKiwgY29uc3QgY2hhciogbmFtZSwgTWVtYmVyVHlwZSkgT1ZF
UlJJREUKICAgICB7CiAgICAgICAgIGlmIChuYW1lICYmICFzdHJjbXAoIm1fbm90SW5zdHJ1bWVu
dGVkIiwgbmFtZSkpCiAgICAgICAgICAgICBtX2xpbmtDb3VudCsrOwo=
</data>
<flag name="review"
          id="198055"
          type_id="1"
          status="+"
          setter="yurys"
    />
          </attachment>
      

    </bug>

</bugzilla>