<?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>63964</bug_id>
          
          <creation_ts>2011-07-05 18:22:04 -0700</creation_ts>
          <short_desc>Force inlining of simple functions that show up as not being inlined</short_desc>
          <delta_ts>2011-07-05 18:31:20 -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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Oliver Hunt">oliver</reporter>
          <assigned_to name="Oliver Hunt">oliver</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>432525</commentid>
    <comment_count>0</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2011-07-05 18:22:04 -0700</bug_when>
    <thetext>Force inlining of simple functions that show up as not being inlined</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>432526</commentid>
    <comment_count>1</comment_count>
      <attachid>99769</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2011-07-05 18:24:10 -0700</bug_when>
    <thetext>Created attachment 99769
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>432527</commentid>
    <comment_count>2</comment_count>
      <attachid>99769</attachid>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2011-07-05 18:28:57 -0700</bug_when>
    <thetext>Comment on attachment 99769
Patch

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

&gt; Source/JavaScriptCore/assembler/LinkBuffer.h:251
&gt; +            uint16_t* copySource = reinterpret_cast&lt;uint16_t*&gt;(inData + readPtr);

I kinda think it would be nice to add a couple more asserts, check ing that the points are aligned, and that the regions do not overlap.  But I leave that to your personal taste. r+ either way.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>432528</commentid>
    <comment_count>3</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2011-07-05 18:31:20 -0700</bug_when>
    <thetext>Committed r90426: &lt;http://trac.webkit.org/changeset/90426&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>99769</attachid>
            <date>2011-07-05 18:24:10 -0700</date>
            <delta_ts>2011-07-05 18:28:57 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-63964-20110705182409.patch</filename>
            <type>text/plain</type>
            <size>36025</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTA0MjEKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDc4
