<?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>96983</bug_id>
          
          <creation_ts>2012-09-17 23:50:35 -0700</creation_ts>
          <short_desc>DFG should not call out to C++ code every time that it tries to put to an object that doesn&apos;t yet have array storage</short_desc>
          <delta_ts>2012-09-18 18:22:07 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>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>
          <dependson>96987</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Filip Pizlo">fpizlo</assigned_to>
          <cc>barraclough</cc>
    
    <cc>ggaren</cc>
    
    <cc>mhahnenberg</cc>
    
    <cc>msaboff</cc>
    
    <cc>oliver</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>722523</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-09-17 23:50:35 -0700</bug_when>
    <thetext>Monster work-in-progress patch forthcoming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>722540</commentid>
    <comment_count>1</comment_count>
      <attachid>164504</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-09-18 00:10:35 -0700</bug_when>
    <thetext>Created attachment 164504
work in progress</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>722587</commentid>
    <comment_count>2</comment_count>
      <attachid>164514</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-09-18 01:34:22 -0700</bug_when>
    <thetext>Created attachment 164514
may be the patch

It&apos;s starting to do things.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>723080</commentid>
    <comment_count>3</comment_count>
      <attachid>164625</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-09-18 15:10:06 -0700</bug_when>
    <thetext>Created attachment 164625
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>723171</commentid>
    <comment_count>4</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-09-18 18:22:07 -0700</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/128957</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>164504</attachid>
            <date>2012-09-18 00:10:35 -0700</date>
            <delta_ts>2012-09-18 01:34:22 -0700</delta_ts>
            <desc>work in progress</desc>
            <filename>createarraystorage_patch_1.diff</filename>
            <type>text/plain</type>
            <size>23956</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTI4ODUzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ3IEBA
CisyMDEyLTA5LTE3ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
REZHIHNob3VsZCBub3QgT1NSIGV4aXQgZXZlcnkgdGltZSB0aGF0IGl0IHRyaWVzIHRvIHB1dCB0
byBhbiBvYmplY3QgdGhhdCBkb2Vzbid0IHlldCBoYXZlIGFycmF5IHN0b3JhZ2UKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk2OTgzCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV29yayBpbiBwcm9ncmVzcy4K
KworICAgICAgICAqIGJ5dGVjb2RlL0FycmF5UHJvZmlsZS5jcHA6CisgICAgICAgIChKU0M6OkFy
cmF5UHJvZmlsZTo6Y29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKToKKyAgICAgICAgKiBieXRlY29k
ZS9BcnJheVByb2ZpbGUuaDoKKyAgICAgICAgKEpTQzo6QXJyYXlQcm9maWxlOjptYXlJbnRlcmNl
cHRJbmRleGVkQWNjZXNzZXMpOgorICAgICAgICAoQXJyYXlQcm9maWxlKToKKyAgICAgICAgKiBk
ZmcvREZHQXJyYXlNb2RlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpmcm9tT2JzZXJ2ZWQpOgor
ICAgICAgICAoSlNDOjpERkc6Om1vZGVBbHJlYWR5Q2hlY2tlZCk6CisgICAgICAgIChKU0M6OkRG
Rzo6bW9kZVRvU3RyaW5nKToKKyAgICAgICAgKiBkZmcvREZHQXJyYXlNb2RlLmg6CisgICAgICAg
IChERkcpOgorICAgICAgICAoSlNDOjpERkc6Om1vZGVVc2VzQnV0dGVyZmx5KToKKyAgICAgICAg
KEpTQzo6REZHOjppc1Nsb3dQdXRBY2Nlc3MpOgorICAgICAgICAoSlNDOjpERkc6OmJlbmVmaXRz
RnJvbVN0cnVjdHVyZUNoZWNrKToKKyAgICAgICAgKEpTQzo6REZHOjppc0VmZmVjdGZ1bCk6Cisg
ICAgICAgICogZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpC
eXRlQ29kZVBhcnNlcjo6Z2V0QXJyYXlNb2RlKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29k
ZVBhcnNlcjo6Z2V0QXJyYXlNb2RlQW5kRW1pdENoZWNrcyk6CisgICAgICAgICogZGZnL0RGR0Zp
eHVwUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6OmZpeHVwTm9kZSk6
CisgICAgICAgIChKU0M6OkRGRzo6Rml4dXBQaGFzZTo6Y2hlY2tBcnJheSk6CisgICAgICAgICog
ZGZnL0RGR05vZGVUeXBlLmg6CisgICAgICAgIChERkcpOgorICAgICAgICAqIGRmZy9ERkdTcGVj
dWxhdGl2ZUpJVC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNoZWNr
QXJyYXkpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjphcnJheWlmeSk6Cisg
ICAgICAgIChERkcpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oOgorICAgICAg
ICAoU3BlY3VsYXRpdmVKSVQpOgorICAgICAgICAqIHJ1bnRpbWUvSlNPYmplY3QuaDoKKyAgICAg
ICAgKEpTT2JqZWN0KToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmVuc3VyZUFycmF5U3RvcmFn
ZSk6CisgICAgICAgICogcnVudGltZS9KU1N0cmluZy5oOgorICAgICAgICAoSlNDOjpKU1N0cmlu
Zzo6Y3JlYXRlU3RydWN0dXJlKToKKwogMjAxMi0wOS0xNyAgQ3NhYmEgT3N6dHJvZ29uw6FjICA8
b3NzeUB3ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxMjg4
MjYgYW5kIHIxMjg4MTMuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJy
YXlQcm9maWxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQXJyYXlQcm9maWxlLmNwcAkocmV2aXNpb24gMTI4ODI2KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0FycmF5UHJvZmlsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyLDYg
KzMyLDggQEAgdm9pZCBBcnJheVByb2ZpbGU6OmNvbXB1dGVVcGRhdGVkUHJlZGljdAogewogICAg
IGlmIChtX2xhc3RTZWVuU3RydWN0dXJlKSB7CiAgICAgICAgIG1fb2JzZXJ2ZWRBcnJheU1vZGVz
IHw9IGFycmF5TW9kZUZyb21TdHJ1Y3R1cmUobV9sYXN0U2VlblN0cnVjdHVyZSk7CisgICAgICAg
IG1fbWF5SW50ZXJjZXB0SW5kZXhlZEFjY2Vzc2VzIHw9CisgICAgICAgICAgICBtX2xhc3RTZWVu
U3RydWN0dXJlLT50eXBlSW5mbygpLmludGVyY2VwdHNHZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4
RXZlbldoZW5MZW5ndGhJc05vdFplcm8oKTsKICAgICAgICAgaWYgKCFtX3N0cnVjdHVyZUlzUG9s
eW1vcnBoaWMpIHsKICAgICAgICAgICAgIGlmICghbV9leHBlY3RlZFN0cnVjdHVyZSkKICAgICAg
ICAgICAgICAgICBtX2V4cGVjdGVkU3RydWN0dXJlID0gbV9sYXN0U2VlblN0cnVjdHVyZTsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BcnJheVByb2ZpbGUuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJyYXlQcm9maWxlLmgJKHJl
dmlzaW9uIDEyODgyNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BcnJheVBy
b2ZpbGUuaAkod29ya2luZyBjb3B5KQpAQCAtODksNiArODksNyBAQCBwdWJsaWM6CiAgICAgICAg
IHJldHVybiAhc3RydWN0dXJlSXNQb2x5bW9ycGhpYygpICYmIG1fZXhwZWN0ZWRTdHJ1Y3R1cmU7
CiAgICAgfQogICAgIEFycmF5TW9kZXMgb2JzZXJ2ZWRBcnJheU1vZGVzKCkgY29uc3QgeyByZXR1
cm4gbV9vYnNlcnZlZEFycmF5TW9kZXM7IH0KKyAgICBib29sIG1heUludGVyY2VwdEluZGV4ZWRB
Y2Nlc3NlcygpIGNvbnN0IHsgcmV0dXJuIG1fbWF5SW50ZXJjZXB0SW5kZXhlZEFjY2Vzc2VzOyB9
CiAgICAgCiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7
CkBAIC05Nyw2ICs5OCw3IEBAIHByaXZhdGU6CiAgICAgU3RydWN0dXJlKiBtX2xhc3RTZWVuU3Ry
dWN0dXJlOwogICAgIFN0cnVjdHVyZSogbV9leHBlY3RlZFN0cnVjdHVyZTsKICAgICBib29sIG1f
c3RydWN0dXJlSXNQb2x5bW9ycGhpYzsKKyAgICBib29sIG1fbWF5SW50ZXJjZXB0SW5kZXhlZEFj
Y2Vzc2VzOwogICAgIEFycmF5TW9kZXMgbV9vYnNlcnZlZEFycmF5TW9kZXM7CiB9OwogCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FycmF5TW9kZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcnJheU1vZGUuY3BwCShyZXZpc2lvbiAx
Mjg4MjYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FycmF5TW9kZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTMyLDI2ICszMiwzOSBAQAogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNw
YWNlIERGRyB7CiAKLUFycmF5OjpNb2RlIGZyb21PYnNlcnZlZChBcnJheU1vZGVzIG1vZGVzLCBi
b29sIG1ha2VTYWZlKQorQXJyYXk6Ok1vZGUgZnJvbU9ic2VydmVkKEFycmF5UHJvZmlsZSogcHJv
ZmlsZSwgQXJyYXk6OkFjdGlvbiBhY3Rpb24sIGJvb2wgbWFrZVNhZmUpCiB7Ci0gICAgLy8gRklY
TUU6IHdlIG1heSB3YW50IHRvIGFkZCBzb21lIHBvbHltb3JwaGljIHN1cHBvcnQgaW4gdGhlIGZ1
dHVyZS4gVGhhdCdzIHdoeSB0aGlzCi0gICAgLy8gaXMgYSBzd2l0Y2ggc3RhdGVtZW50IHJpZ2h0
IG5vdy4KLSAgICAKLSAgICBzd2l0Y2ggKG1vZGVzKSB7CisgICAgc3dpdGNoIChwcm9maWxlLT5v
YnNlcnZlZEFycmF5TW9kZXMoKSkgewogICAgIGNhc2UgMDoKICAgICAgICAgcmV0dXJuIEFycmF5
OjpVbmRlY2lkZWQ7CisgICAgY2FzZSBhc0FycmF5TW9kZXMoTm9uQXJyYXkpOgorICAgICAgICBp
ZiAoYWN0aW9uID09IEFycmF5OjpXcml0ZSAmJiAhcHJvZmlsZS0+bWF5SW50ZXJjZXB0SW5kZXhl
ZEFjY2Vzc2VzKCkpCisgICAgICAgICAgICByZXR1cm4gQXJyYXk6OkJsYW5rVG9BcnJheVN0b3Jh
Z2U7IC8vIEZJWE1FOiB3ZSBkb24ndCBrbm93IHdoZXRoZXIgdG8gZ28gdG8gc2xvdyBwdXQgbW9k
ZSwgb3Igbm90LiBUaGlzIGlzIGEgZGVjZW50IGd1ZXNzLgorICAgICAgICByZXR1cm4gQXJyYXk6
OlVuZGVjaWRlZDsKICAgICBjYXNlIGFzQXJyYXlNb2RlcyhOb25BcnJheVdpdGhBcnJheVN0b3Jh
Z2UpOgogICAgICAgICByZXR1cm4gbWFrZVNhZmUgPyBBcnJheTo6QXJyYXlTdG9yYWdlT3V0T2ZC
b3VuZHMgOiBBcnJheTo6QXJyYXlTdG9yYWdlOwogICAgIGNhc2UgYXNBcnJheU1vZGVzKE5vbkFy
cmF5V2l0aFNsb3dQdXRBcnJheVN0b3JhZ2UpOgorICAgIGNhc2UgYXNBcnJheU1vZGVzKE5vbkFy
cmF5V2l0aEFycmF5U3RvcmFnZSkgfCBhc0FycmF5TW9kZXMoTm9uQXJyYXlXaXRoU2xvd1B1dEFy
cmF5U3RvcmFnZSk6CiAgICAgICAgIHJldHVybiBBcnJheTo6U2xvd1B1dEFycmF5U3RvcmFnZTsK
ICAgICBjYXNlIGFzQXJyYXlNb2RlcyhBcnJheVdpdGhBcnJheVN0b3JhZ2UpOgogICAgICAgICBy
ZXR1cm4gbWFrZVNhZmUgPyBBcnJheTo6QXJyYXlXaXRoQXJyYXlTdG9yYWdlT3V0T2ZCb3VuZHMg
OiBBcnJheTo6QXJyYXlXaXRoQXJyYXlTdG9yYWdlOwogICAgIGNhc2UgYXNBcnJheU1vZGVzKEFy
cmF5V2l0aFNsb3dQdXRBcnJheVN0b3JhZ2UpOgorICAgIGNhc2UgYXNBcnJheU1vZGVzKEFycmF5
V2l0aEFycmF5U3RvcmFnZSkgfCBhc0FycmF5TW9kZXMoQXJyYXlXaXRoU2xvd1B1dEFycmF5U3Rv
cmFnZSk6CiAgICAgICAgIHJldHVybiBBcnJheTo6QXJyYXlXaXRoU2xvd1B1dEFycmF5U3RvcmFn
ZTsKICAgICBjYXNlIGFzQXJyYXlNb2RlcyhOb25BcnJheVdpdGhBcnJheVN0b3JhZ2UpIHwgYXNB
cnJheU1vZGVzKEFycmF5V2l0aEFycmF5U3RvcmFnZSk6CiAgICAgICAgIHJldHVybiBtYWtlU2Fm
ZSA/IEFycmF5OjpQb3NzaWJseUFycmF5V2l0aEFycmF5U3RvcmFnZU91dE9mQm91bmRzIDogQXJy
YXk6OlBvc3NpYmx5QXJyYXlXaXRoQXJyYXlTdG9yYWdlOwogICAgIGNhc2UgYXNBcnJheU1vZGVz
KE5vbkFycmF5V2l0aFNsb3dQdXRBcnJheVN0b3JhZ2UpIHwgYXNBcnJheU1vZGVzKEFycmF5V2l0
aFNsb3dQdXRBcnJheVN0b3JhZ2UpOgorICAgIGNhc2UgYXNBcnJheU1vZGVzKE5vbkFycmF5V2l0
aEFycmF5U3RvcmFnZSkgfCBhc0FycmF5TW9kZXMoQXJyYXlXaXRoQXJyYXlTdG9yYWdlKSB8IGFz
QXJyYXlNb2RlcyhOb25BcnJheVdpdGhTbG93UHV0QXJyYXlTdG9yYWdlKSB8IGFzQXJyYXlNb2Rl
cyhBcnJheVdpdGhTbG93UHV0QXJyYXlTdG9yYWdlKToKICAgICAgICAgcmV0dXJuIEFycmF5OjpQ
b3NzaWJseUFycmF5V2l0aFNsb3dQdXRBcnJheVN0b3JhZ2U7CisgICAgY2FzZSBhc0FycmF5TW9k
ZXMoTm9uQXJyYXkpIHwgYXNBcnJheU1vZGVzKE5vbkFycmF5V2l0aEFycmF5U3RvcmFnZSk6Cisg
ICAgICAgIGlmIChhY3Rpb24gPT0gQXJyYXk6OldyaXRlICYmICFwcm9maWxlLT5tYXlJbnRlcmNl
cHRJbmRleGVkQWNjZXNzZXMoKSkKKyAgICAgICAgICAgIHJldHVybiBBcnJheTo6QmxhbmtUb0Fy
cmF5U3RvcmFnZTsKKyAgICAgICAgcmV0dXJuIEFycmF5OjpVbmRlY2lkZWQ7CisgICAgY2FzZSBh
c0FycmF5TW9kZXMoTm9uQXJyYXkpIHwgYXNBcnJheU1vZGVzKE5vbkFycmF5V2l0aFNsb3dQdXRB
cnJheVN0b3JhZ2UpOgorICAgIGNhc2UgYXNBcnJheU1vZGVzKE5vbkFycmF5KSB8IGFzQXJyYXlN
b2RlcyhOb25BcnJheVdpdGhBcnJheVN0b3JhZ2UpIHwgYXNBcnJheU1vZGVzKE5vbkFycmF5V2l0
aFNsb3dQdXRBcnJheVN0b3JhZ2UpOgorICAgICAgICBpZiAoYWN0aW9uID09IEFycmF5OjpXcml0
ZSAmJiAhcHJvZmlsZS0+bWF5SW50ZXJjZXB0SW5kZXhlZEFjY2Vzc2VzKCkpCisgICAgICAgICAg
ICByZXR1cm4gQXJyYXk6OkJsYW5rVG9TbG93UHV0QXJyYXlTdG9yYWdlOworICAgICAgICByZXR1
cm4gQXJyYXk6OlVuZGVjaWRlZDsKICAgICBkZWZhdWx0OgogICAgICAgICAvLyBXZSBrbm93IHRo
YXQgdGhpcyBpcyBwb3NzaWJseSBhIGtpbmQgb2YgYXJyYXkgZm9yIHdoaWNoLCB0aG91Z2ggdGhl
cmUgaXMgbm8KICAgICAgICAgLy8gdXNlZnVsIGRhdGEgaW4gdGhlIGFycmF5IHByb2ZpbGUsIHdl
IG1heSBiZSBhYmxlIHRvIGV4dHJhY3QgdXNlZnVsIGRhdGEgZnJvbQpAQCAtMTQwLDcgKzE1Myw3
IEBAIGJvb2wgbW9kZUFscmVhZHlDaGVja2VkKEFic3RyYWN0VmFsdWUmIHYKICAgICBjYXNlIEFy
cmF5OjpTbG93UHV0QXJyYXlTdG9yYWdlOgogICAgIGNhc2UgQXJyYXk6OlBvc3NpYmx5QXJyYXlX
aXRoU2xvd1B1dEFycmF5U3RvcmFnZToKICAgICAgICAgcmV0dXJuIHZhbHVlLm1fY3VycmVudEtu
b3duU3RydWN0dXJlLmhhc1NpbmdsZXRvbigpCi0gICAgICAgICAgICAmJiAodmFsdWUubV9jdXJy
ZW50S25vd25TdHJ1Y3R1cmUuc2luZ2xldG9uKCktPmluZGV4aW5nVHlwZSgpICYgSGFzU2xvd1B1
dEFycmF5U3RvcmFnZSk7CisgICAgICAgICAgICAmJiAodmFsdWUubV9jdXJyZW50S25vd25TdHJ1
Y3R1cmUuc2luZ2xldG9uKCktPmluZGV4aW5nVHlwZSgpICYgKEhhc0FycmF5U3RvcmFnZSB8IEhh
c1Nsb3dQdXRBcnJheVN0b3JhZ2UpKTsKICAgICAgICAgCiAgICAgY2FzZSBBcnJheTo6QXJyYXlX
aXRoQXJyYXlTdG9yYWdlOgogICAgIGNhc2UgQXJyYXk6OkFycmF5V2l0aEFycmF5U3RvcmFnZU91
dE9mQm91bmRzOgpAQCAtMTUwLDkgKzE2MywxMiBAQCBib29sIG1vZGVBbHJlYWR5Q2hlY2tlZChB
YnN0cmFjdFZhbHVlJiB2CiAgICAgICAgIAogICAgIGNhc2UgQXJyYXk6OkFycmF5V2l0aFNsb3dQ
dXRBcnJheVN0b3JhZ2U6CiAgICAgICAgIHJldHVybiB2YWx1ZS5tX2N1cnJlbnRLbm93blN0cnVj
dHVyZS5oYXNTaW5nbGV0b24oKQotICAgICAgICAgICAgJiYgKHZhbHVlLm1fY3VycmVudEtub3du
U3RydWN0dXJlLnNpbmdsZXRvbigpLT5pbmRleGluZ1R5cGUoKSAmIEhhc1Nsb3dQdXRBcnJheVN0
b3JhZ2UpCisgICAgICAgICAgICAmJiAodmFsdWUubV9jdXJyZW50S25vd25TdHJ1Y3R1cmUuc2lu
Z2xldG9uKCktPmluZGV4aW5nVHlwZSgpICYgKEhhc0FycmF5U3RvcmFnZSB8IEhhc1Nsb3dQdXRB
cnJheVN0b3JhZ2UpKQogICAgICAgICAgICAgJiYgKHZhbHVlLm1fY3VycmVudEtub3duU3RydWN0
dXJlLnNpbmdsZXRvbigpLT5pbmRleGluZ1R5cGUoKSAmIElzQXJyYXkpOwogICAgICAgICAKKyAg
ICBjYXNlIEFMTF9FRkZFQ1RGVUxfQVJSQVlfU1RPUkFHRV9NT0RFUzoKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgICAgICAKICAgICBjYXNlIEFycmF5OjpBcmd1bWVudHM6CiAgICAgICAgIHJl
dHVybiBpc0FyZ3VtZW50c1NwZWN1bGF0aW9uKHZhbHVlLm1fdHlwZSk7CiAgICAgICAgIApAQCAt
MjIwLDYgKzIzNiwxMCBAQCBjb25zdCBjaGFyKiBtb2RlVG9TdHJpbmcoQXJyYXk6Ok1vZGUgbW9k
CiAgICAgICAgIHJldHVybiAiUG9zc2libHlBcnJheVdpdGhTbG93UHV0QXJyYXlTdG9yYWdlIjsK
ICAgICBjYXNlIEFycmF5OjpQb3NzaWJseUFycmF5V2l0aEFycmF5U3RvcmFnZU91dE9mQm91bmRz
OgogICAgICAgICByZXR1cm4gIlBvc3NpYmx5QXJyYXlXaXRoQXJyYXlTdG9yYWdlT3V0T2ZCb3Vu
ZHMiOworICAgIGNhc2UgQXJyYXk6OkJsYW5rVG9BcnJheVN0b3JhZ2U6CisgICAgICAgIHJldHVy
biAiQmxhbmtUb0FycmF5U3RvcmFnZSI7CisgICAgY2FzZSBBcnJheTo6QmxhbmtUb1Nsb3dQdXRB
cnJheVN0b3JhZ2U6CisgICAgICAgIHJldHVybiAiQmxhbmtUb1Nsb3dQdXRBcnJheVN0b3JhZ2Ui
OwogICAgIGNhc2UgQXJyYXk6OkFyZ3VtZW50czoKICAgICAgICAgcmV0dXJuICJBcmd1bWVudHMi
OwogICAgIGNhc2UgQXJyYXk6OkludDhBcnJheToKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQXJyYXlNb2RlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdBcnJheU1vZGUuaAkocmV2aXNpb24gMTI4ODI2KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdBcnJheU1vZGUuaAkod29ya2luZyBjb3B5KQpAQCAtNDEsMTEgKzQxLDE4
IEBAIHN0cnVjdCBBYnN0cmFjdFZhbHVlOwogLy8gdGhhdCB3b3VsZCBvdGhlcndpc2Ugb2NjdXIs
IHNpbmNlIHdlIHNheSB0aGluZ3MgbGlrZSAiSW50OEFycmF5IiBhbmQgIkpTQXJyYXkiCiAvLyBp
biBsb3RzIG9mIG90aGVyIHBsYWNlcywgdG8gbWVhbiBzdWJ0bHkgZGlmZmVyZW50IHRoaW5ncy4K
IG5hbWVzcGFjZSBBcnJheSB7CitlbnVtIEFjdGlvbiB7CisgICAgUmVhZCwKKyAgICBXcml0ZQor
fTsKKwogZW51bSBNb2RlIHsKICAgICBVbmRlY2lkZWQsIC8vIEltcGxpZXMgdGhhdCB3ZSBuZWVk
IHByZWRpY3Rpb25zIHRvIGRlY2lkZS4gV2Ugd2lsbCBuZXZlciBnZXQgdG8gdGhlIGJhY2tlbmQg
aW4gdGhpcyBtb2RlLgogICAgIEZvcmNlRXhpdCwgLy8gSW1wbGllcyB0aGF0IHdlIGhhdmUgbm8g
aWRlYSBob3cgdG8gZXhlY3V0ZSB0aGlzIG9wZXJhdGlvbiwgc28gd2Ugc2hvdWxkIGp1c3QgZ2l2
ZSB1cC4KICAgICBHZW5lcmljLAogICAgIFN0cmluZywKKyAgICAKKyAgICAvLyBNb2RlcyBvZiBj
b252ZW50aW9uYWwgaW5kZXhlZCBzdG9yYWdlIHdoZXJlIHRoZSBjaGVjayBpcyBub24gc2lkZS1l
ZmZlY3RpbmcuCiAgICAgQXJyYXlTdG9yYWdlLAogICAgIFNsb3dQdXRBcnJheVN0b3JhZ2UsCiAg
ICAgQXJyYXlTdG9yYWdlT3V0T2ZCb3VuZHMsCkBAIC01NSw2ICs2MiwxMSBAQCBlbnVtIE1vZGUg
ewogICAgIFBvc3NpYmx5QXJyYXlXaXRoQXJyYXlTdG9yYWdlLAogICAgIFBvc3NpYmx5QXJyYXlX
aXRoU2xvd1B1dEFycmF5U3RvcmFnZSwKICAgICBQb3NzaWJseUFycmF5V2l0aEFycmF5U3RvcmFn
ZU91dE9mQm91bmRzLAorICAgIAorICAgIC8vIE1vZGVzIG9mIGNvbnZlbnRpb25hbCBpbmRleGVk
IHN0b3JhZ2Ugd2hlcmUgdGhlIGNoZWNrIGlzIHNpZGUtZWZmZWN0aW5nLgorICAgIEJsYW5rVG9B
cnJheVN0b3JhZ2UsCisgICAgQmxhbmtUb1Nsb3dQdXRBcnJheVN0b3JhZ2UsCisgICAgCiAgICAg
QXJndW1lbnRzLAogICAgIEludDhBcnJheSwKICAgICBJbnQxNkFycmF5LApAQCAtNzEsNiArODMs
OCBAQCBlbnVtIE1vZGUgewogLy8gSGVscGVycyBmb3IgJ2Nhc2UnIHN0YXRlbWVudHMuIEZvciBl
eGFtcGxlLCBzYXlpbmcgImNhc2UgQWxsQXJyYXlTdG9yYWdlTW9kZXM6IgogLy8gaXMgdGhlIHNh
bWUgYXMgaGF2aW5nIG11bHRpcGxlIGNhc2Ugc3RhdGVtZW50cyBsaXN0aW5nIG9mZiBhbGwgb2Yg
dGhlIG1vZGVzIHRoYXQKIC8vIGhhdmUgdGhlIHdvcmQgIkFycmF5U3RvcmFnZSIgaW4gdGhlbS4K
KworLy8gRmlyc3Q6IGhlbHBlcnMgZm9yIG5vbi1zaWRlLWVmZmVjdGluZyBjaGVja3MuCiAjZGVm
aW5lIE5PTl9BUlJBWV9BUlJBWV9TVE9SQUdFX01PREVTICAgICAgICAgICAgICAgICAgICAgIFwK
ICAgICBBcnJheTo6QXJyYXlTdG9yYWdlOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXAogICAgIGNhc2UgQXJyYXk6OlNsb3dQdXRBcnJheVN0b3JhZ2U6ICAgICAgICAgICAgICAg
ICAgICAgICBcCkBAIC05OSw3ICsxMTMsMTYgQEAgZW51bSBNb2RlIHsKICAgICBjYXNlIEFycmF5
OjpBcnJheVdpdGhBcnJheVN0b3JhZ2VPdXRPZkJvdW5kczogICAgICAgICAgXAogICAgIGNhc2Ug
QXJyYXk6OlBvc3NpYmx5QXJyYXlXaXRoQXJyYXlTdG9yYWdlT3V0T2ZCb3VuZHMKIAotQXJyYXk6
Ok1vZGUgZnJvbU9ic2VydmVkKEFycmF5TW9kZXMgbW9kZXMsIGJvb2wgbWFrZVNhZmUpOworLy8g
TmV4dDogaGVscGVycyBmb3Igc2lkZS1lZmZlY3RpbmcgY2hlY2tzLgorI2RlZmluZSBFRkZFQ1RG
VUxfTk9OX0FSUkFZX0FSUkFZX1NUT1JBR0VfTU9ERVMgXAorICAgIEFycmF5OjpCbGFua1RvQXJy
YXlTdG9yYWdlOiAgICAgICAgICAgICAgICAgXAorICAgIGNhc2UgQXJyYXk6OkJsYW5rVG9TbG93
UHV0QXJyYXlTdG9yYWdlCisjZGVmaW5lIEFMTF9FRkZFQ1RGVUxfQVJSQVlfU1RPUkFHRV9NT0RF
UyAgICAgICBcCisgICAgRUZGRUNURlVMX05PTl9BUlJBWV9TVE9SQUdFX01PREVTCisjZGVmaW5l
IFNMT1dfUFVUX0VGRkVDVEZVTF9BUlJBWV9TVE9SQUdFX01PREVTICBcCisgICAgQXJyYXk6OkJs
YW5rVG9TbG93UHV0QXJyYXlTdG9yYWdlCisKK0FycmF5OjpNb2RlIGZyb21PYnNlcnZlZChBcnJh
eVByb2ZpbGUqLCBBcnJheTo6QWN0aW9uLCBib29sIG1ha2VTYWZlKTsKIAogQXJyYXk6Ok1vZGUg
ZnJvbVN0cnVjdHVyZShTdHJ1Y3R1cmUqLCBib29sIG1ha2VTYWZlKTsKIApAQCAtMTEzLDYgKzEz
Niw3IEBAIGlubGluZSBib29sIG1vZGVVc2VzQnV0dGVyZmx5KEFycmF5OjpNb2QKIHsKICAgICBz
d2l0Y2ggKGFycmF5TW9kZSkgewogICAgIGNhc2UgQUxMX0FSUkFZX1NUT1JBR0VfTU9ERVM6Cisg
ICAgY2FzZSBBTExfRUZGRUNURlVMX0FSUkFZX1NUT1JBR0VfTU9ERVM6CiAgICAgICAgIHJldHVy
biB0cnVlOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTE0Myw2ICsx
NjcsNyBAQCBpbmxpbmUgYm9vbCBpc1Nsb3dQdXRBY2Nlc3MoQXJyYXk6Ok1vZGUgCiB7CiAgICAg
c3dpdGNoIChhcnJheU1vZGUpIHsKICAgICBjYXNlIFNMT1dfUFVUX0FSUkFZX1NUT1JBR0VfTU9E
RVM6CisgICAgY2FzZSBTTE9XX1BVVF9FRkZFQ1RGVUxfQVJSQVlfU1RPUkFHRV9NT0RFUzoKICAg
ICAgICAgcmV0dXJuIHRydWU7CiAgICAgZGVmYXVsdDoKICAgICAgICAgcmV0dXJuIGZhbHNlOwpA
QCAtMjA2LDYgKzIzMSwyOSBAQCBpbmxpbmUgYm9vbCBtb2RlU3VwcG9ydHNMZW5ndGgoQXJyYXk6
Ok1vCiAgICAgfQogfQogCitib29sIGJlbmVmaXRzRnJvbVN0cnVjdHVyZUNoZWNrKEFycmF5OjpN
b2RlIG1vZGUpCit7CisgICAgc3dpdGNoIChtb2RlKSB7CisgICAgY2FzZSBBTExfRUZGRUNURlVM
X0FSUkFZX1NUT1JBR0VfTU9ERVM6CisgICAgY2FzZSBBcnJheTo6VW5kZWNpZGVkOgorICAgIGNh
c2UgQXJyYXk6OkZvcmNlRXhpdDoKKyAgICBjYXNlIEFycmF5OjpHZW5lcmljOgorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQor
fQorCitib29sIGlzRWZmZWN0ZnVsKEFycmF5OjpNb2RlIG1vZGUpCit7CisgICAgc3dpdGNoICht
b2RlKSB7CisgICAgY2FzZSBBTExfRUZGRUNURlVMX0FSUkFZX1NUT1JBR0VfTU9ERVM6CisgICAg
ICAgIHJldHVybiB0cnVlOworICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICB9Cit9CisKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpERkcKIAogI2VuZGlmIC8vIEVOQUJMRShE
RkdfSklUKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNl
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29k
ZVBhcnNlci5jcHAJKHJldmlzaW9uIDEyODgyNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04MjgsMTQgKzgyOCwx
MiBAQCBwcml2YXRlOgogICAgIEFycmF5OjpNb2RlIGdldEFycmF5TW9kZShBcnJheVByb2ZpbGUq
IHByb2ZpbGUpCiAgICAgewogICAgICAgICBwcm9maWxlLT5jb21wdXRlVXBkYXRlZFByZWRpY3Rp
b24oKTsKLSAgICAgICAgcmV0dXJuIGZyb21PYnNlcnZlZChwcm9maWxlLT5vYnNlcnZlZEFycmF5
TW9kZXMoKSwgZmFsc2UpOworICAgICAgICByZXR1cm4gZnJvbU9ic2VydmVkKHByb2ZpbGUsIEFy
cmF5OjpSZWFkLCBmYWxzZSk7CiAgICAgfQogICAgIAotICAgIEFycmF5OjpNb2RlIGdldEFycmF5
TW9kZUFuZEVtaXRDaGVja3MoQXJyYXlQcm9maWxlKiBwcm9maWxlLCBOb2RlSW5kZXggYmFzZSkK
KyAgICBBcnJheTo6TW9kZSBnZXRBcnJheU1vZGVBbmRFbWl0Q2hlY2tzKEFycmF5UHJvZmlsZSog
cHJvZmlsZSwgQXJyYXk6OkFjdGlvbiBhY3Rpb24sIE5vZGVJbmRleCBiYXNlKQogICAgIHsKICAg
ICAgICAgcHJvZmlsZS0+Y29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKCk7Ci0gICAgICAgIGlmIChw
cm9maWxlLT5oYXNEZWZpbml0ZVN0cnVjdHVyZSgpKQotICAgICAgICAgICAgYWRkVG9HcmFwaChD
aGVja1N0cnVjdHVyZSwgT3BJbmZvKG1fZ3JhcGguYWRkU3RydWN0dXJlU2V0KHByb2ZpbGUtPmV4
cGVjdGVkU3RydWN0dXJlKCkpKSwgYmFzZSk7CiAgICAgICAgIAogI2lmIERGR19FTkFCTEUoREVC
VUdfUFJPUEFHQVRJT05fVkVSQk9TRSkKICAgICAgICAgaWYgKG1faW5saW5lU3RhY2tUb3AtPm1f
cHJvZmlsZWRCbG9jay0+bnVtYmVyT2ZSYXJlQ2FzZVByb2ZpbGVzKCkpCkBAIC04NDcsNyArODQ1
LDEyIEBAIHByaXZhdGU6CiAgICAgICAgICAgICBtX2lubGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVk
QmxvY2stPmNvdWxkVGFrZVNsb3dDYXNlKG1fY3VycmVudEluZGV4KQogICAgICAgICAgICAgfHwg
bV9pbmxpbmVTdGFja1RvcC0+bV9leGl0UHJvZmlsZS5oYXNFeGl0U2l0ZShtX2N1cnJlbnRJbmRl
eCwgT3V0T2ZCb3VuZHMpOwogICAgICAgICAKLSAgICAgICAgcmV0dXJuIGZyb21PYnNlcnZlZChw
cm9maWxlLT5vYnNlcnZlZEFycmF5TW9kZXMoKSwgbWFrZVNhZmUpOworICAgICAgICBBcnJheTo6
TW9kZSByZXN1bHQgPSBmcm9tT2JzZXJ2ZWQocHJvZmlsZSwgYWN0aW9uLCBtYWtlU2FmZSk7Cisg
ICAgICAgIAorICAgICAgICBpZiAocHJvZmlsZS0+aGFzRGVmaW5pdGVTdHJ1Y3R1cmUoKSAmJiBi
ZW5lZml0c0Zyb21TdHJ1Y3R1cmVDaGVjayhyZXN1bHQpKQorICAgICAgICAgICAgYWRkVG9HcmFw
aChDaGVja1N0cnVjdHVyZSwgT3BJbmZvKG1fZ3JhcGguYWRkU3RydWN0dXJlU2V0KHByb2ZpbGUt
PmV4cGVjdGVkU3RydWN0dXJlKCkpKSwgYmFzZSk7CisgICAgICAgIAorICAgICAgICByZXR1cm4g
cmVzdWx0OwogICAgIH0KICAgICAKICAgICBOb2RlSW5kZXggbWFrZVNhZmUoTm9kZUluZGV4IG5v
ZGVJbmRleCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNl
LmNwcAkocmV2aXNpb24gMTI4ODI2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdG
aXh1cFBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTAsNyArOTAsNyBAQCBwcml2YXRlOgog
ICAgICAgICAgICAgaWYgKGFycmF5UHJvZmlsZSkgewogICAgICAgICAgICAgICAgIGFycmF5UHJv
ZmlsZS0+Y29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKCk7CiAgICAgICAgICAgICAgICAgYXJyYXlN
b2RlID0gcmVmaW5lQXJyYXlNb2RlKAotICAgICAgICAgICAgICAgICAgICBmcm9tT2JzZXJ2ZWQo
YXJyYXlQcm9maWxlLT5vYnNlcnZlZEFycmF5TW9kZXMoKSwgZmFsc2UpLAorICAgICAgICAgICAg
ICAgICAgICBmcm9tT2JzZXJ2ZWQoYXJyYXlQcm9maWxlLCBBcnJheTo6UmVhZCwgZmFsc2UpLAog
ICAgICAgICAgICAgICAgICAgICBtX2dyYXBoW25vZGUuY2hpbGQxKCldLnByZWRpY3Rpb24oKSwK
ICAgICAgICAgICAgICAgICAgICAgbV9ncmFwaFttX2NvbXBpbGVJbmRleF0ucHJlZGljdGlvbigp
KTsKICAgICAgICAgICAgICAgICBpZiAobW9kZVN1cHBvcnRzTGVuZ3RoKGFycmF5TW9kZSkgJiYg
YXJyYXlQcm9maWxlLT5oYXNEZWZpbml0ZVN0cnVjdHVyZSgpKSB7CkBAIC0zODAsNiArMzgwLDIz
IEBAIHByaXZhdGU6CiAgICAgICAgIEFTU0VSVChtb2RlSXNTcGVjaWZpYyhhcnJheU1vZGUpKTsK
ICAgICAgICAgCiAgICAgICAgIG1fZ3JhcGgucmVmKGFycmF5KTsKKworICAgICAgICBpZiAoaXNF
ZmZlY3RmdWwoYXJyYXlNb2RlKSkgeworICAgICAgICAgICAgTm9kZSBhcnJheWlmeShBcnJheWlm
eSwgY29kZU9yaWdpbiwgT3BJbmZvKGFycmF5TW9kZSksIGFycmF5KTsKKyAgICAgICAgICAgIGNo
ZWNrQXJyYXkucmVmKCk7IC8vIE9uY2UgYmVjYXVzZSBpdCdzIHVzZWQgYXMgYSBidXR0ZXJmbHku
CisgICAgICAgICAgICBjaGVja0FycmF5LnJlZigpOyAvLyBBbmQgdHdpY2UgYmVjYXVzZSBpdCdz
IG11c3QtZ2VuZXJhdGUuCisgICAgICAgICAgICBOb2RlSW5kZXggYXJyYXlpZnlJbmRleCA9IG1f
Z3JhcGguc2l6ZSgpOworICAgICAgICAgICAgbV9ncmFwaC5hcHBlbmQoYXJyYXlpZnkpOworICAg
ICAgICAgICAgbV9pbnNlcnRpb25TZXQuYXBwZW5kKG1faW5kZXhJbkJsb2NrLCBhcnJheWlmeUlu
ZGV4KTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgQVNTRVJUKHN0b3JhZ2VDaGVjayA9PSBj
YW5DU0VTdG9yYWdlKTsKKyAgICAgICAgICAgIEFTU0VSVChzaG91bGRHZW5lcmF0ZSk7CisgICAg
ICAgICAgICBBU1NFUlQoY2FuQ1NFU3RvcmFnZShhcnJheU1vZGUpKTsKKyAgICAgICAgICAgIEFT
U0VSVChtb2RlVXNlc0J1dHRlcmZseShhcnJheU1vZGUpKTsKKyAgICAgICAgICAgIAorICAgICAg
ICAgICAgcmV0dXJuIGFycmF5aWZ5SW5kZXg7CisgICAgICAgIH0KKyAgICAgICAgCiAgICAgICAg
IE5vZGUgY2hlY2tBcnJheShDaGVja0FycmF5LCBjb2RlT3JpZ2luLCBPcEluZm8oYXJyYXlNb2Rl
KSwgYXJyYXkpOwogICAgICAgICBjaGVja0FycmF5LnJlZigpOwogICAgICAgICBOb2RlSW5kZXgg
Y2hlY2tBcnJheUluZGV4ID0gbV9ncmFwaC5zaXplKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR05vZGVUeXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdOb2RlVHlwZS5oCShyZXZpc2lvbiAxMjg4MjYpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEzOSw2ICsxMzks
NyBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAgICAgbWFjcm8oUmVhbGxvY2F0
ZVByb3BlcnR5U3RvcmFnZSwgTm9kZU11c3RHZW5lcmF0ZSB8IE5vZGVEb2VzTm90RXhpdCB8IE5v
ZGVSZXN1bHRTdG9yYWdlKSBcCiAgICAgbWFjcm8oR2V0QnV0dGVyZmx5LCBOb2RlUmVzdWx0U3Rv
cmFnZSkgXAogICAgIG1hY3JvKENoZWNrQXJyYXksIE5vZGVNdXN0R2VuZXJhdGUpIFwKKyAgICBt
YWNybyhBcnJheWlmeSwgTm9kZU11c3RHZW5lcmF0ZSB8IE5vZGVDbG9iYmVyc1dvcmxkKSBcCiAg
ICAgbWFjcm8oR2V0SW5kZXhlZFByb3BlcnR5U3RvcmFnZSwgTm9kZVJlc3VsdFN0b3JhZ2UpIFwK
ICAgICBtYWNybyhHZXRCeU9mZnNldCwgTm9kZVJlc3VsdEpTKSBcCiAgICAgbWFjcm8oUHV0QnlP
ZmZzZXQsIE5vZGVNdXN0R2VuZXJhdGUpIFwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCShyZXZpc2lvbiAxMjg4MjYpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzI1LDcgKzMyNSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNoZWNrQXJyYXkoTm9k
ZSYgbm8KICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6WmVybywKICAgICAgICAgICAg
ICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyh0ZW1wLmdwcigpLCBTdHJ1Y3R1cmU6OmluZGV4
aW5nVHlwZU9mZnNldCgpKSwKICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3Rl
ZEltbTMyKAotICAgICAgICAgICAgICAgICAgICBpc1Nsb3dQdXRBY2Nlc3Mobm9kZS5hcnJheU1v
ZGUoKSkgPyBIYXNTbG93UHV0QXJyYXlTdG9yYWdlIDogSGFzQXJyYXlTdG9yYWdlKSkpOworICAg
ICAgICAgICAgICAgICAgICBpc1Nsb3dQdXRBY2Nlc3Mobm9kZS5hcnJheU1vZGUoKSkgPyAoSGFz
QXJyYXlTdG9yYWdlIHwgSGFzU2xvd1B1dEFycmF5U3RvcmFnZSkgOiBIYXNBcnJheVN0b3JhZ2Up
KSk7CiAgICAgICAgIAogICAgICAgICBub1Jlc3VsdChtX2NvbXBpbGVJbmRleCk7CiAgICAgICAg
IHJldHVybjsKQEAgLTM0Nyw3ICszNDcsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjaGVja0Fy
cmF5KE5vZGUmIG5vCiAgICAgICAgICAgICBVbmNvdW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgTm9O
b2RlLAogICAgICAgICAgICAgbV9qaXQuYnJhbmNoVGVzdDMyKAogICAgICAgICAgICAgICAgIE1h
Y3JvQXNzZW1ibGVyOjpaZXJvLCB0ZW1wR1BSLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMy
KAotICAgICAgICAgICAgICAgICAgICBpc1Nsb3dQdXRBY2Nlc3Mobm9kZS5hcnJheU1vZGUoKSkg
PyBIYXNTbG93UHV0QXJyYXlTdG9yYWdlIDogSGFzQXJyYXlTdG9yYWdlKSkpOworICAgICAgICAg
ICAgICAgICAgICBpc1Nsb3dQdXRBY2Nlc3Mobm9kZS5hcnJheU1vZGUoKSkgPyAoSGFzQXJyYXlT
dG9yYWdlIHwgSGFzU2xvd1B1dEFycmF5U3RvcmFnZSkgOiBIYXNBcnJheVN0b3JhZ2UpKSk7CiAg
ICAgICAgIAogICAgICAgICBub1Jlc3VsdChtX2NvbXBpbGVJbmRleCk7CiAgICAgICAgIHJldHVy
bjsKQEAgLTM4NCw2ICszODQsNzQgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y2hlY2tBcnJheShO
b2RlJiBubwogICAgIG5vUmVzdWx0KG1fY29tcGlsZUluZGV4KTsKIH0KIAordm9pZCBTcGVjdWxh
dGl2ZUpJVDo6YXJyYXlpZnkoTm9kZSYgbm9kZSkKK3sKKyAgICBBU1NFUlQobW9kZUlzU3BlY2lm
aWMobm9kZS5hcnJheU1vZGUoKSkpOworICAgIAorICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGJh
c2UodGhpcywgbm9kZS5jaGlsZDEoKSk7CisgICAgR1BSUmVnIGJhc2VSZWcgPSBiYXNlLmdwcigp
OworICAgIAorICAgIEFTU0VSVCghbW9kZUFscmVhZHlDaGVja2VkKG1fc3RhdGUuZm9yTm9kZShu
b2RlLmNoaWxkMSgpKSwgbm9kZS5hcnJheU1vZGUoKSkpOworICAgIAorICAgIHN3aXRjaCAobm9k
ZS5hcnJheU1vZGUoKSkgeworICAgIGNhc2UgRUZGRUNURlVMX05PTl9BUlJBWV9BUlJBWV9TVE9S
QUdFX01PREVTOiB7CisgICAgICAgIEdQUlRlbXBvcmFyeSBzdHJ1Y3R1cmUodGhpcyk7CisgICAg
ICAgIEdQUlRlbXBvcmFyeSB0ZW1wKHRoaXMpOworICAgICAgICBHUFJSZWcgc3RydWN0dXJlR1BS
ID0gc3RydWN0dXJlLmdwcigpOworICAgICAgICBHUFJSZWcgdGVtcEdQUiA9IHRlbXAuZ3ByKCk7
CisgICAgICAgIAorICAgICAgICBtX2ppdC5sb2FkUHRyKAorICAgICAgICAgICAgTWFjcm9Bc3Nl
bWJsZXI6OkFkZHJlc3MoYmFzZVJlZywgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHN0cnVj
dHVyZUdQUik7CisgICAgICAgIAorICAgICAgICAvLyBXZSBjYW4gc2tpcCBhbGwgdGhhdCBjb21l
cyBuZXh0IGlmIHdlIGFscmVhZHkgaGF2ZSBhcnJheSBzdG9yYWdlLgorICAgICAgICBJbmRleGlu
Z1R5cGUgZGVzaXJlZEluZGV4aW5nVHlwZU1hc2sgPQorICAgICAgICAgICAgaXNTbG93UHV0QWNj
ZXNzKG5vZGUuYXJyYXlNb2RlKCkpID8gKEhhc0FycmF5U3RvcmFnZSB8IEhhc1Nsb3dQdXRBcnJh
eVN0b3JhZ2UpIDogSGFzQXJyYXlTdG9yYWdlOworICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVt
cCBkb25lID0gbV9qaXQuYnJhbmNoVGVzdDgoCisgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6
Tm9uWmVybywKKyAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHN0cnVjdHVyZUdQ
UiwgU3RydWN0dXJlOjppbmRleGluZ1R5cGVPZmZzZXQoKSksCisgICAgICAgICAgICBNYWNyb0Fz
c2VtYmxlcjo6VHJ1c3RlZEltbTMyKGRlc2lyZWRJbmRleGluZ1R5cGVNYXNrKSk7CisgICAgICAg
IAorICAgICAgICAvLyBOZXh0IGNoZWNrIHRoYXQgdGhlIG9iamVjdCBkb2VzIG5vdCBpbnRlcmNl
cHQgaW5kZXhlZCBhY2Nlc3Nlcy4gSWYgaXQgZG9lcywKKyAgICAgICAgLy8gdGhlbiB0aGlzIG1v
ZGUgd29uJ3Qgd29yay4KKyAgICAgICAgc3BlY3VsYXRpb25DaGVjaygKKyAgICAgICAgICAgIFVu
Y291bnRhYmxlLCBKU1ZhbHVlUmVncygpLCBOb05vZGUsCisgICAgICAgICAgICBtX2ppdC5icmFu
Y2hUZXN0OCgKKyAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Tm9uWmVybywKKyAgICAg
ICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzdHJ1Y3R1cmVHUFIsIFN0cnVjdHVy
ZTo6dHlwZUluZm9GbGFnc09mZnNldCgpKSwKKyAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxl
cjo6VHJ1c3RlZEltbTMyKEludGVyY2VwdHNHZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4RXZlbldo
ZW5MZW5ndGhJc05vdFplcm8pKSk7CisgICAgICAgIAorICAgICAgICAvLyBOb3cgY2FsbCBvdXQg
dG8gY3JlYXRlIHRoZSBhcnJheSBzdG9yYWdlLgorICAgICAgICBzaWxlbnRTcGlsbEFsbFJlZ2lz
dGVycyh0ZW1wR1BSKTsKKyAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25FbnN1cmVBcnJh
eVN0b3JhZ2UsIHRlbXBHUFIsIGJhc2VSZWcpOworICAgICAgICBzaWxlbnRGaWxsQWxsUmVnaXN0
ZXJzKHRlbXBHUFIpOworCisgICAgICAgIC8vIEFsYXMsIHdlIG5lZWQgdG8gcmVsb2FkIHRoZSBz
dHJ1Y3R1cmUgYmVjYXVzZSBzaWxlbnQgc3BpbGxpbmcgZG9lcyBub3Qgc2F2ZQorICAgICAgICAv
LyB0ZW1wb3Jhcmllcy4gTm9yIHdvdWxkIGl0IGJlIHVzZWZ1bCBmb3IgaXQgdG8gZG8gc28uIEVp
dGhlciB3YXkgd2UncmUgdGFsa2luZworICAgICAgICAvLyBhYm91dCBhIGxvYWQuCisgICAgICAg
IG1faml0LmxvYWRQdHIoCisgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNl
UmVnLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgc3RydWN0dXJlR1BSKTsKKyAgICAgICAg
CisgICAgICAgIC8vIEZpbmFsbHksIGNoZWNrIHRoYXQgd2UgaGF2ZSB0aGUga2luZCBvZiBhcnJh
eSBzdG9yYWdlIHRoYXQgd2Ugd2FudGVkIHRvIGdldC4KKyAgICAgICAgLy8gTm90ZSB0aGF0IHRo
aXMgaXMgYSBiYWNrd2FyZHMgc3BlY3VsYXRpb24gY2hlY2ssIHdoaWNoIHdpbGwgcmVzdWx0IGlu
IHRoZSAKKyAgICAgICAgLy8gYnl0ZWNvZGUgb3BlcmF0aW9uIGNvcnJlc3BvbmRpbmcgdG8gdGhp
cyBhcnJheWlmaWNhdGlvbiBiZWluZyByZWV4ZWN1dGVkLgorICAgICAgICAvLyBUaGF0J3MgZmlu
ZSwgc2luY2UgYXJyYXlpZmljYXRpb24gaXMgbm90IHVzZXItdmlzaWJsZS4KKyAgICAgICAgc3Bl
Y3VsYXRpb25DaGVjaygKKyAgICAgICAgICAgIFVuY291bnRhYmxlLCBKU1ZhbHVlUmVncygpLCBO
b05vZGUsCisgICAgICAgICAgICBtX2ppdC5icmFuY2hUZXN0OCgKKyAgICAgICAgICAgICAgICBN
YWNyb0Fzc2VtYmxlcjo6WmVybywKKyAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRk
cmVzcyhzdHJ1Y3R1cmVHUFIsIFN0cnVjdHVyZTo6aW5kZXhpbmdUeXBlT2Zmc2V0KCkpLAorICAg
ICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoZGVzaXJlZEluZGV4aW5n
VHlwZU1hc2spKSk7CisgICAgICAgIAorICAgICAgICBkb25lLmxpbmsoJm1faml0KTsKKyAgICAg
ICAgc3RvcmFnZVJlc3VsdCh0ZW1wR1BSLCBtX2NvbXBpbGVJbmRleCk7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisgICAgZGVmYXVsdDoKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cisg
ICAgICAgIGJyZWFrOworICAgIH0KK30KKwogR1BSUmVnIFNwZWN1bGF0aXZlSklUOjpmaWxsU3Rv
cmFnZShOb2RlSW5kZXggbm9kZUluZGV4KQogewogICAgIE5vZGUmIG5vZGUgPSBtX2ppdC5ncmFw
aCgpW25vZGVJbmRleF07CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1
bGF0aXZlSklULmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
cGVjdWxhdGl2ZUpJVC5oCShyZXZpc2lvbiAxMjg4MjYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgJKHdvcmtpbmcgY29weSkKQEAgLTIyNjcsNiArMjI2
Nyw3IEBAIHB1YmxpYzoKICAgICBjb25zdCBUeXBlZEFycmF5RGVzY3JpcHRvciogdHlwZWRBcnJh
eURlc2NyaXB0b3IoQXJyYXk6Ok1vZGUpOwogICAgIAogICAgIHZvaWQgY2hlY2tBcnJheShOb2Rl
Jik7CisgICAgdm9pZCBhcnJheWlmeShOb2RlJik7CiAgICAgCiAgICAgdGVtcGxhdGU8Ym9vbCBz
dHJpY3Q+CiAgICAgR1BSUmVnIGZpbGxTcGVjdWxhdGVJbnRJbnRlcm5hbChOb2RlSW5kZXgsIERh
dGFGb3JtYXQmIHJldHVybkZvcm1hdCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU09iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTT2JqZWN0LmgJKHJldmlzaW9uIDEyODgyNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTUwNSw2ICs1MDUsMjUgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIC8vIGZvby0+YXR0ZW1wdFRvSW50ZXJjZXB0UHV0QnlJ
bmRleE9uSG9sZSguLi4pOwogICAgICAgICBib29sIGF0dGVtcHRUb0ludGVyY2VwdFB1dEJ5SW5k
ZXhPbkhvbGVGb3JQcm90b3R5cGUoRXhlY1N0YXRlKiwgSlNWYWx1ZSB0aGlzVmFsdWUsIHVuc2ln
bmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgYm9vbCBzaG91bGRUaHJvdyk7CiAgICAgICAgIAor
ICAgICAgICAvLyBFbnN1cmUgdGhhdCB0aGUgb2JqZWN0IGlzIGluIGEgbW9kZSB3aGVyZSBpdCBo
YXMgYXJyYXkgc3RvcmFnZS4gVXNlCisgICAgICAgIC8vIHRoaXMgaWYgeW91J3JlIGFib3V0IHRv
IHBlcmZvcm0gYWN0aW9ucyB0aGF0IHdvdWxkIGhhdmUgcmVxdWlyZWQgdGhlCisgICAgICAgIC8v
IG9iamVjdCB0byBiZSBjb252ZXJ0ZWQgdG8gaGF2ZSBhcnJheSBzdG9yYWdlLCBpZiBpdCBkaWRu
J3QgaGF2ZSBpdAorICAgICAgICAvLyBhbHJlYWR5LgorICAgICAgICBBcnJheVN0b3JhZ2UqIGVu
c3VyZUFycmF5U3RvcmFnZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIHN3aXRjaCAoc3RydWN0dXJlKCktPmluZGV4aW5nVHlwZSgpKSB7CisgICAgICAg
ICAgICBjYXNlIEFMTF9BUlJBWV9TVE9SQUdFX0lOREVYSU5HX1RZUEVTOgorICAgICAgICAgICAg
ICAgIHJldHVybiBtX2J1dHRlcmZseS0+YXJyYXlTdG9yYWdlKCk7CisgICAgICAgICAgICAgICAg
CisgICAgICAgICAgICBjYXNlIEFMTF9CTEFOS19JTkRFWElOR19UWVBFUzoKKyAgICAgICAgICAg
ICAgICByZXR1cm4gY3JlYXRlSW5pdGlhbEFycmF5U3RvcmFnZShnbG9iYWxEYXRhKTsKKyAgICAg
ICAgICAgICAgICAKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICB9
CisgICAgICAgIH0KKyAgICAgICAgCiAgICAgICAgIHN0YXRpYyBzaXplX3Qgb2Zmc2V0T2ZJbmxp
bmVTdG9yYWdlKCk7CiAgICAgICAgIAogICAgICAgICBzdGF0aWMgcHRyZGlmZl90IGJ1dHRlcmZs
eU9mZnNldCgpCkBAIC01NjUsMjUgKzU4NCw2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAg
ICAgfQogICAgICAgICB9CiAKLSAgICAgICAgLy8gRW5zdXJlIHRoYXQgdGhlIG9iamVjdCBpcyBp
biBhIG1vZGUgd2hlcmUgaXQgaGFzIGFycmF5IHN0b3JhZ2UuIFVzZQotICAgICAgICAvLyB0aGlz
IGlmIHlvdSdyZSBhYm91dCB0byBwZXJmb3JtIGFjdGlvbnMgdGhhdCB3b3VsZCBoYXZlIHJlcXVp
cmVkIHRoZQotICAgICAgICAvLyBvYmplY3QgdG8gYmUgY29udmVydGVkIHRvIGhhdmUgYXJyYXkg
c3RvcmFnZSwgaWYgaXQgZGlkbid0IGhhdmUgaXQKLSAgICAgICAgLy8gYWxyZWFkeS4KLSAgICAg
ICAgQXJyYXlTdG9yYWdlKiBlbnN1cmVBcnJheVN0b3JhZ2UoSlNHbG9iYWxEYXRhJiBnbG9iYWxE
YXRhKQotICAgICAgICB7Ci0gICAgICAgICAgICBzd2l0Y2ggKHN0cnVjdHVyZSgpLT5pbmRleGlu
Z1R5cGUoKSkgewotICAgICAgICAgICAgY2FzZSBBTExfQVJSQVlfU1RPUkFHRV9JTkRFWElOR19U
WVBFUzoKLSAgICAgICAgICAgICAgICByZXR1cm4gbV9idXR0ZXJmbHktPmFycmF5U3RvcmFnZSgp
OwotICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgY2FzZSBBTExfQkxBTktfSU5ERVhJTkdf
VFlQRVM6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZUluaXRpYWxBcnJheVN0b3JhZ2Uo
Z2xvYmFsRGF0YSk7Ci0gICAgICAgICAgICAgICAgCi0gICAgICAgICAgICBkZWZhdWx0OgotICAg
ICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICAgICAgICAgIHJldHVy
biAwOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIAogICAgICAgICBBcnJheVN0
b3JhZ2UqIGNyZWF0ZUFycmF5U3RvcmFnZShKU0dsb2JhbERhdGEmLCB1bnNpZ25lZCBsZW5ndGgs
IHVuc2lnbmVkIHZlY3Rvckxlbmd0aCk7CiAgICAgICAgIEFycmF5U3RvcmFnZSogY3JlYXRlSW5p
dGlhbEFycmF5U3RvcmFnZShKU0dsb2JhbERhdGEmKTsKICAgICAgICAgCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmgJKHJldmlzaW9uIDEyODgyNikKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmgJKHdvcmtpbmcgY29weSkKQEAg
LTE1NSw3ICsxNTUsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBzdGF0aWMgU3RydWN0
dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvKQogICAgICAgICB7Ci0gICAgICAgICAg
ICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUoZ2xvYmFsRGF0YSwgZ2xvYmFsT2JqZWN0LCBwcm90
bywgVHlwZUluZm8oU3RyaW5nVHlwZSwgT3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90KSwgJnNf
aW5mbyk7CisgICAgICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUoZ2xvYmFsRGF0YSwg
Z2xvYmFsT2JqZWN0LCBwcm90bywgVHlwZUluZm8oU3RyaW5nVHlwZSwgT3ZlcnJpZGVzR2V0T3du
UHJvcGVydHlTbG90IHwgSW50ZXJjZXB0c0dldE93blByb3BlcnR5U2xvdEJ5SW5kZXhFdmVuV2hl
bkxlbmd0aElzTm90WmVybyksICZzX2luZm8pOwogICAgICAgICB9CiAKICAgICAgICAgc3RhdGlj
IHNpemVfdCBvZmZzZXRPZkxlbmd0aCgpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihKU1N0cmlu
ZywgbV9sZW5ndGgpOyB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>164514</attachid>
            <date>2012-09-18 01:34:22 -0700</date>
            <delta_ts>2012-09-18 15:10:06 -0700</delta_ts>
            <desc>may be the patch</desc>
            <filename>createarraystorage_patch_2.diff</filename>
            <type>text/plain</type>
            <size>41445</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTI4ODU5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDc0IEBA
