<?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>156389</bug_id>
          
          <creation_ts>2016-04-07 21:00:18 -0700</creation_ts>
          <short_desc>Add IC support for arguments.length</short_desc>
          <delta_ts>2016-04-08 12:37:26 -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>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Filip Pizlo">fpizlo</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1182046</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-04-07 21:00:18 -0700</bug_when>
    <thetext>Patch forthcoming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1182210</commentid>
    <comment_count>1</comment_count>
      <attachid>276016</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-04-08 11:02:47 -0700</bug_when>
    <thetext>Created attachment 276016
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1182211</commentid>
    <comment_count>2</comment_count>
      <attachid>276016</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-04-08 11:03:11 -0700</bug_when>
    <thetext>Comment on attachment 276016
the patch

Ugh, never mind.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1182213</commentid>
    <comment_count>3</comment_count>
      <attachid>276018</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-04-08 11:07:08 -0700</bug_when>
    <thetext>Created attachment 276018
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1182220</commentid>
    <comment_count>4</comment_count>
      <attachid>276018</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2016-04-08 11:18:01 -0700</bug_when>
    <thetext>Comment on attachment 276018
the patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1182223</commentid>
    <comment_count>5</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-04-08 11:23:53 -0700</bug_when>
    <thetext>I&apos;m still testing this, it&apos;ll be a while.  I&apos;m worried that I messed up DFG&apos;s profiling of .length, so I&apos;ll test everything.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1182258</commentid>
    <comment_count>6</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-04-08 12:37:26 -0700</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/199240</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>276016</attachid>
            <date>2016-04-08 11:02:47 -0700</date>
            <delta_ts>2016-04-08 11:07:08 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>69003</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTk5MjM0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDYxIEBA
CisyMDE2LTA0LTA4ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
QWRkIElDIHN1cHBvcnQgZm9yIGFyZ3VtZW50cy5sZW5ndGgKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NjM4OQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAKKyAgICAgICAgVGhpcyBhZGRzIHN1cHBvcnQgZm9y
IGNhY2hpbmcgYWNjZXNzZXMgdG8gYXJndW1lbnRzLmxlbmd0aCBmb3IgYm90aCBEaXJlY3RBcmd1
bWVudHMgYW5kCisgICAgICAgIFNjb3BlZEFyZ3VtZW50cy4gSW4gc3RyaWN0IG1vZGUsIHdlIGFs
cmVhZHkgY2FjaGVkIHRoZXNlIGFjY2Vzc2VzIHNpbmNlIHRoZXkgd2VyZSBqdXN0CisgICAgICAg
IG5vcm1hbCBwcm9wZXJ0aWVzLgorCisgICAgICAgIEFtYXppbmdseSwgd2UgYWxzbyBhbHJlYWR5
IHN1cHBvcnRlZCBjYWNoaW5nIG9mIG92ZXJyaWRkZW4gYXJndW1lbnRzLmxlbmd0aCBpbiBib3Ro
CisgICAgICAgIERpcmVjdEFyZ3VtZW50cyBhbmQgU2NvcGVkQXJndW1lbnRzLiBUaGlzIGlzIGJl
Y2F1c2Ugd2hlbiB5b3Ugb3ZlcnJpZGUsIHRoZSBwcm9wZXJ0eSBnZXRzCisgICAgICAgIG1hdGVy
aWFsaXplZCBhcyBhIG5vcm1hbCBKUyBwcm9wZXJ0eSBhbmQgdGhlIHN0cnVjdHVyZSBpcyBjaGFu
Z2VkLgorICAgICAgICAKKyAgICAgICAgVGhpcyBwYXRjaCBwYWluc3Rha2luZ2x5IHByZXNlcnZl
cyBvdXIgcHJldmlvdXMgY2FjaGluZyBvZiBvdmVycmlkZGVuIGxlbmd0aCB3aGlsZQorICAgICAg
ICBpbnRyb2R1Y2luZyBjYWNoaW5nIG9mIG5vbi1vdmVycmlkZGVuIGxlbmd0aCAoaS5lLiB0aGUg
Y29tbW9uIGNhc2UpLiBJbiBmYWN0LCB3ZSBldmVuIGNhY2hlCisgICAgICAgIHRoZSBjYXNlIHdo
ZXJlIGl0IGNvdWxkIGVpdGhlciBiZSBvdmVycmlkZGVuIG9yIG5vdCwgc2luY2Ugd2UganVzdCBl
bmQgdXAgd2l0aCBhbiBBY2Nlc3NDYXNlCisgICAgICAgIGZvciBlYWNoIGFuZCB0aGV5IGNhc2Nh
ZGUgdG8gZWFjaCBvdGhlci4KKworICAgICAgICBUaGlzIGlzIGEgPjN4IHNwZWVkLXVwIG9uIG1p
Y3JvYmVuY2htYXJrcyB0aGF0IGRvIGFyZ3VtZW50cy5sZW5ndGggaW4gYSBwb2x5bW9ycGhpYyBj
b250ZXh0LgorICAgICAgICBFbnRpcmVseSBtb25vbW9ycGhpYyBhY2Nlc3NlcyB3ZXJlIGFscmVh
ZHkgaGFuZGxlZCBieSB0aGUgREZHLgorCisgICAgICAgICogYnl0ZWNvZGUvUG9seW1vcnBoaWNB
Y2Nlc3MuY3BwOgorICAgICAgICAoSlNDOjpBY2Nlc3NHZW5lcmF0aW9uU3RhdGU6OnN1Y2NlZWQp
OgorICAgICAgICAoSlNDOjpBY2Nlc3NHZW5lcmF0aW9uU3RhdGU6OmNhbGN1bGF0ZUxpdmVSZWdp
c3RlcnNGb3JDYWxsQW5kRXhjZXB0aW9uSGFuZGxpbmcpOgorICAgICAgICAoSlNDOjpBY2Nlc3NH
ZW5lcmF0aW9uU3RhdGU6OnByZXNlcnZlTGl2ZVJlZ2lzdGVyc1RvU3RhY2tGb3JDYWxsKToKKyAg
ICAgICAgKEpTQzo6QWNjZXNzR2VuZXJhdGlvblN0YXRlOjpvcmlnaW5hbENhbGxTaXRlSW5kZXgp
OgorICAgICAgICAoSlNDOjpBY2Nlc3NHZW5lcmF0aW9uU3RhdGU6OmVtaXRFeHBsaWNpdEV4Y2Vw
dGlvbkhhbmRsZXIpOgorICAgICAgICAoSlNDOjpBY2Nlc3NDYXNlOjpBY2Nlc3NDYXNlKToKKyAg
ICAgICAgKEpTQzo6QWNjZXNzQ2FzZTo6dHJhbnNpdGlvbik6CisgICAgICAgIChKU0M6OkFjY2Vz
c0Nhc2U6Omd1YXJkZWRCeVN0cnVjdHVyZUNoZWNrKToKKyAgICAgICAgKEpTQzo6QWNjZXNzQ2Fz
ZTo6Z2VuZXJhdGVXaXRoR3VhcmQpOgorICAgICAgICAoSlNDOjpBY2Nlc3NDYXNlOjpnZW5lcmF0
ZSk6CisgICAgICAgIChKU0M6OlBvbHltb3JwaGljQWNjZXNzOjpyZWdlbmVyYXRlKToKKyAgICAg
ICAgKFdURjo6cHJpbnRJbnRlcm5hbCk6CisgICAgICAgICogYnl0ZWNvZGUvUG9seW1vcnBoaWNB
Y2Nlc3MuaDoKKyAgICAgICAgKEpTQzo6QWNjZXNzQ2FzZTo6aXNHZXQpOgorICAgICAgICAoSlND
OjpBY2Nlc3NDYXNlOjppc1B1dCk6CisgICAgICAgIChKU0M6OkFjY2Vzc0Nhc2U6OmlzSW4pOgor
ICAgICAgICAoSlNDOjpBY2Nlc3NHZW5lcmF0aW9uU3RhdGU6Om5lZWRzVG9SZXN0b3JlUmVnaXN0
ZXJzSWZFeGNlcHRpb24pOgorICAgICAgICAoSlNDOjpBY2Nlc3NHZW5lcmF0aW9uU3RhdGU6Omxp
dmVSZWdpc3RlcnNUb1ByZXNlcnZlQXRFeGNlcHRpb25IYW5kbGluZ0NhbGxTaXRlKToKKyAgICAg
ICAgKiBkZmcvREZHRml4dXBQaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Rml4dXBQaGFz
ZTo6YXR0ZW1wdFRvTWFrZUdldEFycmF5TGVuZ3RoKToKKyAgICAgICAgKiBkZmcvREZHT3BlcmF0
aW9ucy5jcHA6CisgICAgICAgICogZGZnL0RGR09wZXJhdGlvbnMuaDoKKyAgICAgICAgKiBqaXQv
SUNTdGF0cy5oOgorICAgICAgICAqIGppdC9KSVRPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKiBq
aXQvSklUT3BlcmF0aW9ucy5oOgorICAgICAgICAqIGppdC9SZXBhdGNoLmNwcDoKKyAgICAgICAg
KEpTQzo6dHJ5Q2FjaGVHZXRCeUlEKToKKyAgICAgICAgKEpTQzo6dHJ5Q2FjaGVQdXRCeUlEKToK
KyAgICAgICAgKEpTQzo6dHJ5UmVwYXRjaEluKToKKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvZGly
ZWN0LWFyZ3VtZW50cy1vdmVycmlkZS1sZW5ndGgtdGhlbi1hY2Nlc3Mtbm9ybWFsLWxlbmd0aC5q
czogQWRkZWQuCisgICAgICAgIChhcmdzKToKKyAgICAgICAgKGZvbyk6CisgICAgICAgIChyZXN1
bHQuZm9vKToKKwogMjAxNi0wNC0wOCAgQnJpYW4gQnVyZyAgPGJidXJnQGFwcGxlLmNvbT4KIAog
ICAgICAgICBXZWIgSW5zcGVjdG9yOiBwcm90b2NvbCBnZW5lcmF0b3Igc2hvdWxkIGVtaXQgYW4g
ZXJyb3Igd2hlbiAndHlwZScgaXMgdXNlZCBpbnN0ZWFkIG9mICckcmVmJwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1BvbHltb3JwaGljQWNjZXNzLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUG9seW1vcnBoaWNBY2Nlc3MuY3Bw
CShyZXZpc2lvbiAxOTkxNjYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUG9s
eW1vcnBoaWNBY2Nlc3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMSwxMSArMzEsMTMgQEAKICNp
bmNsdWRlICJCaW5hcnlTd2l0Y2guaCIKICNpbmNsdWRlICJDQ2FsbEhlbHBlcnMuaCIKICNpbmNs
dWRlICJDb2RlQmxvY2suaCIKKyNpbmNsdWRlICJEaXJlY3RBcmd1bWVudHMuaCIKICNpbmNsdWRl
ICJHZXR0ZXJTZXR0ZXIuaCIKICNpbmNsdWRlICJIZWFwLmgiCiAjaW5jbHVkZSAiSklUT3BlcmF0
aW9ucy5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNsdWRlICJMaW5rQnVmZmVyLmgi
CisjaW5jbHVkZSAiU2NvcGVkQXJndW1lbnRzLmgiCiAjaW5jbHVkZSAiU2NyYXRjaFJlZ2lzdGVy
QWxsb2NhdG9yLmgiCiAjaW5jbHVkZSAiU3RydWN0dXJlU3R1YkNsZWFyaW5nV2F0Y2hwb2ludC5o
IgogI2luY2x1ZGUgIlN0cnVjdHVyZVN0dWJJbmZvLmgiCkBAIC03MCw3ICs3Miw3IEBAIHZvaWQg
QWNjZXNzR2VuZXJhdGlvblN0YXRlOjpzdWNjZWVkKCkKICAgICBzdWNjZXNzLmFwcGVuZChqaXQt
Pmp1bXAoKSk7CiB9CiAKLXZvaWQgQWNjZXNzR2VuZXJhdGlvblN0YXRlOjpjYWxjdWxhdGVMaXZl
UmVnaXN0ZXJzRm9yQ2FsbEFuZEV4Y2VwdGlvbkhhbmRsaW5nKCkKK3ZvaWQgQWNjZXNzR2VuZXJh
dGlvblN0YXRlOjpjYWxjdWxhdGVMaXZlUmVnaXN0ZXJzRm9yQ2FsbEFuZEV4Y2VwdGlvbkhhbmRs
aW5nKGNvbnN0IFJlZ2lzdGVyU2V0JiBleHRyYSkKIHsKICAgICBpZiAoIW1fY2FsY3VsYXRlZFJl
Z2lzdGVyc0ZvckNhbGxBbmRFeGNlcHRpb25IYW5kbGluZykgewogICAgICAgICBtX2NhbGN1bGF0
ZWRSZWdpc3RlcnNGb3JDYWxsQW5kRXhjZXB0aW9uSGFuZGxpbmcgPSB0cnVlOwpAQCAtODEsMTIg
KzgzLDE1IEBAIHZvaWQgQWNjZXNzR2VuZXJhdGlvblN0YXRlOjpjYWxjdWxhdGVMaXYKICAgICAg
ICAgICAgIFJFTEVBU0VfQVNTRVJUKEpJVENvZGU6OmlzT3B0aW1pemluZ0pJVChqaXQtPmNvZGVC
bG9jaygpLT5qaXRUeXBlKCkpKTsKIAogICAgICAgICBtX2xpdmVSZWdpc3RlcnNGb3JDYWxsID0g
UmVnaXN0ZXJTZXQobV9saXZlUmVnaXN0ZXJzVG9QcmVzZXJ2ZUF0RXhjZXB0aW9uSGFuZGxpbmdD
YWxsU2l0ZSwgYWxsb2NhdG9yLT51c2VkUmVnaXN0ZXJzKCkpOworICAgICAgICBtX2xpdmVSZWdp
c3RlcnNGb3JDYWxsLm1lcmdlKGV4dHJhKTsKICAgICAgICAgbV9saXZlUmVnaXN0ZXJzRm9yQ2Fs
bC5leGNsdWRlKFJlZ2lzdGVyU2V0OjpyZWdpc3RlcnNUb05vdFNhdmVGb3JKU0NhbGwoKSk7CiAg
ICAgfQogfQogCi12b2lkIEFjY2Vzc0dlbmVyYXRpb25TdGF0ZTo6cHJlc2VydmVMaXZlUmVnaXN0
ZXJzVG9TdGFja0ZvckNhbGwoKQordm9pZCBBY2Nlc3NHZW5lcmF0aW9uU3RhdGU6OnByZXNlcnZl
TGl2ZVJlZ2lzdGVyc1RvU3RhY2tGb3JDYWxsKGNvbnN0IFJlZ2lzdGVyU2V0JiBleHRyYSkKIHsK
KyAgICBjYWxjdWxhdGVMaXZlUmVnaXN0ZXJzRm9yQ2FsbEFuZEV4Y2VwdGlvbkhhbmRsaW5nKGV4
dHJhKTsKKyAgICAKICAgICB1bnNpZ25lZCBleHRyYVN0YWNrUGFkZGluZyA9IDA7CiAgICAgdW5z
aWduZWQgbnVtYmVyT2ZTdGFja0J5dGVzVXNlZEZvclJlZ2lzdGVyUHJlc2VydmF0aW9uID0gU2Ny
YXRjaFJlZ2lzdGVyQWxsb2NhdG9yOjpwcmVzZXJ2ZVJlZ2lzdGVyc1RvU3RhY2tGb3JDYWxsKCpq
aXQsIGxpdmVSZWdpc3RlcnNGb3JDYWxsKCksIGV4dHJhU3RhY2tQYWRkaW5nKTsKICAgICBpZiAo
bV9udW1iZXJPZlN0YWNrQnl0ZXNVc2VkRm9yUmVnaXN0ZXJQcmVzZXJ2YXRpb24gIT0gc3RkOjpu
dW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpKQpAQCAtMTU1LDYgKzE2MCwzOCBAQCBjb25z
dCBIYW5kbGVySW5mbyYgQWNjZXNzR2VuZXJhdGlvblN0YXRlCiAKIENhbGxTaXRlSW5kZXggQWNj
ZXNzR2VuZXJhdGlvblN0YXRlOjpvcmlnaW5hbENhbGxTaXRlSW5kZXgoKSBjb25zdCB7IHJldHVy
biBzdHViSW5mby0+Y2FsbFNpdGVJbmRleDsgfQogCit2b2lkIEFjY2Vzc0dlbmVyYXRpb25TdGF0
ZTo6ZW1pdEV4cGxpY2l0RXhjZXB0aW9uSGFuZGxlcigpCit7CisgICAgcmVzdG9yZVNjcmF0Y2go
KTsKKyAgICBqaXQtPmNvcHlDYWxsZWVTYXZlc1RvVk1DYWxsZWVTYXZlc0J1ZmZlcigpOworICAg
IGlmIChuZWVkc1RvUmVzdG9yZVJlZ2lzdGVyc0lmRXhjZXB0aW9uKCkpIHsKKyAgICAgICAgLy8g
VG8gdGhlIEpJVCB0aGF0IHByb2R1Y2VzIHRoZSBvcmlnaW5hbCBleGNlcHRpb24gaGFuZGxpbmcK
KyAgICAgICAgLy8gY2FsbCBzaXRlLCB0aGV5IHdpbGwgZXhwZWN0IHRoZSBPU1IgZXhpdCB0byBi
ZSBhcnJpdmVkCisgICAgICAgIC8vIGF0IGZyb20gZ2VuZXJpY1Vud2luZC4gVGhlcmVmb3JlIHdl
IG11c3QgbW9kZWwgd2hhdCBnZW5lcmljVW53aW5kCisgICAgICAgIC8vIGRvZXMgaGVyZS4gSS5l
LCBzZXQgY2FsbEZyYW1lRm9yQ2F0Y2ggYW5kIGNvcHkgY2FsbGVlIHNhdmVzLgorCisgICAgICAg
IGppdC0+c3RvcmVQdHIoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIGppdC0+dm0oKS0+YWRk
cmVzc09mQ2FsbEZyYW1lRm9yQ2F0Y2goKSk7CisgICAgICAgIENDYWxsSGVscGVyczo6SnVtcCBq
dW1wVG9PU1JFeGl0RXhjZXB0aW9uSGFuZGxlciA9IGppdC0+anVtcCgpOworCisgICAgICAgIC8v
IFdlIGRvbid0IG5lZWQgdG8gaW5zZXJ0IGEgbmV3IGV4Y2VwdGlvbiBoYW5kbGVyIGluIHRoZSB0
YWJsZQorICAgICAgICAvLyBiZWNhdXNlIHdlJ3JlIGRvaW5nIGEgbWFudWFsIGV4Y2VwdGlvbiBj
aGVjayBoZXJlLiBpLmUsIHdlJ2xsCisgICAgICAgIC8vIG5ldmVyIGFycml2ZSBoZXJlIGZyb20g
Z2VuZXJpY1Vud2luZCgpLgorICAgICAgICBIYW5kbGVySW5mbyBvcmlnaW5hbEhhbmRsZXIgPSBv
cmlnaW5hbEV4Y2VwdGlvbkhhbmRsZXIoKTsKKyAgICAgICAgaml0LT5hZGRMaW5rVGFzaygKKyAg
ICAgICAgICAgIFs9XSAoTGlua0J1ZmZlciYgbGlua0J1ZmZlcikgeworICAgICAgICAgICAgICAg
IGxpbmtCdWZmZXIubGluayhqdW1wVG9PU1JFeGl0RXhjZXB0aW9uSGFuZGxlciwgb3JpZ2luYWxI
YW5kbGVyLm5hdGl2ZUNvZGUpOworICAgICAgICAgICAgfSk7CisgICAgfSBlbHNlIHsKKyAgICAg
ICAgaml0LT5zZXR1cEFyZ3VtZW50cyhDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoaml0LT52
bSgpKSwgR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIpOworICAgICAgICBDQ2FsbEhlbHBlcnM6
OkNhbGwgbG9va3VwRXhjZXB0aW9uSGFuZGxlckNhbGwgPSBqaXQtPmNhbGwoKTsKKyAgICAgICAg
aml0LT5hZGRMaW5rVGFzaygKKyAgICAgICAgICAgIFs9XSAoTGlua0J1ZmZlciYgbGlua0J1ZmZl
cikgeworICAgICAgICAgICAgICAgIGxpbmtCdWZmZXIubGluayhsb29rdXBFeGNlcHRpb25IYW5k
bGVyQ2FsbCwgbG9va3VwRXhjZXB0aW9uSGFuZGxlcik7CisgICAgICAgICAgICB9KTsKKyAgICAg
ICAgaml0LT5qdW1wVG9FeGNlcHRpb25IYW5kbGVyKCk7CisgICAgfQorfQorCiBBY2Nlc3NDYXNl
OjpBY2Nlc3NDYXNlKCkKIHsKIH0KQEAgLTIyMywxMyArMjYwLDYgQEAgc3RkOjp1bmlxdWVfcHRy
PEFjY2Vzc0Nhc2U+IEFjY2Vzc0Nhc2U6OgogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9
CiAKLSAgICAvLyBTa2lwIG9wdGltaXppbmcgdGhlIGNhc2Ugd2hlcmUgd2UgbmVlZCByZWFsbG9j
LCBhbmQgdGhlIHN0cnVjdHVyZSBoYXMKLSAgICAvLyBpbmRleGluZyBzdG9yYWdlLgotICAgIC8v
IEZJWE1FOiBXZSBzaG91bGRuJ3Qgc2tpcCB0aGlzISBJbXBsZW1lbnQgaXQhCi0gICAgLy8gaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzMDkxNAotICAgIGlmIChvbGRT
dHJ1Y3R1cmUtPmNvdWxkSGF2ZUluZGV4aW5nSGVhZGVyKCkpCi0gICAgICAgIHJldHVybiBudWxs
cHRyOwotCiAgICAgc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IHJlc3VsdChuZXcgQWNjZXNz
Q2FzZSgpKTsKIAogICAgIHJlc3VsdC0+bV90eXBlID0gVHJhbnNpdGlvbjsKQEAgLTM0Nyw2ICsz
NzcsOCBAQCBib29sIEFjY2Vzc0Nhc2U6Omd1YXJkZWRCeVN0cnVjdHVyZUNoZWNrCiAgICAgY2Fz
ZSBNZWdhbW9ycGhpY0xvYWQ6CiAgICAgY2FzZSBBcnJheUxlbmd0aDoKICAgICBjYXNlIFN0cmlu
Z0xlbmd0aDoKKyAgICBjYXNlIERpcmVjdEFyZ3VtZW50c0xlbmd0aDoKKyAgICBjYXNlIFNjb3Bl
ZEFyZ3VtZW50c0xlbmd0aDoKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGRlZmF1bHQ6CiAg
ICAgICAgIHJldHVybiB0cnVlOwpAQCAtNDc0LDYgKzUwNiw0NiBAQCB2b2lkIEFjY2Vzc0Nhc2U6
OmdlbmVyYXRlV2l0aEd1YXJkKAogICAgICAgICBicmVhazsKICAgICB9CiAgICAgICAgIAorICAg
IGNhc2UgRGlyZWN0QXJndW1lbnRzTGVuZ3RoOiB7CisgICAgICAgIEFTU0VSVCghdmlhUHJveHko
KSk7CisgICAgICAgIGZhbGxUaHJvdWdoLmFwcGVuZCgKKyAgICAgICAgICAgIGppdC5icmFuY2g4
KAorICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6Tm90RXF1YWwsCisgICAgICAgICAgICAg
ICAgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKGJhc2VHUFIsIEpTQ2VsbDo6dHlwZUluZm9UeXBlT2Zm
c2V0KCkpLAorICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKERpcmVj
dEFyZ3VtZW50c1R5cGUpKSk7CisKKyAgICAgICAgZmFsbFRocm91Z2guYXBwZW5kKAorICAgICAg
ICAgICAgaml0LmJyYW5jaFRlc3RQdHIoCisgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpO
b25aZXJvLAorICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6QWRkcmVzcyhiYXNlR1BSLCBE
aXJlY3RBcmd1bWVudHM6Om9mZnNldE9mT3ZlcnJpZGVzKCkpKSk7CisgICAgICAgIGppdC5sb2Fk
MzIoCisgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoYmFzZUdQUiwgRGlyZWN0QXJn
dW1lbnRzOjpvZmZzZXRPZkxlbmd0aCgpKSwKKyAgICAgICAgICAgIHZhbHVlUmVncy5wYXlsb2Fk
R1BSKCkpOworICAgICAgICBqaXQuYm94SW50MzIodmFsdWVSZWdzLnBheWxvYWRHUFIoKSwgdmFs
dWVSZWdzLCBDQ2FsbEhlbHBlcnM6OkRvTm90SGF2ZVRhZ1JlZ2lzdGVycyk7CisgICAgICAgIHN0
YXRlLnN1Y2NlZWQoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAgICAgCisgICAgY2Fz
ZSBTY29wZWRBcmd1bWVudHNMZW5ndGg6IHsKKyAgICAgICAgQVNTRVJUKCF2aWFQcm94eSgpKTsK
KyAgICAgICAgZmFsbFRocm91Z2guYXBwZW5kKAorICAgICAgICAgICAgaml0LmJyYW5jaDgoCisg
ICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpOb3RFcXVhbCwKKyAgICAgICAgICAgICAgICBD
Q2FsbEhlbHBlcnM6OkFkZHJlc3MoYmFzZUdQUiwgSlNDZWxsOjp0eXBlSW5mb1R5cGVPZmZzZXQo
KSksCisgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoU2NvcGVkQXJn
dW1lbnRzVHlwZSkpKTsKKworICAgICAgICBmYWxsVGhyb3VnaC5hcHBlbmQoCisgICAgICAgICAg
ICBqaXQuYnJhbmNoVGVzdDgoCisgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpOb25aZXJv
LAorICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6QWRkcmVzcyhiYXNlR1BSLCBTY29wZWRB
cmd1bWVudHM6Om9mZnNldE9mT3ZlcnJvZGVUaGluZ3MoKSkpKTsKKyAgICAgICAgaml0LmxvYWQz
MigKKyAgICAgICAgICAgIENDYWxsSGVscGVyczo6QWRkcmVzcyhiYXNlR1BSLCBTY29wZWRBcmd1
bWVudHM6Om9mZnNldE9mVG90YWxMZW5ndGgoKSksCisgICAgICAgICAgICB2YWx1ZVJlZ3MucGF5
bG9hZEdQUigpKTsKKyAgICAgICAgaml0LmJveEludDMyKHZhbHVlUmVncy5wYXlsb2FkR1BSKCks
IHZhbHVlUmVncywgQ0NhbGxIZWxwZXJzOjpEb05vdEhhdmVUYWdSZWdpc3RlcnMpOworICAgICAg
ICBzdGF0ZS5zdWNjZWVkKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgICAgIAogICAg
IGNhc2UgTWVnYW1vcnBoaWNMb2FkOiB7CiAgICAgICAgIFVuaXF1ZWRTdHJpbmdJbXBsKiBrZXkg
PSBpZGVudC5pbXBsKCk7CiAgICAgICAgIHVuc2lnbmVkIGhhc2ggPSBJZGVudGlmaWVyUmVwSGFz
aDo6aGFzaChrZXkpOwpAQCAtNzU3LDcgKzgyOSw2IEBAIHZvaWQgQWNjZXNzQ2FzZTo6Z2VuZXJh
dGUoQWNjZXNzR2VuZXJhdGkKIAogICAgICAgICAvLyBTdHVmZiBmb3IgY3VzdG9tIGdldHRlcnMv
c2V0dGVycy4KICAgICAgICAgQ0NhbGxIZWxwZXJzOjpDYWxsIG9wZXJhdGlvbkNhbGw7Ci0gICAg
ICAgIENDYWxsSGVscGVyczo6Q2FsbCBsb29rdXBFeGNlcHRpb25IYW5kbGVyQ2FsbDsKIAogICAg
ICAgICAvLyBTdHVmZiBmb3IgSlMgZ2V0dGVycy9zZXR0ZXJzLgogICAgICAgICBDQ2FsbEhlbHBl
cnM6OkRhdGFMYWJlbFB0ciBhZGRyZXNzT2ZMaW5rRnVuY3Rpb25DaGVjazsKQEAgLTc2OSwxMSAr
ODQwLDggQEAgdm9pZCBBY2Nlc3NDYXNlOjpnZW5lcmF0ZShBY2Nlc3NHZW5lcmF0aQogCiAgICAg
ICAgIC8vIFRoaXMgYWxzbyBkb2VzIHRoZSBuZWNlc3NhcnkgY2FsY3VsYXRpb25zIG9mIHdoZXRo
ZXIgb3Igbm90IHdlJ3JlIGFuCiAgICAgICAgIC8vIGV4Y2VwdGlvbiBoYW5kbGluZyBjYWxsIHNp
dGUuCi0gICAgICAgIHN0YXRlLmNhbGN1bGF0ZUxpdmVSZWdpc3RlcnNGb3JDYWxsQW5kRXhjZXB0
aW9uSGFuZGxpbmcoKTsKICAgICAgICAgc3RhdGUucHJlc2VydmVMaXZlUmVnaXN0ZXJzVG9TdGFj
a0ZvckNhbGwoKTsKIAotICAgICAgICAvLyBOZWVkIHRvIG1ha2Ugc3VyZSB0aGF0IHdoZW5ldmVy
IHRoaXMgY2FsbCBpcyBtYWRlIGluIHRoZSBmdXR1cmUsIHdlIHJlbWVtYmVyIHRoZQotICAgICAg
ICAvLyBwbGFjZSB0aGF0IHdlIG1hZGUgaXQgZnJvbS4KICAgICAgICAgaml0LnN0b3JlMzIoCiAg
ICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihzdGF0ZS5jYWxsU2l0ZUluZGV4
Rm9yRXhjZXB0aW9uSGFuZGxpbmdPck9yaWdpbmFsKCkuYml0cygpKSwKICAgICAgICAgICAgIEND
YWxsSGVscGVyczo6dGFnRm9yKHN0YXRpY19jYXN0PFZpcnR1YWxSZWdpc3Rlcj4oSlNTdGFjazo6
QXJndW1lbnRDb3VudCkpKTsKQEAgLTg5Niw3ICs5NjQsNyBAQCB2b2lkIEFjY2Vzc0Nhc2U6Omdl
bmVyYXRlKEFjY2Vzc0dlbmVyYXRpCiAgICAgICAgICAgICAgICAgR1BSSW5mbzo6Y2FsbEZyYW1l
UmVnaXN0ZXIsIENDYWxsSGVscGVyczo6c3RhY2tQb2ludGVyUmVnaXN0ZXIpOwogICAgICAgICAg
ICAgc3RhdGUucmVzdG9yZUxpdmVSZWdpc3RlcnNGcm9tU3RhY2tGb3JDYWxsKGlzR2V0dGVyKCkp
OwogCi0gICAgICAgICAgICBzdGF0ZS5jYWxsYmFja3MuYXBwZW5kKAorICAgICAgICAgICAgaml0
LmFkZExpbmtUYXNrKAogICAgICAgICAgICAgICAgIFs9LCAmdm1dIChMaW5rQnVmZmVyJiBsaW5r
QnVmZmVyKSB7CiAgICAgICAgICAgICAgICAgICAgIG1fcmFyZURhdGEtPmNhbGxMaW5rSW5mby0+
c2V0Q2FsbExvY2F0aW9ucygKICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmtCdWZmZXIubG9j
YXRpb25PZk5lYXJDYWxsKHNsb3dQYXRoQ2FsbCksCkBAIC05NDAsNiArMTAwOCwxMSBAQCB2b2lk
IEFjY2Vzc0Nhc2U6OmdlbmVyYXRlKEFjY2Vzc0dlbmVyYXRpCiAgICAgICAgICAgICBqaXQuc3Rv
cmVQdHIoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsICZ2bS50b3BDYWxsRnJhbWUpOwogCiAg
ICAgICAgICAgICBvcGVyYXRpb25DYWxsID0gaml0LmNhbGwoKTsKKyAgICAgICAgICAgIGppdC5h
ZGRMaW5rVGFzaygKKyAgICAgICAgICAgICAgICBbPV0gKExpbmtCdWZmZXImIGxpbmtCdWZmZXIp
IHsKKyAgICAgICAgICAgICAgICAgICAgbGlua0J1ZmZlci5saW5rKG9wZXJhdGlvbkNhbGwsIEZ1
bmN0aW9uUHRyKG1fcmFyZURhdGEtPmN1c3RvbUFjY2Vzc29yLm9wYXF1ZSkpOworICAgICAgICAg
ICAgICAgIH0pOworCiAgICAgICAgICAgICBpZiAobV90eXBlID09IEN1c3RvbVZhbHVlR2V0dGVy
IHx8IG1fdHlwZSA9PSBDdXN0b21BY2Nlc3NvckdldHRlcikKICAgICAgICAgICAgICAgICBqaXQu
c2V0dXBSZXN1bHRzKHZhbHVlUmVncyk7CiAgICAgICAgICAgICBqaXQucmVjbGFpbVNwYWNlT25T
dGFja0ZvckNDYWxsKCk7CkBAIC05NDcsNDMgKzEwMjAsMTEgQEAgdm9pZCBBY2Nlc3NDYXNlOjpn
ZW5lcmF0ZShBY2Nlc3NHZW5lcmF0aQogICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpKdW1wIG5v
RXhjZXB0aW9uID0KICAgICAgICAgICAgICAgICBqaXQuZW1pdEV4Y2VwdGlvbkNoZWNrKENDYWxs
SGVscGVyczo6SW52ZXJ0ZWRFeGNlcHRpb25DaGVjayk7CiAKLSAgICAgICAgICAgIGJvb2wgZGlk
U2V0TG9va3VwRXhjZXB0aW9uSGFuZGxlciA9IGZhbHNlOwogICAgICAgICAgICAgc3RhdGUucmVz
dG9yZUxpdmVSZWdpc3RlcnNGcm9tU3RhY2tGb3JDYWxsV2l0aFRocm93bkV4Y2VwdGlvbigpOwot
ICAgICAgICAgICAgc3RhdGUucmVzdG9yZVNjcmF0Y2goKTsKLSAgICAgICAgICAgIGppdC5jb3B5
Q2FsbGVlU2F2ZXNUb1ZNQ2FsbGVlU2F2ZXNCdWZmZXIoKTsKLSAgICAgICAgICAgIGlmIChzdGF0
ZS5uZWVkc1RvUmVzdG9yZVJlZ2lzdGVyc0lmRXhjZXB0aW9uKCkpIHsKLSAgICAgICAgICAgICAg
ICAvLyBUbyB0aGUgSklUIHRoYXQgcHJvZHVjZXMgdGhlIG9yaWdpbmFsIGV4Y2VwdGlvbiBoYW5k
bGluZwotICAgICAgICAgICAgICAgIC8vIGNhbGwgc2l0ZSwgdGhleSB3aWxsIGV4cGVjdCB0aGUg
T1NSIGV4aXQgdG8gYmUgYXJyaXZlZAotICAgICAgICAgICAgICAgIC8vIGF0IGZyb20gZ2VuZXJp
Y1Vud2luZC4gVGhlcmVmb3JlIHdlIG11c3QgbW9kZWwgd2hhdCBnZW5lcmljVW53aW5kCi0gICAg
ICAgICAgICAgICAgLy8gZG9lcyBoZXJlLiBJLmUsIHNldCBjYWxsRnJhbWVGb3JDYXRjaCBhbmQg
Y29weSBjYWxsZWUgc2F2ZXMuCi0KLSAgICAgICAgICAgICAgICBqaXQuc3RvcmVQdHIoR1BSSW5m
bzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIHZtLmFkZHJlc3NPZkNhbGxGcmFtZUZvckNhdGNoKCkpOwot
ICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6SnVtcCBqdW1wVG9PU1JFeGl0RXhjZXB0aW9u
SGFuZGxlciA9IGppdC5qdW1wKCk7Ci0KLSAgICAgICAgICAgICAgICAvLyBXZSBkb24ndCBuZWVk
IHRvIGluc2VydCBhIG5ldyBleGNlcHRpb24gaGFuZGxlciBpbiB0aGUgdGFibGUKLSAgICAgICAg
ICAgICAgICAvLyBiZWNhdXNlIHdlJ3JlIGRvaW5nIGEgbWFudWFsIGV4Y2VwdGlvbiBjaGVjayBo
ZXJlLiBpLmUsIHdlJ2xsCi0gICAgICAgICAgICAgICAgLy8gbmV2ZXIgYXJyaXZlIGhlcmUgZnJv
bSBnZW5lcmljVW53aW5kKCkuCi0gICAgICAgICAgICAgICAgSGFuZGxlckluZm8gb3JpZ2luYWxI
YW5kbGVyID0gc3RhdGUub3JpZ2luYWxFeGNlcHRpb25IYW5kbGVyKCk7Ci0gICAgICAgICAgICAg
ICAgc3RhdGUuY2FsbGJhY2tzLmFwcGVuZCgKLSAgICAgICAgICAgICAgICAgICAgWz1dIChMaW5r
QnVmZmVyJiBsaW5rQnVmZmVyKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBsaW5rQnVmZmVy
LmxpbmsoanVtcFRvT1NSRXhpdEV4Y2VwdGlvbkhhbmRsZXIsIG9yaWdpbmFsSGFuZGxlci5uYXRp
dmVDb2RlKTsKLSAgICAgICAgICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICB9IGVsc2Ugewot
ICAgICAgICAgICAgICAgIGppdC5zZXR1cEFyZ3VtZW50cyhDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJ
bW1QdHIoJnZtKSwgR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIpOwotICAgICAgICAgICAgICAg
IGxvb2t1cEV4Y2VwdGlvbkhhbmRsZXJDYWxsID0gaml0LmNhbGwoKTsKLSAgICAgICAgICAgICAg
ICBkaWRTZXRMb29rdXBFeGNlcHRpb25IYW5kbGVyID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICBq
aXQuanVtcFRvRXhjZXB0aW9uSGFuZGxlcigpOwotICAgICAgICAgICAgfQorICAgICAgICAgICAg
c3RhdGUuZW1pdEV4cGxpY2l0RXhjZXB0aW9uSGFuZGxlcigpOwogICAgICAgICAKICAgICAgICAg
ICAgIG5vRXhjZXB0aW9uLmxpbmsoJmppdCk7CiAgICAgICAgICAgICBzdGF0ZS5yZXN0b3JlTGl2
ZVJlZ2lzdGVyc0Zyb21TdGFja0ZvckNhbGwoaXNHZXR0ZXIoKSk7Ci0KLSAgICAgICAgICAgIHN0
YXRlLmNhbGxiYWNrcy5hcHBlbmQoCi0gICAgICAgICAgICAgICAgWz1dIChMaW5rQnVmZmVyJiBs
aW5rQnVmZmVyKSB7Ci0gICAgICAgICAgICAgICAgICAgIGxpbmtCdWZmZXIubGluayhvcGVyYXRp
b25DYWxsLCBGdW5jdGlvblB0cihtX3JhcmVEYXRhLT5jdXN0b21BY2Nlc3Nvci5vcGFxdWUpKTsK
LSAgICAgICAgICAgICAgICAgICAgaWYgKGRpZFNldExvb2t1cEV4Y2VwdGlvbkhhbmRsZXIpCi0g
ICAgICAgICAgICAgICAgICAgICAgICBsaW5rQnVmZmVyLmxpbmsobG9va3VwRXhjZXB0aW9uSGFu
ZGxlckNhbGwsIGxvb2t1cEV4Y2VwdGlvbkhhbmRsZXIpOwotICAgICAgICAgICAgICAgIH0pOwog
ICAgICAgICB9CiAgICAgICAgIHN0YXRlLnN1Y2NlZWQoKTsKICAgICAgICAgcmV0dXJuOwpAQCAt
MTAxOCw5ICsxMDU5LDggQEAgdm9pZCBBY2Nlc3NDYXNlOjpnZW5lcmF0ZShBY2Nlc3NHZW5lcmF0
aQogICAgIH0KIAogICAgIGNhc2UgVHJhbnNpdGlvbjogewotICAgICAgICAvLyBBY2Nlc3NDYXNl
Ojp0cmFuc2l0aW9uKCkgc2hvdWxkIGhhdmUgcmV0dXJuZWQgbnVsbC4KKyAgICAgICAgLy8gQWNj
ZXNzQ2FzZTo6dHJhbnNpdGlvbigpIHNob3VsZCBoYXZlIHJldHVybmVkIG51bGwgaWYgdGhpcyB3
YXNuJ3QgdHJ1ZS4KICAgICAgICAgUkVMRUFTRV9BU1NFUlQoR1BSSW5mbzo6bnVtYmVyT2ZSZWdp
c3RlcnMgPj0gNiB8fCAhc3RydWN0dXJlKCktPm91dE9mTGluZUNhcGFjaXR5KCkgfHwgc3RydWN0
dXJlKCktPm91dE9mTGluZUNhcGFjaXR5KCkgPT0gbmV3U3RydWN0dXJlKCktPm91dE9mTGluZUNh
cGFjaXR5KCkpOwotICAgICAgICBSRUxFQVNFX0FTU0VSVCghc3RydWN0dXJlKCktPmNvdWxkSGF2
ZUluZGV4aW5nSGVhZGVyKCkpOwogCiAgICAgICAgIGlmIChJbmZlcnJlZFR5cGUqIHR5cGUgPSBu
ZXdTdHJ1Y3R1cmUoKS0+aW5mZXJyZWRUeXBlRm9yKGlkZW50LmltcGwoKSkpIHsKICAgICAgICAg
ICAgIGlmICh2ZXJib3NlKQpAQCAtMTAzMyw2ICsxMDczLDcgQEAgdm9pZCBBY2Nlc3NDYXNlOjpn
ZW5lcmF0ZShBY2Nlc3NHZW5lcmF0aQogICAgICAgICAKICAgICAgICAgYm9vbCBhbGxvY2F0aW5n
ID0gbmV3U3RydWN0dXJlKCktPm91dE9mTGluZUNhcGFjaXR5KCkgIT0gc3RydWN0dXJlKCktPm91
dE9mTGluZUNhcGFjaXR5KCk7CiAgICAgICAgIGJvb2wgcmVhbGxvY2F0aW5nID0gYWxsb2NhdGlu
ZyAmJiBzdHJ1Y3R1cmUoKS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKTsKKyAgICAgICAgYm9vbCBhbGxv
Y2F0aW5nSW5saW5lID0gYWxsb2NhdGluZyAmJiAhc3RydWN0dXJlKCktPmNvdWxkSGF2ZUluZGV4
aW5nSGVhZGVyKCk7CiAKICAgICAgICAgU2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yIGFsbG9jYXRv
cihzdHViSW5mby5wYXRjaC51c2VkUmVnaXN0ZXJzKTsKICAgICAgICAgYWxsb2NhdG9yLmxvY2so
YmFzZUdQUik7CkBAIC0xMDQyLDEyICsxMDgzLDEyIEBAIHZvaWQgQWNjZXNzQ2FzZTo6Z2VuZXJh
dGUoQWNjZXNzR2VuZXJhdGkKICAgICAgICAgYWxsb2NhdG9yLmxvY2sodmFsdWVSZWdzKTsKICAg
ICAgICAgYWxsb2NhdG9yLmxvY2soc2NyYXRjaEdQUik7CiAKLSAgICAgICAgR1BSUmVnIHNjcmF0
Y2hHUFIyID0gYWxsb2NhdG9yLmFsbG9jYXRlU2NyYXRjaEdQUigpOwotICAgICAgICBHUFJSZWcg
c2NyYXRjaEdQUjM7Ci0gICAgICAgIGlmIChhbGxvY2F0aW5nKQorICAgICAgICBHUFJSZWcgc2Ny
YXRjaEdQUjIgPSBJbnZhbGlkR1BSUmVnOworICAgICAgICBHUFJSZWcgc2NyYXRjaEdQUjMgPSBJ
bnZhbGlkR1BSUmVnOworICAgICAgICBpZiAoYWxsb2NhdGluZ0lubGluZSkgeworICAgICAgICAg
ICAgc2NyYXRjaEdQUjIgPSBhbGxvY2F0b3IuYWxsb2NhdGVTY3JhdGNoR1BSKCk7CiAgICAgICAg
ICAgICBzY3JhdGNoR1BSMyA9IGFsbG9jYXRvci5hbGxvY2F0ZVNjcmF0Y2hHUFIoKTsKLSAgICAg
ICAgZWxzZQotICAgICAgICAgICAgc2NyYXRjaEdQUjMgPSBJbnZhbGlkR1BSUmVnOworICAgICAg
ICB9CiAKICAgICAgICAgU2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yOjpQcmVzZXJ2ZWRTdGF0ZSBw
cmVzZXJ2ZWRTdGF0ZSA9CiAgICAgICAgICAgICBhbGxvY2F0b3IucHJlc2VydmVSZXVzZWRSZWdp
c3RlcnNCeVB1c2hpbmcoaml0LCBTY3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3I6OkV4dHJhU3RhY2tT
cGFjZTo6U3BhY2VGb3JDQ2FsbCk7CkBAIC0xMDU4LDQ3ICsxMDk5LDEwMiBAQCB2b2lkIEFjY2Vz
c0Nhc2U6OmdlbmVyYXRlKEFjY2Vzc0dlbmVyYXRpCiAKICAgICAgICAgaWYgKGFsbG9jYXRpbmcp
IHsKICAgICAgICAgICAgIHNpemVfdCBuZXdTaXplID0gbmV3U3RydWN0dXJlKCktPm91dE9mTGlu
ZUNhcGFjaXR5KCkgKiBzaXplb2YoSlNWYWx1ZSk7Ci0gICAgICAgICAgICBDb3BpZWRBbGxvY2F0
b3IqIGNvcGllZEFsbG9jYXRvciA9ICZ2bS5oZWFwLnN0b3JhZ2VBbGxvY2F0b3IoKTsKKyAgICAg
ICAgICAgIAorICAgICAgICAgICAgaWYgKGFsbG9jYXRpbmdJbmxpbmUpIHsKKyAgICAgICAgICAg
ICAgICBDb3BpZWRBbGxvY2F0b3IqIGNvcGllZEFsbG9jYXRvciA9ICZ2bS5oZWFwLnN0b3JhZ2VB
bGxvY2F0b3IoKTsKIAotICAgICAgICAgICAgaWYgKCFyZWFsbG9jYXRpbmcpIHsKLSAgICAgICAg
ICAgICAgICBqaXQubG9hZFB0cigmY29waWVkQWxsb2NhdG9yLT5tX2N1cnJlbnRSZW1haW5pbmcs
IHNjcmF0Y2hHUFIpOwotICAgICAgICAgICAgICAgIHNsb3dQYXRoLmFwcGVuZCgKLSAgICAgICAg
ICAgICAgICAgICAgaml0LmJyYW5jaFN1YlB0cigKLSAgICAgICAgICAgICAgICAgICAgICAgIEND
YWxsSGVscGVyczo6U2lnbmVkLCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihuZXdTaXplKSwg
c2NyYXRjaEdQUikpOwotICAgICAgICAgICAgICAgIGppdC5zdG9yZVB0cihzY3JhdGNoR1BSLCAm
Y29waWVkQWxsb2NhdG9yLT5tX2N1cnJlbnRSZW1haW5pbmcpOwotICAgICAgICAgICAgICAgIGpp
dC5uZWdQdHIoc2NyYXRjaEdQUik7Ci0gICAgICAgICAgICAgICAgaml0LmFkZFB0cigKLSAgICAg
ICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpBYnNvbHV0ZUFkZHJlc3MoJmNvcGllZEFsbG9j
YXRvci0+bV9jdXJyZW50UGF5bG9hZEVuZCksIHNjcmF0Y2hHUFIpOwotICAgICAgICAgICAgICAg
IGppdC5hZGRQdHIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoc2l6ZW9mKEpTVmFsdWUpKSwg
c2NyYXRjaEdQUik7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIHNpemVf
dCBvbGRTaXplID0gc3RydWN0dXJlKCktPm91dE9mTGluZUNhcGFjaXR5KCkgKiBzaXplb2YoSlNW
YWx1ZSk7Ci0gICAgICAgICAgICAgICAgQVNTRVJUKG5ld1NpemUgPiBvbGRTaXplKTsKKyAgICAg
ICAgICAgICAgICBpZiAoIXJlYWxsb2NhdGluZykgeworICAgICAgICAgICAgICAgICAgICBqaXQu
bG9hZFB0cigmY29waWVkQWxsb2NhdG9yLT5tX2N1cnJlbnRSZW1haW5pbmcsIHNjcmF0Y2hHUFIp
OworICAgICAgICAgICAgICAgICAgICBzbG93UGF0aC5hcHBlbmQoCisgICAgICAgICAgICAgICAg
ICAgICAgICBqaXQuYnJhbmNoU3ViUHRyKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEND
YWxsSGVscGVyczo6U2lnbmVkLCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihuZXdTaXplKSwg
c2NyYXRjaEdQUikpOworICAgICAgICAgICAgICAgICAgICBqaXQuc3RvcmVQdHIoc2NyYXRjaEdQ
UiwgJmNvcGllZEFsbG9jYXRvci0+bV9jdXJyZW50UmVtYWluaW5nKTsKKyAgICAgICAgICAgICAg
ICAgICAgaml0Lm5lZ1B0cihzY3JhdGNoR1BSKTsKKyAgICAgICAgICAgICAgICAgICAgaml0LmFk
ZFB0cigKKyAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6QWJzb2x1dGVBZGRy
ZXNzKCZjb3BpZWRBbGxvY2F0b3ItPm1fY3VycmVudFBheWxvYWRFbmQpLCBzY3JhdGNoR1BSKTsK
KyAgICAgICAgICAgICAgICAgICAgaml0LmFkZFB0cihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0z
MihzaXplb2YoSlNWYWx1ZSkpLCBzY3JhdGNoR1BSKTsKKyAgICAgICAgICAgICAgICB9IGVsc2Ug
eworICAgICAgICAgICAgICAgICAgICAvLyBIYW5kbGUgdGhlIGNhc2Ugd2hlcmUgd2UgYXJlIHJl
YWxsb2NhdGluZyAoaS5lLiB0aGUgb2xkIHN0cnVjdHVyZS9idXR0ZXJmbHkKKyAgICAgICAgICAg
ICAgICAgICAgLy8gYWxyZWFkeSBoYWQgb3V0LW9mLWxpbmUgcHJvcGVydHkgc3RvcmFnZSkuCisg
ICAgICAgICAgICAgICAgICAgIHNpemVfdCBvbGRTaXplID0gc3RydWN0dXJlKCktPm91dE9mTGlu
ZUNhcGFjaXR5KCkgKiBzaXplb2YoSlNWYWx1ZSk7CisgICAgICAgICAgICAgICAgICAgIEFTU0VS
VChuZXdTaXplID4gb2xkU2l6ZSk7CiAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBqaXQu
bG9hZFB0cihDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoYmFzZUdQUiwgSlNPYmplY3Q6OmJ1dHRlcmZs
eU9mZnNldCgpKSwgc2NyYXRjaEdQUjMpOwotICAgICAgICAgICAgICAgIGppdC5sb2FkUHRyKCZj
b3BpZWRBbGxvY2F0b3ItPm1fY3VycmVudFJlbWFpbmluZywgc2NyYXRjaEdQUik7Ci0gICAgICAg
ICAgICAgICAgc2xvd1BhdGguYXBwZW5kKAotICAgICAgICAgICAgICAgICAgICBqaXQuYnJhbmNo
U3ViUHRyKAotICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpTaWduZWQsIEND
YWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKG5ld1NpemUpLCBzY3JhdGNoR1BSKSk7Ci0gICAgICAg
ICAgICAgICAgaml0LnN0b3JlUHRyKHNjcmF0Y2hHUFIsICZjb3BpZWRBbGxvY2F0b3ItPm1fY3Vy
cmVudFJlbWFpbmluZyk7Ci0gICAgICAgICAgICAgICAgaml0Lm5lZ1B0cihzY3JhdGNoR1BSKTsK
LSAgICAgICAgICAgICAgICBqaXQuYWRkUHRyKAotICAgICAgICAgICAgICAgICAgICBDQ2FsbEhl
bHBlcnM6OkFic29sdXRlQWRkcmVzcygmY29waWVkQWxsb2NhdG9yLT5tX2N1cnJlbnRQYXlsb2Fk
RW5kKSwgc2NyYXRjaEdQUik7Ci0gICAgICAgICAgICAgICAgaml0LmFkZFB0cihDQ2FsbEhlbHBl
cnM6OlRydXN0ZWRJbW0zMihzaXplb2YoSlNWYWx1ZSkpLCBzY3JhdGNoR1BSKTsKLSAgICAgICAg
ICAgICAgICAvLyBXZSBoYXZlIHNjcmF0Y2hHUFIgPSBuZXcgc3RvcmFnZSwgc2NyYXRjaEdQUjMg
PSBvbGQgc3RvcmFnZSwKLSAgICAgICAgICAgICAgICAvLyBzY3JhdGNoR1BSMiA9IGF2YWlsYWJs
ZQotICAgICAgICAgICAgICAgIGZvciAoc2l6ZV90IG9mZnNldCA9IDA7IG9mZnNldCA8IG9sZFNp
emU7IG9mZnNldCArPSBzaXplb2Yodm9pZCopKSB7Ci0gICAgICAgICAgICAgICAgICAgIGppdC5s
b2FkUHRyKAotICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjcmF0Y2hHUFIzLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIC1zdGF0aWNfY2FzdDxwdHJkaWZmX3Q+KAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBvZmZzZXQgKyBzaXplb2YoSlNWYWx1ZSkgKyBzaXplb2Yodm9pZCopKSks
Ci0gICAgICAgICAgICAgICAgICAgICAgICBzY3JhdGNoR1BSMik7Ci0gICAgICAgICAgICAgICAg
ICAgIGppdC5zdG9yZVB0cigKLSAgICAgICAgICAgICAgICAgICAgICAgIHNjcmF0Y2hHUFIyLAot
ICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHNjcmF0Y2hHUFIsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgLXN0YXRpY19jYXN0PHB0cmRpZmZfdD4ob2Zmc2V0ICsgc2l6ZW9mKEpTVmFsdWUpICsgc2l6
ZW9mKHZvaWQqKSkpKTsKKyAgICAgICAgICAgICAgICAgICAgaml0LmxvYWRQdHIoQ0NhbGxIZWxw
ZXJzOjpBZGRyZXNzKGJhc2VHUFIsIEpTT2JqZWN0OjpidXR0ZXJmbHlPZmZzZXQoKSksIHNjcmF0
Y2hHUFIzKTsKKyAgICAgICAgICAgICAgICAgICAgaml0LmxvYWRQdHIoJmNvcGllZEFsbG9jYXRv
ci0+bV9jdXJyZW50UmVtYWluaW5nLCBzY3JhdGNoR1BSKTsKKyAgICAgICAgICAgICAgICAgICAg
c2xvd1BhdGguYXBwZW5kKAorICAgICAgICAgICAgICAgICAgICAgICAgaml0LmJyYW5jaFN1YlB0
cigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlNpZ25lZCwgQ0Nh
bGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIobmV3U2l6ZSksIHNjcmF0Y2hHUFIpKTsKKyAgICAgICAg
ICAgICAgICAgICAgaml0LnN0b3JlUHRyKHNjcmF0Y2hHUFIsICZjb3BpZWRBbGxvY2F0b3ItPm1f
Y3VycmVudFJlbWFpbmluZyk7CisgICAgICAgICAgICAgICAgICAgIGppdC5uZWdQdHIoc2NyYXRj
aEdQUik7CisgICAgICAgICAgICAgICAgICAgIGppdC5hZGRQdHIoCisgICAgICAgICAgICAgICAg
ICAgICAgICBDQ2FsbEhlbHBlcnM6OkFic29sdXRlQWRkcmVzcygmY29waWVkQWxsb2NhdG9yLT5t
X2N1cnJlbnRQYXlsb2FkRW5kKSwgc2NyYXRjaEdQUik7CisgICAgICAgICAgICAgICAgICAgIGpp
dC5hZGRQdHIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoc2l6ZW9mKEpTVmFsdWUpKSwgc2Ny
YXRjaEdQUik7CisgICAgICAgICAgICAgICAgICAgIC8vIFdlIGhhdmUgc2NyYXRjaEdQUiA9IG5l
dyBzdG9yYWdlLCBzY3JhdGNoR1BSMyA9IG9sZCBzdG9yYWdlLAorICAgICAgICAgICAgICAgICAg
ICAvLyBzY3JhdGNoR1BSMiA9IGF2YWlsYWJsZQorICAgICAgICAgICAgICAgICAgICBmb3IgKHNp
emVfdCBvZmZzZXQgPSAwOyBvZmZzZXQgPCBvbGRTaXplOyBvZmZzZXQgKz0gc2l6ZW9mKHZvaWQq
KSkgeworICAgICAgICAgICAgICAgICAgICAgICAgaml0LmxvYWRQdHIoCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzY3JhdGNoR1BSMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgLXN0YXRpY19jYXN0PHB0cmRpZmZfdD4oCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBvZmZzZXQgKyBzaXplb2YoSlNWYWx1ZSkgKyBzaXplb2Yodm9pZCopKSksCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc2NyYXRjaEdQUjIpOworICAgICAgICAgICAgICAgICAg
ICAgICAgaml0LnN0b3JlUHRyKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjcmF0Y2hH
UFIyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6QWRkcmVzcygK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NyYXRjaEdQUiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgLXN0YXRpY19jYXN0PHB0cmRpZmZfdD4ob2Zmc2V0ICsgc2l6
ZW9mKEpTVmFsdWUpICsgc2l6ZW9mKHZvaWQqKSkpKTsKKyAgICAgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAg
Ly8gSGFuZGxlIHRoZSBjYXNlIHdoZXJlIHdlIGFyZSBhbGxvY2F0aW5nIG91dC1vZi1saW5lIHVz
aW5nIGFuIG9wZXJhdGlvbi4KKyAgICAgICAgICAgICAgICBSZWdpc3RlclNldCBleHRyYVJlZ2lz
dGVyc1RvUHJlc2VydmU7CisgICAgICAgICAgICAgICAgZXh0cmFSZWdpc3RlcnNUb1ByZXNlcnZl
LnNldChiYXNlR1BSKTsKKyAgICAgICAgICAgICAgICBleHRyYVJlZ2lzdGVyc1RvUHJlc2VydmUu
c2V0KHZhbHVlUmVncyk7CisgICAgICAgICAgICAgICAgc3RhdGUucHJlc2VydmVMaXZlUmVnaXN0
ZXJzVG9TdGFja0ZvckNhbGwoZXh0cmFSZWdpc3RlcnNUb1ByZXNlcnZlKTsKKyAgICAgICAgICAg
ICAgICAKKyAgICAgICAgICAgICAgICBqaXQuc3RvcmUzMigKKyAgICAgICAgICAgICAgICAgICAg
Q0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoCisgICAgICAgICAgICAgICAgICAgICAgICBzdGF0
ZS5jYWxsU2l0ZUluZGV4Rm9yRXhjZXB0aW9uSGFuZGxpbmdPck9yaWdpbmFsKCkuYml0cygpKSwK
KyAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjp0YWdGb3Ioc3RhdGljX2Nhc3Q8Vmly
dHVhbFJlZ2lzdGVyPihKU1N0YWNrOjpBcmd1bWVudENvdW50KSkpOworICAgICAgICAgICAgICAg
IAorICAgICAgICAgICAgICAgIGppdC5tYWtlU3BhY2VPblN0YWNrRm9yQ0NhbGwoKTsKKyAgICAg
ICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBpZiAoIXJlYWxsb2NhdGluZykgeworICAgICAg
ICAgICAgICAgICAgICBqaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGJhc2VHUFIpOwor
ICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpD
YWxsIG9wZXJhdGlvbkNhbGwgPSBqaXQuY2FsbCgpOworICAgICAgICAgICAgICAgICAgICBqaXQu
YWRkTGlua1Rhc2soCisgICAgICAgICAgICAgICAgICAgICAgICBbPV0gKExpbmtCdWZmZXImIGxp
bmtCdWZmZXIpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5rQnVmZmVyLmxpbmso
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wZXJhdGlvbkNhbGwsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEZ1bmN0aW9uUHRyKG9wZXJhdGlvblJlYWxsb2NhdGVC
dXR0ZXJmbHlUb0hhdmVQcm9wZXJ0eVN0b3JhZ2VXaXRoSW5pdGlhbENhcGFjaXR5KSk7CisgICAg
ICAgICAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAg
ICAgICAgICAgICAgICAvLyBIYW5kbGUgdGhlIGNhc2Ugd2hlcmUgd2UgYXJlIHJlYWxsb2NhdGlu
ZyAoaS5lLiB0aGUgb2xkIHN0cnVjdHVyZS9idXR0ZXJmbHkKKyAgICAgICAgICAgICAgICAgICAg
Ly8gYWxyZWFkeSBoYWQgb3V0LW9mLWxpbmUgcHJvcGVydHkgc3RvcmFnZSkuCisgICAgICAgICAg
ICAgICAgICAgIGppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoCisgICAgICAgICAgICAg
ICAgICAgICAgICBiYXNlR1BSLCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihuZXdTaXplIC8g
c2l6ZW9mKEpTVmFsdWUpKSk7CisgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAg
ICAgICBDQ2FsbEhlbHBlcnM6OkNhbGwgb3BlcmF0aW9uQ2FsbCA9IGppdC5jYWxsKCk7CisgICAg
ICAgICAgICAgICAgICAgIGppdC5hZGRMaW5rVGFzaygKKyAgICAgICAgICAgICAgICAgICAgICAg
IFs9XSAoTGlua0J1ZmZlciYgbGlua0J1ZmZlcikgeworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGxpbmtCdWZmZXIubGluaygKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3Bl
cmF0aW9uQ2FsbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRnVuY3Rpb25QdHIo
b3BlcmF0aW9uUmVhbGxvY2F0ZUJ1dHRlcmZseVRvR3Jvd1Byb3BlcnR5U3RvcmFnZSkpOworICAg
ICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
ICAgIAorICAgICAgICAgICAgICAgIGppdC5yZWNsYWltU3BhY2VPblN0YWNrRm9yQ0NhbGwoKTsK
KyAgICAgICAgICAgICAgICBqaXQubW92ZShHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUiwgc2NyYXRj
aEdQUik7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpK
dW1wIG5vRXhjZXB0aW9uID0KKyAgICAgICAgICAgICAgICAgICAgaml0LmVtaXRFeGNlcHRpb25D
aGVjayhDQ2FsbEhlbHBlcnM6OkludmVydGVkRXhjZXB0aW9uQ2hlY2spOworICAgICAgICAgICAg
ICAgIAorICAgICAgICAgICAgICAgIHN0YXRlLnJlc3RvcmVMaXZlUmVnaXN0ZXJzRnJvbVN0YWNr
Rm9yQ2FsbFdpdGhUaHJvd25FeGNlcHRpb24oKTsKKyAgICAgICAgICAgICAgICBzdGF0ZS5lbWl0
RXhwbGljaXRFeGNlcHRpb25IYW5kbGVyKCk7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAg
ICAgICAgbm9FeGNlcHRpb24ubGluaygmaml0KTsKKyAgICAgICAgICAgICAgICBzdGF0ZS5yZXN0
b3JlTGl2ZVJlZ2lzdGVyc0Zyb21TdGFja0ZvckNhbGwoKTsKICAgICAgICAgICAgIH0KICAgICAg
ICAgfQogCkBAIC0xMTE3LDcgKzEyMTMsOSBAQCB2b2lkIEFjY2Vzc0Nhc2U6OmdlbmVyYXRlKEFj
Y2Vzc0dlbmVyYXRpCiAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHNjcmF0
Y2hHUFIsIG9mZnNldEluQnV0dGVyZmx5KG1fb2Zmc2V0KSAqIHNpemVvZihKU1ZhbHVlKSkpOwog
ICAgICAgICB9CiAgICAgICAgIAotICAgICAgICBpZiAoYWxsb2NhdGluZykgeworICAgICAgICAv
LyBJZiB3ZSBoYWQgYWxsb2NhdGVkIHVzaW5nIGFuIG9wZXJhdGlvbiB0aGVuIHdlIHdvdWxkIGhh
dmUgYWxyZWFkeSBleGVjdXRlZCB0aGUgc3RvcmUKKyAgICAgICAgLy8gYmFycmllciBhbmQgd2Ug
d291bGQgaGF2ZSBhbHJlYWR5IHN0b3JlZCB0aGUgYnV0dGVyZmx5IGludG8gdGhlIG9iamVjdC4K
KyAgICAgICAgaWYgKGFsbG9jYXRpbmdJbmxpbmUpIHsKICAgICAgICAgICAgIENDYWxsSGVscGVy
czo6SnVtcCBvd25lcklzUmVtZW1iZXJlZE9ySW5FZGVuID0gaml0Lmp1bXBJZklzUmVtZW1iZXJl
ZE9ySW5FZGVuKGJhc2VHUFIpOwogICAgICAgICAgICAgV3JpdGVCYXJyaWVyQnVmZmVyJiB3cml0
ZUJhcnJpZXJCdWZmZXIgPSBqaXQudm0oKS0+aGVhcC53cml0ZUJhcnJpZXJCdWZmZXIoKTsKICAg
ICAgICAgICAgIGppdC5sb2FkMzIod3JpdGVCYXJyaWVyQnVmZmVyLmN1cnJlbnRJbmRleEFkZHJl
c3MoKSwgc2NyYXRjaEdQUjIpOwpAQCAtMTEyNSwxMCArMTIyMywxMCBAQCB2b2lkIEFjY2Vzc0Nh
c2U6OmdlbmVyYXRlKEFjY2Vzc0dlbmVyYXRpCiAgICAgICAgICAgICAgICAgaml0LmJyYW5jaDMy
KAogICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkFib3ZlT3JFcXVhbCwgc2NyYXRj
aEdQUjIsCiAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKHdy
aXRlQmFycmllckJ1ZmZlci5jYXBhY2l0eSgpKSkpOwotCisgICAgICAgICAgICAKICAgICAgICAg
ICAgIGppdC5hZGQzMihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMigxKSwgc2NyYXRjaEdQUjIp
OwogICAgICAgICAgICAgaml0LnN0b3JlMzIoc2NyYXRjaEdQUjIsIHdyaXRlQmFycmllckJ1ZmZl
ci5jdXJyZW50SW5kZXhBZGRyZXNzKCkpOwotCisgICAgICAgICAgICAKICAgICAgICAgICAgIGpp
dC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cih3cml0ZUJhcnJpZXJCdWZmZXIuYnVm
ZmVyKCkpLCBzY3JhdGNoR1BSMyk7CiAgICAgICAgICAgICAvLyBXZSB1c2UgYW4gb2Zmc2V0IG9m
IC1zaXplb2Yodm9pZCopIGJlY2F1c2Ugd2UgYWxyZWFkeSBhZGRlZCAxIHRvIHNjcmF0Y2hHUFIy
LgogICAgICAgICAgICAgaml0LnN0b3JlUHRyKApAQCAtMTEzNywxMyArMTIzNSwxMyBAQCB2b2lk
IEFjY2Vzc0Nhc2U6OmdlbmVyYXRlKEFjY2Vzc0dlbmVyYXRpCiAgICAgICAgICAgICAgICAgICAg
IHNjcmF0Y2hHUFIzLCBzY3JhdGNoR1BSMiwgQ0NhbGxIZWxwZXJzOjpTY2FsZVB0ciwKICAgICAg
ICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8aW50MzJfdD4oLXNpemVvZih2b2lkKikpKSk7CiAg
ICAgICAgICAgICBvd25lcklzUmVtZW1iZXJlZE9ySW5FZGVuLmxpbmsoJmppdCk7Ci0gICAgICAg
IH0KLSAgICAgICAgCi0gICAgICAgIC8vIFdlIHNldCB0aGUgbmV3IGJ1dHRlcmZseSBhbmQgdGhl
IHN0cnVjdHVyZSBsYXN0LiBEb2luZyBpdCB0aGlzIHdheSBlbnN1cmVzIHRoYXQgd2hhdGV2ZXIK
LSAgICAgICAgLy8gd2UgaGFkIGRvbmUgdXAgdG8gdGhpcyBwb2ludCBpcyBmb3Jnb3R0ZW4gaWYg
d2UgY2hvb3NlIHRvIGJyYW5jaCB0byBzbG93IHBhdGguCi0gICAgICAgIAotICAgICAgICBpZiAo
YWxsb2NhdGluZykKKyAgICAgICAgICAgIAorICAgICAgICAgICAgLy8gV2Ugc2V0IHRoZSBuZXcg
YnV0dGVyZmx5IGFuZCB0aGUgc3RydWN0dXJlIGxhc3QuIERvaW5nIGl0IHRoaXMgd2F5IGVuc3Vy
ZXMgdGhhdAorICAgICAgICAgICAgLy8gd2hhdGV2ZXIgd2UgaGFkIGRvbmUgdXAgdG8gdGhpcyBw
b2ludCBpcyBmb3Jnb3R0ZW4gaWYgd2UgY2hvb3NlIHRvIGJyYW5jaCB0byBzbG93CisgICAgICAg
ICAgICAvLyBwYXRoLgorICAgICAgICAgICAgCiAgICAgICAgICAgICBqaXQuc3RvcmVQdHIoc2Ny
YXRjaEdQUiwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKGJhc2VHUFIsIEpTT2JqZWN0OjpidXR0ZXJm
bHlPZmZzZXQoKSkpOworICAgICAgICB9CiAgICAgICAgIAogICAgICAgICB1aW50MzJfdCBzdHJ1
Y3R1cmVCaXRzID0gYml0d2lzZV9jYXN0PHVpbnQzMl90PihuZXdTdHJ1Y3R1cmUoKS0+aWQoKSk7
CiAgICAgICAgIGppdC5zdG9yZTMyKApAQCAtMTE1MywxMiArMTI1MSwxNiBAQCB2b2lkIEFjY2Vz
c0Nhc2U6OmdlbmVyYXRlKEFjY2Vzc0dlbmVyYXRpCiAgICAgICAgIGFsbG9jYXRvci5yZXN0b3Jl
UmV1c2VkUmVnaXN0ZXJzQnlQb3BwaW5nKGppdCwgcHJlc2VydmVkU3RhdGUpOwogICAgICAgICBz
dGF0ZS5zdWNjZWVkKCk7CiAgICAgICAgIAotICAgICAgICBpZiAoYWxsb2NhdG9yLmRpZFJldXNl
UmVnaXN0ZXJzKCkpIHsKLSAgICAgICAgICAgIHNsb3dQYXRoLmxpbmsoJmppdCk7Ci0gICAgICAg
ICAgICBhbGxvY2F0b3IucmVzdG9yZVJldXNlZFJlZ2lzdGVyc0J5UG9wcGluZyhqaXQsIHByZXNl
cnZlZFN0YXRlKTsKLSAgICAgICAgICAgIHN0YXRlLmZhaWxBbmRJZ25vcmUuYXBwZW5kKGppdC5q
dW1wKCkpOworICAgICAgICAvLyBXZSB3aWxsIGhhdmUgYSBzbG93IHBhdGggaWYgd2Ugd2VyZSBh
bGxvY2F0aW5nIHdpdGhvdXQgdGhlIGhlbHAgb2YgYW4gb3BlcmF0aW9uLgorICAgICAgICBpZiAo
YWxsb2NhdGluZ0lubGluZSkgeworICAgICAgICAgICAgaWYgKGFsbG9jYXRvci5kaWRSZXVzZVJl
Z2lzdGVycygpKSB7CisgICAgICAgICAgICAgICAgc2xvd1BhdGgubGluaygmaml0KTsKKyAgICAg
ICAgICAgICAgICBhbGxvY2F0b3IucmVzdG9yZVJldXNlZFJlZ2lzdGVyc0J5UG9wcGluZyhqaXQs
IHByZXNlcnZlZFN0YXRlKTsKKyAgICAgICAgICAgICAgICBzdGF0ZS5mYWlsQW5kSWdub3JlLmFw
cGVuZChqaXQuanVtcCgpKTsKKyAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAgIHN0
YXRlLmZhaWxBbmRJZ25vcmUuYXBwZW5kKHNsb3dQYXRoKTsKICAgICAgICAgfSBlbHNlCi0gICAg
ICAgICAgICBzdGF0ZS5mYWlsQW5kSWdub3JlLmFwcGVuZChzbG93UGF0aCk7CisgICAgICAgICAg
ICBSRUxFQVNFX0FTU0VSVChzbG93UGF0aC5lbXB0eSgpKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIApAQCAtMTE3OCw3ICsxMjgwLDcgQEAgdm9pZCBBY2Nlc3NDYXNlOjpnZW5lcmF0ZShBY2Nl
c3NHZW5lcmF0aQogICAgICAgICBzdGF0ZS5zdWNjZWVkKCk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9Ci0KKyAgICAgICAgCiAgICAgY2FzZSBJbnRyaW5zaWNHZXR0ZXI6IHsKICAgICAgICAgUkVM
RUFTRV9BU1NFUlQoaXNWYWxpZE9mZnNldChvZmZzZXQoKSkpOwogCkBAIC0xMTk0LDExICsxMjk2
LDEzIEBAIHZvaWQgQWNjZXNzQ2FzZTo6Z2VuZXJhdGUoQWNjZXNzR2VuZXJhdGkKICAgICAgICAg
ZW1pdEludHJpbnNpY0dldHRlcihzdGF0ZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAg
CisKKyAgICBjYXNlIERpcmVjdEFyZ3VtZW50c0xlbmd0aDoKKyAgICBjYXNlIFNjb3BlZEFyZ3Vt
ZW50c0xlbmd0aDoKICAgICBjYXNlIE1lZ2Ftb3JwaGljTG9hZDoKLSAgICAgICAgLy8gVGhlc2Ug
bmVlZCB0byBiZSBoYW5kbGVkIGJ5IGdlbmVyYXRlV2l0aEd1YXJkKCksIHNpbmNlIHRoZSBndWFy
ZCBpcyBwYXJ0IG9mIHRoZSBtZWdhbW9ycGhpYyBsb2FkCi0gICAgICAgIC8vIGFsZ29yaXRobS4g
V2UgY2FuIGJlIHN1cmUgdGhhdCBub2JvZHkgd2lsbCBjYWxsIGdlbmVyYXRlKCkgZGlyZWN0bHkg
Zm9yIE1lZ2Ftb3JwaGljTG9hZCBzaW5jZQotICAgICAgICAvLyBNZWdhbW9ycGhpY0xvYWQgaXMg
bm90IGd1YXJkZWQgYnkgYSBzdHJ1Y3R1cmUgY2hlY2suCisgICAgICAgIC8vIFRoZXNlIG5lZWQg
dG8gYmUgaGFuZGxlZCBieSBnZW5lcmF0ZVdpdGhHdWFyZCgpLCBzaW5jZSB0aGUgZ3VhcmQgaXMg
cGFydCBvZiB0aGUKKyAgICAgICAgLy8gYWxnb3JpdGhtLiBXZSBjYW4gYmUgc3VyZSB0aGF0IG5v
Ym9keSB3aWxsIGNhbGwgZ2VuZXJhdGUoKSBkaXJlY3RseSBmb3IgdGhlc2Ugc2luY2UgdGhleQor
ICAgICAgICAvLyBhcmUgbm90IGd1YXJkZWQgYnkgc3RydWN0dXJlIGNoZWNrcy4KICAgICAgICAg
UkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9CiAgICAgCkBAIC0xNDY0LDcgKzE1
NjgsNyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgUG9seW1vcnBoaWNBY2Nlc3M6CiAKICAgICAg
ICAgSGFuZGxlckluZm8gb2xkSGFuZGxlciA9IHN0YXRlLm9yaWdpbmFsRXhjZXB0aW9uSGFuZGxl
cigpOwogICAgICAgICBDYWxsU2l0ZUluZGV4IG5ld0V4Y2VwdGlvbkhhbmRsaW5nQ2FsbFNpdGUg
PSBzdGF0ZS5jYWxsU2l0ZUluZGV4Rm9yRXhjZXB0aW9uSGFuZGxpbmcoKTsKLSAgICAgICAgc3Rh
dGUuY2FsbGJhY2tzLmFwcGVuZCgKKyAgICAgICAgaml0LmFkZExpbmtUYXNrKAogICAgICAgICAg
ICAgWz1dIChMaW5rQnVmZmVyJiBsaW5rQnVmZmVyKSB7CiAgICAgICAgICAgICAgICAgbGlua0J1
ZmZlci5saW5rKGp1bXBUb09TUkV4aXRFeGNlcHRpb25IYW5kbGVyLCBvbGRIYW5kbGVyLm5hdGl2
ZUNvZGUpOwogCkBAIC0xNDk4LDkgKzE2MDIsNiBAQCBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgUG9s
eW1vcnBoaWNBY2Nlc3M6CiAgICAgICAgIGZhaWx1cmUsCiAgICAgICAgIHN0dWJJbmZvLmNhbGxS
ZXR1cm5Mb2NhdGlvbi5sYWJlbEF0T2Zmc2V0KHN0dWJJbmZvLnBhdGNoLmRlbHRhQ2FsbFRvU2xv
d0Nhc2UpKTsKICAgICAKLSAgICBmb3IgKGF1dG8gY2FsbGJhY2sgOiBzdGF0ZS5jYWxsYmFja3Mp
Ci0gICAgICAgIGNhbGxiYWNrKGxpbmtCdWZmZXIpOwotCiAgICAgaWYgKHZlcmJvc2UpCiAgICAg
ICAgIGRhdGFMb2coKmNvZGVCbG9jaywgIiAiLCBzdHViSW5mby5jb2RlT3JpZ2luLCAiOiBHZW5l
cmF0aW5nIHBvbHltb3JwaGljIGFjY2VzcyBzdHViIGZvciAiLCBsaXN0RHVtcChjYXNlcyksICJc
biIpOwogCkBAIC0xNjAwLDYgKzE3MDEsMTIgQEAgdm9pZCBwcmludEludGVybmFsKFByaW50U3Ry
ZWFtJiBvdXQsIEFjYwogICAgIGNhc2UgQWNjZXNzQ2FzZTo6U3RyaW5nTGVuZ3RoOgogICAgICAg
ICBvdXQucHJpbnQoIlN0cmluZ0xlbmd0aCIpOwogICAgICAgICByZXR1cm47CisgICAgY2FzZSBB
Y2Nlc3NDYXNlOjpEaXJlY3RBcmd1bWVudHNMZW5ndGg6CisgICAgICAgIG91dC5wcmludCgiRGly
ZWN0QXJndW1lbnRzTGVuZ3RoIik7CisgICAgICAgIHJldHVybjsKKyAgICBjYXNlIEFjY2Vzc0Nh
c2U6OlNjb3BlZEFyZ3VtZW50c0xlbmd0aDoKKyAgICAgICAgb3V0LnByaW50KCJTY29wZWRBcmd1
bWVudHNMZW5ndGgiKTsKKyAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIFJFTEVBU0VfQVNT
RVJUX05PVF9SRUFDSEVEKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
UG9seW1vcnBoaWNBY2Nlc3MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvUG9seW1vcnBoaWNBY2Nlc3MuaAkocmV2aXNpb24gMTk5MTY0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1BvbHltb3JwaGljQWNjZXNzLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTY3LDcgKzY3LDkgQEAgcHVibGljOgogICAgICAgICBJbkhpdCwKICAgICAgICAgSW5N
aXNzLAogICAgICAgICBBcnJheUxlbmd0aCwKLSAgICAgICAgU3RyaW5nTGVuZ3RoCisgICAgICAg
IFN0cmluZ0xlbmd0aCwKKyAgICAgICAgRGlyZWN0QXJndW1lbnRzTGVuZ3RoLAorICAgICAgICBT
Y29wZWRBcmd1bWVudHNMZW5ndGgKICAgICB9OwogCiAgICAgc3RhdGljIGJvb2wgaXNHZXQoQWNj
ZXNzVHlwZSB0eXBlKQpAQCAtOTAsNiArOTIsOCBAQCBwdWJsaWM6CiAgICAgICAgIGNhc2UgSW50
cmluc2ljR2V0dGVyOgogICAgICAgICBjYXNlIEFycmF5TGVuZ3RoOgogICAgICAgICBjYXNlIFN0
cmluZ0xlbmd0aDoKKyAgICAgICAgY2FzZSBEaXJlY3RBcmd1bWVudHNMZW5ndGg6CisgICAgICAg
IGNhc2UgU2NvcGVkQXJndW1lbnRzTGVuZ3RoOgogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAg
ICAgICAgIH0KICAgICB9CkBAIC0xMDgsNiArMTEyLDggQEAgcHVibGljOgogICAgICAgICBjYXNl
IEluTWlzczoKICAgICAgICAgY2FzZSBBcnJheUxlbmd0aDoKICAgICAgICAgY2FzZSBTdHJpbmdM
ZW5ndGg6CisgICAgICAgIGNhc2UgRGlyZWN0QXJndW1lbnRzTGVuZ3RoOgorICAgICAgICBjYXNl
IFNjb3BlZEFyZ3VtZW50c0xlbmd0aDoKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAg
ICAgY2FzZSBUcmFuc2l0aW9uOgogICAgICAgICBjYXNlIFJlcGxhY2U6CkBAIC0xMzUsNiArMTQx
LDggQEAgcHVibGljOgogICAgICAgICBjYXNlIEN1c3RvbUFjY2Vzc29yU2V0dGVyOgogICAgICAg
ICBjYXNlIEFycmF5TGVuZ3RoOgogICAgICAgICBjYXNlIFN0cmluZ0xlbmd0aDoKKyAgICAgICAg
Y2FzZSBEaXJlY3RBcmd1bWVudHNMZW5ndGg6CisgICAgICAgIGNhc2UgU2NvcGVkQXJndW1lbnRz
TGVuZ3RoOgogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICBjYXNlIEluSGl0Ogog
ICAgICAgICBjYXNlIEluTWlzczoKQEAgLTQ0MSw3ICs0NDksNiBAQCBzdHJ1Y3QgQWNjZXNzR2Vu
ZXJhdGlvblN0YXRlIHsKICAgICBHUFJSZWcgYmFzZUdQUiB7IEludmFsaWRHUFJSZWcgfTsKICAg
ICBKU1ZhbHVlUmVncyB2YWx1ZVJlZ3M7CiAgICAgR1BSUmVnIHNjcmF0Y2hHUFIgeyBJbnZhbGlk
R1BSUmVnIH07Ci0gICAgVmVjdG9yPHN0ZDo6ZnVuY3Rpb248dm9pZChMaW5rQnVmZmVyJik+PiBj
YWxsYmFja3M7CiAgICAgY29uc3QgSWRlbnRpZmllciogaWRlbnQ7CiAgICAgc3RkOjp1bmlxdWVf
cHRyPFdhdGNocG9pbnRzT25TdHJ1Y3R1cmVTdHViSW5mbz4gd2F0Y2hwb2ludHM7CiAgICAgVmVj
dG9yPFdyaXRlQmFycmllcjxKU0NlbGw+PiB3ZWFrUmVmZXJlbmNlczsKQEAgLTQ1MSwxMSArNDU4
LDExIEBAIHN0cnVjdCBBY2Nlc3NHZW5lcmF0aW9uU3RhdGUgewogICAgIHZvaWQgcmVzdG9yZVNj
cmF0Y2goKTsKICAgICB2b2lkIHN1Y2NlZWQoKTsKIAotICAgIHZvaWQgY2FsY3VsYXRlTGl2ZVJl
Z2lzdGVyc0ZvckNhbGxBbmRFeGNlcHRpb25IYW5kbGluZygpOworICAgIHZvaWQgY2FsY3VsYXRl
TGl2ZVJlZ2lzdGVyc0ZvckNhbGxBbmRFeGNlcHRpb25IYW5kbGluZyhjb25zdCBSZWdpc3RlclNl
dCYgZXh0cmEgPSBSZWdpc3RlclNldCgpKTsKIAotICAgIHZvaWQgcHJlc2VydmVMaXZlUmVnaXN0
ZXJzVG9TdGFja0ZvckNhbGwoKTsKKyAgICB2b2lkIHByZXNlcnZlTGl2ZVJlZ2lzdGVyc1RvU3Rh
Y2tGb3JDYWxsKGNvbnN0IFJlZ2lzdGVyU2V0JiBleHRyYSA9IFJlZ2lzdGVyU2V0KCkpOwogCi0g
ICAgdm9pZCByZXN0b3JlTGl2ZVJlZ2lzdGVyc0Zyb21TdGFja0ZvckNhbGwoYm9vbCBpc0dldHRl
cik7CisgICAgdm9pZCByZXN0b3JlTGl2ZVJlZ2lzdGVyc0Zyb21TdGFja0ZvckNhbGwoYm9vbCBp
c0dldHRlciA9IGZhbHNlKTsKICAgICB2b2lkIHJlc3RvcmVMaXZlUmVnaXN0ZXJzRnJvbVN0YWNr
Rm9yQ2FsbFdpdGhUaHJvd25FeGNlcHRpb24oKTsKICAgICB2b2lkIHJlc3RvcmVMaXZlUmVnaXN0
ZXJzRnJvbVN0YWNrRm9yQ2FsbChjb25zdCBSZWdpc3RlclNldCYgZG9udFJlc3RvcmUpOwogCkBA
IC00ODQsNiArNDkxLDggQEAgc3RydWN0IEFjY2Vzc0dlbmVyYXRpb25TdGF0ZSB7CiAgICAgYm9v
bCBuZWVkc1RvUmVzdG9yZVJlZ2lzdGVyc0lmRXhjZXB0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9u
ZWVkc1RvUmVzdG9yZVJlZ2lzdGVyc0lmRXhjZXB0aW9uOyB9CiAgICAgQ2FsbFNpdGVJbmRleCBv
cmlnaW5hbENhbGxTaXRlSW5kZXgoKSBjb25zdDsKICAgICAKKyAgICB2b2lkIGVtaXRFeHBsaWNp
dEV4Y2VwdGlvbkhhbmRsZXIoKTsKKyAgICAKIHByaXZhdGU6CiAgICAgY29uc3QgUmVnaXN0ZXJT
ZXQmIGxpdmVSZWdpc3RlcnNUb1ByZXNlcnZlQXRFeGNlcHRpb25IYW5kbGluZ0NhbGxTaXRlKCkK
ICAgICB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5j
cHAJKHJldmlzaW9uIDE5OTE2NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4
dXBQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIyMDAsNyArMjIwMCw3IEBAIHByaXZhdGU6
CiAgICAgICAgICAgICAgICAgYXJyYXlNb2RlID0gQXJyYXlNb2RlKEFycmF5OjpTZWxlY3RVc2lu
Z1ByZWRpY3Rpb25zKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQotICAgICAgICAgICAgCisg
ICAgICAgIAogICAgICAgICBhcnJheU1vZGUgPSBhcnJheU1vZGUucmVmaW5lKAogICAgICAgICAg
ICAgbV9ncmFwaCwgbm9kZSwgbm9kZS0+Y2hpbGQxKCktPnByZWRpY3Rpb24oKSwgbm9kZS0+cHJl
ZGljdGlvbigpKTsKICAgICAgICAgICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdPcGVyYXRpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR09wZXJhdGlvbnMuY3BwCShyZXZpc2lvbiAxOTkxNjQpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTEyLDI5
ICsxMTEyLDYgQEAgY2hhciogSklUX09QRVJBVElPTiBvcGVyYXRpb25BbGxvY2F0ZVBybwogICAg
ICAgICBCdXR0ZXJmbHk6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQodm0sIDAsIDAsIG5ld1NpemUsIGZh
bHNlLCAwKSk7CiB9CiAKLWNoYXIqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUmVhbGxvY2F0ZUJ1
dHRlcmZseVRvSGF2ZVByb3BlcnR5U3RvcmFnZVdpdGhJbml0aWFsQ2FwYWNpdHkoRXhlY1N0YXRl
KiBleGVjLCBKU09iamVjdCogb2JqZWN0KQotewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7Ci0g
ICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcigmdm0sIGV4ZWMpOwotCi0gICAgQVNTRVJU
KCFvYmplY3QtPnN0cnVjdHVyZSgpLT5vdXRPZkxpbmVDYXBhY2l0eSgpKTsKLSAgICBEZWZlckdD
IGRlZmVyR0Modm0uaGVhcCk7Ci0gICAgQnV0dGVyZmx5KiByZXN1bHQgPSBvYmplY3QtPmdyb3dP
dXRPZkxpbmVTdG9yYWdlKHZtLCAwLCBpbml0aWFsT3V0T2ZMaW5lQ2FwYWNpdHkpOwotICAgIG9i
amVjdC0+c2V0QnV0dGVyZmx5V2l0aG91dENoYW5naW5nU3RydWN0dXJlKHZtLCByZXN1bHQpOwot
ICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNoYXIqPihyZXN1bHQpOwotfQotCi1jaGFyKiBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvblJlYWxsb2NhdGVCdXR0ZXJmbHlUb0dyb3dQcm9wZXJ0eVN0
b3JhZ2UoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogb2JqZWN0LCBzaXplX3QgbmV3U2l6ZSkK
LXsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0
cmFjZXIoJnZtLCBleGVjKTsKLQotICAgIERlZmVyR0MgZGVmZXJHQyh2bS5oZWFwKTsKLSAgICBC
dXR0ZXJmbHkqIHJlc3VsdCA9IG9iamVjdC0+Z3Jvd091dE9mTGluZVN0b3JhZ2Uodm0sIG9iamVj
dC0+c3RydWN0dXJlKCktPm91dE9mTGluZUNhcGFjaXR5KCksIG5ld1NpemUpOwotICAgIG9iamVj
dC0+c2V0QnV0dGVyZmx5V2l0aG91dENoYW5naW5nU3RydWN0dXJlKHZtLCByZXN1bHQpOwotICAg
IHJldHVybiByZWludGVycHJldF9jYXN0PGNoYXIqPihyZXN1bHQpOwotfQotCiBjaGFyKiBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvbkVuc3VyZUludDMyKEV4ZWNTdGF0ZSogZXhlYywgSlNDZWxsKiBj
ZWxsKQogewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaAkocmV2aXNpb24gMTk5MTY0KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmgJKHdvcmtpbmcgY29weSkKQEAgLTEyNCw4
ICsxMjQsNiBAQCBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVHlwZU9mT2JqCiBpbnQz
Ml90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVHlwZU9mT2JqZWN0QXNUeXBlb2ZUeXBlKEV4ZWNT
dGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgSlNDZWxsKikgV1RGX0lOVEVSTkFMOwogY2hhciogSklU
X09QRVJBVElPTiBvcGVyYXRpb25BbGxvY2F0ZVByb3BlcnR5U3RvcmFnZVdpdGhJbml0aWFsQ2Fw
YWNpdHkoRXhlY1N0YXRlKikgV1RGX0lOVEVSTkFMOwogY2hhciogSklUX09QRVJBVElPTiBvcGVy
YXRpb25BbGxvY2F0ZVByb3BlcnR5U3RvcmFnZShFeGVjU3RhdGUqLCBzaXplX3QgbmV3U2l6ZSkg
V1RGX0lOVEVSTkFMOwotY2hhciogSklUX09QRVJBVElPTiBvcGVyYXRpb25SZWFsbG9jYXRlQnV0
dGVyZmx5VG9IYXZlUHJvcGVydHlTdG9yYWdlV2l0aEluaXRpYWxDYXBhY2l0eShFeGVjU3RhdGUq
LCBKU09iamVjdCopIFdURl9JTlRFUk5BTDsKLWNoYXIqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9u
UmVhbGxvY2F0ZUJ1dHRlcmZseVRvR3Jvd1Byb3BlcnR5U3RvcmFnZShFeGVjU3RhdGUqLCBKU09i
amVjdCosIHNpemVfdCBuZXdTaXplKSBXVEZfSU5URVJOQUw7CiBjaGFyKiBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvbkVuc3VyZUludDMyKEV4ZWNTdGF0ZSosIEpTQ2VsbCopOwogY2hhciogSklUX09Q
RVJBVElPTiBvcGVyYXRpb25FbnN1cmVEb3VibGUoRXhlY1N0YXRlKiwgSlNDZWxsKik7CiBjaGFy
KiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkVuc3VyZUNvbnRpZ3VvdXMoRXhlY1N0YXRlKiwgSlND
ZWxsKik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0lDU3RhdHMuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0lDU3RhdHMuaAkocmV2aXNpb24gMTk5
MTY0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9JQ1N0YXRzLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTQwLDYgKzQwLDExIEBAIG5hbWVzcGFjZSBKU0MgewogCiAjZGVmaW5lIEZPUl9FQUNI
X0lDRVZFTlRfS0lORChtYWNybykgXAogICAgIG1hY3JvKEludmFsaWRLaW5kKSBcCisgICAgbWFj
cm8oR2V0QnlJZEFkZEFjY2Vzc0Nhc2UpIFwKKyAgICBtYWNybyhHZXRCeUlkUmVwbGFjZVdpdGhK
dW1wKSBcCisgICAgbWFjcm8oR2V0QnlJZFNlbGZQYXRjaCkgXAorICAgIG1hY3JvKEluQWRkQWNj
ZXNzQ2FzZSkgXAorICAgIG1hY3JvKEluUmVwbGFjZVdpdGhKdW1wKSBcCiAgICAgbWFjcm8oT3Bl
cmF0aW9uR2V0QnlJZCkgXAogICAgIG1hY3JvKE9wZXJhdGlvbkdldEJ5SWRHZW5lcmljKSBcCiAg
ICAgbWFjcm8oT3BlcmF0aW9uR2V0QnlJZEJ1aWxkTGlzdCkgXApAQCAtNTgsNyArNjMsMTAgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgbWFjcm8oT3BlcmF0aW9uUHV0QnlJZFN0cmljdEJ1aWxkTGlz
dCkgXAogICAgIG1hY3JvKE9wZXJhdGlvblB1dEJ5SWROb25TdHJpY3RCdWlsZExpc3QpIFwKICAg
ICBtYWNybyhPcGVyYXRpb25QdXRCeUlkRGlyZWN0U3RyaWN0QnVpbGRMaXN0KSBcCi0gICAgbWFj
cm8oT3BlcmF0aW9uUHV0QnlJZERpcmVjdE5vblN0cmljdEJ1aWxkTGlzdCkKKyAgICBtYWNybyhP
cGVyYXRpb25QdXRCeUlkRGlyZWN0Tm9uU3RyaWN0QnVpbGRMaXN0KSBcCisgICAgbWFjcm8oUHV0
QnlJZEFkZEFjY2Vzc0Nhc2UpIFwKKyAgICBtYWNybyhQdXRCeUlkUmVwbGFjZVdpdGhKdW1wKSBc
CisgICAgbWFjcm8oUHV0QnlJZFNlbGZQYXRjaCkKIAogY2xhc3MgSUNFdmVudCB7CiBwdWJsaWM6
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAJKHJl
dmlzaW9uIDE5OTE2NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9u
cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1OCw2ICsxNTgsOCBAQCBpbnQzMl90IEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uQ29uc3RydWN0CiAKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uR2V0QnlJZChFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHVi
SW5mbywgRW5jb2RlZEpTVmFsdWUgYmFzZSwgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCkKIHsKKyAg
ICBTdXBlclNhbXBsZXJTY29wZSBzdXBlclNhbXBsZXJTY29wZShmYWxzZSk7CisgICAgCiAgICAg
Vk0qIHZtID0gJmV4ZWMtPnZtKCk7CiAgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2
bSwgZXhlYyk7CiAgICAgCkBAIC0xNzMsNiArMTc1LDggQEAgRW5jb2RlZEpTVmFsdWUgSklUX09Q
RVJBVElPTiBvcGVyYXRpb25HZQogCiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvbkdldEJ5SWRHZW5lcmljKEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUgYmFzZSwg
VW5pcXVlZFN0cmluZ0ltcGwqIHVpZCkKIHsKKyAgICBTdXBlclNhbXBsZXJTY29wZSBzdXBlclNh
bXBsZXJTY29wZShmYWxzZSk7CisgICAgCiAgICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7CiAgICAg
TmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgZXhlYyk7CiAgICAgCkBAIC0xODUsNiAr
MTg5LDggQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25HZQogCiBFbmNv
ZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkdldEJ5SWRPcHRpbWl6ZShFeGVjU3Rh
dGUqIGV4ZWMsIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgRW5jb2RlZEpTVmFsdWUgYmFz
ZSwgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCkKIHsKKyAgICBTdXBlclNhbXBsZXJTY29wZSBzdXBl
clNhbXBsZXJTY29wZShmYWxzZSk7CisgICAgCiAgICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7CiAg
ICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgZXhlYyk7CiAgICAgSWRlbnRpZmll
ciBpZGVudCA9IElkZW50aWZpZXI6OmZyb21VaWQodm0sIHVpZCk7CkBAIC0yMDIsNiArMjA4LDgg
QEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25HZQogCiBFbmNvZGVkSlNW
YWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkluT3B0aW1pemUoRXhlY1N0YXRlKiBleGVjLCBT
dHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIEpTQ2VsbCogYmFzZSwgVW5pcXVlZFN0cmluZ0lt
cGwqIGtleSkKIHsKKyAgICBTdXBlclNhbXBsZXJTY29wZSBzdXBlclNhbXBsZXJTY29wZShmYWxz
ZSk7CisgICAgCiAgICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7CiAgICAgTmF0aXZlQ2FsbEZyYW1l
VHJhY2VyIHRyYWNlcih2bSwgZXhlYyk7CiAgICAgCkBAIC0yMjcsNiArMjM1LDggQEAgRW5jb2Rl
ZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25JbgogCiBFbmNvZGVkSlNWYWx1ZSBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvbkluKEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlU3R1YkluZm8q
IHN0dWJJbmZvLCBKU0NlbGwqIGJhc2UsIFVuaXF1ZWRTdHJpbmdJbXBsKiBrZXkpCiB7CisgICAg
U3VwZXJTYW1wbGVyU2NvcGUgc3VwZXJTYW1wbGVyU2NvcGUoZmFsc2UpOworICAgIAogICAgIFZN
KiB2bSA9ICZleGVjLT52bSgpOwogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0s
IGV4ZWMpOwogICAgIApAQCAtMjQ0LDYgKzI1NCw4IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uSW4KIAogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRp
b25HZW5lcmljSW4oRXhlY1N0YXRlKiBleGVjLCBKU0NlbGwqIGJhc2UsIEVuY29kZWRKU1ZhbHVl
IGtleSkKIHsKKyAgICBTdXBlclNhbXBsZXJTY29wZSBzdXBlclNhbXBsZXJTY29wZShmYWxzZSk7
CisgICAgCiAgICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7CiAgICAgTmF0aXZlQ2FsbEZyYW1lVHJh
Y2VyIHRyYWNlcih2bSwgZXhlYyk7CiAKQEAgLTI1Miw2ICsyNjQsOCBAQCBFbmNvZGVkSlNWYWx1
ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkdlCiAKIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRp
b25QdXRCeUlkU3RyaWN0KEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJ
bmZvLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRC
YXNlLCBVbmlxdWVkU3RyaW5nSW1wbCogdWlkKQogeworICAgIFN1cGVyU2FtcGxlclNjb3BlIHN1
cGVyU2FtcGxlclNjb3BlKGZhbHNlKTsKKyAgICAKICAgICBWTSogdm0gPSAmZXhlYy0+dm0oKTsK
ICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBleGVjKTsKICAgICAKQEAgLTI2
Nyw2ICsyODEsOCBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZFN0cmljCiAK
IHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkTm9uU3RyaWN0KEV4ZWNTdGF0ZSog
ZXhlYywgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
VmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBVbmlxdWVkU3RyaW5nSW1wbCogdWlk
KQogeworICAgIFN1cGVyU2FtcGxlclNjb3BlIHN1cGVyU2FtcGxlclNjb3BlKGZhbHNlKTsKKyAg
ICAKICAgICBWTSogdm0gPSAmZXhlYy0+dm0oKTsKICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIg
dHJhY2VyKHZtLCBleGVjKTsKICAgICAKQEAgLTI4MSw2ICsyOTcsOCBAQCB2b2lkIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uUHV0QnlJZE5vblN0CiAKIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRp
b25QdXRCeUlkRGlyZWN0U3RyaWN0KEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlU3R1YkluZm8q
IHN0dWJJbmZvLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVu
Y29kZWRCYXNlLCBVbmlxdWVkU3RyaW5nSW1wbCogdWlkKQogeworICAgIFN1cGVyU2FtcGxlclNj
b3BlIHN1cGVyU2FtcGxlclNjb3BlKGZhbHNlKTsKKyAgICAKICAgICBWTSogdm0gPSAmZXhlYy0+
dm0oKTsKICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBleGVjKTsKICAgICAK
QEAgLTI5NSw2ICszMTMsOCBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZERp
cmVjCiAKIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkRGlyZWN0Tm9uU3RyaWN0
KEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBFbmNvZGVkSlNW
YWx1ZSBlbmNvZGVkVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBVbmlxdWVkU3Ry
aW5nSW1wbCogdWlkKQogeworICAgIFN1cGVyU2FtcGxlclNjb3BlIHN1cGVyU2FtcGxlclNjb3Bl
KGZhbHNlKTsKKyAgICAKICAgICBWTSogdm0gPSAmZXhlYy0+dm0oKTsKICAgICBOYXRpdmVDYWxs
RnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBleGVjKTsKICAgICAKQEAgLTMwOSw2ICszMjksOCBAQCB2
b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZERpcmVjCiAKIHZvaWQgSklUX09QRVJB
VElPTiBvcGVyYXRpb25QdXRCeUlkU3RyaWN0T3B0aW1pemUoRXhlY1N0YXRlKiBleGVjLCBTdHJ1
Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQpCiB7CisgICAg
U3VwZXJTYW1wbGVyU2NvcGUgc3VwZXJTYW1wbGVyU2NvcGUoZmFsc2UpOworICAgIAogICAgIFZN
KiB2bSA9ICZleGVjLT52bSgpOwogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0s
IGV4ZWMpOwogICAgIApAQCAtMzMyLDYgKzM1NCw4IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVy
YXRpb25QdXRCeUlkU3RyaWMKIAogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWRO
b25TdHJpY3RPcHRpbWl6ZShFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHVi
SW5mbywgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
QmFzZSwgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCkKIHsKKyAgICBTdXBlclNhbXBsZXJTY29wZSBz
dXBlclNhbXBsZXJTY29wZShmYWxzZSk7CisgICAgCiAgICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7
CiAgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgZXhlYyk7CiAgICAgCkBAIC0z
NTUsNiArMzc5LDggQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWROb25TdAog
CiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZERpcmVjdFN0cmljdE9wdGltaXpl
KEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBFbmNvZGVkSlNW
YWx1ZSBlbmNvZGVkVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBVbmlxdWVkU3Ry
aW5nSW1wbCogdWlkKQogeworICAgIFN1cGVyU2FtcGxlclNjb3BlIHN1cGVyU2FtcGxlclNjb3Bl
KGZhbHNlKTsKKyAgICAKICAgICBWTSogdm0gPSAmZXhlYy0+dm0oKTsKICAgICBOYXRpdmVDYWxs
RnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBleGVjKTsKICAgICAKQEAgLTM3OCw2ICs0MDQsOCBAQCB2
b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZERpcmVjCiAKIHZvaWQgSklUX09QRVJB
VElPTiBvcGVyYXRpb25QdXRCeUlkRGlyZWN0Tm9uU3RyaWN0T3B0aW1pemUoRXhlY1N0YXRlKiBl
eGVjLCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRW
YWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQp
CiB7CisgICAgU3VwZXJTYW1wbGVyU2NvcGUgc3VwZXJTYW1wbGVyU2NvcGUoZmFsc2UpOworICAg
IAogICAgIFZNKiB2bSA9ICZleGVjLT52bSgpOwogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0
cmFjZXIodm0sIGV4ZWMpOwogICAgIApAQCAtMjAwMCw2ICsyMDI4LDI5IEBAIHZvaWQgSklUX09Q
RVJBVElPTiBvcGVyYXRpb25UaHJvdyhFeGVjU3QKICAgICBnZW5lcmljVW53aW5kKHZtLCBleGVj
KTsKIH0KIAorY2hhciogSklUX09QRVJBVElPTiBvcGVyYXRpb25SZWFsbG9jYXRlQnV0dGVyZmx5
VG9IYXZlUHJvcGVydHlTdG9yYWdlV2l0aEluaXRpYWxDYXBhY2l0eShFeGVjU3RhdGUqIGV4ZWMs
IEpTT2JqZWN0KiBvYmplY3QpCit7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBOYXRp
dmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKCZ2bSwgZXhlYyk7CisKKyAgICBBU1NFUlQoIW9iamVj
dC0+c3RydWN0dXJlKCktPm91dE9mTGluZUNhcGFjaXR5KCkpOworICAgIERlZmVyR0MgZGVmZXJH
Qyh2bS5oZWFwKTsKKyAgICBCdXR0ZXJmbHkqIHJlc3VsdCA9IG9iamVjdC0+Z3Jvd091dE9mTGlu
ZVN0b3JhZ2Uodm0sIDAsIGluaXRpYWxPdXRPZkxpbmVDYXBhY2l0eSk7CisgICAgb2JqZWN0LT5z
ZXRCdXR0ZXJmbHlXaXRob3V0Q2hhbmdpbmdTdHJ1Y3R1cmUodm0sIHJlc3VsdCk7CisgICAgcmV0
dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KHJlc3VsdCk7Cit9CisKK2NoYXIqIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uUmVhbGxvY2F0ZUJ1dHRlcmZseVRvR3Jvd1Byb3BlcnR5U3RvcmFnZShF
eGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBvYmplY3QsIHNpemVfdCBuZXdTaXplKQoreworICAg
IFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcigm
dm0sIGV4ZWMpOworCisgICAgRGVmZXJHQyBkZWZlckdDKHZtLmhlYXApOworICAgIEJ1dHRlcmZs
eSogcmVzdWx0ID0gb2JqZWN0LT5ncm93T3V0T2ZMaW5lU3RvcmFnZSh2bSwgb2JqZWN0LT5zdHJ1
Y3R1cmUoKS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSwgbmV3U2l6ZSk7CisgICAgb2JqZWN0LT5zZXRC
dXR0ZXJmbHlXaXRob3V0Q2hhbmdpbmdTdHJ1Y3R1cmUodm0sIHJlc3VsdCk7CisgICAgcmV0dXJu
IHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KHJlc3VsdCk7Cit9CisKIHZvaWQgSklUX09QRVJBVElP
TiBvcGVyYXRpb25GbHVzaFdyaXRlQmFycmllckJ1ZmZlcihFeGVjU3RhdGUqIGV4ZWMsIEpTQ2Vs
bCogY2VsbCkKIHsKICAgICBWTSogdm0gPSAmZXhlYy0+dm0oKTsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCShyZXZpc2lvbiAxOTkxNjQpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaAkod29ya2luZyBjb3B5KQpAQCAt
Mzc2LDYgKzM3Niw5IEBAIGNoYXIqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uU3dpdGNoU3RyaW4K
IEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uR2V0RnJvbVNjb3BlKEV4ZWNT
dGF0ZSosIEluc3RydWN0aW9uKiBieXRlY29kZVBDKSBXVEZfSU5URVJOQUw7CiB2b2lkIEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uUHV0VG9TY29wZShFeGVjU3RhdGUqLCBJbnN0cnVjdGlvbiogYnl0
ZWNvZGVQQykgV1RGX0lOVEVSTkFMOwogCitjaGFyKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblJl
YWxsb2NhdGVCdXR0ZXJmbHlUb0hhdmVQcm9wZXJ0eVN0b3JhZ2VXaXRoSW5pdGlhbENhcGFjaXR5
KEV4ZWNTdGF0ZSosIEpTT2JqZWN0KikgV1RGX0lOVEVSTkFMOworY2hhciogSklUX09QRVJBVElP
TiBvcGVyYXRpb25SZWFsbG9jYXRlQnV0dGVyZmx5VG9Hcm93UHJvcGVydHlTdG9yYWdlKEV4ZWNT
dGF0ZSosIEpTT2JqZWN0Kiwgc2l6ZV90IG5ld1NpemUpIFdURl9JTlRFUk5BTDsKKwogdm9pZCBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvbkZsdXNoV3JpdGVCYXJyaWVyQnVmZmVyKEV4ZWNTdGF0ZSos
IEpTQ2VsbCopOwogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbldyaXRlQmFycmllcihFeGVj
U3RhdGUqLCBKU0NlbGwqLCBKU0NlbGwqKTsKIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25V
bmNvbmRpdGlvbmFsV3JpdGVCYXJyaWVyKEV4ZWNTdGF0ZSosIEpTQ2VsbCopOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCShyZXZpc2lvbiAxOTkxNjQpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMywx
NCArMzMsMTcgQEAKICNpbmNsdWRlICJDYWxsRnJhbWVTaHVmZmxlci5oIgogI2luY2x1ZGUgIkRG
R09wZXJhdGlvbnMuaCIKICNpbmNsdWRlICJERkdTcGVjdWxhdGl2ZUpJVC5oIgorI2luY2x1ZGUg
IkRpcmVjdEFyZ3VtZW50cy5oIgogI2luY2x1ZGUgIkZUTFRodW5rcy5oIgogI2luY2x1ZGUgIkdD
QXdhcmVKSVRTdHViUm91dGluZS5oIgogI2luY2x1ZGUgIkdldHRlclNldHRlci5oIgorI2luY2x1
ZGUgIklDU3RhdHMuaCIKICNpbmNsdWRlICJKSVQuaCIKICNpbmNsdWRlICJKSVRJbmxpbmVzLmgi
CiAjaW5jbHVkZSAiTGlua0J1ZmZlci5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNs
dWRlICJQb2x5bW9ycGhpY0FjY2Vzcy5oIgorI2luY2x1ZGUgIlNjb3BlZEFyZ3VtZW50cy5oIgog
I2luY2x1ZGUgIlNjcmF0Y2hSZWdpc3RlckFsbG9jYXRvci5oIgogI2luY2x1ZGUgIlN0YWNrQWxp
Z25tZW50LmgiCiAjaW5jbHVkZSAiU3RydWN0dXJlUmFyZURhdGFJbmxpbmVzLmgiCkBAIC0yMjcs
MTEgKzIzMCwyNCBAQCBzdGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVHZXRCeUlECiAK
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gbmV3Q2FzZTsKIAotICAgIGlmIChpc0pT
QXJyYXkoYmFzZVZhbHVlKSAmJiBwcm9wZXJ0eU5hbWUgPT0gZXhlYy0+cHJvcGVydHlOYW1lcygp
Lmxlbmd0aCkKLSAgICAgICAgbmV3Q2FzZSA9IEFjY2Vzc0Nhc2U6OmdldExlbmd0aCh2bSwgY29k
ZUJsb2NrLCBBY2Nlc3NDYXNlOjpBcnJheUxlbmd0aCk7Ci0gICAgZWxzZSBpZiAoaXNKU1N0cmlu
ZyhiYXNlVmFsdWUpICYmIHByb3BlcnR5TmFtZSA9PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVu
Z3RoKQotICAgICAgICBuZXdDYXNlID0gQWNjZXNzQ2FzZTo6Z2V0TGVuZ3RoKHZtLCBjb2RlQmxv
Y2ssIEFjY2Vzc0Nhc2U6OlN0cmluZ0xlbmd0aCk7Ci0gICAgZWxzZSB7CisgICAgaWYgKHByb3Bl
cnR5TmFtZSA9PSB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgpIHsKKyAgICAgICAgaWYgKGlzSlNB
cnJheShiYXNlVmFsdWUpKQorICAgICAgICAgICAgbmV3Q2FzZSA9IEFjY2Vzc0Nhc2U6OmdldExl
bmd0aCh2bSwgY29kZUJsb2NrLCBBY2Nlc3NDYXNlOjpBcnJheUxlbmd0aCk7CisgICAgICAgIGVs
c2UgaWYgKGlzSlNTdHJpbmcoYmFzZVZhbHVlKSkKKyAgICAgICAgICAgIG5ld0Nhc2UgPSBBY2Nl
c3NDYXNlOjpnZXRMZW5ndGgodm0sIGNvZGVCbG9jaywgQWNjZXNzQ2FzZTo6U3RyaW5nTGVuZ3Ro
KTsKKyAgICAgICAgZWxzZSBpZiAoRGlyZWN0QXJndW1lbnRzKiBhcmd1bWVudHMgPSBqc0R5bmFt
aWNDYXN0PERpcmVjdEFyZ3VtZW50cyo+KGJhc2VWYWx1ZSkpIHsKKyAgICAgICAgICAgIC8vIElm
IHRoZXJlIHdlcmUgb3ZlcnJpZGVzLCB0aGVuIHdlIGNhbiBoYW5kbGUgdGhpcyBhcyBhIG5vcm1h
bCBwcm9wZXJ0eSBsb2FkISBHdWFyZGluZworICAgICAgICAgICAgLy8gdGhpcyB3aXRoIHN1Y2gg
YSBjaGVjayBlbmFibGVzIHVzIHRvIGFkZCBhbiBJQyBjYXNlIGZvciB0aGF0IGxvYWQgaWYgbmVl
ZGVkLgorICAgICAgICAgICAgaWYgKCFhcmd1bWVudHMtPm92ZXJyb2RlVGhpbmdzKCkpCisgICAg
ICAgICAgICAgICAgbmV3Q2FzZSA9IEFjY2Vzc0Nhc2U6OmdldExlbmd0aCh2bSwgY29kZUJsb2Nr
LCBBY2Nlc3NDYXNlOjpEaXJlY3RBcmd1bWVudHNMZW5ndGgpOworICAgICAgICB9IGVsc2UgaWYg
KFNjb3BlZEFyZ3VtZW50cyogYXJndW1lbnRzID0ganNEeW5hbWljQ2FzdDxTY29wZWRBcmd1bWVu
dHMqPihiYXNlVmFsdWUpKSB7CisgICAgICAgICAgICAvLyBEaXR0by4KKyAgICAgICAgICAgIGlm
ICghYXJndW1lbnRzLT5vdmVycm9kZVRoaW5ncygpKQorICAgICAgICAgICAgICAgIG5ld0Nhc2Ug
PSBBY2Nlc3NDYXNlOjpnZXRMZW5ndGgodm0sIGNvZGVCbG9jaywgQWNjZXNzQ2FzZTo6U2NvcGVk
QXJndW1lbnRzTGVuZ3RoKTsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICBpZiAoIW5ld0Nh
c2UpIHsKICAgICAgICAgaWYgKCFzbG90LmlzQ2FjaGVhYmxlKCkgJiYgIXNsb3QuaXNVbnNldCgp
KQogICAgICAgICAgICAgcmV0dXJuIEdpdmVVcE9uQ2FjaGU7CiAKQEAgLTI2MSw2ICsyNzcsNyBA
QCBzdGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVHZXRCeUlECiAgICAgICAgICAgICAm
JiBhY3Rpb24gPT0gQXR0ZW1wdFRvQ2FjaGUKICAgICAgICAgICAgICYmICFzdHJ1Y3R1cmUtPm5l
ZWRJbXB1cmVQcm9wZXJ0eVdhdGNocG9pbnQoKQogICAgICAgICAgICAgJiYgIWxvYWRUYXJnZXRG
cm9tUHJveHkpIHsKKyAgICAgICAgICAgIExPR19JQygoSUNFdmVudDo6R2V0QnlJZFNlbGZQYXRj
aCwgc3RydWN0dXJlLT5jbGFzc0luZm8oKSwgcHJvcGVydHlOYW1lKSk7CiAgICAgICAgICAgICBz
dHJ1Y3R1cmUtPnN0YXJ0V2F0Y2hpbmdQcm9wZXJ0eUZvclJlcGxhY2VtZW50cyh2bSwgc2xvdC5j
YWNoZWRPZmZzZXQoKSk7CiAgICAgICAgICAgICByZXBhdGNoQnlJZFNlbGZBY2Nlc3MoY29kZUJs
b2NrLCBzdHViSW5mbywgc3RydWN0dXJlLCBzbG90LmNhY2hlZE9mZnNldCgpLCBvcGVyYXRpb25H
ZXRCeUlkT3B0aW1pemUsIHRydWUpOwogICAgICAgICAgICAgc3R1YkluZm8uaW5pdEdldEJ5SWRT
ZWxmKGNvZGVCbG9jaywgc3RydWN0dXJlLCBzbG90LmNhY2hlZE9mZnNldCgpKTsKQEAgLTMxNyw2
ICszMzQsOCBAQCBzdGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVHZXRCeUlECiAgICAg
ICAgIH0KICAgICB9CiAKKyAgICBMT0dfSUMoKElDRXZlbnQ6OkdldEJ5SWRBZGRBY2Nlc3NDYXNl
LCBiYXNlVmFsdWUuY2xhc3NJbmZvT3JOdWxsKCksIHByb3BlcnR5TmFtZSkpOworCiAgICAgQWNj
ZXNzR2VuZXJhdGlvblJlc3VsdCByZXN1bHQgPSBzdHViSW5mby5hZGRBY2Nlc3NDYXNlKGNvZGVC
bG9jaywgcHJvcGVydHlOYW1lLCBXVEZNb3ZlKG5ld0Nhc2UpKTsKIAogICAgIGlmIChyZXN1bHQu
Z2F2ZVVwKCkpCkBAIC0zMjQsNiArMzQzLDggQEAgc3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRy
eUNhY2hlR2V0QnlJRAogICAgIGlmIChyZXN1bHQubWFkZU5vQ2hhbmdlcygpKQogICAgICAgICBy
ZXR1cm4gUmV0cnlDYWNoZUxhdGVyOwogICAgIAorICAgIExPR19JQygoSUNFdmVudDo6R2V0QnlJ
ZFJlcGxhY2VXaXRoSnVtcCwgYmFzZVZhbHVlLmNsYXNzSW5mb09yTnVsbCgpLCBwcm9wZXJ0eU5h
bWUpKTsKKwogICAgIFJFTEVBU0VfQVNTRVJUKHJlc3VsdC5jb2RlKCkpOwogICAgIHJlcGxhY2VX
aXRoSnVtcChzdHViSW5mbywgcmVzdWx0LmNvZGUoKSk7CiAgICAgCkBAIC0zOTAsNyArNDExLDkg
QEAgc3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hlUHV0QnlJRAogICAgICAgICAgICAg
ICAgICYmIE1hY3JvQXNzZW1ibGVyOjppc1B0ckFsaWduZWRBZGRyZXNzT2Zmc2V0KG1heE9mZnNl
dFJlbGF0aXZlVG9CYXNlKHNsb3QuY2FjaGVkT2Zmc2V0KCkpKQogICAgICAgICAgICAgICAgICYm
ICFzdHJ1Y3R1cmUtPm5lZWRJbXB1cmVQcm9wZXJ0eVdhdGNocG9pbnQoKQogICAgICAgICAgICAg
ICAgICYmICFzdHJ1Y3R1cmUtPmluZmVycmVkVHlwZUZvcihpZGVudC5pbXBsKCkpKSB7Ci0KKyAg
ICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBMT0dfSUMoKElDRXZlbnQ6OlB1dEJ5SWRT
ZWxmUGF0Y2gsIHN0cnVjdHVyZS0+Y2xhc3NJbmZvKCksIGlkZW50KSk7CisgICAgICAgICAgICAg
ICAgCiAgICAgICAgICAgICAgICAgcmVwYXRjaEJ5SWRTZWxmQWNjZXNzKAogICAgICAgICAgICAg
ICAgICAgICBjb2RlQmxvY2ssIHN0dWJJbmZvLCBzdHJ1Y3R1cmUsIHNsb3QuY2FjaGVkT2Zmc2V0
KCksCiAgICAgICAgICAgICAgICAgICAgIGFwcHJvcHJpYXRlT3B0aW1pemluZ1B1dEJ5SWRGdW5j
dGlvbihzbG90LCBwdXRLaW5kKSwgZmFsc2UpOwpAQCAtNDYxLDYgKzQ4NCw4IEBAIHN0YXRpYyBJ
bmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNoZVB1dEJ5SUQKICAgICAgICAgfQogICAgIH0KIAorICAg
IExPR19JQygoSUNFdmVudDo6UHV0QnlJZEFkZEFjY2Vzc0Nhc2UsIHN0cnVjdHVyZS0+Y2xhc3NJ
bmZvKCksIGlkZW50KSk7CisgICAgCiAgICAgQWNjZXNzR2VuZXJhdGlvblJlc3VsdCByZXN1bHQg
PSBzdHViSW5mby5hZGRBY2Nlc3NDYXNlKGNvZGVCbG9jaywgaWRlbnQsIFdURk1vdmUobmV3Q2Fz
ZSkpOwogICAgIAogICAgIGlmIChyZXN1bHQuZ2F2ZVVwKCkpCkBAIC00NjgsNiArNDkzLDggQEAg
c3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hlUHV0QnlJRAogICAgIGlmIChyZXN1bHQu
bWFkZU5vQ2hhbmdlcygpKQogICAgICAgICByZXR1cm4gUmV0cnlDYWNoZUxhdGVyOwogCisgICAg
TE9HX0lDKChJQ0V2ZW50OjpQdXRCeUlkUmVwbGFjZVdpdGhKdW1wLCBzdHJ1Y3R1cmUtPmNsYXNz
SW5mbygpLCBpZGVudCkpOworCiAgICAgUkVMRUFTRV9BU1NFUlQocmVzdWx0LmNvZGUoKSk7CiAg
ICAgcmVzZXRQdXRCeUlEQ2hlY2tBbmRMb2FkKHN0dWJJbmZvKTsKICAgICBNYWNyb0Fzc2VtYmxl
cjo6cmVwYXRjaEp1bXAoCkBAIC01MTgsNiArNTQ1LDggQEAgc3RhdGljIElubGluZUNhY2hlQWN0
aW9uIHRyeVJlcGF0Y2hJbigKICAgICBpZiAoIWNvbmRpdGlvblNldC5pc1ZhbGlkKCkpCiAgICAg
ICAgIHJldHVybiBHaXZlVXBPbkNhY2hlOwogCisgICAgTE9HX0lDKChJQ0V2ZW50OjpJbkFkZEFj
Y2Vzc0Nhc2UsIHN0cnVjdHVyZS0+Y2xhc3NJbmZvKCksIGlkZW50KSk7CisKICAgICBzdGQ6OnVu
aXF1ZV9wdHI8QWNjZXNzQ2FzZT4gbmV3Q2FzZSA9IEFjY2Vzc0Nhc2U6OmluKAogICAgICAgICB2
bSwgY29kZUJsb2NrLCB3YXNGb3VuZCA/IEFjY2Vzc0Nhc2U6OkluSGl0IDogQWNjZXNzQ2FzZTo6
SW5NaXNzLCBzdHJ1Y3R1cmUsIGNvbmRpdGlvblNldCk7CiAKQEAgLTUyNyw2ICs1NTYsOCBAQCBz
dGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5UmVwYXRjaEluKAogICAgIGlmIChyZXN1bHQubWFk
ZU5vQ2hhbmdlcygpKQogICAgICAgICByZXR1cm4gUmV0cnlDYWNoZUxhdGVyOwogCisgICAgTE9H
X0lDKChJQ0V2ZW50OjpJblJlcGxhY2VXaXRoSnVtcCwgc3RydWN0dXJlLT5jbGFzc0luZm8oKSwg
aWRlbnQpKTsKKwogICAgIFJFTEVBU0VfQVNTRVJUKHJlc3VsdC5jb2RlKCkpOwogICAgIE1hY3Jv
QXNzZW1ibGVyOjpyZXBhdGNoSnVtcCgKICAgICAgICAgc3R1YkluZm8uY2FsbFJldHVybkxvY2F0
aW9uLmp1bXBBdE9mZnNldChzdHViSW5mby5wYXRjaC5kZWx0YUNhbGxUb0p1bXApLApJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9kaXJlY3QtYXJndW1lbnRzLW92ZXJy
aWRlLWxlbmd0aC10aGVuLWFjY2Vzcy1ub3JtYWwtbGVuZ3RoLmpzCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZGlyZWN0LWFyZ3VtZW50cy1vdmVycmlk
ZS1sZW5ndGgtdGhlbi1hY2Nlc3Mtbm9ybWFsLWxlbmd0aC5qcwkocmV2aXNpb24gMCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZGlyZWN0LWFyZ3VtZW50cy1vdmVycmlk
ZS1sZW5ndGgtdGhlbi1hY2Nlc3Mtbm9ybWFsLWxlbmd0aC5qcwkod29ya2luZyBjb3B5KQpAQCAt
MCwwICsxLDI1IEBACisoZnVuY3Rpb24oKSB7CisgICAgdmFyIGFyZ3MgPSAoZnVuY3Rpb24oKSB7
CisgICAgICAgIHZhciByZXN1bHQgPSBhcmd1bWVudHM7CisgICAgICAgIHJlc3VsdC5sZW5ndGgg
PSA2OworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0pKDEsIDIsIDMsIDQsIDUpOworICAg
IAorICAgIHZhciBhcnJheSA9IFthcmdzLCBbMSwgMiwgM11dOworICAgIAorICAgIGZ1bmN0aW9u
IGZvbyh0aGluZykgeworICAgICAgICByZXR1cm4gdGhpbmcubGVuZ3RoOworICAgIH0KKyAgICBu
b0lubGluZShmb28pOworICAgIAorICAgIHZhciByZXN1bHQgPSAwOworICAgIGZvciAodmFyIGkg
PSAwOyBpIDwgMTAwMDA7ICsraSkKKyAgICAgICAgcmVzdWx0ICs9IGZvbyhhcnJheVtpICUgYXJy
YXkubGVuZ3RoXSk7CisgICAgCisgICAgaWYgKHJlc3VsdCAhPSA0NTAwMCkKKyAgICAgICAgdGhy
b3cgIkVycm9yOiBiYWQgcmVzdWx0OiAiICsgcmVzdWx0OworICAgIAorICAgIHZhciByZXN1bHQg
PSBmb28oKGZ1bmN0aW9uKCkgeyByZXR1cm4gYXJndW1lbnRzOyB9KSgxLCAyLCAzLCA0KSk7Cisg
ICAgaWYgKHJlc3VsdCAhPSA0KQorICAgICAgICB0aHJvdyAiRXJyb3I6IGJhZCByZXN1bHQ6ICIg
KyByZXN1bHQ7Cit9KSgpOwpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gMTk5MTY0KQorKysgTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDMgQEAKKzIwMTYtMDQtMDgg
IEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgSUMgc3VwcG9y
dCBmb3IgYXJndW1lbnRzLmxlbmd0aAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTU2Mzg5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgQWxzbyBhZGRzIHNvbWUgdGVzdHMgdGhhdCBJIGZvcmdvdCB0byBjb21t
aXQgcHJldmlvdXNseS4KKworICAgICAgICAqIGpzL3JlZ3Jlc3MvZGlyZWN0LWFyZ3VtZW50cy1s
ZW5ndGgtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBqcy9yZWdyZXNzL2RpcmVjdC1h
cmd1bWVudHMtbGVuZ3RoLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGpzL3JlZ3Jlc3MvZGlyZWN0
LWFyZ3VtZW50cy1vdmVycmlkZGVuLWxlbmd0aC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAg
ICAqIGpzL3JlZ3Jlc3MvZGlyZWN0LWFyZ3VtZW50cy1vdmVycmlkZGVuLWxlbmd0aC5odG1sOiBB
ZGRlZC4KKyAgICAgICAgKiBqcy9yZWdyZXNzL2RpcmVjdC1hcmd1bWVudHMtcG9zc2libHktb3Zl
cnJpZGRlbi1sZW5ndGgtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBqcy9yZWdyZXNz
L2RpcmVjdC1hcmd1bWVudHMtcG9zc2libHktb3ZlcnJpZGRlbi1sZW5ndGguaHRtbDogQWRkZWQu
CisgICAgICAgICoganMvcmVncmVzcy9wdXQtYnktaWQtdHJhbnNpdGlvbi13aXRoLWluZGV4aW5n
LWhlYWRlci1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGpzL3JlZ3Jlc3MvcHV0LWJ5
LWlkLXRyYW5zaXRpb24td2l0aC1pbmRleGluZy1oZWFkZXIuaHRtbDogQWRkZWQuCisgICAgICAg
ICoganMvcmVncmVzcy9zY29wZWQtYXJndW1lbnRzLWxlbmd0aC1leHBlY3RlZC50eHQ6IEFkZGVk
LgorICAgICAgICAqIGpzL3JlZ3Jlc3Mvc2NvcGVkLWFyZ3VtZW50cy1sZW5ndGguaHRtbDogQWRk
ZWQuCisgICAgICAgICoganMvcmVncmVzcy9zY29wZWQtYXJndW1lbnRzLW92ZXJyaWRkZW4tbGVu
Z3RoLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICoganMvcmVncmVzcy9zY29wZWQtYXJn
dW1lbnRzLW92ZXJyaWRkZW4tbGVuZ3RoLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGpzL3JlZ3Jl
c3Mvc2NvcGVkLWFyZ3VtZW50cy1wb3NzaWJseS1vdmVycmlkZGVuLWxlbmd0aC1leHBlY3RlZC50
eHQ6IEFkZGVkLgorICAgICAgICAqIGpzL3JlZ3Jlc3Mvc2NvcGVkLWFyZ3VtZW50cy1wb3NzaWJs
eS1vdmVycmlkZGVuLWxlbmd0aC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBqcy9yZWdyZXNzL3Nj
cmlwdC10ZXN0cy9kaXJlY3QtYXJndW1lbnRzLWxlbmd0aC5qczogQWRkZWQuCisgICAgICAgIChh
cmdzKToKKyAgICAgICAgKiBqcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9kaXJlY3QtYXJndW1lbnRz
LW92ZXJyaWRkZW4tbGVuZ3RoLmpzOiBBZGRlZC4KKyAgICAgICAgKGFyZ3MpOgorICAgICAgICAq
IGpzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL2RpcmVjdC1hcmd1bWVudHMtcG9zc2libHktb3ZlcnJp
ZGRlbi1sZW5ndGguanM6IEFkZGVkLgorICAgICAgICAoYXJnczEpOgorICAgICAgICAoYXJnczIp
OgorICAgICAgICAqIGpzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL3B1dC1ieS1pZC10cmFuc2l0aW9u
LXdpdGgtaW5kZXhpbmctaGVhZGVyLmpzOiBBZGRlZC4KKyAgICAgICAgKGFsbG9jYXRlKToKKyAg
ICAgICAgKiBqcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9zY29wZWQtYXJndW1lbnRzLWxlbmd0aC5q
czogQWRkZWQuCisgICAgICAgIChhcmdzKToKKyAgICAgICAgKiBqcy9yZWdyZXNzL3NjcmlwdC10
ZXN0cy9zY29wZWQtYXJndW1lbnRzLW92ZXJyaWRkZW4tbGVuZ3RoLmpzOiBBZGRlZC4KKyAgICAg
ICAgKGFyZ3MpOgorICAgICAgICAqIGpzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL3Njb3BlZC1hcmd1
bWVudHMtcG9zc2libHktb3ZlcnJpZGRlbi1sZW5ndGguanM6IEFkZGVkLgorICAgICAgICAoYXJn
czEpOgorICAgICAgICAoYXJnczIpOgorCiAyMDE2LTA0LTA3ICBDb21taXQgUXVldWUgIDxjb21t
aXQtcXVldWVAd2Via2l0Lm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCBy
MTk5MTI4IGFuZCByMTk5MTQxLgpJbmRleDogTGF5b3V0VGVzdHMvanMvcmVncmVzcy9kaXJlY3Qt
YXJndW1lbnRzLWxlbmd0aC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
anMvcmVncmVzcy9kaXJlY3QtYXJndW1lbnRzLWxlbmd0aC1leHBlY3RlZC50eHQJKHJldmlzaW9u
IDApCisrKyBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL2RpcmVjdC1hcmd1bWVudHMtbGVuZ3RoLWV4
cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEwIEBACitKU1JlZ3Jlc3MvZGly
ZWN0LWFyZ3VtZW50cy1sZW5ndGgKKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVz
IG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BB
U1Mgbm8gZXhjZXB0aW9uIHRocm93bgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQor
CitURVNUIENPTVBMRVRFCisKSW5kZXg6IExheW91dFRlc3RzL2pzL3JlZ3Jlc3MvZGlyZWN0LWFy
Z3VtZW50cy1sZW5ndGguaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9qcy9yZWdyZXNz
L2RpcmVjdC1hcmd1bWVudHMtbGVuZ3RoLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0
cy9qcy9yZWdyZXNzL2RpcmVjdC1hcmd1bWVudHMtbGVuZ3RoLmh0bWwJKHdvcmtpbmcgY29weSkK
QEAgLTAsMCArMSwxMiBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRN
TC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMt
dGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vcmVzb3VyY2VzL3JlZ3Jlc3MtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJzY3Jp
cHQtdGVzdHMvZGlyZWN0LWFyZ3VtZW50cy1sZW5ndGguanMiPjwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9Ii4uLy4uL3Jlc291cmNlcy9yZWdyZXNzLXBvc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5Pgor
PC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvanMvcmVncmVzcy9kaXJlY3QtYXJndW1lbnRzLW92
ZXJyaWRkZW4tbGVuZ3RoLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9q
cy9yZWdyZXNzL2RpcmVjdC1hcmd1bWVudHMtb3ZlcnJpZGRlbi1sZW5ndGgtZXhwZWN0ZWQudHh0
CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvanMvcmVncmVzcy9kaXJlY3QtYXJndW1lbnRz
LW92ZXJyaWRkZW4tbGVuZ3RoLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsx
LDEwIEBACitKU1JlZ3Jlc3MvZGlyZWN0LWFyZ3VtZW50cy1vdmVycmlkZGVuLWxlbmd0aAorCitP
biBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xs
b3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBubyBleGNlcHRpb24gdGhyb3duCitQ
QVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpJbmRleDog
TGF5b3V0VGVzdHMvanMvcmVncmVzcy9kaXJlY3QtYXJndW1lbnRzLW92ZXJyaWRkZW4tbGVuZ3Ro
Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvanMvcmVncmVzcy9kaXJlY3QtYXJndW1l
bnRzLW92ZXJyaWRkZW4tbGVuZ3RoLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9q
cy9yZWdyZXNzL2RpcmVjdC1hcmd1bWVudHMtb3ZlcnJpZGRlbi1sZW5ndGguaHRtbAkod29ya2lu
ZyBjb3B5KQpAQCAtMCwwICsxLDEyIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYv
L0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291
cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQg
c3JjPSIuLi8uLi9yZXNvdXJjZXMvcmVncmVzcy1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9InNjcmlwdC10ZXN0cy9kaXJlY3QtYXJndW1lbnRzLW92ZXJyaWRkZW4tbGVuZ3RoLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvcmVncmVzcy1wb3N0LmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48
L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mv
ZGlyZWN0LWFyZ3VtZW50cy1wb3NzaWJseS1vdmVycmlkZGVuLWxlbmd0aC1leHBlY3RlZC50eHQK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvanMvcmVncmVzcy9kaXJlY3QtYXJndW1lbnRzLXBv
c3NpYmx5LW92ZXJyaWRkZW4tbGVuZ3RoLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExh
eW91dFRlc3RzL2pzL3JlZ3Jlc3MvZGlyZWN0LWFyZ3VtZW50cy1wb3NzaWJseS1vdmVycmlkZGVu
LWxlbmd0aC1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMCBAQAorSlNS
ZWdyZXNzL2RpcmVjdC1hcmd1bWVudHMtcG9zc2libHktb3ZlcnJpZGRlbi1sZW5ndGgKKworT24g
c3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93
ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1Mgbm8gZXhjZXB0aW9uIHRocm93bgorUEFT
UyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKSW5kZXg6IExh
eW91dFRlc3RzL2pzL3JlZ3Jlc3MvZGlyZWN0LWFyZ3VtZW50cy1wb3NzaWJseS1vdmVycmlkZGVu
LWxlbmd0aC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2pzL3JlZ3Jlc3MvZGlyZWN0
LWFyZ3VtZW50cy1wb3NzaWJseS1vdmVycmlkZGVuLWxlbmd0aC5odG1sCShyZXZpc2lvbiAwKQor
KysgTGF5b3V0VGVzdHMvanMvcmVncmVzcy9kaXJlY3QtYXJndW1lbnRzLXBvc3NpYmx5LW92ZXJy
aWRkZW4tbGVuZ3RoLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMiBAQAorPCFET0NU
WVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4K
KzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0Pgor
PC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3JlZ3Jlc3MtcHJl
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJzY3JpcHQtdGVzdHMvZGlyZWN0LWFyZ3VtZW50
cy1wb3NzaWJseS1vdmVycmlkZGVuLWxlbmd0aC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vcmVzb3VyY2VzL3JlZ3Jlc3MtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0
bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3B1dC1ieS1pZC10cmFuc2l0aW9uLXdp
dGgtaW5kZXhpbmctaGVhZGVyLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9qcy9yZWdyZXNzL3B1dC1ieS1pZC10cmFuc2l0aW9uLXdpdGgtaW5kZXhpbmctaGVhZGVyLWV4
cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2pzL3JlZ3Jlc3MvcHV0LWJ5
LWlkLXRyYW5zaXRpb24td2l0aC1pbmRleGluZy1oZWFkZXItZXhwZWN0ZWQudHh0CSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsMTAgQEAKK0pTUmVncmVzcy9wdXQtYnktaWQtdHJhbnNpdGlvbi13
aXRoLWluZGV4aW5nLWhlYWRlcgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMg
b2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFT
UyBubyBleGNlcHRpb24gdGhyb3duCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisK
K1RFU1QgQ09NUExFVEUKKwpJbmRleDogTGF5b3V0VGVzdHMvanMvcmVncmVzcy9wdXQtYnktaWQt
dHJhbnNpdGlvbi13aXRoLWluZGV4aW5nLWhlYWRlci5odG1sCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2pzL3JlZ3Jlc3MvcHV0LWJ5LWlkLXRyYW5zaXRpb24td2l0aC1pbmRleGluZy1oZWFk
ZXIuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2pzL3JlZ3Jlc3MvcHV0LWJ5LWlk
LXRyYW5zaXRpb24td2l0aC1pbmRleGluZy1oZWFkZXIuaHRtbAkod29ya2luZyBjb3B5KQpAQCAt
MCwwICsxLDEyIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9F
TiI+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0
LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSIuLi8uLi9y
ZXNvdXJjZXMvcmVncmVzcy1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InNjcmlwdC10
ZXN0cy9wdXQtYnktaWQtdHJhbnNpdGlvbi13aXRoLWluZGV4aW5nLWhlYWRlci5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3JlZ3Jlc3MtcG9zdC5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3Jp
cHQ+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3Njb3Bl
ZC1hcmd1bWVudHMtbGVuZ3RoLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9qcy9yZWdyZXNzL3Njb3BlZC1hcmd1bWVudHMtbGVuZ3RoLWV4cGVjdGVkLnR4dAkocmV2aXNp
b24gMCkKKysrIExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2NvcGVkLWFyZ3VtZW50cy1sZW5ndGgt
ZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTAgQEAKK0pTUmVncmVzcy9z
Y29wZWQtYXJndW1lbnRzLWxlbmd0aAorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJp
ZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKwor
UEFTUyBubyBleGNlcHRpb24gdGhyb3duCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVl
CisKK1RFU1QgQ09NUExFVEUKKwpJbmRleDogTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zY29wZWQt
YXJndW1lbnRzLWxlbmd0aC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2pzL3JlZ3Jl
c3Mvc2NvcGVkLWFyZ3VtZW50cy1sZW5ndGguaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRl
c3RzL2pzL3JlZ3Jlc3Mvc2NvcGVkLWFyZ3VtZW50cy1sZW5ndGguaHRtbAkod29ya2luZyBjb3B5
KQpAQCAtMCwwICsxLDEyIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBI
VE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9q
cy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSIu
Li8uLi9yZXNvdXJjZXMvcmVncmVzcy1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InNj
cmlwdC10ZXN0cy9zY29wZWQtYXJndW1lbnRzLWxlbmd0aC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3JlZ3Jlc3MtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+
Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3Njb3BlZC1hcmd1bWVudHMt
b3ZlcnJpZGRlbi1sZW5ndGgtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2pzL3JlZ3Jlc3Mvc2NvcGVkLWFyZ3VtZW50cy1vdmVycmlkZGVuLWxlbmd0aC1leHBlY3RlZC50
eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3Njb3BlZC1hcmd1bWVu
dHMtb3ZlcnJpZGRlbi1sZW5ndGgtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAg
KzEsMTAgQEAKK0pTUmVncmVzcy9zY29wZWQtYXJndW1lbnRzLW92ZXJyaWRkZW4tbGVuZ3RoCisK
K09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZv
bGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIG5vIGV4Y2VwdGlvbiB0aHJvd24K
K1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCkluZGV4
OiBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3Njb3BlZC1hcmd1bWVudHMtb3ZlcnJpZGRlbi1sZW5n
dGguaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3Njb3BlZC1hcmd1
bWVudHMtb3ZlcnJpZGRlbi1sZW5ndGguaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3Rz
L2pzL3JlZ3Jlc3Mvc2NvcGVkLWFyZ3VtZW50cy1vdmVycmlkZGVuLWxlbmd0aC5odG1sCSh3b3Jr
aW5nIGNvcHkpCkBAIC0wLDAgKzEsMTIgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVU
Ri8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVz
b3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlw
dCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9yZWdyZXNzLXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0ic2NyaXB0LXRlc3RzL3Njb3BlZC1hcmd1bWVudHMtb3ZlcnJpZGRlbi1sZW5ndGguanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9yZWdyZXNzLXBvc3QuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMi
Pjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvanMvcmVncmVz
cy9zY29wZWQtYXJndW1lbnRzLXBvc3NpYmx5LW92ZXJyaWRkZW4tbGVuZ3RoLWV4cGVjdGVkLnR4
dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3Njb3BlZC1hcmd1bWVudHMt
cG9zc2libHktb3ZlcnJpZGRlbi1sZW5ndGgtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysg
TGF5b3V0VGVzdHMvanMvcmVncmVzcy9zY29wZWQtYXJndW1lbnRzLXBvc3NpYmx5LW92ZXJyaWRk
ZW4tbGVuZ3RoLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEwIEBACitK
U1JlZ3Jlc3Mvc2NvcGVkLWFyZ3VtZW50cy1wb3NzaWJseS1vdmVycmlkZGVuLWxlbmd0aAorCitP
biBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xs
b3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBubyBleGNlcHRpb24gdGhyb3duCitQ
QVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpJbmRleDog
TGF5b3V0VGVzdHMvanMvcmVncmVzcy9zY29wZWQtYXJndW1lbnRzLXBvc3NpYmx5LW92ZXJyaWRk
ZW4tbGVuZ3RoLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zY29w
ZWQtYXJndW1lbnRzLXBvc3NpYmx5LW92ZXJyaWRkZW4tbGVuZ3RoLmh0bWwJKHJldmlzaW9uIDAp
CisrKyBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3Njb3BlZC1hcmd1bWVudHMtcG9zc2libHktb3Zl
cnJpZGRlbi1sZW5ndGguaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEyIEBACis8IURP
Q1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFk
PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+
Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvcmVncmVzcy1w
cmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy9zY29wZWQtYXJndW1l
bnRzLXBvc3NpYmx5LW92ZXJyaWRkZW4tbGVuZ3RoLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi9yZXNvdXJjZXMvcmVncmVzcy1wb3N0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwv
aHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL2RpcmVjdC1h
cmd1bWVudHMtbGVuZ3RoLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mv
c2NyaXB0LXRlc3RzL2RpcmVjdC1hcmd1bWVudHMtbGVuZ3RoLmpzCShyZXZpc2lvbiAwKQorKysg
TGF5b3V0VGVzdHMvanMvcmVncmVzcy9zY3JpcHQtdGVzdHMvZGlyZWN0LWFyZ3VtZW50cy1sZW5n
dGguanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxNCBAQAorKGZ1bmN0aW9uKCkgeworICAg
IHZhciBhcmdzID0gKGZ1bmN0aW9uKCkgeworICAgICAgICByZXR1cm4gYXJndW1lbnRzOworICAg
IH0pKDEsIDIsIDMsIDQsIDUpOworICAgIAorICAgIHZhciBhcnJheSA9IFthcmdzLCBbMSwgMiwg
M11dOworICAgIAorICAgIHZhciByZXN1bHQgPSAwOworICAgIGZvciAodmFyIGkgPSAwOyBpIDwg
MTAwMDAwMDsgKytpKQorICAgICAgICByZXN1bHQgKz0gYXJyYXlbaSAlIGFycmF5Lmxlbmd0aF0u
bGVuZ3RoOworICAgIAorICAgIGlmIChyZXN1bHQgIT0gNDAwMDAwMCkKKyAgICAgICAgdGhyb3cg
IkVycm9yOiBiYWQgcmVzdWx0OiAiICsgcmVzdWx0OworfSkoKTsKSW5kZXg6IExheW91dFRlc3Rz
L2pzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL2RpcmVjdC1hcmd1bWVudHMtb3ZlcnJpZGRlbi1sZW5n
dGguanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zY3JpcHQtdGVzdHMv
ZGlyZWN0LWFyZ3VtZW50cy1vdmVycmlkZGVuLWxlbmd0aC5qcwkocmV2aXNpb24gMCkKKysrIExh
eW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL2RpcmVjdC1hcmd1bWVudHMtb3ZlcnJp
ZGRlbi1sZW5ndGguanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxNiBAQAorKGZ1bmN0aW9u
KCkgeworICAgIHZhciBhcmdzID0gKGZ1bmN0aW9uKCkgeworICAgICAgICB2YXIgcmVzdWx0ID0g
YXJndW1lbnRzOworICAgICAgICByZXN1bHQubGVuZ3RoID0gNjsKKyAgICAgICAgcmV0dXJuIHJl
c3VsdDsKKyAgICB9KSgxLCAyLCAzLCA0LCA1KTsKKyAgICAKKyAgICB2YXIgYXJyYXkgPSBbYXJn
cywgWzEsIDIsIDNdXTsKKyAgICAKKyAgICB2YXIgcmVzdWx0ID0gMDsKKyAgICBmb3IgKHZhciBp
ID0gMDsgaSA8IDEwMDAwMDA7ICsraSkKKyAgICAgICAgcmVzdWx0ICs9IGFycmF5W2kgJSBhcnJh
eS5sZW5ndGhdLmxlbmd0aDsKKyAgICAKKyAgICBpZiAocmVzdWx0ICE9IDQ1MDAwMDApCisgICAg
ICAgIHRocm93ICJFcnJvcjogYmFkIHJlc3VsdDogIiArIHJlc3VsdDsKK30pKCk7CkluZGV4OiBM
YXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9kaXJlY3QtYXJndW1lbnRzLXBvc3Np
Ymx5LW92ZXJyaWRkZW4tbGVuZ3RoLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2pzL3Jl
Z3Jlc3Mvc2NyaXB0LXRlc3RzL2RpcmVjdC1hcmd1bWVudHMtcG9zc2libHktb3ZlcnJpZGRlbi1s
ZW5ndGguanMJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NjcmlwdC10
ZXN0cy9kaXJlY3QtYXJndW1lbnRzLXBvc3NpYmx5LW92ZXJyaWRkZW4tbGVuZ3RoLmpzCSh3b3Jr
aW5nIGNvcHkpCkBAIC0wLDAgKzEsMjAgQEAKKyhmdW5jdGlvbigpIHsKKyAgICB2YXIgYXJnczEg
PSAoZnVuY3Rpb24oKSB7CisgICAgICAgIHJldHVybiBhcmd1bWVudHM7CisgICAgfSkoMSwgMiwg
Myk7CisgICAgCisgICAgdmFyIGFyZ3MyID0gKGZ1bmN0aW9uKCkgeworICAgICAgICB2YXIgcmVz
dWx0ID0gYXJndW1lbnRzOworICAgICAgICByZXN1bHQubGVuZ3RoID0gNjsKKyAgICAgICAgcmV0
dXJuIHJlc3VsdDsKKyAgICB9KSgxLCAyLCAzLCA0LCA1KTsKKyAgICAKKyAgICB2YXIgYXJyYXkg
PSBbYXJnczEsIGFyZ3MyXTsKKyAgICAKKyAgICB2YXIgcmVzdWx0ID0gMDsKKyAgICBmb3IgKHZh
ciBpID0gMDsgaSA8IDEwMDAwMDA7ICsraSkKKyAgICAgICAgcmVzdWx0ICs9IGFycmF5W2kgJSBh
cnJheS5sZW5ndGhdLmxlbmd0aDsKKyAgICAKKyAgICBpZiAocmVzdWx0ICE9IDQ1MDAwMDApCisg
ICAgICAgIHRocm93ICJFcnJvcjogYmFkIHJlc3VsdDogIiArIHJlc3VsdDsKK30pKCk7CkluZGV4
OiBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9wdXQtYnktaWQtdHJhbnNpdGlv
bi13aXRoLWluZGV4aW5nLWhlYWRlci5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9qcy9y
ZWdyZXNzL3NjcmlwdC10ZXN0cy9wdXQtYnktaWQtdHJhbnNpdGlvbi13aXRoLWluZGV4aW5nLWhl
YWRlci5qcwkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2NyaXB0LXRl
c3RzL3B1dC1ieS1pZC10cmFuc2l0aW9uLXdpdGgtaW5kZXhpbmctaGVhZGVyLmpzCSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsODQgQEAKKyhmdW5jdGlvbigpIHsKKyAgICBmdW5jdGlvbiBhbGxv
Y2F0ZSgpIHsKKyAgICAgICAgcmV0dXJuIHt9OworICAgIH07CisgICAgCisgICAgZm9yICh2YXIg
aSA9IDA7IGkgPCAzMDA7ICsraSkgeworICAgICAgICB2YXIgbzsKKyAgICAgICAgdmFyIG4gPSAx
MDA7CisgICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgbjsgKytqKSB7CisgICAgICAgICAgICBv
ID0gYWxsb2NhdGUoKTsKKyAgICAgICAgICAgIG9bMF0gPSBpICsgMDsKKyAgICAgICAgICAgIG9b
MV0gPSBpICsgMTsKKyAgICAgICAgICAgIG9bMl0gPSBpICsgMjsKKyAgICAgICAgICAgIG9bM10g
PSBpICsgMzsKKyAgICAgICAgICAgIG9bNF0gPSBpICsgNDsKKyAgICAgICAgICAgIG9bNV0gPSBp
ICsgNTsKKyAgICAgICAgICAgIG9bNl0gPSBpICsgNjsKKyAgICAgICAgICAgIG9bN10gPSBpICsg
NzsKKyAgICAgICAgICAgIG9bOF0gPSBpICsgODsKKyAgICAgICAgICAgIG9bOV0gPSBpICsgOTsK
KyAgICAgICAgICAgIG9bMTBdID0gaSArIDEwOworICAgICAgICAgICAgb1sxMV0gPSBpICsgMTE7
CisgICAgICAgICAgICBvLmYgPSBqICsgMDsKKyAgICAgICAgICAgIG8uZyA9IGogKyAxOworICAg
ICAgICAgICAgby5oID0gaiArIDI7CisgICAgICAgICAgICBvLmkgPSBqICsgMzsKKyAgICAgICAg
ICAgIG8uaiA9IGogKyA0OworICAgICAgICAgICAgby5rID0gaiArIDU7CisgICAgICAgICAgICBv
LmwgPSBqICsgNjsKKyAgICAgICAgICAgIG8ubSA9IGogKyA3OworICAgICAgICAgICAgby5uID0g
aiArIDg7CisgICAgICAgICAgICBvLm8gPSBqICsgOTsKKyAgICAgICAgICAgIG8ucCA9IGogKyAx
MDsKKyAgICAgICAgICAgIG8ucSA9IGogKyAxMTsKKyAgICAgICAgICAgIG8uciA9IGogKyAxMjsK
KyAgICAgICAgICAgIG8ucyA9IGogKyAxMzsKKyAgICAgICAgICAgIG8udCA9IGogKyAxNDsKKyAg
ICAgICAgICAgIG8udSA9IGogKyAxNTsKKyAgICAgICAgICAgIG8udiA9IGogKyAxNjsKKyAgICAg
ICAgICAgIG8udyA9IGogKyAxNzsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgZm9yICh2
YXIgaiA9IDA7IGogPCAxMTsgKytqKSB7CisgICAgICAgICAgICBpZiAob1tqXSAhPSBpICsgaikK
KyAgICAgICAgICAgICAgICB0aHJvdyAiRXJyb3I6IGJhZCB2YWx1ZSBhdCBvWyIgKyBqICsgIl06
ICIgKyBvW2pdOworICAgICAgICB9CisgICAgICAgIGlmIChvLmYgIT0gbiAtIDEgKyAwKQorICAg
ICAgICAgICAgdGhyb3cgIkVycm9yOiBiYWQgdmFsdWUgYXQgby5mOiAiICsgby5mOworICAgICAg
ICBpZiAoby5nICE9IG4gLSAxICsgMSkKKyAgICAgICAgICAgIHRocm93ICJFcnJvcjogYmFkIHZh
bHVlIGF0IG8uZjogIiArIG8uZzsKKyAgICAgICAgaWYgKG8uaCAhPSBuIC0gMSArIDIpCisgICAg
ICAgICAgICB0aHJvdyAiRXJyb3I6IGJhZCB2YWx1ZSBhdCBvLmY6ICIgKyBvLmg7CisgICAgICAg
IGlmIChvLmkgIT0gbiAtIDEgKyAzKQorICAgICAgICAgICAgdGhyb3cgIkVycm9yOiBiYWQgdmFs
dWUgYXQgby5mOiAiICsgby5pOworICAgICAgICBpZiAoby5qICE9IG4gLSAxICsgNCkKKyAgICAg
ICAgICAgIHRocm93ICJFcnJvcjogYmFkIHZhbHVlIGF0IG8uZjogIiArIG8uajsKKyAgICAgICAg
aWYgKG8uayAhPSBuIC0gMSArIDUpCisgICAgICAgICAgICB0aHJvdyAiRXJyb3I6IGJhZCB2YWx1
ZSBhdCBvLmY6ICIgKyBvLms7CisgICAgICAgIGlmIChvLmwgIT0gbiAtIDEgKyA2KQorICAgICAg
ICAgICAgdGhyb3cgIkVycm9yOiBiYWQgdmFsdWUgYXQgby5mOiAiICsgby5sOworICAgICAgICBp
ZiAoby5tICE9IG4gLSAxICsgNykKKyAgICAgICAgICAgIHRocm93ICJFcnJvcjogYmFkIHZhbHVl
IGF0IG8uZjogIiArIG8ubTsKKyAgICAgICAgaWYgKG8ubiAhPSBuIC0gMSArIDgpCisgICAgICAg
ICAgICB0aHJvdyAiRXJyb3I6IGJhZCB2YWx1ZSBhdCBvLmY6ICIgKyBvLm47CisgICAgICAgIGlm
IChvLm8gIT0gbiAtIDEgKyA5KQorICAgICAgICAgICAgdGhyb3cgIkVycm9yOiBiYWQgdmFsdWUg
YXQgby5mOiAiICsgby5vOworICAgICAgICBpZiAoby5wICE9IG4gLSAxICsgMTApCisgICAgICAg
ICAgICB0aHJvdyAiRXJyb3I6IGJhZCB2YWx1ZSBhdCBvLmY6ICIgKyBvLnA7CisgICAgICAgIGlm
IChvLnEgIT0gbiAtIDEgKyAxMSkKKyAgICAgICAgICAgIHRocm93ICJFcnJvcjogYmFkIHZhbHVl
IGF0IG8uZjogIiArIG8ucTsKKyAgICAgICAgaWYgKG8uciAhPSBuIC0gMSArIDEyKQorICAgICAg
ICAgICAgdGhyb3cgIkVycm9yOiBiYWQgdmFsdWUgYXQgby5mOiAiICsgby5yOworICAgICAgICBp
ZiAoby5zICE9IG4gLSAxICsgMTMpCisgICAgICAgICAgICB0aHJvdyAiRXJyb3I6IGJhZCB2YWx1
ZSBhdCBvLmY6ICIgKyBvLnM7CisgICAgICAgIGlmIChvLnQgIT0gbiAtIDEgKyAxNCkKKyAgICAg
ICAgICAgIHRocm93ICJFcnJvcjogYmFkIHZhbHVlIGF0IG8uZjogIiArIG8udDsKKyAgICAgICAg
aWYgKG8udSAhPSBuIC0gMSArIDE1KQorICAgICAgICAgICAgdGhyb3cgIkVycm9yOiBiYWQgdmFs
dWUgYXQgby5mOiAiICsgby51OworICAgICAgICBpZiAoby52ICE9IG4gLSAxICsgMTYpCisgICAg
ICAgICAgICB0aHJvdyAiRXJyb3I6IGJhZCB2YWx1ZSBhdCBvLmY6ICIgKyBvLnY7CisgICAgICAg
IGlmIChvLncgIT0gbiAtIDEgKyAxNykKKyAgICAgICAgICAgIHRocm93ICJFcnJvcjogYmFkIHZh
bHVlIGF0IG8uZjogIiArIG8udzsKKyAgICB9Cit9KSgpOwpJbmRleDogTGF5b3V0VGVzdHMvanMv
cmVncmVzcy9zY3JpcHQtdGVzdHMvc2NvcGVkLWFyZ3VtZW50cy1sZW5ndGguanMKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zY3JpcHQtdGVzdHMvc2NvcGVkLWFyZ3VtZW50
cy1sZW5ndGguanMJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3Njcmlw
dC10ZXN0cy9zY29wZWQtYXJndW1lbnRzLWxlbmd0aC5qcwkod29ya2luZyBjb3B5KQpAQCAtMCww
ICsxLDIwIEBACisoZnVuY3Rpb24oKSB7CisgICAgdmFyIGFyZ3MgPSAoZnVuY3Rpb24oYSkgewor
ICAgICAgICAoZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBhKys7CisgICAgICAgIH0pKCk7Cisg
ICAgICAgIHJldHVybiBhcmd1bWVudHM7CisgICAgfSkoMSwgMiwgMywgNCwgNSk7CisgICAgCisg
ICAgaWYgKGFyZ3NbMF0gIT0gMikKKyAgICAgICAgdGhyb3cgIkVycm9yOiBiYWQgYXJnczogIiAr
IGFyZ3M7CisgICAgCisgICAgdmFyIGFycmF5ID0gW2FyZ3MsIFsxLCAyLCAzXV07CisgICAgCisg
ICAgdmFyIHJlc3VsdCA9IDA7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDAwOyArK2kp
CisgICAgICAgIHJlc3VsdCArPSBhcnJheVtpICUgYXJyYXkubGVuZ3RoXS5sZW5ndGg7CisgICAg
CisgICAgaWYgKHJlc3VsdCAhPSA0MDAwMDAwKQorICAgICAgICB0aHJvdyAiRXJyb3I6IGJhZCBy
ZXN1bHQ6ICIgKyByZXN1bHQ7Cit9KSgpOwpJbmRleDogTGF5b3V0VGVzdHMvanMvcmVncmVzcy9z
Y3JpcHQtdGVzdHMvc2NvcGVkLWFyZ3VtZW50cy1vdmVycmlkZGVuLWxlbmd0aC5qcwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9zY29wZWQtYXJndW1l
bnRzLW92ZXJyaWRkZW4tbGVuZ3RoLmpzCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvanMv
cmVncmVzcy9zY3JpcHQtdGVzdHMvc2NvcGVkLWFyZ3VtZW50cy1vdmVycmlkZGVuLWxlbmd0aC5q
cwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDIyIEBACisoZnVuY3Rpb24oKSB7CisgICAgdmFy
IGFyZ3MgPSAoZnVuY3Rpb24oYSkgeworICAgICAgICAoZnVuY3Rpb24oKSB7CisgICAgICAgICAg
ICBhKys7CisgICAgICAgIH0pKCk7CisgICAgICAgIHZhciByZXN1bHQgPSBhcmd1bWVudHM7Cisg
ICAgICAgIHJlc3VsdC5sZW5ndGggPSA2OworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0p
KDEsIDIsIDMsIDQsIDUpOworICAgIAorICAgIGlmIChhcmdzWzBdICE9IDIpCisgICAgICAgIHRo
cm93ICJFcnJvcjogYmFkIGFyZ3M6ICIgKyBhcmdzOworICAgIAorICAgIHZhciBhcnJheSA9IFth
cmdzLCBbMSwgMiwgM11dOworICAgIAorICAgIHZhciByZXN1bHQgPSAwOworICAgIGZvciAodmFy
IGkgPSAwOyBpIDwgMTAwMDAwMDsgKytpKQorICAgICAgICByZXN1bHQgKz0gYXJyYXlbaSAlIGFy
cmF5Lmxlbmd0aF0ubGVuZ3RoOworICAgIAorICAgIGlmIChyZXN1bHQgIT0gNDUwMDAwMCkKKyAg
ICAgICAgdGhyb3cgIkVycm9yOiBiYWQgcmVzdWx0OiAiICsgcmVzdWx0OworfSkoKTsKSW5kZXg6
IExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL3Njb3BlZC1hcmd1bWVudHMtcG9z
c2libHktb3ZlcnJpZGRlbi1sZW5ndGguanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvanMv
cmVncmVzcy9zY3JpcHQtdGVzdHMvc2NvcGVkLWFyZ3VtZW50cy1wb3NzaWJseS1vdmVycmlkZGVu
LWxlbmd0aC5qcwkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2NyaXB0
LXRlc3RzL3Njb3BlZC1hcmd1bWVudHMtcG9zc2libHktb3ZlcnJpZGRlbi1sZW5ndGguanMJKHdv
cmtpbmcgY29weSkKQEAgLTAsMCArMSwzMiBAQAorKGZ1bmN0aW9uKCkgeworICAgIHZhciBhcmdz
MSA9IChmdW5jdGlvbihhKSB7CisgICAgICAgIChmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIGEr
KzsKKyAgICAgICAgfSkoKTsKKyAgICAgICAgcmV0dXJuIGFyZ3VtZW50czsKKyAgICB9KSgxLCAy
LCAzKTsKKyAgICAKKyAgICBpZiAoYXJnczFbMF0gIT0gMikKKyAgICAgICAgdGhyb3cgIkVycm9y
OiBiYWQgYXJnczE6ICIgKyBhcmdzMTsKKyAgICAKKyAgICB2YXIgYXJnczIgPSAoZnVuY3Rpb24o
YSkgeworICAgICAgICAoZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBhKys7CisgICAgICAgIH0p
KCk7CisgICAgICAgIHZhciByZXN1bHQgPSBhcmd1bWVudHM7CisgICAgICAgIHJlc3VsdC5sZW5n
dGggPSA2OworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0pKDEsIDIsIDMsIDQsIDUpOwor
ICAgIAorICAgIGlmIChhcmdzMlswXSAhPSAyKQorICAgICAgICB0aHJvdyAiRXJyb3I6IGJhZCBh
cmdzMjogIiArIGFyZ3MyOworICAgIAorICAgIHZhciBhcnJheSA9IFthcmdzMSwgYXJnczJdOwor
ICAgIAorICAgIHZhciByZXN1bHQgPSAwOworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDAw
MDsgKytpKQorICAgICAgICByZXN1bHQgKz0gYXJyYXlbaSAlIGFycmF5Lmxlbmd0aF0ubGVuZ3Ro
OworICAgIAorICAgIGlmIChyZXN1bHQgIT0gNDUwMDAwMCkKKyAgICAgICAgdGhyb3cgIkVycm9y
OiBiYWQgcmVzdWx0OiAiICsgcmVzdWx0OworfSkoKTsK
</data>
<flag name="review"
          id="300327"
          type_id="1"
          status="-"
          setter="fpizlo"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>276018</attachid>
            <date>2016-04-08 11:07:08 -0700</date>
            <delta_ts>2016-04-08 11:18:01 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>35984</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTk5MjM0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ0IEBA
