<?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>28909</bug_id>
          
          <creation_ts>2009-09-02 06:51:51 -0700</creation_ts>
          <short_desc>DateInstance object collected on ARM JIT (JSValue: WTF_USE_JSVALUE32)</short_desc>
          <delta_ts>2009-09-04 11:53:42 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</rep_platform>
          <op_sys>Linux</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="Zoltan Herczeg">zherczeg</reporter>
          <assigned_to name="Darin Adler">darin</assigned_to>
          <cc>darin</cc>
    
    <cc>ggaren</cc>
    
    <cc>oliver</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>144204</commentid>
    <comment_count>0</comment_count>
    <who name="Zoltan Herczeg">zherczeg</who>
    <bug_when>2009-09-02 06:51:51 -0700</bug_when>
    <thetext>Small example:

var startTime = new Date
print(startTime)

// Mess up the gc&apos;ed area
gc()
for (var i = 0; i &lt; 100; ++i)
   new Number(0.2)

print(startTime)

Output:
Wed Sep 02 2009 11:43:57 GMT+0200 (CEST)
Thu Jan 01 1970 01:00:00 GMT+0100 (CET)

Known things so far:
JSWrapperObject::markChildren is not called for DateInstance objects

This method is usually called from:

JSArray.h:189
    currentCell-&gt;markChildren(*this);

However, in case of DateInstance, the followin line is called
JSArray.h:185
    static_cast&lt;JSObject*&gt;(currentCell)-&gt;markChildrenDirect(*this);
which means (currentCell-&gt;structure()-&gt;typeInfo().hasDefaultMark()) is true

Any idea? I feel hasDefaultMark() should not be true</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>144231</commentid>
    <comment_count>1</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-09-02 09:23:02 -0700</bug_when>
    <thetext>You&apos;re right about hasDefaultMark being the problem. I have a patch that fixes this and also ensures we catch such problems in debug builds.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>144239</commentid>
    <comment_count>2</comment_count>
      <attachid>38930</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-09-02 10:04:44 -0700</bug_when>
    <thetext>Created attachment 38930
patch

Passes all the regression tests. I will do the performance testing as well before landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>144251</commentid>
    <comment_count>3</comment_count>
      <attachid>38930</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2009-09-02 11:17:31 -0700</bug_when>
    <thetext>Comment on attachment 38930
patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>144809</commentid>
    <comment_count>4</comment_count>
      <attachid>38930</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-09-04 08:17:03 -0700</bug_when>
    <thetext>Comment on attachment 38930
patch

I haven&apos;t landed this patch yet because it causes a performance regression. But I&apos;ll be looking into that when I have time and I should be able to address it soon.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>144840</commentid>
    <comment_count>5</comment_count>
    <who name="Zoltan Herczeg">zherczeg</who>
    <bug_when>2009-09-04 09:56:29 -0700</bug_when>
    <thetext>Thanks for the update Darin. I am thinking now to try out the patch before landing (perhaps on Monday) to confirm it really works on ARM.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>144881</commentid>
    <comment_count>6</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-09-04 11:53:42 -0700</bug_when>
    <thetext>Landed enough of this to fix the bug, but not the entire patch yet.

http://trac.webkit.org/changeset/48067</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>38930</attachid>
            <date>2009-09-02 10:04:44 -0700</date>
            <delta_ts>2009-09-04 11:13:27 -0700</delta_ts>
            <desc>patch</desc>
            <filename>MarkPatch.txt</filename>
            <type>text/plain</type>
            <size>34789</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDQ3OTc1KQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTI5IEBACisyMDA5LTA5LTAyICBEYXJpbiBB
ZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBEYXRlSW5zdGFuY2Ugb2JqZWN0IGNvbGxlY3RlZCBvbiBBUk0gSklU
IChKU1ZhbHVlOiBXVEZfVVNFX0pTVkFMVUUzMikKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTI4OTA5CisKKyAgICAgICAgTWFrZSBzb21lIGltcHJvdmVt
ZW50cyB0byBnYXJiYWdlIGNvbGxlY3Rpb24gY29kZToKKworICAgICAgICAgICAgMSkgQ3JlYXRl
IGEgcnVudGltZSBhc3NlcnRpb24gdGhhdCBjYXRjaGVzIGFueSBjbGFzc2VzIHRoYXQKKyAgICAg
ICAgICAgICAgIG92ZXJyaWRlIG1hcmtDaGlsZHJlbiBidXQgaGF2ZSB0aGUgSGFzRGVmYXVsdE1h
cmsgYml0IHNldC4KKyAgICAgICAgICAgIDIpIEZpeCB0aGUgdHdvIGNsYXNzZXMgdGhhdCBoYWQg
dGhhdCBiaXQgc2V0IGJ1dCBzaG91bGQgbm90LgorICAgICAgICAgICAgMykgUmVtb3ZlIGNoZWNr
cyBvZiB0aGUgbWFyayBiaXQgb3V0c2lkZSB0aGUgTWFya1N0YWNrOjphcHBlbmQKKyAgICAgICAg
ICAgICAgIGZ1bmN0aW9uOyB0aGV5IGFyZSByZWR1bmRhbnQuCisgICAgICAgICAgICA0KSBJbXBy
b3ZlIHRoZSBlZmZpY2llbmN5IG9mIHRoZSBhc09iamVjdCBhbmQgYXNBcnJheSBmdW5jdGlvbnMK
KyAgICAgICAgICAgICAgIHdoZW4gY2FsbGVkIG9uIEpTQ2VsbCogdG8gYXZvaWQgYSByb3VuZCB0
cmlwIHRvIEpTVmFsdWUuCisgICAgICAgICAgICA1KSBNYWtlIG1vcmUgY2FsbGVycyB1c2UgdGhl
IGNoZWNrZWQgYXNDZWxsIGFuZCBhc09iamVjdAorICAgICAgICAgICAgICAgY2FzdGluZyBmdW5j
dGlvbnMgcmF0aGVyIHRoYW4gdW5jaGVja2VkIGNhc3RzLgorICAgICAgICAgICAgNikgUmVtb3Zl
ZCB0aGUgSlNDZWxsOjptYXJrZWQgZnVuY3Rpb24gYW5kIG90aGVyIEdDLXJlbGF0ZWQKKyAgICAg
ICAgICAgICAgIGZ1bmN0aW9ucyBiZWNhdXNlIHRoZXNlIG9wZXJhdGlvbnMgYXJlIG5vIGxvbmdl
ciB0aGluZ3MgdGhhdAorICAgICAgICAgICAgICAgY29kZSBvdGhlciB0aGFuIHRoZSBjb3JlIEdD
IGNvZGUgbmVlZHMgdG8gZG8gZGlyZWN0bHkuIEZpeGVkCisgICAgICAgICAgICAgICBjYWxsZXJz
IHRoYXQgd2VyZSBjYWxsaW5nIHRoZW0uCisKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2su
Y3BwOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6Om1hcmtBZ2dyZWdhdGUpOiBSZW1vdmVkIHVu
bmVlZGVkIGNoZWNrIG9mIHRoZSBtYXJrCisgICAgICAgIGJpdCBiZWZvcmUgY2FsbGluZyBNYXJr
U3RhY2s6OmFwcGVuZC4KKworICAgICAgICAqIGludGVycHJldGVyL1JlZ2lzdGVyLmg6IFJlbW92
ZWQgdW5uZWVkZWQgbWFya2VkIGFuZCBtYXJrQ2hpbGRyZW4KKyAgICAgICAgZnVuY3Rpb25zLgor
CisgICAgICAgICogaml0L0pJVFN0dWJzLmNwcDoKKyAgICAgICAgKG9wX2VxKTogUmVtb3ZlZCB1
bm5lZWRlZCBhc3NlcnRpb25zLCBpbnN0ZWFkIHVzaW5nIGNoZWNrZWQgY2FzdGluZworICAgICAg
ICBmdW5jdGlvbnMgc3VjaCBhcyBhc09iamVjdC4KKworICAgICAgICAqIHJ1bnRpbWUvQXJnTGlz
dC5oOiBBZGRlZCBub3ctbmVlZGVkIGZvcndhcmQgZGVjbGFyYXRpb24gb2YgTWFya1N0YWNrLgor
CisgICAgICAgICogcnVudGltZS9Db2xsZWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpIZWFwOjpt
YXJrQ29uc2VydmF0aXZlbHkpOiBSZW1vdmVkIHVubmVlZGVkIGNhbGwgdG8gTWFya1N0YWNrOjpk
cmFpbi4KKyAgICAgICAgKEpTQzo6SGVhcDo6bWFya1Byb3RlY3RlZE9iamVjdHMpOiBSZW1vdmVk
IHVubmVlZGVkIGNoZWNrIG9mIHRoZSBtYXJrCisgICAgICAgIGJpdCBhbmQgY2FsbCB0byBNYXJr
U3RhY2s6OmRyYWluLgorICAgICAgICAoSlNDOjpIZWFwOjpjb2xsZWN0KTogUmVtb3ZlZCB1bm5l
ZWRlZCBjaGVja3Mgb2YgdGhlIG1hcmsgYml0IGFuZCBhbHNvCisgICAgICAgIGNoYW5nZWQgY2Fs
bCB0byBTbWFsbFN0cmluZ3M6Om1hcmsgdG8gY2FsbCBtYXJrQ2hpbGRyZW4gaW5zdGVhZCB0byBt
YXRjaAorICAgICAgICB0aGUgcmVzdCBvZiB0aGUgb2JqZWN0cy4KKyAgICAgICAgKEpTQzo6dHlw
ZU5hbWUpOiBSZW1vdmVkIHVubmVlZGVkIGNhc3QgdG8gSlNPYmplY3QqLgorCisgICAgICAgICog
cnVudGltZS9HZXR0ZXJTZXR0ZXIuY3BwOgorICAgICAgICAoSlNDOjpHZXR0ZXJTZXR0ZXI6Om1h
cmtDaGlsZHJlbik6IFJlbW1vdmVkIHVubmVlZGVkIGNoZWNrIG9mIHRoZSBtYXJrIGJpdC4KKwor
ICAgICAgICAqIHJ1bnRpbWUvR2xvYmFsRXZhbEZ1bmN0aW9uLmg6CisgICAgICAgIChKU0M6Okds
b2JhbEV2YWxGdW5jdGlvbjo6Y3JlYXRlU3RydWN0dXJlKTogQWRkZWQuIEZpeGVzIGEgYnVnIHdo
ZXJlIHRoZQorICAgICAgICBIYXNEZWZhdWx0TWFyayBiaXQgd2FzIHNldC4KKworICAgICAgICAq
IHJ1bnRpbWUvSlNBcnJheS5oOgorICAgICAgICAoSlNDOjphc0FycmF5KTogQWRkZWQgYW4gb3Zl
cmxvYWQgZm9yIEpTQ2VsbCogYW5kIGNoYW5nZWQgdGhlIEpTVmFsdWUKKyAgICAgICAgdmVyc2lv
biB0byBjYWxsIGl0LiBSZW1vdmVkIHNvbWUgdW5uZWVkZWQgY2FzdHMuCisgICAgICAgIChKU0M6
OkpTQXJyYXk6Om1hcmtDaGlsZHJlbkRpcmVjdCk6IE1hcmtlZCB0aGlzIGZ1bmN0aW9uIGlubGlu
ZS4gSXQncyBpbgorICAgICAgICBhIGhlYWRlciwgYW5kIGlmIG5vdCBtYXJrZWQgaW5saW5lIHRo
aXMgY291bGQgbGVhZCB0byBsaW5raW5nIHByb2JsZW1zLgorICAgICAgICAoSlNDOjpNYXJrU3Rh
Y2s6Om1hcmtDaGlsZHJlbik6IEFkZGVkLiBUaGlzIGhlbHBlciBmdW5jdGlvbiBpcyB1c2VkIGJ5
CisgICAgICAgIHRoZSBkcmFpbiBmdW5jdGlvbiB0byBhdm9pZCByZXBhdGluZyBjb2RlLiBBbHNv
IGFkZGVkIHRoZSBjb2RlIGhlcmUgdG8KKyAgICAgICAgY2hlY2sgZnJvIGRlZmF1bHQgbWFyayB2
aW9sYXRpb25zIGluIGRlYnVnIGNvZGUuIElmIGEgbWFya0NoaWxkcmVuCisgICAgICAgIGZ1bmN0
aW9uIGFkZHMgc29tZXRoaW5nIHRvIHRoZSBtYXJrIHN0YWNrLCBidXQgdGhlIHR5cGUgaW5mbyBj
bGFpbWVkCisgICAgICAgIGhhc0RlZmF1bHRNYXJrIHdhcyB0cnVlLCB0aGVuIHdlIHdpbGwgZ2V0
IGFuIGFzc2VydGlvbiBub3cuIEFsc28gZml4ZWQKKyAgICAgICAgdGhlIGFzc2VydGlvbiBhYm91
dCB0aGUgbWFyayBiaXQgdG8gdXNlIHRoZSBIZWFwIGZ1bmN0aW9uIGRpcmVjdGx5CisgICAgICAg
IGJlY2F1c2Ugd2UgZG9uJ3QgaGF2ZSBhIEpTQ2VsbDo6bWFya2VkIGZ1bmN0aW9uIGFueSBtb3Jl
LgorICAgICAgICAoSlNDOjpNYXJrU3RhY2s6OmRyYWluKTogQ2hhbmdlZCBhIGxvY2FsIHZhcmlh
YmxlIGZyb20gInYiIHRvICJ2YWx1ZSIsCisgICAgICAgIGFuZCBmcm9tICJjdXJyZW50Q2VsbCIg
dG8gImNlbGwiLiBDaGFuZ2VkIHRvIGNhbGwgbWFya0NoaWxkcmVuIGluIHR3bworICAgICAgICBw
bGFjZXMgaW5zdGVhZCBvZiByZXBlYXRpbmcgYSBjaGFpbiBvZiBpZiBzdGF0ZW1lbnRzIHR3aWNl
LiBDaGFuZ2VkCisgICAgICAgIGNvZGUgdGhhdCByZWFkcyBhbmQgd3JpdGVzIHRoZSBtYXJrIGJp
dCB0byB1c2UgSGVhcDo6aXNDZWxsTWFya2VkIGFuZAorICAgICAgICBIZWFwOjptYXJrQ2VsbCBz
byB3ZSBjYW4gZWxpbWluYXRlIHRoZSBKU0NlbGw6Om1hcmtlZCBhbmQKKyAgICAgICAgSlNDZWxs
OjptYXJrQ2VsbERpcmVjdCBmdW5jdGlvbnMuCisKKyAgICAgICAgKiBydW50aW1lL0pTQ2VsbC5j
cHA6CisgICAgICAgIChKU0M6OkpTQ2VsbDo6Z2V0T2JqZWN0KTogVXNlIGFzT2JqZWN0IHRvIGF2
b2lkIGEgZGlyZWN0IHN0YXRpY19jYXN0LgorCisgICAgICAgICogcnVudGltZS9KU0NlbGwuaDog
UmVtb3ZlZCBKU0NlbGwncyBtYXJrQ2VsbERpcmVjdCBhbmQgbWFya2VkIG1lbWJlcgorICAgICAg
ICBmdW5jdGlvbnMuIEFkZGVkIGEgY29tbWVudCBleHBsYWluaW5nIHRoYXQgYXNDZWxsIHNob3Vs
ZCBiZSBkZXByZWNhdGVkCisgICAgICAgIGluIGZhdm9yIG9mIHRoZSBKU1ZhbHVlIGFzQ2VsbCBt
ZW1iZXIgZnVuY3Rpb24uCisgICAgICAgIChKU0M6Ok1hcmtTdGFjazo6YXBwZW5kKTogQWRkZWQg
dGhlIGFzc2VydGlvbiB0aGF0IGNhdGNoZXMgY2FsbGVycworICAgICAgICB0aGF0IGhhdmUgc2V0
IHRoZSBIYXNEZWZhdWx0TWFyayBiaXQgaW5jb3JyZWN0bHkuIENoYW5nZWQKKyAgICAgICAgY29k
ZSB0aGF0IHJlYWRzIGFuZCB3cml0ZXMgdGhlIG1hcmsgYml0IHRvIHVzZSBIZWFwOjppc0NlbGxN
YXJrZWQgYW5kCisgICAgICAgIEhlYXA6Om1hcmtDZWxsIHNvIHdlIGNhbiBlbGltaW5hdGUgdGhl
IEpTQ2VsbDo6bWFya2VkIGFuZAorICAgICAgICBKU0NlbGw6Om1hcmtDZWxsRGlyZWN0IGZ1bmN0
aW9ucy4gTW92ZWQgdGhlIG92ZXJsb2FkIG9mCisgICAgICAgIE1hcmtTdGFjazo6YXBwZW5kIGZv
ciBKU1ZhbHVlIGhlcmUgc28gaXQgY2FuIGNhbGwgdGhyb3VnaCB0byB0aGUgY2VsbAorICAgICAg
ICB2ZXJzaW9uLiBUaGUgb2xkIHZlcnNpb24gaGFkIGEgY29weSBvZiBhbGwgdGhlIGNvZGUgaW5z
dGVhZCwgYnV0IHRoYXQKKyAgICAgICAgcmVwZWF0ZWQgdGhlIGNvbnZlcnNpb24gZnJvbSBKU1Zh
bHVlIHRvIEpTQ2VsbCogYW5kIHRoZSBjaGVjayBmb3IKKyAgICAgICAgd2hldGhlciBhIHZhbHVl
IGlzIGEgY2VsbCBtdWx0aXBsZSB0aW1lcy4KKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjptYXJr
QWdncmVnYXRlKTogTW92ZWQgdGhpcyBmdW5jdGlvbiBoZXJlIHRvIGF2b2lkCisgICAgICAgIGRl
cGVuZGVuY2llcyBmb3IgU3RydWN0dXJlLmgsIHNpbmNlIHRoaXMgY2FsbHMgTWFya1N0YWNrOjph
cHBlbmQuCisKKyAgICAgICAgKiBydW50aW1lL0pTT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6
SlNPYmplY3Q6Om1hcmtDaGlsZHJlbik6IEFkZGVkIGNvZGUgdG8gY2xlYXIKKyAgICAgICAgbV9p
c0NoZWNraW5nRm9yRGVmYXVsdE1hcmtWaW9sYXRpb24gc28gdGhlIG1hcmtpbmcgZG9uZSBieSBK
U09iamVjdAorICAgICAgICBkb2Vzbid0IHRyaWdnZXIgdGhlIGFzc2VydGlvbi4KKworICAgICAg
ICAqIHJ1bnRpbWUvSlNPYmplY3QuaDoKKyAgICAgICAgKEpTQzo6YXNPYmplY3QpOiBBZGRlZCBh
biBvdmVybG9hZCBmb3IgSlNDZWxsKiBhbmQgY2hhbmdlZCB0aGUgSlNWYWx1ZQorICAgICAgICB2
ZXJzaW9uIHRvIGNhbGwgaXQuCisgICAgICAgIChKU0M6OkpTVmFsdWU6OmdldCk6IFVzZSBhc09i
amVjdCB0byBhdm9pZCBhIGRpcmVjdCBzdGF0aWNfY2FzdC4KKworICAgICAgICAqIHJ1bnRpbWUv
SlNWYWx1ZS5oOiBNb3ZlZCBzb21lIHN0cmF5IGluY2x1ZGVzIHRoYXQgd2VyZSBvdXRzaWRlIHRo
ZQorICAgICAgICBoZWFkZXIgZ3VhcmQgaW5zaWRlIGl0LiBOb3Qgc3VyZSBob3cgdGhhdCBoYXBw
ZW5lZCEgUmVtb3ZlZCB0aGUKKyAgICAgICAgR0MtcmVsYXRlZCBtZW1iZXIgZnVuY3Rpb25zIG1h
cmtDaGlsZHJlbiwgaGFzQ2hpbGRyZW4sIG1hcmtlZCwgYW5kCisgICAgICAgIG1hcmtEaXJlY3Qu
CisKKyAgICAgICAgKiBydW50aW1lL0pTV3JhcHBlck9iamVjdC5oOiBNYWRlIG1hcmtDaGlsZHJl
biBwcml2YXRlLgorICAgICAgICAoSlNDOjpKU1dyYXBwZXJPYmplY3Q6OmNyZWF0ZVN0cnVjdHVy
ZSk6IEFkZGVkLiBGaXhlcyBhIGJ1ZyB3aGVyZSB0aGUKKyAgICAgICAgSGFzRGVmYXVsdE1hcmsg
Yml0IHdhcyBzZXQuCisKKyAgICAgICAgKiBydW50aW1lL01hcmtTdGFjay5jcHA6IFR3ZWFrZWQg
Zm9ybWF0dGluZy4KKworICAgICAgICAqIHJ1bnRpbWUvTWFya1N0YWNrLmg6IEFkZGVkIG1faXND
aGVja2luZ0ZvckRlZmF1bHRNYXJrVmlvbGF0aW9uIGFuZAorICAgICAgICBpbml0aWFsaXplZCBp
dCB0byBmYWxzZS4gTW92ZWQgdGhlIGFwcGVuZCBmdW5jdGlvbiBib2R5IGZyb20gaGVyZSB0bwor
ICAgICAgICBKU0NlbGwuaC4gQWRkZWQgYSBkZWNsYXJhdGlvbiBvZiBhIHByaXZhdGUgbWFya0No
aWxkcmVuIGZ1bmN0aW9uIHVzZWQKKyAgICAgICAgaW5zaWRlIHRoZSBkcmFpbiBmdW5jdGlvbi4K
KworICAgICAgICAqIHJ1bnRpbWUvU21hbGxTdHJpbmdzLmNwcDoKKyAgICAgICAgKEpTQzo6U21h
bGxTdHJpbmdzOjptYXJrQ2hpbGRyZW4pOiBDaGFuZ2VkIHRoZSBuYW1lIGFuZCBzdHlsZSBvZiB0
aGlzCisgICAgICAgIGZ1bmN0aW9uIHRvIG1hdGNoIG90aGVyIGZ1bmN0aW9ucy4gVGhpcyBhbGxv
d3MgdXMgdG8gc2hhcmUgdGhlIG5vcm1hbAorICAgICAgICBtYXJrIHN0YWNrIGNvZGUgcGF0aC4K
KworICAgICAgICAqIHJ1bnRpbWUvU21hbGxTdHJpbmdzLmg6IENoYW5nZWQgdGhlIG5hbWUgYW5k
IGludGVyZmFjZSBvZiBtYXJrIHRvCisgICAgICAgIHRoZSBtb3JlLW5vcm1hbCBtYXJrQ2hpbGRy
ZW4gc3R5bGUuCisKKyAgICAgICAgKiBydW50aW1lL1N0cnVjdHVyZS5oOiBNb3ZlZCB0aGUgYm9k
eSBvZiBtYXJrQWdncmVnYXRlIGludG8gdGhlCisgICAgICAgIEpTQ2VsbC5oIHRvIGF2b2lkIGEg
Y2lyY3VsYXIgZGVwZW5kZW5jeSB3aXRoIEpTQ2VsbC5oLgorCiAyMDA5LTA5LTAyICBOb3JiZXJ0
IExlc2VyICA8bm9yYmVydC5sZXNlckBub2tpYS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkg
RXJpYyBTZWlkZWwuCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAJKHJl
dmlzaW9uIDQ3OTc1KQorKysgSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTQwOSwxMSArMTQwOSw4IEBAIHZvaWQgQ29kZUJsb2NrOjpyZWZT
dHJ1Y3R1cmVzKEluc3RydWN0aW8KIAogdm9pZCBDb2RlQmxvY2s6Om1hcmtBZ2dyZWdhdGUoTWFy
a1N0YWNrJiBtYXJrU3RhY2spCiB7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2NvbnN0
YW50UmVnaXN0ZXJzLnNpemUoKTsgKytpKSB7Ci0gICAgICAgIGlmICghbV9jb25zdGFudFJlZ2lz
dGVyc1tpXS5tYXJrZWQoKSkKLSAgICAgICAgICAgIG1hcmtTdGFjay5hcHBlbmQobV9jb25zdGFu
dFJlZ2lzdGVyc1tpXS5qc1ZhbHVlKCkpOwotICAgIH0KLQorICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgbV9jb25zdGFudFJlZ2lzdGVycy5zaXplKCk7ICsraSkKKyAgICAgICAgbWFya1N0YWNr
LmFwcGVuZChtX2NvbnN0YW50UmVnaXN0ZXJzW2ldLmpzVmFsdWUoKSk7CiAgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBtX2Z1bmN0aW9uRXhwcnMuc2l6ZSgpOyArK2kpCiAgICAgICAgIG1fZnVu
Y3Rpb25FeHByc1tpXS0+bWFya0FnZ3JlZ2F0ZShtYXJrU3RhY2spOwogICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgbV9mdW5jdGlvbkRlY2xzLnNpemUoKTsgKytpKQpJbmRleDogSmF2YVNjcmlw
dENvcmUvaW50ZXJwcmV0ZXIvUmVnaXN0ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29y
ZS9pbnRlcnByZXRlci9SZWdpc3Rlci5oCShyZXZpc2lvbiA0Nzk3NSkKKysrIEphdmFTY3JpcHRD
b3JlL2ludGVycHJldGVyL1JlZ2lzdGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTU0LDkgKzU0LDYg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFJlZ2lzdGVyKEpTVmFsdWUpOwogCiAgICAgICAg
IEpTVmFsdWUganNWYWx1ZSgpIGNvbnN0OwotCi0gICAgICAgIGJvb2wgbWFya2VkKCkgY29uc3Q7
Ci0gICAgICAgIHZvaWQgbWFya0NoaWxkcmVuKE1hcmtTdGFjayYpOwogICAgICAgICAKICAgICAg
ICAgUmVnaXN0ZXIoSlNBY3RpdmF0aW9uKik7CiAgICAgICAgIFJlZ2lzdGVyKENhbGxGcmFtZSop
OwpAQCAtMTE0LDExICsxMTEsNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICB7CiAgICAgICAgIHJl
dHVybiBKU1ZhbHVlOjpkZWNvZGUodS52YWx1ZSk7CiAgICAgfQotICAgIAotICAgIEFMV0FZU19J
TkxJTkUgYm9vbCBSZWdpc3Rlcjo6bWFya2VkKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVy
biBqc1ZhbHVlKCkubWFya2VkKCk7Ci0gICAgfQogCiAgICAgLy8gSW50ZXJwcmV0ZXIgZnVuY3Rp
b25zCiAKSW5kZXg6IEphdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVicy5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzLmNwcAkocmV2aXNpb24gNDc5NzUpCisrKyBK
YXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMzU4LDgg
KzIzNTgsNiBAQCBERUZJTkVfU1RVQl9GVU5DVElPTihpbnQsIG9wX2VxKQogICAgIGlmIChzcmMx
LmlzTnVsbCgpKQogICAgICAgICByZXR1cm4gc3JjMi5pc0NlbGwoKSAmJiBhc0NlbGwoc3JjMikt
PnN0cnVjdHVyZSgpLT50eXBlSW5mbygpLm1hc3F1ZXJhZGVzQXNVbmRlZmluZWQoKTsKIAotICAg
IEFTU0VSVChzcmMxLmlzQ2VsbCgpKTsKLQogICAgIEpTQ2VsbCogY2VsbDEgPSBhc0NlbGwoc3Jj
MSk7CiAKICAgICBpZiAoY2VsbDEtPmlzU3RyaW5nKCkpIHsKQEAgLTIzNzUsMjEgKzIzNzMsMTgg
QEAgREVGSU5FX1NUVUJfRlVOQ1RJT04oaW50LCBvcF9lcSkKICAgICAgICAgaWYgKHNyYzIuaXNG
YWxzZSgpKQogICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEpTU3RyaW5nKj4oY2VsbDEp
LT52YWx1ZSgpLnRvRG91YmxlKCkgPT0gMC4wOwogCi0gICAgICAgIEFTU0VSVChzcmMyLmlzQ2Vs
bCgpKTsKICAgICAgICAgSlNDZWxsKiBjZWxsMiA9IGFzQ2VsbChzcmMyKTsKICAgICAgICAgaWYg
KGNlbGwyLT5pc1N0cmluZygpKQogICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEpTU3Ry
aW5nKj4oY2VsbDEpLT52YWx1ZSgpID09IHN0YXRpY19jYXN0PEpTU3RyaW5nKj4oY2VsbDIpLT52
YWx1ZSgpOwogCi0gICAgICAgIEFTU0VSVChjZWxsMi0+aXNPYmplY3QoKSk7Ci0gICAgICAgIHNy
YzIgPSBzdGF0aWNfY2FzdDxKU09iamVjdCo+KGNlbGwyKS0+dG9QcmltaXRpdmUoc3RhY2tGcmFt
ZS5jYWxsRnJhbWUpOworICAgICAgICBzcmMyID0gYXNPYmplY3QoY2VsbDIpLT50b1ByaW1pdGl2
ZShzdGFja0ZyYW1lLmNhbGxGcmFtZSk7CiAgICAgICAgIENIRUNLX0ZPUl9FWENFUFRJT04oKTsK
ICAgICAgICAgZ290byBzdGFydDsKICAgICB9CiAKLSAgICBBU1NFUlQoY2VsbDEtPmlzT2JqZWN0
KCkpOwogICAgIGlmIChzcmMyLmlzT2JqZWN0KCkpCi0gICAgICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxKU09iamVjdCo+KGNlbGwxKSA9PSBhc09iamVjdChzcmMyKTsKLSAgICBzcmMxID0gc3RhdGlj
X2Nhc3Q8SlNPYmplY3QqPihjZWxsMSktPnRvUHJpbWl0aXZlKHN0YWNrRnJhbWUuY2FsbEZyYW1l
KTsKKyAgICAgICAgcmV0dXJuIGFzT2JqZWN0KGNlbGwxKSA9PSBhc09iamVjdChzcmMyKTsKKyAg
ICBzcmMxID0gYXNPYmplY3QoY2VsbDEpLT50b1ByaW1pdGl2ZShzdGFja0ZyYW1lLmNhbGxGcmFt
ZSk7CiAgICAgQ0hFQ0tfRk9SX0VYQ0VQVElPTigpOwogICAgIGdvdG8gc3RhcnQ7CiB9CkluZGV4
OiBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ0xpc3QuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0FyZ0xpc3QuaAkocmV2aXNpb24gNDc5NzUpCisrKyBKYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0FyZ0xpc3QuaAkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDYgQEAKIC8q
CiAgKiAgQ29weXJpZ2h0IChDKSAxOTk5LTIwMDEgSGFycmkgUG9ydGVuIChwb3J0ZW5Aa2RlLm9y
ZykKLSAqICBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDcsIDIwMDgsIDIwMDkgQXBwbGUgQ29tcHV0
ZXIsIEluYy4KKyAqICBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDcsIDIwMDgsIDIwMDkgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBz
b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiAgbW9kaWZ5IGl0IHVu
ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTIzLDEz
ICsyMywxNCBAQAogI2RlZmluZSBBcmdMaXN0X2gKIAogI2luY2x1ZGUgIlJlZ2lzdGVyLmgiCi0K
ICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgog
I2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNlIEpTQyB7Ci0gICAgCisKKyAgICBj
bGFzcyBNYXJrU3RhY2s7CisKICAgICBjbGFzcyBNYXJrZWRBcmd1bWVudEJ1ZmZlciA6IHB1Ymxp
YyBOb25jb3B5YWJsZSB7CiAgICAgcHJpdmF0ZToKICAgICAgICAgc3RhdGljIGNvbnN0IHVuc2ln
bmVkIGlubGluZUNhcGFjaXR5ID0gODsKSW5kZXg6IEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29s
bGVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbGxlY3Rv
ci5jcHAJKHJldmlzaW9uIDQ3OTc1KQorKysgSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2xsZWN0
b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NDcsMTAgKzc0Nyw4IEBAIHZvaWQgSGVhcDo6bWFy
a0NvbnNlcnZhdGl2ZWx5KE1hcmtTdGFjayYKICAgICAgICAgICAgIC8vIE1hcmsgdGhlIHByaW1h
cnkgaGVhcAogICAgICAgICAgICAgZm9yIChzaXplX3QgYmxvY2sgPSAwOyBibG9jayA8IHVzZWRQ
cmltYXJ5QmxvY2tzOyBibG9jaysrKSB7CiAgICAgICAgICAgICAgICAgaWYgKChwcmltYXJ5Qmxv
Y2tzW2Jsb2NrXSA9PSBibG9ja0FkZHIpICYgKG9mZnNldCA8PSBsYXN0Q2VsbE9mZnNldCkpIHsK
LSAgICAgICAgICAgICAgICAgICAgaWYgKHJlaW50ZXJwcmV0X2Nhc3Q8Q29sbGVjdG9yQ2VsbCo+
KHhBc0JpdHMpLT51LmZyZWVDZWxsLnplcm9JZkZyZWUgIT0gMCkgeworICAgICAgICAgICAgICAg
ICAgICBpZiAocmVpbnRlcnByZXRfY2FzdDxDb2xsZWN0b3JDZWxsKj4oeEFzQml0cyktPnUuZnJl
ZUNlbGwuemVyb0lmRnJlZSkKICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmtTdGFjay5hcHBl
bmQocmVpbnRlcnByZXRfY2FzdDxKU0NlbGwqPih4QXNCaXRzKSk7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICBtYXJrU3RhY2suZHJhaW4oKTsKLSAgICAgICAgICAgICAgICAgICAgfQogICAgICAg
ICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CkBA
IC0xMDEwLDEzICsxMDA4LDggQEAgdm9pZCBIZWFwOjptYXJrUHJvdGVjdGVkT2JqZWN0cyhNYXJr
U3RhYwogICAgICAgICBtX3Byb3RlY3RlZFZhbHVlc011dGV4LT5sb2NrKCk7CiAKICAgICBQcm90
ZWN0Q291bnRTZXQ6Oml0ZXJhdG9yIGVuZCA9IG1fcHJvdGVjdGVkVmFsdWVzLmVuZCgpOwotICAg
IGZvciAoUHJvdGVjdENvdW50U2V0OjppdGVyYXRvciBpdCA9IG1fcHJvdGVjdGVkVmFsdWVzLmJl
Z2luKCk7IGl0ICE9IGVuZDsgKytpdCkgewotICAgICAgICBKU0NlbGwqIHZhbCA9IGl0LT5maXJz
dDsKLSAgICAgICAgaWYgKCF2YWwtPm1hcmtlZCgpKSB7Ci0gICAgICAgICAgICBtYXJrU3RhY2su
YXBwZW5kKHZhbCk7Ci0gICAgICAgICAgICBtYXJrU3RhY2suZHJhaW4oKTsKLSAgICAgICAgfQot
ICAgIH0KKyAgICBmb3IgKFByb3RlY3RDb3VudFNldDo6aXRlcmF0b3IgaXQgPSBtX3Byb3RlY3Rl
ZFZhbHVlcy5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpCisgICAgICAgIG1hcmtTdGFjay5hcHBl
bmQoaXQtPmZpcnN0KTsKIAogICAgIGlmIChtX3Byb3RlY3RlZFZhbHVlc011dGV4KQogICAgICAg
ICBtX3Byb3RlY3RlZFZhbHVlc011dGV4LT51bmxvY2soKTsKQEAgLTExNDcsMTAgKzExNDAsMTAg
QEAgYm9vbCBIZWFwOjpjb2xsZWN0KCkKICAgICBtYXJrUHJvdGVjdGVkT2JqZWN0cyhtYXJrU3Rh
Y2spOwogICAgIGlmIChtX21hcmtMaXN0U2V0ICYmIG1fbWFya0xpc3RTZXQtPnNpemUoKSkKICAg
ICAgICAgTWFya2VkQXJndW1lbnRCdWZmZXI6Om1hcmtMaXN0cyhtYXJrU3RhY2ssICptX21hcmtM
aXN0U2V0KTsKLSAgICBpZiAobV9nbG9iYWxEYXRhLT5leGNlcHRpb24gJiYgIW1fZ2xvYmFsRGF0
YS0+ZXhjZXB0aW9uLm1hcmtlZCgpKQorICAgIGlmIChtX2dsb2JhbERhdGEtPmV4Y2VwdGlvbikK
ICAgICAgICAgbWFya1N0YWNrLmFwcGVuZChtX2dsb2JhbERhdGEtPmV4Y2VwdGlvbik7CiAgICAg
bV9nbG9iYWxEYXRhLT5pbnRlcnByZXRlci0+cmVnaXN0ZXJGaWxlKCkubWFya0NhbGxGcmFtZXMo
bWFya1N0YWNrLCB0aGlzKTsKLSAgICBtX2dsb2JhbERhdGEtPnNtYWxsU3RyaW5ncy5tYXJrKCk7
CisgICAgbV9nbG9iYWxEYXRhLT5zbWFsbFN0cmluZ3MubWFya0NoaWxkcmVuKG1hcmtTdGFjayk7
CiAgICAgaWYgKG1fZ2xvYmFsRGF0YS0+ZnVuY3Rpb25Db2RlQmxvY2tCZWluZ1JlcGFyc2VkKQog
ICAgICAgICBtX2dsb2JhbERhdGEtPmZ1bmN0aW9uQ29kZUJsb2NrQmVpbmdSZXBhcnNlZC0+bWFy
a0FnZ3JlZ2F0ZShtYXJrU3RhY2spOwogICAgIGlmIChtX2dsb2JhbERhdGEtPmZpcnN0U3RyaW5n
aWZpZXJUb01hcmspCkBAIC0xMjU0LDcgKzEyNDcsNyBAQCBzdGF0aWMgY29uc3QgY2hhciogdHlw
ZU5hbWUoSlNDZWxsKiBjZWxsCiAgICAgaWYgKGNlbGwtPmlzR2V0dGVyU2V0dGVyKCkpCiAgICAg
ICAgIHJldHVybiAiZ2V0dGVyc2V0dGVyIjsKICAgICBBU1NFUlQoY2VsbC0+aXNPYmplY3QoKSk7
Ci0gICAgY29uc3QgQ2xhc3NJbmZvKiBpbmZvID0gc3RhdGljX2Nhc3Q8SlNPYmplY3QqPihjZWxs
KS0+Y2xhc3NJbmZvKCk7CisgICAgY29uc3QgQ2xhc3NJbmZvKiBpbmZvID0gY2VsbC0+Y2xhc3NJ
bmZvKCk7CiAgICAgcmV0dXJuIGluZm8gPyBpbmZvLT5jbGFzc05hbWUgOiAiT2JqZWN0IjsKIH0K
IApJbmRleDogSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZXR0ZXJTZXR0ZXIuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2V0dGVyU2V0dGVyLmNwcAkocmV2aXNpb24g
NDc5NzUpCisrKyBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dldHRlclNldHRlci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTMyLDkgKzMyLDkgQEAgdm9pZCBHZXR0ZXJTZXR0ZXI6Om1hcmtDaGlsZHJl
bihNYXJrU3RhYwogewogICAgIEpTQ2VsbDo6bWFya0NoaWxkcmVuKG1hcmtTdGFjayk7CiAKLSAg
ICBpZiAobV9nZXR0ZXIgJiYgIW1fZ2V0dGVyLT5tYXJrZWQoKSkKKyAgICBpZiAobV9nZXR0ZXIp
CiAgICAgICAgIG1hcmtTdGFjay5hcHBlbmQobV9nZXR0ZXIpOwotICAgIGlmIChtX3NldHRlciAm
JiAhbV9zZXR0ZXItPm1hcmtlZCgpKQorICAgIGlmIChtX3NldHRlcikKICAgICAgICAgbWFya1N0
YWNrLmFwcGVuZChtX3NldHRlcik7CiB9CiAKSW5kZXg6IEphdmFTY3JpcHRDb3JlL3J1bnRpbWUv
R2xvYmFsRXZhbEZ1bmN0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9HbG9iYWxFdmFsRnVuY3Rpb24uaAkocmV2aXNpb24gNDc5NzUpCisrKyBKYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0dsb2JhbEV2YWxGdW5jdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw2ICsz
NSwxMSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgR2xvYmFsRXZhbEZ1bmN0aW9uKEV4ZWNT
dGF0ZSosIFBhc3NSZWZQdHI8U3RydWN0dXJlPiwgaW50IGxlbiwgY29uc3QgSWRlbnRpZmllciYs
IE5hdGl2ZUZ1bmN0aW9uLCBKU0dsb2JhbE9iamVjdCogZXhwZWN0ZWRUaGlzT2JqZWN0KTsKICAg
ICAgICAgSlNHbG9iYWxPYmplY3QqIGNhY2hlZEdsb2JhbE9iamVjdCgpIGNvbnN0IHsgcmV0dXJu
IG1fY2FjaGVkR2xvYmFsT2JqZWN0OyB9CiAKKyAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8U3Ry
dWN0dXJlPiBjcmVhdGVTdHJ1Y3R1cmUoSlNWYWx1ZSBwcm90b3R5cGUpIAorICAgICAgICB7IAor
ICAgICAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHByb3RvdHlwZSwgVHlwZUluZm8o
T2JqZWN0VHlwZSwgSW1wbGVtZW50c0hhc0luc3RhbmNlIHwgSGFzU3RhbmRhcmRHZXRPd25Qcm9w
ZXJ0eVNsb3QpKTsKKyAgICAgICAgfQorCiAgICAgcHJpdmF0ZToKICAgICAgICAgdmlydHVhbCB2
b2lkIG1hcmtDaGlsZHJlbihNYXJrU3RhY2smKTsKIApJbmRleDogSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0FycmF5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Fy
cmF5LmgJKHJldmlzaW9uIDQ3OTc1KQorKysgSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5
LmgJKHdvcmtpbmcgY29weSkKQEAgLTEyMSwyMyArMTIxLDMyIEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgIEpTQXJyYXkqIGNvbnN0cnVjdEFycmF5KEV4ZWNTdGF0ZSosIEpTVmFsdWUgc2luZ2xlSXRl
bVZhbHVlKTsKICAgICBKU0FycmF5KiBjb25zdHJ1Y3RBcnJheShFeGVjU3RhdGUqLCBjb25zdCBB
cmdMaXN0JiB2YWx1ZXMpOwogCisgICAgaW5saW5lIEpTQXJyYXkqIGFzQXJyYXkoSlNDZWxsKiBj
ZWxsKQorICAgIHsKKyAgICAgICAgQVNTRVJUKGNlbGwtPmluaGVyaXRzKCZKU0FycmF5OjppbmZv
KSk7CisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxKU0FycmF5Kj4oY2VsbCk7CisgICAgfQor
CiAgICAgaW5saW5lIEpTQXJyYXkqIGFzQXJyYXkoSlNWYWx1ZSB2YWx1ZSkKICAgICB7Ci0gICAg
ICAgIEFTU0VSVChhc09iamVjdCh2YWx1ZSktPmluaGVyaXRzKCZKU0FycmF5OjppbmZvKSk7Ci0g
ICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxKU0FycmF5Kj4oYXNPYmplY3QodmFsdWUpKTsKKyAg
ICAgICAgcmV0dXJuIGFzQXJyYXkodmFsdWUuYXNDZWxsKCkpOwogICAgIH0KIAotICAgIGlubGlu
ZSBib29sIGlzSlNBcnJheShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIEpTVmFsdWUgdikgeyBy
ZXR1cm4gdi5pc0NlbGwoKSAmJiB2LmFzQ2VsbCgpLT52cHRyKCkgPT0gZ2xvYmFsRGF0YS0+anNB
cnJheVZQdHI7IH0KKyAgICBpbmxpbmUgYm9vbCBpc0pTQXJyYXkoSlNHbG9iYWxEYXRhKiBnbG9i
YWxEYXRhLCBKU1ZhbHVlIHYpCisgICAgeworICAgICAgICByZXR1cm4gdi5pc0NlbGwoKSAmJiB2
LmFzQ2VsbCgpLT52cHRyKCkgPT0gZ2xvYmFsRGF0YS0+anNBcnJheVZQdHI7CisgICAgfQogICAg
IGlubGluZSBib29sIGlzSlNBcnJheShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIEpTQ2VsbCog
Y2VsbCkgeyByZXR1cm4gY2VsbC0+dnB0cigpID09IGdsb2JhbERhdGEtPmpzQXJyYXlWUHRyOyB9
CiAKLSAgICB2b2lkIEpTQXJyYXk6Om1hcmtDaGlsZHJlbkRpcmVjdChNYXJrU3RhY2smIG1hcmtT
dGFjaykgeworICAgIGlubGluZSB2b2lkIEpTQXJyYXk6Om1hcmtDaGlsZHJlbkRpcmVjdChNYXJr
U3RhY2smIG1hcmtTdGFjaykKKyAgICB7CiAgICAgICAgIEpTT2JqZWN0OjptYXJrQ2hpbGRyZW5E
aXJlY3QobWFya1N0YWNrKTsKICAgICAgICAgCiAgICAgICAgIEFycmF5U3RvcmFnZSogc3RvcmFn
ZSA9IG1fc3RvcmFnZTsKLSAgICAgICAgCisKICAgICAgICAgdW5zaWduZWQgdXNlZFZlY3Rvckxl
bmd0aCA9IHN0ZDo6bWluKHN0b3JhZ2UtPm1fbGVuZ3RoLCBzdG9yYWdlLT5tX3ZlY3Rvckxlbmd0
aCk7CiAgICAgICAgIG1hcmtTdGFjay5hcHBlbmRWYWx1ZXMoc3RvcmFnZS0+bV92ZWN0b3IsIHVz
ZWRWZWN0b3JMZW5ndGgsIE1heUNvbnRhaW5OdWxsVmFsdWVzKTsKLSAgICAgICAgCisKICAgICAg
ICAgaWYgKFNwYXJzZUFycmF5VmFsdWVNYXAqIG1hcCA9IHN0b3JhZ2UtPm1fc3BhcnNlVmFsdWVN
YXApIHsKICAgICAgICAgICAgIFNwYXJzZUFycmF5VmFsdWVNYXA6Oml0ZXJhdG9yIGVuZCA9IG1h
cC0+ZW5kKCk7CiAgICAgICAgICAgICBmb3IgKFNwYXJzZUFycmF5VmFsdWVNYXA6Oml0ZXJhdG9y
IGl0ID0gbWFwLT5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpCkBAIC0xNDUsNiArMTU0LDI4IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgICAgICB9CiAgICAgfQogCisgICAgaW5saW5lIHZvaWQgTWFy
a1N0YWNrOjptYXJrQ2hpbGRyZW4oSlNDZWxsKiBjZWxsKQorICAgIHsKKyAgICAgICAgQVNTRVJU
KEhlYXA6OmlzQ2VsbE1hcmtlZChjZWxsKSk7CisgICAgICAgIGlmIChjZWxsLT5zdHJ1Y3R1cmUo
KS0+dHlwZUluZm8oKS5oYXNEZWZhdWx0TWFyaygpKSB7CisjaWZkZWYgTkRFQlVHCisgICAgICAg
ICAgICBhc09iamVjdChjZWxsKS0+bWFya0NoaWxkcmVuRGlyZWN0KCp0aGlzKTsKKyNlbHNlCisg
ICAgICAgICAgICBBU1NFUlQoIW1faXNDaGVja2luZ0ZvckRlZmF1bHRNYXJrVmlvbGF0aW9uKTsK
KyAgICAgICAgICAgIG1faXNDaGVja2luZ0ZvckRlZmF1bHRNYXJrVmlvbGF0aW9uID0gdHJ1ZTsK
KyAgICAgICAgICAgIGNlbGwtPm1hcmtDaGlsZHJlbigqdGhpcyk7CisgICAgICAgICAgICBBU1NF
UlQobV9pc0NoZWNraW5nRm9yRGVmYXVsdE1hcmtWaW9sYXRpb24pOworICAgICAgICAgICAgbV9p
c0NoZWNraW5nRm9yRGVmYXVsdE1hcmtWaW9sYXRpb24gPSBmYWxzZTsKKyNlbmRpZgorICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGlmIChjZWxsLT52cHRyKCkgPT0gbV9q
c0FycmF5VlB0cikgeworICAgICAgICAgICAgYXNBcnJheShjZWxsKS0+bWFya0NoaWxkcmVuRGly
ZWN0KCp0aGlzKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBjZWxs
LT5tYXJrQ2hpbGRyZW4oKnRoaXMpOworICAgIH0KKwogICAgIGlubGluZSB2b2lkIE1hcmtTdGFj
azo6ZHJhaW4oKQogICAgIHsKICAgICAgICAgd2hpbGUgKCFtX21hcmtTZXRzLmlzRW1wdHkoKSB8
fCAhbV92YWx1ZXMuaXNFbXB0eSgpKSB7CkBAIC0xNTcsNDcgKzE4OCwzNCBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICAgICAgICAgICAgICBBU1NFUlQoY3VycmVudC5tX3ZhbHVlcyAhPSBlbmQpOwog
ICAgICAgICAgICAgZmluZE5leHRVbm1hcmtlZE51bGxWYWx1ZToKICAgICAgICAgICAgICAgICBB
U1NFUlQoY3VycmVudC5tX3ZhbHVlcyAhPSBlbmQpOwotICAgICAgICAgICAgICAgIEpTVmFsdWUg
diA9ICpjdXJyZW50Lm1fdmFsdWVzOworICAgICAgICAgICAgICAgIEpTVmFsdWUgdmFsdWUgPSAq
Y3VycmVudC5tX3ZhbHVlczsKICAgICAgICAgICAgICAgICBjdXJyZW50Lm1fdmFsdWVzKys7Ci0g
ICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgaWYgKCF2IHx8IHYubWFya2VkKCkpIHsK
KworICAgICAgICAgICAgICAgIGlmICghdmFsdWUgfHwgIXZhbHVlLmlzQ2VsbCgpIHx8IEhlYXA6
OmlzQ2VsbE1hcmtlZCh2YWx1ZS5hc0NlbGwoKSkpIHsKICAgICAgICAgICAgICAgICAgICAgaWYg
KGN1cnJlbnQubV92YWx1ZXMgPT0gZW5kKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBtX21h
cmtTZXRzLnJlbW92ZUxhc3QoKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwog
ICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmluZE5leHRV
bm1hcmtlZE51bGxWYWx1ZTsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgCi0g
ICAgICAgICAgICAgICAgSlNDZWxsKiBjdXJyZW50Q2VsbCA9IHYuYXNDZWxsKCk7Ci0gICAgICAg
ICAgICAgICAgY3VycmVudENlbGwtPm1hcmtDZWxsRGlyZWN0KCk7Ci0gICAgICAgICAgICAgICAg
aWYgKGN1cnJlbnRDZWxsLT5zdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS50eXBlKCkgPCBDb21wb3Vu
ZFR5cGUpIHsKKworICAgICAgICAgICAgICAgIEpTQ2VsbCogY2VsbCA9IHZhbHVlLmFzQ2VsbCgp
OworICAgICAgICAgICAgICAgIEhlYXA6Om1hcmtDZWxsKGNlbGwpOworICAgICAgICAgICAgICAg
IGlmIChjZWxsLT5zdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS50eXBlKCkgPCBDb21wb3VuZFR5cGUp
IHsKICAgICAgICAgICAgICAgICAgICAgaWYgKGN1cnJlbnQubV92YWx1ZXMgPT0gZW5kKSB7CiAg
ICAgICAgICAgICAgICAgICAgICAgICBtX21hcmtTZXRzLnJlbW92ZUxhc3QoKTsKICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICAgICAgICAgIGdvdG8gZmluZE5leHRVbm1hcmtlZE51bGxWYWx1ZTsKICAgICAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICAgICAgCisKICAgICAgICAgICAgICAgICBpZiAoY3VycmVudC5t
X3ZhbHVlcyA9PSBlbmQpCiAgICAgICAgICAgICAgICAgICAgIG1fbWFya1NldHMucmVtb3ZlTGFz
dCgpOwogCi0gICAgICAgICAgICAgICAgaWYgKGN1cnJlbnRDZWxsLT5zdHJ1Y3R1cmUoKS0+dHlw
ZUluZm8oKS5oYXNEZWZhdWx0TWFyaygpKQotICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2Fz
dDxKU09iamVjdCo+KGN1cnJlbnRDZWxsKS0+bWFya0NoaWxkcmVuRGlyZWN0KCp0aGlzKTsKLSAg
ICAgICAgICAgICAgICBlbHNlIGlmIChjdXJyZW50Q2VsbC0+dnB0cigpID09IG1fanNBcnJheVZQ
dHIpCi0gICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PEpTQXJyYXkqPihjdXJyZW50Q2Vs
bCktPm1hcmtDaGlsZHJlbkRpcmVjdCgqdGhpcyk7Ci0gICAgICAgICAgICAgICAgZWxzZQotICAg
ICAgICAgICAgICAgICAgICBjdXJyZW50Q2VsbC0+bWFya0NoaWxkcmVuKCp0aGlzKTsKLSAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgIHdoaWxlICghbV92YWx1ZXMuaXNFbXB0eSgpKSB7Ci0gICAg
ICAgICAgICAgICAgSlNDZWxsKiBjdXJyZW50ID0gbV92YWx1ZXMucmVtb3ZlTGFzdCgpOwotICAg
ICAgICAgICAgICAgIEFTU0VSVChjdXJyZW50LT5tYXJrZWQoKSk7Ci0gICAgICAgICAgICAgICAg
aWYgKGN1cnJlbnQtPnN0cnVjdHVyZSgpLT50eXBlSW5mbygpLmhhc0RlZmF1bHRNYXJrKCkpCi0g
ICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PEpTT2JqZWN0Kj4oY3VycmVudCktPm1hcmtD
aGlsZHJlbkRpcmVjdCgqdGhpcyk7Ci0gICAgICAgICAgICAgICAgZWxzZSBpZiAoY3VycmVudC0+
dnB0cigpID09IG1fanNBcnJheVZQdHIpCi0gICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0
PEpTQXJyYXkqPihjdXJyZW50KS0+bWFya0NoaWxkcmVuRGlyZWN0KCp0aGlzKTsKLSAgICAgICAg
ICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIGN1cnJlbnQtPm1hcmtDaGlsZHJlbigq
dGhpcyk7CisgICAgICAgICAgICAgICAgbWFya0NoaWxkcmVuKGNlbGwpOwogICAgICAgICAgICAg
fQorICAgICAgICAgICAgd2hpbGUgKCFtX3ZhbHVlcy5pc0VtcHR5KCkpCisgICAgICAgICAgICAg
ICAgbWFya0NoaWxkcmVuKG1fdmFsdWVzLnJlbW92ZUxhc3QoKSk7CiAgICAgICAgIH0KICAgICB9
CiAgICAgCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuY3BwCShyZXZpc2lvbiA0Nzk3NSkK
KysrIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTA1LDcgKzEwNSw3IEBAIFVTdHJpbmcgSlNDZWxsOjpnZXRTdHJpbmcoKSBjb25zdAogCiBKU09i
amVjdCogSlNDZWxsOjpnZXRPYmplY3QoKQogewotICAgIHJldHVybiBpc09iamVjdCgpID8gc3Rh
dGljX2Nhc3Q8SlNPYmplY3QqPih0aGlzKSA6IDA7CisgICAgcmV0dXJuIGlzT2JqZWN0KCkgPyBh
c09iamVjdCh0aGlzKSA6IDA7CiB9CiAKIGNvbnN0IEpTT2JqZWN0KiBKU0NlbGw6OmdldE9iamVj
dCgpIGNvbnN0CkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgJKHJldmlzaW9uIDQ3OTc1KQor
KysgSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaAkod29ya2luZyBjb3B5KQpAQCAtMjMs
MTEgKzIzLDEyIEBACiAjaWZuZGVmIEpTQ2VsbF9oCiAjZGVmaW5lIEpTQ2VsbF9oCiAKLSNpbmNs
dWRlIDx3dGYvTm9uY29weWFibGUuaD4KLSNpbmNsdWRlICJTdHJ1Y3R1cmUuaCIKLSNpbmNsdWRl
ICJKU1ZhbHVlLmgiCi0jaW5jbHVkZSAiSlNJbW1lZGlhdGUuaCIKICNpbmNsdWRlICJDb2xsZWN0
b3IuaCIKKyNpbmNsdWRlICJKU0ltbWVkaWF0ZS5oIgorI2luY2x1ZGUgIkpTVmFsdWUuaCIKKyNp
bmNsdWRlICJNYXJrU3RhY2suaCIKKyNpbmNsdWRlICJTdHJ1Y3R1cmUuaCIKKyNpbmNsdWRlIDx3
dGYvTm9uY29weWFibGUuaD4KIAogbmFtZXNwYWNlIEpTQyB7CiAKQEAgLTg3LDkgKzg4LDcgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQqIG9wZXJhdG9yIG5ldyhzaXplX3QsIEpTR2xv
YmFsRGF0YSopOwogICAgICAgICB2b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90LCB2b2lkKiBwbGFj
ZW1lbnROZXdEZXN0aW5hdGlvbikgeyByZXR1cm4gcGxhY2VtZW50TmV3RGVzdGluYXRpb247IH0K
IAotICAgICAgICB2b2lkIG1hcmtDZWxsRGlyZWN0KCk7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBt
YXJrQ2hpbGRyZW4oTWFya1N0YWNrJik7Ci0gICAgICAgIGJvb2wgbWFya2VkKCkgY29uc3Q7CiAK
ICAgICAgICAgLy8gT2JqZWN0IG9wZXJhdGlvbnMsIHdpdGggdGhlIHRvT2JqZWN0IG9wZXJhdGlv
biBpbmNsdWRlZC4KICAgICAgICAgdmlydHVhbCBjb25zdCBDbGFzc0luZm8qIGNsYXNzSW5mbygp
IGNvbnN0OwpAQCAtMTEzLDYgKzExMiw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBTdHJ1
Y3R1cmUqIG1fc3RydWN0dXJlOwogICAgIH07CiAKKyAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGRl
cHJlY2F0ZSB0aGlzIGFuZCBqdXN0IHVzZSBKU1ZhbHVlOjphc0NlbGwoKSBpbnN0ZWFkLgogICAg
IEpTQ2VsbCogYXNDZWxsKEpTVmFsdWUpOwogCiAgICAgaW5saW5lIEpTQ2VsbCogYXNDZWxsKEpT
VmFsdWUgdmFsdWUpCkBAIC0xNTYsMTkgKzE1Niw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICByZXR1cm4gbV9zdHJ1Y3R1cmU7CiAgICAgfQogCi0gICAgaW5saW5lIGJvb2wgSlNDZWxsOjpt
YXJrZWQoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIEhlYXA6OmlzQ2VsbE1hcmtlZCh0
aGlzKTsKLSAgICB9Ci0KLSAgICBpbmxpbmUgdm9pZCBKU0NlbGw6Om1hcmtDZWxsRGlyZWN0KCkK
LSAgICB7Ci0gICAgICAgIEhlYXA6Om1hcmtDZWxsKHRoaXMpOwotICAgIH0KLQogICAgIGlubGlu
ZSB2b2lkIEpTQ2VsbDo6bWFya0NoaWxkcmVuKE1hcmtTdGFjayYpCiAgICAgewotICAgICAgICBB
U1NFUlQobWFya2VkKCkpOwogICAgIH0KIAogICAgIGlubGluZSB2b2lkKiBKU0NlbGw6Om9wZXJh
dG9yIG5ldyhzaXplX3Qgc2l6ZSwgSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhKQpAQCAtMjM3LDIz
ICsyMjYsNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0K
IAotICAgIGlubGluZSB2b2lkIEpTVmFsdWU6Om1hcmtEaXJlY3QoKQotICAgIHsKLSAgICAgICAg
QVNTRVJUKCFtYXJrZWQoKSk7Ci0gICAgICAgIGFzQ2VsbCgpLT5tYXJrQ2VsbERpcmVjdCgpOwot
ICAgIH0KLQotICAgIGlubGluZSB2b2lkIEpTVmFsdWU6Om1hcmtDaGlsZHJlbihNYXJrU3RhY2sm
IG1hcmtTdGFjaykKLSAgICB7Ci0gICAgICAgIEFTU0VSVChtYXJrZWQoKSk7Ci0gICAgICAgIGFz
Q2VsbCgpLT5tYXJrQ2hpbGRyZW4obWFya1N0YWNrKTsKLSAgICB9Ci0KLSAgICBpbmxpbmUgYm9v
bCBKU1ZhbHVlOjptYXJrZWQoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuICFpc0NlbGwo
KSB8fCBhc0NlbGwoKS0+bWFya2VkKCk7Ci0gICAgfQotCiAjaWYgIVVTRShKU1ZBTFVFMzJfNjQp
CiAgICAgQUxXQVlTX0lOTElORSBKU0NlbGwqIEpTVmFsdWU6OmFzQ2VsbCgpIGNvbnN0CiAgICAg
ewpAQCAtMzQxLDEyICszMTMsNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIHJldHVy
biBhc0NlbGwoKS0+Z2V0SlNOdW1iZXIoKTsKICAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKICAg
ICB9Ci0gICAgCi0gICAgaW5saW5lIGJvb2wgSlNWYWx1ZTo6aGFzQ2hpbGRyZW4oKSBjb25zdAot
ICAgIHsKLSAgICAgICAgcmV0dXJuIGFzQ2VsbCgpLT5zdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS50
eXBlKCkgPj0gQ29tcG91bmRUeXBlOwotICAgIH0KLSAgICAKIAogICAgIGlubGluZSBKU09iamVj
dCogSlNWYWx1ZTo6dG9PYmplY3QoRXhlY1N0YXRlKiBleGVjKSBjb25zdAogICAgIHsKQEAgLTM2
MCwxNCArMzI2LDI3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgQUxXQVlTX0lOTElORSB2b2lk
IE1hcmtTdGFjazo6YXBwZW5kKEpTQ2VsbCogY2VsbCkKICAgICB7CisgICAgICAgIEFTU0VSVCgh
bV9pc0NoZWNraW5nRm9yRGVmYXVsdE1hcmtWaW9sYXRpb24pOwogICAgICAgICBBU1NFUlQoY2Vs
bCk7Ci0gICAgICAgIGlmIChjZWxsLT5tYXJrZWQoKSkKKyAgICAgICAgaWYgKEhlYXA6OmlzQ2Vs
bE1hcmtlZChjZWxsKSkKICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgY2VsbC0+bWFya0Nl
bGxEaXJlY3QoKTsKKyAgICAgICAgSGVhcDo6bWFya0NlbGwoY2VsbCk7CiAgICAgICAgIGlmIChj
ZWxsLT5zdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS50eXBlKCkgPj0gQ29tcG91bmRUeXBlKQogICAg
ICAgICAgICAgbV92YWx1ZXMuYXBwZW5kKGNlbGwpOwogICAgIH0KIAorICAgIEFMV0FZU19JTkxJ
TkUgdm9pZCBNYXJrU3RhY2s6OmFwcGVuZChKU1ZhbHVlIHZhbHVlKQorICAgIHsKKyAgICAgICAg
QVNTRVJUKHZhbHVlKTsKKyAgICAgICAgaWYgKHZhbHVlLmlzQ2VsbCgpKQorICAgICAgICAgICAg
YXBwZW5kKHZhbHVlLmFzQ2VsbCgpKTsKKyAgICB9CisKKyAgICBpbmxpbmUgdm9pZCBTdHJ1Y3R1
cmU6Om1hcmtBZ2dyZWdhdGUoTWFya1N0YWNrJiBtYXJrU3RhY2spCisgICAgeworICAgICAgICBt
YXJrU3RhY2suYXBwZW5kKG1fcHJvdG90eXBlKTsKKyAgICB9CisKICAgICBpbmxpbmUgSGVhcCog
SGVhcDo6aGVhcChKU1ZhbHVlIHYpCiAgICAgewogICAgICAgICBpZiAoIXYuaXNDZWxsKCkpCklu
ZGV4OiBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBK
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcAkocmV2aXNpb24gNDc5NzUpCisrKyBK
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzgs
MTQgKzM4LDIyIEBACiAjaW5jbHVkZSA8bWF0aC5oPgogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25z
Lmg+CiAKLQogbmFtZXNwYWNlIEpTQyB7CiAKIEFTU0VSVF9DTEFTU19GSVRTX0lOX0NFTEwoSlNP
YmplY3QpOwogCiB2b2lkIEpTT2JqZWN0OjptYXJrQ2hpbGRyZW4oTWFya1N0YWNrJiBtYXJrU3Rh
Y2spCiB7CisjaWZuZGVmIE5ERUJVRworICAgIGJvb2wgd2FzQ2hlY2tpbmdGb3JEZWZhdWx0TWFy
a1Zpb2xhdGlvbiA9IG1hcmtTdGFjay5tX2lzQ2hlY2tpbmdGb3JEZWZhdWx0TWFya1Zpb2xhdGlv
bjsKKyAgICBtYXJrU3RhY2subV9pc0NoZWNraW5nRm9yRGVmYXVsdE1hcmtWaW9sYXRpb24gPSBm
YWxzZTsKKyNlbmRpZgorCiAgICAgbWFya0NoaWxkcmVuRGlyZWN0KG1hcmtTdGFjayk7CisKKyNp
Zm5kZWYgTkRFQlVHCisgICAgbWFya1N0YWNrLm1faXNDaGVja2luZ0ZvckRlZmF1bHRNYXJrVmlv
bGF0aW9uID0gd2FzQ2hlY2tpbmdGb3JEZWZhdWx0TWFya1Zpb2xhdGlvbjsKKyNlbmRpZgogfQog
CiBVU3RyaW5nIEpTT2JqZWN0OjpjbGFzc05hbWUoKSBjb25zdApJbmRleDogSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU09iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNPYmplY3QuaAkocmV2aXNpb24gNDc5NzUpCisrKyBKYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTI1MywxMCArMjUzLDE1IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgIAogSlNPYmplY3QqIGNvbnN0cnVjdEVtcHR5T2JqZWN0KEV4ZWNTdGF0ZSop
OwogCitpbmxpbmUgSlNPYmplY3QqIGFzT2JqZWN0KEpTQ2VsbCogY2VsbCkKK3sKKyAgICBBU1NF
UlQoY2VsbC0+aXNPYmplY3QoKSk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PEpTT2JqZWN0Kj4o
Y2VsbCk7Cit9CisKIGlubGluZSBKU09iamVjdCogYXNPYmplY3QoSlNWYWx1ZSB2YWx1ZSkKIHsK
LSAgICBBU1NFUlQoYXNDZWxsKHZhbHVlKS0+aXNPYmplY3QoKSk7Ci0gICAgcmV0dXJuIHN0YXRp
Y19jYXN0PEpTT2JqZWN0Kj4oYXNDZWxsKHZhbHVlKSk7CisgICAgcmV0dXJuIGFzT2JqZWN0KHZh
bHVlLmFzQ2VsbCgpKTsKIH0KIAogaW5saW5lIEpTT2JqZWN0OjpKU09iamVjdChQYXNzUmVmUHRy
PFN0cnVjdHVyZT4gc3RydWN0dXJlKQpAQCAtNTgyLDggKzU4Nyw3IEBAIGlubGluZSBKU1ZhbHVl
IEpTVmFsdWU6OmdldChFeGVjU3RhdGUqIGUKICAgICB3aGlsZSAodHJ1ZSkgewogICAgICAgICBp
ZiAoY2VsbC0+ZmFzdEdldE93blByb3BlcnR5U2xvdChleGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3Qp
KQogICAgICAgICAgICAgcmV0dXJuIHNsb3QuZ2V0VmFsdWUoZXhlYywgcHJvcGVydHlOYW1lKTsK
LSAgICAgICAgQVNTRVJUKGNlbGwtPmlzT2JqZWN0KCkpOwotICAgICAgICBKU1ZhbHVlIHByb3Rv
dHlwZSA9IHN0YXRpY19jYXN0PEpTT2JqZWN0Kj4oY2VsbCktPnByb3RvdHlwZSgpOworICAgICAg
ICBKU1ZhbHVlIHByb3RvdHlwZSA9IGFzT2JqZWN0KGNlbGwpLT5wcm90b3R5cGUoKTsKICAgICAg
ICAgaWYgKCFwcm90b3R5cGUuaXNPYmplY3QoKSkKICAgICAgICAgICAgIHJldHVybiBqc1VuZGVm
aW5lZCgpOwogICAgICAgICBjZWxsID0gYXNPYmplY3QocHJvdG90eXBlKTsKQEAgLTYwOCw4ICs2
MTIsNyBAQCBpbmxpbmUgSlNWYWx1ZSBKU1ZhbHVlOjpnZXQoRXhlY1N0YXRlKiBlCiAgICAgd2hp
bGUgKHRydWUpIHsKICAgICAgICAgaWYgKGNlbGwtPmdldE93blByb3BlcnR5U2xvdChleGVjLCBw
cm9wZXJ0eU5hbWUsIHNsb3QpKQogICAgICAgICAgICAgcmV0dXJuIHNsb3QuZ2V0VmFsdWUoZXhl
YywgcHJvcGVydHlOYW1lKTsKLSAgICAgICAgQVNTRVJUKGNlbGwtPmlzT2JqZWN0KCkpOwotICAg
ICAgICBKU1ZhbHVlIHByb3RvdHlwZSA9IHN0YXRpY19jYXN0PEpTT2JqZWN0Kj4oY2VsbCktPnBy
b3RvdHlwZSgpOworICAgICAgICBKU1ZhbHVlIHByb3RvdHlwZSA9IGFzT2JqZWN0KGNlbGwpLT5w
cm90b3R5cGUoKTsKICAgICAgICAgaWYgKCFwcm90b3R5cGUuaXNPYmplY3QoKSkKICAgICAgICAg
ICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogICAgICAgICBjZWxsID0gcHJvdG90eXBlLmFzQ2Vs
bCgpOwpAQCAtNjU3LDYgKzY2MCw3IEBAIEFMV0FZU19JTkxJTkUgdm9pZCBKU09iamVjdDo6YWxs
b2NhdGVQcm8KIEFMV0FZU19JTkxJTkUgdm9pZCBKU09iamVjdDo6bWFya0NoaWxkcmVuRGlyZWN0
KE1hcmtTdGFjayYgbWFya1N0YWNrKQogewogICAgIEpTQ2VsbDo6bWFya0NoaWxkcmVuKG1hcmtT
dGFjayk7CisKICAgICBtX3N0cnVjdHVyZS0+bWFya0FnZ3JlZ2F0ZShtYXJrU3RhY2spOwogICAg
IAogICAgIFByb3BlcnR5U3RvcmFnZSBzdG9yYWdlID0gcHJvcGVydHlTdG9yYWdlKCk7CkluZGV4
OiBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVmFsdWUuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTVmFsdWUuaAkocmV2aXNpb24gNDc5NzUpCisrKyBKYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTVmFsdWUuaAkod29ya2luZyBjb3B5KQpAQCAtMjAsMTUgKzIwLDE0IEBA
CiAgKgogICovCiAKLSNpbmNsdWRlIDxzdGRkZWYuaD4gLy8gZm9yIHNpemVfdAotI2luY2x1ZGUg
PHN0ZGludC5oPgotCiAjaWZuZGVmIEpTVmFsdWVfaAogI2RlZmluZSBKU1ZhbHVlX2gKIAogI2lu
Y2x1ZGUgIkNhbGxEYXRhLmgiCiAjaW5jbHVkZSAiQ29uc3RydWN0RGF0YS5oIgogI2luY2x1ZGUg
PG1hdGguaD4KKyNpbmNsdWRlIDxzdGRkZWYuaD4gLy8gZm9yIHNpemVfdAorI2luY2x1ZGUgPHN0
ZGludC5oPgogI2luY2x1ZGUgPHd0Zi9BbHdheXNJbmxpbmUuaD4KICNpbmNsdWRlIDx3dGYvQXNz
ZXJ0aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoVHJhaXRzLmg+CkBAIC00Miw3ICs0MSw2IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgIGNsYXNzIEpTSW1tZWRpYXRlOwogICAgIGNsYXNzIEpTT2Jq
ZWN0OwogICAgIGNsYXNzIEpTU3RyaW5nOwotICAgIGNsYXNzIE1hcmtTdGFjazsKICAgICBjbGFz
cyBQcm9wZXJ0eVNsb3Q7CiAgICAgY2xhc3MgUHV0UHJvcGVydHlTbG90OwogICAgIGNsYXNzIFVT
dHJpbmc7CkBAIC0xNzIsMTIgKzE3MCw2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAvLyBz
aWdubGUgcHJlY2lzaW9uIGZsb2F0IGlzIG5vdCBhIHJlcHJlc2VudGF0aW9uIHVzZWQgaW4gSlMg
b3IgSlNDKS4KICAgICAgICAgZmxvYXQgdG9GbG9hdChFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0IHsg
cmV0dXJuIHN0YXRpY19jYXN0PGZsb2F0Pih0b051bWJlcihleGVjKSk7IH0KIAotICAgICAgICAv
LyBHYXJiYWdlIGNvbGxlY3Rpb24uCi0gICAgICAgIHZvaWQgbWFya0NoaWxkcmVuKE1hcmtTdGFj
ayYpOwotICAgICAgICBib29sIGhhc0NoaWxkcmVuKCkgY29uc3Q7Ci0gICAgICAgIGJvb2wgbWFy
a2VkKCkgY29uc3Q7Ci0gICAgICAgIHZvaWQgbWFya0RpcmVjdCgpOwotCiAgICAgICAgIC8vIE9i
amVjdCBvcGVyYXRpb25zLCB3aXRoIHRoZSB0b09iamVjdCBvcGVyYXRpb24gaW5jbHVkZWQuCiAg
ICAgICAgIEpTVmFsdWUgZ2V0KEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5
TmFtZSkgY29uc3Q7CiAgICAgICAgIEpTVmFsdWUgZ2V0KEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50
aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JikgY29uc3Q7CkluZGV4OiBKYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTV3JhcHBlck9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNXcmFwcGVyT2JqZWN0LmgJKHJldmlzaW9uIDQ3OTc1KQorKysgSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU1dyYXBwZXJPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAt
MjUsNyArMjUsNyBAQAogI2luY2x1ZGUgIkpTT2JqZWN0LmgiCiAKIG5hbWVzcGFjZSBKU0Mgewot
ICAgIAorCiAgICAgLy8gVGhpcyBjbGFzcyBpcyB1c2VkIGFzIGEgYmFzZSBmb3IgY2xhc3NlcyBz
dWNoIGFzIFN0cmluZywKICAgICAvLyBOdW1iZXIsIEJvb2xlYW4gYW5kIERhdGUgd2hpY2ggYXJl
IHdyYXBwZXJzIGZvciBwcmltaXRpdmUgdHlwZXMuCiAgICAgY2xhc3MgSlNXcmFwcGVyT2JqZWN0
IDogcHVibGljIEpTT2JqZWN0IHsKQEAgLTM1LDE4ICszNSwyMyBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICBwdWJsaWM6CiAgICAgICAgIEpTVmFsdWUgaW50ZXJuYWxWYWx1ZSgpIGNvbnN0IHsgcmV0
dXJuIG1faW50ZXJuYWxWYWx1ZTsgfQogICAgICAgICB2b2lkIHNldEludGVybmFsVmFsdWUoSlNW
YWx1ZSk7Ci0gICAgICAgIAorCisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0cnVjdHVyZT4g
Y3JlYXRlU3RydWN0dXJlKEpTVmFsdWUgcHJvdG90eXBlKSAKKyAgICAgICAgeyAKKyAgICAgICAg
ICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZShwcm90b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5
cGUsIEhhc1N0YW5kYXJkR2V0T3duUHJvcGVydHlTbG90KSk7CisgICAgICAgIH0KKworICAgIHBy
aXZhdGU6CiAgICAgICAgIHZpcnR1YWwgdm9pZCBtYXJrQ2hpbGRyZW4oTWFya1N0YWNrJik7CiAg
ICAgICAgIAotICAgIHByaXZhdGU6CiAgICAgICAgIEpTVmFsdWUgbV9pbnRlcm5hbFZhbHVlOwog
ICAgIH07Ci0gICAgCisKICAgICBpbmxpbmUgSlNXcmFwcGVyT2JqZWN0OjpKU1dyYXBwZXJPYmpl
Y3QoUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IHN0cnVjdHVyZSkKICAgICAgICAgOiBKU09iamVjdChz
dHJ1Y3R1cmUpCiAgICAgewogICAgIH0KLSAgICAKKwogICAgIGlubGluZSB2b2lkIEpTV3JhcHBl
ck9iamVjdDo6c2V0SW50ZXJuYWxWYWx1ZShKU1ZhbHVlIHZhbHVlKQogICAgIHsKICAgICAgICAg
QVNTRVJUKHZhbHVlKTsKSW5kZXg6IEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFya1N0YWNrLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcmtTdGFjay5jcHAJKHJl
dmlzaW9uIDQ3OTc1KQorKysgSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXJrU3RhY2suY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yNiw4ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5j
bHVkZSAiTWFya1N0YWNrLmgiCiAKLW5hbWVzcGFjZSBKU0MKLXsKK25hbWVzcGFjZSBKU0Mgewog
CiBzaXplX3QgTWFya1N0YWNrOjpzX3BhZ2VTaXplID0gMDsKIApJbmRleDogSmF2YVNjcmlwdENv
cmUvcnVudGltZS9NYXJrU3RhY2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ydW50
aW1lL01hcmtTdGFjay5oCShyZXZpc2lvbiA0Nzk3NSkKKysrIEphdmFTY3JpcHRDb3JlL3J1bnRp
bWUvTWFya1N0YWNrLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDcgKzI3LDYgQEAKICNkZWZpbmUg
TWFya1N0YWNrX2gKIAogI2luY2x1ZGUgIkpTVmFsdWUuaCIKLQogI2luY2x1ZGUgPHd0Zi9Ob25j
b3B5YWJsZS5oPgogCiBuYW1lc3BhY2UgSlNDIHsKQEAgLTQwLDIwICszOSwxNCBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICBwdWJsaWM6CiAgICAgICAgIE1hcmtTdGFjayh2b2lkKiBqc0FycmF5VlB0
cikKICAgICAgICAgICAgIDogbV9qc0FycmF5VlB0cihqc0FycmF5VlB0cikKKyNpZm5kZWYgTkRF
QlVHCisgICAgICAgICAgICAsIG1faXNDaGVja2luZ0ZvckRlZmF1bHRNYXJrVmlvbGF0aW9uKGZh
bHNlKQorI2VuZGlmCiAgICAgICAgIHsKICAgICAgICAgfQogCi0gICAgICAgIEFMV0FZU19JTkxJ
TkUgdm9pZCBhcHBlbmQoSlNWYWx1ZSB2YWx1ZSkKLSAgICAgICAgewotICAgICAgICAgICAgQVNT
RVJUKHZhbHVlKTsKLSAgICAgICAgICAgIGlmICh2YWx1ZS5tYXJrZWQoKSkKLSAgICAgICAgICAg
ICAgICByZXR1cm47Ci0gICAgICAgICAgICB2YWx1ZS5tYXJrRGlyZWN0KCk7Ci0gICAgICAgICAg
ICBpZiAodmFsdWUuaGFzQ2hpbGRyZW4oKSkKLSAgICAgICAgICAgICAgICBtX3ZhbHVlcy5hcHBl
bmQodmFsdWUuYXNDZWxsKCkpOwotICAgICAgICB9Ci0KLSAgICAgICAgQUxXQVlTX0lOTElORSB2
b2lkIGFwcGVuZChKU0NlbGwqIGNlbGwpOworICAgICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgYXBw
ZW5kKEpTVmFsdWUpOworICAgICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgYXBwZW5kKEpTQ2VsbCop
OwogICAgICAgICAKICAgICAgICAgQUxXQVlTX0lOTElORSB2b2lkIGFwcGVuZFZhbHVlcyhSZWdp
c3RlciogdmFsdWVzLCBzaXplX3QgY291bnQsIE1hcmtTZXRQcm9wZXJ0aWVzIHByb3BlcnRpZXMg
PSBOb051bGxWYWx1ZXMpCiAgICAgICAgIHsKQEAgLTc2LDYgKzY5LDggQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgIH0KIAogICAgIHByaXZhdGU6CisgICAgICAgIHZvaWQgbWFya0NoaWxkcmVu
KEpTQ2VsbCopOworCiAgICAgICAgIHN0cnVjdCBNYXJrU2V0IHsKICAgICAgICAgICAgIE1hcmtT
ZXQoSlNWYWx1ZSogdmFsdWVzLCBKU1ZhbHVlKiBlbmQsIE1hcmtTZXRQcm9wZXJ0aWVzIHByb3Bl
cnRpZXMpCiAgICAgICAgICAgICAgICAgOiBtX3ZhbHVlcyh2YWx1ZXMpCkBAIC0xODAsNiArMTc1
LDExIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBNYXJrU3RhY2tBcnJheTxNYXJrU2V0PiBt
X21hcmtTZXRzOwogICAgICAgICBNYXJrU3RhY2tBcnJheTxKU0NlbGwqPiBtX3ZhbHVlczsKICAg
ICAgICAgc3RhdGljIHNpemVfdCBzX3BhZ2VTaXplOworCisjaWZuZGVmIE5ERUJVRworICAgIHB1
YmxpYzoKKyAgICAgICAgYm9vbCBtX2lzQ2hlY2tpbmdGb3JEZWZhdWx0TWFya1Zpb2xhdGlvbjsK
KyNlbmRpZgogICAgIH07CiB9CiAKSW5kZXg6IEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvU21hbGxT
dHJpbmdzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NtYWxsU3Ry
aW5ncy5jcHAJKHJldmlzaW9uIDQ3OTc1KQorKysgSmF2YVNjcmlwdENvcmUvcnVudGltZS9TbWFs
bFN0cmluZ3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04MiwxMyArODIsMTMgQEAgU21hbGxTdHJp
bmdzOjp+U21hbGxTdHJpbmdzKCkKIHsKIH0KIAotdm9pZCBTbWFsbFN0cmluZ3M6Om1hcmsoKQor
dm9pZCBTbWFsbFN0cmluZ3M6Om1hcmtDaGlsZHJlbihNYXJrU3RhY2smIG1hcmtTdGFjaykKIHsK
LSAgICBpZiAobV9lbXB0eVN0cmluZyAmJiAhbV9lbXB0eVN0cmluZy0+bWFya2VkKCkpCi0gICAg
ICAgIG1fZW1wdHlTdHJpbmctPm1hcmtDZWxsRGlyZWN0KCk7CisgICAgaWYgKG1fZW1wdHlTdHJp
bmcpCisgICAgICAgIG1hcmtTdGFjay5hcHBlbmQobV9lbXB0eVN0cmluZyk7CiAgICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IG51bUNoYXJhY3RlcnNUb1N0b3JlOyArK2kpIHsKLSAgICAgICAg
aWYgKG1fc2luZ2xlQ2hhcmFjdGVyU3RyaW5nc1tpXSAmJiAhbV9zaW5nbGVDaGFyYWN0ZXJTdHJp
bmdzW2ldLT5tYXJrZWQoKSkKLSAgICAgICAgICAgIG1fc2luZ2xlQ2hhcmFjdGVyU3RyaW5nc1tp
XS0+bWFya0NlbGxEaXJlY3QoKTsKKyAgICAgICAgaWYgKG1fc2luZ2xlQ2hhcmFjdGVyU3RyaW5n
c1tpXSkKKyAgICAgICAgICAgIG1hcmtTdGFjay5hcHBlbmQobV9zaW5nbGVDaGFyYWN0ZXJTdHJp
bmdzW2ldKTsKICAgICB9CiB9CiAKSW5kZXg6IEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvU21hbGxT
dHJpbmdzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvcnVudGltZS9TbWFsbFN0cmlu
Z3MuaAkocmV2aXNpb24gNDc5NzUpCisrKyBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NtYWxsU3Ry
aW5ncy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAwOCBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMDgsIDIwMDkgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgogICoKICAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCkBAIC0zMyw3ICszMyw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAg
ICAgY2xhc3MgSlNHbG9iYWxEYXRhOwogICAgIGNsYXNzIEpTU3RyaW5nOwotCisgICAgY2xhc3Mg
TWFya1N0YWNrOwogICAgIGNsYXNzIFNtYWxsU3RyaW5nc1N0b3JhZ2U7CiAKICAgICBjbGFzcyBT
bWFsbFN0cmluZ3MgOiBwdWJsaWMgTm9uY29weWFibGUgewpAQCAtNTYsNyArNTYsNyBAQCBuYW1l
c3BhY2UgSlNDIHsKIAogICAgICAgICBVU3RyaW5nOjpSZXAqIHNpbmdsZUNoYXJhY3RlclN0cmlu
Z1JlcCh1bnNpZ25lZCBjaGFyIGNoYXJhY3Rlcik7CiAKLSAgICAgICAgdm9pZCBtYXJrKCk7Cisg
ICAgICAgIHZvaWQgbWFya0NoaWxkcmVuKE1hcmtTdGFjayYpOwogCiAgICAgICAgIHVuc2lnbmVk
IGNvdW50KCkgY29uc3Q7CiAKSW5kZXg6IEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJl
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaAkocmV2
aXNpb24gNDc5NzUpCisrKyBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yOSw3ICsyOSw2IEBACiAjaW5jbHVkZSAiSWRlbnRpZmllci5oIgogI2lu
Y2x1ZGUgIkpTVHlwZS5oIgogI2luY2x1ZGUgIkpTVmFsdWUuaCIKLSNpbmNsdWRlICJNYXJrU3Rh
Y2suaCIKICNpbmNsdWRlICJQcm9wZXJ0eU1hcEhhc2hUYWJsZS5oIgogI2luY2x1ZGUgIlN0cnVj
dHVyZUNoYWluLmgiCiAjaW5jbHVkZSAiU3RydWN0dXJlVHJhbnNpdGlvblRhYmxlLmgiCkBAIC00
Niw2ICs0NSw3IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCisgICAgY2xhc3MgTWFya1N0YWNrOwog
ICAgIGNsYXNzIFByb3BlcnR5TmFtZUFycmF5OwogICAgIGNsYXNzIFByb3BlcnR5TmFtZUFycmF5
RGF0YTsKIApAQCAtNzMsMTAgKzczLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgflN0
cnVjdHVyZSgpOwogCi0gICAgICAgIHZvaWQgbWFya0FnZ3JlZ2F0ZShNYXJrU3RhY2smIG1hcmtT
dGFjaykKLSAgICAgICAgewotICAgICAgICAgICAgbWFya1N0YWNrLmFwcGVuZChtX3Byb3RvdHlw
ZSk7Ci0gICAgICAgIH0KKyAgICAgICAgdm9pZCBtYXJrQWdncmVnYXRlKE1hcmtTdGFjayYpOwog
CiAgICAgICAgIC8vIFRoZXNlIHNob3VsZCBiZSB1c2VkIHdpdGggY2F1dGlvbi4gIAogICAgICAg
ICBzaXplX3QgYWRkUHJvcGVydHlXaXRob3V0VHJhbnNpdGlvbihjb25zdCBJZGVudGlmaWVyJiBw
cm9wZXJ0eU5hbWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIEpTQ2VsbCogc3BlY2lmaWNWYWx1ZSk7
CkluZGV4OiBKYXZhU2NyaXB0R2x1ZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlw
dEdsdWUvQ2hhbmdlTG9nCShyZXZpc2lvbiA0Nzk3NSkKKysrIEphdmFTY3JpcHRHbHVlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEyIEBACisyMDA5LTA5LTAyICBEYXJpbiBB
ZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIEpTVmFsdWVXcmFwcGVyLmNwcDoKKyAgICAgICAgKEpTVmFsdWVX
cmFwcGVyOjpKU09iamVjdE1hcmspOiBSZW1vdmVkIGEgY2hlY2sgb2YgdGhlIG1hcmsKKyAgICAg
ICAgYml0LiBJdCdzIE9LIHRvIGRvIG1vcmUgd29yayBpbiB0aGlzIGNhc2UsIGFuZCB0aGVyZSBp
cyBubworICAgICAgICBsb25nZXIgYSBwdWJsaWMgZnVuY3Rpb24gdG8gYWNjZXNzIHRoZSBtYXJr
IGJpdC4KKwogMjAwOS0wOC0xNCAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CiAKICAg
ICAgICAgUmV2aWV3ZWQgYnkgU2FtIFdlaW5pZy4KSW5kZXg6IEphdmFTY3JpcHRHbHVlL0pTVmFs
dWVXcmFwcGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0R2x1ZS9KU1ZhbHVlV3JhcHBl
ci5jcHAJKHJldmlzaW9uIDQ3OTc1KQorKysgSmF2YVNjcmlwdEdsdWUvSlNWYWx1ZVdyYXBwZXIu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xOTUsNyArMTk1LDcgQEAgQ0ZUeXBlUmVmIEpTVmFsdWVX
cmFwcGVyOjpKU09iamVjdENvcHlDRgogdm9pZCBKU1ZhbHVlV3JhcHBlcjo6SlNPYmplY3RNYXJr
KHZvaWQgKmRhdGEpCiB7CiAgICAgSlNWYWx1ZVdyYXBwZXIqIHB0ciA9IChKU1ZhbHVlV3JhcHBl
ciopZGF0YTsKLSAgICBpZiAocHRyICYmICFwdHItPmZWYWx1ZS5nZXQoKS5tYXJrZWQoKSkKKyAg
ICBpZiAocHRyKQogICAgIHsKICAgICAgICAgLy8gVGhpcyByZXN1bHRzIGluIHJlY3Vyc2l2ZSBt
YXJraW5nIGJ1dCB3aWxsIGJlIG90aGVyd2lzZSBzYWZlIGFuZCBjb3JyZWN0LgogICAgICAgICAv
LyBXZSBjbGFpbSB0aGUgYXJyYXkgdnB0ciBpcyAwIGJlY2F1c2Ugd2UgZG9uJ3QgaGF2ZSBhY2Nl
c3MgdG8gaXQgaGVyZSwgYW5kCg==
</data>
<flag name="review"
          id="19935"
          type_id="1"
          status="+"
          setter="ggaren"
    />
    <flag name="commit-queue"
          id="20107"
          type_id="3"
          status="-"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>