CisyMDEyLTA5LTE4ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
REZHIHNob3VsZCBub3QgT1NSIGV4aXQgZXZlcnkgdGltZSB0aGF0IGl0IHRyaWVzIHRvIHB1dCB0
byBhbiBvYmplY3QgdGhhdCBkb2Vzbid0IHlldCBoYXZlIGFycmF5IHN0b3JhZ2UKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk2OTgzCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW50cm9kdWNlIG1vcmUgcG9s
eW1vcnBoaXNtIGludG8gdGhlIERGRydzIGFycmF5IG1vZGUgc3VwcG9ydC4gVXNlIHRoYXQgdG8K
KyAgICAgICAgaW50cm9kdWNlIHRoZSBub3Rpb24gb2YgZWZmZWN0dWwgYXJyYXkgbW9kZXMsIHdo
ZXJlIHRoZSBjaGVjayBmb3IgdGhlIG1vZGUKKyAgICAgICAgd2lsbCBwZXJmb3JtIGFjdGlvbnMg
bmVjZXNzYXJ5IHRvIGVuc3VyZSB0aGF0IHdlIGhhdmUgdGhlIG1vZGUgd2Ugd2FudCwgaWYKKyAg
ICAgICAgdGhlIG9iamVjdCBpcyBub3QgYWxyZWFkeSBpbiB0aGF0IG1vZGUuIEFsc28gYWRkZWQg
cHJvZmlsaW5nIHN1cHBvcnQgZm9yCisgICAgICAgIGNoZWNraW5nIGlmIGFuIG9iamVjdCBpcyBv
ZiBhIHR5cGUgdGhhdCB3b3VsZCBub3QgYWxsb3cgdXMgdG8gY3JlYXRlCisgICAgICAgIGFycmF5
IHN0b3JhZ2UgKGxpa2UgYSB0eXBlZCBhcnJheSBvciBhIHN0cmluZyBmb3IgZXhhbXBsZSkuCisg
ICAgICAgIAorICAgICAgICBUaGlzIGlzIHN0aWxsIGEgd29yayBpbiBwcm9ncmVzcywgaW4gdGhl
IHNlbnNlIHRoYXQgSSBoYXZlbid0IHRlc3RlZCBpdAorICAgICAgICBvdGhlciB0aGFuIHNob3dp
bmcgdGhhdCBpdCdzIGEgMnggc3BlZWQtdXAgb24gbXkgdG95IGJlbmNobm1hcmsuCisgICAgICAg
IAorICAgICAgICAqIGJ5dGVjb2RlL0FycmF5UHJvZmlsZS5jcHA6CisgICAgICAgIChKU0M6OkFy
cmF5UHJvZmlsZTo6Y29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKToKKyAgICAgICAgKiBieXRlY29k
ZS9BcnJheVByb2ZpbGUuaDoKKyAgICAgICAgKEpTQzo6QXJyYXlQcm9maWxlOjpBcnJheVByb2Zp
bGUpOgorICAgICAgICAoSlNDOjpBcnJheVByb2ZpbGU6Om1heUludGVyY2VwdEluZGV4ZWRBY2Nl
c3Nlcyk6CisgICAgICAgIChBcnJheVByb2ZpbGUpOgorICAgICAgICAqIGRmZy9ERkdBYnN0cmFj
dFN0YXRlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdFN0YXRlOjpleGVjdXRlKToK
KyAgICAgICAgKiBkZmcvREZHQXJyYXlNb2RlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpmcm9t
T2JzZXJ2ZWQpOgorICAgICAgICAoREZHKToKKyAgICAgICAgKEpTQzo6REZHOjptb2RlQWxyZWFk
eUNoZWNrZWQpOgorICAgICAgICAoSlNDOjpERkc6Om1vZGVUb1N0cmluZyk6CisgICAgICAgICog
ZGZnL0RGR0FycmF5TW9kZS5oOgorICAgICAgICAoREZHKToKKyAgICAgICAgKEpTQzo6REZHOjpt
b2RlVXNlc0J1dHRlcmZseSk6CisgICAgICAgIChKU0M6OkRGRzo6aXNTbG93UHV0QWNjZXNzKToK
KyAgICAgICAgKEpTQzo6REZHOjpiZW5lZml0c0Zyb21TdHJ1Y3R1cmVDaGVjayk6CisgICAgICAg
IChKU0M6OkRGRzo6aXNFZmZlY3RmdWwpOgorICAgICAgICAqIGRmZy9ERkdCeXRlQ29kZVBhcnNl
ci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmdldEFycmF5TW9kZSk6
CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmdldEFycmF5TW9kZUFuZEVtaXRD
aGVja3MpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKToK
KyAgICAgICAgKiBkZmcvREZHQ1NFUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkNTRVBo
YXNlOjpnZXRQcm9wZXJ0eVN0b3JhZ2VMb2FkRWxpbWluYXRpb24pOgorICAgICAgICAqIGRmZy9E
RkdGaXh1cFBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNlOjpmaXh1cE5v
ZGUpOgorICAgICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6OmNoZWNrQXJyYXkpOgorICAgICAg
ICAqIGRmZy9ERkdHcmFwaC5oOgorICAgICAgICAoSlNDOjpERkc6OkdyYXBoOjpieVZhbElzUHVy
ZSk6CisgICAgICAgICogZGZnL0RGR05vZGUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpo
YXNBcnJheU1vZGUpOgorICAgICAgICAqIGRmZy9ERkdOb2RlVHlwZS5oOgorICAgICAgICAoREZH
KToKKyAgICAgICAgKiBkZmcvREZHT3BlcmF0aW9ucy5jcHA6CisgICAgICAgICogZGZnL0RGR09w
ZXJhdGlvbnMuaDoKKyAgICAgICAgKiBkZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2Uu
Y3BwOgorICAgICAgICAoSlNDOjpERkc6OlByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlOjpwcm9w
YWdhdGUpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHA6CisgICAgICAgIChK
U0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNoZWNrQXJyYXkpOgorICAgICAgICAoSlNDOjpERkc6
OlNwZWN1bGF0aXZlSklUOjphcnJheWlmeSk6CisgICAgICAgIChERkcpOgorICAgICAgICAqIGRm
Zy9ERkdTcGVjdWxhdGl2ZUpJVC5oOgorICAgICAgICAoU3BlY3VsYXRpdmVKSVQpOgorICAgICAg
ICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklU
NjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAg
ICAgICAgKiBydW50aW1lL0pTT2JqZWN0Lmg6CisgICAgICAgIChKU09iamVjdCk6CisgICAgICAg
IChKU0M6OkpTT2JqZWN0OjplbnN1cmVBcnJheVN0b3JhZ2UpOgorICAgICAgICAqIHJ1bnRpbWUv
SlNTdHJpbmcuaDoKKyAgICAgICAgKEpTQzo6SlNTdHJpbmc6OmNyZWF0ZVN0cnVjdHVyZSk6CisK
IDIwMTItMDktMTggIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KIAogICAgICAgICBV
bnJldmlld2VkLCBmaXggc2xvcHB5IEVuZ2xpc2ggaW4gY29tbWVudC4KSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BcnJheVByb2ZpbGUuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BcnJheVByb2ZpbGUuY3BwCShyZXZpc2lvbiAx
Mjg4MjYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJyYXlQcm9maWxlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzIsNiArMzIsOCBAQCB2b2lkIEFycmF5UHJvZmlsZTo6Y29t
cHV0ZVVwZGF0ZWRQcmVkaWN0CiB7CiAgICAgaWYgKG1fbGFzdFNlZW5TdHJ1Y3R1cmUpIHsKICAg
ICAgICAgbV9vYnNlcnZlZEFycmF5TW9kZXMgfD0gYXJyYXlNb2RlRnJvbVN0cnVjdHVyZShtX2xh
c3RTZWVuU3RydWN0dXJlKTsKKyAgICAgICAgbV9tYXlJbnRlcmNlcHRJbmRleGVkQWNjZXNzZXMg
fD0KKyAgICAgICAgICAgIG1fbGFzdFNlZW5TdHJ1Y3R1cmUtPnR5cGVJbmZvKCkuaW50ZXJjZXB0
c0dldE93blByb3BlcnR5U2xvdEJ5SW5kZXhFdmVuV2hlbkxlbmd0aElzTm90WmVybygpOwogICAg
ICAgICBpZiAoIW1fc3RydWN0dXJlSXNQb2x5bW9ycGhpYykgewogICAgICAgICAgICAgaWYgKCFt
X2V4cGVjdGVkU3RydWN0dXJlKQogICAgICAgICAgICAgICAgIG1fZXhwZWN0ZWRTdHJ1Y3R1cmUg
PSBtX2xhc3RTZWVuU3RydWN0dXJlOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0FycmF5UHJvZmlsZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9BcnJheVByb2ZpbGUuaAkocmV2aXNpb24gMTI4ODI2KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0FycmF5UHJvZmlsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC01NCw2
ICs1NCw3IEBAIHB1YmxpYzoKICAgICAgICAgLCBtX2xhc3RTZWVuU3RydWN0dXJlKDApCiAgICAg
ICAgICwgbV9leHBlY3RlZFN0cnVjdHVyZSgwKQogICAgICAgICAsIG1fc3RydWN0dXJlSXNQb2x5
bW9ycGhpYyhmYWxzZSkKKyAgICAgICAgLCBtX21heUludGVyY2VwdEluZGV4ZWRBY2Nlc3Nlcyhm
YWxzZSkKICAgICAgICAgLCBtX29ic2VydmVkQXJyYXlNb2RlcygwKQogICAgIHsKICAgICB9CkBA
IC02Myw2ICs2NCw3IEBAIHB1YmxpYzoKICAgICAgICAgLCBtX2xhc3RTZWVuU3RydWN0dXJlKDAp
CiAgICAgICAgICwgbV9leHBlY3RlZFN0cnVjdHVyZSgwKQogICAgICAgICAsIG1fc3RydWN0dXJl
SXNQb2x5bW9ycGhpYyhmYWxzZSkKKyAgICAgICAgLCBtX21heUludGVyY2VwdEluZGV4ZWRBY2Nl
c3NlcyhmYWxzZSkKICAgICAgICAgLCBtX29ic2VydmVkQXJyYXlNb2RlcygwKQogICAgIHsKICAg
ICB9CkBAIC04OSw2ICs5MSw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuICFzdHJ1Y3R1cmVJ
c1BvbHltb3JwaGljKCkgJiYgbV9leHBlY3RlZFN0cnVjdHVyZTsKICAgICB9CiAgICAgQXJyYXlN
b2RlcyBvYnNlcnZlZEFycmF5TW9kZXMoKSBjb25zdCB7IHJldHVybiBtX29ic2VydmVkQXJyYXlN
b2RlczsgfQorICAgIGJvb2wgbWF5SW50ZXJjZXB0SW5kZXhlZEFjY2Vzc2VzKCkgY29uc3QgeyBy
ZXR1cm4gbV9tYXlJbnRlcmNlcHRJbmRleGVkQWNjZXNzZXM7IH0KICAgICAKIHByaXZhdGU6CiAg
ICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKQEAgLTk3LDYgKzEwMCw3IEBA
IHByaXZhdGU6CiAgICAgU3RydWN0dXJlKiBtX2xhc3RTZWVuU3RydWN0dXJlOwogICAgIFN0cnVj
dHVyZSogbV9leHBlY3RlZFN0cnVjdHVyZTsKICAgICBib29sIG1fc3RydWN0dXJlSXNQb2x5bW9y
cGhpYzsKKyAgICBib29sIG1fbWF5SW50ZXJjZXB0SW5kZXhlZEFjY2Vzc2VzOwogICAgIEFycmF5
TW9kZXMgbV9vYnNlcnZlZEFycmF5TW9kZXM7CiB9OwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0Fic3RyYWN0U3RhdGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RTdGF0ZS5jcHAJKHJldmlzaW9uIDEyODgyNikKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RTdGF0ZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTg2Myw2ICs4NjMsNyBAQCBib29sIEFic3RyYWN0U3RhdGU6OmV4ZWN1dGUodW5z
aWduZWQgaW5kCiAgICAgICAgICAgICBmb3JOb2RlKG5vZGVJbmRleCkubWFrZVRvcCgpOwogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgT1VUX09GX0JPVU5EU19BUlJBWV9TVE9SQUdF
X01PREVTOgorICAgICAgICBjYXNlIEFMTF9FRkZFQ1RGVUxfQVJSQVlfU1RPUkFHRV9NT0RFUzoK
ICAgICAgICAgICAgIGZvck5vZGUobm9kZS5jaGlsZDIoKSkuZmlsdGVyKFNwZWNJbnQzMik7CiAg
ICAgICAgICAgICBjbG9iYmVyV29ybGQobm9kZS5jb2RlT3JpZ2luLCBpbmRleEluQmxvY2spOwog
ICAgICAgICAgICAgZm9yTm9kZShub2RlSW5kZXgpLm1ha2VUb3AoKTsKQEAgLTkyNiw2ICs5Mjcs
NyBAQCBib29sIEFic3RyYWN0U3RhdGU6OmV4ZWN1dGUodW5zaWduZWQgaW5kCiAgICAgICAgICAg
ICBmb3JOb2RlKGNoaWxkMikuZmlsdGVyKFNwZWNJbnQzMik7CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgY2FzZSBPVVRfT0ZfQk9VTkRTX0FSUkFZX1NUT1JBR0VfTU9ERVM6CisgICAgICAg
IGNhc2UgQUxMX0VGRkVDVEZVTF9BUlJBWV9TVE9SQUdFX01PREVTOgogICAgICAgICAgICAgZm9y
Tm9kZShjaGlsZDIpLmZpbHRlcihTcGVjSW50MzIpOwogICAgICAgICAgICAgY2xvYmJlcldvcmxk
KG5vZGUuY29kZU9yaWdpbiwgaW5kZXhJbkJsb2NrKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAt
MTM5Nyw2ICsxMzk5LDIwIEBAIGJvb2wgQWJzdHJhY3RTdGF0ZTo6ZXhlY3V0ZSh1bnNpZ25lZCBp
bmQKICAgICAgICAgfQogICAgICAgICBicmVhazsKICAgICB9CisgICAgY2FzZSBBcnJheWlmeTog
eworICAgICAgICBzd2l0Y2ggKG5vZGUuYXJyYXlNb2RlKCkpIHsKKyAgICAgICAgY2FzZSBFRkZF
Q1RGVUxfTk9OX0FSUkFZX0FSUkFZX1NUT1JBR0VfTU9ERVM6CisgICAgICAgICAgICBub2RlLnNl
dENhbkV4aXQodHJ1ZSk7CisgICAgICAgICAgICBmb3JOb2RlKG5vZGUuY2hpbGQxKCkpLmZpbHRl
cihTcGVjQ2VsbCk7CisgICAgICAgICAgICBmb3JOb2RlKG5vZGVJbmRleCkuY2xlYXIoKTsKKyAg
ICAgICAgICAgIGNsb2JiZXJTdHJ1Y3R1cmVzKGluZGV4SW5CbG9jayk7CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAgfQog
ICAgIGNhc2UgR2V0SW5kZXhlZFByb3BlcnR5U3RvcmFnZTogewogICAgICAgICBzd2l0Y2ggKG5v
ZGUuYXJyYXlNb2RlKCkpIHsKICAgICAgICAgY2FzZSBBcnJheTo6U3RyaW5nOgpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcnJheU1vZGUuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJyYXlNb2RlLmNwcAkocmV2aXNpb24gMTI4ODI2
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcnJheU1vZGUuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zMiwyNiArMzIsMzkgQEAKIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBE
RkcgewogCi1BcnJheTo6TW9kZSBmcm9tT2JzZXJ2ZWQoQXJyYXlNb2RlcyBtb2RlcywgYm9vbCBt
YWtlU2FmZSkKK0FycmF5OjpNb2RlIGZyb21PYnNlcnZlZChBcnJheVByb2ZpbGUqIHByb2ZpbGUs
IEFycmF5OjpBY3Rpb24gYWN0aW9uLCBib29sIG1ha2VTYWZlKQogewotICAgIC8vIEZJWE1FOiB3
ZSBtYXkgd2FudCB0byBhZGQgc29tZSBwb2x5bW9ycGhpYyBzdXBwb3J0IGluIHRoZSBmdXR1cmUu
IFRoYXQncyB3aHkgdGhpcwotICAgIC8vIGlzIGEgc3dpdGNoIHN0YXRlbWVudCByaWdodCBub3cu
Ci0gICAgCi0gICAgc3dpdGNoIChtb2RlcykgeworICAgIHN3aXRjaCAocHJvZmlsZS0+b2JzZXJ2
ZWRBcnJheU1vZGVzKCkpIHsKICAgICBjYXNlIDA6CiAgICAgICAgIHJldHVybiBBcnJheTo6VW5k
ZWNpZGVkOworICAgIGNhc2UgYXNBcnJheU1vZGVzKE5vbkFycmF5KToKKyAgICAgICAgaWYgKGFj
dGlvbiA9PSBBcnJheTo6V3JpdGUgJiYgIXByb2ZpbGUtPm1heUludGVyY2VwdEluZGV4ZWRBY2Nl
c3NlcygpKQorICAgICAgICAgICAgcmV0dXJuIEFycmF5OjpCbGFua1RvQXJyYXlTdG9yYWdlOyAv
LyBGSVhNRTogd2UgZG9uJ3Qga25vdyB3aGV0aGVyIHRvIGdvIHRvIHNsb3cgcHV0IG1vZGUsIG9y
IG5vdC4gVGhpcyBpcyBhIGRlY2VudCBndWVzcy4KKyAgICAgICAgcmV0dXJuIEFycmF5OjpVbmRl
Y2lkZWQ7CiAgICAgY2FzZSBhc0FycmF5TW9kZXMoTm9uQXJyYXlXaXRoQXJyYXlTdG9yYWdlKToK
ICAgICAgICAgcmV0dXJuIG1ha2VTYWZlID8gQXJyYXk6OkFycmF5U3RvcmFnZU91dE9mQm91bmRz
IDogQXJyYXk6OkFycmF5U3RvcmFnZTsKICAgICBjYXNlIGFzQXJyYXlNb2RlcyhOb25BcnJheVdp
dGhTbG93UHV0QXJyYXlTdG9yYWdlKToKKyAgICBjYXNlIGFzQXJyYXlNb2RlcyhOb25BcnJheVdp
dGhBcnJheVN0b3JhZ2UpIHwgYXNBcnJheU1vZGVzKE5vbkFycmF5V2l0aFNsb3dQdXRBcnJheVN0
b3JhZ2UpOgogICAgICAgICByZXR1cm4gQXJyYXk6OlNsb3dQdXRBcnJheVN0b3JhZ2U7CiAgICAg
Y2FzZSBhc0FycmF5TW9kZXMoQXJyYXlXaXRoQXJyYXlTdG9yYWdlKToKICAgICAgICAgcmV0dXJu
IG1ha2VTYWZlID8gQXJyYXk6OkFycmF5V2l0aEFycmF5U3RvcmFnZU91dE9mQm91bmRzIDogQXJy
YXk6OkFycmF5V2l0aEFycmF5U3RvcmFnZTsKICAgICBjYXNlIGFzQXJyYXlNb2RlcyhBcnJheVdp
dGhTbG93UHV0QXJyYXlTdG9yYWdlKToKKyAgICBjYXNlIGFzQXJyYXlNb2RlcyhBcnJheVdpdGhB
cnJheVN0b3JhZ2UpIHwgYXNBcnJheU1vZGVzKEFycmF5V2l0aFNsb3dQdXRBcnJheVN0b3JhZ2Up
OgogICAgICAgICByZXR1cm4gQXJyYXk6OkFycmF5V2l0aFNsb3dQdXRBcnJheVN0b3JhZ2U7CiAg
ICAgY2FzZSBhc0FycmF5TW9kZXMoTm9uQXJyYXlXaXRoQXJyYXlTdG9yYWdlKSB8IGFzQXJyYXlN
b2RlcyhBcnJheVdpdGhBcnJheVN0b3JhZ2UpOgogICAgICAgICByZXR1cm4gbWFrZVNhZmUgPyBB
cnJheTo6UG9zc2libHlBcnJheVdpdGhBcnJheVN0b3JhZ2VPdXRPZkJvdW5kcyA6IEFycmF5OjpQ
b3NzaWJseUFycmF5V2l0aEFycmF5U3RvcmFnZTsKICAgICBjYXNlIGFzQXJyYXlNb2RlcyhOb25B
cnJheVdpdGhTbG93UHV0QXJyYXlTdG9yYWdlKSB8IGFzQXJyYXlNb2RlcyhBcnJheVdpdGhTbG93
UHV0QXJyYXlTdG9yYWdlKToKKyAgICBjYXNlIGFzQXJyYXlNb2RlcyhOb25BcnJheVdpdGhBcnJh
eVN0b3JhZ2UpIHwgYXNBcnJheU1vZGVzKEFycmF5V2l0aEFycmF5U3RvcmFnZSkgfCBhc0FycmF5
TW9kZXMoTm9uQXJyYXlXaXRoU2xvd1B1dEFycmF5U3RvcmFnZSkgfCBhc0FycmF5TW9kZXMoQXJy
YXlXaXRoU2xvd1B1dEFycmF5U3RvcmFnZSk6CiAgICAgICAgIHJldHVybiBBcnJheTo6UG9zc2li
bHlBcnJheVdpdGhTbG93UHV0QXJyYXlTdG9yYWdlOworICAgIGNhc2UgYXNBcnJheU1vZGVzKE5v
bkFycmF5KSB8IGFzQXJyYXlNb2RlcyhOb25BcnJheVdpdGhBcnJheVN0b3JhZ2UpOgorICAgICAg
ICBpZiAoYWN0aW9uID09IEFycmF5OjpXcml0ZSAmJiAhcHJvZmlsZS0+bWF5SW50ZXJjZXB0SW5k
ZXhlZEFjY2Vzc2VzKCkpCisgICAgICAgICAgICByZXR1cm4gQXJyYXk6OkJsYW5rVG9BcnJheVN0
b3JhZ2U7CisgICAgICAgIHJldHVybiBBcnJheTo6VW5kZWNpZGVkOworICAgIGNhc2UgYXNBcnJh
eU1vZGVzKE5vbkFycmF5KSB8IGFzQXJyYXlNb2RlcyhOb25BcnJheVdpdGhTbG93UHV0QXJyYXlT
dG9yYWdlKToKKyAgICBjYXNlIGFzQXJyYXlNb2RlcyhOb25BcnJheSkgfCBhc0FycmF5TW9kZXMo
Tm9uQXJyYXlXaXRoQXJyYXlTdG9yYWdlKSB8IGFzQXJyYXlNb2RlcyhOb25BcnJheVdpdGhTbG93
UHV0QXJyYXlTdG9yYWdlKToKKyAgICAgICAgaWYgKGFjdGlvbiA9PSBBcnJheTo6V3JpdGUgJiYg
IXByb2ZpbGUtPm1heUludGVyY2VwdEluZGV4ZWRBY2Nlc3NlcygpKQorICAgICAgICAgICAgcmV0
dXJuIEFycmF5OjpCbGFua1RvU2xvd1B1dEFycmF5U3RvcmFnZTsKKyAgICAgICAgcmV0dXJuIEFy
cmF5OjpVbmRlY2lkZWQ7CiAgICAgZGVmYXVsdDoKICAgICAgICAgLy8gV2Uga25vdyB0aGF0IHRo
aXMgaXMgcG9zc2libHkgYSBraW5kIG9mIGFycmF5IGZvciB3aGljaCwgdGhvdWdoIHRoZXJlIGlz
IG5vCiAgICAgICAgIC8vIHVzZWZ1bCBkYXRhIGluIHRoZSBhcnJheSBwcm9maWxlLCB3ZSBtYXkg
YmUgYWJsZSB0byBleHRyYWN0IHVzZWZ1bCBkYXRhIGZyb20KQEAgLTYxLDExICs3NCw2IEBAIEFy
cmF5OjpNb2RlIGZyb21PYnNlcnZlZChBcnJheU1vZGVzIG1vZGUKICAgICB9CiB9CiAKLUFycmF5
OjpNb2RlIGZyb21TdHJ1Y3R1cmUoU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGJvb2wgbWFrZVNhZmUp
Ci17Ci0gICAgcmV0dXJuIGZyb21PYnNlcnZlZChhcnJheU1vZGVGcm9tU3RydWN0dXJlKHN0cnVj
dHVyZSksIG1ha2VTYWZlKTsKLX0KLQogQXJyYXk6Ok1vZGUgcmVmaW5lQXJyYXlNb2RlKEFycmF5
OjpNb2RlIGFycmF5TW9kZSwgU3BlY3VsYXRlZFR5cGUgYmFzZSwgU3BlY3VsYXRlZFR5cGUgaW5k
ZXgpCiB7CiAgICAgaWYgKCFiYXNlIHx8ICFpbmRleCkgewpAQCAtMTQwLDcgKzE0OCw3IEBAIGJv
b2wgbW9kZUFscmVhZHlDaGVja2VkKEFic3RyYWN0VmFsdWUmIHYKICAgICBjYXNlIEFycmF5OjpT
bG93UHV0QXJyYXlTdG9yYWdlOgogICAgIGNhc2UgQXJyYXk6OlBvc3NpYmx5QXJyYXlXaXRoU2xv
d1B1dEFycmF5U3RvcmFnZToKICAgICAgICAgcmV0dXJuIHZhbHVlLm1fY3VycmVudEtub3duU3Ry
dWN0dXJlLmhhc1NpbmdsZXRvbigpCi0gICAgICAgICAgICAmJiAodmFsdWUubV9jdXJyZW50S25v
d25TdHJ1Y3R1cmUuc2luZ2xldG9uKCktPmluZGV4aW5nVHlwZSgpICYgSGFzU2xvd1B1dEFycmF5
U3RvcmFnZSk7CisgICAgICAgICAgICAmJiAodmFsdWUubV9jdXJyZW50S25vd25TdHJ1Y3R1cmUu
c2luZ2xldG9uKCktPmluZGV4aW5nVHlwZSgpICYgKEhhc0FycmF5U3RvcmFnZSB8IEhhc1Nsb3dQ
dXRBcnJheVN0b3JhZ2UpKTsKICAgICAgICAgCiAgICAgY2FzZSBBcnJheTo6QXJyYXlXaXRoQXJy
YXlTdG9yYWdlOgogICAgIGNhc2UgQXJyYXk6OkFycmF5V2l0aEFycmF5U3RvcmFnZU91dE9mQm91
bmRzOgpAQCAtMTUwLDkgKzE1OCwxMiBAQCBib29sIG1vZGVBbHJlYWR5Q2hlY2tlZChBYnN0cmFj
dFZhbHVlJiB2CiAgICAgICAgIAogICAgIGNhc2UgQXJyYXk6OkFycmF5V2l0aFNsb3dQdXRBcnJh
eVN0b3JhZ2U6CiAgICAgICAgIHJldHVybiB2YWx1ZS5tX2N1cnJlbnRLbm93blN0cnVjdHVyZS5o
YXNTaW5nbGV0b24oKQotICAgICAgICAgICAgJiYgKHZhbHVlLm1fY3VycmVudEtub3duU3RydWN0
dXJlLnNpbmdsZXRvbigpLT5pbmRleGluZ1R5cGUoKSAmIEhhc1Nsb3dQdXRBcnJheVN0b3JhZ2Up
CisgICAgICAgICAgICAmJiAodmFsdWUubV9jdXJyZW50S25vd25TdHJ1Y3R1cmUuc2luZ2xldG9u
KCktPmluZGV4aW5nVHlwZSgpICYgKEhhc0FycmF5U3RvcmFnZSB8IEhhc1Nsb3dQdXRBcnJheVN0
b3JhZ2UpKQogICAgICAgICAgICAgJiYgKHZhbHVlLm1fY3VycmVudEtub3duU3RydWN0dXJlLnNp
bmdsZXRvbigpLT5pbmRleGluZ1R5cGUoKSAmIElzQXJyYXkpOwogICAgICAgICAKKyAgICBjYXNl
IEFMTF9FRkZFQ1RGVUxfQVJSQVlfU1RPUkFHRV9NT0RFUzoKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgICAgICAKICAgICBjYXNlIEFycmF5OjpBcmd1bWVudHM6CiAgICAgICAgIHJldHVybiBp
c0FyZ3VtZW50c1NwZWN1bGF0aW9uKHZhbHVlLm1fdHlwZSk7CiAgICAgICAgIApAQCAtMjIwLDYg
KzIzMSwxMCBAQCBjb25zdCBjaGFyKiBtb2RlVG9TdHJpbmcoQXJyYXk6Ok1vZGUgbW9kCiAgICAg
ICAgIHJldHVybiAiUG9zc2libHlBcnJheVdpdGhTbG93UHV0QXJyYXlTdG9yYWdlIjsKICAgICBj
YXNlIEFycmF5OjpQb3NzaWJseUFycmF5V2l0aEFycmF5U3RvcmFnZU91dE9mQm91bmRzOgogICAg
ICAgICByZXR1cm4gIlBvc3NpYmx5QXJyYXlXaXRoQXJyYXlTdG9yYWdlT3V0T2ZCb3VuZHMiOwor
ICAgIGNhc2UgQXJyYXk6OkJsYW5rVG9BcnJheVN0b3JhZ2U6CisgICAgICAgIHJldHVybiAiQmxh
bmtUb0FycmF5U3RvcmFnZSI7CisgICAgY2FzZSBBcnJheTo6QmxhbmtUb1Nsb3dQdXRBcnJheVN0
b3JhZ2U6CisgICAgICAgIHJldHVybiAiQmxhbmtUb1Nsb3dQdXRBcnJheVN0b3JhZ2UiOwogICAg
IGNhc2UgQXJyYXk6OkFyZ3VtZW50czoKICAgICAgICAgcmV0dXJuICJBcmd1bWVudHMiOwogICAg
IGNhc2UgQXJyYXk6OkludDhBcnJheToKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQXJyYXlNb2RlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdBcnJheU1vZGUuaAkocmV2aXNpb24gMTI4ODI2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdBcnJheU1vZGUuaAkod29ya2luZyBjb3B5KQpAQCAtNDEsMTEgKzQxLDE4IEBAIHN0
cnVjdCBBYnN0cmFjdFZhbHVlOwogLy8gdGhhdCB3b3VsZCBvdGhlcndpc2Ugb2NjdXIsIHNpbmNl
IHdlIHNheSB0aGluZ3MgbGlrZSAiSW50OEFycmF5IiBhbmQgIkpTQXJyYXkiCiAvLyBpbiBsb3Rz
IG9mIG90aGVyIHBsYWNlcywgdG8gbWVhbiBzdWJ0bHkgZGlmZmVyZW50IHRoaW5ncy4KIG5hbWVz
cGFjZSBBcnJheSB7CitlbnVtIEFjdGlvbiB7CisgICAgUmVhZCwKKyAgICBXcml0ZQorfTsKKwog
ZW51bSBNb2RlIHsKICAgICBVbmRlY2lkZWQsIC8vIEltcGxpZXMgdGhhdCB3ZSBuZWVkIHByZWRp
Y3Rpb25zIHRvIGRlY2lkZS4gV2Ugd2lsbCBuZXZlciBnZXQgdG8gdGhlIGJhY2tlbmQgaW4gdGhp
cyBtb2RlLgogICAgIEZvcmNlRXhpdCwgLy8gSW1wbGllcyB0aGF0IHdlIGhhdmUgbm8gaWRlYSBo
b3cgdG8gZXhlY3V0ZSB0aGlzIG9wZXJhdGlvbiwgc28gd2Ugc2hvdWxkIGp1c3QgZ2l2ZSB1cC4K
ICAgICBHZW5lcmljLAogICAgIFN0cmluZywKKyAgICAKKyAgICAvLyBNb2RlcyBvZiBjb252ZW50
aW9uYWwgaW5kZXhlZCBzdG9yYWdlIHdoZXJlIHRoZSBjaGVjayBpcyBub24gc2lkZS1lZmZlY3Rp
bmcuCiAgICAgQXJyYXlTdG9yYWdlLAogICAgIFNsb3dQdXRBcnJheVN0b3JhZ2UsCiAgICAgQXJy
YXlTdG9yYWdlT3V0T2ZCb3VuZHMsCkBAIC01NSw2ICs2MiwxMSBAQCBlbnVtIE1vZGUgewogICAg
IFBvc3NpYmx5QXJyYXlXaXRoQXJyYXlTdG9yYWdlLAogICAgIFBvc3NpYmx5QXJyYXlXaXRoU2xv
d1B1dEFycmF5U3RvcmFnZSwKICAgICBQb3NzaWJseUFycmF5V2l0aEFycmF5U3RvcmFnZU91dE9m
Qm91bmRzLAorICAgIAorICAgIC8vIE1vZGVzIG9mIGNvbnZlbnRpb25hbCBpbmRleGVkIHN0b3Jh
Z2Ugd2hlcmUgdGhlIGNoZWNrIGlzIHNpZGUtZWZmZWN0aW5nLgorICAgIEJsYW5rVG9BcnJheVN0
b3JhZ2UsCisgICAgQmxhbmtUb1Nsb3dQdXRBcnJheVN0b3JhZ2UsCisgICAgCiAgICAgQXJndW1l
bnRzLAogICAgIEludDhBcnJheSwKICAgICBJbnQxNkFycmF5LApAQCAtNzEsNiArODMsOCBAQCBl
bnVtIE1vZGUgewogLy8gSGVscGVycyBmb3IgJ2Nhc2UnIHN0YXRlbWVudHMuIEZvciBleGFtcGxl
LCBzYXlpbmcgImNhc2UgQWxsQXJyYXlTdG9yYWdlTW9kZXM6IgogLy8gaXMgdGhlIHNhbWUgYXMg
aGF2aW5nIG11bHRpcGxlIGNhc2Ugc3RhdGVtZW50cyBsaXN0aW5nIG9mZiBhbGwgb2YgdGhlIG1v
ZGVzIHRoYXQKIC8vIGhhdmUgdGhlIHdvcmQgIkFycmF5U3RvcmFnZSIgaW4gdGhlbS4KKworLy8g
Rmlyc3Q6IGhlbHBlcnMgZm9yIG5vbi1zaWRlLWVmZmVjdGluZyBjaGVja3MuCiAjZGVmaW5lIE5P
Tl9BUlJBWV9BUlJBWV9TVE9SQUdFX01PREVTICAgICAgICAgICAgICAgICAgICAgIFwKICAgICBB
cnJheTo6QXJyYXlTdG9yYWdlOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAog
ICAgIGNhc2UgQXJyYXk6OlNsb3dQdXRBcnJheVN0b3JhZ2U6ICAgICAgICAgICAgICAgICAgICAg
ICBcCkBAIC05OSw5ICsxMTMsMTYgQEAgZW51bSBNb2RlIHsKICAgICBjYXNlIEFycmF5OjpBcnJh
eVdpdGhBcnJheVN0b3JhZ2VPdXRPZkJvdW5kczogICAgICAgICAgXAogICAgIGNhc2UgQXJyYXk6
OlBvc3NpYmx5QXJyYXlXaXRoQXJyYXlTdG9yYWdlT3V0T2ZCb3VuZHMKIAotQXJyYXk6Ok1vZGUg
ZnJvbU9ic2VydmVkKEFycmF5TW9kZXMgbW9kZXMsIGJvb2wgbWFrZVNhZmUpOworLy8gTmV4dDog
aGVscGVycyBmb3Igc2lkZS1lZmZlY3RpbmcgY2hlY2tzLgorI2RlZmluZSBFRkZFQ1RGVUxfTk9O
X0FSUkFZX0FSUkFZX1NUT1JBR0VfTU9ERVMgXAorICAgIEFycmF5OjpCbGFua1RvQXJyYXlTdG9y
YWdlOiAgICAgICAgICAgICAgICAgXAorICAgIGNhc2UgQXJyYXk6OkJsYW5rVG9TbG93UHV0QXJy
YXlTdG9yYWdlCisjZGVmaW5lIEFMTF9FRkZFQ1RGVUxfQVJSQVlfU1RPUkFHRV9NT0RFUyAgICAg
ICBcCisgICAgRUZGRUNURlVMX05PTl9BUlJBWV9BUlJBWV9TVE9SQUdFX01PREVTCisjZGVmaW5l
IFNMT1dfUFVUX0VGRkVDVEZVTF9BUlJBWV9TVE9SQUdFX01PREVTICBcCisgICAgQXJyYXk6OkJs
YW5rVG9TbG93UHV0QXJyYXlTdG9yYWdlCiAKLUFycmF5OjpNb2RlIGZyb21TdHJ1Y3R1cmUoU3Ry
dWN0dXJlKiwgYm9vbCBtYWtlU2FmZSk7CitBcnJheTo6TW9kZSBmcm9tT2JzZXJ2ZWQoQXJyYXlQ
cm9maWxlKiwgQXJyYXk6OkFjdGlvbiwgYm9vbCBtYWtlU2FmZSk7CiAKIEFycmF5OjpNb2RlIHJl
ZmluZUFycmF5TW9kZShBcnJheTo6TW9kZSwgU3BlY3VsYXRlZFR5cGUgYmFzZSwgU3BlY3VsYXRl
ZFR5cGUgaW5kZXgpOwogCkBAIC0xMTMsNiArMTM0LDcgQEAgaW5saW5lIGJvb2wgbW9kZVVzZXNC
dXR0ZXJmbHkoQXJyYXk6Ok1vZAogewogICAgIHN3aXRjaCAoYXJyYXlNb2RlKSB7CiAgICAgY2Fz
ZSBBTExfQVJSQVlfU1RPUkFHRV9NT0RFUzoKKyAgICBjYXNlIEFMTF9FRkZFQ1RGVUxfQVJSQVlf
U1RPUkFHRV9NT0RFUzoKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgZGVmYXVsdDoKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwpAQCAtMTQzLDYgKzE2NSw3IEBAIGlubGluZSBib29sIGlzU2xvd1B1
dEFjY2VzcyhBcnJheTo6TW9kZSAKIHsKICAgICBzd2l0Y2ggKGFycmF5TW9kZSkgewogICAgIGNh
c2UgU0xPV19QVVRfQVJSQVlfU1RPUkFHRV9NT0RFUzoKKyAgICBjYXNlIFNMT1dfUFVUX0VGRkVD
VEZVTF9BUlJBWV9TVE9SQUdFX01PREVTOgogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICBkZWZh
dWx0OgogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0yMDYsNiArMjI5LDI5IEBAIGlubGluZSBi
b29sIG1vZGVTdXBwb3J0c0xlbmd0aChBcnJheTo6TW8KICAgICB9CiB9CiAKK2lubGluZSBib29s
IGJlbmVmaXRzRnJvbVN0cnVjdHVyZUNoZWNrKEFycmF5OjpNb2RlIG1vZGUpCit7CisgICAgc3dp
dGNoIChtb2RlKSB7CisgICAgY2FzZSBBTExfRUZGRUNURlVMX0FSUkFZX1NUT1JBR0VfTU9ERVM6
CisgICAgY2FzZSBBcnJheTo6VW5kZWNpZGVkOgorICAgIGNhc2UgQXJyYXk6OkZvcmNlRXhpdDoK
KyAgICBjYXNlIEFycmF5OjpHZW5lcmljOgorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgZGVm
YXVsdDoKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorfQorCitpbmxpbmUgYm9vbCBpc0Vm
ZmVjdGZ1bChBcnJheTo6TW9kZSBtb2RlKQoreworICAgIHN3aXRjaCAobW9kZSkgeworICAgIGNh
c2UgQUxMX0VGRkVDVEZVTF9BUlJBWV9TVE9SQUdFX01PREVTOgorICAgICAgICByZXR1cm4gdHJ1
ZTsKKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorfQorCiB9IH0g
Ly8gbmFtZXNwYWNlIEpTQzo6REZHCiAKICNlbmRpZiAvLyBFTkFCTEUoREZHX0pJVCkKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCShy
ZXZpc2lvbiAxMjg4MjYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2Rl
UGFyc2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODI4LDI2ICs4MjgsMjkgQEAgcHJpdmF0ZToK
ICAgICBBcnJheTo6TW9kZSBnZXRBcnJheU1vZGUoQXJyYXlQcm9maWxlKiBwcm9maWxlKQogICAg
IHsKICAgICAgICAgcHJvZmlsZS0+Y29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKCk7Ci0gICAgICAg
IHJldHVybiBmcm9tT2JzZXJ2ZWQocHJvZmlsZS0+b2JzZXJ2ZWRBcnJheU1vZGVzKCksIGZhbHNl
KTsKKyAgICAgICAgcmV0dXJuIGZyb21PYnNlcnZlZChwcm9maWxlLCBBcnJheTo6UmVhZCwgZmFs
c2UpOwogICAgIH0KICAgICAKLSAgICBBcnJheTo6TW9kZSBnZXRBcnJheU1vZGVBbmRFbWl0Q2hl
Y2tzKEFycmF5UHJvZmlsZSogcHJvZmlsZSwgTm9kZUluZGV4IGJhc2UpCisgICAgQXJyYXk6Ok1v
ZGUgZ2V0QXJyYXlNb2RlQW5kRW1pdENoZWNrcyhBcnJheVByb2ZpbGUqIHByb2ZpbGUsIEFycmF5
OjpBY3Rpb24gYWN0aW9uLCBOb2RlSW5kZXggYmFzZSkKICAgICB7CiAgICAgICAgIHByb2ZpbGUt
PmNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbigpOwotICAgICAgICBpZiAocHJvZmlsZS0+aGFzRGVm
aW5pdGVTdHJ1Y3R1cmUoKSkKLSAgICAgICAgICAgIGFkZFRvR3JhcGgoQ2hlY2tTdHJ1Y3R1cmUs
IE9wSW5mbyhtX2dyYXBoLmFkZFN0cnVjdHVyZVNldChwcm9maWxlLT5leHBlY3RlZFN0cnVjdHVy
ZSgpKSksIGJhc2UpOwogICAgICAgICAKICNpZiBERkdfRU5BQkxFKERFQlVHX1BST1BBR0FUSU9O
X1ZFUkJPU0UpCiAgICAgICAgIGlmIChtX2lubGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2st
Pm51bWJlck9mUmFyZUNhc2VQcm9maWxlcygpKQogICAgICAgICAgICAgZGF0YUxvZygiU2xvdyBj
YXNlIHByb2ZpbGUgZm9yIGJjIyV1OiAldVxuIiwgbV9jdXJyZW50SW5kZXgsIG1faW5saW5lU3Rh
Y2tUb3AtPm1fcHJvZmlsZWRCbG9jay0+cmFyZUNhc2VQcm9maWxlRm9yQnl0ZWNvZGVPZmZzZXQo
bV9jdXJyZW50SW5kZXgpLT5tX2NvdW50ZXIpOwotICAgICAgICBkYXRhTG9nKCJBcnJheSBwcm9m
aWxlIGZvciBiYyMldTogJXAlcywgJXVcbiIsIG1fY3VycmVudEluZGV4LCBwcm9maWxlLT5leHBl
Y3RlZFN0cnVjdHVyZSgpLCBwcm9maWxlLT5zdHJ1Y3R1cmVJc1BvbHltb3JwaGljKCkgPyAiIChw
b2x5bW9ycGhpYykiIDogIiIsIHByb2ZpbGUtPm9ic2VydmVkQXJyYXlNb2RlcygpKTsKKyAgICAg
ICAgZGF0YUxvZygiQXJyYXkgcHJvZmlsZSBmb3IgYmMjJXU6ICVwJXMlcywgJXVcbiIsIG1fY3Vy
cmVudEluZGV4LCBwcm9maWxlLT5leHBlY3RlZFN0cnVjdHVyZSgpLCBwcm9maWxlLT5zdHJ1Y3R1
cmVJc1BvbHltb3JwaGljKCkgPyAiIChwb2x5bW9ycGhpYykiIDogIiIsIHByb2ZpbGUtPm1heUlu
dGVyY2VwdEluZGV4ZWRBY2Nlc3NlcygpID8gIiAobWF5IGludGVyY2VwdCkiIDogIiIsIHByb2Zp
bGUtPm9ic2VydmVkQXJyYXlNb2RlcygpKTsKICNlbmRpZgogICAgICAgICAKICAgICAgICAgYm9v
bCBtYWtlU2FmZSA9CiAgICAgICAgICAgICBtX2lubGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxv
Y2stPmNvdWxkVGFrZVNsb3dDYXNlKG1fY3VycmVudEluZGV4KQogICAgICAgICAgICAgfHwgbV9p
bmxpbmVTdGFja1RvcC0+bV9leGl0UHJvZmlsZS5oYXNFeGl0U2l0ZShtX2N1cnJlbnRJbmRleCwg
T3V0T2ZCb3VuZHMpOwogICAgICAgICAKLSAgICAgICAgcmV0dXJuIGZyb21PYnNlcnZlZChwcm9m
aWxlLT5vYnNlcnZlZEFycmF5TW9kZXMoKSwgbWFrZVNhZmUpOworICAgICAgICBBcnJheTo6TW9k
ZSByZXN1bHQgPSBmcm9tT2JzZXJ2ZWQocHJvZmlsZSwgYWN0aW9uLCBtYWtlU2FmZSk7CisgICAg
ICAgIAorICAgICAgICBpZiAocHJvZmlsZS0+aGFzRGVmaW5pdGVTdHJ1Y3R1cmUoKSAmJiBiZW5l
Zml0c0Zyb21TdHJ1Y3R1cmVDaGVjayhyZXN1bHQpKQorICAgICAgICAgICAgYWRkVG9HcmFwaChD
aGVja1N0cnVjdHVyZSwgT3BJbmZvKG1fZ3JhcGguYWRkU3RydWN0dXJlU2V0KHByb2ZpbGUtPmV4
cGVjdGVkU3RydWN0dXJlKCkpKSwgYmFzZSk7CisgICAgICAgIAorICAgICAgICByZXR1cm4gcmVz
dWx0OwogICAgIH0KICAgICAKICAgICBOb2RlSW5kZXggbWFrZVNhZmUoTm9kZUluZGV4IG5vZGVJ
bmRleCkKQEAgLTIxODgsNyArMjE5MSw3IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxv
Y2sodW5zaWduZWQKICAgICAgICAgICAgIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24gPSBnZXRQ
cmVkaWN0aW9uKCk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIE5vZGVJbmRleCBiYXNlID0g
Z2V0KGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQpOwotICAgICAgICAgICAgQXJyYXk6
Ok1vZGUgYXJyYXlNb2RlID0gZ2V0QXJyYXlNb2RlQW5kRW1pdENoZWNrcyhjdXJyZW50SW5zdHJ1
Y3Rpb25bNF0udS5hcnJheVByb2ZpbGUsIGJhc2UpOworICAgICAgICAgICAgQXJyYXk6Ok1vZGUg
YXJyYXlNb2RlID0gZ2V0QXJyYXlNb2RlQW5kRW1pdENoZWNrcyhjdXJyZW50SW5zdHJ1Y3Rpb25b
NF0udS5hcnJheVByb2ZpbGUsIEFycmF5OjpSZWFkLCBiYXNlKTsKICAgICAgICAgICAgIE5vZGVJ
bmRleCBwcm9wZXJ0eSA9IGdldChjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kKTsKICAg
ICAgICAgICAgIE5vZGVJbmRleCBnZXRCeVZhbCA9IGFkZFRvR3JhcGgoR2V0QnlWYWwsIE9wSW5m
byhhcnJheU1vZGUpLCBPcEluZm8ocHJlZGljdGlvbiksIGJhc2UsIHByb3BlcnR5KTsKICAgICAg
ICAgICAgIHNldChjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kLCBnZXRCeVZhbCk7CkBA
IC0yMTk5LDcgKzIyMDIsNyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2ln
bmVkCiAgICAgICAgIGNhc2Ugb3BfcHV0X2J5X3ZhbDogewogICAgICAgICAgICAgTm9kZUluZGV4
IGJhc2UgPSBnZXQoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCk7CiAKLSAgICAgICAg
ICAgIEFycmF5OjpNb2RlIGFycmF5TW9kZSA9IGdldEFycmF5TW9kZUFuZEVtaXRDaGVja3MoY3Vy
cmVudEluc3RydWN0aW9uWzRdLnUuYXJyYXlQcm9maWxlLCBiYXNlKTsKKyAgICAgICAgICAgIEFy
cmF5OjpNb2RlIGFycmF5TW9kZSA9IGdldEFycmF5TW9kZUFuZEVtaXRDaGVja3MoY3VycmVudElu
c3RydWN0aW9uWzRdLnUuYXJyYXlQcm9maWxlLCBBcnJheTo6V3JpdGUsIGJhc2UpOwogICAgICAg
ICAgICAgCiAgICAgICAgICAgICBOb2RlSW5kZXggcHJvcGVydHkgPSBnZXQoY3VycmVudEluc3Ry
dWN0aW9uWzJdLnUub3BlcmFuZCk7CiAgICAgICAgICAgICBOb2RlSW5kZXggdmFsdWUgPSBnZXQo
Y3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFuZCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0NTRVBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0NTRVBoYXNlLmNwcAkocmV2aXNpb24gMTI4ODI2KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdDU0VQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU5Miw2
ICs1OTIsNyBAQCBwcml2YXRlOgogCiAgICAgICAgICAgICBjYXNlIEFsbG9jYXRlUHJvcGVydHlT
dG9yYWdlOgogICAgICAgICAgICAgY2FzZSBSZWFsbG9jYXRlUHJvcGVydHlTdG9yYWdlOgorICAg
ICAgICAgICAgY2FzZSBBcnJheWlmeToKICAgICAgICAgICAgICAgICAvLyBJZiB3ZSBjYW4gY2hl
YXBseSBwcm92ZSB0aGlzIGlzIGEgY2hhbmdlIHRvIG91ciBvYmplY3QncyBzdG9yYWdlLCB3ZQog
ICAgICAgICAgICAgICAgIC8vIGNhbiBvcHRpbWl6ZSBhbmQgdXNlIGl0cyByZXN1bHQuCiAgICAg
ICAgICAgICAgICAgaWYgKG5vZGUuY2hpbGQxKCkgPT0gY2hpbGQxKQpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCShyZXZpc2lvbiAxMjg4MjYpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC05MCw3ICs5MCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBpZiAoYXJyYXlQcm9m
aWxlKSB7CiAgICAgICAgICAgICAgICAgYXJyYXlQcm9maWxlLT5jb21wdXRlVXBkYXRlZFByZWRp
Y3Rpb24oKTsKICAgICAgICAgICAgICAgICBhcnJheU1vZGUgPSByZWZpbmVBcnJheU1vZGUoCi0g
ICAgICAgICAgICAgICAgICAgIGZyb21PYnNlcnZlZChhcnJheVByb2ZpbGUtPm9ic2VydmVkQXJy
YXlNb2RlcygpLCBmYWxzZSksCisgICAgICAgICAgICAgICAgICAgIGZyb21PYnNlcnZlZChhcnJh
eVByb2ZpbGUsIEFycmF5OjpSZWFkLCBmYWxzZSksCiAgICAgICAgICAgICAgICAgICAgIG1fZ3Jh
cGhbbm9kZS5jaGlsZDEoKV0ucHJlZGljdGlvbigpLAogICAgICAgICAgICAgICAgICAgICBtX2dy
YXBoW21fY29tcGlsZUluZGV4XS5wcmVkaWN0aW9uKCkpOwogICAgICAgICAgICAgICAgIGlmICht
b2RlU3VwcG9ydHNMZW5ndGgoYXJyYXlNb2RlKSAmJiBhcnJheVByb2ZpbGUtPmhhc0RlZmluaXRl
U3RydWN0dXJlKCkpIHsKQEAgLTM4MCw2ICszODAsMjMgQEAgcHJpdmF0ZToKICAgICAgICAgQVNT
RVJUKG1vZGVJc1NwZWNpZmljKGFycmF5TW9kZSkpOwogICAgICAgICAKICAgICAgICAgbV9ncmFw
aC5yZWYoYXJyYXkpOworCisgICAgICAgIGlmIChpc0VmZmVjdGZ1bChhcnJheU1vZGUpKSB7Cisg
ICAgICAgICAgICBOb2RlIGFycmF5aWZ5KEFycmF5aWZ5LCBjb2RlT3JpZ2luLCBPcEluZm8oYXJy
YXlNb2RlKSwgYXJyYXkpOworICAgICAgICAgICAgYXJyYXlpZnkucmVmKCk7IC8vIE9uY2UgYmVj
YXVzZSBpdCdzIHVzZWQgYXMgYSBidXR0ZXJmbHkuCisgICAgICAgICAgICBhcnJheWlmeS5yZWYo
KTsgLy8gQW5kIHR3aWNlIGJlY2F1c2UgaXQncyBtdXN0LWdlbmVyYXRlLgorICAgICAgICAgICAg
Tm9kZUluZGV4IGFycmF5aWZ5SW5kZXggPSBtX2dyYXBoLnNpemUoKTsKKyAgICAgICAgICAgIG1f
Z3JhcGguYXBwZW5kKGFycmF5aWZ5KTsKKyAgICAgICAgICAgIG1faW5zZXJ0aW9uU2V0LmFwcGVu
ZChtX2luZGV4SW5CbG9jaywgYXJyYXlpZnlJbmRleCk7CisgICAgICAgICAgICAKKyAgICAgICAg
ICAgIEFTU0VSVChzdG9yYWdlQ2hlY2sgPT0gY2FuQ1NFU3RvcmFnZSk7CisgICAgICAgICAgICBB
U1NFUlQoc2hvdWxkR2VuZXJhdGUpOworICAgICAgICAgICAgQVNTRVJUKGNhbkNTRVN0b3JhZ2Uo
YXJyYXlNb2RlKSk7CisgICAgICAgICAgICBBU1NFUlQobW9kZVVzZXNCdXR0ZXJmbHkoYXJyYXlN
b2RlKSk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHJldHVybiBhcnJheWlmeUluZGV4Owor
ICAgICAgICB9CisgICAgICAgIAogICAgICAgICBOb2RlIGNoZWNrQXJyYXkoQ2hlY2tBcnJheSwg
Y29kZU9yaWdpbiwgT3BJbmZvKGFycmF5TW9kZSksIGFycmF5KTsKICAgICAgICAgY2hlY2tBcnJh
eS5yZWYoKTsKICAgICAgICAgTm9kZUluZGV4IGNoZWNrQXJyYXlJbmRleCA9IG1fZ3JhcGguc2l6
ZSgpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaAkocmV2aXNpb24gMTI4
ODI2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oCSh3b3JraW5nIGNv
cHkpCkBAIC00NzQsNiArNDc0LDcgQEAgcHVibGljOgogICAgICAgICBzd2l0Y2ggKG5vZGUuYXJy
YXlNb2RlKCkpIHsKICAgICAgICAgY2FzZSBBcnJheTo6R2VuZXJpYzoKICAgICAgICAgY2FzZSBP
VVRfT0ZfQk9VTkRTX0FSUkFZX1NUT1JBR0VfTU9ERVM6CisgICAgICAgIGNhc2UgQUxMX0VGRkVD
VEZVTF9BUlJBWV9TVE9SQUdFX01PREVTOgogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
ICAgICBjYXNlIEFycmF5OjpTdHJpbmc6CiAgICAgICAgICAgICByZXR1cm4gbm9kZS5vcCgpID09
IEdldEJ5VmFsOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgJKHJldmlzaW9u
IDEyODgyNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC03NDAsNiArNzQwLDcgQEAgc3RydWN0IE5vZGUgewogICAgICAgICBjYXNlIFN0
cmluZ0NoYXJBdDoKICAgICAgICAgY2FzZSBTdHJpbmdDaGFyQ29kZUF0OgogICAgICAgICBjYXNl
IENoZWNrQXJyYXk6CisgICAgICAgIGNhc2UgQXJyYXlpZnk6CiAgICAgICAgIGNhc2UgQXJyYXlQ
dXNoOgogICAgICAgICBjYXNlIEFycmF5UG9wOgogICAgICAgICAgICAgcmV0dXJuIHRydWU7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCShyZXZpc2lvbiAxMjg4
MjYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTEzOSw2ICsxMzksNyBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7
CiAgICAgbWFjcm8oUmVhbGxvY2F0ZVByb3BlcnR5U3RvcmFnZSwgTm9kZU11c3RHZW5lcmF0ZSB8
IE5vZGVEb2VzTm90RXhpdCB8IE5vZGVSZXN1bHRTdG9yYWdlKSBcCiAgICAgbWFjcm8oR2V0QnV0
dGVyZmx5LCBOb2RlUmVzdWx0U3RvcmFnZSkgXAogICAgIG1hY3JvKENoZWNrQXJyYXksIE5vZGVN
dXN0R2VuZXJhdGUpIFwKKyAgICBtYWNybyhBcnJheWlmeSwgTm9kZVJlc3VsdFN0b3JhZ2UgfCBO
b2RlTXVzdEdlbmVyYXRlIHwgTm9kZUNsb2JiZXJzV29ybGQpIFwKICAgICBtYWNybyhHZXRJbmRl
eGVkUHJvcGVydHlTdG9yYWdlLCBOb2RlUmVzdWx0U3RvcmFnZSkgXAogICAgIG1hY3JvKEdldEJ5
T2Zmc2V0LCBOb2RlUmVzdWx0SlMpIFwKICAgICBtYWNybyhQdXRCeU9mZnNldCwgTm9kZU11c3RH
ZW5lcmF0ZSkgXApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25z
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlv
bnMuY3BwCShyZXZpc2lvbiAxMjg4MjYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R09wZXJhdGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTkzLDkgKzExOTMsMTEgQEAgdm9p
ZCBERkdfT1BFUkFUSU9OIG9wZXJhdGlvblRlYXJPZmZJbmxpbgogCiBFbmNvZGVkSlNWYWx1ZSBE
RkdfT1BFUkFUSU9OIG9wZXJhdGlvbkdldEFyZ3VtZW50c0xlbmd0aChFeGVjU3RhdGUqIGV4ZWMs
IGludDMyX3QgYXJndW1lbnRzUmVnaXN0ZXIpCiB7CisgICAgSlNHbG9iYWxEYXRhJiBnbG9iYWxE
YXRhID0gZXhlYy0+Z2xvYmFsRGF0YSgpOworICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFj
ZXIoJmdsb2JhbERhdGEsIGV4ZWMpOwogICAgIC8vIEhlcmUgd2UgY2FuIGFzc3VtZSB0aGF0IHRo
ZSBhcmd1bWVybnRzIHdlcmUgY3JlYXRlZC4gQmVjYXVzZSBvdGhlcndpc2UgdGhlIEpJVCBjb2Rl
IHdvdWxkCiAgICAgLy8gaGF2ZSBub3QgbWFkZSB0aGlzIGNhbGwuCi0gICAgSWRlbnRpZmllciBp
ZGVudCgmZXhlYy0+Z2xvYmFsRGF0YSgpLCAibGVuZ3RoIik7CisgICAgSWRlbnRpZmllciBpZGVu
dCgmZ2xvYmFsRGF0YSwgImxlbmd0aCIpOwogICAgIEpTVmFsdWUgYmFzZVZhbHVlID0gZXhlYy0+
dW5jaGVja2VkUihhcmd1bWVudHNSZWdpc3RlcikuanNWYWx1ZSgpOwogICAgIFByb3BlcnR5U2xv
dCBzbG90KGJhc2VWYWx1ZSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShiYXNlVmFsdWUu
Z2V0KGV4ZWMsIGlkZW50LCBzbG90KSk7CkBAIC0xMjAzLDYgKzEyMDUsOSBAQCBFbmNvZGVkSlNW
YWx1ZSBERkdfT1BFUkFUSU9OIG9wZXJhdGlvbkdlCiAKIEVuY29kZWRKU1ZhbHVlIERGR19PUEVS
QVRJT04gb3BlcmF0aW9uR2V0QXJndW1lbnRCeVZhbChFeGVjU3RhdGUqIGV4ZWMsIGludDMyX3Qg
YXJndW1lbnRzUmVnaXN0ZXIsIGludDMyX3QgaW5kZXgpCiB7CisgICAgSlNHbG9iYWxEYXRhJiBn
bG9iYWxEYXRhID0gZXhlYy0+Z2xvYmFsRGF0YSgpOworICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNl
ciB0cmFjZXIoJmdsb2JhbERhdGEsIGV4ZWMpOworCiAgICAgSlNWYWx1ZSBhcmd1bWVudHNWYWx1
ZSA9IGV4ZWMtPnVuY2hlY2tlZFIoYXJndW1lbnRzUmVnaXN0ZXIpLmpzVmFsdWUoKTsKICAgICAK
ICAgICAvLyBJZiB0aGVyZSBhcmUgbm8gYXJndW1lbnRzLCBhbmQgd2UncmUgYWNjZXNzaW5nIG91
dCBvZiBib3VuZHMsIHRoZW4gd2UgaGF2ZSB0byBjcmVhdGUgdGhlCkBAIC0xMjE2LDYgKzEyMjEs
OSBAQCBFbmNvZGVkSlNWYWx1ZSBERkdfT1BFUkFUSU9OIG9wZXJhdGlvbkdlCiBFbmNvZGVkSlNW
YWx1ZSBERkdfT1BFUkFUSU9OIG9wZXJhdGlvbkdldElubGluZWRBcmd1bWVudEJ5VmFsKAogICAg
IEV4ZWNTdGF0ZSogZXhlYywgaW50MzJfdCBhcmd1bWVudHNSZWdpc3RlciwgSW5saW5lQ2FsbEZy
YW1lKiBpbmxpbmVDYWxsRnJhbWUsIGludDMyX3QgaW5kZXgpCiB7CisgICAgSlNHbG9iYWxEYXRh
JiBnbG9iYWxEYXRhID0gZXhlYy0+Z2xvYmFsRGF0YSgpOworICAgIE5hdGl2ZUNhbGxGcmFtZVRy
YWNlciB0cmFjZXIoJmdsb2JhbERhdGEsIGV4ZWMpOworCiAgICAgSlNWYWx1ZSBhcmd1bWVudHNW
YWx1ZSA9IGV4ZWMtPnVuY2hlY2tlZFIoYXJndW1lbnRzUmVnaXN0ZXIpLmpzVmFsdWUoKTsKICAg
ICAKICAgICAvLyBJZiB0aGVyZSBhcmUgbm8gYXJndW1lbnRzLCBhbmQgd2UncmUgYWNjZXNzaW5n
IG91dCBvZiBib3VuZHMsIHRoZW4gd2UgaGF2ZSB0byBjcmVhdGUgdGhlCkBAIC0xMjM5LDYgKzEy
NDcsMTAgQEAgSlNDZWxsKiBERkdfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0Z1bmN0aQogSlNDZWxs
KiBERkdfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0Z1bmN0aW9uRXhwcmVzc2lvbihFeGVjU3RhdGUq
IGV4ZWMsIEpTQ2VsbCogZnVuY3Rpb25FeGVjdXRhYmxlQXNDZWxsKQogewogICAgIEFTU0VSVChm
dW5jdGlvbkV4ZWN1dGFibGVBc0NlbGwtPmluaGVyaXRzKCZGdW5jdGlvbkV4ZWN1dGFibGU6OnNf
aW5mbykpOworCisgICAgSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhID0gZXhlYy0+Z2xvYmFsRGF0
YSgpOworICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIoJmdsb2JhbERhdGEsIGV4ZWMp
OworCiAgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBmdW5jdGlvbkV4ZWN1dGFibGUgPQogICAgICAg
ICBzdGF0aWNfY2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPihmdW5jdGlvbkV4ZWN1dGFibGVBc0Nl
bGwpOwogICAgIHJldHVybiBKU0Z1bmN0aW9uOjpjcmVhdGUoZXhlYywgZnVuY3Rpb25FeGVjdXRh
YmxlLCBleGVjLT5zY29wZSgpKTsKQEAgLTEyNTcsNiArMTI2OSw4IEBAIHNpemVfdCBERkdfT1BF
UkFUSU9OIG9wZXJhdGlvbklzRnVuY3Rpb24KIHZvaWQgREZHX09QRVJBVElPTiBvcGVyYXRpb25S
ZWFsbG9jYXRlU3RvcmFnZUFuZEZpbmlzaFB1dChFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBi
YXNlLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUHJvcGVydHlPZmZzZXQgb2Zmc2V0LCBFbmNvZGVk
SlNWYWx1ZSB2YWx1ZSkKIHsKICAgICBKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEgPSBleGVjLT5n
bG9iYWxEYXRhKCk7CisgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcigmZ2xvYmFsRGF0
YSwgZXhlYyk7CisKICAgICBBU1NFUlQoc3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgpID4g
YmFzZS0+c3RydWN0dXJlKCktPm91dE9mTGluZUNhcGFjaXR5KCkpOwogICAgIEFTU0VSVCghZ2xv
YmFsRGF0YS5oZWFwLnN0b3JhZ2VBbGxvY2F0b3IoKS5mYXN0UGF0aFNob3VsZFN1Y2NlZWQoc3Ry
dWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgpICogc2l6ZW9mKEpTVmFsdWUpKSk7CiAgICAgYmFz
ZS0+c2V0U3RydWN0dXJlQW5kUmVhbGxvY2F0ZVN0b3JhZ2VJZk5lY2Vzc2FyeShnbG9iYWxEYXRh
LCBzdHJ1Y3R1cmUpOwpAQCAtMTI2NSwzMSArMTI3OSw1MSBAQCB2b2lkIERGR19PUEVSQVRJT04g
b3BlcmF0aW9uUmVhbGxvY2F0ZVN0CiAKIGNoYXIqIERGR19PUEVSQVRJT04gb3BlcmF0aW9uQWxs
b2NhdGVQcm9wZXJ0eVN0b3JhZ2VXaXRoSW5pdGlhbENhcGFjaXR5KEV4ZWNTdGF0ZSogZXhlYykK
IHsKKyAgICBKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEgPSBleGVjLT5nbG9iYWxEYXRhKCk7Cisg
ICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcigmZ2xvYmFsRGF0YSwgZXhlYyk7CisKICAg
ICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oCi0gICAgICAgIEJ1dHRlcmZseTo6Y3Jl
YXRlVW5pbml0aWFsaXplZChleGVjLT5nbG9iYWxEYXRhKCksIDAsIGluaXRpYWxPdXRPZkxpbmVD
YXBhY2l0eSwgZmFsc2UsIDApKTsKKyAgICAgICAgQnV0dGVyZmx5OjpjcmVhdGVVbmluaXRpYWxp
emVkKGdsb2JhbERhdGEsIDAsIGluaXRpYWxPdXRPZkxpbmVDYXBhY2l0eSwgZmFsc2UsIDApKTsK
IH0KIAogY2hhciogREZHX09QRVJBVElPTiBvcGVyYXRpb25BbGxvY2F0ZVByb3BlcnR5U3RvcmFn
ZShFeGVjU3RhdGUqIGV4ZWMsIHNpemVfdCBuZXdTaXplKQogeworICAgIEpTR2xvYmFsRGF0YSYg
Z2xvYmFsRGF0YSA9IGV4ZWMtPmdsb2JhbERhdGEoKTsKKyAgICBOYXRpdmVDYWxsRnJhbWVUcmFj
ZXIgdHJhY2VyKCZnbG9iYWxEYXRhLCBleGVjKTsKKwogICAgIHJldHVybiByZWludGVycHJldF9j
YXN0PGNoYXIqPigKLSAgICAgICAgQnV0dGVyZmx5OjpjcmVhdGVVbmluaXRpYWxpemVkKGV4ZWMt
Pmdsb2JhbERhdGEoKSwgMCwgbmV3U2l6ZSwgZmFsc2UsIDApKTsKKyAgICAgICAgQnV0dGVyZmx5
OjpjcmVhdGVVbmluaXRpYWxpemVkKGdsb2JhbERhdGEsIDAsIG5ld1NpemUsIGZhbHNlLCAwKSk7
CiB9CiAKIGNoYXIqIERGR19PUEVSQVRJT04gb3BlcmF0aW9uUmVhbGxvY2F0ZUJ1dHRlcmZseVRv
SGF2ZVByb3BlcnR5U3RvcmFnZVdpdGhJbml0aWFsQ2FwYWNpdHkoRXhlY1N0YXRlKiBleGVjLCBK
U09iamVjdCogb2JqZWN0KQogeworICAgIEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSA9IGV4ZWMt
Pmdsb2JhbERhdGEoKTsKKyAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKCZnbG9iYWxE
YXRhLCBleGVjKTsKKwogICAgIEFTU0VSVCghb2JqZWN0LT5zdHJ1Y3R1cmUoKS0+b3V0T2ZMaW5l
Q2FwYWNpdHkoKSk7Ci0gICAgQnV0dGVyZmx5KiByZXN1bHQgPSBvYmplY3QtPmdyb3dPdXRPZkxp
bmVTdG9yYWdlKGV4ZWMtPmdsb2JhbERhdGEoKSwgMCwgaW5pdGlhbE91dE9mTGluZUNhcGFjaXR5
KTsKKyAgICBCdXR0ZXJmbHkqIHJlc3VsdCA9IG9iamVjdC0+Z3Jvd091dE9mTGluZVN0b3JhZ2Uo
Z2xvYmFsRGF0YSwgMCwgaW5pdGlhbE91dE9mTGluZUNhcGFjaXR5KTsKICAgICBvYmplY3QtPnNl
dEJ1dHRlcmZseVdpdGhvdXRDaGFuZ2luZ1N0cnVjdHVyZShyZXN1bHQpOwogICAgIHJldHVybiBy
ZWludGVycHJldF9jYXN0PGNoYXIqPihyZXN1bHQpOwogfQogCiBjaGFyKiBERkdfT1BFUkFUSU9O
IG9wZXJhdGlvblJlYWxsb2NhdGVCdXR0ZXJmbHlUb0dyb3dQcm9wZXJ0eVN0b3JhZ2UoRXhlY1N0
YXRlKiBleGVjLCBKU09iamVjdCogb2JqZWN0LCBzaXplX3QgbmV3U2l6ZSkKIHsKLSAgICBCdXR0
ZXJmbHkqIHJlc3VsdCA9IG9iamVjdC0+Z3Jvd091dE9mTGluZVN0b3JhZ2UoZXhlYy0+Z2xvYmFs
RGF0YSgpLCBvYmplY3QtPnN0cnVjdHVyZSgpLT5vdXRPZkxpbmVDYXBhY2l0eSgpLCBuZXdTaXpl
KTsKKyAgICBKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEgPSBleGVjLT5nbG9iYWxEYXRhKCk7Cisg
ICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcigmZ2xvYmFsRGF0YSwgZXhlYyk7CisKKyAg
ICBCdXR0ZXJmbHkqIHJlc3VsdCA9IG9iamVjdC0+Z3Jvd091dE9mTGluZVN0b3JhZ2UoZ2xvYmFs
RGF0YSwgb2JqZWN0LT5zdHJ1Y3R1cmUoKS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSwgbmV3U2l6ZSk7
CiAgICAgb2JqZWN0LT5zZXRCdXR0ZXJmbHlXaXRob3V0Q2hhbmdpbmdTdHJ1Y3R1cmUocmVzdWx0
KTsKICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4ocmVzdWx0KTsKIH0KIAorY2hh
ciogREZHX09QRVJBVElPTiBvcGVyYXRpb25FbnN1cmVBcnJheVN0b3JhZ2UoRXhlY1N0YXRlKiBl
eGVjLCBKU09iamVjdCogb2JqZWN0KQoreworICAgIEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSA9
IGV4ZWMtPmdsb2JhbERhdGEoKTsKKyAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKCZn
bG9iYWxEYXRhLCBleGVjKTsKKworICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNoYXIqPihv
YmplY3QtPmVuc3VyZUFycmF5U3RvcmFnZShnbG9iYWxEYXRhKSk7Cit9CisKIGRvdWJsZSBERkdf
T1BFUkFUSU9OIG9wZXJhdGlvbkZNb2RPbkludHMoaW50MzJfdCBhLCBpbnQzMl90IGIpCiB7CiAg
ICAgcmV0dXJuIGZtb2QoYSwgYik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R09wZXJhdGlvbnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R09wZXJhdGlvbnMuaAkocmV2aXNpb24gMTI4ODI2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdPcGVyYXRpb25zLmgJKHdvcmtpbmcgY29weSkKQEAgLTE5Myw2ICsxOTMsNyBAQCBj
aGFyKiBERkdfT1BFUkFUSU9OIG9wZXJhdGlvbkFsbG9jYXRlUHJvCiBjaGFyKiBERkdfT1BFUkFU
SU9OIG9wZXJhdGlvbkFsbG9jYXRlUHJvcGVydHlTdG9yYWdlKEV4ZWNTdGF0ZSosIHNpemVfdCBu
ZXdTaXplKSBXVEZfSU5URVJOQUw7CiBjaGFyKiBERkdfT1BFUkFUSU9OIG9wZXJhdGlvblJlYWxs
b2NhdGVCdXR0ZXJmbHlUb0hhdmVQcm9wZXJ0eVN0b3JhZ2VXaXRoSW5pdGlhbENhcGFjaXR5KEV4
ZWNTdGF0ZSosIEpTT2JqZWN0KikgV1RGX0lOVEVSTkFMOwogY2hhciogREZHX09QRVJBVElPTiBv
cGVyYXRpb25SZWFsbG9jYXRlQnV0dGVyZmx5VG9Hcm93UHJvcGVydHlTdG9yYWdlKEV4ZWNTdGF0
ZSosIEpTT2JqZWN0Kiwgc2l6ZV90IG5ld1NpemUpIFdURl9JTlRFUk5BTDsKK2NoYXIqIERGR19P
UEVSQVRJT04gb3BlcmF0aW9uRW5zdXJlQXJyYXlTdG9yYWdlKEV4ZWNTdGF0ZSosIEpTT2JqZWN0
Kik7CiAKIC8vIFRoaXMgbWV0aG9kIGlzIHVzZWQgdG8gbG9va3VwIGFuIGV4Y2VwdGlvbiBoYW5k
ZXIsIGtleWVkIGJ5IGZhdWx0TG9jYXRpb24sIHdoaWNoIGlzCiAvLyB0aGUgcmV0dXJuIGxvY2F0
aW9uIGZyb20gb25lIG9mIHRoZSBjYWxscyBvdXQgdG8gb25lIG9mIHRoZSBoZWxwZXIgb3BlcmF0
aW9ucyBhYm92ZS4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlv
blByb3BhZ2F0aW9uUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCShyZXZpc2lvbiAxMjg4MjYp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBo
YXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjE5LDcgKzYxOSw4IEBAIHByaXZhdGU6CiAgICAg
ICAgIGNhc2UgR2V0TXlBcmd1bWVudEJ5VmFsOgogICAgICAgICBjYXNlIFBoYW50b21QdXRTdHJ1
Y3R1cmU6CiAgICAgICAgIGNhc2UgUGhhbnRvbUFyZ3VtZW50czoKLSAgICAgICAgY2FzZSBDaGVj
a0FycmF5OiB7CisgICAgICAgIGNhc2UgQ2hlY2tBcnJheToKKyAgICAgICAgY2FzZSBBcnJheWlm
eTogewogICAgICAgICAgICAgLy8gVGhpcyBub2RlIHNob3VsZCBuZXZlciBiZSB2aXNpYmxlIGF0
IHRoaXMgc3RhZ2Ugb2YgY29tcGlsYXRpb24uIEl0IGlzCiAgICAgICAgICAgICAvLyBpbnNlcnRl
ZCBieSBmaXh1cCgpLCB3aGljaCBmb2xsb3dzIHRoaXMgcGhhc2UuCiAgICAgICAgICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Bl
Y3VsYXRpdmVKSVQzMl82NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAkocmV2aXNpb24gMTI4ODI2KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMjUzMSw2ICsyNTMxLDExIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGUoTm9kZSYgbm9kZSkKICAgICAgICAgY2hlY2tBcnJheShub2RlKTsKICAgICAgICAgYnJlYWs7
CiAgICAgfQorICAgICAgICAKKyAgICBjYXNlIEFycmF5aWZ5OiB7CisgICAgICAgIGFycmF5aWZ5
KG5vZGUpOworICAgICAgICBicmVhazsKKyAgICB9CiAKICAgICBjYXNlIEdldEJ5VmFsOiB7CiAg
ICAgICAgIHN3aXRjaCAobm9kZS5hcnJheU1vZGUoKSkgewpAQCAtMjU3NSw3ICsyNTgwLDggQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlJiBub2RlKQogICAgICAgICAgICAganNW
YWx1ZVJlc3VsdChyZXN1bHRUYWcuZ3ByKCksIHJlc3VsdFBheWxvYWQuZ3ByKCksIG1fY29tcGls
ZUluZGV4KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0gICAgICAgIGNhc2UgT1VU
X09GX0JPVU5EU19BUlJBWV9TVE9SQUdFX01PREVTOiB7CisgICAgICAgIGNhc2UgT1VUX09GX0JP
VU5EU19BUlJBWV9TVE9SQUdFX01PREVTOgorICAgICAgICBjYXNlIEFMTF9FRkZFQ1RGVUxfQVJS
QVlfU1RPUkFHRV9NT0RFUzogewogICAgICAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFz
ZSh0aGlzLCBub2RlLmNoaWxkMSgpKTsKICAgICAgICAgICAgIFNwZWN1bGF0ZVN0cmljdEludDMy
T3BlcmFuZCBwcm9wZXJ0eSh0aGlzLCBub2RlLmNoaWxkMigpKTsKICAgICAgICAgICAgIFN0b3Jh
Z2VPcGVyYW5kIHN0b3JhZ2UodGhpcywgbm9kZS5jaGlsZDMoKSk7CkBAIC0yNzAyLDcgKzI3MDgs
OCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUmIG5vZGUpCiAgICAgICAgIEdQ
UlJlZyBwcm9wZXJ0eVJlZyA9IHByb3BlcnR5LmdwcigpOwogCiAgICAgICAgIHN3aXRjaCAoYXJy
YXlNb2RlKSB7Ci0gICAgICAgIGNhc2UgQUxMX0FSUkFZX1NUT1JBR0VfTU9ERVM6IHsKKyAgICAg
ICAgY2FzZSBBTExfQVJSQVlfU1RPUkFHRV9NT0RFUzoKKyAgICAgICAgY2FzZSBBTExfRUZGRUNU
RlVMX0FSUkFZX1NUT1JBR0VfTU9ERVM6IHsKICAgICAgICAgICAgIEpTVmFsdWVPcGVyYW5kIHZh
bHVlKHRoaXMsIGNoaWxkMyk7CiAKICAgICAgICAgICAgIEdQUlJlZyB2YWx1ZVRhZ1JlZyA9IHZh
bHVlLnRhZ0dQUigpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxh
dGl2ZUpJVDY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklUNjQuY3BwCShyZXZpc2lvbiAxMjg4MjYpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0y
NTYzLDYgKzI1NjMsMTEgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlJiBub2Rl
KQogICAgICAgICBjaGVja0FycmF5KG5vZGUpOwogICAgICAgICBicmVhazsKICAgICB9CisgICAg
ICAgIAorICAgIGNhc2UgQXJyYXlpZnk6IHsKKyAgICAgICAgYXJyYXlpZnkobm9kZSk7CisgICAg
ICAgIGJyZWFrOworICAgIH0KIAogICAgIGNhc2UgR2V0QnlWYWw6IHsKICAgICAgICAgc3dpdGNo
IChub2RlLmFycmF5TW9kZSgpKSB7CkBAIC0yNjAzLDcgKzI2MDgsOCBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjpjb21waWxlKE5vZGUmIG5vZGUpCiAgICAgICAgICAgICBqc1ZhbHVlUmVzdWx0KHJl
c3VsdC5ncHIoKSwgbV9jb21waWxlSW5kZXgpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IH0KLSAgICAgICAgY2FzZSBPVVRfT0ZfQk9VTkRTX0FSUkFZX1NUT1JBR0VfTU9ERVM6IHsKKyAg
ICAgICAgY2FzZSBPVVRfT0ZfQk9VTkRTX0FSUkFZX1NUT1JBR0VfTU9ERVM6CisgICAgICAgIGNh
c2UgQUxMX0VGRkVDVEZVTF9BUlJBWV9TVE9SQUdFX01PREVTOiB7CiAgICAgICAgICAgICBTcGVj
dWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUuY2hpbGQxKCkpOwogICAgICAgICAgICAg
U3BlY3VsYXRlU3RyaWN0SW50MzJPcGVyYW5kIHByb3BlcnR5KHRoaXMsIG5vZGUuY2hpbGQyKCkp
OwogICAgICAgICAgICAgU3RvcmFnZU9wZXJhbmQgc3RvcmFnZSh0aGlzLCBub2RlLmNoaWxkMygp
KTsKQEAgLTI3MjMsNyArMjcyOSw4IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9k
ZSYgbm9kZSkKICAgICAgICAgR1BSUmVnIHByb3BlcnR5UmVnID0gcHJvcGVydHkuZ3ByKCk7CiAK
ICAgICAgICAgc3dpdGNoIChhcnJheU1vZGUpIHsKLSAgICAgICAgY2FzZSBBTExfQVJSQVlfU1RP
UkFHRV9NT0RFUzogeworICAgICAgICBjYXNlIEFMTF9BUlJBWV9TVE9SQUdFX01PREVTOgorICAg
ICAgICBjYXNlIEFMTF9FRkZFQ1RGVUxfQVJSQVlfU1RPUkFHRV9NT0RFUzogewogICAgICAgICAg
ICAgSlNWYWx1ZU9wZXJhbmQgdmFsdWUodGhpcywgY2hpbGQzKTsKIAogICAgICAgICAgICAgR1BS
UmVnIHZhbHVlUmVnID0gdmFsdWUuZ3ByKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAkocmV2aXNpb24gMTI4ODI2KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTMyNSw3ICszMjUsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjaGVja0FycmF5KE5v
ZGUmIG5vCiAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Olplcm8sCiAgICAgICAgICAg
ICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3ModGVtcC5ncHIoKSwgU3RydWN0dXJlOjppbmRl
eGluZ1R5cGVPZmZzZXQoKSksCiAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OlRydXN0
ZWRJbW0zMigKLSAgICAgICAgICAgICAgICAgICAgaXNTbG93UHV0QWNjZXNzKG5vZGUuYXJyYXlN
b2RlKCkpID8gSGFzU2xvd1B1dEFycmF5U3RvcmFnZSA6IEhhc0FycmF5U3RvcmFnZSkpKTsKKyAg
ICAgICAgICAgICAgICAgICAgaXNTbG93UHV0QWNjZXNzKG5vZGUuYXJyYXlNb2RlKCkpID8gKEhh
c0FycmF5U3RvcmFnZSB8IEhhc1Nsb3dQdXRBcnJheVN0b3JhZ2UpIDogSGFzQXJyYXlTdG9yYWdl
KSkpOwogICAgICAgICAKICAgICAgICAgbm9SZXN1bHQobV9jb21waWxlSW5kZXgpOwogICAgICAg
ICByZXR1cm47CkBAIC0zNDcsNyArMzQ3LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y2hlY2tB
cnJheShOb2RlJiBubwogICAgICAgICAgICAgVW5jb3VudGFibGUsIEpTVmFsdWVSZWdzKCksIE5v
Tm9kZSwKICAgICAgICAgICAgIG1faml0LmJyYW5jaFRlc3QzMigKICAgICAgICAgICAgICAgICBN
YWNyb0Fzc2VtYmxlcjo6WmVybywgdGVtcEdQUiwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0z
MigKLSAgICAgICAgICAgICAgICAgICAgaXNTbG93UHV0QWNjZXNzKG5vZGUuYXJyYXlNb2RlKCkp
ID8gSGFzU2xvd1B1dEFycmF5U3RvcmFnZSA6IEhhc0FycmF5U3RvcmFnZSkpKTsKKyAgICAgICAg
ICAgICAgICAgICAgaXNTbG93UHV0QWNjZXNzKG5vZGUuYXJyYXlNb2RlKCkpID8gKEhhc0FycmF5
U3RvcmFnZSB8IEhhc1Nsb3dQdXRBcnJheVN0b3JhZ2UpIDogSGFzQXJyYXlTdG9yYWdlKSkpOwog
ICAgICAgICAKICAgICAgICAgbm9SZXN1bHQobV9jb21waWxlSW5kZXgpOwogICAgICAgICByZXR1
cm47CkBAIC0zODQsNiArMzg0LDgwIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNoZWNrQXJyYXko
Tm9kZSYgbm8KICAgICBub1Jlc3VsdChtX2NvbXBpbGVJbmRleCk7CiB9CiAKK3ZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmFycmF5aWZ5KE5vZGUmIG5vZGUpCit7CisgICAgQVNTRVJUKG1vZGVJc1NwZWNp
ZmljKG5vZGUuYXJyYXlNb2RlKCkpKTsKKyAgICBBU1NFUlQoIW1vZGVBbHJlYWR5Q2hlY2tlZCht
X3N0YXRlLmZvck5vZGUobm9kZS5jaGlsZDEoKSksIG5vZGUuYXJyYXlNb2RlKCkpKTsKKyAgICAK
KyAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUuY2hpbGQxKCkpOworICAg
IEdQUlJlZyBiYXNlUmVnID0gYmFzZS5ncHIoKTsKKyAgICAKKyAgICBzd2l0Y2ggKG5vZGUuYXJy
YXlNb2RlKCkpIHsKKyAgICBjYXNlIEVGRkVDVEZVTF9OT05fQVJSQVlfQVJSQVlfU1RPUkFHRV9N
T0RFUzogeworICAgICAgICBHUFJUZW1wb3Jhcnkgc3RydWN0dXJlKHRoaXMpOworICAgICAgICBH
UFJUZW1wb3JhcnkgdGVtcCh0aGlzKTsKKyAgICAgICAgR1BSUmVnIHN0cnVjdHVyZUdQUiA9IHN0
cnVjdHVyZS5ncHIoKTsKKyAgICAgICAgR1BSUmVnIHRlbXBHUFIgPSB0ZW1wLmdwcigpOworICAg
ICAgICAKKyAgICAgICAgbV9qaXQubG9hZFB0cigKKyAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVy
OjpBZGRyZXNzKGJhc2VSZWcsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBzdHJ1Y3R1cmVH
UFIpOworICAgICAgICAKKyAgICAgICAgLy8gV2UgY2FuIHNraXAgYWxsIHRoYXQgY29tZXMgbmV4
dCBpZiB3ZSBhbHJlYWR5IGhhdmUgYXJyYXkgc3RvcmFnZS4KKyAgICAgICAgSW5kZXhpbmdUeXBl
IGRlc2lyZWRJbmRleGluZ1R5cGVNYXNrID0KKyAgICAgICAgICAgIGlzU2xvd1B1dEFjY2Vzcyhu
b2RlLmFycmF5TW9kZSgpKSA/IChIYXNBcnJheVN0b3JhZ2UgfCBIYXNTbG93UHV0QXJyYXlTdG9y
YWdlKSA6IEhhc0FycmF5U3RvcmFnZTsKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgc2xv
d0Nhc2UgPSBtX2ppdC5icmFuY2hUZXN0OCgKKyAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpa
ZXJvLAorICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc3RydWN0dXJlR1BSLCBT
dHJ1Y3R1cmU6OmluZGV4aW5nVHlwZU9mZnNldCgpKSwKKyAgICAgICAgICAgIE1hY3JvQXNzZW1i
bGVyOjpUcnVzdGVkSW1tMzIoZGVzaXJlZEluZGV4aW5nVHlwZU1hc2spKTsKKyAgICAgICAgCisg
ICAgICAgIG1faml0LmxvYWRQdHIoCisgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVz
cyhiYXNlUmVnLCBKU09iamVjdDo6YnV0dGVyZmx5T2Zmc2V0KCkpLCB0ZW1wR1BSKTsKKyAgICAg
ICAgCisgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIGRvbmUgPSBtX2ppdC5qdW1wKCk7Cisg
ICAgICAgIAorICAgICAgICBzbG93Q2FzZS5saW5rKCZtX2ppdCk7CisgICAgICAgIAorICAgICAg
ICAvLyBOZXh0IGNoZWNrIHRoYXQgdGhlIG9iamVjdCBkb2VzIG5vdCBpbnRlcmNlcHQgaW5kZXhl
ZCBhY2Nlc3Nlcy4gSWYgaXQgZG9lcywKKyAgICAgICAgLy8gdGhlbiB0aGlzIG1vZGUgd29uJ3Qg
d29yay4KKyAgICAgICAgc3BlY3VsYXRpb25DaGVjaygKKyAgICAgICAgICAgIFVuY291bnRhYmxl
LCBKU1ZhbHVlUmVncygpLCBOb05vZGUsCisgICAgICAgICAgICBtX2ppdC5icmFuY2hUZXN0OCgK
KyAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Tm9uWmVybywKKyAgICAgICAgICAgICAg
ICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzdHJ1Y3R1cmVHUFIsIFN0cnVjdHVyZTo6dHlwZUlu
Zm9GbGFnc09mZnNldCgpKSwKKyAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3Rl
ZEltbTMyKEludGVyY2VwdHNHZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4RXZlbldoZW5MZW5ndGhJ
c05vdFplcm8pKSk7CisgICAgICAgIAorICAgICAgICAvLyBOb3cgY2FsbCBvdXQgdG8gY3JlYXRl
IHRoZSBhcnJheSBzdG9yYWdlLgorICAgICAgICBzaWxlbnRTcGlsbEFsbFJlZ2lzdGVycyh0ZW1w
R1BSKTsKKyAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25FbnN1cmVBcnJheVN0b3JhZ2Us
IHRlbXBHUFIsIGJhc2VSZWcpOworICAgICAgICBzaWxlbnRGaWxsQWxsUmVnaXN0ZXJzKHRlbXBH
UFIpOworCisgICAgICAgIC8vIEFsYXMsIHdlIG5lZWQgdG8gcmVsb2FkIHRoZSBzdHJ1Y3R1cmUg
YmVjYXVzZSBzaWxlbnQgc3BpbGxpbmcgZG9lcyBub3Qgc2F2ZQorICAgICAgICAvLyB0ZW1wb3Jh
cmllcy4gTm9yIHdvdWxkIGl0IGJlIHVzZWZ1bCBmb3IgaXQgdG8gZG8gc28uIEVpdGhlciB3YXkg
d2UncmUgdGFsa2luZworICAgICAgICAvLyBhYm91dCBhIGxvYWQuCisgICAgICAgIG1faml0Lmxv
YWRQdHIoCisgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlUmVnLCBKU0Nl
bGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgc3RydWN0dXJlR1BSKTsKKyAgICAgICAgCisgICAgICAg
IC8vIEZpbmFsbHksIGNoZWNrIHRoYXQgd2UgaGF2ZSB0aGUga2luZCBvZiBhcnJheSBzdG9yYWdl
IHRoYXQgd2Ugd2FudGVkIHRvIGdldC4KKyAgICAgICAgLy8gTm90ZSB0aGF0IHRoaXMgaXMgYSBi
YWNrd2FyZHMgc3BlY3VsYXRpb24gY2hlY2ssIHdoaWNoIHdpbGwgcmVzdWx0IGluIHRoZSAKKyAg
ICAgICAgLy8gYnl0ZWNvZGUgb3BlcmF0aW9uIGNvcnJlc3BvbmRpbmcgdG8gdGhpcyBhcnJheWlm
aWNhdGlvbiBiZWluZyByZWV4ZWN1dGVkLgorICAgICAgICAvLyBUaGF0J3MgZmluZSwgc2luY2Ug
YXJyYXlpZmljYXRpb24gaXMgbm90IHVzZXItdmlzaWJsZS4KKyAgICAgICAgc3BlY3VsYXRpb25D
aGVjaygKKyAgICAgICAgICAgIFVuY291bnRhYmxlLCBKU1ZhbHVlUmVncygpLCBOb05vZGUsCisg
ICAgICAgICAgICBtX2ppdC5icmFuY2hUZXN0OCgKKyAgICAgICAgICAgICAgICBNYWNyb0Fzc2Vt
Ymxlcjo6WmVybywKKyAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzdHJ1
Y3R1cmVHUFIsIFN0cnVjdHVyZTo6aW5kZXhpbmdUeXBlT2Zmc2V0KCkpLAorICAgICAgICAgICAg
ICAgIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoZGVzaXJlZEluZGV4aW5nVHlwZU1hc2sp
KSk7CisgICAgICAgIAorICAgICAgICBkb25lLmxpbmsoJm1faml0KTsKKyAgICAgICAgc3RvcmFn
ZVJlc3VsdCh0ZW1wR1BSLCBtX2NvbXBpbGVJbmRleCk7CisgICAgICAgIGJyZWFrOworICAgIH0K
KyAgICBkZWZhdWx0OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgYnJl
YWs7CisgICAgfQorfQorCiBHUFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxTdG9yYWdlKE5vZGVJ
bmRleCBub2RlSW5kZXgpCiB7CiAgICAgTm9kZSYgbm9kZSA9IG1faml0LmdyYXBoKClbbm9kZUlu
ZGV4XTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZl
SklULmgJKHJldmlzaW9uIDEyODgyNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQuaAkod29ya2luZyBjb3B5KQpAQCAtMjI2Nyw2ICsyMjY3LDcgQEAgcHVi
bGljOgogICAgIGNvbnN0IFR5cGVkQXJyYXlEZXNjcmlwdG9yKiB0eXBlZEFycmF5RGVzY3JpcHRv
cihBcnJheTo6TW9kZSk7CiAgICAgCiAgICAgdm9pZCBjaGVja0FycmF5KE5vZGUmKTsKKyAgICB2
b2lkIGFycmF5aWZ5KE5vZGUmKTsKICAgICAKICAgICB0ZW1wbGF0ZTxib29sIHN0cmljdD4KICAg
ICBHUFJSZWcgZmlsbFNwZWN1bGF0ZUludEludGVybmFsKE5vZGVJbmRleCwgRGF0YUZvcm1hdCYg
cmV0dXJuRm9ybWF0KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2Jq
ZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmpl
Y3QuaAkocmV2aXNpb24gMTI4ODI2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtNTA1LDYgKzUwNSwyNSBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICAgICAgLy8gZm9vLT5hdHRlbXB0VG9JbnRlcmNlcHRQdXRCeUluZGV4T25Ib2xl
KC4uLik7CiAgICAgICAgIGJvb2wgYXR0ZW1wdFRvSW50ZXJjZXB0UHV0QnlJbmRleE9uSG9sZUZv
clByb3RvdHlwZShFeGVjU3RhdGUqLCBKU1ZhbHVlIHRoaXNWYWx1ZSwgdW5zaWduZWQgcHJvcGVy
dHlOYW1lLCBKU1ZhbHVlLCBib29sIHNob3VsZFRocm93KTsKICAgICAgICAgCisgICAgICAgIC8v
IEVuc3VyZSB0aGF0IHRoZSBvYmplY3QgaXMgaW4gYSBtb2RlIHdoZXJlIGl0IGhhcyBhcnJheSBz
dG9yYWdlLiBVc2UKKyAgICAgICAgLy8gdGhpcyBpZiB5b3UncmUgYWJvdXQgdG8gcGVyZm9ybSBh
Y3Rpb25zIHRoYXQgd291bGQgaGF2ZSByZXF1aXJlZCB0aGUKKyAgICAgICAgLy8gb2JqZWN0IHRv
IGJlIGNvbnZlcnRlZCB0byBoYXZlIGFycmF5IHN0b3JhZ2UsIGlmIGl0IGRpZG4ndCBoYXZlIGl0
CisgICAgICAgIC8vIGFscmVhZHkuCisgICAgICAgIEFycmF5U3RvcmFnZSogZW5zdXJlQXJyYXlT
dG9yYWdlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSkKKyAgICAgICAgeworICAgICAgICAgICAg
c3dpdGNoIChzdHJ1Y3R1cmUoKS0+aW5kZXhpbmdUeXBlKCkpIHsKKyAgICAgICAgICAgIGNhc2Ug
QUxMX0FSUkFZX1NUT1JBR0VfSU5ERVhJTkdfVFlQRVM6CisgICAgICAgICAgICAgICAgcmV0dXJu
IG1fYnV0dGVyZmx5LT5hcnJheVN0b3JhZ2UoKTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAg
ICAgIGNhc2UgQUxMX0JMQU5LX0lOREVYSU5HX1RZUEVTOgorICAgICAgICAgICAgICAgIHJldHVy
biBjcmVhdGVJbml0aWFsQXJyYXlTdG9yYWdlKGdsb2JhbERhdGEpOworICAgICAgICAgICAgICAg
IAorICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
fQorICAgICAgICAKICAgICAgICAgc3RhdGljIHNpemVfdCBvZmZzZXRPZklubGluZVN0b3JhZ2Uo
KTsKICAgICAgICAgCiAgICAgICAgIHN0YXRpYyBwdHJkaWZmX3QgYnV0dGVyZmx5T2Zmc2V0KCkK
QEAgLTU2NSwyNSArNTg0LDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICB9CiAgICAg
ICAgIH0KIAotICAgICAgICAvLyBFbnN1cmUgdGhhdCB0aGUgb2JqZWN0IGlzIGluIGEgbW9kZSB3
aGVyZSBpdCBoYXMgYXJyYXkgc3RvcmFnZS4gVXNlCi0gICAgICAgIC8vIHRoaXMgaWYgeW91J3Jl
IGFib3V0IHRvIHBlcmZvcm0gYWN0aW9ucyB0aGF0IHdvdWxkIGhhdmUgcmVxdWlyZWQgdGhlCi0g
ICAgICAgIC8vIG9iamVjdCB0byBiZSBjb252ZXJ0ZWQgdG8gaGF2ZSBhcnJheSBzdG9yYWdlLCBp
ZiBpdCBkaWRuJ3QgaGF2ZSBpdAotICAgICAgICAvLyBhbHJlYWR5LgotICAgICAgICBBcnJheVN0
b3JhZ2UqIGVuc3VyZUFycmF5U3RvcmFnZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEpCi0gICAg
ICAgIHsKLSAgICAgICAgICAgIHN3aXRjaCAoc3RydWN0dXJlKCktPmluZGV4aW5nVHlwZSgpKSB7
Ci0gICAgICAgICAgICBjYXNlIEFMTF9BUlJBWV9TVE9SQUdFX0lOREVYSU5HX1RZUEVTOgotICAg
ICAgICAgICAgICAgIHJldHVybiBtX2J1dHRlcmZseS0+YXJyYXlTdG9yYWdlKCk7Ci0gICAgICAg
ICAgICAgICAgCi0gICAgICAgICAgICBjYXNlIEFMTF9CTEFOS19JTkRFWElOR19UWVBFUzoKLSAg
ICAgICAgICAgICAgICByZXR1cm4gY3JlYXRlSW5pdGlhbEFycmF5U3RvcmFnZShnbG9iYWxEYXRh
KTsKLSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgCiAgICAgICAgIEFycmF5U3RvcmFnZSogY3Jl
YXRlQXJyYXlTdG9yYWdlKEpTR2xvYmFsRGF0YSYsIHVuc2lnbmVkIGxlbmd0aCwgdW5zaWduZWQg
dmVjdG9yTGVuZ3RoKTsKICAgICAgICAgQXJyYXlTdG9yYWdlKiBjcmVhdGVJbml0aWFsQXJyYXlT
dG9yYWdlKEpTR2xvYmFsRGF0YSYpOwogICAgICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTU3RyaW5nLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNTdHJpbmcuaAkocmV2aXNpb24gMTI4ODI2KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaAkod29ya2luZyBjb3B5KQpAQCAtMTU1LDcgKzE1
NSw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0
ZVN0cnVjdHVyZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEpTVmFsdWUgcHJvdG8pCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBT
dHJ1Y3R1cmU6OmNyZWF0ZShnbG9iYWxEYXRhLCBnbG9iYWxPYmplY3QsIHByb3RvLCBUeXBlSW5m
byhTdHJpbmdUeXBlLCBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QpLCAmc19pbmZvKTsKKyAg
ICAgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZShnbG9iYWxEYXRhLCBnbG9iYWxPYmpl
Y3QsIHByb3RvLCBUeXBlSW5mbyhTdHJpbmdUeXBlLCBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNs
b3QgfCBJbnRlcmNlcHRzR2V0T3duUHJvcGVydHlTbG90QnlJbmRleEV2ZW5XaGVuTGVuZ3RoSXNO
b3RaZXJvKSwgJnNfaW5mbyk7CiAgICAgICAgIH0KIAogICAgICAgICBzdGF0aWMgc2l6ZV90IG9m
ZnNldE9mTGVuZ3RoKCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKEpTU3RyaW5nLCBtX2xlbmd0
aCk7IH0K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>164625</attachid>
            <date>2012-09-18 15:10:06 -0700</date>
            <delta_ts>2012-09-18 15:28:11 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>createarraystorage_patch_3.diff</filename>
            <type>text/plain</type>
            <size>44100</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTI4OTM1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDgwIEBA
CisyMDEyLTA5LTE4ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
REZHIHNob3VsZCBub3QgY2FsbCBvdXQgdG8gQysrIGV2ZXJ5IHRpbWUgdGhhdCBpdCB0cmllcyB0
byBwdXQgdG8gYW4gb2JqZWN0IHRoYXQgZG9lc24ndCB5ZXQgaGF2ZSBhcnJheSBzdG9yYWdlCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05Njk4MworCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEludHJvZHVjZSBt
b3JlIHBvbHltb3JwaGlzbSBpbnRvIHRoZSBERkcncyBhcnJheSBtb2RlIHN1cHBvcnQuIFVzZSB0
aGF0IHRvCisgICAgICAgIGludHJvZHVjZSB0aGUgbm90aW9uIG9mIGVmZmVjdHVsIGFycmF5IG1v
ZGVzLCB3aGVyZSB0aGUgY2hlY2sgZm9yIHRoZSBtb2RlCisgICAgICAgIHdpbGwgcGVyZm9ybSBh
Y3Rpb25zIG5lY2Vzc2FyeSB0byBlbnN1cmUgdGhhdCB3ZSBoYXZlIHRoZSBtb2RlIHdlIHdhbnQs
IGlmCisgICAgICAgIHRoZSBvYmplY3QgaXMgbm90IGFscmVhZHkgaW4gdGhhdCBtb2RlLiBBbHNv
IGFkZGVkIHByb2ZpbGluZyBzdXBwb3J0IGZvcgorICAgICAgICBjaGVja2luZyBpZiBhbiBvYmpl
Y3QgaXMgb2YgYSB0eXBlIHRoYXQgd291bGQgbm90IGFsbG93IHVzIHRvIGNyZWF0ZSBhcnJheQor
ICAgICAgICBzdG9yYWdlIChsaWtlIGEgdHlwZWQgYXJyYXkgb3IgYSBzdHJpbmcgZm9yIGV4YW1w
bGUpLgorICAgICAgICAKKyAgICAgICAgVGhpcyBpcyBhIH4yeCBzcGVlZC11cCBvbiBsb29wcyB0
aGF0IHRyYW5zZm9ybSBhbiBvYmplY3QgdGhhdCBkaWQgbm90IGhhdmUKKyAgICAgICAgaW5kZXhl
ZCBzdG9yYWdlIGludG8gb25lIHRoYXQgZG9lcy4KKworICAgICAgICAqIEpTQ1R5cGVkQXJyYXlT
dHVicy5oOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKiBieXRlY29kZS9BcnJheVByb2ZpbGUu
Y3BwOgorICAgICAgICAoSlNDOjpBcnJheVByb2ZpbGU6OmNvbXB1dGVVcGRhdGVkUHJlZGljdGlv
bik6CisgICAgICAgICogYnl0ZWNvZGUvQXJyYXlQcm9maWxlLmg6CisgICAgICAgIChKU0M6OkFy
cmF5UHJvZmlsZTo6QXJyYXlQcm9maWxlKToKKyAgICAgICAgKEpTQzo6QXJyYXlQcm9maWxlOjpt
YXlJbnRlcmNlcHRJbmRleGVkQWNjZXNzZXMpOgorICAgICAgICAoQXJyYXlQcm9maWxlKToKKyAg
ICAgICAgKiBkZmcvREZHQWJzdHJhY3RTdGF0ZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6QWJz
dHJhY3RTdGF0ZTo6ZXhlY3V0ZSk6CisgICAgICAgICogZGZnL0RGR0FycmF5TW9kZS5jcHA6Cisg
ICAgICAgIChKU0M6OkRGRzo6ZnJvbU9ic2VydmVkKToKKyAgICAgICAgKERGRyk6CisgICAgICAg
IChKU0M6OkRGRzo6bW9kZUFscmVhZHlDaGVja2VkKToKKyAgICAgICAgKEpTQzo6REZHOjptb2Rl
VG9TdHJpbmcpOgorICAgICAgICAqIGRmZy9ERkdBcnJheU1vZGUuaDoKKyAgICAgICAgKERGRyk6
CisgICAgICAgIChKU0M6OkRGRzo6bW9kZVVzZXNCdXR0ZXJmbHkpOgorICAgICAgICAoSlNDOjpE
Rkc6OmlzU2xvd1B1dEFjY2Vzcyk6CisgICAgICAgIChKU0M6OkRGRzo6YmVuZWZpdHNGcm9tU3Ry
dWN0dXJlQ2hlY2spOgorICAgICAgICAoSlNDOjpERkc6OmlzRWZmZWN0ZnVsKToKKyAgICAgICAg
KiBkZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2Rl
UGFyc2VyOjpnZXRBcnJheU1vZGUpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2Vy
OjpnZXRBcnJheU1vZGVBbmRFbWl0Q2hlY2tzKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29k
ZVBhcnNlcjo6cGFyc2VCbG9jayk6CisgICAgICAgICogZGZnL0RGR0NTRVBoYXNlLmNwcDoKKyAg
ICAgICAgKEpTQzo6REZHOjpDU0VQaGFzZTo6Z2V0UHJvcGVydHlTdG9yYWdlTG9hZEVsaW1pbmF0
aW9uKToKKyAgICAgICAgKiBkZmcvREZHRml4dXBQaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRG
Rzo6Rml4dXBQaGFzZTo6Zml4dXBOb2RlKToKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNl
OjpjaGVja0FycmF5KToKKyAgICAgICAgKiBkZmcvREZHR3JhcGguaDoKKyAgICAgICAgKEpTQzo6
REZHOjpHcmFwaDo6YnlWYWxJc1B1cmUpOgorICAgICAgICAqIGRmZy9ERkdOb2RlLmg6CisgICAg
ICAgIChKU0M6OkRGRzo6Tm9kZTo6aGFzQXJyYXlNb2RlKToKKyAgICAgICAgKiBkZmcvREZHTm9k
ZVR5cGUuaDoKKyAgICAgICAgKERGRyk6CisgICAgICAgICogZGZnL0RGR09wZXJhdGlvbnMuY3Bw
OgorICAgICAgICAqIGRmZy9ERkdPcGVyYXRpb25zLmg6CisgICAgICAgICogZGZnL0RGR1ByZWRp
Y3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpQcmVkaWN0aW9u
UHJvcGFnYXRpb25QaGFzZTo6cHJvcGFnYXRlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRp
dmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjaGVja0FycmF5
KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6YXJyYXlpZnkpOgorICAgICAg
ICAoREZHKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuaDoKKyAgICAgICAgKFNw
ZWN1bGF0aXZlSklUKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHA6
CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAq
IGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICogcnVudGltZS9Bcmd1bWVudHMuaDoKKyAgICAg
ICAgKEFyZ3VtZW50cyk6CisgICAgICAgICogcnVudGltZS9KU05vdEFuT2JqZWN0Lmg6CisgICAg
ICAgIChKU05vdEFuT2JqZWN0KToKKyAgICAgICAgKiBydW50aW1lL0pTT2JqZWN0Lmg6CisgICAg
ICAgIChKU09iamVjdCk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjplbnN1cmVBcnJheVN0b3Jh
Z2UpOgorICAgICAgICAqIHJ1bnRpbWUvSlNTdHJpbmcuaDoKKyAgICAgICAgKEpTQzo6SlNTdHJp
bmc6OmNyZWF0ZVN0cnVjdHVyZSk6CisKIDIwMTItMDktMTggIEZpbGlwIFBpemxvICA8ZnBpemxv
QGFwcGxlLmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9OKHIxMjg4MDIpOiBJdCBtYWRlIHNvbWUg
SlMgdGVzdHMgY3Jhc2gKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KU0NUeXBlZEFycmF5
U3R1YnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSlNDVHlwZWRBcnJh
eVN0dWJzLmgJKHJldmlzaW9uIDEyODgyNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KU0NU
eXBlZEFycmF5U3R1YnMuaAkod29ya2luZyBjb3B5KQpAQCAtNzQsNyArNzQsNyBAQCBwdWJsaWM6
IFwKIHByb3RlY3RlZDpcCiAgICAgSlMjI25hbWUjI0FycmF5KEpTQzo6U3RydWN0dXJlKiwgSlNH
bG9iYWxPYmplY3QqLCBQYXNzUmVmUHRyPG5hbWUjI0FycmF5Pik7XAogICAgIHZvaWQgZmluaXNo
Q3JlYXRpb24oSlNDOjpKU0dsb2JhbERhdGEmKTtcCi0gICAgc3RhdGljIGNvbnN0IHVuc2lnbmVk
IFN0cnVjdHVyZUZsYWdzID0gSlNDOjpPdmVycmlkZXNHZXRQcm9wZXJ0eU5hbWVzIHwgSlNDOjpP
dmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBCYXNlOjpTdHJ1Y3R1cmVGbGFncztcCisgICAg
c3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gSlNDOjpPdmVycmlkZXNHZXRQ
cm9wZXJ0eU5hbWVzIHwgSlNDOjpJbnRlcmNlcHRzR2V0T3duUHJvcGVydHlTbG90QnlJbmRleEV2
ZW5XaGVuTGVuZ3RoSXNOb3RaZXJvIHwgSlNDOjpPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3Qg
fCBCYXNlOjpTdHJ1Y3R1cmVGbGFnczsgXAogICAgIEpTQzo6SlNWYWx1ZSBnZXRCeUluZGV4KEpT
Qzo6RXhlY1N0YXRlKiwgdW5zaWduZWQgaW5kZXgpO1wKICAgICB2b2lkIGluZGV4U2V0dGVyKEpT
Qzo6RXhlY1N0YXRlKiwgdW5zaWduZWQgaW5kZXgsIEpTQzo6SlNWYWx1ZSk7XAogfTtcCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJyYXlQcm9maWxlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJyYXlQcm9maWxlLmNwcAko
cmV2aXNpb24gMTI4ODI2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FycmF5
UHJvZmlsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyLDYgKzMyLDggQEAgdm9pZCBBcnJheVBy
b2ZpbGU6OmNvbXB1dGVVcGRhdGVkUHJlZGljdAogewogICAgIGlmIChtX2xhc3RTZWVuU3RydWN0
dXJlKSB7CiAgICAgICAgIG1fb2JzZXJ2ZWRBcnJheU1vZGVzIHw9IGFycmF5TW9kZUZyb21TdHJ1
Y3R1cmUobV9sYXN0U2VlblN0cnVjdHVyZSk7CisgICAgICAgIG1fbWF5SW50ZXJjZXB0SW5kZXhl
ZEFjY2Vzc2VzIHw9CisgICAgICAgICAgICBtX2xhc3RTZWVuU3RydWN0dXJlLT50eXBlSW5mbygp
LmludGVyY2VwdHNHZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4RXZlbldoZW5MZW5ndGhJc05vdFpl
cm8oKTsKICAgICAgICAgaWYgKCFtX3N0cnVjdHVyZUlzUG9seW1vcnBoaWMpIHsKICAgICAgICAg
ICAgIGlmICghbV9leHBlY3RlZFN0cnVjdHVyZSkKICAgICAgICAgICAgICAgICBtX2V4cGVjdGVk
U3RydWN0dXJlID0gbV9sYXN0U2VlblN0cnVjdHVyZTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9BcnJheVByb2ZpbGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQXJyYXlQcm9maWxlLmgJKHJldmlzaW9uIDEyODgyNikKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BcnJheVByb2ZpbGUuaAkod29ya2luZyBjb3B5
KQpAQCAtNTQsNiArNTQsNyBAQCBwdWJsaWM6CiAgICAgICAgICwgbV9sYXN0U2VlblN0cnVjdHVy
ZSgwKQogICAgICAgICAsIG1fZXhwZWN0ZWRTdHJ1Y3R1cmUoMCkKICAgICAgICAgLCBtX3N0cnVj
dHVyZUlzUG9seW1vcnBoaWMoZmFsc2UpCisgICAgICAgICwgbV9tYXlJbnRlcmNlcHRJbmRleGVk
QWNjZXNzZXMoZmFsc2UpCiAgICAgICAgICwgbV9vYnNlcnZlZEFycmF5TW9kZXMoMCkKICAgICB7
CiAgICAgfQpAQCAtNjMsNiArNjQsNyBAQCBwdWJsaWM6CiAgICAgICAgICwgbV9sYXN0U2VlblN0
cnVjdHVyZSgwKQogICAgICAgICAsIG1fZXhwZWN0ZWRTdHJ1Y3R1cmUoMCkKICAgICAgICAgLCBt
X3N0cnVjdHVyZUlzUG9seW1vcnBoaWMoZmFsc2UpCisgICAgICAgICwgbV9tYXlJbnRlcmNlcHRJ
bmRleGVkQWNjZXNzZXMoZmFsc2UpCiAgICAgICAgICwgbV9vYnNlcnZlZEFycmF5TW9kZXMoMCkK
ICAgICB7CiAgICAgfQpAQCAtODksNiArOTEsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiAh
c3RydWN0dXJlSXNQb2x5bW9ycGhpYygpICYmIG1fZXhwZWN0ZWRTdHJ1Y3R1cmU7CiAgICAgfQog
ICAgIEFycmF5TW9kZXMgb2JzZXJ2ZWRBcnJheU1vZGVzKCkgY29uc3QgeyByZXR1cm4gbV9vYnNl
cnZlZEFycmF5TW9kZXM7IH0KKyAgICBib29sIG1heUludGVyY2VwdEluZGV4ZWRBY2Nlc3Nlcygp
IGNvbnN0IHsgcmV0dXJuIG1fbWF5SW50ZXJjZXB0SW5kZXhlZEFjY2Vzc2VzOyB9CiAgICAgCiBw
cml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CkBAIC05Nyw2
ICsxMDAsNyBAQCBwcml2YXRlOgogICAgIFN0cnVjdHVyZSogbV9sYXN0U2VlblN0cnVjdHVyZTsK
ICAgICBTdHJ1Y3R1cmUqIG1fZXhwZWN0ZWRTdHJ1Y3R1cmU7CiAgICAgYm9vbCBtX3N0cnVjdHVy
ZUlzUG9seW1vcnBoaWM7CisgICAgYm9vbCBtX21heUludGVyY2VwdEluZGV4ZWRBY2Nlc3NlczsK
ICAgICBBcnJheU1vZGVzIG1fb2JzZXJ2ZWRBcnJheU1vZGVzOwogfTsKIApJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdFN0YXRlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0U3RhdGUuY3BwCShyZXZpc2lvbiAx
Mjg4MjYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0U3RhdGUuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC04NjMsNiArODYzLDcgQEAgYm9vbCBBYnN0cmFjdFN0YXRlOjpl
eGVjdXRlKHVuc2lnbmVkIGluZAogICAgICAgICAgICAgZm9yTm9kZShub2RlSW5kZXgpLm1ha2VU
b3AoKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIE9VVF9PRl9CT1VORFNfQVJS
QVlfU1RPUkFHRV9NT0RFUzoKKyAgICAgICAgY2FzZSBBTExfRUZGRUNURlVMX0FSUkFZX1NUT1JB
R0VfTU9ERVM6CiAgICAgICAgICAgICBmb3JOb2RlKG5vZGUuY2hpbGQyKCkpLmZpbHRlcihTcGVj
SW50MzIpOwogICAgICAgICAgICAgY2xvYmJlcldvcmxkKG5vZGUuY29kZU9yaWdpbiwgaW5kZXhJ
bkJsb2NrKTsKICAgICAgICAgICAgIGZvck5vZGUobm9kZUluZGV4KS5tYWtlVG9wKCk7CkBAIC05
MjYsNiArOTI3LDcgQEAgYm9vbCBBYnN0cmFjdFN0YXRlOjpleGVjdXRlKHVuc2lnbmVkIGluZAog
ICAgICAgICAgICAgZm9yTm9kZShjaGlsZDIpLmZpbHRlcihTcGVjSW50MzIpOwogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIGNhc2UgT1VUX09GX0JPVU5EU19BUlJBWV9TVE9SQUdFX01PREVT
OgorICAgICAgICBjYXNlIEFMTF9FRkZFQ1RGVUxfQVJSQVlfU1RPUkFHRV9NT0RFUzoKICAgICAg
ICAgICAgIGZvck5vZGUoY2hpbGQyKS5maWx0ZXIoU3BlY0ludDMyKTsKICAgICAgICAgICAgIGNs
b2JiZXJXb3JsZChub2RlLmNvZGVPcmlnaW4sIGluZGV4SW5CbG9jayk7CiAgICAgICAgICAgICBi
cmVhazsKQEAgLTEzOTcsNiArMTM5OSwyMCBAQCBib29sIEFic3RyYWN0U3RhdGU6OmV4ZWN1dGUo
dW5zaWduZWQgaW5kCiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CiAgICAgfQorICAgIGNhc2Ug
QXJyYXlpZnk6IHsKKyAgICAgICAgc3dpdGNoIChub2RlLmFycmF5TW9kZSgpKSB7CisgICAgICAg
IGNhc2UgRUZGRUNURlVMX05PTl9BUlJBWV9BUlJBWV9TVE9SQUdFX01PREVTOgorICAgICAgICAg
ICAgbm9kZS5zZXRDYW5FeGl0KHRydWUpOworICAgICAgICAgICAgZm9yTm9kZShub2RlLmNoaWxk
MSgpKS5maWx0ZXIoU3BlY0NlbGwpOworICAgICAgICAgICAgZm9yTm9kZShub2RlSW5kZXgpLmNs
ZWFyKCk7CisgICAgICAgICAgICBjbG9iYmVyU3RydWN0dXJlcyhpbmRleEluQmxvY2spOworICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGJyZWFr
OworICAgIH0KICAgICBjYXNlIEdldEluZGV4ZWRQcm9wZXJ0eVN0b3JhZ2U6IHsKICAgICAgICAg
c3dpdGNoIChub2RlLmFycmF5TW9kZSgpKSB7CiAgICAgICAgIGNhc2UgQXJyYXk6OlN0cmluZzoK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJyYXlNb2RlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FycmF5TW9kZS5jcHAJKHJldmlz
aW9uIDEyODgyNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJyYXlNb2RlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzIsMjYgKzMyLDM5IEBACiAKIG5hbWVzcGFjZSBKU0MgeyBu
YW1lc3BhY2UgREZHIHsKIAotQXJyYXk6Ok1vZGUgZnJvbU9ic2VydmVkKEFycmF5TW9kZXMgbW9k
ZXMsIGJvb2wgbWFrZVNhZmUpCitBcnJheTo6TW9kZSBmcm9tT2JzZXJ2ZWQoQXJyYXlQcm9maWxl
KiBwcm9maWxlLCBBcnJheTo6QWN0aW9uIGFjdGlvbiwgYm9vbCBtYWtlU2FmZSkKIHsKLSAgICAv
LyBGSVhNRTogd2UgbWF5IHdhbnQgdG8gYWRkIHNvbWUgcG9seW1vcnBoaWMgc3VwcG9ydCBpbiB0
aGUgZnV0dXJlLiBUaGF0J3Mgd2h5IHRoaXMKLSAgICAvLyBpcyBhIHN3aXRjaCBzdGF0ZW1lbnQg
cmlnaHQgbm93LgotICAgIAotICAgIHN3aXRjaCAobW9kZXMpIHsKKyAgICBzd2l0Y2ggKHByb2Zp
bGUtPm9ic2VydmVkQXJyYXlNb2RlcygpKSB7CiAgICAgY2FzZSAwOgogICAgICAgICByZXR1cm4g
QXJyYXk6OlVuZGVjaWRlZDsKKyAgICBjYXNlIGFzQXJyYXlNb2RlcyhOb25BcnJheSk6CisgICAg
ICAgIGlmIChhY3Rpb24gPT0gQXJyYXk6OldyaXRlICYmICFwcm9maWxlLT5tYXlJbnRlcmNlcHRJ
bmRleGVkQWNjZXNzZXMoKSkKKyAgICAgICAgICAgIHJldHVybiBBcnJheTo6QmxhbmtUb0FycmF5
U3RvcmFnZTsgLy8gRklYTUU6IHdlIGRvbid0IGtub3cgd2hldGhlciB0byBnbyB0byBzbG93IHB1
dCBtb2RlLCBvciBub3QuIFRoaXMgaXMgYSBkZWNlbnQgZ3Vlc3MuCisgICAgICAgIHJldHVybiBB
cnJheTo6VW5kZWNpZGVkOwogICAgIGNhc2UgYXNBcnJheU1vZGVzKE5vbkFycmF5V2l0aEFycmF5
U3RvcmFnZSk6CiAgICAgICAgIHJldHVybiBtYWtlU2FmZSA/IEFycmF5OjpBcnJheVN0b3JhZ2VP
dXRPZkJvdW5kcyA6IEFycmF5OjpBcnJheVN0b3JhZ2U7CiAgICAgY2FzZSBhc0FycmF5TW9kZXMo
Tm9uQXJyYXlXaXRoU2xvd1B1dEFycmF5U3RvcmFnZSk6CisgICAgY2FzZSBhc0FycmF5TW9kZXMo
Tm9uQXJyYXlXaXRoQXJyYXlTdG9yYWdlKSB8IGFzQXJyYXlNb2RlcyhOb25BcnJheVdpdGhTbG93
UHV0QXJyYXlTdG9yYWdlKToKICAgICAgICAgcmV0dXJuIEFycmF5OjpTbG93UHV0QXJyYXlTdG9y
YWdlOwogICAgIGNhc2UgYXNBcnJheU1vZGVzKEFycmF5V2l0aEFycmF5U3RvcmFnZSk6CiAgICAg
ICAgIHJldHVybiBtYWtlU2FmZSA/IEFycmF5OjpBcnJheVdpdGhBcnJheVN0b3JhZ2VPdXRPZkJv
dW5kcyA6IEFycmF5OjpBcnJheVdpdGhBcnJheVN0b3JhZ2U7CiAgICAgY2FzZSBhc0FycmF5TW9k
ZXMoQXJyYXlXaXRoU2xvd1B1dEFycmF5U3RvcmFnZSk6CisgICAgY2FzZSBhc0FycmF5TW9kZXMo
QXJyYXlXaXRoQXJyYXlTdG9yYWdlKSB8IGFzQXJyYXlNb2RlcyhBcnJheVdpdGhTbG93UHV0QXJy
YXlTdG9yYWdlKToKICAgICAgICAgcmV0dXJuIEFycmF5OjpBcnJheVdpdGhTbG93UHV0QXJyYXlT
dG9yYWdlOwogICAgIGNhc2UgYXNBcnJheU1vZGVzKE5vbkFycmF5V2l0aEFycmF5U3RvcmFnZSkg
fCBhc0FycmF5TW9kZXMoQXJyYXlXaXRoQXJyYXlTdG9yYWdlKToKICAgICAgICAgcmV0dXJuIG1h
a2VTYWZlID8gQXJyYXk6OlBvc3NpYmx5QXJyYXlXaXRoQXJyYXlTdG9yYWdlT3V0T2ZCb3VuZHMg
OiBBcnJheTo6UG9zc2libHlBcnJheVdpdGhBcnJheVN0b3JhZ2U7CiAgICAgY2FzZSBhc0FycmF5
TW9kZXMoTm9uQXJyYXlXaXRoU2xvd1B1dEFycmF5U3RvcmFnZSkgfCBhc0FycmF5TW9kZXMoQXJy
YXlXaXRoU2xvd1B1dEFycmF5U3RvcmFnZSk6CisgICAgY2FzZSBhc0FycmF5TW9kZXMoTm9uQXJy
YXlXaXRoQXJyYXlTdG9yYWdlKSB8IGFzQXJyYXlNb2RlcyhBcnJheVdpdGhBcnJheVN0b3JhZ2Up
IHwgYXNBcnJheU1vZGVzKE5vbkFycmF5V2l0aFNsb3dQdXRBcnJheVN0b3JhZ2UpIHwgYXNBcnJh
eU1vZGVzKEFycmF5V2l0aFNsb3dQdXRBcnJheVN0b3JhZ2UpOgogICAgICAgICByZXR1cm4gQXJy
YXk6OlBvc3NpYmx5QXJyYXlXaXRoU2xvd1B1dEFycmF5U3RvcmFnZTsKKyAgICBjYXNlIGFzQXJy
YXlNb2RlcyhOb25BcnJheSkgfCBhc0FycmF5TW9kZXMoTm9uQXJyYXlXaXRoQXJyYXlTdG9yYWdl
KToKKyAgICAgICAgaWYgKGFjdGlvbiA9PSBBcnJheTo6V3JpdGUgJiYgIXByb2ZpbGUtPm1heUlu
dGVyY2VwdEluZGV4ZWRBY2Nlc3NlcygpKQorICAgICAgICAgICAgcmV0dXJuIEFycmF5OjpCbGFu
a1RvQXJyYXlTdG9yYWdlOworICAgICAgICByZXR1cm4gQXJyYXk6OlVuZGVjaWRlZDsKKyAgICBj
YXNlIGFzQXJyYXlNb2RlcyhOb25BcnJheSkgfCBhc0FycmF5TW9kZXMoTm9uQXJyYXlXaXRoU2xv
d1B1dEFycmF5U3RvcmFnZSk6CisgICAgY2FzZSBhc0FycmF5TW9kZXMoTm9uQXJyYXkpIHwgYXNB
cnJheU1vZGVzKE5vbkFycmF5V2l0aEFycmF5U3RvcmFnZSkgfCBhc0FycmF5TW9kZXMoTm9uQXJy
YXlXaXRoU2xvd1B1dEFycmF5U3RvcmFnZSk6CisgICAgICAgIGlmIChhY3Rpb24gPT0gQXJyYXk6
OldyaXRlICYmICFwcm9maWxlLT5tYXlJbnRlcmNlcHRJbmRleGVkQWNjZXNzZXMoKSkKKyAgICAg
ICAgICAgIHJldHVybiBBcnJheTo6QmxhbmtUb1Nsb3dQdXRBcnJheVN0b3JhZ2U7CisgICAgICAg
IHJldHVybiBBcnJheTo6VW5kZWNpZGVkOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIC8vIFdlIGtu
b3cgdGhhdCB0aGlzIGlzIHBvc3NpYmx5IGEga2luZCBvZiBhcnJheSBmb3Igd2hpY2gsIHRob3Vn
aCB0aGVyZSBpcyBubwogICAgICAgICAvLyB1c2VmdWwgZGF0YSBpbiB0aGUgYXJyYXkgcHJvZmls
ZSwgd2UgbWF5IGJlIGFibGUgdG8gZXh0cmFjdCB1c2VmdWwgZGF0YSBmcm9tCkBAIC02MSwxMSAr
NzQsNiBAQCBBcnJheTo6TW9kZSBmcm9tT2JzZXJ2ZWQoQXJyYXlNb2RlcyBtb2RlCiAgICAgfQog
fQogCi1BcnJheTo6TW9kZSBmcm9tU3RydWN0dXJlKFN0cnVjdHVyZSogc3RydWN0dXJlLCBib29s
IG1ha2VTYWZlKQotewotICAgIHJldHVybiBmcm9tT2JzZXJ2ZWQoYXJyYXlNb2RlRnJvbVN0cnVj
dHVyZShzdHJ1Y3R1cmUpLCBtYWtlU2FmZSk7Ci19Ci0KIEFycmF5OjpNb2RlIHJlZmluZUFycmF5
TW9kZShBcnJheTo6TW9kZSBhcnJheU1vZGUsIFNwZWN1bGF0ZWRUeXBlIGJhc2UsIFNwZWN1bGF0
ZWRUeXBlIGluZGV4KQogewogICAgIGlmICghYmFzZSB8fCAhaW5kZXgpIHsKQEAgLTE0MCw3ICsx
NDgsNyBAQCBib29sIG1vZGVBbHJlYWR5Q2hlY2tlZChBYnN0cmFjdFZhbHVlJiB2CiAgICAgY2Fz
ZSBBcnJheTo6U2xvd1B1dEFycmF5U3RvcmFnZToKICAgICBjYXNlIEFycmF5OjpQb3NzaWJseUFy
cmF5V2l0aFNsb3dQdXRBcnJheVN0b3JhZ2U6CiAgICAgICAgIHJldHVybiB2YWx1ZS5tX2N1cnJl
bnRLbm93blN0cnVjdHVyZS5oYXNTaW5nbGV0b24oKQotICAgICAgICAgICAgJiYgKHZhbHVlLm1f
Y3VycmVudEtub3duU3RydWN0dXJlLnNpbmdsZXRvbigpLT5pbmRleGluZ1R5cGUoKSAmIEhhc1Ns
b3dQdXRBcnJheVN0b3JhZ2UpOworICAgICAgICAgICAgJiYgKHZhbHVlLm1fY3VycmVudEtub3du
U3RydWN0dXJlLnNpbmdsZXRvbigpLT5pbmRleGluZ1R5cGUoKSAmIChIYXNBcnJheVN0b3JhZ2Ug
fCBIYXNTbG93UHV0QXJyYXlTdG9yYWdlKSk7CiAgICAgICAgIAogICAgIGNhc2UgQXJyYXk6OkFy
cmF5V2l0aEFycmF5U3RvcmFnZToKICAgICBjYXNlIEFycmF5OjpBcnJheVdpdGhBcnJheVN0b3Jh
Z2VPdXRPZkJvdW5kczoKQEAgLTE1MCw5ICsxNTgsMTIgQEAgYm9vbCBtb2RlQWxyZWFkeUNoZWNr
ZWQoQWJzdHJhY3RWYWx1ZSYgdgogICAgICAgICAKICAgICBjYXNlIEFycmF5OjpBcnJheVdpdGhT
bG93UHV0QXJyYXlTdG9yYWdlOgogICAgICAgICByZXR1cm4gdmFsdWUubV9jdXJyZW50S25vd25T
dHJ1Y3R1cmUuaGFzU2luZ2xldG9uKCkKLSAgICAgICAgICAgICYmICh2YWx1ZS5tX2N1cnJlbnRL
bm93blN0cnVjdHVyZS5zaW5nbGV0b24oKS0+aW5kZXhpbmdUeXBlKCkgJiBIYXNTbG93UHV0QXJy
YXlTdG9yYWdlKQorICAgICAgICAgICAgJiYgKHZhbHVlLm1fY3VycmVudEtub3duU3RydWN0dXJl
LnNpbmdsZXRvbigpLT5pbmRleGluZ1R5cGUoKSAmIChIYXNBcnJheVN0b3JhZ2UgfCBIYXNTbG93
UHV0QXJyYXlTdG9yYWdlKSkKICAgICAgICAgICAgICYmICh2YWx1ZS5tX2N1cnJlbnRLbm93blN0
cnVjdHVyZS5zaW5nbGV0b24oKS0+aW5kZXhpbmdUeXBlKCkgJiBJc0FycmF5KTsKICAgICAgICAg
CisgICAgY2FzZSBBTExfRUZGRUNURlVMX0FSUkFZX1NUT1JBR0VfTU9ERVM6CisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAgICAgCiAgICAgY2FzZSBBcnJheTo6QXJndW1lbnRzOgogICAgICAg
ICByZXR1cm4gaXNBcmd1bWVudHNTcGVjdWxhdGlvbih2YWx1ZS5tX3R5cGUpOwogICAgICAgICAK
QEAgLTIyMCw2ICsyMzEsMTAgQEAgY29uc3QgY2hhciogbW9kZVRvU3RyaW5nKEFycmF5OjpNb2Rl
IG1vZAogICAgICAgICByZXR1cm4gIlBvc3NpYmx5QXJyYXlXaXRoU2xvd1B1dEFycmF5U3RvcmFn
ZSI7CiAgICAgY2FzZSBBcnJheTo6UG9zc2libHlBcnJheVdpdGhBcnJheVN0b3JhZ2VPdXRPZkJv
dW5kczoKICAgICAgICAgcmV0dXJuICJQb3NzaWJseUFycmF5V2l0aEFycmF5U3RvcmFnZU91dE9m
Qm91bmRzIjsKKyAgICBjYXNlIEFycmF5OjpCbGFua1RvQXJyYXlTdG9yYWdlOgorICAgICAgICBy
ZXR1cm4gIkJsYW5rVG9BcnJheVN0b3JhZ2UiOworICAgIGNhc2UgQXJyYXk6OkJsYW5rVG9TbG93
UHV0QXJyYXlTdG9yYWdlOgorICAgICAgICByZXR1cm4gIkJsYW5rVG9TbG93UHV0QXJyYXlTdG9y
YWdlIjsKICAgICBjYXNlIEFycmF5OjpBcmd1bWVudHM6CiAgICAgICAgIHJldHVybiAiQXJndW1l
bnRzIjsKICAgICBjYXNlIEFycmF5OjpJbnQ4QXJyYXk6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0FycmF5TW9kZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQXJyYXlNb2RlLmgJKHJldmlzaW9uIDEyODgyNikKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQXJyYXlNb2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQxLDExICs0
MSwxOCBAQCBzdHJ1Y3QgQWJzdHJhY3RWYWx1ZTsKIC8vIHRoYXQgd291bGQgb3RoZXJ3aXNlIG9j
Y3VyLCBzaW5jZSB3ZSBzYXkgdGhpbmdzIGxpa2UgIkludDhBcnJheSIgYW5kICJKU0FycmF5Igog
Ly8gaW4gbG90cyBvZiBvdGhlciBwbGFjZXMsIHRvIG1lYW4gc3VidGx5IGRpZmZlcmVudCB0aGlu
Z3MuCiBuYW1lc3BhY2UgQXJyYXkgeworZW51bSBBY3Rpb24geworICAgIFJlYWQsCisgICAgV3Jp
dGUKK307CisKIGVudW0gTW9kZSB7CiAgICAgVW5kZWNpZGVkLCAvLyBJbXBsaWVzIHRoYXQgd2Ug
bmVlZCBwcmVkaWN0aW9ucyB0byBkZWNpZGUuIFdlIHdpbGwgbmV2ZXIgZ2V0IHRvIHRoZSBiYWNr
ZW5kIGluIHRoaXMgbW9kZS4KICAgICBGb3JjZUV4aXQsIC8vIEltcGxpZXMgdGhhdCB3ZSBoYXZl
IG5vIGlkZWEgaG93IHRvIGV4ZWN1dGUgdGhpcyBvcGVyYXRpb24sIHNvIHdlIHNob3VsZCBqdXN0
IGdpdmUgdXAuCiAgICAgR2VuZXJpYywKICAgICBTdHJpbmcsCisgICAgCisgICAgLy8gTW9kZXMg
b2YgY29udmVudGlvbmFsIGluZGV4ZWQgc3RvcmFnZSB3aGVyZSB0aGUgY2hlY2sgaXMgbm9uIHNp
ZGUtZWZmZWN0aW5nLgogICAgIEFycmF5U3RvcmFnZSwKICAgICBTbG93UHV0QXJyYXlTdG9yYWdl
LAogICAgIEFycmF5U3RvcmFnZU91dE9mQm91bmRzLApAQCAtNTUsNiArNjIsMTEgQEAgZW51bSBN
b2RlIHsKICAgICBQb3NzaWJseUFycmF5V2l0aEFycmF5U3RvcmFnZSwKICAgICBQb3NzaWJseUFy
cmF5V2l0aFNsb3dQdXRBcnJheVN0b3JhZ2UsCiAgICAgUG9zc2libHlBcnJheVdpdGhBcnJheVN0
b3JhZ2VPdXRPZkJvdW5kcywKKyAgICAKKyAgICAvLyBNb2RlcyBvZiBjb252ZW50aW9uYWwgaW5k
ZXhlZCBzdG9yYWdlIHdoZXJlIHRoZSBjaGVjayBpcyBzaWRlLWVmZmVjdGluZy4KKyAgICBCbGFu
a1RvQXJyYXlTdG9yYWdlLAorICAgIEJsYW5rVG9TbG93UHV0QXJyYXlTdG9yYWdlLAorICAgIAog
ICAgIEFyZ3VtZW50cywKICAgICBJbnQ4QXJyYXksCiAgICAgSW50MTZBcnJheSwKQEAgLTcxLDYg
KzgzLDggQEAgZW51bSBNb2RlIHsKIC8vIEhlbHBlcnMgZm9yICdjYXNlJyBzdGF0ZW1lbnRzLiBG
b3IgZXhhbXBsZSwgc2F5aW5nICJjYXNlIEFsbEFycmF5U3RvcmFnZU1vZGVzOiIKIC8vIGlzIHRo
ZSBzYW1lIGFzIGhhdmluZyBtdWx0aXBsZSBjYXNlIHN0YXRlbWVudHMgbGlzdGluZyBvZmYgYWxs
IG9mIHRoZSBtb2RlcyB0aGF0CiAvLyBoYXZlIHRoZSB3b3JkICJBcnJheVN0b3JhZ2UiIGluIHRo
ZW0uCisKKy8vIEZpcnN0OiBoZWxwZXJzIGZvciBub24tc2lkZS1lZmZlY3RpbmcgY2hlY2tzLgog
I2RlZmluZSBOT05fQVJSQVlfQVJSQVlfU1RPUkFHRV9NT0RFUyAgICAgICAgICAgICAgICAgICAg
ICBcCiAgICAgQXJyYXk6OkFycmF5U3RvcmFnZTogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFwKICAgICBjYXNlIEFycmF5OjpTbG93UHV0QXJyYXlTdG9yYWdlOiAgICAgICAgICAg
ICAgICAgICAgICAgXApAQCAtOTksOSArMTEzLDE2IEBAIGVudW0gTW9kZSB7CiAgICAgY2FzZSBB
cnJheTo6QXJyYXlXaXRoQXJyYXlTdG9yYWdlT3V0T2ZCb3VuZHM6ICAgICAgICAgIFwKICAgICBj
YXNlIEFycmF5OjpQb3NzaWJseUFycmF5V2l0aEFycmF5U3RvcmFnZU91dE9mQm91bmRzCiAKLUFy
cmF5OjpNb2RlIGZyb21PYnNlcnZlZChBcnJheU1vZGVzIG1vZGVzLCBib29sIG1ha2VTYWZlKTsK
Ky8vIE5leHQ6IGhlbHBlcnMgZm9yIHNpZGUtZWZmZWN0aW5nIGNoZWNrcy4KKyNkZWZpbmUgRUZG
RUNURlVMX05PTl9BUlJBWV9BUlJBWV9TVE9SQUdFX01PREVTIFwKKyAgICBBcnJheTo6QmxhbmtU
b0FycmF5U3RvcmFnZTogICAgICAgICAgICAgICAgIFwKKyAgICBjYXNlIEFycmF5OjpCbGFua1Rv
U2xvd1B1dEFycmF5U3RvcmFnZQorI2RlZmluZSBBTExfRUZGRUNURlVMX0FSUkFZX1NUT1JBR0Vf
TU9ERVMgICAgICAgXAorICAgIEVGRkVDVEZVTF9OT05fQVJSQVlfQVJSQVlfU1RPUkFHRV9NT0RF
UworI2RlZmluZSBTTE9XX1BVVF9FRkZFQ1RGVUxfQVJSQVlfU1RPUkFHRV9NT0RFUyAgXAorICAg
IEFycmF5OjpCbGFua1RvU2xvd1B1dEFycmF5U3RvcmFnZQogCi1BcnJheTo6TW9kZSBmcm9tU3Ry
dWN0dXJlKFN0cnVjdHVyZSosIGJvb2wgbWFrZVNhZmUpOworQXJyYXk6Ok1vZGUgZnJvbU9ic2Vy
dmVkKEFycmF5UHJvZmlsZSosIEFycmF5OjpBY3Rpb24sIGJvb2wgbWFrZVNhZmUpOwogCiBBcnJh
eTo6TW9kZSByZWZpbmVBcnJheU1vZGUoQXJyYXk6Ok1vZGUsIFNwZWN1bGF0ZWRUeXBlIGJhc2Us
IFNwZWN1bGF0ZWRUeXBlIGluZGV4KTsKIApAQCAtMTEzLDYgKzEzNCw3IEBAIGlubGluZSBib29s
IG1vZGVVc2VzQnV0dGVyZmx5KEFycmF5OjpNb2QKIHsKICAgICBzd2l0Y2ggKGFycmF5TW9kZSkg
ewogICAgIGNhc2UgQUxMX0FSUkFZX1NUT1JBR0VfTU9ERVM6CisgICAgY2FzZSBBTExfRUZGRUNU
RlVMX0FSUkFZX1NUT1JBR0VfTU9ERVM6CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIGRlZmF1
bHQ6CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTE0Myw2ICsxNjUsNyBAQCBpbmxpbmUgYm9v
bCBpc1Nsb3dQdXRBY2Nlc3MoQXJyYXk6Ok1vZGUgCiB7CiAgICAgc3dpdGNoIChhcnJheU1vZGUp
IHsKICAgICBjYXNlIFNMT1dfUFVUX0FSUkFZX1NUT1JBR0VfTU9ERVM6CisgICAgY2FzZSBTTE9X
X1BVVF9FRkZFQ1RGVUxfQVJSQVlfU1RPUkFHRV9NT0RFUzoKICAgICAgICAgcmV0dXJuIHRydWU7
CiAgICAgZGVmYXVsdDoKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMjA2LDYgKzIyOSwyOSBA
QCBpbmxpbmUgYm9vbCBtb2RlU3VwcG9ydHNMZW5ndGgoQXJyYXk6Ok1vCiAgICAgfQogfQogCitp
bmxpbmUgYm9vbCBiZW5lZml0c0Zyb21TdHJ1Y3R1cmVDaGVjayhBcnJheTo6TW9kZSBtb2RlKQor
eworICAgIHN3aXRjaCAobW9kZSkgeworICAgIGNhc2UgQUxMX0VGRkVDVEZVTF9BUlJBWV9TVE9S
QUdFX01PREVTOgorICAgIGNhc2UgQXJyYXk6OlVuZGVjaWRlZDoKKyAgICBjYXNlIEFycmF5OjpG
b3JjZUV4aXQ6CisgICAgY2FzZSBBcnJheTo6R2VuZXJpYzoKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KK30KKworaW5saW5l
IGJvb2wgaXNFZmZlY3RmdWwoQXJyYXk6Ok1vZGUgbW9kZSkKK3sKKyAgICBzd2l0Y2ggKG1vZGUp
IHsKKyAgICBjYXNlIEFMTF9FRkZFQ1RGVUxfQVJSQVlfU1RPUkFHRV9NT0RFUzoKKyAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0K
K30KKwogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkRGRwogCiAjZW5kaWYgLy8gRU5BQkxFKERGR19K
SVQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFy
c2VyLmNwcAkocmV2aXNpb24gMTI4ODI2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdCeXRlQ29kZVBhcnNlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgyOCwyNiArODI4LDI5IEBA
IHByaXZhdGU6CiAgICAgQXJyYXk6Ok1vZGUgZ2V0QXJyYXlNb2RlKEFycmF5UHJvZmlsZSogcHJv
ZmlsZSkKICAgICB7CiAgICAgICAgIHByb2ZpbGUtPmNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbigp
OwotICAgICAgICByZXR1cm4gZnJvbU9ic2VydmVkKHByb2ZpbGUtPm9ic2VydmVkQXJyYXlNb2Rl
cygpLCBmYWxzZSk7CisgICAgICAgIHJldHVybiBmcm9tT2JzZXJ2ZWQocHJvZmlsZSwgQXJyYXk6
OlJlYWQsIGZhbHNlKTsKICAgICB9CiAgICAgCi0gICAgQXJyYXk6Ok1vZGUgZ2V0QXJyYXlNb2Rl
QW5kRW1pdENoZWNrcyhBcnJheVByb2ZpbGUqIHByb2ZpbGUsIE5vZGVJbmRleCBiYXNlKQorICAg
IEFycmF5OjpNb2RlIGdldEFycmF5TW9kZUFuZEVtaXRDaGVja3MoQXJyYXlQcm9maWxlKiBwcm9m
aWxlLCBBcnJheTo6QWN0aW9uIGFjdGlvbiwgTm9kZUluZGV4IGJhc2UpCiAgICAgewogICAgICAg
ICBwcm9maWxlLT5jb21wdXRlVXBkYXRlZFByZWRpY3Rpb24oKTsKLSAgICAgICAgaWYgKHByb2Zp
bGUtPmhhc0RlZmluaXRlU3RydWN0dXJlKCkpCi0gICAgICAgICAgICBhZGRUb0dyYXBoKENoZWNr
U3RydWN0dXJlLCBPcEluZm8obV9ncmFwaC5hZGRTdHJ1Y3R1cmVTZXQocHJvZmlsZS0+ZXhwZWN0
ZWRTdHJ1Y3R1cmUoKSkpLCBiYXNlKTsKICAgICAgICAgCiAjaWYgREZHX0VOQUJMRShERUJVR19Q
Uk9QQUdBVElPTl9WRVJCT1NFKQogICAgICAgICBpZiAobV9pbmxpbmVTdGFja1RvcC0+bV9wcm9m
aWxlZEJsb2NrLT5udW1iZXJPZlJhcmVDYXNlUHJvZmlsZXMoKSkKICAgICAgICAgICAgIGRhdGFM
b2coIlNsb3cgY2FzZSBwcm9maWxlIGZvciBiYyMldTogJXVcbiIsIG1fY3VycmVudEluZGV4LCBt
X2lubGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2stPnJhcmVDYXNlUHJvZmlsZUZvckJ5dGVj
b2RlT2Zmc2V0KG1fY3VycmVudEluZGV4KS0+bV9jb3VudGVyKTsKLSAgICAgICAgZGF0YUxvZygi
QXJyYXkgcHJvZmlsZSBmb3IgYmMjJXU6ICVwJXMsICV1XG4iLCBtX2N1cnJlbnRJbmRleCwgcHJv
ZmlsZS0+ZXhwZWN0ZWRTdHJ1Y3R1cmUoKSwgcHJvZmlsZS0+c3RydWN0dXJlSXNQb2x5bW9ycGhp
YygpID8gIiAocG9seW1vcnBoaWMpIiA6ICIiLCBwcm9maWxlLT5vYnNlcnZlZEFycmF5TW9kZXMo
KSk7CisgICAgICAgIGRhdGFMb2coIkFycmF5IHByb2ZpbGUgZm9yIGJjIyV1OiAlcCVzJXMsICV1
XG4iLCBtX2N1cnJlbnRJbmRleCwgcHJvZmlsZS0+ZXhwZWN0ZWRTdHJ1Y3R1cmUoKSwgcHJvZmls
ZS0+c3RydWN0dXJlSXNQb2x5bW9ycGhpYygpID8gIiAocG9seW1vcnBoaWMpIiA6ICIiLCBwcm9m
aWxlLT5tYXlJbnRlcmNlcHRJbmRleGVkQWNjZXNzZXMoKSA/ICIgKG1heSBpbnRlcmNlcHQpIiA6
ICIiLCBwcm9maWxlLT5vYnNlcnZlZEFycmF5TW9kZXMoKSk7CiAjZW5kaWYKICAgICAgICAgCiAg
ICAgICAgIGJvb2wgbWFrZVNhZmUgPQogICAgICAgICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV9w
cm9maWxlZEJsb2NrLT5jb3VsZFRha2VTbG93Q2FzZShtX2N1cnJlbnRJbmRleCkKICAgICAgICAg
ICAgIHx8IG1faW5saW5lU3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJy
ZW50SW5kZXgsIE91dE9mQm91bmRzKTsKICAgICAgICAgCi0gICAgICAgIHJldHVybiBmcm9tT2Jz
ZXJ2ZWQocHJvZmlsZS0+b2JzZXJ2ZWRBcnJheU1vZGVzKCksIG1ha2VTYWZlKTsKKyAgICAgICAg
QXJyYXk6Ok1vZGUgcmVzdWx0ID0gZnJvbU9ic2VydmVkKHByb2ZpbGUsIGFjdGlvbiwgbWFrZVNh
ZmUpOworICAgICAgICAKKyAgICAgICAgaWYgKHByb2ZpbGUtPmhhc0RlZmluaXRlU3RydWN0dXJl
KCkgJiYgYmVuZWZpdHNGcm9tU3RydWN0dXJlQ2hlY2socmVzdWx0KSkKKyAgICAgICAgICAgIGFk
ZFRvR3JhcGgoQ2hlY2tTdHJ1Y3R1cmUsIE9wSW5mbyhtX2dyYXBoLmFkZFN0cnVjdHVyZVNldChw
cm9maWxlLT5leHBlY3RlZFN0cnVjdHVyZSgpKSksIGJhc2UpOworICAgICAgICAKKyAgICAgICAg
cmV0dXJuIHJlc3VsdDsKICAgICB9CiAgICAgCiAgICAgTm9kZUluZGV4IG1ha2VTYWZlKE5vZGVJ
bmRleCBub2RlSW5kZXgpCkBAIC0yMTg4LDcgKzIxOTEsNyBAQCBib29sIEJ5dGVDb2RlUGFyc2Vy
OjpwYXJzZUJsb2NrKHVuc2lnbmVkCiAgICAgICAgICAgICBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0
aW9uID0gZ2V0UHJlZGljdGlvbigpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBOb2RlSW5k
ZXggYmFzZSA9IGdldChjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kKTsKLSAgICAgICAg
ICAgIEFycmF5OjpNb2RlIGFycmF5TW9kZSA9IGdldEFycmF5TW9kZUFuZEVtaXRDaGVja3MoY3Vy
cmVudEluc3RydWN0aW9uWzRdLnUuYXJyYXlQcm9maWxlLCBiYXNlKTsKKyAgICAgICAgICAgIEFy
cmF5OjpNb2RlIGFycmF5TW9kZSA9IGdldEFycmF5TW9kZUFuZEVtaXRDaGVja3MoY3VycmVudElu
c3RydWN0aW9uWzRdLnUuYXJyYXlQcm9maWxlLCBBcnJheTo6UmVhZCwgYmFzZSk7CiAgICAgICAg
ICAgICBOb2RlSW5kZXggcHJvcGVydHkgPSBnZXQoY3VycmVudEluc3RydWN0aW9uWzNdLnUub3Bl
cmFuZCk7CiAgICAgICAgICAgICBOb2RlSW5kZXggZ2V0QnlWYWwgPSBhZGRUb0dyYXBoKEdldEJ5
VmFsLCBPcEluZm8oYXJyYXlNb2RlKSwgT3BJbmZvKHByZWRpY3Rpb24pLCBiYXNlLCBwcm9wZXJ0
eSk7CiAgICAgICAgICAgICBzZXQoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCwgZ2V0
QnlWYWwpOwpAQCAtMjE5OSw3ICsyMjAyLDcgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VC
bG9jayh1bnNpZ25lZAogICAgICAgICBjYXNlIG9wX3B1dF9ieV92YWw6IHsKICAgICAgICAgICAg
IE5vZGVJbmRleCBiYXNlID0gZ2V0KGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpOwog
Ci0gICAgICAgICAgICBBcnJheTo6TW9kZSBhcnJheU1vZGUgPSBnZXRBcnJheU1vZGVBbmRFbWl0
Q2hlY2tzKGN1cnJlbnRJbnN0cnVjdGlvbls0XS51LmFycmF5UHJvZmlsZSwgYmFzZSk7CisgICAg
ICAgICAgICBBcnJheTo6TW9kZSBhcnJheU1vZGUgPSBnZXRBcnJheU1vZGVBbmRFbWl0Q2hlY2tz
KGN1cnJlbnRJbnN0cnVjdGlvbls0XS51LmFycmF5UHJvZmlsZSwgQXJyYXk6OldyaXRlLCBiYXNl
KTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgTm9kZUluZGV4IHByb3BlcnR5ID0gZ2V0KGN1
cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQpOwogICAgICAgICAgICAgTm9kZUluZGV4IHZh
bHVlID0gZ2V0KGN1cnJlbnRJbnN0cnVjdGlvblszXS51Lm9wZXJhbmQpOwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDU0VQaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDU0VQaGFzZS5jcHAJKHJldmlzaW9uIDEyODgyNikKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ1NFUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC01OTIsNiArNTkyLDcgQEAgcHJpdmF0ZToKIAogICAgICAgICAgICAgY2FzZSBBbGxvY2F0
ZVByb3BlcnR5U3RvcmFnZToKICAgICAgICAgICAgIGNhc2UgUmVhbGxvY2F0ZVByb3BlcnR5U3Rv
cmFnZToKKyAgICAgICAgICAgIGNhc2UgQXJyYXlpZnk6CiAgICAgICAgICAgICAgICAgLy8gSWYg
d2UgY2FuIGNoZWFwbHkgcHJvdmUgdGhpcyBpcyBhIGNoYW5nZSB0byBvdXIgb2JqZWN0J3Mgc3Rv
cmFnZSwgd2UKICAgICAgICAgICAgICAgICAvLyBjYW4gb3B0aW1pemUgYW5kIHVzZSBpdHMgcmVz
dWx0LgogICAgICAgICAgICAgICAgIGlmIChub2RlLmNoaWxkMSgpID09IGNoaWxkMSkKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAkocmV2aXNpb24g
MTI4ODI2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtOTAsNyArOTAsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgaWYg
KGFycmF5UHJvZmlsZSkgewogICAgICAgICAgICAgICAgIGFycmF5UHJvZmlsZS0+Y29tcHV0ZVVw
ZGF0ZWRQcmVkaWN0aW9uKCk7CiAgICAgICAgICAgICAgICAgYXJyYXlNb2RlID0gcmVmaW5lQXJy
YXlNb2RlKAotICAgICAgICAgICAgICAgICAgICBmcm9tT2JzZXJ2ZWQoYXJyYXlQcm9maWxlLT5v
YnNlcnZlZEFycmF5TW9kZXMoKSwgZmFsc2UpLAorICAgICAgICAgICAgICAgICAgICBmcm9tT2Jz
ZXJ2ZWQoYXJyYXlQcm9maWxlLCBBcnJheTo6UmVhZCwgZmFsc2UpLAogICAgICAgICAgICAgICAg
ICAgICBtX2dyYXBoW25vZGUuY2hpbGQxKCldLnByZWRpY3Rpb24oKSwKICAgICAgICAgICAgICAg
ICAgICAgbV9ncmFwaFttX2NvbXBpbGVJbmRleF0ucHJlZGljdGlvbigpKTsKICAgICAgICAgICAg
ICAgICBpZiAobW9kZVN1cHBvcnRzTGVuZ3RoKGFycmF5TW9kZSkgJiYgYXJyYXlQcm9maWxlLT5o
YXNEZWZpbml0ZVN0cnVjdHVyZSgpKSB7CkBAIC0zODAsNiArMzgwLDIzIEBAIHByaXZhdGU6CiAg
ICAgICAgIEFTU0VSVChtb2RlSXNTcGVjaWZpYyhhcnJheU1vZGUpKTsKICAgICAgICAgCiAgICAg
ICAgIG1fZ3JhcGgucmVmKGFycmF5KTsKKworICAgICAgICBpZiAoaXNFZmZlY3RmdWwoYXJyYXlN
b2RlKSkgeworICAgICAgICAgICAgTm9kZSBhcnJheWlmeShBcnJheWlmeSwgY29kZU9yaWdpbiwg
T3BJbmZvKGFycmF5TW9kZSksIGFycmF5KTsKKyAgICAgICAgICAgIGFycmF5aWZ5LnJlZigpOyAv
LyBPbmNlIGJlY2F1c2UgaXQncyB1c2VkIGFzIGEgYnV0dGVyZmx5LgorICAgICAgICAgICAgYXJy
YXlpZnkucmVmKCk7IC8vIEFuZCB0d2ljZSBiZWNhdXNlIGl0J3MgbXVzdC1nZW5lcmF0ZS4KKyAg
ICAgICAgICAgIE5vZGVJbmRleCBhcnJheWlmeUluZGV4ID0gbV9ncmFwaC5zaXplKCk7CisgICAg
ICAgICAgICBtX2dyYXBoLmFwcGVuZChhcnJheWlmeSk7CisgICAgICAgICAgICBtX2luc2VydGlv
blNldC5hcHBlbmQobV9pbmRleEluQmxvY2ssIGFycmF5aWZ5SW5kZXgpOworICAgICAgICAgICAg
CisgICAgICAgICAgICBBU1NFUlQoc3RvcmFnZUNoZWNrID09IGNhbkNTRVN0b3JhZ2UpOworICAg
ICAgICAgICAgQVNTRVJUKHNob3VsZEdlbmVyYXRlKTsKKyAgICAgICAgICAgIEFTU0VSVChjYW5D
U0VTdG9yYWdlKGFycmF5TW9kZSkpOworICAgICAgICAgICAgQVNTRVJUKG1vZGVVc2VzQnV0dGVy
Zmx5KGFycmF5TW9kZSkpOworICAgICAgICAgICAgCisgICAgICAgICAgICByZXR1cm4gYXJyYXlp
ZnlJbmRleDsKKyAgICAgICAgfQorICAgICAgICAKICAgICAgICAgTm9kZSBjaGVja0FycmF5KENo
ZWNrQXJyYXksIGNvZGVPcmlnaW4sIE9wSW5mbyhhcnJheU1vZGUpLCBhcnJheSk7CiAgICAgICAg
IGNoZWNrQXJyYXkucmVmKCk7CiAgICAgICAgIE5vZGVJbmRleCBjaGVja0FycmF5SW5kZXggPSBt
X2dyYXBoLnNpemUoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGgu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmgJKHJl
dmlzaW9uIDEyODgyNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaAko
d29ya2luZyBjb3B5KQpAQCAtNDc0LDYgKzQ3NCw3IEBAIHB1YmxpYzoKICAgICAgICAgc3dpdGNo
IChub2RlLmFycmF5TW9kZSgpKSB7CiAgICAgICAgIGNhc2UgQXJyYXk6OkdlbmVyaWM6CiAgICAg
ICAgIGNhc2UgT1VUX09GX0JPVU5EU19BUlJBWV9TVE9SQUdFX01PREVTOgorICAgICAgICBjYXNl
IEFMTF9FRkZFQ1RGVUxfQVJSQVlfU1RPUkFHRV9NT0RFUzoKICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICAgICAgY2FzZSBBcnJheTo6U3RyaW5nOgogICAgICAgICAgICAgcmV0dXJuIG5v
ZGUub3AoKSA9PSBHZXRCeVZhbDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Tm9kZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5o
CShyZXZpc2lvbiAxMjg4MjYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUu
aAkod29ya2luZyBjb3B5KQpAQCAtNzQwLDYgKzc0MCw3IEBAIHN0cnVjdCBOb2RlIHsKICAgICAg
ICAgY2FzZSBTdHJpbmdDaGFyQXQ6CiAgICAgICAgIGNhc2UgU3RyaW5nQ2hhckNvZGVBdDoKICAg
ICAgICAgY2FzZSBDaGVja0FycmF5OgorICAgICAgICBjYXNlIEFycmF5aWZ5OgogICAgICAgICBj
YXNlIEFycmF5UHVzaDoKICAgICAgICAgY2FzZSBBcnJheVBvcDoKICAgICAgICAgICAgIHJldHVy
biB0cnVlOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAkocmV2
aXNpb24gMTI4ODI2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xMzksNiArMTM5LDcgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVz
cGFjZSBERkcgewogICAgIG1hY3JvKFJlYWxsb2NhdGVQcm9wZXJ0eVN0b3JhZ2UsIE5vZGVNdXN0
R2VuZXJhdGUgfCBOb2RlRG9lc05vdEV4aXQgfCBOb2RlUmVzdWx0U3RvcmFnZSkgXAogICAgIG1h
Y3JvKEdldEJ1dHRlcmZseSwgTm9kZVJlc3VsdFN0b3JhZ2UpIFwKICAgICBtYWNybyhDaGVja0Fy
cmF5LCBOb2RlTXVzdEdlbmVyYXRlKSBcCisgICAgbWFjcm8oQXJyYXlpZnksIE5vZGVSZXN1bHRT
dG9yYWdlIHwgTm9kZU11c3RHZW5lcmF0ZSB8IE5vZGVDbG9iYmVyc1dvcmxkKSBcCiAgICAgbWFj
cm8oR2V0SW5kZXhlZFByb3BlcnR5U3RvcmFnZSwgTm9kZVJlc3VsdFN0b3JhZ2UpIFwKICAgICBt
YWNybyhHZXRCeU9mZnNldCwgTm9kZVJlc3VsdEpTKSBcCiAgICAgbWFjcm8oUHV0QnlPZmZzZXQs
IE5vZGVNdXN0R2VuZXJhdGUpIFwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
T3BlcmF0aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdPcGVyYXRpb25zLmNwcAkocmV2aXNpb24gMTI4ODI2KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE5Myw5ICsxMTkz
LDExIEBAIHZvaWQgREZHX09QRVJBVElPTiBvcGVyYXRpb25UZWFyT2ZmSW5saW4KIAogRW5jb2Rl
ZEpTVmFsdWUgREZHX09QRVJBVElPTiBvcGVyYXRpb25HZXRBcmd1bWVudHNMZW5ndGgoRXhlY1N0
YXRlKiBleGVjLCBpbnQzMl90IGFyZ3VtZW50c1JlZ2lzdGVyKQogeworICAgIEpTR2xvYmFsRGF0
YSYgZ2xvYmFsRGF0YSA9IGV4ZWMtPmdsb2JhbERhdGEoKTsKKyAgICBOYXRpdmVDYWxsRnJhbWVU
cmFjZXIgdHJhY2VyKCZnbG9iYWxEYXRhLCBleGVjKTsKICAgICAvLyBIZXJlIHdlIGNhbiBhc3N1
bWUgdGhhdCB0aGUgYXJndW1lcm50cyB3ZXJlIGNyZWF0ZWQuIEJlY2F1c2Ugb3RoZXJ3aXNlIHRo
ZSBKSVQgY29kZSB3b3VsZAogICAgIC8vIGhhdmUgbm90IG1hZGUgdGhpcyBjYWxsLgotICAgIElk
ZW50aWZpZXIgaWRlbnQoJmV4ZWMtPmdsb2JhbERhdGEoKSwgImxlbmd0aCIpOworICAgIElkZW50
aWZpZXIgaWRlbnQoJmdsb2JhbERhdGEsICJsZW5ndGgiKTsKICAgICBKU1ZhbHVlIGJhc2VWYWx1
ZSA9IGV4ZWMtPnVuY2hlY2tlZFIoYXJndW1lbnRzUmVnaXN0ZXIpLmpzVmFsdWUoKTsKICAgICBQ
cm9wZXJ0eVNsb3Qgc2xvdChiYXNlVmFsdWUpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
YmFzZVZhbHVlLmdldChleGVjLCBpZGVudCwgc2xvdCkpOwpAQCAtMTIwMyw2ICsxMjA1LDkgQEAg
RW5jb2RlZEpTVmFsdWUgREZHX09QRVJBVElPTiBvcGVyYXRpb25HZQogCiBFbmNvZGVkSlNWYWx1
ZSBERkdfT1BFUkFUSU9OIG9wZXJhdGlvbkdldEFyZ3VtZW50QnlWYWwoRXhlY1N0YXRlKiBleGVj
LCBpbnQzMl90IGFyZ3VtZW50c1JlZ2lzdGVyLCBpbnQzMl90IGluZGV4KQogeworICAgIEpTR2xv
YmFsRGF0YSYgZ2xvYmFsRGF0YSA9IGV4ZWMtPmdsb2JhbERhdGEoKTsKKyAgICBOYXRpdmVDYWxs
RnJhbWVUcmFjZXIgdHJhY2VyKCZnbG9iYWxEYXRhLCBleGVjKTsKKwogICAgIEpTVmFsdWUgYXJn
dW1lbnRzVmFsdWUgPSBleGVjLT51bmNoZWNrZWRSKGFyZ3VtZW50c1JlZ2lzdGVyKS5qc1ZhbHVl
KCk7CiAgICAgCiAgICAgLy8gSWYgdGhlcmUgYXJlIG5vIGFyZ3VtZW50cywgYW5kIHdlJ3JlIGFj
Y2Vzc2luZyBvdXQgb2YgYm91bmRzLCB0aGVuIHdlIGhhdmUgdG8gY3JlYXRlIHRoZQpAQCAtMTIx
Niw2ICsxMjIxLDkgQEAgRW5jb2RlZEpTVmFsdWUgREZHX09QRVJBVElPTiBvcGVyYXRpb25HZQog
RW5jb2RlZEpTVmFsdWUgREZHX09QRVJBVElPTiBvcGVyYXRpb25HZXRJbmxpbmVkQXJndW1lbnRC
eVZhbCgKICAgICBFeGVjU3RhdGUqIGV4ZWMsIGludDMyX3QgYXJndW1lbnRzUmVnaXN0ZXIsIElu
bGluZUNhbGxGcmFtZSogaW5saW5lQ2FsbEZyYW1lLCBpbnQzMl90IGluZGV4KQogeworICAgIEpT
R2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSA9IGV4ZWMtPmdsb2JhbERhdGEoKTsKKyAgICBOYXRpdmVD
YWxsRnJhbWVUcmFjZXIgdHJhY2VyKCZnbG9iYWxEYXRhLCBleGVjKTsKKwogICAgIEpTVmFsdWUg
YXJndW1lbnRzVmFsdWUgPSBleGVjLT51bmNoZWNrZWRSKGFyZ3VtZW50c1JlZ2lzdGVyKS5qc1Zh
bHVlKCk7CiAgICAgCiAgICAgLy8gSWYgdGhlcmUgYXJlIG5vIGFyZ3VtZW50cywgYW5kIHdlJ3Jl
IGFjY2Vzc2luZyBvdXQgb2YgYm91bmRzLCB0aGVuIHdlIGhhdmUgdG8gY3JlYXRlIHRoZQpAQCAt
MTIzOSw2ICsxMjQ3LDEwIEBAIEpTQ2VsbCogREZHX09QRVJBVElPTiBvcGVyYXRpb25OZXdGdW5j
dGkKIEpTQ2VsbCogREZHX09QRVJBVElPTiBvcGVyYXRpb25OZXdGdW5jdGlvbkV4cHJlc3Npb24o
RXhlY1N0YXRlKiBleGVjLCBKU0NlbGwqIGZ1bmN0aW9uRXhlY3V0YWJsZUFzQ2VsbCkKIHsKICAg
ICBBU1NFUlQoZnVuY3Rpb25FeGVjdXRhYmxlQXNDZWxsLT5pbmhlcml0cygmRnVuY3Rpb25FeGVj
dXRhYmxlOjpzX2luZm8pKTsKKworICAgIEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSA9IGV4ZWMt
Pmdsb2JhbERhdGEoKTsKKyAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKCZnbG9iYWxE
YXRhLCBleGVjKTsKKwogICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rpb25FeGVjdXRhYmxl
ID0KICAgICAgICAgc3RhdGljX2Nhc3Q8RnVuY3Rpb25FeGVjdXRhYmxlKj4oZnVuY3Rpb25FeGVj
dXRhYmxlQXNDZWxsKTsKICAgICByZXR1cm4gSlNGdW5jdGlvbjo6Y3JlYXRlKGV4ZWMsIGZ1bmN0
aW9uRXhlY3V0YWJsZSwgZXhlYy0+c2NvcGUoKSk7CkBAIC0xMjU3LDYgKzEyNjksOCBAQCBzaXpl
X3QgREZHX09QRVJBVElPTiBvcGVyYXRpb25Jc0Z1bmN0aW9uCiB2b2lkIERGR19PUEVSQVRJT04g
b3BlcmF0aW9uUmVhbGxvY2F0ZVN0b3JhZ2VBbmRGaW5pc2hQdXQoRXhlY1N0YXRlKiBleGVjLCBK
U09iamVjdCogYmFzZSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFByb3BlcnR5T2Zmc2V0IG9mZnNl
dCwgRW5jb2RlZEpTVmFsdWUgdmFsdWUpCiB7CiAgICAgSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRh
ID0gZXhlYy0+Z2xvYmFsRGF0YSgpOworICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIo
Jmdsb2JhbERhdGEsIGV4ZWMpOworCiAgICAgQVNTRVJUKHN0cnVjdHVyZS0+b3V0T2ZMaW5lQ2Fw
YWNpdHkoKSA+IGJhc2UtPnN0cnVjdHVyZSgpLT5vdXRPZkxpbmVDYXBhY2l0eSgpKTsKICAgICBB
U1NFUlQoIWdsb2JhbERhdGEuaGVhcC5zdG9yYWdlQWxsb2NhdG9yKCkuZmFzdFBhdGhTaG91bGRT
dWNjZWVkKHN0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSAqIHNpemVvZihKU1ZhbHVlKSkp
OwogICAgIGJhc2UtPnNldFN0cnVjdHVyZUFuZFJlYWxsb2NhdGVTdG9yYWdlSWZOZWNlc3Nhcnko
Z2xvYmFsRGF0YSwgc3RydWN0dXJlKTsKQEAgLTEyNjUsMzEgKzEyNzksNTEgQEAgdm9pZCBERkdf
T1BFUkFUSU9OIG9wZXJhdGlvblJlYWxsb2NhdGVTdAogCiBjaGFyKiBERkdfT1BFUkFUSU9OIG9w
ZXJhdGlvbkFsbG9jYXRlUHJvcGVydHlTdG9yYWdlV2l0aEluaXRpYWxDYXBhY2l0eShFeGVjU3Rh
dGUqIGV4ZWMpCiB7CisgICAgSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhID0gZXhlYy0+Z2xvYmFs
RGF0YSgpOworICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIoJmdsb2JhbERhdGEsIGV4
ZWMpOworCiAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KAotICAgICAgICBCdXR0
ZXJmbHk6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQoZXhlYy0+Z2xvYmFsRGF0YSgpLCAwLCBpbml0aWFs
T3V0T2ZMaW5lQ2FwYWNpdHksIGZhbHNlLCAwKSk7CisgICAgICAgIEJ1dHRlcmZseTo6Y3JlYXRl
VW5pbml0aWFsaXplZChnbG9iYWxEYXRhLCAwLCBpbml0aWFsT3V0T2ZMaW5lQ2FwYWNpdHksIGZh
bHNlLCAwKSk7CiB9CiAKIGNoYXIqIERGR19PUEVSQVRJT04gb3BlcmF0aW9uQWxsb2NhdGVQcm9w
ZXJ0eVN0b3JhZ2UoRXhlY1N0YXRlKiBleGVjLCBzaXplX3QgbmV3U2l6ZSkKIHsKKyAgICBKU0ds
b2JhbERhdGEmIGdsb2JhbERhdGEgPSBleGVjLT5nbG9iYWxEYXRhKCk7CisgICAgTmF0aXZlQ2Fs
bEZyYW1lVHJhY2VyIHRyYWNlcigmZ2xvYmFsRGF0YSwgZXhlYyk7CisKICAgICByZXR1cm4gcmVp
bnRlcnByZXRfY2FzdDxjaGFyKj4oCi0gICAgICAgIEJ1dHRlcmZseTo6Y3JlYXRlVW5pbml0aWFs
aXplZChleGVjLT5nbG9iYWxEYXRhKCksIDAsIG5ld1NpemUsIGZhbHNlLCAwKSk7CisgICAgICAg
IEJ1dHRlcmZseTo6Y3JlYXRlVW5pbml0aWFsaXplZChnbG9iYWxEYXRhLCAwLCBuZXdTaXplLCBm
YWxzZSwgMCkpOwogfQogCiBjaGFyKiBERkdfT1BFUkFUSU9OIG9wZXJhdGlvblJlYWxsb2NhdGVC
dXR0ZXJmbHlUb0hhdmVQcm9wZXJ0eVN0b3JhZ2VXaXRoSW5pdGlhbENhcGFjaXR5KEV4ZWNTdGF0
ZSogZXhlYywgSlNPYmplY3QqIG9iamVjdCkKIHsKKyAgICBKU0dsb2JhbERhdGEmIGdsb2JhbERh
dGEgPSBleGVjLT5nbG9iYWxEYXRhKCk7CisgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNl
cigmZ2xvYmFsRGF0YSwgZXhlYyk7CisKICAgICBBU1NFUlQoIW9iamVjdC0+c3RydWN0dXJlKCkt
Pm91dE9mTGluZUNhcGFjaXR5KCkpOwotICAgIEJ1dHRlcmZseSogcmVzdWx0ID0gb2JqZWN0LT5n
cm93T3V0T2ZMaW5lU3RvcmFnZShleGVjLT5nbG9iYWxEYXRhKCksIDAsIGluaXRpYWxPdXRPZkxp
bmVDYXBhY2l0eSk7CisgICAgQnV0dGVyZmx5KiByZXN1bHQgPSBvYmplY3QtPmdyb3dPdXRPZkxp
bmVTdG9yYWdlKGdsb2JhbERhdGEsIDAsIGluaXRpYWxPdXRPZkxpbmVDYXBhY2l0eSk7CiAgICAg
b2JqZWN0LT5zZXRCdXR0ZXJmbHlXaXRob3V0Q2hhbmdpbmdTdHJ1Y3R1cmUocmVzdWx0KTsKICAg
ICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4ocmVzdWx0KTsKIH0KIAogY2hhciogREZH
X09QRVJBVElPTiBvcGVyYXRpb25SZWFsbG9jYXRlQnV0dGVyZmx5VG9Hcm93UHJvcGVydHlTdG9y
YWdlKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIG9iamVjdCwgc2l6ZV90IG5ld1NpemUpCiB7
Ci0gICAgQnV0dGVyZmx5KiByZXN1bHQgPSBvYmplY3QtPmdyb3dPdXRPZkxpbmVTdG9yYWdlKGV4
ZWMtPmdsb2JhbERhdGEoKSwgb2JqZWN0LT5zdHJ1Y3R1cmUoKS0+b3V0T2ZMaW5lQ2FwYWNpdHko
KSwgbmV3U2l6ZSk7CisgICAgSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhID0gZXhlYy0+Z2xvYmFs
RGF0YSgpOworICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIoJmdsb2JhbERhdGEsIGV4
ZWMpOworCisgICAgQnV0dGVyZmx5KiByZXN1bHQgPSBvYmplY3QtPmdyb3dPdXRPZkxpbmVTdG9y
YWdlKGdsb2JhbERhdGEsIG9iamVjdC0+c3RydWN0dXJlKCktPm91dE9mTGluZUNhcGFjaXR5KCks
IG5ld1NpemUpOwogICAgIG9iamVjdC0+c2V0QnV0dGVyZmx5V2l0aG91dENoYW5naW5nU3RydWN0
dXJlKHJlc3VsdCk7CiAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KHJlc3VsdCk7
CiB9CiAKK2NoYXIqIERGR19PUEVSQVRJT04gb3BlcmF0aW9uRW5zdXJlQXJyYXlTdG9yYWdlKEV4
ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIG9iamVjdCkKK3sKKyAgICBKU0dsb2JhbERhdGEmIGds
b2JhbERhdGEgPSBleGVjLT5nbG9iYWxEYXRhKCk7CisgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2Vy
IHRyYWNlcigmZ2xvYmFsRGF0YSwgZXhlYyk7CisKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2Fz
dDxjaGFyKj4ob2JqZWN0LT5lbnN1cmVBcnJheVN0b3JhZ2UoZ2xvYmFsRGF0YSkpOworfQorCiBk
b3VibGUgREZHX09QRVJBVElPTiBvcGVyYXRpb25GTW9kT25JbnRzKGludDMyX3QgYSwgaW50MzJf
dCBiKQogewogICAgIHJldHVybiBmbW9kKGEsIGIpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdPcGVyYXRpb25zLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdPcGVyYXRpb25zLmgJKHJldmlzaW9uIDEyODgyNikKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xOTMsNiAr
MTkzLDcgQEAgY2hhciogREZHX09QRVJBVElPTiBvcGVyYXRpb25BbGxvY2F0ZVBybwogY2hhciog
REZHX09QRVJBVElPTiBvcGVyYXRpb25BbGxvY2F0ZVByb3BlcnR5U3RvcmFnZShFeGVjU3RhdGUq
LCBzaXplX3QgbmV3U2l6ZSkgV1RGX0lOVEVSTkFMOwogY2hhciogREZHX09QRVJBVElPTiBvcGVy
YXRpb25SZWFsbG9jYXRlQnV0dGVyZmx5VG9IYXZlUHJvcGVydHlTdG9yYWdlV2l0aEluaXRpYWxD
YXBhY2l0eShFeGVjU3RhdGUqLCBKU09iamVjdCopIFdURl9JTlRFUk5BTDsKIGNoYXIqIERGR19P
UEVSQVRJT04gb3BlcmF0aW9uUmVhbGxvY2F0ZUJ1dHRlcmZseVRvR3Jvd1Byb3BlcnR5U3RvcmFn
ZShFeGVjU3RhdGUqLCBKU09iamVjdCosIHNpemVfdCBuZXdTaXplKSBXVEZfSU5URVJOQUw7Citj
aGFyKiBERkdfT1BFUkFUSU9OIG9wZXJhdGlvbkVuc3VyZUFycmF5U3RvcmFnZShFeGVjU3RhdGUq
LCBKU09iamVjdCopOwogCiAvLyBUaGlzIG1ldGhvZCBpcyB1c2VkIHRvIGxvb2t1cCBhbiBleGNl
cHRpb24gaGFuZGVyLCBrZXllZCBieSBmYXVsdExvY2F0aW9uLCB3aGljaCBpcwogLy8gdGhlIHJl
dHVybiBsb2NhdGlvbiBmcm9tIG9uZSBvZiB0aGUgY2FsbHMgb3V0IHRvIG9uZSBvZiB0aGUgaGVs
cGVyIG9wZXJhdGlvbnMgYWJvdmUuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAkocmV2aXNp
b24gMTI4ODI2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJv
cGFnYXRpb25QaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYxOSw3ICs2MTksOCBAQCBwcml2
YXRlOgogICAgICAgICBjYXNlIEdldE15QXJndW1lbnRCeVZhbDoKICAgICAgICAgY2FzZSBQaGFu
dG9tUHV0U3RydWN0dXJlOgogICAgICAgICBjYXNlIFBoYW50b21Bcmd1bWVudHM6Ci0gICAgICAg
IGNhc2UgQ2hlY2tBcnJheTogeworICAgICAgICBjYXNlIENoZWNrQXJyYXk6CisgICAgICAgIGNh
c2UgQXJyYXlpZnk6IHsKICAgICAgICAgICAgIC8vIFRoaXMgbm9kZSBzaG91bGQgbmV2ZXIgYmUg
dmlzaWJsZSBhdCB0aGlzIHN0YWdlIG9mIGNvbXBpbGF0aW9uLiBJdCBpcwogICAgICAgICAgICAg
Ly8gaW5zZXJ0ZWQgYnkgZml4dXAoKSwgd2hpY2ggZm9sbG93cyB0aGlzIHBoYXNlLgogICAgICAg
ICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAJKHJldmlzaW9uIDEyODgy
NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTI1MzEsNiArMjUzMSwxMSBAQCB2b2lkIFNwZWN1bGF0aXZl
SklUOjpjb21waWxlKE5vZGUmIG5vZGUpCiAgICAgICAgIGNoZWNrQXJyYXkobm9kZSk7CiAgICAg
ICAgIGJyZWFrOwogICAgIH0KKyAgICAgICAgCisgICAgY2FzZSBBcnJheWlmeTogeworICAgICAg
ICBhcnJheWlmeShub2RlKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQogCiAgICAgY2FzZSBHZXRC
eVZhbDogewogICAgICAgICBzd2l0Y2ggKG5vZGUuYXJyYXlNb2RlKCkpIHsKQEAgLTI1NzUsNyAr
MjU4MCw4IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSYgbm9kZSkKICAgICAg
ICAgICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0VGFnLmdwcigpLCByZXN1bHRQYXlsb2FkLmdwcigp
LCBtX2NvbXBpbGVJbmRleCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQotICAgICAg
ICBjYXNlIE9VVF9PRl9CT1VORFNfQVJSQVlfU1RPUkFHRV9NT0RFUzogeworICAgICAgICBjYXNl
IE9VVF9PRl9CT1VORFNfQVJSQVlfU1RPUkFHRV9NT0RFUzoKKyAgICAgICAgY2FzZSBBTExfRUZG
RUNURlVMX0FSUkFZX1NUT1JBR0VfTU9ERVM6IHsKICAgICAgICAgICAgIFNwZWN1bGF0ZUNlbGxP
cGVyYW5kIGJhc2UodGhpcywgbm9kZS5jaGlsZDEoKSk7CiAgICAgICAgICAgICBTcGVjdWxhdGVT
dHJpY3RJbnQzMk9wZXJhbmQgcHJvcGVydHkodGhpcywgbm9kZS5jaGlsZDIoKSk7CiAgICAgICAg
ICAgICBTdG9yYWdlT3BlcmFuZCBzdG9yYWdlKHRoaXMsIG5vZGUuY2hpbGQzKCkpOwpAQCAtMjcw
Miw3ICsyNzA4LDggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlJiBub2RlKQog
ICAgICAgICBHUFJSZWcgcHJvcGVydHlSZWcgPSBwcm9wZXJ0eS5ncHIoKTsKIAogICAgICAgICBz
d2l0Y2ggKGFycmF5TW9kZSkgewotICAgICAgICBjYXNlIEFMTF9BUlJBWV9TVE9SQUdFX01PREVT
OiB7CisgICAgICAgIGNhc2UgQUxMX0FSUkFZX1NUT1JBR0VfTU9ERVM6CisgICAgICAgIGNhc2Ug
QUxMX0VGRkVDVEZVTF9BUlJBWV9TVE9SQUdFX01PREVTOiB7CiAgICAgICAgICAgICBKU1ZhbHVl
T3BlcmFuZCB2YWx1ZSh0aGlzLCBjaGlsZDMpOwogCiAgICAgICAgICAgICBHUFJSZWcgdmFsdWVU
YWdSZWcgPSB2YWx1ZS50YWdHUFIoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAkocmV2aXNpb24gMTI4ODI2KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMjU2Myw2ICsyNTYzLDExIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUo
Tm9kZSYgbm9kZSkKICAgICAgICAgY2hlY2tBcnJheShub2RlKTsKICAgICAgICAgYnJlYWs7CiAg
ICAgfQorICAgICAgICAKKyAgICBjYXNlIEFycmF5aWZ5OiB7CisgICAgICAgIGFycmF5aWZ5KG5v
ZGUpOworICAgICAgICBicmVhazsKKyAgICB9CiAKICAgICBjYXNlIEdldEJ5VmFsOiB7CiAgICAg
ICAgIHN3aXRjaCAobm9kZS5hcnJheU1vZGUoKSkgewpAQCAtMjYwMyw3ICsyNjA4LDggQEAgdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlJiBub2RlKQogICAgICAgICAgICAganNWYWx1
ZVJlc3VsdChyZXN1bHQuZ3ByKCksIG1fY29tcGlsZUluZGV4KTsKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICB9Ci0gICAgICAgIGNhc2UgT1VUX09GX0JPVU5EU19BUlJBWV9TVE9SQUdFX01P
REVTOiB7CisgICAgICAgIGNhc2UgT1VUX09GX0JPVU5EU19BUlJBWV9TVE9SQUdFX01PREVTOgor
ICAgICAgICBjYXNlIEFMTF9FRkZFQ1RGVUxfQVJSQVlfU1RPUkFHRV9NT0RFUzogewogICAgICAg
ICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBub2RlLmNoaWxkMSgpKTsKICAg
ICAgICAgICAgIFNwZWN1bGF0ZVN0cmljdEludDMyT3BlcmFuZCBwcm9wZXJ0eSh0aGlzLCBub2Rl
LmNoaWxkMigpKTsKICAgICAgICAgICAgIFN0b3JhZ2VPcGVyYW5kIHN0b3JhZ2UodGhpcywgbm9k
ZS5jaGlsZDMoKSk7CkBAIC0yNzIzLDcgKzI3MjksOCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpj
b21waWxlKE5vZGUmIG5vZGUpCiAgICAgICAgIEdQUlJlZyBwcm9wZXJ0eVJlZyA9IHByb3BlcnR5
LmdwcigpOwogCiAgICAgICAgIHN3aXRjaCAoYXJyYXlNb2RlKSB7Ci0gICAgICAgIGNhc2UgQUxM
X0FSUkFZX1NUT1JBR0VfTU9ERVM6IHsKKyAgICAgICAgY2FzZSBBTExfQVJSQVlfU1RPUkFHRV9N
T0RFUzoKKyAgICAgICAgY2FzZSBBTExfRUZGRUNURlVMX0FSUkFZX1NUT1JBR0VfTU9ERVM6IHsK
ICAgICAgICAgICAgIEpTVmFsdWVPcGVyYW5kIHZhbHVlKHRoaXMsIGNoaWxkMyk7CiAKICAgICAg
ICAgICAgIEdQUlJlZyB2YWx1ZVJlZyA9IHZhbHVlLmdwcigpOwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAJKHJldmlzaW9uIDEyODgy
NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zMjUsNyArMzI1LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y2hl
Y2tBcnJheShOb2RlJiBubwogICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpaZXJvLAog
ICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHRlbXAuZ3ByKCksIFN0cnVj
dHVyZTo6aW5kZXhpbmdUeXBlT2Zmc2V0KCkpLAogICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1i
bGVyOjpUcnVzdGVkSW1tMzIoCi0gICAgICAgICAgICAgICAgICAgIGlzU2xvd1B1dEFjY2Vzcyhu
b2RlLmFycmF5TW9kZSgpKSA/IEhhc1Nsb3dQdXRBcnJheVN0b3JhZ2UgOiBIYXNBcnJheVN0b3Jh
Z2UpKSk7CisgICAgICAgICAgICAgICAgICAgIGlzU2xvd1B1dEFjY2Vzcyhub2RlLmFycmF5TW9k
ZSgpKSA/IChIYXNBcnJheVN0b3JhZ2UgfCBIYXNTbG93UHV0QXJyYXlTdG9yYWdlKSA6IEhhc0Fy
cmF5U3RvcmFnZSkpKTsKICAgICAgICAgCiAgICAgICAgIG5vUmVzdWx0KG1fY29tcGlsZUluZGV4
KTsKICAgICAgICAgcmV0dXJuOwpAQCAtMzQ3LDcgKzM0Nyw3IEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNoZWNrQXJyYXkoTm9kZSYgbm8KICAgICAgICAgICAgIFVuY291bnRhYmxlLCBKU1ZhbHVl
UmVncygpLCBOb05vZGUsCiAgICAgICAgICAgICBtX2ppdC5icmFuY2hUZXN0MzIoCiAgICAgICAg
ICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Olplcm8sIHRlbXBHUFIsIE1hY3JvQXNzZW1ibGVyOjpU
cnVzdGVkSW1tMzIoCi0gICAgICAgICAgICAgICAgICAgIGlzU2xvd1B1dEFjY2Vzcyhub2RlLmFy
cmF5TW9kZSgpKSA/IEhhc1Nsb3dQdXRBcnJheVN0b3JhZ2UgOiBIYXNBcnJheVN0b3JhZ2UpKSk7
CisgICAgICAgICAgICAgICAgICAgIGlzU2xvd1B1dEFjY2Vzcyhub2RlLmFycmF5TW9kZSgpKSA/
IChIYXNBcnJheVN0b3JhZ2UgfCBIYXNTbG93UHV0QXJyYXlTdG9yYWdlKSA6IEhhc0FycmF5U3Rv
cmFnZSkpKTsKICAgICAgICAgCiAgICAgICAgIG5vUmVzdWx0KG1fY29tcGlsZUluZGV4KTsKICAg
ICAgICAgcmV0dXJuOwpAQCAtMzg0LDYgKzM4NCw4MCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpj
aGVja0FycmF5KE5vZGUmIG5vCiAgICAgbm9SZXN1bHQobV9jb21waWxlSW5kZXgpOwogfQogCit2
b2lkIFNwZWN1bGF0aXZlSklUOjphcnJheWlmeShOb2RlJiBub2RlKQoreworICAgIEFTU0VSVCht
b2RlSXNTcGVjaWZpYyhub2RlLmFycmF5TW9kZSgpKSk7CisgICAgQVNTRVJUKCFtb2RlQWxyZWFk
eUNoZWNrZWQobV9zdGF0ZS5mb3JOb2RlKG5vZGUuY2hpbGQxKCkpLCBub2RlLmFycmF5TW9kZSgp
KSk7CisgICAgCisgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBub2RlLmNoaWxk
MSgpKTsKKyAgICBHUFJSZWcgYmFzZVJlZyA9IGJhc2UuZ3ByKCk7CisgICAgCisgICAgc3dpdGNo
IChub2RlLmFycmF5TW9kZSgpKSB7CisgICAgY2FzZSBFRkZFQ1RGVUxfTk9OX0FSUkFZX0FSUkFZ
X1NUT1JBR0VfTU9ERVM6IHsKKyAgICAgICAgR1BSVGVtcG9yYXJ5IHN0cnVjdHVyZSh0aGlzKTsK
KyAgICAgICAgR1BSVGVtcG9yYXJ5IHRlbXAodGhpcyk7CisgICAgICAgIEdQUlJlZyBzdHJ1Y3R1
cmVHUFIgPSBzdHJ1Y3R1cmUuZ3ByKCk7CisgICAgICAgIEdQUlJlZyB0ZW1wR1BSID0gdGVtcC5n
cHIoKTsKKyAgICAgICAgCisgICAgICAgIG1faml0LmxvYWRQdHIoCisgICAgICAgICAgICBNYWNy
b0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlUmVnLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwg
c3RydWN0dXJlR1BSKTsKKyAgICAgICAgCisgICAgICAgIC8vIFdlIGNhbiBza2lwIGFsbCB0aGF0
IGNvbWVzIG5leHQgaWYgd2UgYWxyZWFkeSBoYXZlIGFycmF5IHN0b3JhZ2UuCisgICAgICAgIElu
ZGV4aW5nVHlwZSBkZXNpcmVkSW5kZXhpbmdUeXBlTWFzayA9CisgICAgICAgICAgICBpc1Nsb3dQ
dXRBY2Nlc3Mobm9kZS5hcnJheU1vZGUoKSkgPyAoSGFzQXJyYXlTdG9yYWdlIHwgSGFzU2xvd1B1
dEFycmF5U3RvcmFnZSkgOiBIYXNBcnJheVN0b3JhZ2U7CisgICAgICAgIE1hY3JvQXNzZW1ibGVy
OjpKdW1wIHNsb3dDYXNlID0gbV9qaXQuYnJhbmNoVGVzdDgoCisgICAgICAgICAgICBNYWNyb0Fz
c2VtYmxlcjo6WmVybywKKyAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHN0cnVj
dHVyZUdQUiwgU3RydWN0dXJlOjppbmRleGluZ1R5cGVPZmZzZXQoKSksCisgICAgICAgICAgICBN
YWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKGRlc2lyZWRJbmRleGluZ1R5cGVNYXNrKSk7Cisg
ICAgICAgIAorICAgICAgICBtX2ppdC5sb2FkUHRyKAorICAgICAgICAgICAgTWFjcm9Bc3NlbWJs
ZXI6OkFkZHJlc3MoYmFzZVJlZywgSlNPYmplY3Q6OmJ1dHRlcmZseU9mZnNldCgpKSwgdGVtcEdQ
Uik7CisgICAgICAgIAorICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBkb25lID0gbV9qaXQu
anVtcCgpOworICAgICAgICAKKyAgICAgICAgc2xvd0Nhc2UubGluaygmbV9qaXQpOworICAgICAg
ICAKKyAgICAgICAgLy8gTmV4dCBjaGVjayB0aGF0IHRoZSBvYmplY3QgZG9lcyBub3QgaW50ZXJj
ZXB0IGluZGV4ZWQgYWNjZXNzZXMuIElmIGl0IGRvZXMsCisgICAgICAgIC8vIHRoZW4gdGhpcyBt
b2RlIHdvbid0IHdvcmsuCisgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soCisgICAgICAgICAgICBV
bmNvdW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgTm9Ob2RlLAorICAgICAgICAgICAgbV9qaXQuYnJh
bmNoVGVzdDgoCisgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Ok5vblplcm8sCisgICAg
ICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc3RydWN0dXJlR1BSLCBTdHJ1Y3R1
cmU6OnR5cGVJbmZvRmxhZ3NPZmZzZXQoKSksCisgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJs
ZXI6OlRydXN0ZWRJbW0zMihJbnRlcmNlcHRzR2V0T3duUHJvcGVydHlTbG90QnlJbmRleEV2ZW5X
aGVuTGVuZ3RoSXNOb3RaZXJvKSkpOworICAgICAgICAKKyAgICAgICAgLy8gTm93IGNhbGwgb3V0
IHRvIGNyZWF0ZSB0aGUgYXJyYXkgc3RvcmFnZS4KKyAgICAgICAgc2lsZW50U3BpbGxBbGxSZWdp
c3RlcnModGVtcEdQUik7CisgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uRW5zdXJlQXJy
YXlTdG9yYWdlLCB0ZW1wR1BSLCBiYXNlUmVnKTsKKyAgICAgICAgc2lsZW50RmlsbEFsbFJlZ2lz
dGVycyh0ZW1wR1BSKTsKKworICAgICAgICAvLyBBbGFzLCB3ZSBuZWVkIHRvIHJlbG9hZCB0aGUg
c3RydWN0dXJlIGJlY2F1c2Ugc2lsZW50IHNwaWxsaW5nIGRvZXMgbm90IHNhdmUKKyAgICAgICAg
Ly8gdGVtcG9yYXJpZXMuIE5vciB3b3VsZCBpdCBiZSB1c2VmdWwgZm9yIGl0IHRvIGRvIHNvLiBF
aXRoZXIgd2F5IHdlJ3JlIHRhbGtpbmcKKyAgICAgICAgLy8gYWJvdXQgYSBsb2FkLgorICAgICAg
ICBtX2ppdC5sb2FkUHRyKAorICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFz
ZVJlZywgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHN0cnVjdHVyZUdQUik7CisgICAgICAg
IAorICAgICAgICAvLyBGaW5hbGx5LCBjaGVjayB0aGF0IHdlIGhhdmUgdGhlIGtpbmQgb2YgYXJy
YXkgc3RvcmFnZSB0aGF0IHdlIHdhbnRlZCB0byBnZXQuCisgICAgICAgIC8vIE5vdGUgdGhhdCB0
aGlzIGlzIGEgYmFja3dhcmRzIHNwZWN1bGF0aW9uIGNoZWNrLCB3aGljaCB3aWxsIHJlc3VsdCBp
biB0aGUgCisgICAgICAgIC8vIGJ5dGVjb2RlIG9wZXJhdGlvbiBjb3JyZXNwb25kaW5nIHRvIHRo
aXMgYXJyYXlpZmljYXRpb24gYmVpbmcgcmVleGVjdXRlZC4KKyAgICAgICAgLy8gVGhhdCdzIGZp
bmUsIHNpbmNlIGFycmF5aWZpY2F0aW9uIGlzIG5vdCB1c2VyLXZpc2libGUuCisgICAgICAgIHNw
ZWN1bGF0aW9uQ2hlY2soCisgICAgICAgICAgICBVbmNvdW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwg
Tm9Ob2RlLAorICAgICAgICAgICAgbV9qaXQuYnJhbmNoVGVzdDgoCisgICAgICAgICAgICAgICAg
TWFjcm9Bc3NlbWJsZXI6Olplcm8sCisgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFk
ZHJlc3Moc3RydWN0dXJlR1BSLCBTdHJ1Y3R1cmU6OmluZGV4aW5nVHlwZU9mZnNldCgpKSwKKyAg
ICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKGRlc2lyZWRJbmRleGlu
Z1R5cGVNYXNrKSkpOworICAgICAgICAKKyAgICAgICAgZG9uZS5saW5rKCZtX2ppdCk7CisgICAg
ICAgIHN0b3JhZ2VSZXN1bHQodGVtcEdQUiwgbV9jb21waWxlSW5kZXgpOworICAgICAgICBicmVh
azsKKyAgICB9CisgICAgZGVmYXVsdDoKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cisg
ICAgICAgIGJyZWFrOworICAgIH0KK30KKwogR1BSUmVnIFNwZWN1bGF0aXZlSklUOjpmaWxsU3Rv
cmFnZShOb2RlSW5kZXggbm9kZUluZGV4KQogewogICAgIE5vZGUmIG5vZGUgPSBtX2ppdC5ncmFw
aCgpW25vZGVJbmRleF07CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1
bGF0aXZlSklULmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
cGVjdWxhdGl2ZUpJVC5oCShyZXZpc2lvbiAxMjg4MjYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgJKHdvcmtpbmcgY29weSkKQEAgLTIyNjcsNiArMjI2
Nyw3IEBAIHB1YmxpYzoKICAgICBjb25zdCBUeXBlZEFycmF5RGVzY3JpcHRvciogdHlwZWRBcnJh
eURlc2NyaXB0b3IoQXJyYXk6Ok1vZGUpOwogICAgIAogICAgIHZvaWQgY2hlY2tBcnJheShOb2Rl
Jik7CisgICAgdm9pZCBhcnJheWlmeShOb2RlJik7CiAgICAgCiAgICAgdGVtcGxhdGU8Ym9vbCBz
dHJpY3Q+CiAgICAgR1BSUmVnIGZpbGxTcGVjdWxhdGVJbnRJbnRlcm5hbChOb2RlSW5kZXgsIERh
dGFGb3JtYXQmIHJldHVybkZvcm1hdCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Bcmd1bWVudHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Bcmd1bWVudHMuaAkocmV2aXNpb24gMTI4ODI2KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQXJndW1lbnRzLmgJKHdvcmtpbmcgY29weSkKQEAgLTEyMCw3ICsxMjAsNyBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZkRhdGEo
KSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoQXJndW1lbnRzLCBkKTsgfQogCiAgICAgcHJvdGVj
dGVkOgotICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBPdmVy
cmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBPdmVycmlkZXNWaXNpdENoaWxkcmVuIHwgT3ZlcnJp
ZGVzR2V0UHJvcGVydHlOYW1lcyB8IEpTT2JqZWN0OjpTdHJ1Y3R1cmVGbGFnczsKKyAgICAgICAg
c3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gT3ZlcnJpZGVzR2V0T3duUHJv
cGVydHlTbG90IHwgSW50ZXJjZXB0c0dldE93blByb3BlcnR5U2xvdEJ5SW5kZXhFdmVuV2hlbkxl
bmd0aElzTm90WmVybyB8IE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4gfCBPdmVycmlkZXNHZXRQcm9w
ZXJ0eU5hbWVzIHwgSlNPYmplY3Q6OlN0cnVjdHVyZUZsYWdzOwogCiAgICAgICAgIHZvaWQgZmlu
aXNoQ3JlYXRpb24oQ2FsbEZyYW1lKik7CiAgICAgICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oQ2Fs
bEZyYW1lKiwgSW5saW5lQ2FsbEZyYW1lKik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU05vdEFuT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNOb3RBbk9iamVjdC5oCShyZXZpc2lvbiAxMjg4MjYpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU05vdEFuT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAg
LTYyLDcgKzYyLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgcHJpdmF0ZToKICAgICAgICAg
Ci0gICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IE92ZXJyaWRl
c0dldE93blByb3BlcnR5U2xvdCB8IE92ZXJyaWRlc0dldFByb3BlcnR5TmFtZXMgfCBKU09iamVj
dDo6U3RydWN0dXJlRmxhZ3M7CisgICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1
cmVGbGFncyA9IE92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8IEludGVyY2VwdHNHZXRPd25Q
cm9wZXJ0eVNsb3RCeUluZGV4RXZlbldoZW5MZW5ndGhJc05vdFplcm8gfCBPdmVycmlkZXNHZXRQ
cm9wZXJ0eU5hbWVzIHwgSlNPYmplY3Q6OlN0cnVjdHVyZUZsYWdzOwogCiAgICAgICAgIC8vIEpT
VmFsdWUgbWV0aG9kcwogICAgICAgICBzdGF0aWMgSlNWYWx1ZSBkZWZhdWx0VmFsdWUoY29uc3Qg
SlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcmVmZXJyZWRQcmltaXRpdmVUeXBlKTsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAkocmV2aXNpb24gMTI4ODI2KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAkod29ya2luZyBjb3B5
KQpAQCAtNTA1LDYgKzUwNSwyNSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgLy8gZm9vLT5h
dHRlbXB0VG9JbnRlcmNlcHRQdXRCeUluZGV4T25Ib2xlKC4uLik7CiAgICAgICAgIGJvb2wgYXR0
ZW1wdFRvSW50ZXJjZXB0UHV0QnlJbmRleE9uSG9sZUZvclByb3RvdHlwZShFeGVjU3RhdGUqLCBK
U1ZhbHVlIHRoaXNWYWx1ZSwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBib29sIHNo
b3VsZFRocm93KTsKICAgICAgICAgCisgICAgICAgIC8vIEVuc3VyZSB0aGF0IHRoZSBvYmplY3Qg
aXMgaW4gYSBtb2RlIHdoZXJlIGl0IGhhcyBhcnJheSBzdG9yYWdlLiBVc2UKKyAgICAgICAgLy8g
dGhpcyBpZiB5b3UncmUgYWJvdXQgdG8gcGVyZm9ybSBhY3Rpb25zIHRoYXQgd291bGQgaGF2ZSBy
ZXF1aXJlZCB0aGUKKyAgICAgICAgLy8gb2JqZWN0IHRvIGJlIGNvbnZlcnRlZCB0byBoYXZlIGFy
cmF5IHN0b3JhZ2UsIGlmIGl0IGRpZG4ndCBoYXZlIGl0CisgICAgICAgIC8vIGFscmVhZHkuCisg
ICAgICAgIEFycmF5U3RvcmFnZSogZW5zdXJlQXJyYXlTdG9yYWdlKEpTR2xvYmFsRGF0YSYgZ2xv
YmFsRGF0YSkKKyAgICAgICAgeworICAgICAgICAgICAgc3dpdGNoIChzdHJ1Y3R1cmUoKS0+aW5k
ZXhpbmdUeXBlKCkpIHsKKyAgICAgICAgICAgIGNhc2UgQUxMX0FSUkFZX1NUT1JBR0VfSU5ERVhJ
TkdfVFlQRVM6CisgICAgICAgICAgICAgICAgcmV0dXJuIG1fYnV0dGVyZmx5LT5hcnJheVN0b3Jh
Z2UoKTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIGNhc2UgQUxMX0JMQU5LX0lOREVY
SU5HX1RZUEVTOgorICAgICAgICAgICAgICAgIHJldHVybiBjcmVhdGVJbml0aWFsQXJyYXlTdG9y
YWdlKGdsb2JhbERhdGEpOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgZGVmYXVsdDoK
KyAgICAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gMDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICAKICAgICAgICAgc3Rh
dGljIHNpemVfdCBvZmZzZXRPZklubGluZVN0b3JhZ2UoKTsKICAgICAgICAgCiAgICAgICAgIHN0
YXRpYyBwdHJkaWZmX3QgYnV0dGVyZmx5T2Zmc2V0KCkKQEAgLTU2NSwyNSArNTg0LDYgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIAotICAgICAgICAvLyBFbnN1
cmUgdGhhdCB0aGUgb2JqZWN0IGlzIGluIGEgbW9kZSB3aGVyZSBpdCBoYXMgYXJyYXkgc3RvcmFn
ZS4gVXNlCi0gICAgICAgIC8vIHRoaXMgaWYgeW91J3JlIGFib3V0IHRvIHBlcmZvcm0gYWN0aW9u
cyB0aGF0IHdvdWxkIGhhdmUgcmVxdWlyZWQgdGhlCi0gICAgICAgIC8vIG9iamVjdCB0byBiZSBj
b252ZXJ0ZWQgdG8gaGF2ZSBhcnJheSBzdG9yYWdlLCBpZiBpdCBkaWRuJ3QgaGF2ZSBpdAotICAg
ICAgICAvLyBhbHJlYWR5LgotICAgICAgICBBcnJheVN0b3JhZ2UqIGVuc3VyZUFycmF5U3RvcmFn
ZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHN3aXRj
aCAoc3RydWN0dXJlKCktPmluZGV4aW5nVHlwZSgpKSB7Ci0gICAgICAgICAgICBjYXNlIEFMTF9B
UlJBWV9TVE9SQUdFX0lOREVYSU5HX1RZUEVTOgotICAgICAgICAgICAgICAgIHJldHVybiBtX2J1
dHRlcmZseS0+YXJyYXlTdG9yYWdlKCk7Ci0gICAgICAgICAgICAgICAgCi0gICAgICAgICAgICBj
YXNlIEFMTF9CTEFOS19JTkRFWElOR19UWVBFUzoKLSAgICAgICAgICAgICAgICByZXR1cm4gY3Jl
YXRlSW5pdGlhbEFycmF5U3RvcmFnZShnbG9iYWxEYXRhKTsKLSAgICAgICAgICAgICAgICAKLSAg
ICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAg
ICAgICAgCiAgICAgICAgIEFycmF5U3RvcmFnZSogY3JlYXRlQXJyYXlTdG9yYWdlKEpTR2xvYmFs
RGF0YSYsIHVuc2lnbmVkIGxlbmd0aCwgdW5zaWduZWQgdmVjdG9yTGVuZ3RoKTsKICAgICAgICAg
QXJyYXlTdG9yYWdlKiBjcmVhdGVJbml0aWFsQXJyYXlTdG9yYWdlKEpTR2xvYmFsRGF0YSYpOwog
ICAgICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaAko
cmV2aXNpb24gMTI4ODI2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJp
bmcuaAkod29ya2luZyBjb3B5KQpAQCAtMTU1LDcgKzE1NSw3IEBAIG5hbWVzcGFjZSBKU0Mgewog
CiAgICAgICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0dsb2JhbERhdGEm
IGdsb2JhbERhdGEsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG8p
CiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZShnbG9iYWxE
YXRhLCBnbG9iYWxPYmplY3QsIHByb3RvLCBUeXBlSW5mbyhTdHJpbmdUeXBlLCBPdmVycmlkZXNH
ZXRPd25Qcm9wZXJ0eVNsb3QpLCAmc19pbmZvKTsKKyAgICAgICAgICAgIHJldHVybiBTdHJ1Y3R1
cmU6OmNyZWF0ZShnbG9iYWxEYXRhLCBnbG9iYWxPYmplY3QsIHByb3RvLCBUeXBlSW5mbyhTdHJp
bmdUeXBlLCBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBJbnRlcmNlcHRzR2V0T3duUHJv
cGVydHlTbG90QnlJbmRleEV2ZW5XaGVuTGVuZ3RoSXNOb3RaZXJvKSwgJnNfaW5mbyk7CiAgICAg
ICAgIH0KIAogICAgICAgICBzdGF0aWMgc2l6ZV90IG9mZnNldE9mTGVuZ3RoKCkgeyByZXR1cm4g
T0JKRUNUX09GRlNFVE9GKEpTU3RyaW5nLCBtX2xlbmd0aCk7IH0K
</data>
<flag name="review"
          id="176442"
          type_id="1"
          status="+"
          setter="oliver"
    />
          </attachment>
      

    </bug>

</bugzilla>