CisyMDE2LTA0LTA4ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
QWRkIElDIHN1cHBvcnQgZm9yIGFyZ3VtZW50cy5sZW5ndGgKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NjM4OQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAKKyAgICAgICAgVGhpcyBhZGRzIHN1cHBvcnQgZm9y
IGNhY2hpbmcgYWNjZXNzZXMgdG8gYXJndW1lbnRzLmxlbmd0aCBmb3IgYm90aCBEaXJlY3RBcmd1
bWVudHMgYW5kCisgICAgICAgIFNjb3BlZEFyZ3VtZW50cy4gSW4gc3RyaWN0IG1vZGUsIHdlIGFs
cmVhZHkgY2FjaGVkIHRoZXNlIGFjY2Vzc2VzIHNpbmNlIHRoZXkgd2VyZSBqdXN0CisgICAgICAg
IG5vcm1hbCBwcm9wZXJ0aWVzLgorCisgICAgICAgIEFtYXppbmdseSwgd2UgYWxzbyBhbHJlYWR5
IHN1cHBvcnRlZCBjYWNoaW5nIG9mIG92ZXJyaWRkZW4gYXJndW1lbnRzLmxlbmd0aCBpbiBib3Ro
CisgICAgICAgIERpcmVjdEFyZ3VtZW50cyBhbmQgU2NvcGVkQXJndW1lbnRzLiBUaGlzIGlzIGJl
Y2F1c2Ugd2hlbiB5b3Ugb3ZlcnJpZGUsIHRoZSBwcm9wZXJ0eSBnZXRzCisgICAgICAgIG1hdGVy
aWFsaXplZCBhcyBhIG5vcm1hbCBKUyBwcm9wZXJ0eSBhbmQgdGhlIHN0cnVjdHVyZSBpcyBjaGFu
Z2VkLgorICAgICAgICAKKyAgICAgICAgVGhpcyBwYXRjaCBwYWluc3Rha2luZ2x5IHByZXNlcnZl
cyBvdXIgcHJldmlvdXMgY2FjaGluZyBvZiBvdmVycmlkZGVuIGxlbmd0aCB3aGlsZQorICAgICAg
ICBpbnRyb2R1Y2luZyBjYWNoaW5nIG9mIG5vbi1vdmVycmlkZGVuIGxlbmd0aCAoaS5lLiB0aGUg
Y29tbW9uIGNhc2UpLiBJbiBmYWN0LCB3ZSBldmVuIGNhY2hlCisgICAgICAgIHRoZSBjYXNlIHdo
ZXJlIGl0IGNvdWxkIGVpdGhlciBiZSBvdmVycmlkZGVuIG9yIG5vdCwgc2luY2Ugd2UganVzdCBl
bmQgdXAgd2l0aCBhbiBBY2Nlc3NDYXNlCisgICAgICAgIGZvciBlYWNoIGFuZCB0aGV5IGNhc2Nh
ZGUgdG8gZWFjaCBvdGhlci4KKworICAgICAgICBUaGlzIGlzIGEgPjN4IHNwZWVkLXVwIG9uIG1p
Y3JvYmVuY2htYXJrcyB0aGF0IGRvIGFyZ3VtZW50cy5sZW5ndGggaW4gYSBwb2x5bW9ycGhpYyBj
b250ZXh0LgorICAgICAgICBFbnRpcmVseSBtb25vbW9ycGhpYyBhY2Nlc3NlcyB3ZXJlIGFscmVh
ZHkgaGFuZGxlZCBieSB0aGUgREZHLgorCisgICAgICAgICogYnl0ZWNvZGUvUG9seW1vcnBoaWNB
Y2Nlc3MuY3BwOgorICAgICAgICAoSlNDOjpBY2Nlc3NHZW5lcmF0aW9uU3RhdGU6OmNhbGN1bGF0
ZUxpdmVSZWdpc3RlcnNGb3JDYWxsQW5kRXhjZXB0aW9uSGFuZGxpbmcpOgorICAgICAgICAoSlND
OjpBY2Nlc3NDYXNlOjpndWFyZGVkQnlTdHJ1Y3R1cmVDaGVjayk6CisgICAgICAgIChKU0M6OkFj
Y2Vzc0Nhc2U6OmdlbmVyYXRlV2l0aEd1YXJkKToKKyAgICAgICAgKEpTQzo6QWNjZXNzQ2FzZTo6
Z2VuZXJhdGUpOgorICAgICAgICAoV1RGOjpwcmludEludGVybmFsKToKKyAgICAgICAgKiBieXRl
Y29kZS9Qb2x5bW9ycGhpY0FjY2Vzcy5oOgorICAgICAgICAqIGppdC9JQ1N0YXRzLmg6CisgICAg
ICAgICogaml0L0pJVE9wZXJhdGlvbnMuY3BwOgorICAgICAgICAqIGppdC9SZXBhdGNoLmNwcDoK
KyAgICAgICAgKEpTQzo6dHJ5Q2FjaGVHZXRCeUlEKToKKyAgICAgICAgKEpTQzo6dHJ5Q2FjaGVQ
dXRCeUlEKToKKyAgICAgICAgKEpTQzo6dHJ5UmVwYXRjaEluKToKKyAgICAgICAgKiB0ZXN0cy9z
dHJlc3MvZGlyZWN0LWFyZ3VtZW50cy1vdmVycmlkZS1sZW5ndGgtdGhlbi1hY2Nlc3Mtbm9ybWFs
LWxlbmd0aC5qczogQWRkZWQuCisgICAgICAgIChhcmdzKToKKyAgICAgICAgKGZvbyk6CisgICAg
ICAgIChyZXN1bHQuZm9vKToKKwogMjAxNi0wNC0wOCAgQnJpYW4gQnVyZyAgPGJidXJnQGFwcGxl
LmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBwcm90b2NvbCBnZW5lcmF0b3Igc2hvdWxk
IGVtaXQgYW4gZXJyb3Igd2hlbiAndHlwZScgaXMgdXNlZCBpbnN0ZWFkIG9mICckcmVmJwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1BvbHltb3JwaGljQWNjZXNzLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUG9seW1vcnBoaWNB
Y2Nlc3MuY3BwCShyZXZpc2lvbiAxOTkyMzQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvUG9seW1vcnBoaWNBY2Nlc3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMSwxMSArMzEs
MTMgQEAKICNpbmNsdWRlICJCaW5hcnlTd2l0Y2guaCIKICNpbmNsdWRlICJDQ2FsbEhlbHBlcnMu
aCIKICNpbmNsdWRlICJDb2RlQmxvY2suaCIKKyNpbmNsdWRlICJEaXJlY3RBcmd1bWVudHMuaCIK
ICNpbmNsdWRlICJHZXR0ZXJTZXR0ZXIuaCIKICNpbmNsdWRlICJIZWFwLmgiCiAjaW5jbHVkZSAi
SklUT3BlcmF0aW9ucy5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNsdWRlICJMaW5r
QnVmZmVyLmgiCisjaW5jbHVkZSAiU2NvcGVkQXJndW1lbnRzLmgiCiAjaW5jbHVkZSAiU2NyYXRj
aFJlZ2lzdGVyQWxsb2NhdG9yLmgiCiAjaW5jbHVkZSAiU3RydWN0dXJlU3R1YkNsZWFyaW5nV2F0
Y2hwb2ludC5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZVN0dWJJbmZvLmgiCkBAIC04MSw2ICs4Myw3
IEBAIHZvaWQgQWNjZXNzR2VuZXJhdGlvblN0YXRlOjpjYWxjdWxhdGVMaXYKICAgICAgICAgICAg
IFJFTEVBU0VfQVNTRVJUKEpJVENvZGU6OmlzT3B0aW1pemluZ0pJVChqaXQtPmNvZGVCbG9jaygp
LT5qaXRUeXBlKCkpKTsKIAogICAgICAgICBtX2xpdmVSZWdpc3RlcnNGb3JDYWxsID0gUmVnaXN0
ZXJTZXQobV9saXZlUmVnaXN0ZXJzVG9QcmVzZXJ2ZUF0RXhjZXB0aW9uSGFuZGxpbmdDYWxsU2l0
ZSwgYWxsb2NhdG9yLT51c2VkUmVnaXN0ZXJzKCkpOworICAgICAgICBtX2xpdmVSZWdpc3RlcnNG
b3JDYWxsLm1lcmdlKGV4dHJhKTsKICAgICAgICAgbV9saXZlUmVnaXN0ZXJzRm9yQ2FsbC5leGNs
dWRlKFJlZ2lzdGVyU2V0OjpyZWdpc3RlcnNUb05vdFNhdmVGb3JKU0NhbGwoKSk7CiAgICAgICAg
IG1fbGl2ZVJlZ2lzdGVyc0ZvckNhbGwubWVyZ2UoZXh0cmEpOwogICAgIH0KQEAgLTM5NSw2ICsz
OTgsOCBAQCBib29sIEFjY2Vzc0Nhc2U6Omd1YXJkZWRCeVN0cnVjdHVyZUNoZWNrCiAgICAgY2Fz
ZSBNZWdhbW9ycGhpY0xvYWQ6CiAgICAgY2FzZSBBcnJheUxlbmd0aDoKICAgICBjYXNlIFN0cmlu
Z0xlbmd0aDoKKyAgICBjYXNlIERpcmVjdEFyZ3VtZW50c0xlbmd0aDoKKyAgICBjYXNlIFNjb3Bl
ZEFyZ3VtZW50c0xlbmd0aDoKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGRlZmF1bHQ6CiAg
ICAgICAgIHJldHVybiB0cnVlOwpAQCAtNTIyLDYgKzUyNyw0NiBAQCB2b2lkIEFjY2Vzc0Nhc2U6
OmdlbmVyYXRlV2l0aEd1YXJkKAogICAgICAgICBicmVhazsKICAgICB9CiAgICAgICAgIAorICAg
IGNhc2UgRGlyZWN0QXJndW1lbnRzTGVuZ3RoOiB7CisgICAgICAgIEFTU0VSVCghdmlhUHJveHko
KSk7CisgICAgICAgIGZhbGxUaHJvdWdoLmFwcGVuZCgKKyAgICAgICAgICAgIGppdC5icmFuY2g4
KAorICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6Tm90RXF1YWwsCisgICAgICAgICAgICAg
ICAgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKGJhc2VHUFIsIEpTQ2VsbDo6dHlwZUluZm9UeXBlT2Zm
c2V0KCkpLAorICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKERpcmVj
dEFyZ3VtZW50c1R5cGUpKSk7CisKKyAgICAgICAgZmFsbFRocm91Z2guYXBwZW5kKAorICAgICAg
ICAgICAgaml0LmJyYW5jaFRlc3RQdHIoCisgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpO
b25aZXJvLAorICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6QWRkcmVzcyhiYXNlR1BSLCBE
aXJlY3RBcmd1bWVudHM6Om9mZnNldE9mT3ZlcnJpZGVzKCkpKSk7CisgICAgICAgIGppdC5sb2Fk
MzIoCisgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoYmFzZUdQUiwgRGlyZWN0QXJn
dW1lbnRzOjpvZmZzZXRPZkxlbmd0aCgpKSwKKyAgICAgICAgICAgIHZhbHVlUmVncy5wYXlsb2Fk
R1BSKCkpOworICAgICAgICBqaXQuYm94SW50MzIodmFsdWVSZWdzLnBheWxvYWRHUFIoKSwgdmFs
dWVSZWdzLCBDQ2FsbEhlbHBlcnM6OkRvTm90SGF2ZVRhZ1JlZ2lzdGVycyk7CisgICAgICAgIHN0
YXRlLnN1Y2NlZWQoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAgICAgCisgICAgY2Fz
ZSBTY29wZWRBcmd1bWVudHNMZW5ndGg6IHsKKyAgICAgICAgQVNTRVJUKCF2aWFQcm94eSgpKTsK
KyAgICAgICAgZmFsbFRocm91Z2guYXBwZW5kKAorICAgICAgICAgICAgaml0LmJyYW5jaDgoCisg
ICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpOb3RFcXVhbCwKKyAgICAgICAgICAgICAgICBD
Q2FsbEhlbHBlcnM6OkFkZHJlc3MoYmFzZUdQUiwgSlNDZWxsOjp0eXBlSW5mb1R5cGVPZmZzZXQo
KSksCisgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoU2NvcGVkQXJn
dW1lbnRzVHlwZSkpKTsKKworICAgICAgICBmYWxsVGhyb3VnaC5hcHBlbmQoCisgICAgICAgICAg
ICBqaXQuYnJhbmNoVGVzdDgoCisgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpOb25aZXJv
LAorICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6QWRkcmVzcyhiYXNlR1BSLCBTY29wZWRB
cmd1bWVudHM6Om9mZnNldE9mT3ZlcnJvZGVUaGluZ3MoKSkpKTsKKyAgICAgICAgaml0LmxvYWQz
MigKKyAgICAgICAgICAgIENDYWxsSGVscGVyczo6QWRkcmVzcyhiYXNlR1BSLCBTY29wZWRBcmd1
bWVudHM6Om9mZnNldE9mVG90YWxMZW5ndGgoKSksCisgICAgICAgICAgICB2YWx1ZVJlZ3MucGF5
bG9hZEdQUigpKTsKKyAgICAgICAgaml0LmJveEludDMyKHZhbHVlUmVncy5wYXlsb2FkR1BSKCks
IHZhbHVlUmVncywgQ0NhbGxIZWxwZXJzOjpEb05vdEhhdmVUYWdSZWdpc3RlcnMpOworICAgICAg
ICBzdGF0ZS5zdWNjZWVkKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgICAgIAogICAg
IGNhc2UgTWVnYW1vcnBoaWNMb2FkOiB7CiAgICAgICAgIFVuaXF1ZWRTdHJpbmdJbXBsKiBrZXkg
PSBpZGVudC5pbXBsKCk7CiAgICAgICAgIHVuc2lnbmVkIGhhc2ggPSBJZGVudGlmaWVyUmVwSGFz
aDo6aGFzaChrZXkpOwpAQCAtMTAzNiw3ICsxMDgxLDcgQEAgdm9pZCBBY2Nlc3NDYXNlOjpnZW5l
cmF0ZShBY2Nlc3NHZW5lcmF0aQogICAgIH0KIAogICAgIGNhc2UgVHJhbnNpdGlvbjogewotICAg
ICAgICAvLyBBY2Nlc3NDYXNlOjp0cmFuc2l0aW9uKCkgc2hvdWxkIGhhdmUgcmV0dXJuZWQgbnVs
bC4KKyAgICAgICAgLy8gQWNjZXNzQ2FzZTo6dHJhbnNpdGlvbigpIHNob3VsZCBoYXZlIHJldHVy
bmVkIG51bGwgaWYgdGhpcyB3YXNuJ3QgdHJ1ZS4KICAgICAgICAgUkVMRUFTRV9BU1NFUlQoR1BS
SW5mbzo6bnVtYmVyT2ZSZWdpc3RlcnMgPj0gNiB8fCAhc3RydWN0dXJlKCktPm91dE9mTGluZUNh
cGFjaXR5KCkgfHwgc3RydWN0dXJlKCktPm91dE9mTGluZUNhcGFjaXR5KCkgPT0gbmV3U3RydWN0
dXJlKCktPm91dE9mTGluZUNhcGFjaXR5KCkpOwogCiAgICAgICAgIGlmIChJbmZlcnJlZFR5cGUq
IHR5cGUgPSBuZXdTdHJ1Y3R1cmUoKS0+aW5mZXJyZWRUeXBlRm9yKGlkZW50LmltcGwoKSkpIHsK
QEAgLTEyNTcsNyArMTMwMiw3IEBAIHZvaWQgQWNjZXNzQ2FzZTo6Z2VuZXJhdGUoQWNjZXNzR2Vu
ZXJhdGkKICAgICAgICAgc3RhdGUuc3VjY2VlZCgpOwogICAgICAgICByZXR1cm47CiAgICAgfQot
CisgICAgICAgIAogICAgIGNhc2UgSW50cmluc2ljR2V0dGVyOiB7CiAgICAgICAgIFJFTEVBU0Vf
QVNTRVJUKGlzVmFsaWRPZmZzZXQob2Zmc2V0KCkpKTsKIApAQCAtMTI3MywxMSArMTMxOCwxMyBA
QCB2b2lkIEFjY2Vzc0Nhc2U6OmdlbmVyYXRlKEFjY2Vzc0dlbmVyYXRpCiAgICAgICAgIGVtaXRJ
bnRyaW5zaWNHZXR0ZXIoc3RhdGUpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIAorCisg
ICAgY2FzZSBEaXJlY3RBcmd1bWVudHNMZW5ndGg6CisgICAgY2FzZSBTY29wZWRBcmd1bWVudHNM
ZW5ndGg6CiAgICAgY2FzZSBNZWdhbW9ycGhpY0xvYWQ6Ci0gICAgICAgIC8vIFRoZXNlIG5lZWQg
dG8gYmUgaGFuZGxlZCBieSBnZW5lcmF0ZVdpdGhHdWFyZCgpLCBzaW5jZSB0aGUgZ3VhcmQgaXMg
cGFydCBvZiB0aGUgbWVnYW1vcnBoaWMgbG9hZAotICAgICAgICAvLyBhbGdvcml0aG0uIFdlIGNh
biBiZSBzdXJlIHRoYXQgbm9ib2R5IHdpbGwgY2FsbCBnZW5lcmF0ZSgpIGRpcmVjdGx5IGZvciBN
ZWdhbW9ycGhpY0xvYWQgc2luY2UKLSAgICAgICAgLy8gTWVnYW1vcnBoaWNMb2FkIGlzIG5vdCBn
dWFyZGVkIGJ5IGEgc3RydWN0dXJlIGNoZWNrLgorICAgICAgICAvLyBUaGVzZSBuZWVkIHRvIGJl
IGhhbmRsZWQgYnkgZ2VuZXJhdGVXaXRoR3VhcmQoKSwgc2luY2UgdGhlIGd1YXJkIGlzIHBhcnQg
b2YgdGhlCisgICAgICAgIC8vIGFsZ29yaXRobS4gV2UgY2FuIGJlIHN1cmUgdGhhdCBub2JvZHkg
d2lsbCBjYWxsIGdlbmVyYXRlKCkgZGlyZWN0bHkgZm9yIHRoZXNlIHNpbmNlIHRoZXkKKyAgICAg
ICAgLy8gYXJlIG5vdCBndWFyZGVkIGJ5IHN0cnVjdHVyZSBjaGVja3MuCiAgICAgICAgIFJFTEVB
U0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfQogICAgIApAQCAtMTY3OSw2ICsxNzI2LDEy
IEBAIHZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYgb3V0LCBBY2MKICAgICBjYXNlIEFj
Y2Vzc0Nhc2U6OlN0cmluZ0xlbmd0aDoKICAgICAgICAgb3V0LnByaW50KCJTdHJpbmdMZW5ndGgi
KTsKICAgICAgICAgcmV0dXJuOworICAgIGNhc2UgQWNjZXNzQ2FzZTo6RGlyZWN0QXJndW1lbnRz
TGVuZ3RoOgorICAgICAgICBvdXQucHJpbnQoIkRpcmVjdEFyZ3VtZW50c0xlbmd0aCIpOworICAg
ICAgICByZXR1cm47CisgICAgY2FzZSBBY2Nlc3NDYXNlOjpTY29wZWRBcmd1bWVudHNMZW5ndGg6
CisgICAgICAgIG91dC5wcmludCgiU2NvcGVkQXJndW1lbnRzTGVuZ3RoIik7CisgICAgICAgIHJl
dHVybjsKICAgICB9CiAKICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1BvbHltb3JwaGljQWNjZXNzLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1BvbHltb3JwaGljQWNjZXNz
LmgJKHJldmlzaW9uIDE5OTIzNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Q
b2x5bW9ycGhpY0FjY2Vzcy5oCSh3b3JraW5nIGNvcHkpCkBAIC02OCw3ICs2OCw5IEBAIHB1Ymxp
YzoKICAgICAgICAgSW5IaXQsCiAgICAgICAgIEluTWlzcywKICAgICAgICAgQXJyYXlMZW5ndGgs
Ci0gICAgICAgIFN0cmluZ0xlbmd0aAorICAgICAgICBTdHJpbmdMZW5ndGgsCisgICAgICAgIERp
cmVjdEFyZ3VtZW50c0xlbmd0aCwKKyAgICAgICAgU2NvcGVkQXJndW1lbnRzTGVuZ3RoCiAgICAg
fTsKIAogICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gdHJ5R2V0KApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9JQ1N0YXRzLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9JQ1N0YXRzLmgJKHJldmlzaW9uIDE5OTIzNCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSUNTdGF0cy5oCSh3b3JraW5nIGNvcHkpCkBAIC00MCw2
ICs0MCwxMSBAQCBuYW1lc3BhY2UgSlNDIHsKIAogI2RlZmluZSBGT1JfRUFDSF9JQ0VWRU5UX0tJ
TkQobWFjcm8pIFwKICAgICBtYWNybyhJbnZhbGlkS2luZCkgXAorICAgIG1hY3JvKEdldEJ5SWRB
ZGRBY2Nlc3NDYXNlKSBcCisgICAgbWFjcm8oR2V0QnlJZFJlcGxhY2VXaXRoSnVtcCkgXAorICAg
IG1hY3JvKEdldEJ5SWRTZWxmUGF0Y2gpIFwKKyAgICBtYWNybyhJbkFkZEFjY2Vzc0Nhc2UpIFwK
KyAgICBtYWNybyhJblJlcGxhY2VXaXRoSnVtcCkgXAogICAgIG1hY3JvKE9wZXJhdGlvbkdldEJ5
SWQpIFwKICAgICBtYWNybyhPcGVyYXRpb25HZXRCeUlkR2VuZXJpYykgXAogICAgIG1hY3JvKE9w
ZXJhdGlvbkdldEJ5SWRCdWlsZExpc3QpIFwKQEAgLTU4LDcgKzYzLDEwIEBAIG5hbWVzcGFjZSBK
U0MgewogICAgIG1hY3JvKE9wZXJhdGlvblB1dEJ5SWRTdHJpY3RCdWlsZExpc3QpIFwKICAgICBt
YWNybyhPcGVyYXRpb25QdXRCeUlkTm9uU3RyaWN0QnVpbGRMaXN0KSBcCiAgICAgbWFjcm8oT3Bl
cmF0aW9uUHV0QnlJZERpcmVjdFN0cmljdEJ1aWxkTGlzdCkgXAotICAgIG1hY3JvKE9wZXJhdGlv
blB1dEJ5SWREaXJlY3ROb25TdHJpY3RCdWlsZExpc3QpCisgICAgbWFjcm8oT3BlcmF0aW9uUHV0
QnlJZERpcmVjdE5vblN0cmljdEJ1aWxkTGlzdCkgXAorICAgIG1hY3JvKFB1dEJ5SWRBZGRBY2Nl
c3NDYXNlKSBcCisgICAgbWFjcm8oUHV0QnlJZFJlcGxhY2VXaXRoSnVtcCkgXAorICAgIG1hY3Jv
KFB1dEJ5SWRTZWxmUGF0Y2gpCiAKIGNsYXNzIElDRXZlbnQgewogcHVibGljOgpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCShyZXZpc2lvbiAxOTky
MzQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xODgsNiArMTg4LDggQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElP
TiBvcGVyYXRpb25UcgogCiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkdl
dEJ5SWQoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIEVuY29k
ZWRKU1ZhbHVlIGJhc2UsIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQpCiB7CisgICAgU3VwZXJTYW1w
bGVyU2NvcGUgc3VwZXJTYW1wbGVyU2NvcGUoZmFsc2UpOworICAgIAogICAgIFZNKiB2bSA9ICZl
eGVjLT52bSgpOwogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGV4ZWMpOwog
ICAgIApAQCAtMjAzLDYgKzIwNSw4IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uR2UKIAogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25HZXRCeUlk
R2VuZXJpYyhFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVlIGJhc2UsIFVuaXF1ZWRTdHJp
bmdJbXBsKiB1aWQpCiB7CisgICAgU3VwZXJTYW1wbGVyU2NvcGUgc3VwZXJTYW1wbGVyU2NvcGUo
ZmFsc2UpOworICAgIAogICAgIFZNKiB2bSA9ICZleGVjLT52bSgpOwogICAgIE5hdGl2ZUNhbGxG
cmFtZVRyYWNlciB0cmFjZXIodm0sIGV4ZWMpOwogICAgIApAQCAtMjE1LDYgKzIxOSw4IEBAIEVu
Y29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uR2UKIAogRW5jb2RlZEpTVmFsdWUg
SklUX09QRVJBVElPTiBvcGVyYXRpb25HZXRCeUlkT3B0aW1pemUoRXhlY1N0YXRlKiBleGVjLCBT
dHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIEVuY29kZWRKU1ZhbHVlIGJhc2UsIFVuaXF1ZWRT
dHJpbmdJbXBsKiB1aWQpCiB7CisgICAgU3VwZXJTYW1wbGVyU2NvcGUgc3VwZXJTYW1wbGVyU2Nv
cGUoZmFsc2UpOworICAgIAogICAgIFZNKiB2bSA9ICZleGVjLT52bSgpOwogICAgIE5hdGl2ZUNh
bGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGV4ZWMpOwogICAgIElkZW50aWZpZXIgaWRlbnQgPSBJ
ZGVudGlmaWVyOjpmcm9tVWlkKHZtLCB1aWQpOwpAQCAtMjMyLDYgKzIzOCw4IEBAIEVuY29kZWRK
U1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uR2UKIAogRW5jb2RlZEpTVmFsdWUgSklUX09Q
RVJBVElPTiBvcGVyYXRpb25Jbk9wdGltaXplKEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlU3R1
YkluZm8qIHN0dWJJbmZvLCBKU0NlbGwqIGJhc2UsIFVuaXF1ZWRTdHJpbmdJbXBsKiBrZXkpCiB7
CisgICAgU3VwZXJTYW1wbGVyU2NvcGUgc3VwZXJTYW1wbGVyU2NvcGUoZmFsc2UpOworICAgIAog
ICAgIFZNKiB2bSA9ICZleGVjLT52bSgpOwogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFj
ZXIodm0sIGV4ZWMpOwogICAgIApAQCAtMjU3LDYgKzI2NSw4IEBAIEVuY29kZWRKU1ZhbHVlIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uSW4KIAogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBv
cGVyYXRpb25JbihFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywg
SlNDZWxsKiBiYXNlLCBVbmlxdWVkU3RyaW5nSW1wbCoga2V5KQogeworICAgIFN1cGVyU2FtcGxl
clNjb3BlIHN1cGVyU2FtcGxlclNjb3BlKGZhbHNlKTsKKyAgICAKICAgICBWTSogdm0gPSAmZXhl
Yy0+dm0oKTsKICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBleGVjKTsKICAg
ICAKQEAgLTI3NCw2ICsyODQsOCBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvbkluCiAKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uR2VuZXJpY0lu
KEV4ZWNTdGF0ZSogZXhlYywgSlNDZWxsKiBiYXNlLCBFbmNvZGVkSlNWYWx1ZSBrZXkpCiB7Cisg
ICAgU3VwZXJTYW1wbGVyU2NvcGUgc3VwZXJTYW1wbGVyU2NvcGUoZmFsc2UpOworICAgIAogICAg
IFZNKiB2bSA9ICZleGVjLT52bSgpOwogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIo
dm0sIGV4ZWMpOwogCkBAIC0yODIsNiArMjk0LDggQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJB
VElPTiBvcGVyYXRpb25HZQogCiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZFN0
cmljdChFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgRW5jb2Rl
ZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgVW5pcXVl
ZFN0cmluZ0ltcGwqIHVpZCkKIHsKKyAgICBTdXBlclNhbXBsZXJTY29wZSBzdXBlclNhbXBsZXJT
Y29wZShmYWxzZSk7CisgICAgCiAgICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7CiAgICAgTmF0aXZl
Q2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgZXhlYyk7CiAgICAgCkBAIC0yOTcsNiArMzExLDgg
QEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWRTdHJpYwogCiB2b2lkIEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZE5vblN0cmljdChFeGVjU3RhdGUqIGV4ZWMsIFN0cnVj
dHVyZVN0dWJJbmZvKiBzdHViSW5mbywgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBFbmNv
ZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCkKIHsKKyAgICBT
dXBlclNhbXBsZXJTY29wZSBzdXBlclNhbXBsZXJTY29wZShmYWxzZSk7CisgICAgCiAgICAgVk0q
IHZtID0gJmV4ZWMtPnZtKCk7CiAgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwg
ZXhlYyk7CiAgICAgCkBAIC0zMTEsNiArMzI3LDggQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvblB1dEJ5SWROb25TdAogCiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZERp
cmVjdFN0cmljdChFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywg
RW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwg
VW5pcXVlZFN0cmluZ0ltcGwqIHVpZCkKIHsKKyAgICBTdXBlclNhbXBsZXJTY29wZSBzdXBlclNh
bXBsZXJTY29wZShmYWxzZSk7CisgICAgCiAgICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7CiAgICAg
TmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgZXhlYyk7CiAgICAgCkBAIC0zMjUsNiAr
MzQzLDggQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWREaXJlYwogCiB2b2lk
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZERpcmVjdE5vblN0cmljdChFeGVjU3RhdGUq
IGV4ZWMsIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZFZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgVW5pcXVlZFN0cmluZ0ltcGwqIHVp
ZCkKIHsKKyAgICBTdXBlclNhbXBsZXJTY29wZSBzdXBlclNhbXBsZXJTY29wZShmYWxzZSk7Cisg
ICAgCiAgICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7CiAgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2Vy
IHRyYWNlcih2bSwgZXhlYyk7CiAgICAgCkBAIC0zMzksNiArMzU5LDggQEAgdm9pZCBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvblB1dEJ5SWREaXJlYwogCiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uUHV0QnlJZFN0cmljdE9wdGltaXplKEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlU3R1Yklu
Zm8qIHN0dWJJbmZvLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEVuY29kZWRKU1ZhbHVl
IGVuY29kZWRCYXNlLCBVbmlxdWVkU3RyaW5nSW1wbCogdWlkKQogeworICAgIFN1cGVyU2FtcGxl
clNjb3BlIHN1cGVyU2FtcGxlclNjb3BlKGZhbHNlKTsKKyAgICAKICAgICBWTSogdm0gPSAmZXhl
Yy0+dm0oKTsKICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBleGVjKTsKICAg
ICAKQEAgLTM2Miw2ICszODQsOCBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJ
ZFN0cmljCiAKIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkTm9uU3RyaWN0T3B0
aW1pemUoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIEVuY29k
ZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIFVuaXF1
ZWRTdHJpbmdJbXBsKiB1aWQpCiB7CisgICAgU3VwZXJTYW1wbGVyU2NvcGUgc3VwZXJTYW1wbGVy
U2NvcGUoZmFsc2UpOworICAgIAogICAgIFZNKiB2bSA9ICZleGVjLT52bSgpOwogICAgIE5hdGl2
ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGV4ZWMpOwogICAgIApAQCAtMzg1LDYgKzQwOSw4
IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkTm9uU3QKIAogdm9pZCBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWREaXJlY3RTdHJpY3RPcHRpbWl6ZShFeGVjU3RhdGUq
IGV4ZWMsIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZFZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgVW5pcXVlZFN0cmluZ0ltcGwqIHVp
ZCkKIHsKKyAgICBTdXBlclNhbXBsZXJTY29wZSBzdXBlclNhbXBsZXJTY29wZShmYWxzZSk7Cisg
ICAgCiAgICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7CiAgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2Vy
IHRyYWNlcih2bSwgZXhlYyk7CiAgICAgCkBAIC00MDgsNiArNDM0LDggQEAgdm9pZCBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvblB1dEJ5SWREaXJlYwogCiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uUHV0QnlJZERpcmVjdE5vblN0cmljdE9wdGltaXplKEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0
dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEVuY29k
ZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBVbmlxdWVkU3RyaW5nSW1wbCogdWlkKQogeworICAgIFN1
cGVyU2FtcGxlclNjb3BlIHN1cGVyU2FtcGxlclNjb3BlKGZhbHNlKTsKKyAgICAKICAgICBWTSog
dm0gPSAmZXhlYy0+dm0oKTsKICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBl
eGVjKTsKICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcAkocmV2
aXNpb24gMTk5MjM0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzMsMTQgKzMzLDE3IEBACiAjaW5jbHVkZSAiQ2FsbEZyYW1lU2h1
ZmZsZXIuaCIKICNpbmNsdWRlICJERkdPcGVyYXRpb25zLmgiCiAjaW5jbHVkZSAiREZHU3BlY3Vs
YXRpdmVKSVQuaCIKKyNpbmNsdWRlICJEaXJlY3RBcmd1bWVudHMuaCIKICNpbmNsdWRlICJGVExU
aHVua3MuaCIKICNpbmNsdWRlICJHQ0F3YXJlSklUU3R1YlJvdXRpbmUuaCIKICNpbmNsdWRlICJH
ZXR0ZXJTZXR0ZXIuaCIKKyNpbmNsdWRlICJJQ1N0YXRzLmgiCiAjaW5jbHVkZSAiSklULmgiCiAj
aW5jbHVkZSAiSklUSW5saW5lcy5oIgogI2luY2x1ZGUgIkxpbmtCdWZmZXIuaCIKICNpbmNsdWRl
ICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiUG9seW1vcnBoaWNBY2Nlc3MuaCIKKyNpbmNsdWRl
ICJTY29wZWRBcmd1bWVudHMuaCIKICNpbmNsdWRlICJTY3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3Iu
aCIKICNpbmNsdWRlICJTdGFja0FsaWdubWVudC5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZVJhcmVE
YXRhSW5saW5lcy5oIgpAQCAtMjQxLDExICsyNDQsMjQgQEAgc3RhdGljIElubGluZUNhY2hlQWN0
aW9uIHRyeUNhY2hlR2V0QnlJRAogCiAgICAgc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IG5l
d0Nhc2U7CiAKLSAgICBpZiAoaXNKU0FycmF5KGJhc2VWYWx1ZSkgJiYgcHJvcGVydHlOYW1lID09
IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5ndGgpCi0gICAgICAgIG5ld0Nhc2UgPSBBY2Nlc3ND
YXNlOjpnZXRMZW5ndGgodm0sIGNvZGVCbG9jaywgQWNjZXNzQ2FzZTo6QXJyYXlMZW5ndGgpOwot
ICAgIGVsc2UgaWYgKGlzSlNTdHJpbmcoYmFzZVZhbHVlKSAmJiBwcm9wZXJ0eU5hbWUgPT0gZXhl
Yy0+cHJvcGVydHlOYW1lcygpLmxlbmd0aCkKLSAgICAgICAgbmV3Q2FzZSA9IEFjY2Vzc0Nhc2U6
OmdldExlbmd0aCh2bSwgY29kZUJsb2NrLCBBY2Nlc3NDYXNlOjpTdHJpbmdMZW5ndGgpOwotICAg
IGVsc2UgeworICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3Ro
KSB7CisgICAgICAgIGlmIChpc0pTQXJyYXkoYmFzZVZhbHVlKSkKKyAgICAgICAgICAgIG5ld0Nh
c2UgPSBBY2Nlc3NDYXNlOjpnZXRMZW5ndGgodm0sIGNvZGVCbG9jaywgQWNjZXNzQ2FzZTo6QXJy
YXlMZW5ndGgpOworICAgICAgICBlbHNlIGlmIChpc0pTU3RyaW5nKGJhc2VWYWx1ZSkpCisgICAg
ICAgICAgICBuZXdDYXNlID0gQWNjZXNzQ2FzZTo6Z2V0TGVuZ3RoKHZtLCBjb2RlQmxvY2ssIEFj
Y2Vzc0Nhc2U6OlN0cmluZ0xlbmd0aCk7CisgICAgICAgIGVsc2UgaWYgKERpcmVjdEFyZ3VtZW50
cyogYXJndW1lbnRzID0ganNEeW5hbWljQ2FzdDxEaXJlY3RBcmd1bWVudHMqPihiYXNlVmFsdWUp
KSB7CisgICAgICAgICAgICAvLyBJZiB0aGVyZSB3ZXJlIG92ZXJyaWRlcywgdGhlbiB3ZSBjYW4g
aGFuZGxlIHRoaXMgYXMgYSBub3JtYWwgcHJvcGVydHkgbG9hZCEgR3VhcmRpbmcKKyAgICAgICAg
ICAgIC8vIHRoaXMgd2l0aCBzdWNoIGEgY2hlY2sgZW5hYmxlcyB1cyB0byBhZGQgYW4gSUMgY2Fz
ZSBmb3IgdGhhdCBsb2FkIGlmIG5lZWRlZC4KKyAgICAgICAgICAgIGlmICghYXJndW1lbnRzLT5v
dmVycm9kZVRoaW5ncygpKQorICAgICAgICAgICAgICAgIG5ld0Nhc2UgPSBBY2Nlc3NDYXNlOjpn
ZXRMZW5ndGgodm0sIGNvZGVCbG9jaywgQWNjZXNzQ2FzZTo6RGlyZWN0QXJndW1lbnRzTGVuZ3Ro
KTsKKyAgICAgICAgfSBlbHNlIGlmIChTY29wZWRBcmd1bWVudHMqIGFyZ3VtZW50cyA9IGpzRHlu
YW1pY0Nhc3Q8U2NvcGVkQXJndW1lbnRzKj4oYmFzZVZhbHVlKSkgeworICAgICAgICAgICAgLy8g
RGl0dG8uCisgICAgICAgICAgICBpZiAoIWFyZ3VtZW50cy0+b3ZlcnJvZGVUaGluZ3MoKSkKKyAg
ICAgICAgICAgICAgICBuZXdDYXNlID0gQWNjZXNzQ2FzZTo6Z2V0TGVuZ3RoKHZtLCBjb2RlQmxv
Y2ssIEFjY2Vzc0Nhc2U6OlNjb3BlZEFyZ3VtZW50c0xlbmd0aCk7CisgICAgICAgIH0KKyAgICB9
CisgICAgCisgICAgaWYgKCFuZXdDYXNlKSB7CiAgICAgICAgIGlmICghc2xvdC5pc0NhY2hlYWJs
ZSgpICYmICFzbG90LmlzVW5zZXQoKSkKICAgICAgICAgICAgIHJldHVybiBHaXZlVXBPbkNhY2hl
OwogCkBAIC0yNzUsNiArMjkxLDcgQEAgc3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hl
R2V0QnlJRAogICAgICAgICAgICAgJiYgYWN0aW9uID09IEF0dGVtcHRUb0NhY2hlCiAgICAgICAg
ICAgICAmJiAhc3RydWN0dXJlLT5uZWVkSW1wdXJlUHJvcGVydHlXYXRjaHBvaW50KCkKICAgICAg
ICAgICAgICYmICFsb2FkVGFyZ2V0RnJvbVByb3h5KSB7CisgICAgICAgICAgICBMT0dfSUMoKElD
RXZlbnQ6OkdldEJ5SWRTZWxmUGF0Y2gsIHN0cnVjdHVyZS0+Y2xhc3NJbmZvKCksIHByb3BlcnR5
TmFtZSkpOwogICAgICAgICAgICAgc3RydWN0dXJlLT5zdGFydFdhdGNoaW5nUHJvcGVydHlGb3JS
ZXBsYWNlbWVudHModm0sIHNsb3QuY2FjaGVkT2Zmc2V0KCkpOwogICAgICAgICAgICAgcmVwYXRj
aEJ5SWRTZWxmQWNjZXNzKGNvZGVCbG9jaywgc3R1YkluZm8sIHN0cnVjdHVyZSwgc2xvdC5jYWNo
ZWRPZmZzZXQoKSwgYXBwcm9wcmlhdGVPcHRpbWl6aW5nR2V0QnlJZEZ1bmN0aW9uKGtpbmQpLCB0
cnVlKTsKICAgICAgICAgICAgIHN0dWJJbmZvLmluaXRHZXRCeUlkU2VsZihjb2RlQmxvY2ssIHN0
cnVjdHVyZSwgc2xvdC5jYWNoZWRPZmZzZXQoKSk7CkBAIC0zNDMsNiArMzYwLDggQEAgc3RhdGlj
IElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hlR2V0QnlJRAogICAgICAgICB9CiAgICAgfQogCisg
ICAgTE9HX0lDKChJQ0V2ZW50OjpHZXRCeUlkQWRkQWNjZXNzQ2FzZSwgYmFzZVZhbHVlLmNsYXNz
SW5mb09yTnVsbCgpLCBwcm9wZXJ0eU5hbWUpKTsKKwogICAgIEFjY2Vzc0dlbmVyYXRpb25SZXN1
bHQgcmVzdWx0ID0gc3R1YkluZm8uYWRkQWNjZXNzQ2FzZShjb2RlQmxvY2ssIHByb3BlcnR5TmFt
ZSwgV1RGTW92ZShuZXdDYXNlKSk7CiAKICAgICBpZiAocmVzdWx0LmdhdmVVcCgpKQpAQCAtMzUw
LDYgKzM2OSw4IEBAIHN0YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNoZUdldEJ5SUQKICAg
ICBpZiAocmVzdWx0Lm1hZGVOb0NoYW5nZXMoKSkKICAgICAgICAgcmV0dXJuIFJldHJ5Q2FjaGVM
YXRlcjsKICAgICAKKyAgICBMT0dfSUMoKElDRXZlbnQ6OkdldEJ5SWRSZXBsYWNlV2l0aEp1bXAs
IGJhc2VWYWx1ZS5jbGFzc0luZm9Pck51bGwoKSwgcHJvcGVydHlOYW1lKSk7CisKICAgICBSRUxF
QVNFX0FTU0VSVChyZXN1bHQuY29kZSgpKTsKICAgICByZXBsYWNlV2l0aEp1bXAoc3R1YkluZm8s
IHJlc3VsdC5jb2RlKCkpOwogICAgIApAQCAtNDE2LDcgKzQzNyw5IEBAIHN0YXRpYyBJbmxpbmVD
YWNoZUFjdGlvbiB0cnlDYWNoZVB1dEJ5SUQKICAgICAgICAgICAgICAgICAmJiBNYWNyb0Fzc2Vt
Ymxlcjo6aXNQdHJBbGlnbmVkQWRkcmVzc09mZnNldChtYXhPZmZzZXRSZWxhdGl2ZVRvQmFzZShz
bG90LmNhY2hlZE9mZnNldCgpKSkKICAgICAgICAgICAgICAgICAmJiAhc3RydWN0dXJlLT5uZWVk
SW1wdXJlUHJvcGVydHlXYXRjaHBvaW50KCkKICAgICAgICAgICAgICAgICAmJiAhc3RydWN0dXJl
LT5pbmZlcnJlZFR5cGVGb3IoaWRlbnQuaW1wbCgpKSkgewotCisgICAgICAgICAgICAgICAgCisg
ICAgICAgICAgICAgICAgTE9HX0lDKChJQ0V2ZW50OjpQdXRCeUlkU2VsZlBhdGNoLCBzdHJ1Y3R1
cmUtPmNsYXNzSW5mbygpLCBpZGVudCkpOworICAgICAgICAgICAgICAgIAogICAgICAgICAgICAg
ICAgIHJlcGF0Y2hCeUlkU2VsZkFjY2VzcygKICAgICAgICAgICAgICAgICAgICAgY29kZUJsb2Nr
LCBzdHViSW5mbywgc3RydWN0dXJlLCBzbG90LmNhY2hlZE9mZnNldCgpLAogICAgICAgICAgICAg
ICAgICAgICBhcHByb3ByaWF0ZU9wdGltaXppbmdQdXRCeUlkRnVuY3Rpb24oc2xvdCwgcHV0S2lu
ZCksIGZhbHNlKTsKQEAgLTQ4Nyw2ICs1MTAsOCBAQCBzdGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24g
dHJ5Q2FjaGVQdXRCeUlECiAgICAgICAgIH0KICAgICB9CiAKKyAgICBMT0dfSUMoKElDRXZlbnQ6
OlB1dEJ5SWRBZGRBY2Nlc3NDYXNlLCBzdHJ1Y3R1cmUtPmNsYXNzSW5mbygpLCBpZGVudCkpOwor
ICAgIAogICAgIEFjY2Vzc0dlbmVyYXRpb25SZXN1bHQgcmVzdWx0ID0gc3R1YkluZm8uYWRkQWNj
ZXNzQ2FzZShjb2RlQmxvY2ssIGlkZW50LCBXVEZNb3ZlKG5ld0Nhc2UpKTsKICAgICAKICAgICBp
ZiAocmVzdWx0LmdhdmVVcCgpKQpAQCAtNDk0LDYgKzUxOSw4IEBAIHN0YXRpYyBJbmxpbmVDYWNo
ZUFjdGlvbiB0cnlDYWNoZVB1dEJ5SUQKICAgICBpZiAocmVzdWx0Lm1hZGVOb0NoYW5nZXMoKSkK
ICAgICAgICAgcmV0dXJuIFJldHJ5Q2FjaGVMYXRlcjsKIAorICAgIExPR19JQygoSUNFdmVudDo6
UHV0QnlJZFJlcGxhY2VXaXRoSnVtcCwgc3RydWN0dXJlLT5jbGFzc0luZm8oKSwgaWRlbnQpKTsK
KwogICAgIFJFTEVBU0VfQVNTRVJUKHJlc3VsdC5jb2RlKCkpOwogICAgIHJlc2V0UHV0QnlJRENo
ZWNrQW5kTG9hZChzdHViSW5mbyk7CiAgICAgTWFjcm9Bc3NlbWJsZXI6OnJlcGF0Y2hKdW1wKApA
QCAtNTQ0LDYgKzU3MSw4IEBAIHN0YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlSZXBhdGNoSW4o
CiAgICAgaWYgKCFjb25kaXRpb25TZXQuaXNWYWxpZCgpKQogICAgICAgICByZXR1cm4gR2l2ZVVw
T25DYWNoZTsKIAorICAgIExPR19JQygoSUNFdmVudDo6SW5BZGRBY2Nlc3NDYXNlLCBzdHJ1Y3R1
cmUtPmNsYXNzSW5mbygpLCBpZGVudCkpOworCiAgICAgc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nh
c2U+IG5ld0Nhc2UgPSBBY2Nlc3NDYXNlOjppbigKICAgICAgICAgdm0sIGNvZGVCbG9jaywgd2Fz
Rm91bmQgPyBBY2Nlc3NDYXNlOjpJbkhpdCA6IEFjY2Vzc0Nhc2U6OkluTWlzcywgc3RydWN0dXJl
LCBjb25kaXRpb25TZXQpOwogCkBAIC01NTMsNiArNTgyLDggQEAgc3RhdGljIElubGluZUNhY2hl
QWN0aW9uIHRyeVJlcGF0Y2hJbigKICAgICBpZiAocmVzdWx0Lm1hZGVOb0NoYW5nZXMoKSkKICAg
ICAgICAgcmV0dXJuIFJldHJ5Q2FjaGVMYXRlcjsKIAorICAgIExPR19JQygoSUNFdmVudDo6SW5S
ZXBsYWNlV2l0aEp1bXAsIHN0cnVjdHVyZS0+Y2xhc3NJbmZvKCksIGlkZW50KSk7CisKICAgICBS
RUxFQVNFX0FTU0VSVChyZXN1bHQuY29kZSgpKTsKICAgICBNYWNyb0Fzc2VtYmxlcjo6cmVwYXRj
aEp1bXAoCiAgICAgICAgIHN0dWJJbmZvLmNhbGxSZXR1cm5Mb2NhdGlvbi5qdW1wQXRPZmZzZXQo
c3R1YkluZm8ucGF0Y2guZGVsdGFDYWxsVG9KdW1wKSwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS90ZXN0cy9zdHJlc3MvZGlyZWN0LWFyZ3VtZW50cy1vdmVycmlkZS1sZW5ndGgtdGhlbi1h
Y2Nlc3Mtbm9ybWFsLWxlbmd0aC5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvdGVzdHMvc3RyZXNzL2RpcmVjdC1hcmd1bWVudHMtb3ZlcnJpZGUtbGVuZ3RoLXRoZW4tYWNj
ZXNzLW5vcm1hbC1sZW5ndGguanMJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvdGVzdHMvc3RyZXNzL2RpcmVjdC1hcmd1bWVudHMtb3ZlcnJpZGUtbGVuZ3RoLXRoZW4tYWNj
ZXNzLW5vcm1hbC1sZW5ndGguanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwyNSBAQAorKGZ1
bmN0aW9uKCkgeworICAgIHZhciBhcmdzID0gKGZ1bmN0aW9uKCkgeworICAgICAgICB2YXIgcmVz
dWx0ID0gYXJndW1lbnRzOworICAgICAgICByZXN1bHQubGVuZ3RoID0gNjsKKyAgICAgICAgcmV0
dXJuIHJlc3VsdDsKKyAgICB9KSgxLCAyLCAzLCA0LCA1KTsKKyAgICAKKyAgICB2YXIgYXJyYXkg
PSBbYXJncywgWzEsIDIsIDNdXTsKKyAgICAKKyAgICBmdW5jdGlvbiBmb28odGhpbmcpIHsKKyAg
ICAgICAgcmV0dXJuIHRoaW5nLmxlbmd0aDsKKyAgICB9CisgICAgbm9JbmxpbmUoZm9vKTsKKyAg
ICAKKyAgICB2YXIgcmVzdWx0ID0gMDsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDEwMDAwOyAr
K2kpCisgICAgICAgIHJlc3VsdCArPSBmb28oYXJyYXlbaSAlIGFycmF5Lmxlbmd0aF0pOworICAg
IAorICAgIGlmIChyZXN1bHQgIT0gNDUwMDApCisgICAgICAgIHRocm93ICJFcnJvcjogYmFkIHJl
c3VsdDogIiArIHJlc3VsdDsKKyAgICAKKyAgICB2YXIgcmVzdWx0ID0gZm9vKChmdW5jdGlvbigp
IHsgcmV0dXJuIGFyZ3VtZW50czsgfSkoMSwgMiwgMywgNCkpOworICAgIGlmIChyZXN1bHQgIT0g
NCkKKyAgICAgICAgdGhyb3cgIkVycm9yOiBiYWQgcmVzdWx0OiAiICsgcmVzdWx0OworfSkoKTsK
SW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDE5OTIzNCkKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29y
a2luZyBjb3B5KQpAQCAtMSwzICsxLDM3IEBACisyMDE2LTA0LTA4ICBGaWxpcCBQaXpsbyAgPGZw
aXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIElDIHN1cHBvcnQgZm9yIGFyZ3VtZW50cy5s
ZW5ndGgKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1
NjM4OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
anMvcmVncmVzcy9kaXJlY3QtYXJndW1lbnRzLWxlbmd0aC1leHBlY3RlZC50eHQ6IEFkZGVkLgor
ICAgICAgICAqIGpzL3JlZ3Jlc3MvZGlyZWN0LWFyZ3VtZW50cy1sZW5ndGguaHRtbDogQWRkZWQu
CisgICAgICAgICoganMvcmVncmVzcy9kaXJlY3QtYXJndW1lbnRzLW92ZXJyaWRkZW4tbGVuZ3Ro
LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICoganMvcmVncmVzcy9kaXJlY3QtYXJndW1l
bnRzLW92ZXJyaWRkZW4tbGVuZ3RoLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGpzL3JlZ3Jlc3Mv
ZGlyZWN0LWFyZ3VtZW50cy1wb3NzaWJseS1vdmVycmlkZGVuLWxlbmd0aC1leHBlY3RlZC50eHQ6
IEFkZGVkLgorICAgICAgICAqIGpzL3JlZ3Jlc3MvZGlyZWN0LWFyZ3VtZW50cy1wb3NzaWJseS1v
dmVycmlkZGVuLWxlbmd0aC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBqcy9yZWdyZXNzL3Njb3Bl
ZC1hcmd1bWVudHMtbGVuZ3RoLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICoganMvcmVn
cmVzcy9zY29wZWQtYXJndW1lbnRzLWxlbmd0aC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBqcy9y
ZWdyZXNzL3Njb3BlZC1hcmd1bWVudHMtb3ZlcnJpZGRlbi1sZW5ndGgtZXhwZWN0ZWQudHh0OiBB
ZGRlZC4KKyAgICAgICAgKiBqcy9yZWdyZXNzL3Njb3BlZC1hcmd1bWVudHMtb3ZlcnJpZGRlbi1s
ZW5ndGguaHRtbDogQWRkZWQuCisgICAgICAgICoganMvcmVncmVzcy9zY29wZWQtYXJndW1lbnRz
LXBvc3NpYmx5LW92ZXJyaWRkZW4tbGVuZ3RoLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAg
ICoganMvcmVncmVzcy9zY29wZWQtYXJndW1lbnRzLXBvc3NpYmx5LW92ZXJyaWRkZW4tbGVuZ3Ro
Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGpzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL2RpcmVjdC1h
cmd1bWVudHMtbGVuZ3RoLmpzOiBBZGRlZC4KKyAgICAgICAgKGFyZ3MpOgorICAgICAgICAqIGpz
L3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL2RpcmVjdC1hcmd1bWVudHMtb3ZlcnJpZGRlbi1sZW5ndGgu
anM6IEFkZGVkLgorICAgICAgICAoYXJncyk6CisgICAgICAgICoganMvcmVncmVzcy9zY3JpcHQt
dGVzdHMvZGlyZWN0LWFyZ3VtZW50cy1wb3NzaWJseS1vdmVycmlkZGVuLWxlbmd0aC5qczogQWRk
ZWQuCisgICAgICAgIChhcmdzMSk6CisgICAgICAgIChhcmdzMik6CisgICAgICAgICoganMvcmVn
cmVzcy9zY3JpcHQtdGVzdHMvc2NvcGVkLWFyZ3VtZW50cy1sZW5ndGguanM6IEFkZGVkLgorICAg
ICAgICAoYXJncyk6CisgICAgICAgICoganMvcmVncmVzcy9zY3JpcHQtdGVzdHMvc2NvcGVkLWFy
Z3VtZW50cy1vdmVycmlkZGVuLWxlbmd0aC5qczogQWRkZWQuCisgICAgICAgIChhcmdzKToKKyAg
ICAgICAgKiBqcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9zY29wZWQtYXJndW1lbnRzLXBvc3NpYmx5
LW92ZXJyaWRkZW4tbGVuZ3RoLmpzOiBBZGRlZC4KKyAgICAgICAgKGFyZ3MxKToKKyAgICAgICAg
KGFyZ3MyKToKKwogMjAxNi0wNC0wOCAgSm9hbm1hcmllIERpZ2dzICA8amRpZ2dzQGlnYWxpYS5j
b20+CiAKICAgICAgICAgQVg6IFtBVEtdIENyYXNoIGdldHRpbmcgdGV4dCB1bmRlciBlbGVtZW50
IGluIENTUyB0YWJsZQpJbmRleDogTGF5b3V0VGVzdHMvanMvcmVncmVzcy9kaXJlY3QtYXJndW1l
bnRzLWxlbmd0aC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvanMvcmVn
cmVzcy9kaXJlY3QtYXJndW1lbnRzLWxlbmd0aC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisr
KyBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL2RpcmVjdC1hcmd1bWVudHMtbGVuZ3RoLWV4cGVjdGVk
LnR4dAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEwIEBACitKU1JlZ3Jlc3MvZGlyZWN0LWFy
Z3VtZW50cy1sZW5ndGgKKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQ
QVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1Mgbm8g
ZXhjZXB0aW9uIHRocm93bgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNU
IENPTVBMRVRFCisKSW5kZXg6IExheW91dFRlc3RzL2pzL3JlZ3Jlc3MvZGlyZWN0LWFyZ3VtZW50
cy1sZW5ndGguaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL2RpcmVj
dC1hcmd1bWVudHMtbGVuZ3RoLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9qcy9y
ZWdyZXNzL2RpcmVjdC1hcmd1bWVudHMtbGVuZ3RoLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAs
MCArMSwxMiBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4i
PgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1w
cmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVz
b3VyY2VzL3JlZ3Jlc3MtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJzY3JpcHQtdGVz
dHMvZGlyZWN0LWFyZ3VtZW50cy1sZW5ndGguanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4u
Ly4uL3Jlc291cmNlcy9yZWdyZXNzLXBvc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4u
Ly4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1s
PgpJbmRleDogTGF5b3V0VGVzdHMvanMvcmVncmVzcy9kaXJlY3QtYXJndW1lbnRzLW92ZXJyaWRk
ZW4tbGVuZ3RoLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9qcy9yZWdy
ZXNzL2RpcmVjdC1hcmd1bWVudHMtb3ZlcnJpZGRlbi1sZW5ndGgtZXhwZWN0ZWQudHh0CShyZXZp
c2lvbiAwKQorKysgTGF5b3V0VGVzdHMvanMvcmVncmVzcy9kaXJlY3QtYXJndW1lbnRzLW92ZXJy
aWRkZW4tbGVuZ3RoLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEwIEBA
CitKU1JlZ3Jlc3MvZGlyZWN0LWFyZ3VtZW50cy1vdmVycmlkZGVuLWxlbmd0aAorCitPbiBzdWNj
ZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBi
eSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBubyBleGNlcHRpb24gdGhyb3duCitQQVNTIHN1
Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpJbmRleDogTGF5b3V0
VGVzdHMvanMvcmVncmVzcy9kaXJlY3QtYXJndW1lbnRzLW92ZXJyaWRkZW4tbGVuZ3RoLmh0bWwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvanMvcmVncmVzcy9kaXJlY3QtYXJndW1lbnRzLW92
ZXJyaWRkZW4tbGVuZ3RoLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9qcy9yZWdy
ZXNzL2RpcmVjdC1hcmd1bWVudHMtb3ZlcnJpZGRlbi1sZW5ndGguaHRtbAkod29ya2luZyBjb3B5
KQpAQCAtMCwwICsxLDEyIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBI
VE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9q
cy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSIu
Li8uLi9yZXNvdXJjZXMvcmVncmVzcy1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InNj
cmlwdC10ZXN0cy9kaXJlY3QtYXJndW1lbnRzLW92ZXJyaWRkZW4tbGVuZ3RoLmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvcmVncmVzcy1wb3N0LmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3Njcmlw
dD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2pzL3JlZ3Jlc3MvZGlyZWN0
LWFyZ3VtZW50cy1wb3NzaWJseS1vdmVycmlkZGVuLWxlbmd0aC1leHBlY3RlZC50eHQKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvanMvcmVncmVzcy9kaXJlY3QtYXJndW1lbnRzLXBvc3NpYmx5
LW92ZXJyaWRkZW4tbGVuZ3RoLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRl
c3RzL2pzL3JlZ3Jlc3MvZGlyZWN0LWFyZ3VtZW50cy1wb3NzaWJseS1vdmVycmlkZGVuLWxlbmd0
aC1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMCBAQAorSlNSZWdyZXNz
L2RpcmVjdC1hcmd1bWVudHMtcG9zc2libHktb3ZlcnJpZGRlbi1sZW5ndGgKKworT24gc3VjY2Vz
cywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkg
IlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1Mgbm8gZXhjZXB0aW9uIHRocm93bgorUEFTUyBzdWNj
ZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKSW5kZXg6IExheW91dFRl
c3RzL2pzL3JlZ3Jlc3MvZGlyZWN0LWFyZ3VtZW50cy1wb3NzaWJseS1vdmVycmlkZGVuLWxlbmd0
aC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2pzL3JlZ3Jlc3MvZGlyZWN0LWFyZ3Vt
ZW50cy1wb3NzaWJseS1vdmVycmlkZGVuLWxlbmd0aC5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5
b3V0VGVzdHMvanMvcmVncmVzcy9kaXJlY3QtYXJndW1lbnRzLXBvc3NpYmx5LW92ZXJyaWRkZW4t
bGVuZ3RoLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMiBAQAorPCFET0NUWVBFIEhU
TUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFk
PgorPGJvZHk+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3JlZ3Jlc3MtcHJlLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJzY3JpcHQtdGVzdHMvZGlyZWN0LWFyZ3VtZW50cy1wb3Nz
aWJseS1vdmVycmlkZGVuLWxlbmd0aC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
cmVzb3VyY2VzL3JlZ3Jlc3MtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
cmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+Cklu
ZGV4OiBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3Njb3BlZC1hcmd1bWVudHMtbGVuZ3RoLWV4cGVj
dGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3Njb3BlZC1hcmd1
bWVudHMtbGVuZ3RoLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2pz
L3JlZ3Jlc3Mvc2NvcGVkLWFyZ3VtZW50cy1sZW5ndGgtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNv
cHkpCkBAIC0wLDAgKzEsMTAgQEAKK0pTUmVncmVzcy9zY29wZWQtYXJndW1lbnRzLWxlbmd0aAor
CitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBm
b2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBubyBleGNlcHRpb24gdGhyb3du
CitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpJbmRl
eDogTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zY29wZWQtYXJndW1lbnRzLWxlbmd0aC5odG1sCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2NvcGVkLWFyZ3VtZW50cy1sZW5n
dGguaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2NvcGVkLWFy
Z3VtZW50cy1sZW5ndGguaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEyIEBACis8IURP
Q1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFk
PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+
Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvcmVncmVzcy1w
cmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy9zY29wZWQtYXJndW1l
bnRzLWxlbmd0aC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Jl
Z3Jlc3MtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pz
LXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRU
ZXN0cy9qcy9yZWdyZXNzL3Njb3BlZC1hcmd1bWVudHMtb3ZlcnJpZGRlbi1sZW5ndGgtZXhwZWN0
ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2NvcGVkLWFyZ3Vt
ZW50cy1vdmVycmlkZGVuLWxlbmd0aC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlv
dXRUZXN0cy9qcy9yZWdyZXNzL3Njb3BlZC1hcmd1bWVudHMtb3ZlcnJpZGRlbi1sZW5ndGgtZXhw
ZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTAgQEAKK0pTUmVncmVzcy9zY29w
ZWQtYXJndW1lbnRzLW92ZXJyaWRkZW4tbGVuZ3RoCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNl
ZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRF
Ii4KKworCitQQVNTIG5vIGV4Y2VwdGlvbiB0aHJvd24KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2Vk
IGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCkluZGV4OiBMYXlvdXRUZXN0cy9qcy9yZWdyZXNz
L3Njb3BlZC1hcmd1bWVudHMtb3ZlcnJpZGRlbi1sZW5ndGguaHRtbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9qcy9yZWdyZXNzL3Njb3BlZC1hcmd1bWVudHMtb3ZlcnJpZGRlbi1sZW5ndGgu
aHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2NvcGVkLWFyZ3Vt
ZW50cy1vdmVycmlkZGVuLWxlbmd0aC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTIg
QEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1s
PgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48
L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9y
ZWdyZXNzLXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0ic2NyaXB0LXRlc3RzL3Njb3Bl
ZC1hcmd1bWVudHMtb3ZlcnJpZGRlbi1sZW5ndGguanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii4uLy4uL3Jlc291cmNlcy9yZWdyZXNzLXBvc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9o
dG1sPgpJbmRleDogTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zY29wZWQtYXJndW1lbnRzLXBvc3Np
Ymx5LW92ZXJyaWRkZW4tbGVuZ3RoLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9qcy9yZWdyZXNzL3Njb3BlZC1hcmd1bWVudHMtcG9zc2libHktb3ZlcnJpZGRlbi1sZW5n
dGgtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvanMvcmVncmVzcy9z
Y29wZWQtYXJndW1lbnRzLXBvc3NpYmx5LW92ZXJyaWRkZW4tbGVuZ3RoLWV4cGVjdGVkLnR4dAko
d29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEwIEBACitKU1JlZ3Jlc3Mvc2NvcGVkLWFyZ3VtZW50
cy1wb3NzaWJseS1vdmVycmlkZGVuLWxlbmd0aAorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUg
YSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIu
CisKKworUEFTUyBubyBleGNlcHRpb24gdGhyb3duCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBp
cyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpJbmRleDogTGF5b3V0VGVzdHMvanMvcmVncmVzcy9z
Y29wZWQtYXJndW1lbnRzLXBvc3NpYmx5LW92ZXJyaWRkZW4tbGVuZ3RoLmh0bWwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zY29wZWQtYXJndW1lbnRzLXBvc3NpYmx5LW92
ZXJyaWRkZW4tbGVuZ3RoLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9qcy9yZWdy
ZXNzL3Njb3BlZC1hcmd1bWVudHMtcG9zc2libHktb3ZlcnJpZGRlbi1sZW5ndGguaHRtbAkod29y
a2luZyBjb3B5KQpAQCAtMCwwICsxLDEyIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lF
VEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jl
c291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvcmVncmVzcy1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9InNjcmlwdC10ZXN0cy9zY29wZWQtYXJndW1lbnRzLXBvc3NpYmx5LW92ZXJyaWRkZW4t
bGVuZ3RoLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvcmVncmVz
cy1wb3N0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVz
dC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3Rz
L2pzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL2RpcmVjdC1hcmd1bWVudHMtbGVuZ3RoLmpzCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL2RpcmVjdC1hcmd1
bWVudHMtbGVuZ3RoLmpzCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvanMvcmVncmVzcy9z
Y3JpcHQtdGVzdHMvZGlyZWN0LWFyZ3VtZW50cy1sZW5ndGguanMJKHdvcmtpbmcgY29weSkKQEAg
LTAsMCArMSwxNCBAQAorKGZ1bmN0aW9uKCkgeworICAgIHZhciBhcmdzID0gKGZ1bmN0aW9uKCkg
eworICAgICAgICByZXR1cm4gYXJndW1lbnRzOworICAgIH0pKDEsIDIsIDMsIDQsIDUpOworICAg
IAorICAgIHZhciBhcnJheSA9IFthcmdzLCBbMSwgMiwgM11dOworICAgIAorICAgIHZhciByZXN1
bHQgPSAwOworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDAwMDsgKytpKQorICAgICAgICBy
ZXN1bHQgKz0gYXJyYXlbaSAlIGFycmF5Lmxlbmd0aF0ubGVuZ3RoOworICAgIAorICAgIGlmIChy
ZXN1bHQgIT0gNDAwMDAwMCkKKyAgICAgICAgdGhyb3cgIkVycm9yOiBiYWQgcmVzdWx0OiAiICsg
cmVzdWx0OworfSkoKTsKSW5kZXg6IExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3Rz
L2RpcmVjdC1hcmd1bWVudHMtb3ZlcnJpZGRlbi1sZW5ndGguanMKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvanMvcmVncmVzcy9zY3JpcHQtdGVzdHMvZGlyZWN0LWFyZ3VtZW50cy1vdmVycmlk
ZGVuLWxlbmd0aC5qcwkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2Ny
aXB0LXRlc3RzL2RpcmVjdC1hcmd1bWVudHMtb3ZlcnJpZGRlbi1sZW5ndGguanMJKHdvcmtpbmcg
Y29weSkKQEAgLTAsMCArMSwxNiBAQAorKGZ1bmN0aW9uKCkgeworICAgIHZhciBhcmdzID0gKGZ1
bmN0aW9uKCkgeworICAgICAgICB2YXIgcmVzdWx0ID0gYXJndW1lbnRzOworICAgICAgICByZXN1
bHQubGVuZ3RoID0gNjsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9KSgxLCAyLCAzLCA0
LCA1KTsKKyAgICAKKyAgICB2YXIgYXJyYXkgPSBbYXJncywgWzEsIDIsIDNdXTsKKyAgICAKKyAg
ICB2YXIgcmVzdWx0ID0gMDsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDEwMDAwMDA7ICsraSkK
KyAgICAgICAgcmVzdWx0ICs9IGFycmF5W2kgJSBhcnJheS5sZW5ndGhdLmxlbmd0aDsKKyAgICAK
KyAgICBpZiAocmVzdWx0ICE9IDQ1MDAwMDApCisgICAgICAgIHRocm93ICJFcnJvcjogYmFkIHJl
c3VsdDogIiArIHJlc3VsdDsKK30pKCk7CkluZGV4OiBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3Nj
cmlwdC10ZXN0cy9kaXJlY3QtYXJndW1lbnRzLXBvc3NpYmx5LW92ZXJyaWRkZW4tbGVuZ3RoLmpz
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL2RpcmVj
dC1hcmd1bWVudHMtcG9zc2libHktb3ZlcnJpZGRlbi1sZW5ndGguanMJKHJldmlzaW9uIDApCisr
KyBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9kaXJlY3QtYXJndW1lbnRzLXBv
c3NpYmx5LW92ZXJyaWRkZW4tbGVuZ3RoLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMjAg
QEAKKyhmdW5jdGlvbigpIHsKKyAgICB2YXIgYXJnczEgPSAoZnVuY3Rpb24oKSB7CisgICAgICAg
IHJldHVybiBhcmd1bWVudHM7CisgICAgfSkoMSwgMiwgMyk7CisgICAgCisgICAgdmFyIGFyZ3My
ID0gKGZ1bmN0aW9uKCkgeworICAgICAgICB2YXIgcmVzdWx0ID0gYXJndW1lbnRzOworICAgICAg
ICByZXN1bHQubGVuZ3RoID0gNjsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9KSgxLCAy
LCAzLCA0LCA1KTsKKyAgICAKKyAgICB2YXIgYXJyYXkgPSBbYXJnczEsIGFyZ3MyXTsKKyAgICAK
KyAgICB2YXIgcmVzdWx0ID0gMDsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDEwMDAwMDA7ICsr
aSkKKyAgICAgICAgcmVzdWx0ICs9IGFycmF5W2kgJSBhcnJheS5sZW5ndGhdLmxlbmd0aDsKKyAg
ICAKKyAgICBpZiAocmVzdWx0ICE9IDQ1MDAwMDApCisgICAgICAgIHRocm93ICJFcnJvcjogYmFk
IHJlc3VsdDogIiArIHJlc3VsdDsKK30pKCk7CkluZGV4OiBMYXlvdXRUZXN0cy9qcy9yZWdyZXNz
L3NjcmlwdC10ZXN0cy9wdXQtYnktaWQtdHJhbnNpdGlvbi13aXRoLWluZGV4aW5nLWhlYWRlci5q
cwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9wdXQt
YnktaWQtdHJhbnNpdGlvbi13aXRoLWluZGV4aW5nLWhlYWRlci5qcwkocmV2aXNpb24gMTk5MjM0
KQorKysgTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zY3JpcHQtdGVzdHMvcHV0LWJ5LWlkLXRyYW5z
aXRpb24td2l0aC1pbmRleGluZy1oZWFkZXIuanMJKHdvcmtpbmcgY29weSkKQEAgLTMsNyArMyw3
IEBACiAgICAgICAgIHJldHVybiB7fTsKICAgICB9OwogICAgIAotICAgIGZvciAodmFyIGkgPSAw
OyBpIDwgMTAwMDsgKytpKSB7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAzMDA7ICsraSkgewog
ICAgICAgICB2YXIgbzsKICAgICAgICAgdmFyIG4gPSAxMDA7CiAgICAgICAgIGZvciAodmFyIGog
PSAwOyBqIDwgbjsgKytqKSB7CkluZGV4OiBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NjcmlwdC10
ZXN0cy9zY29wZWQtYXJndW1lbnRzLWxlbmd0aC5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9qcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9zY29wZWQtYXJndW1lbnRzLWxlbmd0aC5qcwkocmV2
aXNpb24gMCkKKysrIExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL3Njb3BlZC1h
cmd1bWVudHMtbGVuZ3RoLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMjAgQEAKKyhmdW5j
dGlvbigpIHsKKyAgICB2YXIgYXJncyA9IChmdW5jdGlvbihhKSB7CisgICAgICAgIChmdW5jdGlv
bigpIHsKKyAgICAgICAgICAgIGErKzsKKyAgICAgICAgfSkoKTsKKyAgICAgICAgcmV0dXJuIGFy
Z3VtZW50czsKKyAgICB9KSgxLCAyLCAzLCA0LCA1KTsKKyAgICAKKyAgICBpZiAoYXJnc1swXSAh
PSAyKQorICAgICAgICB0aHJvdyAiRXJyb3I6IGJhZCBhcmdzOiAiICsgYXJnczsKKyAgICAKKyAg
ICB2YXIgYXJyYXkgPSBbYXJncywgWzEsIDIsIDNdXTsKKyAgICAKKyAgICB2YXIgcmVzdWx0ID0g
MDsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDEwMDAwMDA7ICsraSkKKyAgICAgICAgcmVzdWx0
ICs9IGFycmF5W2kgJSBhcnJheS5sZW5ndGhdLmxlbmd0aDsKKyAgICAKKyAgICBpZiAocmVzdWx0
ICE9IDQwMDAwMDApCisgICAgICAgIHRocm93ICJFcnJvcjogYmFkIHJlc3VsdDogIiArIHJlc3Vs
dDsKK30pKCk7CkluZGV4OiBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9zY29w
ZWQtYXJndW1lbnRzLW92ZXJyaWRkZW4tbGVuZ3RoLmpzCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2pzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL3Njb3BlZC1hcmd1bWVudHMtb3ZlcnJpZGRlbi1s
ZW5ndGguanMJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NjcmlwdC10
ZXN0cy9zY29wZWQtYXJndW1lbnRzLW92ZXJyaWRkZW4tbGVuZ3RoLmpzCSh3b3JraW5nIGNvcHkp
CkBAIC0wLDAgKzEsMjIgQEAKKyhmdW5jdGlvbigpIHsKKyAgICB2YXIgYXJncyA9IChmdW5jdGlv
bihhKSB7CisgICAgICAgIChmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIGErKzsKKyAgICAgICAg
fSkoKTsKKyAgICAgICAgdmFyIHJlc3VsdCA9IGFyZ3VtZW50czsKKyAgICAgICAgcmVzdWx0Lmxl
bmd0aCA9IDY7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfSkoMSwgMiwgMywgNCwgNSk7
CisgICAgCisgICAgaWYgKGFyZ3NbMF0gIT0gMikKKyAgICAgICAgdGhyb3cgIkVycm9yOiBiYWQg
YXJnczogIiArIGFyZ3M7CisgICAgCisgICAgdmFyIGFycmF5ID0gW2FyZ3MsIFsxLCAyLCAzXV07
CisgICAgCisgICAgdmFyIHJlc3VsdCA9IDA7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAw
MDAwOyArK2kpCisgICAgICAgIHJlc3VsdCArPSBhcnJheVtpICUgYXJyYXkubGVuZ3RoXS5sZW5n
dGg7CisgICAgCisgICAgaWYgKHJlc3VsdCAhPSA0NTAwMDAwKQorICAgICAgICB0aHJvdyAiRXJy
b3I6IGJhZCByZXN1bHQ6ICIgKyByZXN1bHQ7Cit9KSgpOwpJbmRleDogTGF5b3V0VGVzdHMvanMv
cmVncmVzcy9zY3JpcHQtdGVzdHMvc2NvcGVkLWFyZ3VtZW50cy1wb3NzaWJseS1vdmVycmlkZGVu
LWxlbmd0aC5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NjcmlwdC10
ZXN0cy9zY29wZWQtYXJndW1lbnRzLXBvc3NpYmx5LW92ZXJyaWRkZW4tbGVuZ3RoLmpzCShyZXZp
c2lvbiAwKQorKysgTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zY3JpcHQtdGVzdHMvc2NvcGVkLWFy
Z3VtZW50cy1wb3NzaWJseS1vdmVycmlkZGVuLWxlbmd0aC5qcwkod29ya2luZyBjb3B5KQpAQCAt
MCwwICsxLDMyIEBACisoZnVuY3Rpb24oKSB7CisgICAgdmFyIGFyZ3MxID0gKGZ1bmN0aW9uKGEp
IHsKKyAgICAgICAgKGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgYSsrOworICAgICAgICB9KSgp
OworICAgICAgICByZXR1cm4gYXJndW1lbnRzOworICAgIH0pKDEsIDIsIDMpOworICAgIAorICAg
IGlmIChhcmdzMVswXSAhPSAyKQorICAgICAgICB0aHJvdyAiRXJyb3I6IGJhZCBhcmdzMTogIiAr
IGFyZ3MxOworICAgIAorICAgIHZhciBhcmdzMiA9IChmdW5jdGlvbihhKSB7CisgICAgICAgIChm
dW5jdGlvbigpIHsKKyAgICAgICAgICAgIGErKzsKKyAgICAgICAgfSkoKTsKKyAgICAgICAgdmFy
IHJlc3VsdCA9IGFyZ3VtZW50czsKKyAgICAgICAgcmVzdWx0Lmxlbmd0aCA9IDY7CisgICAgICAg
IHJldHVybiByZXN1bHQ7CisgICAgfSkoMSwgMiwgMywgNCwgNSk7CisgICAgCisgICAgaWYgKGFy
Z3MyWzBdICE9IDIpCisgICAgICAgIHRocm93ICJFcnJvcjogYmFkIGFyZ3MyOiAiICsgYXJnczI7
CisgICAgCisgICAgdmFyIGFycmF5ID0gW2FyZ3MxLCBhcmdzMl07CisgICAgCisgICAgdmFyIHJl
c3VsdCA9IDA7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDAwOyArK2kpCisgICAgICAg
IHJlc3VsdCArPSBhcnJheVtpICUgYXJyYXkubGVuZ3RoXS5sZW5ndGg7CisgICAgCisgICAgaWYg
KHJlc3VsdCAhPSA0NTAwMDAwKQorICAgICAgICB0aHJvdyAiRXJyb3I6IGJhZCByZXN1bHQ6ICIg
KyByZXN1bHQ7Cit9KSgpOwo=
</data>
<flag name="review"
          id="300329"
          type_id="1"
          status="+"
          setter="ggaren"
    />
          </attachment>
      

    </bug>

</bugzilla>