ODQzYmY5OWEyM2ExNzFlNmIyZWNiZTEyM2UwYmFiYWFjZDVkOWUuLjU5YjcyMjA4ZjI2ZTI3M2Jj
NzUwODY2ODY5YmQxYjIzNGVhYzUxZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtMSw1
ICsxLDgxIEBACiAyMDExLTA3LTA1ICBPbGl2ZXIgSHVudCAgPG9saXZlckBhcHBsZS5jb20+CiAK
KyAgICAgICAgRm9yY2UgaW5saW5pbmcgb2Ygc2ltcGxlIGZ1bmN0aW9ucyB0aGF0IHNob3cgdXAg
YXMgbm90IGJlaW5nIGlubGluZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTYzOTY0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgTG9va2luZyBhdCBwcm9maWxlIGRhdGEgaW5kaWNhdGVzIHRoZSBnY2MgaXMg
ZmFpbGluZyB0byBpbmxpbmUgYQorICAgICAgICBudW1iZXIgb2YgdHJpdmlhbCBmdW5jdGlvbnMu
ICBUaGlzIHBhdGNoIGhpdHMgdGhlIG9uZXMgdGhhdCBzaG93CisgICAgICAgIHVwIGluIHByb2Zp
bGVzIHdpdGggdGhlIEFMV0FZU19JTkxJTkUgaGFtbWVyLgorCisgICAgICAgIFdlIGFsc28gcmVw
bGFjZSB0aGUgbWVtY3B5KCkgY2FsbCBpbiBsaW5raW5nIHdpdGggYSBtYW51YWwgbG9vcC4KKyAg
ICAgICAgQXBwYXJlbnRseSBtZW1jcHkoKSBpcyBhbG1vc3QgbmV2ZXIgZmFzdGVyIHRoYW4gYW4g
aW5saW5lZCBsb29wLgorCisgICAgICAgICogYXNzZW1ibGVyL0FSTXY3QXNzZW1ibGVyLmg6Cisg
ICAgICAgIChKU0M6OkFSTXY3QXNzZW1ibGVyOjphZGQpOgorICAgICAgICAoSlNDOjpBUk12N0Fz
c2VtYmxlcjo6YWRkX1MpOgorICAgICAgICAoSlNDOjpBUk12N0Fzc2VtYmxlcjo6QVJNX2FuZCk6
CisgICAgICAgIChKU0M6OkFSTXY3QXNzZW1ibGVyOjphc3IpOgorICAgICAgICAoSlNDOjpBUk12
N0Fzc2VtYmxlcjo6Yik6CisgICAgICAgIChKU0M6OkFSTXY3QXNzZW1ibGVyOjpibHgpOgorICAg
ICAgICAoSlNDOjpBUk12N0Fzc2VtYmxlcjo6YngpOgorICAgICAgICAoSlNDOjpBUk12N0Fzc2Vt
Ymxlcjo6Y2x6KToKKyAgICAgICAgKEpTQzo6QVJNdjdBc3NlbWJsZXI6OmNtbik6CisgICAgICAg
IChKU0M6OkFSTXY3QXNzZW1ibGVyOjpjbXApOgorICAgICAgICAoSlNDOjpBUk12N0Fzc2VtYmxl
cjo6ZW9yKToKKyAgICAgICAgKEpTQzo6QVJNdjdBc3NlbWJsZXI6Oml0KToKKyAgICAgICAgKEpT
Qzo6QVJNdjdBc3NlbWJsZXI6Omxkcik6CisgICAgICAgIChKU0M6OkFSTXY3QXNzZW1ibGVyOjps
ZHJDb21wYWN0KToKKyAgICAgICAgKEpTQzo6QVJNdjdBc3NlbWJsZXI6OmxkcmgpOgorICAgICAg
ICAoSlNDOjpBUk12N0Fzc2VtYmxlcjo6bGRyYik6CisgICAgICAgIChKU0M6OkFSTXY3QXNzZW1i
bGVyOjpsc2wpOgorICAgICAgICAoSlNDOjpBUk12N0Fzc2VtYmxlcjo6bHNyKToKKyAgICAgICAg
KEpTQzo6QVJNdjdBc3NlbWJsZXI6Om1vdlQzKToKKyAgICAgICAgKEpTQzo6QVJNdjdBc3NlbWJs
ZXI6Om1vdik6CisgICAgICAgIChKU0M6OkFSTXY3QXNzZW1ibGVyOjptb3Z0KToKKyAgICAgICAg
KEpTQzo6QVJNdjdBc3NlbWJsZXI6Om12bik6CisgICAgICAgIChKU0M6OkFSTXY3QXNzZW1ibGVy
OjpuZWcpOgorICAgICAgICAoSlNDOjpBUk12N0Fzc2VtYmxlcjo6b3JyKToKKyAgICAgICAgKEpT
Qzo6QVJNdjdBc3NlbWJsZXI6Om9ycl9TKToKKyAgICAgICAgKEpTQzo6QVJNdjdBc3NlbWJsZXI6
OnJvcik6CisgICAgICAgIChKU0M6OkFSTXY3QXNzZW1ibGVyOjpzbXVsbCk6CisgICAgICAgIChK
U0M6OkFSTXY3QXNzZW1ibGVyOjpzdHIpOgorICAgICAgICAoSlNDOjpBUk12N0Fzc2VtYmxlcjo6
c3ViKToKKyAgICAgICAgKEpTQzo6QVJNdjdBc3NlbWJsZXI6OnN1Yl9TKToKKyAgICAgICAgKEpT
Qzo6QVJNdjdBc3NlbWJsZXI6OnRzdCk6CisgICAgICAgIChKU0M6OkFSTXY3QXNzZW1ibGVyOjps
aW5rUmVjb3JkU291cmNlQ29tcGFyYXRvcik6CisgICAgICAgIChKU0M6OkFSTXY3QXNzZW1ibGVy
OjpsaW5rKToKKyAgICAgICAgKEpTQzo6QVJNdjdBc3NlbWJsZXI6OkFSTUluc3RydWN0aW9uRm9y
bWF0dGVyOjpvbmVXb3JkT3A1UmVnM0ltbTgpOgorICAgICAgICAoSlNDOjpBUk12N0Fzc2VtYmxl
cjo6QVJNSW5zdHJ1Y3Rpb25Gb3JtYXR0ZXI6Om9uZVdvcmRPcDVJbW01UmVnM1JlZzMpOgorICAg
ICAgICAoSlNDOjpBUk12N0Fzc2VtYmxlcjo6QVJNSW5zdHJ1Y3Rpb25Gb3JtYXR0ZXI6Om9uZVdv
cmRPcDdSZWczUmVnM1JlZzMpOgorICAgICAgICAoSlNDOjpBUk12N0Fzc2VtYmxlcjo6QVJNSW5z
dHJ1Y3Rpb25Gb3JtYXR0ZXI6Om9uZVdvcmRPcDhJbW04KToKKyAgICAgICAgKEpTQzo6QVJNdjdB
c3NlbWJsZXI6OkFSTUluc3RydWN0aW9uRm9ybWF0dGVyOjpvbmVXb3JkT3A4UmVnUmVnMTQzKToK
KyAgICAgICAgKEpTQzo6QVJNdjdBc3NlbWJsZXI6OkFSTUluc3RydWN0aW9uRm9ybWF0dGVyOjpv
bmVXb3JkT3A5SW1tNyk6CisgICAgICAgIChKU0M6OkFSTXY3QXNzZW1ibGVyOjpBUk1JbnN0cnVj
dGlvbkZvcm1hdHRlcjo6b25lV29yZE9wMTBSZWczUmVnMyk6CisgICAgICAgIChKU0M6OkFSTXY3
QXNzZW1ibGVyOjpBUk1JbnN0cnVjdGlvbkZvcm1hdHRlcjo6dHdvV29yZE9wMTJSZWc0Rm91ckZv
dXJzKToKKyAgICAgICAgKEpTQzo6QVJNdjdBc3NlbWJsZXI6OkFSTUluc3RydWN0aW9uRm9ybWF0
dGVyOjp0d29Xb3JkT3AxNkZvdXJGb3Vycyk6CisgICAgICAgIChKU0M6OkFSTXY3QXNzZW1ibGVy
OjpBUk1JbnN0cnVjdGlvbkZvcm1hdHRlcjo6dHdvV29yZE9wMTZPcDE2KToKKyAgICAgICAgKEpT
Qzo6QVJNdjdBc3NlbWJsZXI6OkFSTUluc3RydWN0aW9uRm9ybWF0dGVyOjp0d29Xb3JkT3A1aTZJ
bW00UmVnNEVuY29kZWRJbW0pOgorICAgICAgICAoSlNDOjpBUk12N0Fzc2VtYmxlcjo6QVJNSW5z
dHJ1Y3Rpb25Gb3JtYXR0ZXI6OnR3b1dvcmRPcDEyUmVnNFJlZzRJbW0xMik6CisgICAgICAgIChK
U0M6OkFSTXY3QXNzZW1ibGVyOjpBUk1JbnN0cnVjdGlvbkZvcm1hdHRlcjo6dmZwT3ApOgorICAg
ICAgICAoSlNDOjpBUk12N0Fzc2VtYmxlcjo6QVJNSW5zdHJ1Y3Rpb25Gb3JtYXR0ZXI6OnZmcE1l
bU9wKToKKyAgICAgICAgKiBhc3NlbWJsZXIvTGlua0J1ZmZlci5oOgorICAgICAgICAoSlNDOjpM
aW5rQnVmZmVyOjpsaW5rQ29kZSk6CisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVy
QVJNdjcuaDoKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk12Nzo6bmVhckNhbGwpOgor
ICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTXY3OjpjYWxsKToKKyAgICAgICAgKEpTQzo6
TWFjcm9Bc3NlbWJsZXJBUk12Nzo6cmV0KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJB
Uk12Nzo6bW92ZVdpdGhQYXRjaCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNdjc6
OmJyYW5jaFB0cldpdGhQYXRjaCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNdjc6
OnN0b3JlUHRyV2l0aFBhdGNoKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk12Nzo6
dGFpbFJlY3Vyc2l2ZUNhbGwpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTXY3Ojpt
YWtlVGFpbFJlY3Vyc2l2ZUNhbGwpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTXY3
OjpqdW1wKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk12Nzo6bWFrZUJyYW5jaCk6
CisKKzIwMTEtMDctMDUgIE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4KKwogICAgICAg
ICBJbml0aWFsaXplIG5ldyBNYXJrU3RhY2sgbWVtYmVyCiAKICAgICAgICAgKiBoZWFwL01hcmtT
dGFjay5oOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BUk12
N0Fzc2VtYmxlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BUk12N0Fzc2Vt
Ymxlci5oCmluZGV4IDg5YTM4MmFhNzE1ODE2ZmIxZjMyNWMyYzc0MDAxMWMxYzRmNGM4ZjYuLjdi
NDA2ZTBhMTU3MjBiZTFkMmZlZGM2M2QzNTk0ZjE0ZGU4YTQ0NDcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQVJNdjdBc3NlbWJsZXIuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0FSTXY3QXNzZW1ibGVyLmgKQEAgLTcxOSw3ICs3MTks
NyBAQCBwdWJsaWM6CiAgICAgICAgIH0KICAgICB9CiAKLSAgICB2b2lkIGFkZChSZWdpc3RlcklE
IHJkLCBSZWdpc3RlcklEIHJuLCBSZWdpc3RlcklEIHJtLCBTaGlmdFR5cGVBbmRBbW91bnQgc2hp
ZnQpCisgICAgQUxXQVlTX0lOTElORSB2b2lkIGFkZChSZWdpc3RlcklEIHJkLCBSZWdpc3RlcklE
IHJuLCBSZWdpc3RlcklEIHJtLCBTaGlmdFR5cGVBbmRBbW91bnQgc2hpZnQpCiAgICAgewogICAg
ICAgICBBU1NFUlQoKHJkICE9IEFSTVJlZ2lzdGVyczo6c3ApIHx8IChybiA9PSBBUk1SZWdpc3Rl
cnM6OnNwKSk7CiAgICAgICAgIEFTU0VSVChyZCAhPSBBUk1SZWdpc3RlcnM6OnBjKTsKQEAgLTcy
OSw3ICs3MjksNyBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAgLy8gTk9URTogSW4gYW4gSVQgYmxv
Y2ssIGFkZCBkb2Vzbid0IG1vZGlmeSB0aGUgZmxhZ3MgcmVnaXN0ZXIuCi0gICAgdm9pZCBhZGQo
UmVnaXN0ZXJJRCByZCwgUmVnaXN0ZXJJRCBybiwgUmVnaXN0ZXJJRCBybSkKKyAgICBBTFdBWVNf
SU5MSU5FIHZvaWQgYWRkKFJlZ2lzdGVySUQgcmQsIFJlZ2lzdGVySUQgcm4sIFJlZ2lzdGVySUQg
cm0pCiAgICAgewogICAgICAgICBpZiAocmQgPT0gcm4pCiAgICAgICAgICAgICBtX2Zvcm1hdHRl
ci5vbmVXb3JkT3A4UmVnUmVnMTQzKE9QX0FERF9yZWdfVDIsIHJtLCByZCk7CkBAIC03NDIsNyAr
NzQyLDcgQEAgcHVibGljOgogICAgIH0KIAogICAgIC8vIE5vdCBhbGxvd2VkIGluIGFuIElUIChp
ZiB0aGVuKSBibG9jay4KLSAgICB2b2lkIGFkZF9TKFJlZ2lzdGVySUQgcmQsIFJlZ2lzdGVySUQg
cm4sIEFSTVRodW1iSW1tZWRpYXRlIGltbSkKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgYWRkX1Mo
UmVnaXN0ZXJJRCByZCwgUmVnaXN0ZXJJRCBybiwgQVJNVGh1bWJJbW1lZGlhdGUgaW1tKQogICAg
IHsKICAgICAgICAgLy8gUmQgY2FuIG9ubHkgYmUgU1AgaWYgUm4gaXMgYWxzbyBTUC4KICAgICAg
ICAgQVNTRVJUKChyZCAhPSBBUk1SZWdpc3RlcnM6OnNwKSB8fCAocm4gPT0gQVJNUmVnaXN0ZXJz
OjpzcCkpOwpAQCAtNzY0LDcgKzc2NCw3IEBAIHB1YmxpYzoKICAgICB9CiAKICAgICAvLyBOb3Qg
YWxsb3dlZCBpbiBhbiBJVCAoaWYgdGhlbikgYmxvY2s/Ci0gICAgdm9pZCBhZGRfUyhSZWdpc3Rl
cklEIHJkLCBSZWdpc3RlcklEIHJuLCBSZWdpc3RlcklEIHJtLCBTaGlmdFR5cGVBbmRBbW91bnQg
c2hpZnQpCisgICAgQUxXQVlTX0lOTElORSB2b2lkIGFkZF9TKFJlZ2lzdGVySUQgcmQsIFJlZ2lz
dGVySUQgcm4sIFJlZ2lzdGVySUQgcm0sIFNoaWZ0VHlwZUFuZEFtb3VudCBzaGlmdCkKICAgICB7
CiAgICAgICAgIEFTU0VSVCgocmQgIT0gQVJNUmVnaXN0ZXJzOjpzcCkgfHwgKHJuID09IEFSTVJl
Z2lzdGVyczo6c3ApKTsKICAgICAgICAgQVNTRVJUKHJkICE9IEFSTVJlZ2lzdGVyczo6cGMpOwpA
QCAtNzc0LDcgKzc3NCw3IEBAIHB1YmxpYzoKICAgICB9CiAKICAgICAvLyBOb3QgYWxsb3dlZCBp
biBhbiBJVCAoaWYgdGhlbikgYmxvY2suCi0gICAgdm9pZCBhZGRfUyhSZWdpc3RlcklEIHJkLCBS
ZWdpc3RlcklEIHJuLCBSZWdpc3RlcklEIHJtKQorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBhZGRf
UyhSZWdpc3RlcklEIHJkLCBSZWdpc3RlcklEIHJuLCBSZWdpc3RlcklEIHJtKQogICAgIHsKICAg
ICAgICAgaWYgKCEoKHJkIHwgcm4gfCBybSkgJiA4KSkKICAgICAgICAgICAgIG1fZm9ybWF0dGVy
Lm9uZVdvcmRPcDdSZWczUmVnM1JlZzMoT1BfQUREX3JlZ19UMSwgcm0sIHJuLCByZCk7CkBAIC03
ODIsNyArNzgyLDcgQEAgcHVibGljOgogICAgICAgICAgICAgYWRkX1MocmQsIHJuLCBybSwgU2hp
ZnRUeXBlQW5kQW1vdW50KCkpOwogICAgIH0KIAotICAgIHZvaWQgQVJNX2FuZChSZWdpc3RlcklE
IHJkLCBSZWdpc3RlcklEIHJuLCBBUk1UaHVtYkltbWVkaWF0ZSBpbW0pCisgICAgQUxXQVlTX0lO
TElORSB2b2lkIEFSTV9hbmQoUmVnaXN0ZXJJRCByZCwgUmVnaXN0ZXJJRCBybiwgQVJNVGh1bWJJ
bW1lZGlhdGUgaW1tKQogICAgIHsKICAgICAgICAgQVNTRVJUKCFCYWRSZWcocmQpKTsKICAgICAg
ICAgQVNTRVJUKCFCYWRSZWcocm4pKTsKQEAgLTc5MCw3ICs3OTAsNyBAQCBwdWJsaWM6CiAgICAg
ICAgIG1fZm9ybWF0dGVyLnR3b1dvcmRPcDVpNkltbTRSZWc0RW5jb2RlZEltbShPUF9BTkRfaW1t
X1QxLCBybiwgcmQsIGltbSk7CiAgICAgfQogCi0gICAgdm9pZCBBUk1fYW5kKFJlZ2lzdGVySUQg
cmQsIFJlZ2lzdGVySUQgcm4sIFJlZ2lzdGVySUQgcm0sIFNoaWZ0VHlwZUFuZEFtb3VudCBzaGlm
dCkKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgQVJNX2FuZChSZWdpc3RlcklEIHJkLCBSZWdpc3Rl
cklEIHJuLCBSZWdpc3RlcklEIHJtLCBTaGlmdFR5cGVBbmRBbW91bnQgc2hpZnQpCiAgICAgewog
ICAgICAgICBBU1NFUlQoIUJhZFJlZyhyZCkpOwogICAgICAgICBBU1NFUlQoIUJhZFJlZyhybikp
OwpAQCAtNzk4LDcgKzc5OCw3IEBAIHB1YmxpYzoKICAgICAgICAgbV9mb3JtYXR0ZXIudHdvV29y
ZE9wMTJSZWc0Rm91ckZvdXJzKE9QX0FORF9yZWdfVDIsIHJuLCBGb3VyRm91cnMoc2hpZnQuaGk0
KCksIHJkLCBzaGlmdC5sbzQoKSwgcm0pKTsKICAgICB9CiAKLSAgICB2b2lkIEFSTV9hbmQoUmVn
aXN0ZXJJRCByZCwgUmVnaXN0ZXJJRCBybiwgUmVnaXN0ZXJJRCBybSkKKyAgICBBTFdBWVNfSU5M
SU5FIHZvaWQgQVJNX2FuZChSZWdpc3RlcklEIHJkLCBSZWdpc3RlcklEIHJuLCBSZWdpc3RlcklE
IHJtKQogICAgIHsKICAgICAgICAgaWYgKChyZCA9PSBybikgJiYgISgocmQgfCBybSkgJiA4KSkK
ICAgICAgICAgICAgIG1fZm9ybWF0dGVyLm9uZVdvcmRPcDEwUmVnM1JlZzMoT1BfQU5EX3JlZ19U
MSwgcm0sIHJkKTsKQEAgLTgwOCw3ICs4MDgsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICBBUk1f
YW5kKHJkLCBybiwgcm0sIFNoaWZ0VHlwZUFuZEFtb3VudCgpKTsKICAgICB9CiAKLSAgICB2b2lk
IGFzcihSZWdpc3RlcklEIHJkLCBSZWdpc3RlcklEIHJtLCBpbnQzMl90IHNoaWZ0QW1vdW50KQor
ICAgIEFMV0FZU19JTkxJTkUgdm9pZCBhc3IoUmVnaXN0ZXJJRCByZCwgUmVnaXN0ZXJJRCBybSwg
aW50MzJfdCBzaGlmdEFtb3VudCkKICAgICB7CiAgICAgICAgIEFTU0VSVCghQmFkUmVnKHJkKSk7
CiAgICAgICAgIEFTU0VSVCghQmFkUmVnKHJtKSk7CkBAIC04MTYsNyArODE2LDcgQEAgcHVibGlj
OgogICAgICAgICBtX2Zvcm1hdHRlci50d29Xb3JkT3AxNkZvdXJGb3VycyhPUF9BU1JfaW1tX1Qx
LCBGb3VyRm91cnMoc2hpZnQuaGk0KCksIHJkLCBzaGlmdC5sbzQoKSwgcm0pKTsKICAgICB9CiAK
LSAgICB2b2lkIGFzcihSZWdpc3RlcklEIHJkLCBSZWdpc3RlcklEIHJuLCBSZWdpc3RlcklEIHJt
KQorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBhc3IoUmVnaXN0ZXJJRCByZCwgUmVnaXN0ZXJJRCBy
biwgUmVnaXN0ZXJJRCBybSkKICAgICB7CiAgICAgICAgIEFTU0VSVCghQmFkUmVnKHJkKSk7CiAg
ICAgICAgIEFTU0VSVCghQmFkUmVnKHJuKSk7CkBAIC04MjUsMTQgKzgyNSwxNCBAQCBwdWJsaWM6
CiAgICAgfQogICAgIAogICAgIC8vIE9ubHkgYWxsb3dlZCBpbiBJVCAoaWYgdGhlbikgYmxvY2sg
aWYgbGFzdCBpbnN0cnVjdGlvbi4KLSAgICBBc3NlbWJsZXJMYWJlbCBiKCkKKyAgICBBTFdBWVNf
SU5MSU5FIEFzc2VtYmxlckxhYmVsIGIoKQogICAgIHsKICAgICAgICAgbV9mb3JtYXR0ZXIudHdv
V29yZE9wMTZPcDE2KE9QX0JfVDRhLCBPUF9CX1Q0Yik7CiAgICAgICAgIHJldHVybiBtX2Zvcm1h
dHRlci5sYWJlbCgpOwogICAgIH0KICAgICAKICAgICAvLyBPbmx5IGFsbG93ZWQgaW4gSVQgKGlm
IHRoZW4pIGJsb2NrIGlmIGxhc3QgaW5zdHJ1Y3Rpb24uCi0gICAgQXNzZW1ibGVyTGFiZWwgYmx4
KFJlZ2lzdGVySUQgcm0pCisgICAgQUxXQVlTX0lOTElORSBBc3NlbWJsZXJMYWJlbCBibHgoUmVn
aXN0ZXJJRCBybSkKICAgICB7CiAgICAgICAgIEFTU0VSVChybSAhPSBBUk1SZWdpc3RlcnM6OnBj
KTsKICAgICAgICAgbV9mb3JtYXR0ZXIub25lV29yZE9wOFJlZ1JlZzE0MyhPUF9CTFgsIHJtLCAo
UmVnaXN0ZXJJRCk4KTsKQEAgLTg0MCw3ICs4NDAsNyBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAg
Ly8gT25seSBhbGxvd2VkIGluIElUIChpZiB0aGVuKSBibG9jayBpZiBsYXN0IGluc3RydWN0aW9u
LgotICAgIEFzc2VtYmxlckxhYmVsIGJ4KFJlZ2lzdGVySUQgcm0pCisgICAgQUxXQVlTX0lOTElO
RSBBc3NlbWJsZXJMYWJlbCBieChSZWdpc3RlcklEIHJtKQogICAgIHsKICAgICAgICAgbV9mb3Jt
YXR0ZXIub25lV29yZE9wOFJlZ1JlZzE0MyhPUF9CWCwgcm0sIChSZWdpc3RlcklEKTApOwogICAg
ICAgICByZXR1cm4gbV9mb3JtYXR0ZXIubGFiZWwoKTsKQEAgLTg1MSwxNCArODUxLDE0IEBAIHB1
YmxpYzoKICAgICAgICAgbV9mb3JtYXR0ZXIub25lV29yZE9wOEltbTgoT1BfQktQVCwgaW1tKTsK
ICAgICB9CiAKLSAgICB2b2lkIGNseihSZWdpc3RlcklEIHJkLCBSZWdpc3RlcklEIHJtKQorICAg
IEFMV0FZU19JTkxJTkUgdm9pZCBjbHooUmVnaXN0ZXJJRCByZCwgUmVnaXN0ZXJJRCBybSkKICAg
ICB7CiAgICAgICAgIEFTU0VSVCghQmFkUmVnKHJkKSk7CiAgICAgICAgIEFTU0VSVCghQmFkUmVn
KHJtKSk7CiAgICAgICAgIG1fZm9ybWF0dGVyLnR3b1dvcmRPcDEyUmVnNEZvdXJGb3VycyhPUF9D
TFosIHJtLCBGb3VyRm91cnMoMHhmLCByZCwgOCwgcm0pKTsKICAgICB9CiAKLSAgICB2b2lkIGNt
bihSZWdpc3RlcklEIHJuLCBBUk1UaHVtYkltbWVkaWF0ZSBpbW0pCisgICAgQUxXQVlTX0lOTElO
RSB2b2lkIGNtbihSZWdpc3RlcklEIHJuLCBBUk1UaHVtYkltbWVkaWF0ZSBpbW0pCiAgICAgewog
ICAgICAgICBBU1NFUlQocm4gIT0gQVJNUmVnaXN0ZXJzOjpwYyk7CiAgICAgICAgIEFTU0VSVChp
bW0uaXNFbmNvZGVkSW1tKCkpOwpAQCAtODY2LDcgKzg2Niw3IEBAIHB1YmxpYzoKICAgICAgICAg
bV9mb3JtYXR0ZXIudHdvV29yZE9wNWk2SW1tNFJlZzRFbmNvZGVkSW1tKE9QX0NNTl9pbW0sIHJu
LCAoUmVnaXN0ZXJJRCkweGYsIGltbSk7CiAgICAgfQogCi0gICAgdm9pZCBjbXAoUmVnaXN0ZXJJ
RCBybiwgQVJNVGh1bWJJbW1lZGlhdGUgaW1tKQorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBjbXAo
UmVnaXN0ZXJJRCBybiwgQVJNVGh1bWJJbW1lZGlhdGUgaW1tKQogICAgIHsKICAgICAgICAgQVNT
RVJUKHJuICE9IEFSTVJlZ2lzdGVyczo6cGMpOwogICAgICAgICBBU1NFUlQoaW1tLmlzRW5jb2Rl
ZEltbSgpKTsKQEAgLTg3NywxNCArODc3LDE0IEBAIHB1YmxpYzoKICAgICAgICAgICAgIG1fZm9y
bWF0dGVyLnR3b1dvcmRPcDVpNkltbTRSZWc0RW5jb2RlZEltbShPUF9DTVBfaW1tX1QyLCBybiwg
KFJlZ2lzdGVySUQpMHhmLCBpbW0pOwogICAgIH0KIAotICAgIHZvaWQgY21wKFJlZ2lzdGVySUQg
cm4sIFJlZ2lzdGVySUQgcm0sIFNoaWZ0VHlwZUFuZEFtb3VudCBzaGlmdCkKKyAgICBBTFdBWVNf
SU5MSU5FIHZvaWQgY21wKFJlZ2lzdGVySUQgcm4sIFJlZ2lzdGVySUQgcm0sIFNoaWZ0VHlwZUFu
ZEFtb3VudCBzaGlmdCkKICAgICB7CiAgICAgICAgIEFTU0VSVChybiAhPSBBUk1SZWdpc3RlcnM6
OnBjKTsKICAgICAgICAgQVNTRVJUKCFCYWRSZWcocm0pKTsKICAgICAgICAgbV9mb3JtYXR0ZXIu
dHdvV29yZE9wMTJSZWc0Rm91ckZvdXJzKE9QX0NNUF9yZWdfVDIsIHJuLCBGb3VyRm91cnMoc2hp
ZnQuaGk0KCksIDB4Ziwgc2hpZnQubG80KCksIHJtKSk7CiAgICAgfQogCi0gICAgdm9pZCBjbXAo
UmVnaXN0ZXJJRCBybiwgUmVnaXN0ZXJJRCBybSkKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgY21w
KFJlZ2lzdGVySUQgcm4sIFJlZ2lzdGVySUQgcm0pCiAgICAgewogICAgICAgICBpZiAoKHJuIHwg
cm0pICYgOCkKICAgICAgICAgICAgIGNtcChybiwgcm0sIFNoaWZ0VHlwZUFuZEFtb3VudCgpKTsK
QEAgLTg5Myw3ICs4OTMsNyBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAgLy8geG9yIGlzIG5vdCBz
cGVsbGVkIHdpdGggYW4gJ2UnLiA6LSgKLSAgICB2b2lkIGVvcihSZWdpc3RlcklEIHJkLCBSZWdp
c3RlcklEIHJuLCBBUk1UaHVtYkltbWVkaWF0ZSBpbW0pCisgICAgQUxXQVlTX0lOTElORSB2b2lk
IGVvcihSZWdpc3RlcklEIHJkLCBSZWdpc3RlcklEIHJuLCBBUk1UaHVtYkltbWVkaWF0ZSBpbW0p
CiAgICAgewogICAgICAgICBBU1NFUlQoIUJhZFJlZyhyZCkpOwogICAgICAgICBBU1NFUlQoIUJh
ZFJlZyhybikpOwpAQCAtOTAyLDcgKzkwMiw3IEBAIHB1YmxpYzoKICAgICB9CiAKICAgICAvLyB4
b3IgaXMgbm90IHNwZWxsZWQgd2l0aCBhbiAnZScuIDotKAotICAgIHZvaWQgZW9yKFJlZ2lzdGVy
SUQgcmQsIFJlZ2lzdGVySUQgcm4sIFJlZ2lzdGVySUQgcm0sIFNoaWZ0VHlwZUFuZEFtb3VudCBz
aGlmdCkKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgZW9yKFJlZ2lzdGVySUQgcmQsIFJlZ2lzdGVy
SUQgcm4sIFJlZ2lzdGVySUQgcm0sIFNoaWZ0VHlwZUFuZEFtb3VudCBzaGlmdCkKICAgICB7CiAg
ICAgICAgIEFTU0VSVCghQmFkUmVnKHJkKSk7CiAgICAgICAgIEFTU0VSVCghQmFkUmVnKHJuKSk7
CkBAIC05MjEsMjggKzkyMSwyOCBAQCBwdWJsaWM6CiAgICAgICAgICAgICBlb3IocmQsIHJuLCBy
bSwgU2hpZnRUeXBlQW5kQW1vdW50KCkpOwogICAgIH0KIAotICAgIHZvaWQgaXQoQ29uZGl0aW9u
IGNvbmQpCisgICAgQUxXQVlTX0lOTElORSB2b2lkIGl0KENvbmRpdGlvbiBjb25kKQogICAgIHsK
ICAgICAgICAgbV9mb3JtYXR0ZXIub25lV29yZE9wOEltbTgoT1BfSVQsIGlmVGhlbkVsc2UoY29u
ZCkpOwogICAgIH0KIAotICAgIHZvaWQgaXQoQ29uZGl0aW9uIGNvbmQsIGJvb2wgaW5zdDJpZikK
KyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgaXQoQ29uZGl0aW9uIGNvbmQsIGJvb2wgaW5zdDJpZikK
ICAgICB7CiAgICAgICAgIG1fZm9ybWF0dGVyLm9uZVdvcmRPcDhJbW04KE9QX0lULCBpZlRoZW5F
bHNlKGNvbmQsIGluc3QyaWYpKTsKICAgICB9CiAKLSAgICB2b2lkIGl0KENvbmRpdGlvbiBjb25k
LCBib29sIGluc3QyaWYsIGJvb2wgaW5zdDNpZikKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgaXQo
Q29uZGl0aW9uIGNvbmQsIGJvb2wgaW5zdDJpZiwgYm9vbCBpbnN0M2lmKQogICAgIHsKICAgICAg
ICAgbV9mb3JtYXR0ZXIub25lV29yZE9wOEltbTgoT1BfSVQsIGlmVGhlbkVsc2UoY29uZCwgaW5z
dDJpZiwgaW5zdDNpZikpOwogICAgIH0KIAotICAgIHZvaWQgaXQoQ29uZGl0aW9uIGNvbmQsIGJv
b2wgaW5zdDJpZiwgYm9vbCBpbnN0M2lmLCBib29sIGluc3Q0aWYpCisgICAgQUxXQVlTX0lOTElO
RSB2b2lkIGl0KENvbmRpdGlvbiBjb25kLCBib29sIGluc3QyaWYsIGJvb2wgaW5zdDNpZiwgYm9v
bCBpbnN0NGlmKQogICAgIHsKICAgICAgICAgbV9mb3JtYXR0ZXIub25lV29yZE9wOEltbTgoT1Bf
SVQsIGlmVGhlbkVsc2UoY29uZCwgaW5zdDJpZiwgaW5zdDNpZiwgaW5zdDRpZikpOwogICAgIH0K
IAogICAgIC8vIHJ0ID09IEFSTVJlZ2lzdGVyczo6cGMgb25seSBhbGxvd2VkIGlmIGxhc3QgaW5z
dHJ1Y3Rpb24gaW4gSVQgKGlmIHRoZW4pIGJsb2NrLgotICAgIHZvaWQgbGRyKFJlZ2lzdGVySUQg
cnQsIFJlZ2lzdGVySUQgcm4sIEFSTVRodW1iSW1tZWRpYXRlIGltbSkKKyAgICBBTFdBWVNfSU5M
SU5FIHZvaWQgbGRyKFJlZ2lzdGVySUQgcnQsIFJlZ2lzdGVySUQgcm4sIEFSTVRodW1iSW1tZWRp
YXRlIGltbSkKICAgICB7CiAgICAgICAgIEFTU0VSVChybiAhPSBBUk1SZWdpc3RlcnM6OnBjKTsg
Ly8gTERSIChsaXRlcmFsKQogICAgICAgICBBU1NFUlQoaW1tLmlzVUludDEyKCkpOwpAQCAtOTU1
LDcgKzk1NSw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIG1fZm9ybWF0dGVyLnR3b1dvcmRPcDEy
UmVnNFJlZzRJbW0xMihPUF9MRFJfaW1tX1QzLCBybiwgcnQsIGltbS5nZXRVSW50MTIoKSk7CiAg
ICAgfQogCi0gICAgdm9pZCBsZHJDb21wYWN0KFJlZ2lzdGVySUQgcnQsIFJlZ2lzdGVySUQgcm4s
IEFSTVRodW1iSW1tZWRpYXRlIGltbSkKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgbGRyQ29tcGFj
dChSZWdpc3RlcklEIHJ0LCBSZWdpc3RlcklEIHJuLCBBUk1UaHVtYkltbWVkaWF0ZSBpbW0pCiAg
ICAgewogICAgICAgICBBU1NFUlQocm4gIT0gQVJNUmVnaXN0ZXJzOjpwYyk7IC8vIExEUiAobGl0
ZXJhbCkKICAgICAgICAgQVNTRVJUKGltbS5pc1VJbnQ3KCkpOwpAQCAtOTc0LDcgKzk3NCw3IEBA
IHB1YmxpYzoKICAgICAvLyBfdG1wID0gX3JlZyArIG9mZnNldAogICAgIC8vIE1FTVtpbmRleCA/
IF90bXAgOiBfcmVnXSA9IFJFR1tydF0KICAgICAvLyBpZiAod2JhY2spIFJFR1tybl0gPSBfdG1w
Ci0gICAgdm9pZCBsZHIoUmVnaXN0ZXJJRCBydCwgUmVnaXN0ZXJJRCBybiwgaW50IG9mZnNldCwg
Ym9vbCBpbmRleCwgYm9vbCB3YmFjaykKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgbGRyKFJlZ2lz
dGVySUQgcnQsIFJlZ2lzdGVySUQgcm4sIGludCBvZmZzZXQsIGJvb2wgaW5kZXgsIGJvb2wgd2Jh
Y2spCiAgICAgewogICAgICAgICBBU1NFUlQocnQgIT0gQVJNUmVnaXN0ZXJzOjpwYyk7CiAgICAg
ICAgIEFTU0VSVChybiAhPSBBUk1SZWdpc3RlcnM6OnBjKTsKQEAgLTk5Nyw3ICs5OTcsNyBAQCBw
dWJsaWM6CiAgICAgfQogCiAgICAgLy8gcnQgPT0gQVJNUmVnaXN0ZXJzOjpwYyBvbmx5IGFsbG93
ZWQgaWYgbGFzdCBpbnN0cnVjdGlvbiBpbiBJVCAoaWYgdGhlbikgYmxvY2suCi0gICAgdm9pZCBs
ZHIoUmVnaXN0ZXJJRCBydCwgUmVnaXN0ZXJJRCBybiwgUmVnaXN0ZXJJRCBybSwgdW5zaWduZWQg
c2hpZnQ9MCkKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgbGRyKFJlZ2lzdGVySUQgcnQsIFJlZ2lz
dGVySUQgcm4sIFJlZ2lzdGVySUQgcm0sIHVuc2lnbmVkIHNoaWZ0ID0gMCkKICAgICB7CiAgICAg
ICAgIEFTU0VSVChybiAhPSBBUk1SZWdpc3RlcnM6OnBjKTsgLy8gTERSIChsaXRlcmFsKQogICAg
ICAgICBBU1NFUlQoIUJhZFJlZyhybSkpOwpAQCAtMTAxMCw3ICsxMDEwLDcgQEAgcHVibGljOgog
ICAgIH0KIAogICAgIC8vIHJ0ID09IEFSTVJlZ2lzdGVyczo6cGMgb25seSBhbGxvd2VkIGlmIGxh
c3QgaW5zdHJ1Y3Rpb24gaW4gSVQgKGlmIHRoZW4pIGJsb2NrLgotICAgIHZvaWQgbGRyaChSZWdp
c3RlcklEIHJ0LCBSZWdpc3RlcklEIHJuLCBBUk1UaHVtYkltbWVkaWF0ZSBpbW0pCisgICAgQUxX
QVlTX0lOTElORSB2b2lkIGxkcmgoUmVnaXN0ZXJJRCBydCwgUmVnaXN0ZXJJRCBybiwgQVJNVGh1
bWJJbW1lZGlhdGUgaW1tKQogICAgIHsKICAgICAgICAgQVNTRVJUKHJuICE9IEFSTVJlZ2lzdGVy
czo6cGMpOyAvLyBMRFIgKGxpdGVyYWwpCiAgICAgICAgIEFTU0VSVChpbW0uaXNVSW50MTIoKSk7
CkBAIC0xMDMyLDcgKzEwMzIsNyBAQCBwdWJsaWM6CiAgICAgLy8gX3RtcCA9IF9yZWcgKyBvZmZz
ZXQKICAgICAvLyBNRU1baW5kZXggPyBfdG1wIDogX3JlZ10gPSBSRUdbcnRdCiAgICAgLy8gaWYg
KHdiYWNrKSBSRUdbcm5dID0gX3RtcAotICAgIHZvaWQgbGRyaChSZWdpc3RlcklEIHJ0LCBSZWdp
c3RlcklEIHJuLCBpbnQgb2Zmc2V0LCBib29sIGluZGV4LCBib29sIHdiYWNrKQorICAgIEFMV0FZ
U19JTkxJTkUgdm9pZCBsZHJoKFJlZ2lzdGVySUQgcnQsIFJlZ2lzdGVySUQgcm4sIGludCBvZmZz
ZXQsIGJvb2wgaW5kZXgsIGJvb2wgd2JhY2spCiAgICAgewogICAgICAgICBBU1NFUlQocnQgIT0g
QVJNUmVnaXN0ZXJzOjpwYyk7CiAgICAgICAgIEFTU0VSVChybiAhPSBBUk1SZWdpc3RlcnM6OnBj
KTsKQEAgLTEwNTQsNyArMTA1NCw3IEBAIHB1YmxpYzoKICAgICAgICAgbV9mb3JtYXR0ZXIudHdv
V29yZE9wMTJSZWc0UmVnNEltbTEyKE9QX0xEUkhfaW1tX1QzLCBybiwgcnQsIG9mZnNldCk7CiAg
ICAgfQogCi0gICAgdm9pZCBsZHJoKFJlZ2lzdGVySUQgcnQsIFJlZ2lzdGVySUQgcm4sIFJlZ2lz
dGVySUQgcm0sIHVuc2lnbmVkIHNoaWZ0PTApCisgICAgQUxXQVlTX0lOTElORSB2b2lkIGxkcmgo
UmVnaXN0ZXJJRCBydCwgUmVnaXN0ZXJJRCBybiwgUmVnaXN0ZXJJRCBybSwgdW5zaWduZWQgc2hp
ZnQgPSAwKQogICAgIHsKICAgICAgICAgQVNTRVJUKCFCYWRSZWcocnQpKTsgICAvLyBNZW1vcnkg
aGludAogICAgICAgICBBU1NFUlQocm4gIT0gQVJNUmVnaXN0ZXJzOjpwYyk7IC8vIExEUkggKGxp
dGVyYWwpCkBAIC0xMTAxLDcgKzExMDEsNyBAQCBwdWJsaWM6CiAgICAgICAgIG1fZm9ybWF0dGVy
LnR3b1dvcmRPcDEyUmVnNFJlZzRJbW0xMihPUF9MRFJCX2ltbV9UMywgcm4sIHJ0LCBvZmZzZXQp
OwogICAgIH0KIAotICAgIHZvaWQgbGRyYihSZWdpc3RlcklEIHJ0LCBSZWdpc3RlcklEIHJuLCBS
ZWdpc3RlcklEIHJtLCB1bnNpZ25lZCBzaGlmdCA9IDApCisgICAgQUxXQVlTX0lOTElORSB2b2lk
IGxkcmIoUmVnaXN0ZXJJRCBydCwgUmVnaXN0ZXJJRCBybiwgUmVnaXN0ZXJJRCBybSwgdW5zaWdu
ZWQgc2hpZnQgPSAwKQogICAgIHsKICAgICAgICAgQVNTRVJUKHJuICE9IEFSTVJlZ2lzdGVyczo6
cGMpOyAvLyBMRFIgKGxpdGVyYWwpCiAgICAgICAgIEFTU0VSVCghQmFkUmVnKHJtKSk7CkBAIC0x
MTIxLDcgKzExMjEsNyBAQCBwdWJsaWM6CiAgICAgICAgIG1fZm9ybWF0dGVyLnR3b1dvcmRPcDE2
Rm91ckZvdXJzKE9QX0xTTF9pbW1fVDEsIEZvdXJGb3VycyhzaGlmdC5oaTQoKSwgcmQsIHNoaWZ0
LmxvNCgpLCBybSkpOwogICAgIH0KIAotICAgIHZvaWQgbHNsKFJlZ2lzdGVySUQgcmQsIFJlZ2lz
dGVySUQgcm4sIFJlZ2lzdGVySUQgcm0pCisgICAgQUxXQVlTX0lOTElORSB2b2lkIGxzbChSZWdp
c3RlcklEIHJkLCBSZWdpc3RlcklEIHJuLCBSZWdpc3RlcklEIHJtKQogICAgIHsKICAgICAgICAg
QVNTRVJUKCFCYWRSZWcocmQpKTsKICAgICAgICAgQVNTRVJUKCFCYWRSZWcocm4pKTsKQEAgLTEx
MjksNyArMTEyOSw3IEBAIHB1YmxpYzoKICAgICAgICAgbV9mb3JtYXR0ZXIudHdvV29yZE9wMTJS
ZWc0Rm91ckZvdXJzKE9QX0xTTF9yZWdfVDIsIHJuLCBGb3VyRm91cnMoMHhmLCByZCwgMCwgcm0p
KTsKICAgICB9CiAKLSAgICB2b2lkIGxzcihSZWdpc3RlcklEIHJkLCBSZWdpc3RlcklEIHJtLCBp
bnQzMl90IHNoaWZ0QW1vdW50KQorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBsc3IoUmVnaXN0ZXJJ
RCByZCwgUmVnaXN0ZXJJRCBybSwgaW50MzJfdCBzaGlmdEFtb3VudCkKICAgICB7CiAgICAgICAg
IEFTU0VSVCghQmFkUmVnKHJkKSk7CiAgICAgICAgIEFTU0VSVCghQmFkUmVnKHJtKSk7CkBAIC0x
MTM3LDcgKzExMzcsNyBAQCBwdWJsaWM6CiAgICAgICAgIG1fZm9ybWF0dGVyLnR3b1dvcmRPcDE2
Rm91ckZvdXJzKE9QX0xTUl9pbW1fVDEsIEZvdXJGb3VycyhzaGlmdC5oaTQoKSwgcmQsIHNoaWZ0
LmxvNCgpLCBybSkpOwogICAgIH0KIAotICAgIHZvaWQgbHNyKFJlZ2lzdGVySUQgcmQsIFJlZ2lz
dGVySUQgcm4sIFJlZ2lzdGVySUQgcm0pCisgICAgQUxXQVlTX0lOTElORSB2b2lkIGxzcihSZWdp
c3RlcklEIHJkLCBSZWdpc3RlcklEIHJuLCBSZWdpc3RlcklEIHJtKQogICAgIHsKICAgICAgICAg
QVNTRVJUKCFCYWRSZWcocmQpKTsKICAgICAgICAgQVNTRVJUKCFCYWRSZWcocm4pKTsKQEAgLTEx
NDUsNyArMTE0NSw3IEBAIHB1YmxpYzoKICAgICAgICAgbV9mb3JtYXR0ZXIudHdvV29yZE9wMTJS
ZWc0Rm91ckZvdXJzKE9QX0xTUl9yZWdfVDIsIHJuLCBGb3VyRm91cnMoMHhmLCByZCwgMCwgcm0p
KTsKICAgICB9CiAKLSAgICB2b2lkIG1vdlQzKFJlZ2lzdGVySUQgcmQsIEFSTVRodW1iSW1tZWRp
YXRlIGltbSkKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgbW92VDMoUmVnaXN0ZXJJRCByZCwgQVJN
VGh1bWJJbW1lZGlhdGUgaW1tKQogICAgIHsKICAgICAgICAgQVNTRVJUKGltbS5pc1ZhbGlkKCkp
OwogICAgICAgICBBU1NFUlQoIWltbS5pc0VuY29kZWRJbW0oKSk7CkBAIC0xMTU0LDcgKzExNTQs
NyBAQCBwdWJsaWM6CiAgICAgICAgIG1fZm9ybWF0dGVyLnR3b1dvcmRPcDVpNkltbTRSZWc0RW5j
b2RlZEltbShPUF9NT1ZfaW1tX1QzLCBpbW0ubV92YWx1ZS5pbW00LCByZCwgaW1tKTsKICAgICB9
CiAKLSAgICAgdm9pZCBtb3YoUmVnaXN0ZXJJRCByZCwgQVJNVGh1bWJJbW1lZGlhdGUgaW1tKQor
ICAgIEFMV0FZU19JTkxJTkUgdm9pZCBtb3YoUmVnaXN0ZXJJRCByZCwgQVJNVGh1bWJJbW1lZGlh
dGUgaW1tKQogICAgIHsKICAgICAgICAgQVNTRVJUKGltbS5pc1ZhbGlkKCkpOwogICAgICAgICBB
U1NFUlQoIUJhZFJlZyhyZCkpOwpAQCAtMTE2NywxOSArMTE2NywxOSBAQCBwdWJsaWM6CiAgICAg
ICAgICAgICBtb3ZUMyhyZCwgaW1tKTsKICAgICB9CiAKLSAgIHZvaWQgbW92KFJlZ2lzdGVySUQg
cmQsIFJlZ2lzdGVySUQgcm0pCisgICAgQUxXQVlTX0lOTElORSB2b2lkIG1vdihSZWdpc3RlcklE
IHJkLCBSZWdpc3RlcklEIHJtKQogICAgIHsKICAgICAgICAgbV9mb3JtYXR0ZXIub25lV29yZE9w
OFJlZ1JlZzE0MyhPUF9NT1ZfcmVnX1QxLCBybSwgcmQpOwogICAgIH0KIAotICAgIHZvaWQgbW92
dChSZWdpc3RlcklEIHJkLCBBUk1UaHVtYkltbWVkaWF0ZSBpbW0pCisgICAgQUxXQVlTX0lOTElO
RSB2b2lkIG1vdnQoUmVnaXN0ZXJJRCByZCwgQVJNVGh1bWJJbW1lZGlhdGUgaW1tKQogICAgIHsK
ICAgICAgICAgQVNTRVJUKGltbS5pc1VJbnQxNigpKTsKICAgICAgICAgQVNTRVJUKCFCYWRSZWco
cmQpKTsKICAgICAgICAgbV9mb3JtYXR0ZXIudHdvV29yZE9wNWk2SW1tNFJlZzRFbmNvZGVkSW1t
KE9QX01PVlQsIGltbS5tX3ZhbHVlLmltbTQsIHJkLCBpbW0pOwogICAgIH0KIAotICAgIHZvaWQg
bXZuKFJlZ2lzdGVySUQgcmQsIEFSTVRodW1iSW1tZWRpYXRlIGltbSkKKyAgICBBTFdBWVNfSU5M
SU5FIHZvaWQgbXZuKFJlZ2lzdGVySUQgcmQsIEFSTVRodW1iSW1tZWRpYXRlIGltbSkKICAgICB7
CiAgICAgICAgIEFTU0VSVChpbW0uaXNFbmNvZGVkSW1tKCkpOwogICAgICAgICBBU1NFUlQoIUJh
ZFJlZyhyZCkpOwpAQCAtMTE4NywxNCArMTE4NywxNCBAQCBwdWJsaWM6CiAgICAgICAgIG1fZm9y
bWF0dGVyLnR3b1dvcmRPcDVpNkltbTRSZWc0RW5jb2RlZEltbShPUF9NVk5faW1tLCAweGYsIHJk
LCBpbW0pOwogICAgIH0KIAotICAgIHZvaWQgbXZuKFJlZ2lzdGVySUQgcmQsIFJlZ2lzdGVySUQg
cm0sIFNoaWZ0VHlwZUFuZEFtb3VudCBzaGlmdCkKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgbXZu
KFJlZ2lzdGVySUQgcmQsIFJlZ2lzdGVySUQgcm0sIFNoaWZ0VHlwZUFuZEFtb3VudCBzaGlmdCkK
ICAgICB7CiAgICAgICAgIEFTU0VSVCghQmFkUmVnKHJkKSk7CiAgICAgICAgIEFTU0VSVCghQmFk
UmVnKHJtKSk7CiAgICAgICAgIG1fZm9ybWF0dGVyLnR3b1dvcmRPcDE2Rm91ckZvdXJzKE9QX01W
Tl9yZWdfVDIsIEZvdXJGb3VycyhzaGlmdC5oaTQoKSwgcmQsIHNoaWZ0LmxvNCgpLCBybSkpOwog
ICAgIH0KIAotICAgIHZvaWQgbXZuKFJlZ2lzdGVySUQgcmQsIFJlZ2lzdGVySUQgcm0pCisgICAg
QUxXQVlTX0lOTElORSB2b2lkIG12bihSZWdpc3RlcklEIHJkLCBSZWdpc3RlcklEIHJtKQogICAg
IHsKICAgICAgICAgaWYgKCEoKHJkIHwgcm0pICYgOCkpCiAgICAgICAgICAgICBtX2Zvcm1hdHRl
ci5vbmVXb3JkT3AxMFJlZzNSZWczKE9QX01WTl9yZWdfVDEsIHJtLCByZCk7CkBAIC0xMjAyLDEz
ICsxMjAyLDEzIEBAIHB1YmxpYzoKICAgICAgICAgICAgIG12bihyZCwgcm0sIFNoaWZ0VHlwZUFu
ZEFtb3VudCgpKTsKICAgICB9CiAKLSAgICB2b2lkIG5lZyhSZWdpc3RlcklEIHJkLCBSZWdpc3Rl
cklEIHJtKQorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBuZWcoUmVnaXN0ZXJJRCByZCwgUmVnaXN0
ZXJJRCBybSkKICAgICB7CiAgICAgICAgIEFSTVRodW1iSW1tZWRpYXRlIHplcm8gPSBBUk1UaHVt
YkltbWVkaWF0ZTo6bWFrZVVJbnQxMigwKTsKICAgICAgICAgc3ViKHJkLCB6ZXJvLCBybSk7CiAg
ICAgfQogCi0gICAgdm9pZCBvcnIoUmVnaXN0ZXJJRCByZCwgUmVnaXN0ZXJJRCBybiwgQVJNVGh1
bWJJbW1lZGlhdGUgaW1tKQorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBvcnIoUmVnaXN0ZXJJRCBy
ZCwgUmVnaXN0ZXJJRCBybiwgQVJNVGh1bWJJbW1lZGlhdGUgaW1tKQogICAgIHsKICAgICAgICAg
QVNTRVJUKCFCYWRSZWcocmQpKTsKICAgICAgICAgQVNTRVJUKCFCYWRSZWcocm4pKTsKQEAgLTEy
MTYsNyArMTIxNiw3IEBAIHB1YmxpYzoKICAgICAgICAgbV9mb3JtYXR0ZXIudHdvV29yZE9wNWk2
SW1tNFJlZzRFbmNvZGVkSW1tKE9QX09SUl9pbW1fVDEsIHJuLCByZCwgaW1tKTsKICAgICB9CiAK
LSAgICB2b2lkIG9ycihSZWdpc3RlcklEIHJkLCBSZWdpc3RlcklEIHJuLCBSZWdpc3RlcklEIHJt
LCBTaGlmdFR5cGVBbmRBbW91bnQgc2hpZnQpCisgICAgQUxXQVlTX0lOTElORSB2b2lkIG9ycihS
ZWdpc3RlcklEIHJkLCBSZWdpc3RlcklEIHJuLCBSZWdpc3RlcklEIHJtLCBTaGlmdFR5cGVBbmRB
bW91bnQgc2hpZnQpCiAgICAgewogICAgICAgICBBU1NFUlQoIUJhZFJlZyhyZCkpOwogICAgICAg
ICBBU1NFUlQoIUJhZFJlZyhybikpOwpAQCAtMTIzNCw3ICsxMjM0LDcgQEAgcHVibGljOgogICAg
ICAgICAgICAgb3JyKHJkLCBybiwgcm0sIFNoaWZ0VHlwZUFuZEFtb3VudCgpKTsKICAgICB9CiAK
LSAgICB2b2lkIG9ycl9TKFJlZ2lzdGVySUQgcmQsIFJlZ2lzdGVySUQgcm4sIFJlZ2lzdGVySUQg
cm0sIFNoaWZ0VHlwZUFuZEFtb3VudCBzaGlmdCkKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgb3Jy
X1MoUmVnaXN0ZXJJRCByZCwgUmVnaXN0ZXJJRCBybiwgUmVnaXN0ZXJJRCBybSwgU2hpZnRUeXBl
QW5kQW1vdW50IHNoaWZ0KQogICAgIHsKICAgICAgICAgQVNTRVJUKCFCYWRSZWcocmQpKTsKICAg
ICAgICAgQVNTRVJUKCFCYWRSZWcocm4pKTsKQEAgLTEyNTIsNyArMTI1Miw3IEBAIHB1YmxpYzoK
ICAgICAgICAgICAgIG9ycl9TKHJkLCBybiwgcm0sIFNoaWZ0VHlwZUFuZEFtb3VudCgpKTsKICAg
ICB9CiAKLSAgICB2b2lkIHJvcihSZWdpc3RlcklEIHJkLCBSZWdpc3RlcklEIHJtLCBpbnQzMl90
IHNoaWZ0QW1vdW50KQorICAgIEFMV0FZU19JTkxJTkUgdm9pZCByb3IoUmVnaXN0ZXJJRCByZCwg
UmVnaXN0ZXJJRCBybSwgaW50MzJfdCBzaGlmdEFtb3VudCkKICAgICB7CiAgICAgICAgIEFTU0VS
VCghQmFkUmVnKHJkKSk7CiAgICAgICAgIEFTU0VSVCghQmFkUmVnKHJtKSk7CkBAIC0xMjYwLDcg
KzEyNjAsNyBAQCBwdWJsaWM6CiAgICAgICAgIG1fZm9ybWF0dGVyLnR3b1dvcmRPcDE2Rm91ckZv
dXJzKE9QX1JPUl9pbW1fVDEsIEZvdXJGb3VycyhzaGlmdC5oaTQoKSwgcmQsIHNoaWZ0LmxvNCgp
LCBybSkpOwogICAgIH0KIAotICAgIHZvaWQgcm9yKFJlZ2lzdGVySUQgcmQsIFJlZ2lzdGVySUQg
cm4sIFJlZ2lzdGVySUQgcm0pCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHJvcihSZWdpc3RlcklE
IHJkLCBSZWdpc3RlcklEIHJuLCBSZWdpc3RlcklEIHJtKQogICAgIHsKICAgICAgICAgQVNTRVJU
KCFCYWRSZWcocmQpKTsKICAgICAgICAgQVNTRVJUKCFCYWRSZWcocm4pKTsKQEAgLTEyNjgsNyAr
MTI2OCw3IEBAIHB1YmxpYzoKICAgICAgICAgbV9mb3JtYXR0ZXIudHdvV29yZE9wMTJSZWc0Rm91
ckZvdXJzKE9QX1JPUl9yZWdfVDIsIHJuLCBGb3VyRm91cnMoMHhmLCByZCwgMCwgcm0pKTsKICAg
ICB9CiAKLSAgICB2b2lkIHNtdWxsKFJlZ2lzdGVySUQgcmRMbywgUmVnaXN0ZXJJRCByZEhpLCBS
ZWdpc3RlcklEIHJuLCBSZWdpc3RlcklEIHJtKQorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzbXVs
bChSZWdpc3RlcklEIHJkTG8sIFJlZ2lzdGVySUQgcmRIaSwgUmVnaXN0ZXJJRCBybiwgUmVnaXN0
ZXJJRCBybSkKICAgICB7CiAgICAgICAgIEFTU0VSVCghQmFkUmVnKHJkTG8pKTsKICAgICAgICAg
QVNTRVJUKCFCYWRSZWcocmRIaSkpOwpAQCAtMTI3OSw3ICsxMjc5LDcgQEAgcHVibGljOgogICAg
IH0KIAogICAgIC8vIHJ0ID09IEFSTVJlZ2lzdGVyczo6cGMgb25seSBhbGxvd2VkIGlmIGxhc3Qg
aW5zdHJ1Y3Rpb24gaW4gSVQgKGlmIHRoZW4pIGJsb2NrLgotICAgIHZvaWQgc3RyKFJlZ2lzdGVy
SUQgcnQsIFJlZ2lzdGVySUQgcm4sIEFSTVRodW1iSW1tZWRpYXRlIGltbSkKKyAgICBBTFdBWVNf
SU5MSU5FIHZvaWQgc3RyKFJlZ2lzdGVySUQgcnQsIFJlZ2lzdGVySUQgcm4sIEFSTVRodW1iSW1t
ZWRpYXRlIGltbSkKICAgICB7CiAgICAgICAgIEFTU0VSVChydCAhPSBBUk1SZWdpc3RlcnM6OnBj
KTsKICAgICAgICAgQVNTRVJUKHJuICE9IEFSTVJlZ2lzdGVyczo6cGMpOwpAQCAtMTMwNCw3ICsx
MzA0LDcgQEAgcHVibGljOgogICAgIC8vIF90bXAgPSBfcmVnICsgb2Zmc2V0CiAgICAgLy8gTUVN
W2luZGV4ID8gX3RtcCA6IF9yZWddID0gUkVHW3J0XQogICAgIC8vIGlmICh3YmFjaykgUkVHW3Ju
XSA9IF90bXAKLSAgICB2b2lkIHN0cihSZWdpc3RlcklEIHJ0LCBSZWdpc3RlcklEIHJuLCBpbnQg
b2Zmc2V0LCBib29sIGluZGV4LCBib29sIHdiYWNrKQorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBz
dHIoUmVnaXN0ZXJJRCBydCwgUmVnaXN0ZXJJRCBybiwgaW50IG9mZnNldCwgYm9vbCBpbmRleCwg
Ym9vbCB3YmFjaykKICAgICB7CiAgICAgICAgIEFTU0VSVChydCAhPSBBUk1SZWdpc3RlcnM6OnBj
KTsKICAgICAgICAgQVNTRVJUKHJuICE9IEFSTVJlZ2lzdGVyczo6cGMpOwpAQCAtMTMyNyw3ICsx
MzI3LDcgQEAgcHVibGljOgogICAgIH0KIAogICAgIC8vIHJ0ID09IEFSTVJlZ2lzdGVyczo6cGMg
b25seSBhbGxvd2VkIGlmIGxhc3QgaW5zdHJ1Y3Rpb24gaW4gSVQgKGlmIHRoZW4pIGJsb2NrLgot
ICAgIHZvaWQgc3RyKFJlZ2lzdGVySUQgcnQsIFJlZ2lzdGVySUQgcm4sIFJlZ2lzdGVySUQgcm0s
IHVuc2lnbmVkIHNoaWZ0PTApCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHN0cihSZWdpc3RlcklE
IHJ0LCBSZWdpc3RlcklEIHJuLCBSZWdpc3RlcklEIHJtLCB1bnNpZ25lZCBzaGlmdCA9IDApCiAg
ICAgewogICAgICAgICBBU1NFUlQocm4gIT0gQVJNUmVnaXN0ZXJzOjpwYyk7CiAgICAgICAgIEFT
U0VSVCghQmFkUmVnKHJtKSk7CkBAIC0xMzM5LDcgKzEzMzksNyBAQCBwdWJsaWM6CiAgICAgICAg
ICAgICBtX2Zvcm1hdHRlci50d29Xb3JkT3AxMlJlZzRGb3VyRm91cnMoT1BfU1RSX3JlZ19UMiwg
cm4sIEZvdXJGb3VycyhydCwgMCwgc2hpZnQsIHJtKSk7CiAgICAgfQogCi0gICAgdm9pZCBzdWIo
UmVnaXN0ZXJJRCByZCwgUmVnaXN0ZXJJRCBybiwgQVJNVGh1bWJJbW1lZGlhdGUgaW1tKQorICAg
IEFMV0FZU19JTkxJTkUgdm9pZCBzdWIoUmVnaXN0ZXJJRCByZCwgUmVnaXN0ZXJJRCBybiwgQVJN
VGh1bWJJbW1lZGlhdGUgaW1tKQogICAgIHsKICAgICAgICAgLy8gUmQgY2FuIG9ubHkgYmUgU1Ag
aWYgUm4gaXMgYWxzbyBTUC4KICAgICAgICAgQVNTRVJUKChyZCAhPSBBUk1SZWdpc3RlcnM6OnNw
KSB8fCAocm4gPT0gQVJNUmVnaXN0ZXJzOjpzcCkpOwpAQCAtMTM2OCw3ICsxMzY4LDcgQEAgcHVi
bGljOgogICAgICAgICB9CiAgICAgfQogCi0gICAgdm9pZCBzdWIoUmVnaXN0ZXJJRCByZCwgQVJN
VGh1bWJJbW1lZGlhdGUgaW1tLCBSZWdpc3RlcklEIHJuKQorICAgIEFMV0FZU19JTkxJTkUgdm9p
ZCBzdWIoUmVnaXN0ZXJJRCByZCwgQVJNVGh1bWJJbW1lZGlhdGUgaW1tLCBSZWdpc3RlcklEIHJu
KQogICAgIHsKICAgICAgICAgQVNTRVJUKHJkICE9IEFSTVJlZ2lzdGVyczo6cGMpOwogICAgICAg
ICBBU1NFUlQocm4gIT0gQVJNUmVnaXN0ZXJzOjpwYyk7CkBAIC0xMzgxLDcgKzEzODEsNyBAQCBw
dWJsaWM6CiAgICAgICAgICAgICBtX2Zvcm1hdHRlci50d29Xb3JkT3A1aTZJbW00UmVnNEVuY29k
ZWRJbW0oT1BfUlNCX2ltbV9UMiwgcm4sIHJkLCBpbW0pOwogICAgIH0KIAotICAgIHZvaWQgc3Vi
KFJlZ2lzdGVySUQgcmQsIFJlZ2lzdGVySUQgcm4sIFJlZ2lzdGVySUQgcm0sIFNoaWZ0VHlwZUFu
ZEFtb3VudCBzaGlmdCkKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc3ViKFJlZ2lzdGVySUQgcmQs
IFJlZ2lzdGVySUQgcm4sIFJlZ2lzdGVySUQgcm0sIFNoaWZ0VHlwZUFuZEFtb3VudCBzaGlmdCkK
ICAgICB7CiAgICAgICAgIEFTU0VSVCgocmQgIT0gQVJNUmVnaXN0ZXJzOjpzcCkgfHwgKHJuID09
IEFSTVJlZ2lzdGVyczo6c3ApKTsKICAgICAgICAgQVNTRVJUKHJkICE9IEFSTVJlZ2lzdGVyczo6
cGMpOwpAQCAtMTM5MSw3ICsxMzkxLDcgQEAgcHVibGljOgogICAgIH0KIAogICAgIC8vIE5PVEU6
IEluIGFuIElUIGJsb2NrLCBhZGQgZG9lc24ndCBtb2RpZnkgdGhlIGZsYWdzIHJlZ2lzdGVyLgot
ICAgIHZvaWQgc3ViKFJlZ2lzdGVySUQgcmQsIFJlZ2lzdGVySUQgcm4sIFJlZ2lzdGVySUQgcm0p
CisgICAgQUxXQVlTX0lOTElORSB2b2lkIHN1YihSZWdpc3RlcklEIHJkLCBSZWdpc3RlcklEIHJu
LCBSZWdpc3RlcklEIHJtKQogICAgIHsKICAgICAgICAgaWYgKCEoKHJkIHwgcm4gfCBybSkgJiA4
KSkKICAgICAgICAgICAgIG1fZm9ybWF0dGVyLm9uZVdvcmRPcDdSZWczUmVnM1JlZzMoT1BfU1VC
X3JlZ19UMSwgcm0sIHJuLCByZCk7CkBAIC0xNDI1LDcgKzE0MjUsNyBAQCBwdWJsaWM6CiAgICAg
fQogCiAgICAgLy8gTm90IGFsbG93ZWQgaW4gYW4gSVQgKGlmIHRoZW4pIGJsb2NrPwotICAgIHZv
aWQgc3ViX1MoUmVnaXN0ZXJJRCByZCwgUmVnaXN0ZXJJRCBybiwgUmVnaXN0ZXJJRCBybSwgU2hp
ZnRUeXBlQW5kQW1vdW50IHNoaWZ0KQorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzdWJfUyhSZWdp
c3RlcklEIHJkLCBSZWdpc3RlcklEIHJuLCBSZWdpc3RlcklEIHJtLCBTaGlmdFR5cGVBbmRBbW91
bnQgc2hpZnQpCiAgICAgewogICAgICAgICBBU1NFUlQoKHJkICE9IEFSTVJlZ2lzdGVyczo6c3Ap
IHx8IChybiA9PSBBUk1SZWdpc3RlcnM6OnNwKSk7CiAgICAgICAgIEFTU0VSVChyZCAhPSBBUk1S
ZWdpc3RlcnM6OnBjKTsKQEAgLTE0MzUsNyArMTQzNSw3IEBAIHB1YmxpYzoKICAgICB9CiAKICAg
ICAvLyBOb3QgYWxsb3dlZCBpbiBhbiBJVCAoaWYgdGhlbikgYmxvY2suCi0gICAgdm9pZCBzdWJf
UyhSZWdpc3RlcklEIHJkLCBSZWdpc3RlcklEIHJuLCBSZWdpc3RlcklEIHJtKQorICAgIEFMV0FZ
U19JTkxJTkUgdm9pZCBzdWJfUyhSZWdpc3RlcklEIHJkLCBSZWdpc3RlcklEIHJuLCBSZWdpc3Rl
cklEIHJtKQogICAgIHsKICAgICAgICAgaWYgKCEoKHJkIHwgcm4gfCBybSkgJiA4KSkKICAgICAg
ICAgICAgIG1fZm9ybWF0dGVyLm9uZVdvcmRPcDdSZWczUmVnM1JlZzMoT1BfU1VCX3JlZ19UMSwg
cm0sIHJuLCByZCk7CkBAIC0xNDQzLDcgKzE0NDMsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICBz
dWJfUyhyZCwgcm4sIHJtLCBTaGlmdFR5cGVBbmRBbW91bnQoKSk7CiAgICAgfQogCi0gICAgdm9p
ZCB0c3QoUmVnaXN0ZXJJRCBybiwgQVJNVGh1bWJJbW1lZGlhdGUgaW1tKQorICAgIEFMV0FZU19J
TkxJTkUgdm9pZCB0c3QoUmVnaXN0ZXJJRCBybiwgQVJNVGh1bWJJbW1lZGlhdGUgaW1tKQogICAg
IHsKICAgICAgICAgQVNTRVJUKCFCYWRSZWcocm4pKTsKICAgICAgICAgQVNTRVJUKGltbS5pc0Vu
Y29kZWRJbW0oKSk7CkBAIC0xNDUxLDE0ICsxNDUxLDE0IEBAIHB1YmxpYzoKICAgICAgICAgbV9m
b3JtYXR0ZXIudHdvV29yZE9wNWk2SW1tNFJlZzRFbmNvZGVkSW1tKE9QX1RTVF9pbW0sIHJuLCAo
UmVnaXN0ZXJJRCkweGYsIGltbSk7CiAgICAgfQogCi0gICAgdm9pZCB0c3QoUmVnaXN0ZXJJRCBy
biwgUmVnaXN0ZXJJRCBybSwgU2hpZnRUeXBlQW5kQW1vdW50IHNoaWZ0KQorICAgIEFMV0FZU19J
TkxJTkUgdm9pZCB0c3QoUmVnaXN0ZXJJRCBybiwgUmVnaXN0ZXJJRCBybSwgU2hpZnRUeXBlQW5k
QW1vdW50IHNoaWZ0KQogICAgIHsKICAgICAgICAgQVNTRVJUKCFCYWRSZWcocm4pKTsKICAgICAg
ICAgQVNTRVJUKCFCYWRSZWcocm0pKTsKICAgICAgICAgbV9mb3JtYXR0ZXIudHdvV29yZE9wMTJS
ZWc0Rm91ckZvdXJzKE9QX1RTVF9yZWdfVDIsIHJuLCBGb3VyRm91cnMoc2hpZnQuaGk0KCksIDB4
Ziwgc2hpZnQubG80KCksIHJtKSk7CiAgICAgfQogCi0gICAgdm9pZCB0c3QoUmVnaXN0ZXJJRCBy
biwgUmVnaXN0ZXJJRCBybSkKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgdHN0KFJlZ2lzdGVySUQg
cm4sIFJlZ2lzdGVySUQgcm0pCiAgICAgewogICAgICAgICBpZiAoKHJuIHwgcm0pICYgOCkKICAg
ICAgICAgICAgIHRzdChybiwgcm0sIFNoaWZ0VHlwZUFuZEFtb3VudCgpKTsKQEAgLTE1NzYsNyAr
MTU3Niw3IEBAIHB1YmxpYzoKICAgICAKICAgICAvLyBBc3NlbWJsZXIgYWRtaW4gbWV0aG9kczoK
IAotICAgIHN0YXRpYyBib29sIGxpbmtSZWNvcmRTb3VyY2VDb21wYXJhdG9yKGNvbnN0IExpbmtS
ZWNvcmQmIGEsIGNvbnN0IExpbmtSZWNvcmQmIGIpCisgICAgc3RhdGljIEFMV0FZU19JTkxJTkUg
Ym9vbCBsaW5rUmVjb3JkU291cmNlQ29tcGFyYXRvcihjb25zdCBMaW5rUmVjb3JkJiBhLCBjb25z
dCBMaW5rUmVjb3JkJiBiKQogICAgIHsKICAgICAgICAgcmV0dXJuIGEuZnJvbSgpIDwgYi5mcm9t
KCk7CiAgICAgfQpAQCAtMTY2Myw3ICsxNjYzLDcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4g
bV9qdW1wc1RvTGluazsKICAgICB9CiAKLSAgICB2b2lkIGxpbmsoTGlua1JlY29yZCYgcmVjb3Jk
LCB1aW50OF90KiBmcm9tLCB1aW50OF90KiB0bykKKyAgICB2b2lkIEFMV0FZU19JTkxJTkUgbGlu
ayhMaW5rUmVjb3JkJiByZWNvcmQsIHVpbnQ4X3QqIGZyb20sIHVpbnQ4X3QqIHRvKQogICAgIHsK
ICAgICAgICAgc3dpdGNoIChyZWNvcmQubGlua1R5cGUoKSkgewogICAgICAgICBjYXNlIExpbmtK
dW1wVDE6CkBAIC0yMTY1LDU5ICsyMTY1LDYwIEBAIHByaXZhdGU6CiAKICAgICBjbGFzcyBBUk1J
bnN0cnVjdGlvbkZvcm1hdHRlciB7CiAgICAgcHVibGljOgotICAgICAgICB2b2lkIG9uZVdvcmRP
cDVSZWczSW1tOChPcGNvZGVJRCBvcCwgUmVnaXN0ZXJJRCByZCwgdWludDhfdCBpbW0pCisgICAg
ICAgIEFMV0FZU19JTkxJTkUgdm9pZCBvbmVXb3JkT3A1UmVnM0ltbTgoT3Bjb2RlSUQgb3AsIFJl
Z2lzdGVySUQgcmQsIHVpbnQ4X3QgaW1tKQogICAgICAgICB7CiAgICAgICAgICAgICBtX2J1ZmZl
ci5wdXRTaG9ydChvcCB8IChyZCA8PCA4KSB8IGltbSk7CiAgICAgICAgIH0KICAgICAgICAgCi0g
ICAgICAgIHZvaWQgb25lV29yZE9wNUltbTVSZWczUmVnMyhPcGNvZGVJRCBvcCwgdWludDhfdCBp
bW0sIFJlZ2lzdGVySUQgcmVnMSwgUmVnaXN0ZXJJRCByZWcyKQorICAgICAgICBBTFdBWVNfSU5M
SU5FIHZvaWQgb25lV29yZE9wNUltbTVSZWczUmVnMyhPcGNvZGVJRCBvcCwgdWludDhfdCBpbW0s
IFJlZ2lzdGVySUQgcmVnMSwgUmVnaXN0ZXJJRCByZWcyKQogICAgICAgICB7CiAgICAgICAgICAg
ICBtX2J1ZmZlci5wdXRTaG9ydChvcCB8IChpbW0gPDwgNikgfCAocmVnMSA8PCAzKSB8IHJlZzIp
OwogICAgICAgICB9CiAKLSAgICAgICAgdm9pZCBvbmVXb3JkT3A3UmVnM1JlZzNSZWczKE9wY29k
ZUlEIG9wLCBSZWdpc3RlcklEIHJlZzEsIFJlZ2lzdGVySUQgcmVnMiwgUmVnaXN0ZXJJRCByZWcz
KQorICAgICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgb25lV29yZE9wN1JlZzNSZWczUmVnMyhPcGNv
ZGVJRCBvcCwgUmVnaXN0ZXJJRCByZWcxLCBSZWdpc3RlcklEIHJlZzIsIFJlZ2lzdGVySUQgcmVn
MykKICAgICAgICAgewogICAgICAgICAgICAgbV9idWZmZXIucHV0U2hvcnQob3AgfCAocmVnMSA8
PCA2KSB8IChyZWcyIDw8IDMpIHwgcmVnMyk7CiAgICAgICAgIH0KIAotICAgICAgICB2b2lkIG9u
ZVdvcmRPcDhJbW04KE9wY29kZUlEIG9wLCB1aW50OF90IGltbSkKKyAgICAgICAgQUxXQVlTX0lO
TElORSB2b2lkIG9uZVdvcmRPcDhJbW04KE9wY29kZUlEIG9wLCB1aW50OF90IGltbSkKICAgICAg
ICAgewogICAgICAgICAgICAgbV9idWZmZXIucHV0U2hvcnQob3AgfCBpbW0pOwogICAgICAgICB9
CiAKLSAgICAgICAgdm9pZCBvbmVXb3JkT3A4UmVnUmVnMTQzKE9wY29kZUlEIG9wLCBSZWdpc3Rl
cklEIHJlZzEsIFJlZ2lzdGVySUQgcmVnMikKKyAgICAgICAgQUxXQVlTX0lOTElORSB2b2lkIG9u
ZVdvcmRPcDhSZWdSZWcxNDMoT3Bjb2RlSUQgb3AsIFJlZ2lzdGVySUQgcmVnMSwgUmVnaXN0ZXJJ
RCByZWcyKQogICAgICAgICB7CiAgICAgICAgICAgICBtX2J1ZmZlci5wdXRTaG9ydChvcCB8ICgo
cmVnMiAmIDgpIDw8IDQpIHwgKHJlZzEgPDwgMykgfCAocmVnMiAmIDcpKTsKICAgICAgICAgfQot
ICAgICAgICB2b2lkIG9uZVdvcmRPcDlJbW03KE9wY29kZUlEIG9wLCB1aW50OF90IGltbSkKKwor
ICAgICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgb25lV29yZE9wOUltbTcoT3Bjb2RlSUQgb3AsIHVp
bnQ4X3QgaW1tKQogICAgICAgICB7CiAgICAgICAgICAgICBtX2J1ZmZlci5wdXRTaG9ydChvcCB8
IGltbSk7CiAgICAgICAgIH0KIAotICAgICAgICB2b2lkIG9uZVdvcmRPcDEwUmVnM1JlZzMoT3Bj
b2RlSUQgb3AsIFJlZ2lzdGVySUQgcmVnMSwgUmVnaXN0ZXJJRCByZWcyKQorICAgICAgICBBTFdB
WVNfSU5MSU5FIHZvaWQgb25lV29yZE9wMTBSZWczUmVnMyhPcGNvZGVJRCBvcCwgUmVnaXN0ZXJJ
RCByZWcxLCBSZWdpc3RlcklEIHJlZzIpCiAgICAgICAgIHsKICAgICAgICAgICAgIG1fYnVmZmVy
LnB1dFNob3J0KG9wIHwgKHJlZzEgPDwgMykgfCByZWcyKTsKICAgICAgICAgfQogCi0gICAgICAg
IHZvaWQgdHdvV29yZE9wMTJSZWc0Rm91ckZvdXJzKE9wY29kZUlEMSBvcCwgUmVnaXN0ZXJJRCBy
ZWcsIEZvdXJGb3VycyBmZikKKyAgICAgICAgQUxXQVlTX0lOTElORSB2b2lkIHR3b1dvcmRPcDEy
UmVnNEZvdXJGb3VycyhPcGNvZGVJRDEgb3AsIFJlZ2lzdGVySUQgcmVnLCBGb3VyRm91cnMgZmYp
CiAgICAgICAgIHsKICAgICAgICAgICAgIG1fYnVmZmVyLnB1dFNob3J0KG9wIHwgcmVnKTsKICAg
ICAgICAgICAgIG1fYnVmZmVyLnB1dFNob3J0KGZmLm1fdS52YWx1ZSk7CiAgICAgICAgIH0KICAg
ICAgICAgCi0gICAgICAgIHZvaWQgdHdvV29yZE9wMTZGb3VyRm91cnMoT3Bjb2RlSUQxIG9wLCBG
b3VyRm91cnMgZmYpCisgICAgICAgIEFMV0FZU19JTkxJTkUgdm9pZCB0d29Xb3JkT3AxNkZvdXJG
b3VycyhPcGNvZGVJRDEgb3AsIEZvdXJGb3VycyBmZikKICAgICAgICAgewogICAgICAgICAgICAg
bV9idWZmZXIucHV0U2hvcnQob3ApOwogICAgICAgICAgICAgbV9idWZmZXIucHV0U2hvcnQoZmYu
bV91LnZhbHVlKTsKICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgdm9pZCB0d29Xb3JkT3Ax
Nk9wMTYoT3Bjb2RlSUQxIG9wMSwgT3Bjb2RlSUQyIG9wMikKKyAgICAgICAgQUxXQVlTX0lOTElO
RSB2b2lkIHR3b1dvcmRPcDE2T3AxNihPcGNvZGVJRDEgb3AxLCBPcGNvZGVJRDIgb3AyKQogICAg
ICAgICB7CiAgICAgICAgICAgICBtX2J1ZmZlci5wdXRTaG9ydChvcDEpOwogICAgICAgICAgICAg
bV9idWZmZXIucHV0U2hvcnQob3AyKTsKICAgICAgICAgfQogCi0gICAgICAgIHZvaWQgdHdvV29y
ZE9wNWk2SW1tNFJlZzRFbmNvZGVkSW1tKE9wY29kZUlEMSBvcCwgaW50IGltbTQsIFJlZ2lzdGVy
SUQgcmQsIEFSTVRodW1iSW1tZWRpYXRlIGltbSkKKyAgICAgICAgQUxXQVlTX0lOTElORSB2b2lk
IHR3b1dvcmRPcDVpNkltbTRSZWc0RW5jb2RlZEltbShPcGNvZGVJRDEgb3AsIGludCBpbW00LCBS
ZWdpc3RlcklEIHJkLCBBUk1UaHVtYkltbWVkaWF0ZSBpbW0pCiAgICAgICAgIHsKICAgICAgICAg
ICAgIEFSTVRodW1iSW1tZWRpYXRlIG5ld0ltbSA9IGltbTsKICAgICAgICAgICAgIG5ld0ltbS5t
X3ZhbHVlLmltbTQgPSBpbW00OwpAQCAtMjIyNiw3ICsyMjI3LDcgQEAgcHJpdmF0ZToKICAgICAg
ICAgICAgIG1fYnVmZmVyLnB1dFNob3J0KEFSTXY3QXNzZW1ibGVyOjp0d29Xb3JkT3A1aTZJbW00
UmVnNEVuY29kZWRJbW1TZWNvbmQocmQsIG5ld0ltbSkpOwogICAgICAgICB9CiAKLSAgICAgICAg
dm9pZCB0d29Xb3JkT3AxMlJlZzRSZWc0SW1tMTIoT3Bjb2RlSUQxIG9wLCBSZWdpc3RlcklEIHJl
ZzEsIFJlZ2lzdGVySUQgcmVnMiwgdWludDE2X3QgaW1tKQorICAgICAgICBBTFdBWVNfSU5MSU5F
IHZvaWQgdHdvV29yZE9wMTJSZWc0UmVnNEltbTEyKE9wY29kZUlEMSBvcCwgUmVnaXN0ZXJJRCBy
ZWcxLCBSZWdpc3RlcklEIHJlZzIsIHVpbnQxNl90IGltbSkKICAgICAgICAgewogICAgICAgICAg
ICAgbV9idWZmZXIucHV0U2hvcnQob3AgfCByZWcxKTsKICAgICAgICAgICAgIG1fYnVmZmVyLnB1
dFNob3J0KChyZWcyIDw8IDEyKSB8IGltbSk7CkBAIC0yMjM2LDcgKzIyMzcsNyBAQCBwcml2YXRl
OgogICAgICAgICAvLyAgICAxMTExMTExMTFCMTFhYWFhOmJiYmIyMjJTQTJDMmNjY2MKICAgICAg
ICAgLy8gV2hlcmUgMXMgaW4gdGhlIHBhdHRlcm4gY29tZSBmcm9tIG9wMSwgMnMgaW4gdGhlIHBh
dHRlcm4gY29tZSBmcm9tIG9wMiwgUyBpcyB0aGUgcHJvdmlkZWQgc2l6ZSBiaXQuCiAgICAgICAg
IC8vIE9wZXJhbmRzIHByb3ZpZGUgNSBiaXQgdmFsdWVzIG9mIHRoZSBmb3JtIEFhYWFhLCBCYmJi
YiwgQ2NjY2MuCi0gICAgICAgIHZvaWQgdmZwT3AoT3Bjb2RlSUQxIG9wMSwgT3Bjb2RlSUQyIG9w
MiwgYm9vbCBzaXplLCBWRlBPcGVyYW5kIGEsIFZGUE9wZXJhbmQgYiwgVkZQT3BlcmFuZCBjKQor
ICAgICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgdmZwT3AoT3Bjb2RlSUQxIG9wMSwgT3Bjb2RlSUQy
IG9wMiwgYm9vbCBzaXplLCBWRlBPcGVyYW5kIGEsIFZGUE9wZXJhbmQgYiwgVkZQT3BlcmFuZCBj
KQogICAgICAgICB7CiAgICAgICAgICAgICBBU1NFUlQoIShvcDEgJiAweDAwNGYpKTsKICAgICAg
ICAgICAgIEFTU0VSVCghKG9wMiAmIDB4ZjFhZikpOwpAQCAtMjI0Niw3ICsyMjQ3LDcgQEAgcHJp
dmF0ZToKIAogICAgICAgICAvLyBBcm0gdmZwIGFkZHJlc3NlcyBjYW4gYmUgb2Zmc2V0IGJ5IGEg
OS1iaXQgb25lcy1jb21wIGltbWVkaWF0ZSwgbGVmdCBzaGlmdGVkIGJ5IDIuCiAgICAgICAgIC8v
IChpLmUuICsvLSgwLi4yNTUpIDMyLWJpdCB3b3JkcykKLSAgICAgICAgdm9pZCB2ZnBNZW1PcChP
cGNvZGVJRDEgb3AxLCBPcGNvZGVJRDIgb3AyLCBib29sIHNpemUsIFJlZ2lzdGVySUQgcm4sIFZG
UE9wZXJhbmQgcmQsIGludDMyX3QgaW1tKQorICAgICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgdmZw
TWVtT3AoT3Bjb2RlSUQxIG9wMSwgT3Bjb2RlSUQyIG9wMiwgYm9vbCBzaXplLCBSZWdpc3RlcklE
IHJuLCBWRlBPcGVyYW5kIHJkLCBpbnQzMl90IGltbSkKICAgICAgICAgewogICAgICAgICAgICAg
Ym9vbCB1cCA9IHRydWU7CiAgICAgICAgICAgICBpZiAoaW1tIDwgMCkgewpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9MaW5rQnVmZmVyLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYXNzZW1ibGVyL0xpbmtCdWZmZXIuaAppbmRleCAzYWExYzY3Y2Q5NDQyZTdm
ZDc4YzRjZmZlNTcwMGIwNTZjYjFjYzBmLi5hYmQ0YWYwOTUxYzc0OTc3ZmVkYjkyYTM4YmJjNjFl
MmE0MjVlY2RiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0xp
bmtCdWZmZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0xpbmtCdWZm
ZXIuaApAQCAtMjQ4LDcgKzI0OCwxMiBAQCBwcml2YXRlOgogICAgICAgICAgICAgCiAgICAgICAg
ICAgICAvLyBDb3B5IHRoZSBpbnN0cnVjdGlvbnMgZnJvbSB0aGUgbGFzdCBqdW1wIHRvIHRoZSBj
dXJyZW50IG9uZS4KICAgICAgICAgICAgIHNpemVfdCByZWdpb25TaXplID0ganVtcHNUb0xpbmtb
aV0uZnJvbSgpIC0gcmVhZFB0cjsKLSAgICAgICAgICAgIG1lbWNweShvdXREYXRhICsgd3JpdGVQ
dHIsIGluRGF0YSArIHJlYWRQdHIsIHJlZ2lvblNpemUpOworICAgICAgICAgICAgdWludDE2X3Qq
IGNvcHlTb3VyY2UgPSByZWludGVycHJldF9jYXN0PHVpbnQxNl90Kj4oaW5EYXRhICsgcmVhZFB0
cik7CisgICAgICAgICAgICB1aW50MTZfdCogY29weUVuZCA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWlu
dDE2X3QqPihpbkRhdGEgKyByZWFkUHRyICsgcmVnaW9uU2l6ZSk7CisgICAgICAgICAgICB1aW50
MTZfdCogY29weURzdCA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDE2X3QqPihvdXREYXRhICsgd3Jp
dGVQdHIpOworICAgICAgICAgICAgQVNTRVJUKCEocmVnaW9uU2l6ZSAlIDIpKTsKKyAgICAgICAg
ICAgIHdoaWxlIChjb3B5U291cmNlICE9IGNvcHlFbmQpCisgICAgICAgICAgICAgICAgKmNvcHlE
c3QrKyA9ICpjb3B5U291cmNlKys7CiAgICAgICAgICAgICBtX2Fzc2VtYmxlci0+cmVjb3JkTGlu
a09mZnNldHMocmVhZFB0ciwganVtcHNUb0xpbmtbaV0uZnJvbSgpLCBvZmZzZXQpOwogICAgICAg
ICAgICAgcmVhZFB0ciArPSByZWdpb25TaXplOwogICAgICAgICAgICAgd3JpdGVQdHIgKz0gcmVn
aW9uU2l6ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFj
cm9Bc3NlbWJsZXJBUk12Ny5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNy
b0Fzc2VtYmxlckFSTXY3LmgKaW5kZXggZTE0ZmI4YzA5YWUxMTI3MDBlYjVmOTgxZGVlYTFlMmJj
ODc5YTg5Yy4uM2FlYzA5ZjE5MjY2YjZkZTE5ZWJmOTdlMDJlZWU2MDVlMGEzNDQwZiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTXY3
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFS
TXY3LmgKQEAgLTExMjYsMzAgKzExMjYsMzAgQEAgcHVibGljOgogICAgICAgICBtX2Fzc2VtYmxl
ci5ia3B0KDApOwogICAgIH0KIAotICAgIENhbGwgbmVhckNhbGwoKQorICAgIEFMV0FZU19JTkxJ
TkUgQ2FsbCBuZWFyQ2FsbCgpCiAgICAgewogICAgICAgICBtb3ZlRml4ZWRXaWR0aEVuY29kaW5n
KFRydXN0ZWRJbW0zMigwKSwgZGF0YVRlbXBSZWdpc3Rlcik7CiAgICAgICAgIHJldHVybiBDYWxs
KG1fYXNzZW1ibGVyLmJseChkYXRhVGVtcFJlZ2lzdGVyKSwgQ2FsbDo6TGlua2FibGVOZWFyKTsK
ICAgICB9CiAKLSAgICBDYWxsIGNhbGwoKQorICAgIEFMV0FZU19JTkxJTkUgQ2FsbCBjYWxsKCkK
ICAgICB7CiAgICAgICAgIG1vdmVGaXhlZFdpZHRoRW5jb2RpbmcoVHJ1c3RlZEltbTMyKDApLCBk
YXRhVGVtcFJlZ2lzdGVyKTsKICAgICAgICAgcmV0dXJuIENhbGwobV9hc3NlbWJsZXIuYmx4KGRh
dGFUZW1wUmVnaXN0ZXIpLCBDYWxsOjpMaW5rYWJsZSk7CiAgICAgfQogCi0gICAgQ2FsbCBjYWxs
KFJlZ2lzdGVySUQgdGFyZ2V0KQorICAgIEFMV0FZU19JTkxJTkUgQ2FsbCBjYWxsKFJlZ2lzdGVy
SUQgdGFyZ2V0KQogICAgIHsKICAgICAgICAgcmV0dXJuIENhbGwobV9hc3NlbWJsZXIuYmx4KHRh
cmdldCksIENhbGw6Ok5vbmUpOwogICAgIH0KIAotICAgIENhbGwgY2FsbChBZGRyZXNzIGFkZHJl
c3MpCisgICAgQUxXQVlTX0lOTElORSBDYWxsIGNhbGwoQWRkcmVzcyBhZGRyZXNzKQogICAgIHsK
ICAgICAgICAgbG9hZDMyKGFkZHJlc3MsIGRhdGFUZW1wUmVnaXN0ZXIpOwogICAgICAgICByZXR1
cm4gQ2FsbChtX2Fzc2VtYmxlci5ibHgoZGF0YVRlbXBSZWdpc3RlciksIENhbGw6Ok5vbmUpOwog
ICAgIH0KIAotICAgIHZvaWQgcmV0KCkKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgcmV0KCkKICAg
ICB7CiAgICAgICAgIG1fYXNzZW1ibGVyLmJ4KGxpbmtSZWdpc3Rlcik7CiAgICAgfQpAQCAtMTE5
OCw0OCArMTE5OCw0OCBAQCBwdWJsaWM6CiAgICAgICAgIG1fYXNzZW1ibGVyLm1vdihkZXN0LCBB
Uk1UaHVtYkltbWVkaWF0ZTo6bWFrZVVJbnQxNigwKSk7CiAgICAgfQogCi0gICAgRGF0YUxhYmVs
MzIgbW92ZVdpdGhQYXRjaChUcnVzdGVkSW1tMzIgaW1tLCBSZWdpc3RlcklEIGRzdCkKKyAgICBB
TFdBWVNfSU5MSU5FIERhdGFMYWJlbDMyIG1vdmVXaXRoUGF0Y2goVHJ1c3RlZEltbTMyIGltbSwg
UmVnaXN0ZXJJRCBkc3QpCiAgICAgewogICAgICAgICBtb3ZlRml4ZWRXaWR0aEVuY29kaW5nKGlt
bSwgZHN0KTsKICAgICAgICAgcmV0dXJuIERhdGFMYWJlbDMyKHRoaXMpOwogICAgIH0KIAotICAg
IERhdGFMYWJlbFB0ciBtb3ZlV2l0aFBhdGNoKFRydXN0ZWRJbW1QdHIgaW1tLCBSZWdpc3RlcklE
IGRzdCkKKyAgICBBTFdBWVNfSU5MSU5FIERhdGFMYWJlbFB0ciBtb3ZlV2l0aFBhdGNoKFRydXN0
ZWRJbW1QdHIgaW1tLCBSZWdpc3RlcklEIGRzdCkKICAgICB7CiAgICAgICAgIG1vdmVGaXhlZFdp
ZHRoRW5jb2RpbmcoVHJ1c3RlZEltbTMyKGltbSksIGRzdCk7CiAgICAgICAgIHJldHVybiBEYXRh
TGFiZWxQdHIodGhpcyk7CiAgICAgfQogCi0gICAgSnVtcCBicmFuY2hQdHJXaXRoUGF0Y2goUmVs
YXRpb25hbENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGxlZnQsIERhdGFMYWJlbFB0ciYgZGF0
YUxhYmVsLCBUcnVzdGVkSW1tUHRyIGluaXRpYWxSaWdodFZhbHVlID0gVHJ1c3RlZEltbVB0cigw
KSkKKyAgICBBTFdBWVNfSU5MSU5FIEp1bXAgYnJhbmNoUHRyV2l0aFBhdGNoKFJlbGF0aW9uYWxD
b25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBsZWZ0LCBEYXRhTGFiZWxQdHImIGRhdGFMYWJlbCwg
VHJ1c3RlZEltbVB0ciBpbml0aWFsUmlnaHRWYWx1ZSA9IFRydXN0ZWRJbW1QdHIoMCkpCiAgICAg
ewogICAgICAgICBkYXRhTGFiZWwgPSBtb3ZlV2l0aFBhdGNoKGluaXRpYWxSaWdodFZhbHVlLCBk
YXRhVGVtcFJlZ2lzdGVyKTsKICAgICAgICAgcmV0dXJuIGJyYW5jaDMyKGNvbmQsIGxlZnQsIGRh
dGFUZW1wUmVnaXN0ZXIpOwogICAgIH0KIAotICAgIEp1bXAgYnJhbmNoUHRyV2l0aFBhdGNoKFJl
bGF0aW9uYWxDb25kaXRpb24gY29uZCwgQWRkcmVzcyBsZWZ0LCBEYXRhTGFiZWxQdHImIGRhdGFM
YWJlbCwgVHJ1c3RlZEltbVB0ciBpbml0aWFsUmlnaHRWYWx1ZSA9IFRydXN0ZWRJbW1QdHIoMCkp
CisgICAgQUxXQVlTX0lOTElORSBKdW1wIGJyYW5jaFB0cldpdGhQYXRjaChSZWxhdGlvbmFsQ29u
ZGl0aW9uIGNvbmQsIEFkZHJlc3MgbGVmdCwgRGF0YUxhYmVsUHRyJiBkYXRhTGFiZWwsIFRydXN0
ZWRJbW1QdHIgaW5pdGlhbFJpZ2h0VmFsdWUgPSBUcnVzdGVkSW1tUHRyKDApKQogICAgIHsKICAg
ICAgICAgbG9hZDMyKGxlZnQsIGFkZHJlc3NUZW1wUmVnaXN0ZXIpOwogICAgICAgICBkYXRhTGFi
ZWwgPSBtb3ZlV2l0aFBhdGNoKGluaXRpYWxSaWdodFZhbHVlLCBkYXRhVGVtcFJlZ2lzdGVyKTsK
ICAgICAgICAgcmV0dXJuIGJyYW5jaDMyKGNvbmQsIGFkZHJlc3NUZW1wUmVnaXN0ZXIsIGRhdGFU
ZW1wUmVnaXN0ZXIpOwogICAgIH0KIAotICAgIERhdGFMYWJlbFB0ciBzdG9yZVB0cldpdGhQYXRj
aChUcnVzdGVkSW1tUHRyIGluaXRpYWxWYWx1ZSwgSW1wbGljaXRBZGRyZXNzIGFkZHJlc3MpCisg
ICAgQUxXQVlTX0lOTElORSBEYXRhTGFiZWxQdHIgc3RvcmVQdHJXaXRoUGF0Y2goVHJ1c3RlZElt
bVB0ciBpbml0aWFsVmFsdWUsIEltcGxpY2l0QWRkcmVzcyBhZGRyZXNzKQogICAgIHsKICAgICAg
ICAgRGF0YUxhYmVsUHRyIGxhYmVsID0gbW92ZVdpdGhQYXRjaChpbml0aWFsVmFsdWUsIGRhdGFU
ZW1wUmVnaXN0ZXIpOwogICAgICAgICBzdG9yZTMyKGRhdGFUZW1wUmVnaXN0ZXIsIGFkZHJlc3Mp
OwogICAgICAgICByZXR1cm4gbGFiZWw7CiAgICAgfQotICAgIERhdGFMYWJlbFB0ciBzdG9yZVB0
cldpdGhQYXRjaChJbXBsaWNpdEFkZHJlc3MgYWRkcmVzcykgeyByZXR1cm4gc3RvcmVQdHJXaXRo
UGF0Y2goVHJ1c3RlZEltbVB0cigwKSwgYWRkcmVzcyk7IH0KKyAgICBBTFdBWVNfSU5MSU5FIERh
dGFMYWJlbFB0ciBzdG9yZVB0cldpdGhQYXRjaChJbXBsaWNpdEFkZHJlc3MgYWRkcmVzcykgeyBy
ZXR1cm4gc3RvcmVQdHJXaXRoUGF0Y2goVHJ1c3RlZEltbVB0cigwKSwgYWRkcmVzcyk7IH0KIAog
Ci0gICAgQ2FsbCB0YWlsUmVjdXJzaXZlQ2FsbCgpCisgICAgQUxXQVlTX0lOTElORSBDYWxsIHRh
aWxSZWN1cnNpdmVDYWxsKCkKICAgICB7CiAgICAgICAgIC8vIExpa2UgYSBub3JtYWwgY2FsbCwg
YnV0IGRvbid0IGxpbmsuCiAgICAgICAgIG1vdmVGaXhlZFdpZHRoRW5jb2RpbmcoVHJ1c3RlZElt
bTMyKDApLCBkYXRhVGVtcFJlZ2lzdGVyKTsKICAgICAgICAgcmV0dXJuIENhbGwobV9hc3NlbWJs
ZXIuYngoZGF0YVRlbXBSZWdpc3RlciksIENhbGw6OkxpbmthYmxlKTsKICAgICB9CiAKLSAgICBD
YWxsIG1ha2VUYWlsUmVjdXJzaXZlQ2FsbChKdW1wIG9sZEp1bXApCisgICAgQUxXQVlTX0lOTElO
RSBDYWxsIG1ha2VUYWlsUmVjdXJzaXZlQ2FsbChKdW1wIG9sZEp1bXApCiAgICAgewogICAgICAg
ICBvbGRKdW1wLmxpbmsodGhpcyk7CiAgICAgICAgIHJldHVybiB0YWlsUmVjdXJzaXZlQ2FsbCgp
OwpAQCAtMTI1NywyMSArMTI1NywyMSBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIHJldHVybiBtX2lu
VW5pbnRlcnJ1cHRlZFNlcXVlbmNlOwogICAgIH0KIAotICAgIEp1bXAganVtcCgpCisgICAgQUxX
QVlTX0lOTElORSBKdW1wIGp1bXAoKQogICAgIHsKICAgICAgICAgbW92ZUZpeGVkV2lkdGhFbmNv
ZGluZyhUcnVzdGVkSW1tMzIoMCksIGRhdGFUZW1wUmVnaXN0ZXIpOwogICAgICAgICByZXR1cm4g
SnVtcChtX2Fzc2VtYmxlci5ieChkYXRhVGVtcFJlZ2lzdGVyKSwgaW5VbmludGVycnVwdGVkU2Vx
dWVuY2UoKSA/IEFSTXY3QXNzZW1ibGVyOjpKdW1wTm9Db25kaXRpb25GaXhlZFNpemUgOiBBUk12
N0Fzc2VtYmxlcjo6SnVtcE5vQ29uZGl0aW9uKTsKICAgICB9CiAKLSAgICBKdW1wIG1ha2VCcmFu
Y2goQVJNdjdBc3NlbWJsZXI6OkNvbmRpdGlvbiBjb25kKQorICAgIEFMV0FZU19JTkxJTkUgSnVt
cCBtYWtlQnJhbmNoKEFSTXY3QXNzZW1ibGVyOjpDb25kaXRpb24gY29uZCkKICAgICB7CiAgICAg
ICAgIG1fYXNzZW1ibGVyLml0KGNvbmQsIHRydWUsIHRydWUpOwogICAgICAgICBtb3ZlRml4ZWRX
aWR0aEVuY29kaW5nKFRydXN0ZWRJbW0zMigwKSwgZGF0YVRlbXBSZWdpc3Rlcik7CiAgICAgICAg
IHJldHVybiBKdW1wKG1fYXNzZW1ibGVyLmJ4KGRhdGFUZW1wUmVnaXN0ZXIpLCBpblVuaW50ZXJy
dXB0ZWRTZXF1ZW5jZSgpID8gQVJNdjdBc3NlbWJsZXI6Okp1bXBDb25kaXRpb25GaXhlZFNpemUg
OiBBUk12N0Fzc2VtYmxlcjo6SnVtcENvbmRpdGlvbiwgY29uZCk7CiAgICAgfQotICAgIEp1bXAg
bWFrZUJyYW5jaChSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQpIHsgcmV0dXJuIG1ha2VCcmFuY2go
YXJtVjdDb25kaXRpb24oY29uZCkpOyB9Ci0gICAgSnVtcCBtYWtlQnJhbmNoKFJlc3VsdENvbmRp
dGlvbiBjb25kKSB7IHJldHVybiBtYWtlQnJhbmNoKGFybVY3Q29uZGl0aW9uKGNvbmQpKTsgfQot
ICAgIEp1bXAgbWFrZUJyYW5jaChEb3VibGVDb25kaXRpb24gY29uZCkgeyByZXR1cm4gbWFrZUJy
YW5jaChhcm1WN0NvbmRpdGlvbihjb25kKSk7IH0KKyAgICBBTFdBWVNfSU5MSU5FIEp1bXAgbWFr
ZUJyYW5jaChSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQpIHsgcmV0dXJuIG1ha2VCcmFuY2goYXJt
VjdDb25kaXRpb24oY29uZCkpOyB9CisgICAgQUxXQVlTX0lOTElORSBKdW1wIG1ha2VCcmFuY2go
UmVzdWx0Q29uZGl0aW9uIGNvbmQpIHsgcmV0dXJuIG1ha2VCcmFuY2goYXJtVjdDb25kaXRpb24o
Y29uZCkpOyB9CisgICAgQUxXQVlTX0lOTElORSBKdW1wIG1ha2VCcmFuY2goRG91YmxlQ29uZGl0
aW9uIGNvbmQpIHsgcmV0dXJuIG1ha2VCcmFuY2goYXJtVjdDb25kaXRpb24oY29uZCkpOyB9CiAK
ICAgICBBcm1BZGRyZXNzIHNldHVwQXJtQWRkcmVzcyhCYXNlSW5kZXggYWRkcmVzcykKICAgICB7
Cg==
</data>
<flag name="review"
          id="94321"
          type_id="1"
          status="+"
          setter="barraclough"
    />
          </attachment>
      

    </bug>

</bugzilla>