<?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>117967</bug_id>
          
          <creation_ts>2013-06-24 18:16:50 -0700</creation_ts>
          <short_desc>fourthTier: DFG should support switch_string</short_desc>
          <delta_ts>2013-06-25 21:17:44 -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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Filip Pizlo">fpizlo</assigned_to>
          <cc>barraclough</cc>
    
    <cc>ggaren</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mhahnenberg</cc>
    
    <cc>msaboff</cc>
    
    <cc>oliver</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>903174</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-06-24 18:16:50 -0700</bug_when>
    <thetext>Patch forthcoming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>903175</commentid>
    <comment_count>1</comment_count>
      <attachid>205353</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-06-24 18:17:29 -0700</bug_when>
    <thetext>Created attachment 205353
work in progress</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>903177</commentid>
    <comment_count>2</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-06-24 18:17:52 -0700</bug_when>
    <thetext>*** Bug 117861 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>903192</commentid>
    <comment_count>3</comment_count>
      <attachid>205356</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-06-24 19:29:00 -0700</bug_when>
    <thetext>Created attachment 205356
work in progress</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>903419</commentid>
    <comment_count>4</comment_count>
      <attachid>205421</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-06-25 13:40:25 -0700</bug_when>
    <thetext>Created attachment 205421
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>903428</commentid>
    <comment_count>5</comment_count>
      <attachid>205421</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-06-25 14:14:03 -0700</bug_when>
    <thetext>Comment on attachment 205421
the patch

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

&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:4969
&gt; +        // == commonChars. Hence we know that it now must be &gt;= minLength, i.e., that

Should say: &quot;Hence we know that it now must be &gt; minLength, ...&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>903460</commentid>
    <comment_count>6</comment_count>
      <attachid>205421</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2013-06-25 17:20:39 -0700</bug_when>
    <thetext>Comment on attachment 205421
the patch

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

&gt; Source/JavaScriptCore/dfg/DFGBinarySwitch.h:46
&gt; +// Use this like so:
&gt; +//
&gt; +// BinarySwitch switch(valueReg, casesVector, BinarySwitch::Int32);
&gt; +// while (switch.advance(jit)) {
&gt; +//     int value = switch.caseValue();
&gt; +//     unsigned index = switch.caseIndex(); // index into casesVector, above
&gt; +//     ... // generate code for this case
&gt; +// }
&gt; +// switch.fallThrough().link(&amp;jit);

I think this could use a description of what a BinarySwitch is going to be used for.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>903470</commentid>
    <comment_count>7</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-06-25 17:51:39 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; (From update of attachment 205421 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=205421&amp;action=review
&gt; 
&gt; &gt; Source/JavaScriptCore/dfg/DFGBinarySwitch.h:46
&gt; &gt; +// Use this like so:
&gt; &gt; +//
&gt; &gt; +// BinarySwitch switch(valueReg, casesVector, BinarySwitch::Int32);
&gt; &gt; +// while (switch.advance(jit)) {
&gt; &gt; +//     int value = switch.caseValue();
&gt; &gt; +//     unsigned index = switch.caseIndex(); // index into casesVector, above
&gt; &gt; +//     ... // generate code for this case
&gt; &gt; +// }
&gt; &gt; +// switch.fallThrough().link(&amp;jit);
&gt; 
&gt; I think this could use a description of what a BinarySwitch is going to be used for.

Will do!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>903514</commentid>
    <comment_count>8</comment_count>
      <attachid>205445</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-06-25 21:02:32 -0700</bug_when>
    <thetext>Created attachment 205445
patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>903521</commentid>
    <comment_count>9</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-06-25 21:17:44 -0700</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/151979</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>205353</attachid>
            <date>2013-06-24 18:17:29 -0700</date>
            <delta_ts>2013-06-24 19:29:00 -0700</delta_ts>
            <desc>work in progress</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>22960</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQmluYXJ5U3dpdGNoLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0JpbmFyeVN3aXRjaC5jcHAJ
KHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0JpbmFyeVN3aXRj
aC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwyMDAgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1
ZGUgIkRGR0JpbmFyeVN3aXRjaC5oIgorCisjaWYgRU5BQkxFKERGR19KSVQpCisKK25hbWVzcGFj
ZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKKworQmluYXJ5U3dpdGNoOjpCaW5hcnlTd2l0Y2goR1BS
UmVnIHZhbHVlLCBjb25zdCBWZWN0b3I8aW50NjRfdD4mIGNhc2VzLCBUeXBlIHR5cGUpCisgICAg
OiBtX3ZhbHVlKHZhbHVlKQorICAgICwgbV9pbmRleCgwKQorICAgICwgbV9jYXNlSW5kZXgoVUlO
VF9NQVgpCisgICAgLCBtX21lZGlhbkJpYXMoMCkKKyAgICAsIG1fdHlwZSh0eXBlKQoreworICAg
IGlmIChjYXNlcy5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKyAgICAKKyAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgY2FzZXMuc2l6ZSgpOyArK2kpCisgICAgICAgIG1fY2FzZXMuYXBw
ZW5kKENhc2UoY2FzZXNbaV0sIGkpKTsKKyAgICBzdGQ6OnNvcnQoY2FzZXMuYmVnaW4oKSwgY2Fz
ZXMuZW5kKCkpOworICAgIGJ1aWxkKDAsIGNhc2VzLnNpemUoKSk7Cit9CisKK2Jvb2wgQmluYXJ5
U3dpdGNoOjphZHZhbmNlKE1hY3JvQXNzZW1ibGVyJiBqaXQpCit7CisgICAgaWYgKG1fY2FzZXMu
aXNFbXB0eSgpKSB7CisgICAgICAgIG1fZmFsbFRocm91Z2guYXBwZW5kKGppdC5qdW1wKCkpOwor
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIAorICAgIGlmIChtX2luZGV4ID09IG1f
YnJhbmNoZXMuc2l6ZSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgCisgICAgZm9yICg7
OykgeworICAgICAgICBjb25zdCBCcmFuY2hDb2RlJiBjb2RlID0gbV9icmFuY2hlc1ttX2luZGV4
KytdOworICAgICAgICBzd2l0Y2ggKGNvZGUua2luZCkgeworICAgICAgICBjYXNlIE5vdEVxdWFs
VG9GYWxsVGhyb3VnaDoKKyAgICAgICAgICAgIHN3aXRjaCAobV90eXBlKSB7CisgICAgICAgICAg
ICBjYXNlIEludDMyOgorICAgICAgICAgICAgICAgIG1fZmFsbFRocm91Z2guYXBwZW5kKGppdC5i
cmFuY2gzMigKKyAgICAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBt
X3ZhbHVlLAorICAgICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6SW1tMzIobV9jYXNl
c1tjb2RlLmluZGV4XS52YWx1ZSkpKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgIGNhc2UgSW50UHRyOgorICAgICAgICAgICAgICAgIG1fZmFsbFRocm91Z2guYXBwZW5kKGpp
dC5icmFuY2hQdHIoCisgICAgICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVh
bCwgbV92YWx1ZSwKKyAgICAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkltbVB0ciht
X2Nhc2VzW2NvZGUuaW5kZXhdLnZhbHVlKSkpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgY2FzZSBJbnQ2NDoKKyAgICAgICAgICAgICAgICBtX2ZhbGxUaHJvdWdoLmFwcGVu
ZChqaXQuYnJhbmNoNjQoCisgICAgICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpOb3RF
cXVhbCwgbV92YWx1ZSwKKyAgICAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkltbTY0
KG1fY2FzZXNbY29kZS5pbmRleF0udmFsdWUpKSk7CisgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBOb3RFcXVhbFRv
UHVzaDoKKyAgICAgICAgICAgIHN3aXRjaCAobV90eXBlKSB7CisgICAgICAgICAgICBjYXNlIElu
dDMyOgorICAgICAgICAgICAgICAgIG1fYnJhbmNoZXMuYXBwZW5kKGppdC5icmFuY2gzMigKKyAg
ICAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBtX3ZhbHVlLAorICAg
ICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6SW1tMzIobV9jYXNlc1tjb2RlLmluZGV4
XS52YWx1ZSkpKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgSW50
UHRyOgorICAgICAgICAgICAgICAgIG1fYnJhbmNoZXMuYXBwZW5kKGppdC5icmFuY2hQdHIoCisg
ICAgICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgbV92YWx1ZSwKKyAg
ICAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkltbVB0cihtX2Nhc2VzW2NvZGUuaW5k
ZXhdLnZhbHVlKSkpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBJ
bnQ2NDoKKyAgICAgICAgICAgICAgICBtX2JyYW5jaGVzLmFwcGVuZChqaXQuYnJhbmNoNjQoCisg
ICAgICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgbV92YWx1ZSwKKyAg
ICAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkltbTY0KG1fY2FzZXNbY29kZS5pbmRl
eF0udmFsdWUpKSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBMZXNzVGhhblRvUHVzaDoKKyAgICAgICAgICAg
IHN3aXRjaCAobV90eXBlKSB7CisgICAgICAgICAgICBjYXNlIEludDMyOgorICAgICAgICAgICAg
ICAgIG1fYnJhbmNoZXMuYXBwZW5kKGppdC5icmFuY2gzMigKKyAgICAgICAgICAgICAgICAgICAg
TWFjcm9Bc3NlbWJsZXI6Okxlc3NUaGFuLCBtX3ZhbHVlLAorICAgICAgICAgICAgICAgICAgICBN
YWNyb0Fzc2VtYmxlcjo6SW1tMzIobV9jYXNlc1tjb2RlLmluZGV4XS52YWx1ZSkpKTsKKyAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgSW50UHRyOgorICAgICAgICAgICAg
ICAgIG1fYnJhbmNoZXMuYXBwZW5kKGppdC5icmFuY2hQdHIoCisgICAgICAgICAgICAgICAgICAg
IE1hY3JvQXNzZW1ibGVyOjpMZXNzVGhhbiwgbV92YWx1ZSwKKyAgICAgICAgICAgICAgICAgICAg
TWFjcm9Bc3NlbWJsZXI6OkltbVB0cihtX2Nhc2VzW2NvZGUuaW5kZXhdLnZhbHVlKSkpOworICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBJbnQ2NDoKKyAgICAgICAgICAg
ICAgICBtX2JyYW5jaGVzLmFwcGVuZChqaXQuYnJhbmNoNjQoCisgICAgICAgICAgICAgICAgICAg
IE1hY3JvQXNzZW1ibGVyOjpMZXNzVGhhbiwgbV92YWx1ZSwKKyAgICAgICAgICAgICAgICAgICAg
TWFjcm9Bc3NlbWJsZXI6OkltbTY0KG1fY2FzZXNbY29kZS5pbmRleF0udmFsdWUpKSk7CisgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgY2FzZSBQb3A6CisgICAgICAgICAgICBtX2JyYW5jaGVzLnRha2VMYXN0KCkubGluaygm
aml0KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEV4ZWN1dGVDYXNlOgorICAg
ICAgICAgICAgbV9jYXNlSW5kZXggPSBjb2RlLmluZGV4OworICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgICAgIH0KKyAgICB9Cit9CisKK3ZvaWQgQmluYXJ5U3dpdGNoOjpidWlsZCh1bnNp
Z25lZCBzdGFydCwgdW5zaWduZWQgZW5kKQoreworICAgIHVuc2lnbmVkIHNpemUgPSBlbmQgLSBz
dGFydDsKKyAgICAKKyAgICBzd2l0Y2ggKHNpemUpIHsKKyAgICBjYXNlIDA6CisgICAgICAgIFJF
TEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIGJyZWFrOworICAgICAgICAKKyAg
ICBjYXNlIDE6CisgICAgICAgIGlmIChzdGFydAorICAgICAgICAgICAgJiYgbV9jYXNlc1tzdGFy
dCAtIDFdLnZhbHVlID09IG1fY2FzZXNbc3RhcnRdLnZhbHVlIC0gMQorICAgICAgICAgICAgJiYg
c3RhcnQgKyAxIDwgbV9jYXNlcy5zaXplKCkKKyAgICAgICAgICAgICYmIG1fY2FzZXNbc3RhcnQg
KyAxXS52YWx1ZSA9PSBtX2Nhc2VzW3N0YXJ0XS52YWx1ZSArIDEpIHsKKyAgICAgICAgICAgIG1f
YnJhbmNoZXMuYXBwZW5kKEJyYW5jaENvZGUoRXhlY3V0ZUNhc2UsIHN0YXJ0KSk7CisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgbV9icmFuY2hlcy5hcHBl
bmQoQnJhbmNoQ29kZShOb3RFcXVhbFRvRmFsbFRocm91Z2gsIHN0YXJ0KSk7CisgICAgICAgIG1f
YnJhbmNoZXMuYXBwZW5kKEJyYW5jaENvZGUoRXhlY3V0ZUNhc2UsIHN0YXJ0KSk7CisgICAgICAg
IGJyZWFrOworICAgICAgICAKKyAgICBjYXNlIDI6CisgICAgICAgIGlmIChtX2Nhc2VzW3N0YXJ0
XS52YWx1ZSArIDEgPT0gbV9jYXNlc1tzdGFydCArIDFdLnZhbHVlCisgICAgICAgICAgICAmJiBz
dGFydAorICAgICAgICAgICAgJiYgbV9jYXNlc1tzdGFydCAtIDFdLnZhbHVlID09IG1fY2FzZXNb
c3RhcnRdLnZhbHVlIC0gMQorICAgICAgICAgICAgJiYgc3RhcnQgKyAyIDwgbV9jYXNlcy5zaXpl
KCkKKyAgICAgICAgICAgICYmIG1fY2FzZXNbc3RhcnQgKyAyXS52YWx1ZSA9PSBtX2Nhc2VzW3N0
YXJ0ICsgMV0udmFsdWUgKyAxKSB7CisgICAgICAgICAgICBtX2JyYW5jaGVzLmFwcGVuZChCcmFu
Y2hDb2RlKE5vdEVxdWFsVG9QdXNoLCBzdGFydCkpOworICAgICAgICAgICAgbV9icmFuY2hlcy5h
cHBlbmQoQnJhbmNoQ29kZShFeGVjdXRlQ2FzZSwgc3RhcnQpKTsKKyAgICAgICAgICAgIG1fYnJh
bmNoZXMuYXBwZW5kKEJyYW5jaENvZGUoUG9wKSk7CisgICAgICAgICAgICBtX2JyYW5jaGVzLmFw
cGVuZChCcmFuY2hDb2RlKEV4ZWN1dGVDYXNlLCBzdGFydCArIDEpKTsKKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBtX2JyYW5jaGVzLmFwcGVuZChCcmFu
Y2hDb2RlKE5vdEVxdWFsVG9QdXNoLCBzdGFydCkpOworICAgICAgICBtX2JyYW5jaGVzLmFwcGVu
ZChCcmFuY2hDb2RlKEV4ZWN1dGVDYXNlLCBzdGFydCkpOworICAgICAgICBtX2JyYW5jaGVzLmFw
cGVuZChCcmFuY2hDb2RlKFBvcCkpOworICAgICAgICBtX2JyYW5jaGVzLmFwcGVuZChCcmFuY2hD
b2RlKE5vdEVxdWFsVG9GYWxsVGhyb3VnaCwgc3RhcnQgKyAxKSk7CisgICAgICAgIG1fYnJhbmNo
ZXMuYXBwZW5kKEJyYW5jaENvZGUoRXhlY3V0ZUNhc2UsIHN0YXJ0ICsgMSkpOworICAgICAgICBi
cmVhazsKKyAgICAgICAgCisgICAgZGVmYXVsdDoKKyAgICAgICAgdW5zaWduZWQgbWVkaWFuSW5k
ZXggPSAoc3RhcnQgKyBlbmQpIC8gMjsKKyAgICAgICAgaWYgKCEoc2l6ZSAmIDEpKSB7CisgICAg
ICAgICAgICAvLyBCZWNhdXNlIGVuZCBpcyBleGNsdXNpdmUsIGluIHRoZSBldmVuIGNhc2UsIHRo
aXMgcm91bmRzIHVwIGJ5CisgICAgICAgICAgICAvLyBkZWZhdWx0LiBIZW5jZSBtZWRpYW4gYmlh
cyBzb21ldGltZXMgZmxpcHMgdG8gc3VidHJhY2luZyBvbmUKKyAgICAgICAgICAgIC8vIGluIG9y
ZGVyIHRvIGdldCByb3VuZC1kb3duIGJlaGF2aW9yLgorICAgICAgICAgICAgbWVkaWFuSW5kZXgg
LT0gbV9tZWRpYW5CaWFzOworICAgICAgICAgICAgbV9tZWRpYW5CaWFzIF49IDE7CisgICAgICAg
IH0KKyAgICAgICAgCisgICAgICAgIFJFTEVBU0VfQVNTRVJUKG1lZGlhbkluZGV4ID4gc3RhcnQp
OworICAgICAgICBSRUxFQVNFX0FTU0VSVChtZWRpYW5JbmRleCArIDEgPCBlbmQpOworICAgICAg
ICAKKyAgICAgICAgbV9icmFuY2hlcy5hcHBlbmQoQnJhbmNoQ29kZShMZXNzVGhhblRvUHVzaCwg
bWVkaWFuSW5kZXgpKTsKKyAgICAgICAgbV9icmFuY2hlcy5hcHBlbmQoQnJhbmNoQ29kZShOb3RF
cXVhbFRvUHVzaCwgbWVkaWFuSW5kZXgpKTsKKyAgICAgICAgbV9icmFuY2hlcy5hcHBlbmQoQnJh
bmNoQ29kZShFeGVjdXRlQ2FzZSwgbWVkaWFuSW5kZXgpKTsKKyAgICAgICAgCisgICAgICAgIG1f
YnJhbmNoZXMuYXBwZW5kKEJyYW5jaENvZGUoUG9wKSk7CisgICAgICAgIGJ1aWxkKG1lZGlhbklu
ZGV4ICsgMSwgZW5kKTsKKyAgICAgICAgCisgICAgICAgIG1fYnJhbmNoZXMuYXBwZW5kKEJyYW5j
aENvZGUoUG9wKSk7CisgICAgICAgIGJ1aWxkKHN0YXJ0LCBtZWRpYW5JbmRleCk7CisgICAgICAg
IGJyZWFrOworICAgIH0KK30KKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkRGRworCisjZW5kaWYg
Ly8gRU5BQkxFKERGR19KSVQpCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
QmluYXJ5U3dpdGNoLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdCaW5hcnlTd2l0Y2guaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQmluYXJ5U3dpdGNoLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMjggQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBERkdC
aW5hcnlTd2l0Y2hfaAorI2RlZmluZSBERkdCaW5hcnlTd2l0Y2hfaAorCisjaW5jbHVkZSA8d3Rm
L1BsYXRmb3JtLmg+CisKKyNpZiBFTkFCTEUoREZHX0pJVCkKKworI2luY2x1ZGUgIk1hY3JvQXNz
ZW1ibGVyLmgiCisKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKKworLy8gVXNlIHRo
aXMgbGlrZSBzbzoKKy8vCisvLyBCaW5hcnlTd2l0Y2ggc3dpdGNoKHZhbHVlUmVnLCBjYXNlc1Zl
Y3RvciwgQmluYXJ5U3dpdGNoOjpJbnQzMik7CisvLyB3aGlsZSAoc3dpdGNoLmFkdmFuY2Uoaml0
KSkgeworLy8gICAgIGludCB2YWx1ZSA9IHN3aXRjaC5jYXNlVmFsdWUoKTsKKy8vICAgICB1bnNp
Z25lZCBpbmRleCA9IHN3aXRjaC5jYXNlSW5kZXgoKTsgLy8gaW5kZXggaW50byBjYXNlc1ZlY3Rv
ciwgYWJvdmUKKy8vICAgICAuLi4gLy8gZ2VuZXJhdGUgY29kZSBmb3IgdGhpcyBjYXNlCisvLyB9
CisvLyBzd2l0Y2guZmFsbFRocm91Z2goKS5saW5rKCZqaXQpOworCitjbGFzcyBCaW5hcnlTd2l0
Y2ggeworcHVibGljOgorICAgIGVudW0gVHlwZSB7CisgICAgICAgIEludDMyLAorICAgICAgICBJ
bnRQdHIsCisgICAgICAgIEludDY0CisgICAgfTsKKyAgICAKKyAgICBCaW5hcnlTd2l0Y2goR1BS
UmVnIHZhbHVlLCBjb25zdCBWZWN0b3I8aW50NjRfdD4mIGNhc2VzLCBUeXBlKTsKKyAgICAKKyAg
ICB1bnNpZ25lZCBjYXNlSW5kZXgoKSBjb25zdCB7IHJldHVybiBtX2Nhc2VzW21fY2FzZUluZGV4
XS5pbmRleDsgfQorICAgIGludCBjYXNlVmFsdWUoKSBjb25zdCB7IHJldHVybiBtX2Nhc2VzW21f
Y2FzZUluZGV4XS52YWx1ZTsgfQorICAgIAorICAgIGJvb2wgYWR2YW5jZShNYWNyb0Fzc2VtYmxl
ciYpOworICAgIAorICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wTGlzdCYgZmFsbFRocm91Z2goKSB7
IHJldHVybiBtX2ZhbGxUaHJvdWdoOyB9CisgICAgCitwcml2YXRlOgorICAgIHZvaWQgYnVpbGQo
dW5zaWduZWQgc3RhcnQsIHVuc2lnbmVkIGVuZCk7CisgICAgCisgICAgR1BSUmVnIG1fdmFsdWU7
CisgICAgCisgICAgc3RydWN0IENhc2UgeworICAgICAgICBDYXNlKCkgeyB9CisKKyAgICAgICAg
Q2FzZShpbnQ2NF90IHZhbHVlLCB1bnNpZ25lZCBpbmRleCkKKyAgICAgICAgICAgIDogdmFsdWUo
dmFsdWUpCisgICAgICAgICAgICAsIGluZGV4KGluZGV4KQorICAgICAgICB7CisgICAgICAgIH0K
KyAgICAgICAgCisgICAgICAgIGJvb2wgb3BlcmF0b3I8KGNvbnN0IENhc2UmIG90aGVyKSBjb25z
dAorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gdmFsdWUgPCBvdGhlci52YWx1ZTsKKyAg
ICAgICAgfQorICAgICAgICAKKyAgICAgICAgaW50NjRfdCB2YWx1ZTsKKyAgICAgICAgdW5zaWdu
ZWQgaW5kZXg7CisgICAgfTsKKyAgICAKKyAgICBWZWN0b3I8Q2FzZT4gbV9jYXNlczsKKyAgICAK
KyAgICBlbnVtIEJyYW5jaEtpbmQgeworICAgICAgICBOb3RFcXVhbFRvRmFsbFRocm91Z2gsCisg
ICAgICAgIE5vdEVxdWFsVG9QdXNoLAorICAgICAgICBMZXNzVGhhblRvUHVzaCwKKyAgICAgICAg
UG9wLAorICAgICAgICBFeGVjdXRlQ2FzZQorICAgIH07CisgICAgICAgIAorICAgIHN0cnVjdCBC
cmFuY2hDb2RlIHsKKyAgICAgICAgQnJhbmNoQ29kZSgpIHsgfQorICAgICAgICAKKyAgICAgICAg
QnJhbmNoQ29kZShCcmFuY2hLaW5kIGtpbmQsIHVuc2lnbmVkIGluZGV4ID0gVUlOVF9NQVgpCisg
ICAgICAgICAgICA6IGtpbmQoa2luZCkKKyAgICAgICAgICAgICwgaW5kZXgoaW5kZXgpCisgICAg
ICAgIHsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgQnJhbmNoS2luZCBraW5kOworICAg
ICAgICB1bnNpZ25lZCBpbmRleDsKKyAgICB9OworICAgIAorICAgIFZlY3RvcjxCcmFuY2hDb2Rl
PiBtX2JyYW5jaGVzOworCisgICAgdW5zaWduZWQgbV9pbmRleDsKKyAgICB1bnNpZ25lZCBtX2Nh
c2VJbmRleDsKKyAgICBWZWN0b3I8TWFjcm9Bc3NlbWJsZXI6Okp1bXA+IG1fanVtcFN0YWNrOwor
ICAgIAorICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wTGlzdCBtX2ZhbGxUaHJvdWdoOworICAgIAor
ICAgIHVuc2lnbmVkIG1fbWVkaWFuQmlhczsKKyAgICAKKyAgICBUeXBlIG1fdHlwZTsKK307CisK
K30gfSAvLyBuYW1lc3BhY2UgSlNDOjpERkcKKworI2VuZGlmIC8vIEVOQUJMRShERkdfSklUKQor
CisjZW5kaWYgLy8gREZHQmluYXJ5U3dpdGNoX2gKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdMYXp5SlNWYWx1ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdMYXp5SlNWYWx1ZS5jcHAJKHJldmlzaW9uIDE1MTk0NCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTGF6eUpTVmFsdWUuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zOSw2ICszOSw4IEBAIEpTVmFsdWUgTGF6eUpTVmFsdWU6OmdldFZhbHVlKFZNJiB2bSkgY28K
ICAgICAgICAgcmV0dXJuIHZhbHVlKCk7CiAgICAgY2FzZSBTaW5nbGVDaGFyYWN0ZXJTdHJpbmc6
CiAgICAgICAgIHJldHVybiBqc1NpbmdsZUNoYXJhY3RlclN0cmluZygmdm0sIHUuY2hhcmFjdGVy
KTsKKyAgICBjYXNlIEtub3duU3RyaW5nSW1wbDoKKyAgICAgICAgcmV0dXJuIGpzU3RyaW5nKCZ2
bSwgdS5zdHJpbmdJbXBsKTsKICAgICB9CiAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQo
KTsKIH0KQEAgLTU5LDYgKzYxLDE5IEBAIHN0YXRpYyBUcmlTdGF0ZSBlcXVhbFRvU2luZ2xlQ2hh
cmFjdGVyKEoKICAgICByZXR1cm4gdHJpU3RhdGUoc3RyaW5nLT5hdCgwKSA9PSBjaGFyYWN0ZXIp
OwogfQogCitzdGF0aWMgVHJpU3RhdGUgZXF1YWxUb1N0cmluZ0ltcGwoSlNWYWx1ZSB2YWx1ZSwg
U3RyaW5nSW1wbCogc3RyaW5nSW1wbCkKK3sKKyAgICBpZiAoIXZhbHVlLmlzU3RyaW5nKCkpCisg
ICAgICAgIHJldHVybiBGYWxzZVRyaVN0YXRlOworICAgIAorICAgIEpTU3RyaW5nKiBqc1N0cmlu
ZyA9IGFzU3RyaW5nKHZhbHVlKTsKKyAgICBjb25zdCBTdHJpbmdJbXBsKiBzdHJpbmcgPSBqc1N0
cmluZy0+dHJ5R2V0VmFsdWVJbXBsKCk7CisgICAgaWYgKCFzdHJpbmcpCisgICAgICAgIHJldHVy
biBNaXhlZFRyaVN0YXRlOworICAgIAorICAgIHJldHVybiB0cmlTdGF0ZShXVEY6OmVxdWFsKHN0
cmluZ0ltcGwsIHN0cmluZykpOworfQorCiBUcmlTdGF0ZSBMYXp5SlNWYWx1ZTo6c3RyaWN0RXF1
YWwoY29uc3QgTGF6eUpTVmFsdWUmIG90aGVyKSBjb25zdAogewogICAgIHN3aXRjaCAobV9raW5k
KSB7CkBAIC02OCwxMiArODMsMjYgQEAgVHJpU3RhdGUgTGF6eUpTVmFsdWU6OnN0cmljdEVxdWFs
KGNvbnN0IAogICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OnB1cmVTdHJpY3RFcXVhbCh2YWx1
ZSgpLCBvdGhlci52YWx1ZSgpKTsKICAgICAgICAgY2FzZSBTaW5nbGVDaGFyYWN0ZXJTdHJpbmc6
CiAgICAgICAgICAgICByZXR1cm4gZXF1YWxUb1NpbmdsZUNoYXJhY3Rlcih2YWx1ZSgpLCBvdGhl
ci5jaGFyYWN0ZXIoKSk7CisgICAgICAgIGNhc2UgS25vd25TdHJpbmdJbXBsOgorICAgICAgICAg
ICAgcmV0dXJuIGVxdWFsVG9TdHJpbmdJbXBsKHZhbHVlKCksIG90aGVyLnN0cmluZ0ltcGwoKSk7
CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBTaW5nbGVDaGFyYWN0ZXJTdHJp
bmc6CiAgICAgICAgIHN3aXRjaCAob3RoZXIubV9raW5kKSB7CiAgICAgICAgIGNhc2UgU2luZ2xl
Q2hhcmFjdGVyU3RyaW5nOgogICAgICAgICAgICAgcmV0dXJuIHRyaVN0YXRlKGNoYXJhY3Rlcigp
ID09IG90aGVyLmNoYXJhY3RlcigpKTsKKyAgICAgICAgY2FzZSBLbm93blN0cmluZ0ltcGw6Cisg
ICAgICAgICAgICBpZiAob3RoZXIuc3RyaW5nSW1wbCgpLT5sZW5ndGgoKSAhPSAxKQorICAgICAg
ICAgICAgICAgIHJldHVybiBGYWxzZVRyaVN0YXRlOworICAgICAgICAgICAgcmV0dXJuIHRyaVN0
YXRlKG90aGVyLnN0cmluZ0ltcGwoKS0+YXQoMCkgPT0gY2hhcmFjdGVyKCkpOworICAgICAgICBk
ZWZhdWx0OgorICAgICAgICAgICAgcmV0dXJuIG90aGVyLnN0cmljdEVxdWFsKCp0aGlzKTsKKyAg
ICAgICAgfQorICAgICAgICBicmVhazsKKyAgICBjYXNlIEtub3duU3RyaW5nSW1wbDoKKyAgICAg
ICAgc3dpdGNoIChvdGhlci5tX2tpbmQpIHsKKyAgICAgICAgY2FzZSBLbm93blN0cmluZ0ltcGw6
CisgICAgICAgICAgICByZXR1cm4gdHJpU3RhdGUoV1RGOjplcXVhbChzdHJpbmdJbXBsKCksIG90
aGVyLnN0cmluZ0ltcGwoKSkpOwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgcmV0dXJu
IG90aGVyLnN0cmljdEVxdWFsKCp0aGlzKTsKICAgICAgICAgfQpAQCAtOTMsNiArMTIyLDkgQEAg
dm9pZCBMYXp5SlNWYWx1ZTo6ZHVtcChQcmludFN0cmVhbSYgb3V0KQogICAgICAgICBvdXQucHJp
bnRmKCIlMDRYIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGNoYXJhY3RlcigpKSk7CiAgICAgICAg
IG91dC5wcmludCgiIC8gIiwgU3RyaW5nSW1wbDo6dXRmOEZvckNoYXJhY3RlcnMoJnUuY2hhcmFj
dGVyLCAxKSwgIikiKTsKICAgICAgICAgcmV0dXJuOworICAgIGNhc2UgS25vd25TdHJpbmdJbXBs
OgorICAgICAgICBvdXQucHJpbnQoIkxhenk6U3RyaW5nKCIsIHN0cmluZ0ltcGwoKSwgIikiKTsK
KyAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgp
OwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdMYXp5SlNWYWx1ZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTGF6eUpTVmFsdWUuaAko
cmV2aXNpb24gMTUxOTQ0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdMYXp5SlNW
YWx1ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00MCw3ICs0MCw4IEBAIG5hbWVzcGFjZSBKU0MgeyBu
YW1lc3BhY2UgREZHIHsKIAogZW51bSBMYXppbmVzc0tpbmQgewogICAgIEtub3duVmFsdWUsCi0g
ICAgU2luZ2xlQ2hhcmFjdGVyU3RyaW5nCisgICAgU2luZ2xlQ2hhcmFjdGVyU3RyaW5nLAorICAg
IEtub3duU3RyaW5nSW1wbAogfTsKIAogY2xhc3MgTGF6eUpTVmFsdWUgewpAQCAtNTksNiArNjAs
MTQgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KICAgICAKKyAgICBz
dGF0aWMgTGF6eUpTVmFsdWUga25vd25TdHJpbmdJbXBsKFN0cmluZ0ltcGwqIHN0cmluZykKKyAg
ICB7CisgICAgICAgIExhenlKU1ZhbHVlIHJlc3VsdDsKKyAgICAgICAgcmVzdWx0Lm1fa2luZCA9
IEtub3duU3RyaW5nSW1wbDsKKyAgICAgICAgcmVzdWx0LnUuc3RyaW5nSW1wbCA9IHN0cmluZzsK
KyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisgICAgCiAgICAgSlNWYWx1ZSB0cnlHZXRW
YWx1ZSgpIGNvbnN0CiAgICAgewogICAgICAgICBpZiAobV9raW5kID09IEtub3duVmFsdWUpCkBA
IC04MCw2ICs4OSwxMiBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiB1LmNoYXJhY3RlcjsKICAg
ICB9CiAgICAgCisgICAgU3RyaW5nSW1wbCogc3RyaW5nSW1wbCgpIGNvbnN0CisgICAgeworICAg
ICAgICBBU1NFUlQobV9raW5kID09IEtub3duU3RyaW5nSW1wbCk7CisgICAgICAgIHJldHVybiB1
LnN0cmluZ0ltcGw7CisgICAgfQorICAgIAogICAgIFRyaVN0YXRlIHN0cmljdEVxdWFsKGNvbnN0
IExhenlKU1ZhbHVlJiBvdGhlcikgY29uc3Q7CiAgICAgCiAgICAgdW5zaWduZWQgc3dpdGNoTG9v
a3VwVmFsdWUoKSBjb25zdApAQCAtOTIsOCArMTA3LDEwIEBAIHB1YmxpYzoKICAgICAgICAgICAg
IHJldHVybiB2YWx1ZSgpLmFzSW50MzIoKTsKICAgICAgICAgY2FzZSBTaW5nbGVDaGFyYWN0ZXJT
dHJpbmc6CiAgICAgICAgICAgICByZXR1cm4gY2hhcmFjdGVyKCk7CisgICAgICAgIGRlZmF1bHQ6
CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAg
cmV0dXJuIDA7CiAgICAgICAgIH0KLSAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQo
KTsKICAgICB9CiAgICAgCiAgICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJikgY29uc3Q7CkBAIC0x
MDIsNiArMTE5LDcgQEAgcHJpdmF0ZToKICAgICB1bmlvbiB7CiAgICAgICAgIEVuY29kZWRKU1Zh
bHVlIHZhbHVlOwogICAgICAgICBVQ2hhciBjaGFyYWN0ZXI7CisgICAgICAgIFN0cmluZ0ltcGwq
IHN0cmluZ0ltcGw7CiAgICAgfSB1OwogICAgIExhemluZXNzS2luZCBtX2tpbmQ7CiB9OwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAJ
KHJldmlzaW9uIDE1MTk0NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3Vs
YXRpdmVKSVQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00ODYxLDYgKzQ4NjEsMTUwIEBAIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmVtaXRTd2l0Y2hDaGFyKE5vZGUKICAgICB9CiB9CiAKK2Jvb2wgU3Bl
Y3VsYXRpdmVKSVQ6OlN0cmluZ1N3aXRjaENhc2U6Om9wZXJhdG9yPCgKKyAgICBjb25zdCBTcGVj
dWxhdGl2ZUpJVDo6U3RyaW5nU3dpdGNoQ2FzZSYgb3RoZXIpIGNvbnN0Cit7CisgICAgdW5zaWdu
ZWQgbWluTGVuZ3RoID0gc3RkOjptaW4oc3RyaW5nLT5sZW5ndGgoKSwgb3RoZXIuc3RyaW5nLT5s
ZW5ndGgoKSk7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1pbkxlbmd0aDsgKytpKSB7
CisgICAgICAgIGlmIChzdHJpbmctPmF0KGkpID09IG90aGVyLnN0cmluZy0+YXQoaSkpCisgICAg
ICAgICAgICBjb250aW51ZTsKKyAgICAgICAgcmV0dXJuIHN0cmluZy0+YXQoaSkgPCBvdGhlci5z
dHJpbmctPmF0KGkpOworICAgIH0KKyAgICByZXR1cm4gc3RyaW5nLT5sZW5ndGgoKSA8IG90aGVy
LnN0cmluZy0+bGVuZ3RoKCk7Cit9CisKK25hbWVzcGFjZSB7CisKK3N0cnVjdCBDaGFyYWN0ZXJD
YXNlIHsKKyAgICBib29sIG9wZXJhdG9yPChjb25zdCBDaGFyYWN0ZXJDYXNlJiBvdGhlcikgY29u
c3QKKyAgICB7CisgICAgICAgIHJldHVybiBjaGFyYWN0ZXIgPCBvdGhlci5jaGFyYWN0ZXI7Cisg
ICAgfQorICAgIAorICAgIExDaGFyIGNoYXJhY3RlcjsKKyAgICB1bnNpZ25lZCBiZWdpbjsKKyAg
ICB1bnNpZ25lZCBlbmQ7Cit9OworCit9CisKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRCaW5h
cnlTd2l0Y2hTdHJpbmdSZWN1cnNlKAorICAgIFN3aXRjaERhdGEqIGRhdGEsIGNvbnN0IFZlY3Rv
cjxTcGVjdWxhdGl2ZUpJVDo6U3RyaW5nU3dpdGNoQ2FzZT4mIGNhc2VzLAorICAgIHVuc2lnbmVk
IG51bUNoZWNrZWQsIHVuc2lnbmVkIGJlZ2luLCB1bnNpZ25lZCBlbmQsIEdQUlJlZyBidWZmZXIs
IEdQUlJlZyBsZW5ndGgsCisgICAgR1BSUmVnIHRlbXAsIHVuc2lnbmVkIGFscmVhZHlDaGVja2Vk
TGVuZ3RoLCBib29sIGNoZWNrZWRFeGFjdExlbmd0aCkKK3sKKyAgICBpZiAoYmVnaW4gPT0gZW5k
KSB7CisgICAgICAgIGp1bXAoZGF0YS0+ZmFsbFRocm91Z2gsIEZvcmNlSnVtcCk7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisgICAgCisgICAgdW5zaWduZWQgbWluTGVuZ3RoID0gY2FzZXNbYmVn
aW5dLnN0cmluZy0+bGVuZ3RoKCk7CisgICAgdW5zaWduZWQgY29tbW9uQ2hhcnMgPSBudW1DaGVj
a2VkOworICAgIGJvb2wgYWxsTGVuZ3Roc0VxdWFsID0gdHJ1ZTsKKyAgICBmb3IgKHVuc2lnbmVk
IGkgPSBiZWdpbiArIDE7IGkgPCBlbmQ7ICsraSkgeworICAgICAgICB1bnNpZ25lZCBteUNvbW1v
bkNoYXJzID0gbnVtQ2hlY2tlZDsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBqID0gbnVtQ2hlY2tl
ZDsKKyAgICAgICAgICAgIGogPCBzdGQ6Om1pbihjYXNlc1tiZWdpbl0uc3RyaW5nLT5sZW5ndGgo
KSwgY2FzZXNbaV0uc3RyaW5nLT5sZW5ndGgoKSk7CisgICAgICAgICAgICArK2opIHsKKyAgICAg
ICAgICAgIGlmIChjYXNlc1tiZWdpbl0uc3RyaW5nLT5hdChqKSAhPSBjYXNlc1tpXS5zdHJpbmct
PmF0KGopKQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgbXlDb21tb25DaGFy
cysrOworICAgICAgICB9CisgICAgICAgIGNvbW1vbkNoYXJzID0gc3RkOjptaW4oY29tbW9uQ2hh
cnMsIG15Q29tbW9uQ2hhcnMpOworICAgICAgICBpZiAobWluTGVuZ3RoICE9IGNhc2VzW2ldLnN0
cmluZy0+bGVuZ3RoKCkpCisgICAgICAgICAgICBhbGxMZW5ndGhzRXF1YWwgPSBmYWxzZTsKKyAg
ICAgICAgbWluTGVuZ3RoID0gc3RkOjptaW4obWluTGVuZ3RoLCBjYXNlc1tpXS5zdHJpbmctPmxl
bmd0aCgpKTsKKyAgICB9CisgICAgCisgICAgaWYgKGNoZWNrZWRFeGFjdExlbmd0aCkgeworICAg
ICAgICBSRUxFQVNFX0FTU0VSVChhbHJlYWR5Q2hlY2tlZExlbmd0aCA9PSBtaW5MZW5ndGgpOwor
ICAgICAgICBSRUxFQVNFX0FTU0VSVChhbGxMZW5ndGhzRXF1YWwpOworICAgIH0KKyAgICAKKyAg
ICBSRUxFQVNFX0FTU0VSVChtaW5MZW5ndGggPj0gY29tbW9uQ2hhcnMpOworICAgIAorICAgIGlm
IChhbHJlYWR5Q2hlY2tlZExlbmd0aCA8IG1pbkxlbmd0aCkgeworICAgICAgICBpZiAoYWxsTGVu
Z3Roc0VxdWFsKQorICAgICAgICAgICAgYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFs
LCBsZW5ndGgsIEltbTMyKG1pbkxlbmd0aCksIGRhdGEtPmZhbGxUaHJvdWdoKTsKKyAgICAgICAg
ZWxzZQorICAgICAgICAgICAgYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6OkJlbG93LCBsZW5ndGgs
IEltbTMyKG1pbkxlbmd0aCksIGRhdGEtPmZhbGxUaHJvdWdoKTsKKyAgICB9CisgICAgCisgICAg
Zm9yICh1bnNpZ25lZCBpID0gbnVtQ2hlY2tlZDsgaSA8IGNvbW1vbkNoYXJzOyArK2kpIHsKKyAg
ICAgICAgYnJhbmNoOCgKKyAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFj
cm9Bc3NlbWJsZXI6OkFkZHJlc3MoYnVmZmVyLCBpKSwKKyAgICAgICAgICAgIEltbTMyKGNhc2Vz
W2JlZ2luXS5zdHJpbmctPmF0KGkpKSwgZGF0YS0+ZmFsbFRocm91Z2gpOworICAgIH0KKyAgICAK
KyAgICBpZiAobWluTGVuZ3RoID09IGNvbW1vbkNoYXJzKSB7CisgICAgICAgIC8vIFRoaXMgaXMg
dGhlIGNhc2Ugd2hlcmUgb25lIG9mIHRoZSBjYXNlcyBpcyBhIHByZWZpeCBvZiBhbGwgb2YgdGhl
IG90aGVyIGNhc2VzLgorICAgICAgICAvLyBXZSd2ZSBhbHJlYWR5IGNoZWNrZWQgdGhhdCB0aGUg
aW5wdXQgc3RyaW5nIGlzIGEgcHJlZml4IG9mIGFsbCBvZiB0aGUgY2FzZXMsCisgICAgICAgIC8v
IHNvIHdlIGp1c3QgY2hlY2sgbGVuZ3RoIHRvIGp1bXAgdG8gdGhhdCBjYXNlLgorICAgICAgICAK
KyAgICAgICAgaWYgKCFBU1NFUlRTX0RJU0FCTEVEKSB7CisgICAgICAgICAgICBBU1NFUlQoY2Fz
ZXNbYmVnaW5dLnN0cmluZy0+bGVuZ3RoKCkgPT0gY29tbW9uQ2hhcnMpOworICAgICAgICAgICAg
Zm9yICh1bnNpZ25lZCBpID0gYmVnaW4gKyAxOyBpIDwgZW5kOyArK2kpCisgICAgICAgICAgICAg
ICAgQVNTRVJUKGNhc2VzW2ldLnN0cmluZy0+bGVuZ3RoKCkgPiBjb21tb25DaGFycyk7CisgICAg
ICAgIH0KKyAgICAgICAgCisgICAgICAgIGlmIChhbGxMZW5ndGhzRXF1YWwpIHsKKyAgICAgICAg
ICAgIFJFTEVBU0VfQVNTRVJUKGVuZCA9PSBiZWdpbiArIDEpOworICAgICAgICAgICAganVtcChj
YXNlc1tiZWdpbl0udGFyZ2V0LCBGb3JjZUp1bXApOworICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICB9CisgICAgICAgIAorICAgICAgICBicmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6RXF1YWws
IGxlbmd0aCwgSW1tMzIoY29tbW9uQ2hhcnMpLCBjYXNlc1tiZWdpbl0udGFyZ2V0KTsKKyAgICAg
ICAgCisgICAgICAgIGVtaXRCaW5hcnlTd2l0Y2hTdHJpbmdSZWN1cnNlKAorICAgICAgICAgICAg
ZGF0YSwgY2FzZXMsIGNvbW1vbkNoYXJzLCBiZWdpbiArIDEsIGVuZCwgYnVmZmVyLCBsZW5ndGgs
IHRlbXAsIG1pbkxlbmd0aCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgCisgICAgLy8g
QXQgdGhpcyBwb2ludCB3ZSBrbm93IHRoYXQgdGhlIHN0cmluZyBpcyBsb25nZXIgdGhhbiBjb21t
b25DaGFycywgYW5kIHdlJ3ZlIG9ubHkKKyAgICAvLyB2ZXJpZmllZCBjb21tb25DaGFycy4gVXNl
IGEgYmluYXJ5IHN3aXRjaCBvbiB0aGUgbmV4dCB1bmNoZWNrZWQgY2hhcmFjdGVyLCBpLmUuCisg
ICAgLy8gc3RyaW5nW2NvbW1vbkNoYXJzXS4KKyAgICAKKyAgICBBU1NFUlQoZW5kID49IGJlZ2lu
ICsgMik7CisgICAgCisgICAgbV9qaXQubG9hZDgoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFz
ZSwgY29tbW9uQ2hhcnMpLCB0ZW1wKTsKKyAgICAKKyAgICBWZWN0b3I8Q2hhcmFjdGVyQ2FzZT4g
Y2hhcmFjdGVyQ2FzZXM7CisgICAgQ2hhcmFjdGVyQ2FzZSBjdXJyZW50Q2FzZTsKKyAgICBjdXJy
ZW50Q2FzZS5jaGFyYWN0ZXIgPSBjYXNlc1tiZWdpbl0uc3RyaW5nLT5hdChjb21tb25DaGFycyk7
CisgICAgY3VycmVudENhc2UuYmVnaW4gPSBiZWdpbjsKKyAgICBjdXJyZW50Q2FzZS5lbmQgPSBi
ZWdpbiArIDE7CisgICAgZm9yICh1bnNpZ25lZCBpID0gYmVnaW4gKyAxOyBpIDwgZW5kOyArK2kp
IHsKKyAgICAgICAgY3VycmVudENhc2UuZW5kID0gaTsKKyAgICAgICAgaWYgKGNhc2VzW2ldLnN0
cmluZy0+YXQoY29tbW9uQ2hhcnMpICE9IGN1cnJlbnRDYXNlLmNoYXJhY3RlcikgeworICAgICAg
ICAgICAgY2hhcmFjdGVyQ2FzZXMuYXBwZW5kKGN1cnJlbnRDYXNlKTsKKyAgICAgICAgICAgIGN1
cnJlbnRDYXNlLmNoYXJhY3RlciA9IGNhc2VzW2ldLnN0cmluZy0+YXQoY29tbW9uQ2hhcnMpOwor
ICAgICAgICAgICAgY3VycmVudENhc2UuYmVnaW4gPSBpOworICAgICAgICAgICAgY3VycmVudENh
c2UuZW5kID0gaSArIDE7CisgICAgICAgIH0KKyAgICB9CisgICAgY2hhcmFjdGVyQ2FzZXMuYXBw
ZW5kKGN1cnJlbnRDYXNlKTsKKyAgICAKKyAgICBWZWN0b3I8aW50NjRfdD4gY2hhcmFjdGVyQ2Fz
ZVZhbHVlczsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgY2hhcmFjdGVyQ2FzZXMuc2l6
ZSgpOyArK2kpCisgICAgICAgIGNoYXJhY3RlckNhc2VWYWx1ZXMuYXBwZW5kKGNoYXJhY3RlckNh
c2VzW2ldLmNoYXJhY3Rlcik7CisgICAgCisgICAgQmluYXJ5U3dpdGNoIGJpbmFyeVN3aXRjaCh0
ZW1wLCBjaGFyYWN0ZXJDYXNlVmFsdWVzLCBJbnQzMik7CisgICAgd2hpbGUgKGJpbmFyeVN3aXRj
aC5hZHZhbmNlKG1faml0KSkgeworICAgICAgICBjb25zdCBDaGFyYWN0ZXJDYXNlJiBteUNhc2Ug
PSBjaGFyYWN0ZXJDYXNlc1tiaW5hcnlTd2l0Y2guY2FzZUluZGV4KCldOworICAgICAgICBlbWl0
QmluYXJ5U3dpdGNoU3RyaW5nUmVjdXJzZSgKKyAgICAgICAgICAgIGRhdGEsIGNhc2VzLCBjb21t
b25DaGFycyArIDEsIG15Q2FzZS5iZWdpbiwgbXlDYXNlLmVuZCwgYnVmZmVyLCBsZW5ndGgsCisg
ICAgICAgICAgICB0ZW1wLCBtaW5MZW5ndGgsIGFsbExlbmd0aHNFcXVhbCk7CisgICAgfQorICAg
IAorICAgIGFkZEJyYW5jaChiaW5hcnlTd2l0Y2guZmFsbFRocm91Z2goKSwgZGF0YS0+ZmFsbFRo
cm91Z2gpOworfQorCit2b2lkIFNwZWN1bGF0aXZlSklUOjphZGRCcmFuY2goY29uc3QgTWFjcm9B
c3NlbWJsZXI6Okp1bXBMaXN0JiBqdW1wLCBCbG9ja0luZGV4IGRlc3RpbmF0aW9uKQoreworICAg
IGZvciAodW5zaWduZWQgaSA9IGp1bXAuanVtcHMoKS5zaXplKCk7IGktLTspCisgICAgICAgIGFk
ZEJyYW5jaChqdW1wLmp1bXBzKClbaV0sIGRlc3RpbmF0aW9uKTsKK30KKwogdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6ZW1pdFN3aXRjaChOb2RlKiBub2RlKQogewogICAgIFN3aXRjaERhdGEqIGRhdGEg
PSBub2RlLT5zd2l0Y2hEYXRhKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklULmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTcGVjdWxhdGl2ZUpJVC5oCShyZXZpc2lvbiAxNTE5NDQpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgJKHdvcmtpbmcgY29weSkKQEAgLTE3NzAs
NiArMTc3MCwxMiBAQCBwdWJsaWM6CiAjZW5kaWYKICAgICAKICAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBULCB0eXBlbmFtZSBVPgorICAgIHZvaWQgYnJhbmNoOChKSVRDb21waWxlcjo6UmVsYXRpb25h
bENvbmRpdGlvbiBjb25kLCBUIGxlZnQsIFUgcmlnaHQsIEJsb2NrSW5kZXggZGVzdGluYXRpb24p
CisgICAgeworICAgICAgICByZXR1cm4gYWRkQnJhbmNoKG1faml0LmJyYW5jaDgoY29uZCwgbGVm
dCwgcmlnaHQpLCBkZXN0aW5hdGlvbik7CisgICAgfQorICAgIAorICAgIHRlbXBsYXRlPHR5cGVu
YW1lIFQsIHR5cGVuYW1lIFU+CiAgICAgdm9pZCBicmFuY2hQdHIoSklUQ29tcGlsZXI6OlJlbGF0
aW9uYWxDb25kaXRpb24gY29uZCwgVCBsZWZ0LCBVIHJpZ2h0LCBCbG9ja0luZGV4IGRlc3RpbmF0
aW9uKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkZEJyYW5jaChtX2ppdC5icmFuY2hQdHIoY29u
ZCwgbGVmdCwgcmlnaHQpLCBkZXN0aW5hdGlvbik7CkBAIC0xODE1LDYgKzE4MjEsNyBAQCBwdWJs
aWM6CiAgICAgewogICAgICAgICBtX2JyYW5jaGVzLmFwcGVuZChCcmFuY2hSZWNvcmQoanVtcCwg
ZGVzdGluYXRpb24pKTsKICAgICB9CisgICAgdm9pZCBhZGRCcmFuY2goY29uc3QgTWFjcm9Bc3Nl
bWJsZXI6Okp1bXBMaXN0JiBqdW1wLCBCbG9ja0luZGV4IGRlc3RpbmF0aW9uKTsKIAogICAgIHZv
aWQgbGlua0JyYW5jaGVzKCk7CiAKQEAgLTE4NjIsNiArMTg2OSwyMiBAQCBwdWJsaWM6CiAgICAg
dm9pZCBjb21waWxlU3RyaW5nSWRlbnRFcXVhbGl0eShOb2RlKik7CiAgICAgdm9pZCBlbWl0T2Jq
ZWN0T3JPdGhlckJyYW5jaChFZGdlIHZhbHVlLCBCbG9ja0luZGV4IHRha2VuLCBCbG9ja0luZGV4
IG5vdFRha2VuKTsKICAgICB2b2lkIGVtaXRCcmFuY2goTm9kZSopOworICAgIAorICAgIHN0cnVj
dCBTdHJpbmdTd2l0Y2hDYXNlIHsKKyAgICAgICAgU3dpdGNoU3dpdGNoQ2FzZSgpIHsgfQorICAg
ICAgICAKKyAgICAgICAgU3RyaW5nU3dpdGNoQ2FzZShTdHJpbmdJbXBsKiBzdHJpbmcsIEJsb2Nr
SW5kZXggdGFyZ2V0KQorICAgICAgICAgICAgOiBzdHJpbmcoc3RyaW5nKQorICAgICAgICAgICAg
LCB0YXJnZXQodGFyZ2V0KQorICAgICAgICB7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAg
IGJvb2wgb3BlcmF0b3I8KGNvbnN0IFN0cmluZ1N3aXRjaENhc2UmIG90aGVyKSBjb25zdDsKKyAg
ICAgICAgCisgICAgICAgIFN0cmluZ0ltcGwqIHN0cmluZzsKKyAgICAgICAgQmxvY2tJbmRleCB0
YXJnZXQ7CisgICAgfTsKKyAgICAKICAgICB2b2lkIGVtaXRTd2l0Y2hJbnRKdW1wKFN3aXRjaERh
dGEqLCBHUFJSZWcgdmFsdWUsIEdQUlJlZyBzY3JhdGNoKTsKICAgICB2b2lkIGVtaXRTd2l0Y2hJ
bW0oTm9kZSosIFN3aXRjaERhdGEqKTsKICAgICB2b2lkIGVtaXRTd2l0Y2hDaGFyU3RyaW5nSnVt
cChTd2l0Y2hEYXRhKiwgR1BSUmVnIHZhbHVlLCBHUFJSZWcgc2NyYXRjaCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>205356</attachid>
            <date>2013-06-24 19:29:00 -0700</date>
            <delta_ts>2013-06-25 13:40:25 -0700</delta_ts>
            <desc>work in progress</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>37370</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9KdW1wVGFibGUuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSnVtcFRhYmxlLmgJKHJldmlz
aW9uIDE1MTk0NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9KdW1wVGFibGUu
aAkod29ya2luZyBjb3B5KQpAQCAtNzAsNiArNzAsMTEgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgICAgICByZXR1cm4gbG9jLT52YWx1ZS5jdGlPZmZzZXQ7CiAgICAgICAgIH0KICNlbmRpZgor
ICAgICAgICAKKyAgICAgICAgdm9pZCBjbGVhcigpCisgICAgICAgIHsKKyAgICAgICAgICAgIG9m
ZnNldFRhYmxlLmNsZWFyKCk7CisgICAgICAgIH0KICAgICB9OwogCiAgICAgc3RydWN0IFNpbXBs
ZUp1bXBUYWJsZSB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0JhY2t3YXJk
c1Byb3BhZ2F0aW9uUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQmFja3dhcmRzUHJvcGFnYXRpb25QaGFzZS5jcHAJKHJldmlzaW9uIDE1MTk0NCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQmFja3dhcmRzUHJvcGFnYXRpb25QaGFz
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0OSwxNSArMzQ5LDI2IEBAIHByaXZhdGU6CiAgICAg
ICAgICAgICBTd2l0Y2hEYXRhKiBkYXRhID0gbm9kZS0+c3dpdGNoRGF0YSgpOwogICAgICAgICAg
ICAgc3dpdGNoIChkYXRhLT5raW5kKSB7CiAgICAgICAgICAgICBjYXNlIFN3aXRjaEltbToKLSAg
ICAgICAgICAgIGNhc2UgU3dpdGNoQ2hhcjogewogICAgICAgICAgICAgICAgIC8vIFdlIGRvbid0
IG5lZWQgTm9kZU5lZWRzTmVnWmVybyBiZWNhdXNlIGlmIHRoZSBjYXNlcyBhcmUgYWxsIGludGVn
ZXJzCi0gICAgICAgICAgICAgICAgLy8gb3Igc3RyaW5ncyB0aGVuIC0wIGFuZCAwIGFyZSB0cmVh
dGVkIHRoZSBzYW1lLiAgV2UgZG9uJ3QgbmVlZAotICAgICAgICAgICAgICAgIC8vIE5vZGVVc2Vk
QXNPdGhlciBiZWNhdXNlIGlmIGFsbCBvZiB0aGUgY2FzZXMgYXJlIGludGVnZXJzIG9yCi0gICAg
ICAgICAgICAgICAgLy8gc2luZ2xlLWNoYXJhY3RlciBzdHJpbmdzIHRoZW4gTmFOIGFuZCB1bmRl
ZmluZWQgYXJlIHRyZWF0ZWQgdGhlIHNhbWUKLSAgICAgICAgICAgICAgICAvLyAoaS5lLiB0aGV5
IHdpbGwgdGFrZSBkZWZhdWx0KS4KKyAgICAgICAgICAgICAgICAvLyB0aGVuIC0wIGFuZCAwIGFy
ZSB0cmVhdGVkIHRoZSBzYW1lLiAgV2UgZG9uJ3QgbmVlZCBOb2RlVXNlZEFzT3RoZXIKKyAgICAg
ICAgICAgICAgICAvLyBiZWNhdXNlIGlmIGFsbCBvZiB0aGUgY2FzZXMgYXJlIGludGVnZXJzIHRo
ZW4gTmFOIGFuZCB1bmRlZmluZWQgYXJlCisgICAgICAgICAgICAgICAgLy8gdHJlYXRlZCB0aGUg
c2FtZSAoaS5lLiB0aGV5IHdpbGwgdGFrZSBkZWZhdWx0KS4KICAgICAgICAgICAgICAgICBub2Rl
LT5jaGlsZDEoKS0+bWVyZ2VGbGFncyhOb2RlVXNlZEFzTnVtYmVyIHwgTm9kZVVzZWRBc0ludCk7
CiAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9IH0KKyAgICAgICAgICAgIGNh
c2UgU3dpdGNoQ2hhcjogeworICAgICAgICAgICAgICAgIC8vIFdlIGRvbid0IG5lZWQgTm9kZU5l
ZWRzTmVnWmVybyBiZWNhdXNlIGlmIHRoZSBjYXNlcyBhcmUgYWxsIHN0cmluZ3MKKyAgICAgICAg
ICAgICAgICAvLyB0aGVuIC0wIGFuZCAwIGFyZSB0cmVhdGVkIHRoZSBzYW1lLiAgV2UgZG9uJ3Qg
bmVlZCBOb2RlVXNlZEFzT3RoZXIKKyAgICAgICAgICAgICAgICAvLyBiZWNhdXNlIGlmIGFsbCBv
ZiB0aGUgY2FzZXMgYXJlIHNpbmdsZS1jaGFyYWN0ZXIgc3RyaW5ncyB0aGVuIE5hTgorICAgICAg
ICAgICAgICAgIC8vIGFuZCB1bmRlZmluZWQgYXJlIHRyZWF0ZWQgdGhlIHNhbWUgKGkuZS4gdGhl
eSB3aWxsIHRha2UgZGVmYXVsdCkuCisgICAgICAgICAgICAgICAgbm9kZS0+Y2hpbGQxKCktPm1l
cmdlRmxhZ3MoTm9kZVVzZWRBc051bWJlcik7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICB9CisgICAgICAgICAgICBjYXNlIFN3aXRjaFN0cmluZzoKKyAgICAgICAgICAgICAg
ICAvLyBXZSBkb24ndCBuZWVkIE5vZGVOZWVkc05lZ1plcm8gYmVjYXVzZSBpZiB0aGUgY2FzZXMg
YXJlIGFsbCBzdHJpbmdzCisgICAgICAgICAgICAgICAgLy8gdGhlbiAtMCBhbmQgMCBhcmUgdHJl
YXRlZCB0aGUgc2FtZS4KKyAgICAgICAgICAgICAgICBub2RlLT5jaGlsZDEoKS0+bWVyZ2VGbGFn
cyhOb2RlVXNlZEFzTnVtYmVyIHwgTm9kZVVzZWRBc090aGVyKTsKKyAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAg
ICAgICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQmluYXJ5U3dpdGNo
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0JpbmFyeVN3
aXRjaC5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Jp
bmFyeVN3aXRjaC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwyMDAgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorI2luY2x1ZGUgIkRGR0JpbmFyeVN3aXRjaC5oIgorCisjaWYgRU5BQkxFKERGR19KSVQpCisK
K25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKKworQmluYXJ5U3dpdGNoOjpCaW5hcnlT
d2l0Y2goR1BSUmVnIHZhbHVlLCBjb25zdCBWZWN0b3I8aW50NjRfdD4mIGNhc2VzLCBUeXBlIHR5
cGUpCisgICAgOiBtX3ZhbHVlKHZhbHVlKQorICAgICwgbV9pbmRleCgwKQorICAgICwgbV9jYXNl
SW5kZXgoVUlOVF9NQVgpCisgICAgLCBtX21lZGlhbkJpYXMoMCkKKyAgICAsIG1fdHlwZSh0eXBl
KQoreworICAgIGlmIChjYXNlcy5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKyAgICAKKyAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgY2FzZXMuc2l6ZSgpOyArK2kpCisgICAgICAgIG1f
Y2FzZXMuYXBwZW5kKENhc2UoY2FzZXNbaV0sIGkpKTsKKyAgICBzdGQ6OnNvcnQoY2FzZXMuYmVn
aW4oKSwgY2FzZXMuZW5kKCkpOworICAgIGJ1aWxkKDAsIGNhc2VzLnNpemUoKSk7Cit9CisKK2Jv
b2wgQmluYXJ5U3dpdGNoOjphZHZhbmNlKE1hY3JvQXNzZW1ibGVyJiBqaXQpCit7CisgICAgaWYg
KG1fY2FzZXMuaXNFbXB0eSgpKSB7CisgICAgICAgIG1fZmFsbFRocm91Z2guYXBwZW5kKGppdC5q
dW1wKCkpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIAorICAgIGlmIChtX2lu
ZGV4ID09IG1fYnJhbmNoZXMuc2l6ZSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgCisg
ICAgZm9yICg7OykgeworICAgICAgICBjb25zdCBCcmFuY2hDb2RlJiBjb2RlID0gbV9icmFuY2hl
c1ttX2luZGV4KytdOworICAgICAgICBzd2l0Y2ggKGNvZGUua2luZCkgeworICAgICAgICBjYXNl
IE5vdEVxdWFsVG9GYWxsVGhyb3VnaDoKKyAgICAgICAgICAgIHN3aXRjaCAobV90eXBlKSB7Cisg
ICAgICAgICAgICBjYXNlIEludDMyOgorICAgICAgICAgICAgICAgIG1fZmFsbFRocm91Z2guYXBw
ZW5kKGppdC5icmFuY2gzMigKKyAgICAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Ok5v
dEVxdWFsLCBtX3ZhbHVlLAorICAgICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6SW1t
MzIobV9jYXNlc1tjb2RlLmluZGV4XS52YWx1ZSkpKTsKKyAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgIGNhc2UgSW50UHRyOgorICAgICAgICAgICAgICAgIG1fZmFsbFRocm91Z2gu
YXBwZW5kKGppdC5icmFuY2hQdHIoCisgICAgICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVy
OjpOb3RFcXVhbCwgbV92YWx1ZSwKKyAgICAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6
OkltbVB0cihtX2Nhc2VzW2NvZGUuaW5kZXhdLnZhbHVlKSkpOworICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgY2FzZSBJbnQ2NDoKKyAgICAgICAgICAgICAgICBtX2ZhbGxUaHJv
dWdoLmFwcGVuZChqaXQuYnJhbmNoNjQoCisgICAgICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1i
bGVyOjpOb3RFcXVhbCwgbV92YWx1ZSwKKyAgICAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJs
ZXI6OkltbTY0KG1fY2FzZXNbY29kZS5pbmRleF0udmFsdWUpKSk7CisgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBO
b3RFcXVhbFRvUHVzaDoKKyAgICAgICAgICAgIHN3aXRjaCAobV90eXBlKSB7CisgICAgICAgICAg
ICBjYXNlIEludDMyOgorICAgICAgICAgICAgICAgIG1fYnJhbmNoZXMuYXBwZW5kKGppdC5icmFu
Y2gzMigKKyAgICAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBtX3Zh
bHVlLAorICAgICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6SW1tMzIobV9jYXNlc1tj
b2RlLmluZGV4XS52YWx1ZSkpKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
IGNhc2UgSW50UHRyOgorICAgICAgICAgICAgICAgIG1fYnJhbmNoZXMuYXBwZW5kKGppdC5icmFu
Y2hQdHIoCisgICAgICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgbV92
YWx1ZSwKKyAgICAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkltbVB0cihtX2Nhc2Vz
W2NvZGUuaW5kZXhdLnZhbHVlKSkpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgY2FzZSBJbnQ2NDoKKyAgICAgICAgICAgICAgICBtX2JyYW5jaGVzLmFwcGVuZChqaXQuYnJh
bmNoNjQoCisgICAgICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgbV92
YWx1ZSwKKyAgICAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkltbTY0KG1fY2FzZXNb
Y29kZS5pbmRleF0udmFsdWUpKSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICB9CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBMZXNzVGhhblRvUHVzaDoKKyAg
ICAgICAgICAgIHN3aXRjaCAobV90eXBlKSB7CisgICAgICAgICAgICBjYXNlIEludDMyOgorICAg
ICAgICAgICAgICAgIG1fYnJhbmNoZXMuYXBwZW5kKGppdC5icmFuY2gzMigKKyAgICAgICAgICAg
ICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Okxlc3NUaGFuLCBtX3ZhbHVlLAorICAgICAgICAgICAg
ICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6SW1tMzIobV9jYXNlc1tjb2RlLmluZGV4XS52YWx1ZSkp
KTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgSW50UHRyOgorICAg
ICAgICAgICAgICAgIG1fYnJhbmNoZXMuYXBwZW5kKGppdC5icmFuY2hQdHIoCisgICAgICAgICAg
ICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpMZXNzVGhhbiwgbV92YWx1ZSwKKyAgICAgICAgICAg
ICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkltbVB0cihtX2Nhc2VzW2NvZGUuaW5kZXhdLnZhbHVl
KSkpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBJbnQ2NDoKKyAg
ICAgICAgICAgICAgICBtX2JyYW5jaGVzLmFwcGVuZChqaXQuYnJhbmNoNjQoCisgICAgICAgICAg
ICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpMZXNzVGhhbiwgbV92YWx1ZSwKKyAgICAgICAgICAg
ICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkltbTY0KG1fY2FzZXNbY29kZS5pbmRleF0udmFsdWUp
KSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgY2FzZSBQb3A6CisgICAgICAgICAgICBtX2JyYW5jaGVzLnRha2VMYXN0
KCkubGluaygmaml0KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEV4ZWN1dGVD
YXNlOgorICAgICAgICAgICAgbV9jYXNlSW5kZXggPSBjb2RlLmluZGV4OworICAgICAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICB9Cit9CisKK3ZvaWQgQmluYXJ5U3dpdGNoOjpi
dWlsZCh1bnNpZ25lZCBzdGFydCwgdW5zaWduZWQgZW5kKQoreworICAgIHVuc2lnbmVkIHNpemUg
PSBlbmQgLSBzdGFydDsKKyAgICAKKyAgICBzd2l0Y2ggKHNpemUpIHsKKyAgICBjYXNlIDA6Cisg
ICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIGJyZWFrOworICAg
ICAgICAKKyAgICBjYXNlIDE6CisgICAgICAgIGlmIChzdGFydAorICAgICAgICAgICAgJiYgbV9j
YXNlc1tzdGFydCAtIDFdLnZhbHVlID09IG1fY2FzZXNbc3RhcnRdLnZhbHVlIC0gMQorICAgICAg
ICAgICAgJiYgc3RhcnQgKyAxIDwgbV9jYXNlcy5zaXplKCkKKyAgICAgICAgICAgICYmIG1fY2Fz
ZXNbc3RhcnQgKyAxXS52YWx1ZSA9PSBtX2Nhc2VzW3N0YXJ0XS52YWx1ZSArIDEpIHsKKyAgICAg
ICAgICAgIG1fYnJhbmNoZXMuYXBwZW5kKEJyYW5jaENvZGUoRXhlY3V0ZUNhc2UsIHN0YXJ0KSk7
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgbV9icmFu
Y2hlcy5hcHBlbmQoQnJhbmNoQ29kZShOb3RFcXVhbFRvRmFsbFRocm91Z2gsIHN0YXJ0KSk7Cisg
ICAgICAgIG1fYnJhbmNoZXMuYXBwZW5kKEJyYW5jaENvZGUoRXhlY3V0ZUNhc2UsIHN0YXJ0KSk7
CisgICAgICAgIGJyZWFrOworICAgICAgICAKKyAgICBjYXNlIDI6CisgICAgICAgIGlmIChtX2Nh
c2VzW3N0YXJ0XS52YWx1ZSArIDEgPT0gbV9jYXNlc1tzdGFydCArIDFdLnZhbHVlCisgICAgICAg
ICAgICAmJiBzdGFydAorICAgICAgICAgICAgJiYgbV9jYXNlc1tzdGFydCAtIDFdLnZhbHVlID09
IG1fY2FzZXNbc3RhcnRdLnZhbHVlIC0gMQorICAgICAgICAgICAgJiYgc3RhcnQgKyAyIDwgbV9j
YXNlcy5zaXplKCkKKyAgICAgICAgICAgICYmIG1fY2FzZXNbc3RhcnQgKyAyXS52YWx1ZSA9PSBt
X2Nhc2VzW3N0YXJ0ICsgMV0udmFsdWUgKyAxKSB7CisgICAgICAgICAgICBtX2JyYW5jaGVzLmFw
cGVuZChCcmFuY2hDb2RlKE5vdEVxdWFsVG9QdXNoLCBzdGFydCkpOworICAgICAgICAgICAgbV9i
cmFuY2hlcy5hcHBlbmQoQnJhbmNoQ29kZShFeGVjdXRlQ2FzZSwgc3RhcnQpKTsKKyAgICAgICAg
ICAgIG1fYnJhbmNoZXMuYXBwZW5kKEJyYW5jaENvZGUoUG9wKSk7CisgICAgICAgICAgICBtX2Jy
YW5jaGVzLmFwcGVuZChCcmFuY2hDb2RlKEV4ZWN1dGVDYXNlLCBzdGFydCArIDEpKTsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBtX2JyYW5jaGVzLmFw
cGVuZChCcmFuY2hDb2RlKE5vdEVxdWFsVG9QdXNoLCBzdGFydCkpOworICAgICAgICBtX2JyYW5j
aGVzLmFwcGVuZChCcmFuY2hDb2RlKEV4ZWN1dGVDYXNlLCBzdGFydCkpOworICAgICAgICBtX2Jy
YW5jaGVzLmFwcGVuZChCcmFuY2hDb2RlKFBvcCkpOworICAgICAgICBtX2JyYW5jaGVzLmFwcGVu
ZChCcmFuY2hDb2RlKE5vdEVxdWFsVG9GYWxsVGhyb3VnaCwgc3RhcnQgKyAxKSk7CisgICAgICAg
IG1fYnJhbmNoZXMuYXBwZW5kKEJyYW5jaENvZGUoRXhlY3V0ZUNhc2UsIHN0YXJ0ICsgMSkpOwor
ICAgICAgICBicmVhazsKKyAgICAgICAgCisgICAgZGVmYXVsdDoKKyAgICAgICAgdW5zaWduZWQg
bWVkaWFuSW5kZXggPSAoc3RhcnQgKyBlbmQpIC8gMjsKKyAgICAgICAgaWYgKCEoc2l6ZSAmIDEp
KSB7CisgICAgICAgICAgICAvLyBCZWNhdXNlIGVuZCBpcyBleGNsdXNpdmUsIGluIHRoZSBldmVu
IGNhc2UsIHRoaXMgcm91bmRzIHVwIGJ5CisgICAgICAgICAgICAvLyBkZWZhdWx0LiBIZW5jZSBt
ZWRpYW4gYmlhcyBzb21ldGltZXMgZmxpcHMgdG8gc3VidHJhY2luZyBvbmUKKyAgICAgICAgICAg
IC8vIGluIG9yZGVyIHRvIGdldCByb3VuZC1kb3duIGJlaGF2aW9yLgorICAgICAgICAgICAgbWVk
aWFuSW5kZXggLT0gbV9tZWRpYW5CaWFzOworICAgICAgICAgICAgbV9tZWRpYW5CaWFzIF49IDE7
CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIFJFTEVBU0VfQVNTRVJUKG1lZGlhbkluZGV4
ID4gc3RhcnQpOworICAgICAgICBSRUxFQVNFX0FTU0VSVChtZWRpYW5JbmRleCArIDEgPCBlbmQp
OworICAgICAgICAKKyAgICAgICAgbV9icmFuY2hlcy5hcHBlbmQoQnJhbmNoQ29kZShMZXNzVGhh
blRvUHVzaCwgbWVkaWFuSW5kZXgpKTsKKyAgICAgICAgbV9icmFuY2hlcy5hcHBlbmQoQnJhbmNo
Q29kZShOb3RFcXVhbFRvUHVzaCwgbWVkaWFuSW5kZXgpKTsKKyAgICAgICAgbV9icmFuY2hlcy5h
cHBlbmQoQnJhbmNoQ29kZShFeGVjdXRlQ2FzZSwgbWVkaWFuSW5kZXgpKTsKKyAgICAgICAgCisg
ICAgICAgIG1fYnJhbmNoZXMuYXBwZW5kKEJyYW5jaENvZGUoUG9wKSk7CisgICAgICAgIGJ1aWxk
KG1lZGlhbkluZGV4ICsgMSwgZW5kKTsKKyAgICAgICAgCisgICAgICAgIG1fYnJhbmNoZXMuYXBw
ZW5kKEJyYW5jaENvZGUoUG9wKSk7CisgICAgICAgIGJ1aWxkKHN0YXJ0LCBtZWRpYW5JbmRleCk7
CisgICAgICAgIGJyZWFrOworICAgIH0KK30KKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkRGRwor
CisjZW5kaWYgLy8gRU5BQkxFKERGR19KSVQpCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQmluYXJ5U3dpdGNoLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdCaW5hcnlTd2l0Y2guaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQmluYXJ5U3dpdGNoLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwx
MjggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IK
KyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lm
bmRlZiBERkdCaW5hcnlTd2l0Y2hfaAorI2RlZmluZSBERkdCaW5hcnlTd2l0Y2hfaAorCisjaW5j
bHVkZSA8d3RmL1BsYXRmb3JtLmg+CisKKyNpZiBFTkFCTEUoREZHX0pJVCkKKworI2luY2x1ZGUg
Ik1hY3JvQXNzZW1ibGVyLmgiCisKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKKwor
Ly8gVXNlIHRoaXMgbGlrZSBzbzoKKy8vCisvLyBCaW5hcnlTd2l0Y2ggc3dpdGNoKHZhbHVlUmVn
LCBjYXNlc1ZlY3RvciwgQmluYXJ5U3dpdGNoOjpJbnQzMik7CisvLyB3aGlsZSAoc3dpdGNoLmFk
dmFuY2Uoaml0KSkgeworLy8gICAgIGludCB2YWx1ZSA9IHN3aXRjaC5jYXNlVmFsdWUoKTsKKy8v
ICAgICB1bnNpZ25lZCBpbmRleCA9IHN3aXRjaC5jYXNlSW5kZXgoKTsgLy8gaW5kZXggaW50byBj
YXNlc1ZlY3RvciwgYWJvdmUKKy8vICAgICAuLi4gLy8gZ2VuZXJhdGUgY29kZSBmb3IgdGhpcyBj
YXNlCisvLyB9CisvLyBzd2l0Y2guZmFsbFRocm91Z2goKS5saW5rKCZqaXQpOworCitjbGFzcyBC
aW5hcnlTd2l0Y2ggeworcHVibGljOgorICAgIGVudW0gVHlwZSB7CisgICAgICAgIEludDMyLAor
ICAgICAgICBJbnRQdHIsCisgICAgICAgIEludDY0CisgICAgfTsKKyAgICAKKyAgICBCaW5hcnlT
d2l0Y2goR1BSUmVnIHZhbHVlLCBjb25zdCBWZWN0b3I8aW50NjRfdD4mIGNhc2VzLCBUeXBlKTsK
KyAgICAKKyAgICB1bnNpZ25lZCBjYXNlSW5kZXgoKSBjb25zdCB7IHJldHVybiBtX2Nhc2VzW21f
Y2FzZUluZGV4XS5pbmRleDsgfQorICAgIGludCBjYXNlVmFsdWUoKSBjb25zdCB7IHJldHVybiBt
X2Nhc2VzW21fY2FzZUluZGV4XS52YWx1ZTsgfQorICAgIAorICAgIGJvb2wgYWR2YW5jZShNYWNy
b0Fzc2VtYmxlciYpOworICAgIAorICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wTGlzdCYgZmFsbFRo
cm91Z2goKSB7IHJldHVybiBtX2ZhbGxUaHJvdWdoOyB9CisgICAgCitwcml2YXRlOgorICAgIHZv
aWQgYnVpbGQodW5zaWduZWQgc3RhcnQsIHVuc2lnbmVkIGVuZCk7CisgICAgCisgICAgR1BSUmVn
IG1fdmFsdWU7CisgICAgCisgICAgc3RydWN0IENhc2UgeworICAgICAgICBDYXNlKCkgeyB9CisK
KyAgICAgICAgQ2FzZShpbnQ2NF90IHZhbHVlLCB1bnNpZ25lZCBpbmRleCkKKyAgICAgICAgICAg
IDogdmFsdWUodmFsdWUpCisgICAgICAgICAgICAsIGluZGV4KGluZGV4KQorICAgICAgICB7Cisg
ICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGJvb2wgb3BlcmF0b3I8KGNvbnN0IENhc2UmIG90
aGVyKSBjb25zdAorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gdmFsdWUgPCBvdGhlci52
YWx1ZTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgaW50NjRfdCB2YWx1ZTsKKyAgICAg
ICAgdW5zaWduZWQgaW5kZXg7CisgICAgfTsKKyAgICAKKyAgICBWZWN0b3I8Q2FzZT4gbV9jYXNl
czsKKyAgICAKKyAgICBlbnVtIEJyYW5jaEtpbmQgeworICAgICAgICBOb3RFcXVhbFRvRmFsbFRo
cm91Z2gsCisgICAgICAgIE5vdEVxdWFsVG9QdXNoLAorICAgICAgICBMZXNzVGhhblRvUHVzaCwK
KyAgICAgICAgUG9wLAorICAgICAgICBFeGVjdXRlQ2FzZQorICAgIH07CisgICAgICAgIAorICAg
IHN0cnVjdCBCcmFuY2hDb2RlIHsKKyAgICAgICAgQnJhbmNoQ29kZSgpIHsgfQorICAgICAgICAK
KyAgICAgICAgQnJhbmNoQ29kZShCcmFuY2hLaW5kIGtpbmQsIHVuc2lnbmVkIGluZGV4ID0gVUlO
VF9NQVgpCisgICAgICAgICAgICA6IGtpbmQoa2luZCkKKyAgICAgICAgICAgICwgaW5kZXgoaW5k
ZXgpCisgICAgICAgIHsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgQnJhbmNoS2luZCBr
aW5kOworICAgICAgICB1bnNpZ25lZCBpbmRleDsKKyAgICB9OworICAgIAorICAgIFZlY3RvcjxC
cmFuY2hDb2RlPiBtX2JyYW5jaGVzOworCisgICAgdW5zaWduZWQgbV9pbmRleDsKKyAgICB1bnNp
Z25lZCBtX2Nhc2VJbmRleDsKKyAgICBWZWN0b3I8TWFjcm9Bc3NlbWJsZXI6Okp1bXA+IG1fanVt
cFN0YWNrOworICAgIAorICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wTGlzdCBtX2ZhbGxUaHJvdWdo
OworICAgIAorICAgIHVuc2lnbmVkIG1fbWVkaWFuQmlhczsKKyAgICAKKyAgICBUeXBlIG1fdHlw
ZTsKK307CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpERkcKKworI2VuZGlmIC8vIEVOQUJMRShE
RkdfSklUKQorCisjZW5kaWYgLy8gREZHQmluYXJ5U3dpdGNoX2gKKwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcAkocmV2aXNpb24gMTUxOTQ0
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xOTEsNiArMTkxLDcgQEAgQ2FwYWJpbGl0eUxldmVsIGNhcGFiaWxpdHlM
ZXZlbChPcGNvZGVJRAogICAgIGNhc2Ugb3BfdGVhcl9vZmZfYWN0aXZhdGlvbjoKICAgICBjYXNl
IG9wX25ld19mdW5jOgogICAgIGNhc2Ugb3BfbmV3X2Z1bmNfZXhwOgorICAgIGNhc2Ugb3Bfc3dp
dGNoX3N0cmluZzogLy8gRG9uJ3QgaW5saW5lIGJlY2F1c2Ugd2UgZG9uJ3Qgd2FudCB0byBjb3B5
IHN0cmluZyB0YWJsZXMgaW4gdGhlIGNvbmN1cnJlbnQgSklULgogICAgICAgICByZXR1cm4gQ2Fu
Q29tcGlsZTsKIAogICAgIGRlZmF1bHQ6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0ZpeHVwUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHRml4dXBQaGFzZS5jcHAJKHJldmlzaW9uIDE1MTk0NCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU5Miw2ICs1
OTIsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICBzZXRVc2VLaW5kQW5kVW5ib3hJ
ZlByb2ZpdGFibGU8SW50MzJVc2U+KG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgICAgIGNhc2UgU3dpdGNoQ2hhcjoKKyAgICAgICAgICAgIGNhc2UgU3dp
dGNoU3RyaW5nOgogICAgICAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS0+c2hvdWxkU3Bl
Y3VsYXRlU3RyaW5nKCkpCiAgICAgICAgICAgICAgICAgICAgIHNldFVzZUtpbmRBbmRVbmJveElm
UHJvZml0YWJsZTxTdHJpbmdVc2U+KG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgICAgICAgICBi
cmVhazsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIu
Y3BwCShyZXZpc2lvbiAxNTE5NDQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJ
VENvbXBpbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTYzLDYgKzE2Myw5IEBAIHZvaWQgSklU
Q29tcGlsZXI6OmxpbmsoTGlua0J1ZmZlciYgbGlua0IKICAgICAgICAgaWYgKCFkYXRhLmRpZFVz
ZUp1bXBUYWJsZSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAKKyAgICAgICAgaWYg
KGRhdGEua2luZCA9PSBTd2l0Y2hTdHJpbmcpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAg
ICAgCiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGRhdGEua2luZCA9PSBTd2l0Y2hJbW0gfHwgZGF0
YS5raW5kID09IFN3aXRjaENoYXIpOwogICAgICAgICAKICAgICAgICAgdXNlZEp1bXBUYWJsZXMu
c2V0KGRhdGEuc3dpdGNoVGFibGVJbmRleCk7CkBAIC0xODQsNiArMTg3LDMxIEBAIHZvaWQgSklU
Q29tcGlsZXI6OmxpbmsoTGlua0J1ZmZlciYgbGlua0IKICAgICAgICAgbV9jb2RlQmxvY2stPnN3
aXRjaEp1bXBUYWJsZShpKS5jbGVhcigpOwogICAgIH0KIAorICAgIC8vIE5PVEU6IHdlIGNhbm5v
dCBjbGVhciBzdHJpbmcgc3dpdGNoIHRhYmxlcyBiZWNhdXNlICgxKSB3ZSdyZSBydW5uaW5nIGNv
bmN1cnJlbnRseQorICAgIC8vIGFuZCB3ZSBjYW5ub3QgZGVyZWYgU3RyaW5nSW1wbCdzIGFuZCAo
MikgaXQgd291bGQgYmUgd2VpcmQgdG8gZGVyZWYgdGhvc2UKKyAgICAvLyBTdHJpbmdJbXBsJ3Mg
c2luY2Ugd2UgcmVmZXIgdG8gdGhlbS4KKyAgICBmb3IgKHVuc2lnbmVkIGkgPSBtX2dyYXBoLm1f
c3dpdGNoRGF0YS5zaXplKCk7IGktLTspIHsKKyAgICAgICAgU3dpdGNoRGF0YSYgZGF0YSA9IG1f
Z3JhcGgubV9zd2l0Y2hEYXRhW2ldOworICAgICAgICBpZiAoIWRhdGEuZGlkVXNlSnVtcFRhYmxl
KQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIAorICAgICAgICBpZiAoZGF0YS5raW5k
ICE9IFN3aXRjaFN0cmluZykKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAKKyAgICAg
ICAgU3RyaW5nSnVtcFRhYmxlJiB0YWJsZSA9IG1fY29kZUJsb2NrLT5zdHJpbmdTd2l0Y2hKdW1w
VGFibGUoZGF0YS5zd2l0Y2hUYWJsZUluZGV4KTsKKyAgICAgICAgdGFibGUuY3RpRGVmYXVsdCA9
IGxpbmtCdWZmZXIubG9jYXRpb25PZihtX2Jsb2NrSGVhZHNbZGF0YS5mYWxsVGhyb3VnaF0pOwor
ICAgICAgICBTdHJpbmdKdW1wVGFibGU6OlN0cmluZ09mZnNldFRhYmxlOjppdGVyYXRvciBpdGVy
OworICAgICAgICBTdHJpbmdKdW1wVGFibGU6OlN0cmluZ09mZnNldFRhYmxlOjppdGVyYXRvciBl
bmQgPSB0YWJsZS5vZmZzZXRUYWJsZS5lbmQoKTsKKyAgICAgICAgZm9yIChpdGVyID0gdGFibGUu
b2Zmc2V0VGFibGUuYmVnaW4oKTsgaXRlciAhPSBlbmQ7ICsraXRlcikKKyAgICAgICAgICAgIGl0
ZXItPnZhbHVlLmN0aU9mZnNldCA9IHRhYmxlLmN0aURlZmF1bHQ7CisgICAgICAgIGZvciAodW5z
aWduZWQgaiA9IGRhdGEuY2FzZXMuc2l6ZSgpOyBqLS07KSB7CisgICAgICAgICAgICBTd2l0Y2hD
YXNlJiBteUNhc2UgPSBkYXRhLmNhc2VzW2pdOworICAgICAgICAgICAgaXRlciA9IHRhYmxlLm9m
ZnNldFRhYmxlLmZpbmQobXlDYXNlLnZhbHVlLnN0cmluZ0ltcGwoKSk7CisgICAgICAgICAgICBS
RUxFQVNFX0FTU0VSVChpdGVyICE9IGVuZCk7CisgICAgICAgICAgICBpdGVyLT52YWx1ZS5jdGlP
ZmZzZXQgPSBsaW5rQnVmZmVyLmxvY2F0aW9uT2YobV9ibG9ja0hlYWRzW215Q2FzZS50YXJnZXRd
KTsKKyAgICAgICAgfQorICAgIH0KKwogICAgIC8vIExpbmsgYWxsIGNhbGxzIG91dCBmcm9tIHRo
ZSBKSVQgY29kZSB0byB0aGVpciByZXNwZWN0aXZlIGZ1bmN0aW9ucy4KICAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwgbV9jYWxscy5zaXplKCk7ICsraSkKICAgICAgICAgbGlua0J1ZmZlci5s
aW5rKG1fY2FsbHNbaV0ubV9jYWxsLCBtX2NhbGxzW2ldLm1fZnVuY3Rpb24pOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdMYXp5SlNWYWx1ZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdMYXp5SlNWYWx1ZS5jcHAJKHJldmlzaW9uIDE1
MTk0NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTGF6eUpTVmFsdWUuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zOSw2ICszOSw4IEBAIEpTVmFsdWUgTGF6eUpTVmFsdWU6OmdldFZh
bHVlKFZNJiB2bSkgY28KICAgICAgICAgcmV0dXJuIHZhbHVlKCk7CiAgICAgY2FzZSBTaW5nbGVD
aGFyYWN0ZXJTdHJpbmc6CiAgICAgICAgIHJldHVybiBqc1NpbmdsZUNoYXJhY3RlclN0cmluZygm
dm0sIHUuY2hhcmFjdGVyKTsKKyAgICBjYXNlIEtub3duU3RyaW5nSW1wbDoKKyAgICAgICAgcmV0
dXJuIGpzU3RyaW5nKCZ2bSwgdS5zdHJpbmdJbXBsKTsKICAgICB9CiAgICAgUkVMRUFTRV9BU1NF
UlRfTk9UX1JFQUNIRUQoKTsKIH0KQEAgLTU5LDYgKzYxLDE5IEBAIHN0YXRpYyBUcmlTdGF0ZSBl
cXVhbFRvU2luZ2xlQ2hhcmFjdGVyKEoKICAgICByZXR1cm4gdHJpU3RhdGUoc3RyaW5nLT5hdCgw
KSA9PSBjaGFyYWN0ZXIpOwogfQogCitzdGF0aWMgVHJpU3RhdGUgZXF1YWxUb1N0cmluZ0ltcGwo
SlNWYWx1ZSB2YWx1ZSwgU3RyaW5nSW1wbCogc3RyaW5nSW1wbCkKK3sKKyAgICBpZiAoIXZhbHVl
LmlzU3RyaW5nKCkpCisgICAgICAgIHJldHVybiBGYWxzZVRyaVN0YXRlOworICAgIAorICAgIEpT
U3RyaW5nKiBqc1N0cmluZyA9IGFzU3RyaW5nKHZhbHVlKTsKKyAgICBjb25zdCBTdHJpbmdJbXBs
KiBzdHJpbmcgPSBqc1N0cmluZy0+dHJ5R2V0VmFsdWVJbXBsKCk7CisgICAgaWYgKCFzdHJpbmcp
CisgICAgICAgIHJldHVybiBNaXhlZFRyaVN0YXRlOworICAgIAorICAgIHJldHVybiB0cmlTdGF0
ZShXVEY6OmVxdWFsKHN0cmluZ0ltcGwsIHN0cmluZykpOworfQorCiBUcmlTdGF0ZSBMYXp5SlNW
YWx1ZTo6c3RyaWN0RXF1YWwoY29uc3QgTGF6eUpTVmFsdWUmIG90aGVyKSBjb25zdAogewogICAg
IHN3aXRjaCAobV9raW5kKSB7CkBAIC02OCwxMiArODMsMjYgQEAgVHJpU3RhdGUgTGF6eUpTVmFs
dWU6OnN0cmljdEVxdWFsKGNvbnN0IAogICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OnB1cmVT
dHJpY3RFcXVhbCh2YWx1ZSgpLCBvdGhlci52YWx1ZSgpKTsKICAgICAgICAgY2FzZSBTaW5nbGVD
aGFyYWN0ZXJTdHJpbmc6CiAgICAgICAgICAgICByZXR1cm4gZXF1YWxUb1NpbmdsZUNoYXJhY3Rl
cih2YWx1ZSgpLCBvdGhlci5jaGFyYWN0ZXIoKSk7CisgICAgICAgIGNhc2UgS25vd25TdHJpbmdJ
bXBsOgorICAgICAgICAgICAgcmV0dXJuIGVxdWFsVG9TdHJpbmdJbXBsKHZhbHVlKCksIG90aGVy
LnN0cmluZ0ltcGwoKSk7CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBTaW5n
bGVDaGFyYWN0ZXJTdHJpbmc6CiAgICAgICAgIHN3aXRjaCAob3RoZXIubV9raW5kKSB7CiAgICAg
ICAgIGNhc2UgU2luZ2xlQ2hhcmFjdGVyU3RyaW5nOgogICAgICAgICAgICAgcmV0dXJuIHRyaVN0
YXRlKGNoYXJhY3RlcigpID09IG90aGVyLmNoYXJhY3RlcigpKTsKKyAgICAgICAgY2FzZSBLbm93
blN0cmluZ0ltcGw6CisgICAgICAgICAgICBpZiAob3RoZXIuc3RyaW5nSW1wbCgpLT5sZW5ndGgo
KSAhPSAxKQorICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZVRyaVN0YXRlOworICAgICAgICAg
ICAgcmV0dXJuIHRyaVN0YXRlKG90aGVyLnN0cmluZ0ltcGwoKS0+YXQoMCkgPT0gY2hhcmFjdGVy
KCkpOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgcmV0dXJuIG90aGVyLnN0cmljdEVx
dWFsKCp0aGlzKTsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKKyAgICBjYXNlIEtub3duU3Ry
aW5nSW1wbDoKKyAgICAgICAgc3dpdGNoIChvdGhlci5tX2tpbmQpIHsKKyAgICAgICAgY2FzZSBL
bm93blN0cmluZ0ltcGw6CisgICAgICAgICAgICByZXR1cm4gdHJpU3RhdGUoV1RGOjplcXVhbChz
dHJpbmdJbXBsKCksIG90aGVyLnN0cmluZ0ltcGwoKSkpOwogICAgICAgICBkZWZhdWx0OgogICAg
ICAgICAgICAgcmV0dXJuIG90aGVyLnN0cmljdEVxdWFsKCp0aGlzKTsKICAgICAgICAgfQpAQCAt
OTMsNiArMTIyLDkgQEAgdm9pZCBMYXp5SlNWYWx1ZTo6ZHVtcChQcmludFN0cmVhbSYgb3V0KQog
ICAgICAgICBvdXQucHJpbnRmKCIlMDRYIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGNoYXJhY3Rl
cigpKSk7CiAgICAgICAgIG91dC5wcmludCgiIC8gIiwgU3RyaW5nSW1wbDo6dXRmOEZvckNoYXJh
Y3RlcnMoJnUuY2hhcmFjdGVyLCAxKSwgIikiKTsKICAgICAgICAgcmV0dXJuOworICAgIGNhc2Ug
S25vd25TdHJpbmdJbXBsOgorICAgICAgICBvdXQucHJpbnQoIkxhenk6U3RyaW5nKCIsIHN0cmlu
Z0ltcGwoKSwgIikiKTsKKyAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBSRUxFQVNFX0FTU0VS
VF9OT1RfUkVBQ0hFRCgpOwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdM
YXp5SlNWYWx1ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
TGF6eUpTVmFsdWUuaAkocmV2aXNpb24gMTUxOTQ0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdMYXp5SlNWYWx1ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00MCw3ICs0MCw4IEBAIG5h
bWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKIAogZW51bSBMYXppbmVzc0tpbmQgewogICAg
IEtub3duVmFsdWUsCi0gICAgU2luZ2xlQ2hhcmFjdGVyU3RyaW5nCisgICAgU2luZ2xlQ2hhcmFj
dGVyU3RyaW5nLAorICAgIEtub3duU3RyaW5nSW1wbAogfTsKIAogY2xhc3MgTGF6eUpTVmFsdWUg
ewpAQCAtNTksNiArNjAsMTQgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAg
IH0KICAgICAKKyAgICBzdGF0aWMgTGF6eUpTVmFsdWUga25vd25TdHJpbmdJbXBsKFN0cmluZ0lt
cGwqIHN0cmluZykKKyAgICB7CisgICAgICAgIExhenlKU1ZhbHVlIHJlc3VsdDsKKyAgICAgICAg
cmVzdWx0Lm1fa2luZCA9IEtub3duU3RyaW5nSW1wbDsKKyAgICAgICAgcmVzdWx0LnUuc3RyaW5n
SW1wbCA9IHN0cmluZzsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisgICAgCiAgICAg
SlNWYWx1ZSB0cnlHZXRWYWx1ZSgpIGNvbnN0CiAgICAgewogICAgICAgICBpZiAobV9raW5kID09
IEtub3duVmFsdWUpCkBAIC04MCw2ICs4OSwxMiBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiB1
LmNoYXJhY3RlcjsKICAgICB9CiAgICAgCisgICAgU3RyaW5nSW1wbCogc3RyaW5nSW1wbCgpIGNv
bnN0CisgICAgeworICAgICAgICBBU1NFUlQobV9raW5kID09IEtub3duU3RyaW5nSW1wbCk7Cisg
ICAgICAgIHJldHVybiB1LnN0cmluZ0ltcGw7CisgICAgfQorICAgIAogICAgIFRyaVN0YXRlIHN0
cmljdEVxdWFsKGNvbnN0IExhenlKU1ZhbHVlJiBvdGhlcikgY29uc3Q7CiAgICAgCiAgICAgdW5z
aWduZWQgc3dpdGNoTG9va3VwVmFsdWUoKSBjb25zdApAQCAtOTIsOCArMTA3LDEwIEBAIHB1Ymxp
YzoKICAgICAgICAgICAgIHJldHVybiB2YWx1ZSgpLmFzSW50MzIoKTsKICAgICAgICAgY2FzZSBT
aW5nbGVDaGFyYWN0ZXJTdHJpbmc6CiAgICAgICAgICAgICByZXR1cm4gY2hhcmFjdGVyKCk7Cisg
ICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgp
OworICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIH0KLSAgICAgICAgUkVMRUFTRV9BU1NF
UlRfTk9UX1JFQUNIRUQoKTsKICAgICB9CiAgICAgCiAgICAgdm9pZCBkdW1wKFByaW50U3RyZWFt
JikgY29uc3Q7CkBAIC0xMDIsNiArMTE5LDcgQEAgcHJpdmF0ZToKICAgICB1bmlvbiB7CiAgICAg
ICAgIEVuY29kZWRKU1ZhbHVlIHZhbHVlOwogICAgICAgICBVQ2hhciBjaGFyYWN0ZXI7CisgICAg
ICAgIFN0cmluZ0ltcGwqIHN0cmluZ0ltcGw7CiAgICAgfSB1OwogICAgIExhemluZXNzS2luZCBt
X2tpbmQ7CiB9OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgJKHJldmlzaW9u
IDE1MTk0NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC05Niw3ICs5Niw4IEBAIHN0cnVjdCBTd2l0Y2hDYXNlIHsKIAogZW51bSBTd2l0
Y2hLaW5kIHsKICAgICBTd2l0Y2hJbW0sCi0gICAgU3dpdGNoQ2hhcgorICAgIFN3aXRjaENoYXIs
CisgICAgU3dpdGNoU3RyaW5nCiB9OwogCiBzdHJ1Y3QgU3dpdGNoRGF0YSB7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAJKHJldmlzaW9uIDE1MTk0
NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTE2MzIsNiArMTYzMiwxNCBAQCBjaGFyKiBERkdfT1BFUkFUSU9OIG9wZXJh
dGlvbkZpbmRTd2l0Y2hJCiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNoYXIqPih0YWJsZS5jdGlE
ZWZhdWx0LmV4ZWN1dGFibGVBZGRyZXNzKCkpOwogfQogCitjaGFyKiBERkdfT1BFUkFUSU9OIG9w
ZXJhdGlvblN3aXRjaFN0cmluZyhFeGVjU3RhdGUqIGV4ZWMsIHNpemVfdCB0YWJsZUluZGV4LCBK
U1N0cmluZyogc3RyaW5nKQoreworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgTmF0aXZl
Q2FsbEZyYW1lVHJhY2VyIHRyYWNlcigmdm0sIGV4ZWMpOworCisgICAgcmV0dXJuIGV4ZWMtPmNv
ZGVCbG9jaygpLT5zdHJpbmdTd2l0Y2hKdW1wVGFibGUodGFibGVJbmRleCkuY3RpRm9yVmFsdWUo
c3RyaW5nLT52YWx1ZShleGVjKS5pbXBsKCkpLmV4ZWN1dGFibGVBZGRyZXNzKCk7Cit9CisKIGRv
dWJsZSBERkdfT1BFUkFUSU9OIG9wZXJhdGlvbkZNb2RPbkludHMoaW50MzJfdCBhLCBpbnQzMl90
IGIpCiB7CiAgICAgcmV0dXJuIGZtb2QoYSwgYik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR09wZXJhdGlvbnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR09wZXJhdGlvbnMuaAkocmV2aXNpb24gMTUxOTQ0KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmgJKHdvcmtpbmcgY29weSkKQEAgLTExNyw2ICsx
MTcsNyBAQCB0eXBlZGVmIGNoYXIqIERGR19PUEVSQVRJT04gKCpQX0RGR09wZXJhCiB0eXBlZGVm
IGNoYXIqIERGR19PUEVSQVRJT04gKCpQX0RGR09wZXJhdGlvbl9FT1opKEV4ZWNTdGF0ZSosIEpT
T2JqZWN0KiwgaW50MzJfdCk7CiB0eXBlZGVmIGNoYXIqIERGR19PUEVSQVRJT04gKCpQX0RGR09w
ZXJhdGlvbl9FUFMpKEV4ZWNTdGF0ZSosIHZvaWQqLCBzaXplX3QpOwogdHlwZWRlZiBjaGFyKiBE
RkdfT1BFUkFUSU9OICgqUF9ERkdPcGVyYXRpb25fRVMpKEV4ZWNTdGF0ZSosIHNpemVfdCk7Cit0
eXBlZGVmIGNoYXIqIERGR19PUEVSQVRJT04gKCpQX0RGR09wZXJhdGlvbl9FU0pzcykoRXhlY1N0
YXRlKiwgaW50MzJfdCwgSlNTdHJpbmcqKTsKIHR5cGVkZWYgY2hhciogREZHX09QRVJBVElPTiAo
KlBfREZHT3BlcmF0aW9uX0VTdCkoRXhlY1N0YXRlKiwgU3RydWN0dXJlKik7CiB0eXBlZGVmIGNo
YXIqIERGR19PUEVSQVRJT04gKCpQX0RGR09wZXJhdGlvbl9FU3RQUykoRXhlY1N0YXRlKiwgU3Ry
dWN0dXJlKiwgdm9pZCosIHNpemVfdCk7CiB0eXBlZGVmIGNoYXIqIERGR19PUEVSQVRJT04gKCpQ
X0RGR09wZXJhdGlvbl9FU3RTUykoRXhlY1N0YXRlKiwgU3RydWN0dXJlKiwgc2l6ZV90LCBzaXpl
X3QpOwpAQCAtMjI1LDYgKzIyNiw3IEBAIEpTQ2VsbCogREZHX09QRVJBVElPTiBvcGVyYXRpb25U
b1N0cmluZygKIEpTQ2VsbCogREZHX09QRVJBVElPTiBvcGVyYXRpb25NYWtlUm9wZTIoRXhlY1N0
YXRlKiwgSlNTdHJpbmcqLCBKU1N0cmluZyopOwogSlNDZWxsKiBERkdfT1BFUkFUSU9OIG9wZXJh
dGlvbk1ha2VSb3BlMyhFeGVjU3RhdGUqLCBKU1N0cmluZyosIEpTU3RyaW5nKiwgSlNTdHJpbmcq
KTsKIGNoYXIqIERGR19PUEVSQVRJT04gb3BlcmF0aW9uRmluZFN3aXRjaEltbVRhcmdldEZvckRv
dWJsZShFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSwgc2l6ZV90IHRhYmxlSW5kZXgpOworY2hh
ciogREZHX09QRVJBVElPTiBvcGVyYXRpb25Td2l0Y2hTdHJpbmcoRXhlY1N0YXRlKiwgc2l6ZV90
IHRhYmxlSW5kZXgsIEpTU3RyaW5nKik7CiAKIC8vIFRoaXMgbWV0aG9kIGlzIHVzZWQgdG8gbG9v
a3VwIGFuIGV4Y2VwdGlvbiBoYW5kZXIsIGtleWVkIGJ5IGZhdWx0TG9jYXRpb24sIHdoaWNoIGlz
CiAvLyB0aGUgcmV0dXJuIGxvY2F0aW9uIGZyb20gb25lIG9mIHRoZSBjYWxscyBvdXQgdG8gb25l
IG9mIHRoZSBoZWxwZXIgb3BlcmF0aW9ucyBhYm92ZS4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCShyZXZpc2lvbiAxNTE5NDQpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNDgxMSwxMiArNDgxMSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRT
d2l0Y2hDaGFyKE5vZGUKICAgICAgICAgCiAgICAgICAgIG9wMS51c2UoKTsKIAotICAgICAgICBE
RkdfVFlQRV9DSEVDSygKLSAgICAgICAgICAgIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKG9w
MUdQUiksIG5vZGUtPmNoaWxkMSgpLCBTcGVjU3RyaW5nLCBtX2ppdC5icmFuY2hQdHIoCi0gICAg
ICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLAotICAgICAgICAgICAgICAgIE1h
Y3JvQXNzZW1ibGVyOjpBZGRyZXNzKG9wMUdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSks
Ci0gICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQudm0o
KS0+c3RyaW5nU3RydWN0dXJlLmdldCgpKSkpOwotICAgICAgICAKKyAgICAgICAgc3BlY3VsYXRl
U3RyaW5nKG5vZGUtPmNoaWxkMSgpLCBvcDFHUFIpOwogICAgICAgICBlbWl0U3dpdGNoQ2hhclN0
cmluZ0p1bXAoZGF0YSwgb3AxR1BSLCB0ZW1wR1BSKTsKICAgICAgICAgbm9SZXN1bHQobm9kZSwg
VXNlQ2hpbGRyZW5DYWxsZWRFeHBsaWNpdGx5KTsKICAgICAgICAgYnJlYWs7CkBAIC00ODYxLDYg
KzQ4NTYsMjYxIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRTd2l0Y2hDaGFyKE5vZGUKICAg
ICB9CiB9CiAKK2Jvb2wgU3BlY3VsYXRpdmVKSVQ6OlN0cmluZ1N3aXRjaENhc2U6Om9wZXJhdG9y
PCgKKyAgICBjb25zdCBTcGVjdWxhdGl2ZUpJVDo6U3RyaW5nU3dpdGNoQ2FzZSYgb3RoZXIpIGNv
bnN0Cit7CisgICAgdW5zaWduZWQgbWluTGVuZ3RoID0gc3RkOjptaW4oc3RyaW5nLT5sZW5ndGgo
KSwgb3RoZXIuc3RyaW5nLT5sZW5ndGgoKSk7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IG1pbkxlbmd0aDsgKytpKSB7CisgICAgICAgIGlmIChzdHJpbmctPmF0KGkpID09IG90aGVyLnN0
cmluZy0+YXQoaSkpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgcmV0dXJuIHN0cmlu
Zy0+YXQoaSkgPCBvdGhlci5zdHJpbmctPmF0KGkpOworICAgIH0KKyAgICByZXR1cm4gc3RyaW5n
LT5sZW5ndGgoKSA8IG90aGVyLnN0cmluZy0+bGVuZ3RoKCk7Cit9CisKK25hbWVzcGFjZSB7CisK
K3N0cnVjdCBDaGFyYWN0ZXJDYXNlIHsKKyAgICBib29sIG9wZXJhdG9yPChjb25zdCBDaGFyYWN0
ZXJDYXNlJiBvdGhlcikgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBjaGFyYWN0ZXIgPCBv
dGhlci5jaGFyYWN0ZXI7CisgICAgfQorICAgIAorICAgIExDaGFyIGNoYXJhY3RlcjsKKyAgICB1
bnNpZ25lZCBiZWdpbjsKKyAgICB1bnNpZ25lZCBlbmQ7Cit9OworCit9CisKK3ZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmVtaXRCaW5hcnlTd2l0Y2hTdHJpbmdSZWN1cnNlKAorICAgIFN3aXRjaERhdGEq
IGRhdGEsIGNvbnN0IFZlY3RvcjxTcGVjdWxhdGl2ZUpJVDo6U3RyaW5nU3dpdGNoQ2FzZT4mIGNh
c2VzLAorICAgIHVuc2lnbmVkIG51bUNoZWNrZWQsIHVuc2lnbmVkIGJlZ2luLCB1bnNpZ25lZCBl
bmQsIEdQUlJlZyBidWZmZXIsIEdQUlJlZyBsZW5ndGgsCisgICAgR1BSUmVnIHRlbXAsIHVuc2ln
bmVkIGFscmVhZHlDaGVja2VkTGVuZ3RoLCBib29sIGNoZWNrZWRFeGFjdExlbmd0aCkKK3sKKyAg
ICBpZiAoYmVnaW4gPT0gZW5kKSB7CisgICAgICAgIGp1bXAoZGF0YS0+ZmFsbFRocm91Z2gsIEZv
cmNlSnVtcCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgCisgICAgdW5zaWduZWQgbWlu
TGVuZ3RoID0gY2FzZXNbYmVnaW5dLnN0cmluZy0+bGVuZ3RoKCk7CisgICAgdW5zaWduZWQgY29t
bW9uQ2hhcnMgPSBudW1DaGVja2VkOworICAgIGJvb2wgYWxsTGVuZ3Roc0VxdWFsID0gdHJ1ZTsK
KyAgICBmb3IgKHVuc2lnbmVkIGkgPSBiZWdpbiArIDE7IGkgPCBlbmQ7ICsraSkgeworICAgICAg
ICB1bnNpZ25lZCBteUNvbW1vbkNoYXJzID0gbnVtQ2hlY2tlZDsKKyAgICAgICAgZm9yICh1bnNp
Z25lZCBqID0gbnVtQ2hlY2tlZDsKKyAgICAgICAgICAgIGogPCBzdGQ6Om1pbihjYXNlc1tiZWdp
bl0uc3RyaW5nLT5sZW5ndGgoKSwgY2FzZXNbaV0uc3RyaW5nLT5sZW5ndGgoKSk7CisgICAgICAg
ICAgICArK2opIHsKKyAgICAgICAgICAgIGlmIChjYXNlc1tiZWdpbl0uc3RyaW5nLT5hdChqKSAh
PSBjYXNlc1tpXS5zdHJpbmctPmF0KGopKQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgbXlDb21tb25DaGFycysrOworICAgICAgICB9CisgICAgICAgIGNvbW1vbkNoYXJzID0g
c3RkOjptaW4oY29tbW9uQ2hhcnMsIG15Q29tbW9uQ2hhcnMpOworICAgICAgICBpZiAobWluTGVu
Z3RoICE9IGNhc2VzW2ldLnN0cmluZy0+bGVuZ3RoKCkpCisgICAgICAgICAgICBhbGxMZW5ndGhz
RXF1YWwgPSBmYWxzZTsKKyAgICAgICAgbWluTGVuZ3RoID0gc3RkOjptaW4obWluTGVuZ3RoLCBj
YXNlc1tpXS5zdHJpbmctPmxlbmd0aCgpKTsKKyAgICB9CisgICAgCisgICAgaWYgKGNoZWNrZWRF
eGFjdExlbmd0aCkgeworICAgICAgICBSRUxFQVNFX0FTU0VSVChhbHJlYWR5Q2hlY2tlZExlbmd0
aCA9PSBtaW5MZW5ndGgpOworICAgICAgICBSRUxFQVNFX0FTU0VSVChhbGxMZW5ndGhzRXF1YWwp
OworICAgIH0KKyAgICAKKyAgICBSRUxFQVNFX0FTU0VSVChtaW5MZW5ndGggPj0gY29tbW9uQ2hh
cnMpOworICAgIAorICAgIGlmIChhbHJlYWR5Q2hlY2tlZExlbmd0aCA8IG1pbkxlbmd0aCkgewor
ICAgICAgICBpZiAoYWxsTGVuZ3Roc0VxdWFsKQorICAgICAgICAgICAgYnJhbmNoMzIoTWFjcm9B
c3NlbWJsZXI6Ok5vdEVxdWFsLCBsZW5ndGgsIEltbTMyKG1pbkxlbmd0aCksIGRhdGEtPmZhbGxU
aHJvdWdoKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgYnJhbmNoMzIoTWFjcm9Bc3NlbWJs
ZXI6OkJlbG93LCBsZW5ndGgsIEltbTMyKG1pbkxlbmd0aCksIGRhdGEtPmZhbGxUaHJvdWdoKTsK
KyAgICB9CisgICAgCisgICAgZm9yICh1bnNpZ25lZCBpID0gbnVtQ2hlY2tlZDsgaSA8IGNvbW1v
bkNoYXJzOyArK2kpIHsKKyAgICAgICAgYnJhbmNoOCgKKyAgICAgICAgICAgIE1hY3JvQXNzZW1i
bGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYnVmZmVyLCBpKSwKKyAgICAg
ICAgICAgIEltbTMyKGNhc2VzW2JlZ2luXS5zdHJpbmctPmF0KGkpKSwgZGF0YS0+ZmFsbFRocm91
Z2gpOworICAgIH0KKyAgICAKKyAgICBpZiAobWluTGVuZ3RoID09IGNvbW1vbkNoYXJzKSB7Cisg
ICAgICAgIC8vIFRoaXMgaXMgdGhlIGNhc2Ugd2hlcmUgb25lIG9mIHRoZSBjYXNlcyBpcyBhIHBy
ZWZpeCBvZiBhbGwgb2YgdGhlIG90aGVyIGNhc2VzLgorICAgICAgICAvLyBXZSd2ZSBhbHJlYWR5
IGNoZWNrZWQgdGhhdCB0aGUgaW5wdXQgc3RyaW5nIGlzIGEgcHJlZml4IG9mIGFsbCBvZiB0aGUg
Y2FzZXMsCisgICAgICAgIC8vIHNvIHdlIGp1c3QgY2hlY2sgbGVuZ3RoIHRvIGp1bXAgdG8gdGhh
dCBjYXNlLgorICAgICAgICAKKyAgICAgICAgaWYgKCFBU1NFUlRTX0RJU0FCTEVEKSB7CisgICAg
ICAgICAgICBBU1NFUlQoY2FzZXNbYmVnaW5dLnN0cmluZy0+bGVuZ3RoKCkgPT0gY29tbW9uQ2hh
cnMpOworICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gYmVnaW4gKyAxOyBpIDwgZW5kOyAr
K2kpCisgICAgICAgICAgICAgICAgQVNTRVJUKGNhc2VzW2ldLnN0cmluZy0+bGVuZ3RoKCkgPiBj
b21tb25DaGFycyk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGlmIChhbGxMZW5ndGhz
RXF1YWwpIHsKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGVuZCA9PSBiZWdpbiArIDEpOwor
ICAgICAgICAgICAganVtcChjYXNlc1tiZWdpbl0udGFyZ2V0LCBGb3JjZUp1bXApOworICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBicmFuY2gzMihNYWNy
b0Fzc2VtYmxlcjo6RXF1YWwsIGxlbmd0aCwgSW1tMzIoY29tbW9uQ2hhcnMpLCBjYXNlc1tiZWdp
bl0udGFyZ2V0KTsKKyAgICAgICAgCisgICAgICAgIGVtaXRCaW5hcnlTd2l0Y2hTdHJpbmdSZWN1
cnNlKAorICAgICAgICAgICAgZGF0YSwgY2FzZXMsIGNvbW1vbkNoYXJzLCBiZWdpbiArIDEsIGVu
ZCwgYnVmZmVyLCBsZW5ndGgsIHRlbXAsIG1pbkxlbmd0aCwgZmFsc2UpOworICAgICAgICByZXR1
cm47CisgICAgfQorICAgIAorICAgIC8vIEF0IHRoaXMgcG9pbnQgd2Uga25vdyB0aGF0IHRoZSBz
dHJpbmcgaXMgbG9uZ2VyIHRoYW4gY29tbW9uQ2hhcnMsIGFuZCB3ZSd2ZSBvbmx5CisgICAgLy8g
dmVyaWZpZWQgY29tbW9uQ2hhcnMuIFVzZSBhIGJpbmFyeSBzd2l0Y2ggb24gdGhlIG5leHQgdW5j
aGVja2VkIGNoYXJhY3RlciwgaS5lLgorICAgIC8vIHN0cmluZ1tjb21tb25DaGFyc10uCisgICAg
CisgICAgQVNTRVJUKGVuZCA+PSBiZWdpbiArIDIpOworICAgIAorICAgIG1faml0LmxvYWQ4KE1h
Y3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2UsIGNvbW1vbkNoYXJzKSwgdGVtcCk7CisgICAgCisg
ICAgVmVjdG9yPENoYXJhY3RlckNhc2U+IGNoYXJhY3RlckNhc2VzOworICAgIENoYXJhY3RlckNh
c2UgY3VycmVudENhc2U7CisgICAgY3VycmVudENhc2UuY2hhcmFjdGVyID0gY2FzZXNbYmVnaW5d
LnN0cmluZy0+YXQoY29tbW9uQ2hhcnMpOworICAgIGN1cnJlbnRDYXNlLmJlZ2luID0gYmVnaW47
CisgICAgY3VycmVudENhc2UuZW5kID0gYmVnaW4gKyAxOworICAgIGZvciAodW5zaWduZWQgaSA9
IGJlZ2luICsgMTsgaSA8IGVuZDsgKytpKSB7CisgICAgICAgIGN1cnJlbnRDYXNlLmVuZCA9IGk7
CisgICAgICAgIGlmIChjYXNlc1tpXS5zdHJpbmctPmF0KGNvbW1vbkNoYXJzKSAhPSBjdXJyZW50
Q2FzZS5jaGFyYWN0ZXIpIHsKKyAgICAgICAgICAgIGNoYXJhY3RlckNhc2VzLmFwcGVuZChjdXJy
ZW50Q2FzZSk7CisgICAgICAgICAgICBjdXJyZW50Q2FzZS5jaGFyYWN0ZXIgPSBjYXNlc1tpXS5z
dHJpbmctPmF0KGNvbW1vbkNoYXJzKTsKKyAgICAgICAgICAgIGN1cnJlbnRDYXNlLmJlZ2luID0g
aTsKKyAgICAgICAgICAgIGN1cnJlbnRDYXNlLmVuZCA9IGkgKyAxOworICAgICAgICB9CisgICAg
fQorICAgIGNoYXJhY3RlckNhc2VzLmFwcGVuZChjdXJyZW50Q2FzZSk7CisgICAgCisgICAgVmVj
dG9yPGludDY0X3Q+IGNoYXJhY3RlckNhc2VWYWx1ZXM7CisgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IGNoYXJhY3RlckNhc2VzLnNpemUoKTsgKytpKQorICAgICAgICBjaGFyYWN0ZXJDYXNl
VmFsdWVzLmFwcGVuZChjaGFyYWN0ZXJDYXNlc1tpXS5jaGFyYWN0ZXIpOworICAgIAorICAgIEJp
bmFyeVN3aXRjaCBiaW5hcnlTd2l0Y2godGVtcCwgY2hhcmFjdGVyQ2FzZVZhbHVlcywgSW50MzIp
OworICAgIHdoaWxlIChiaW5hcnlTd2l0Y2guYWR2YW5jZShtX2ppdCkpIHsKKyAgICAgICAgY29u
c3QgQ2hhcmFjdGVyQ2FzZSYgbXlDYXNlID0gY2hhcmFjdGVyQ2FzZXNbYmluYXJ5U3dpdGNoLmNh
c2VJbmRleCgpXTsKKyAgICAgICAgZW1pdEJpbmFyeVN3aXRjaFN0cmluZ1JlY3Vyc2UoCisgICAg
ICAgICAgICBkYXRhLCBjYXNlcywgY29tbW9uQ2hhcnMgKyAxLCBteUNhc2UuYmVnaW4sIG15Q2Fz
ZS5lbmQsIGJ1ZmZlciwgbGVuZ3RoLAorICAgICAgICAgICAgdGVtcCwgbWluTGVuZ3RoLCBhbGxM
ZW5ndGhzRXF1YWwpOworICAgIH0KKyAgICAKKyAgICBhZGRCcmFuY2goYmluYXJ5U3dpdGNoLmZh
bGxUaHJvdWdoKCksIGRhdGEtPmZhbGxUaHJvdWdoKTsKK30KKwordm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6ZW1pdFN3aXRjaFN0cmluZ09uU3RyaW5nKFN3aXRjaERhdGEqIGRhdGEsIEdQUlJlZyBzdHJp
bmcpCit7CisgICAgZGF0YS0+ZGlkVXNlSnVtcFRhYmxlID0gdHJ1ZTsKKyAgICAKKyAgICBib29s
IGNhbkRvQmluYXJ5U3dpdGNoID0gdHJ1ZTsKKyAgICB1bnNpZ25lZCB0b3RhbExlbmd0aCA9IDA7
CisgICAgCisgICAgZm9yICh1bnNpZ25lZCBpID0gZGF0YS0+Y2FzZXMuc2l6ZSgpOyBpLS07KSB7
CisgICAgICAgIFN0cmluZ0ltcGwqIHN0cmluZyA9IGRhdGEtPmNhc2VzW2ldLnZhbHVlLnN0cmlu
Z0ltcGwoKTsKKyAgICAgICAgaWYgKCFzdHJpbmctPmlzOEJpdCgpKSB7CisgICAgICAgICAgICBj
YW5Eb0JpbmFyeVN3aXRjaCA9IGZhbHNlOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0K
KyAgICAgICAgaWYgKHN0cmluZy0+bGVuZ3RoKCkgPiBPcHRpb25zOjptYXhpbXVtQmluYXJ5U3Ry
aW5nU3dpdGNoQ2FzZUxlbmd0aCgpKSB7CisgICAgICAgICAgICBjYW5Eb0JpbmFyeVN3aXRjaCA9
IGZhbHNlOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgdG90YWxMZW5n
dGggKz0gc3RyaW5nLT5sZW5ndGgoKTsKKyAgICB9CisgICAgCisgICAgaWYgKCFjYW5Eb0JpbmFy
eVN3aXRjaCB8fCB0b3RhbExlbmd0aCA+IE9wdGlvbnM6Om1heGltdW1CaW5hcnlTdHJpbmdTd2l0
Y2hUb3RhbExlbmd0aCgpKSB7CisgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7CisgICAgICAgIGNh
bGxPcGVyYXRpb24oCisgICAgICAgICAgICBvcGVyYXRpb25Td2l0Y2hTdHJpbmcsIHN0cmluZywg
ZGF0YS0+c3dpdGNoVGFibGVJbmRleCwgc3RyaW5nKTsKKyAgICAgICAgbV9qaXQuanVtcChzdHJp
bmcpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIAorICAgIEdQUlRlbXBvcmFyeSBsZW5n
dGgodGhpcyk7CisgICAgR1BSVGVtcG9yYXJ5IHRlbXAodGhpcyk7CisgICAgCisgICAgR1BSUmVn
IGxlbmd0aEdQUiA9IGxlbmd0aC5ncHIoKTsKKyAgICBHUFJSZWcgdGVtcEdQUiA9IHRlbXAuZ3By
KCk7CisgICAgCisgICAgbV9qaXQubG9hZDMyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHN0cmlu
ZywgSlNTdHJpbmc6Om9mZnNldE9mTGVuZ3RoKCkpLCBsZW5ndGhHUFIpOworICAgIG1faml0Lmxv
YWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc3RyaW5nLCBKU1N0cmluZzo6b2Zmc2V0T2ZW
YWx1ZSgpKSwgc3RyaW5nKTsKKyAgICAKKyAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcExpc3Qgc2xv
d0Nhc2U7CisgICAgc2xvd0Nhc2VzLmFwcGVuZChtX2ppdC5icmFuY2hUZXN0UHRyKE1hY3JvQXNz
ZW1ibGVyOjpaZXJvLCBzdHJpbmcpKTsKKyAgICBzbG93Q2FzZXMuYXBwZW5kKG1faml0LmJyYW5j
aFRlc3QzMigKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Olplcm8sCisgICAgICAgIE1hY3JvQXNz
ZW1ibGVyOjpBZGRyZXNzKHN0cmluZywgU3RyaW5nSW1wbDo6ZmxhZ3NPZmZzZXQoKSksCisgICAg
ICAgIFRydXN0ZWRJbW0zMihTdHJpbmdJbXBsOjpmbGFnSXM4Qml0KCkpKSk7CisgICAgCisgICAg
bV9qaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzdHJpbmcsIFN0cmluZ0ltcGw6
OmRhdGFPZmZzZXQoKSksIHN0cmluZyk7CisgICAgCisgICAgVmVjdG9yPFN0cmluZ1N3aXRjaENh
c2U+IGNhc2VzOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBkYXRhLT5jYXNlcy5zaXpl
KCk7ICsraSkgeworICAgICAgICBjYXNlcy5hcHBlbmQoCisgICAgICAgICAgICBTdHJpbmdTd2l0
Y2hDYXNlKGRhdGEtPmNhc2VzW2ldLnZhbHVlLnN0cmluZ0ltcGwoKSwgZGF0YS0+Y2FzZXNbaV0u
dGFyZ2V0KSk7CisgICAgfQorICAgIAorICAgIHN0ZDo6c29ydChjYXNlcy5iZWdpbigpLCBjYXNl
cy5lbmQoKSk7CisgICAgCisgICAgZW1pdEJpbmFyeVN3aXRjaFN0cmluZ1JlY3Vyc2UoCisgICAg
ICAgIGRhdGEsIGNhc2VzLCAwLCAwLCBjYXNlcy5zaXplKCksIHN0cmluZywgbGVuZ3RoR1BSLCB0
ZW1wR1BSLCAwLCBmYWxzZSk7CisgICAgCisgICAgc2xvd0Nhc2VzLmxpbmsoJm1faml0KTsKKyAg
ICBzaWxlbnRTcGlsbEFsbFJlZ2lzdGVycyhzdHJpbmcpOworICAgIGNhbGxPcGVyYXRpb24ob3Bl
cmF0aW9uU3dpdGNoU3RyaW5nLCBzdHJpbmcsIGRhdGEtPnN3aXRjaFRhYmxlSW5kZXgsIHN0cmlu
Zyk7CisgICAgc2lsZW50RmlsbEFsbFJlZ2lzdGVycyhzdHJpbmcpOworICAgIG1faml0Lmp1bXAo
c3RyaW5nKTsKK30KKwordm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdFN3aXRjaFN0cmluZyhOb2Rl
KiBub2RlLCBTd2l0Y2hEYXRhKiBkYXRhKQoreworICAgIHN3aXRjaCAobm9kZS0+Y2hpbGQxKCku
dXNlS2luZCgpKSB7CisgICAgY2FzZSBTdHJpbmdVc2U6IHsKKyAgICAgICAgU3BlY3VsYXRlQ2Vs
bE9wZXJhbmQgb3AxKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgCisgICAgICAgIEdQ
UlJlZyBvcDFHUFIgPSBvcDEuZ3ByKCk7CisgICAgICAgIAorICAgICAgICBvcDEudXNlKCk7CisK
KyAgICAgICAgc3BlY3VsYXRlU3RyaW5nKG5vZGUtPmNoaWxkMSgpLCBvcDFHUFIpOworICAgICAg
ICBlbWl0U3dpdGNoU3RyaW5nT25TdHJpbmcoZGF0YSwgb3AxR1BSKTsKKyAgICAgICAgbm9SZXN1
bHQobm9kZSwgVXNlQ2hpbGRyZW5DYWxsZWRFeHBsaWNpdGx5KTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgfQorICAgICAgICAKKyAgICBjYXNlIFVudHlwZWRVc2U6IHsKKyAgICAgICAgSlNWYWx1ZU9w
ZXJhbmQgb3AxKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgCisgICAgICAgIEpTVmFs
dWVSZWdzIG9wMVJlZ3MgPSBvcDEuanNWYWx1ZVJlZ3MoKTsKKyAgICAgICAgCisgICAgICAgIG9w
MS51c2UoKTsKKyAgICAgICAgCisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICAgICAgYWRkQnJhbmNo
KAorICAgICAgICAgICAgbV9qaXQuYnJhbmNoVGVzdDY0KAorICAgICAgICAgICAgICAgIE1hY3Jv
QXNzZW1ibGVyOjpOb25aZXJvLCBvcDFSZWdzLmdwcigpLCBHUFJJbmZvOjp0YWdNYXNrUmVnaXN0
ZXIpLAorICAgICAgICAgICAgZGF0YS0+ZmFsbFRocm91Z2gpOworI2Vsc2UKKyAgICAgICAgYWRk
QnJhbmNoKAorICAgICAgICAgICAgbV9qaXQuYnJhbmNoMzIoCisgICAgICAgICAgICAgICAgTWFj
cm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBvcDFSZWdzLnRhZ0dQUigpLCBUcnVzdGVkSW1tMzIoSlNW
YWx1ZTo6Q2VsbFRhZykpLAorICAgICAgICAgICAgZGF0YS0+ZmFsbFRocm91Z2gpOworI2VuZGlm
CisgICAgICAgIAorICAgICAgICBhZGRCcmFuY2goCisgICAgICAgICAgICBtX2ppdC5icmFuY2hQ
dHIoCisgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLAorICAgICAgICAg
ICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKG9wMVJlZ3MucGF5bG9hZEdQUigpLCBKU0Nl
bGw6OnN0cnVjdHVyZU9mZnNldCgpKSwKKyAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6
VHJ1c3RlZEltbVB0cihtX2ppdC52bSgpLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKSwKKyAgICAg
ICAgICAgIGRhdGEtPmZhbGxUaHJvdWdoKTsKKyAgICAgICAgCisgICAgICAgIGVtaXRTd2l0Y2hT
dHJpbmdPblN0cmluZyhkYXRhLCBvcDFSZWdzLnBheWxvYWRHUFIoKSk7CisgICAgICAgIG5vUmVz
dWx0KG5vZGUsIFVzZUNoaWxkcmVuQ2FsbGVkRXhwbGljaXRseSk7CisgICAgICAgIGJyZWFrOwor
ICAgIH0KKyAgICAgICAgCisgICAgZGVmYXVsdDoKKyAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9U
X1JFQUNIRUQoKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorfQorCiB2b2lkIFNwZWN1bGF0aXZl
SklUOjplbWl0U3dpdGNoKE5vZGUqIG5vZGUpCiB7CiAgICAgU3dpdGNoRGF0YSogZGF0YSA9IG5v
ZGUtPnN3aXRjaERhdGEoKTsKQEAgLTQ4NzIsMTAgKzUxMjIsMjAgQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6ZW1pdFN3aXRjaChOb2RlKiBubwogICAgIGNhc2UgU3dpdGNoQ2hhcjogewogICAgICAg
ICBlbWl0U3dpdGNoQ2hhcihub2RlLCBkYXRhKTsKICAgICAgICAgcmV0dXJuOworICAgIH0KKyAg
ICBjYXNlIFN3aXRjaFN0cmluZzogeworICAgICAgICBlbWl0U3dpdGNoU3RyaW5nKG5vZGUsIGRh
dGEpOworICAgICAgICByZXR1cm47CiAgICAgfSB9CiAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JF
QUNIRUQoKTsKIH0KIAordm9pZCBTcGVjdWxhdGl2ZUpJVDo6YWRkQnJhbmNoKGNvbnN0IE1hY3Jv
QXNzZW1ibGVyOjpKdW1wTGlzdCYganVtcCwgQmxvY2tJbmRleCBkZXN0aW5hdGlvbikKK3sKKyAg
ICBmb3IgKHVuc2lnbmVkIGkgPSBqdW1wLmp1bXBzKCkuc2l6ZSgpOyBpLS07KQorICAgICAgICBh
ZGRCcmFuY2goanVtcC5qdW1wcygpW2ldLCBkZXN0aW5hdGlvbik7Cit9CisKIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmxpbmtCcmFuY2hlcygpCiB7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBt
X2JyYW5jaGVzLnNpemUoKTsgKytpKSB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklULmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCShyZXZpc2lvbiAxNTE5NDQpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgJKHdvcmtpbmcgY29weSkKQEAgLTE3
NzAsNiArMTc3MCwxMiBAQCBwdWJsaWM6CiAjZW5kaWYKICAgICAKICAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBULCB0eXBlbmFtZSBVPgorICAgIHZvaWQgYnJhbmNoOChKSVRDb21waWxlcjo6UmVsYXRp
b25hbENvbmRpdGlvbiBjb25kLCBUIGxlZnQsIFUgcmlnaHQsIEJsb2NrSW5kZXggZGVzdGluYXRp
b24pCisgICAgeworICAgICAgICByZXR1cm4gYWRkQnJhbmNoKG1faml0LmJyYW5jaDgoY29uZCwg
bGVmdCwgcmlnaHQpLCBkZXN0aW5hdGlvbik7CisgICAgfQorICAgIAorICAgIHRlbXBsYXRlPHR5
cGVuYW1lIFQsIHR5cGVuYW1lIFU+CiAgICAgdm9pZCBicmFuY2hQdHIoSklUQ29tcGlsZXI6OlJl
bGF0aW9uYWxDb25kaXRpb24gY29uZCwgVCBsZWZ0LCBVIHJpZ2h0LCBCbG9ja0luZGV4IGRlc3Rp
bmF0aW9uKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkZEJyYW5jaChtX2ppdC5icmFuY2hQdHIo
Y29uZCwgbGVmdCwgcmlnaHQpLCBkZXN0aW5hdGlvbik7CkBAIC0xODE1LDYgKzE4MjEsNyBAQCBw
dWJsaWM6CiAgICAgewogICAgICAgICBtX2JyYW5jaGVzLmFwcGVuZChCcmFuY2hSZWNvcmQoanVt
cCwgZGVzdGluYXRpb24pKTsKICAgICB9CisgICAgdm9pZCBhZGRCcmFuY2goY29uc3QgTWFjcm9B
c3NlbWJsZXI6Okp1bXBMaXN0JiBqdW1wLCBCbG9ja0luZGV4IGRlc3RpbmF0aW9uKTsKIAogICAg
IHZvaWQgbGlua0JyYW5jaGVzKCk7CiAKQEAgLTE4NjIsMTAgKzE4NjksMzIgQEAgcHVibGljOgog
ICAgIHZvaWQgY29tcGlsZVN0cmluZ0lkZW50RXF1YWxpdHkoTm9kZSopOwogICAgIHZvaWQgZW1p
dE9iamVjdE9yT3RoZXJCcmFuY2goRWRnZSB2YWx1ZSwgQmxvY2tJbmRleCB0YWtlbiwgQmxvY2tJ
bmRleCBub3RUYWtlbik7CiAgICAgdm9pZCBlbWl0QnJhbmNoKE5vZGUqKTsKKyAgICAKKyAgICBz
dHJ1Y3QgU3RyaW5nU3dpdGNoQ2FzZSB7CisgICAgICAgIFN3aXRjaFN3aXRjaENhc2UoKSB7IH0K
KyAgICAgICAgCisgICAgICAgIFN0cmluZ1N3aXRjaENhc2UoU3RyaW5nSW1wbCogc3RyaW5nLCBC
bG9ja0luZGV4IHRhcmdldCkKKyAgICAgICAgICAgIDogc3RyaW5nKHN0cmluZykKKyAgICAgICAg
ICAgICwgdGFyZ2V0KHRhcmdldCkKKyAgICAgICAgeworICAgICAgICB9CisgICAgICAgIAorICAg
ICAgICBib29sIG9wZXJhdG9yPChjb25zdCBTdHJpbmdTd2l0Y2hDYXNlJiBvdGhlcikgY29uc3Q7
CisgICAgICAgIAorICAgICAgICBTdHJpbmdJbXBsKiBzdHJpbmc7CisgICAgICAgIEJsb2NrSW5k
ZXggdGFyZ2V0OworICAgIH07CisgICAgCiAgICAgdm9pZCBlbWl0U3dpdGNoSW50SnVtcChTd2l0
Y2hEYXRhKiwgR1BSUmVnIHZhbHVlLCBHUFJSZWcgc2NyYXRjaCk7CiAgICAgdm9pZCBlbWl0U3dp
dGNoSW1tKE5vZGUqLCBTd2l0Y2hEYXRhKik7CiAgICAgdm9pZCBlbWl0U3dpdGNoQ2hhclN0cmlu
Z0p1bXAoU3dpdGNoRGF0YSosIEdQUlJlZyB2YWx1ZSwgR1BSUmVnIHNjcmF0Y2gpOwogICAgIHZv
aWQgZW1pdFN3aXRjaENoYXIoTm9kZSosIFN3aXRjaERhdGEqKTsKKyAgICB2b2lkIGVtaXRCaW5h
cnlTd2l0Y2hTdHJpbmdSZWN1cnNlKAorICAgICAgICBTd2l0Y2hEYXRhKiwgY29uc3QgVmVjdG9y
PFN0cmluZ1N3aXRjaENhc2U+JiwgdW5zaWduZWQgbnVtQ2hlY2tlZCwKKyAgICAgICAgdW5zaWdu
ZWQgYmVnaW4sIHVuc2lnbmVkIGVuZCwgR1BSUmVnIGJ1ZmZlciwgR1BSUmVnIGxlbmd0aCwgR1BS
UmVnIHRlbXAsCisgICAgICAgIHVuc2lnbmVkIGFscmVhZHlDaGVja2VkTGVuZ3RoLCBib29sIGNo
ZWNrZWRFeGFjdExlbmd0aCk7CisgICAgdm9pZCBlbWl0U3dpdGNoU3RyaW5nT25TdHJpbmcoU3dp
dGNoRGF0YSosIEdQUlJlZyBzdHJpbmcpOworICAgIHZvaWQgZW1pdFN3aXRjaFN0cmluZyhOb2Rl
KiwgU3dpdGNoRGF0YSopOwogICAgIHZvaWQgZW1pdFN3aXRjaChOb2RlKik7CiAgICAgCiAgICAg
dm9pZCBjb21waWxlVG9TdHJpbmdPbkNlbGwoTm9kZSopOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL09wdGlvbnMuaAkocmV2aXNpb24gMTUxOTQ0KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDcsNiArMTA3
LDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgLyogRGVwdGggb2YgaW5saW5lIHN0YWNrLCBzbyAx
ID0gbm8gaW5saW5pbmcsIDIgPSBvbmUgbGV2ZWwsIGV0Yy4gKi8gXAogICAgIHYodW5zaWduZWQs
IG1heGltdW1JbmxpbmluZ0RlcHRoLCA1KSBcCiAgICAgXAorICAgIHYodW5zaWduZWQsIG1heGlt
dW1CaW5hcnlTdHJpbmdTd2l0Y2hDYXNlTGVuZ3RoLCA1MCkgXAorICAgIHYodW5zaWduZWQsIG1h
eGltdW1CaW5hcnlTdHJpbmdTd2l0Y2hUb3RhbExlbmd0aCwgMjAwMCkgXAorICAgIFwKICAgICB2
KGludDMyLCB0aHJlc2hvbGRGb3JKSVRBZnRlcldhcm1VcCwgMTAwKSBcCiAgICAgdihpbnQzMiwg
dGhyZXNob2xkRm9ySklUU29vbiwgMTAwKSBcCiAgICAgXAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>205421</attachid>
            <date>2013-06-25 13:40:25 -0700</date>
            <delta_ts>2013-06-25 21:02:32 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>78110</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTUxOTcwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDkwIEBA
CisyMDEzLTA2LTI1ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
Zm91cnRoVGllcjogREZHIHNob3VsZCBzdXBwb3J0IHN3aXRjaF9zdHJpbmcKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExNzk2NworCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAKKyAgICAgICAgQWRkIGEgcmV1c2Fi
bGUgYmluYXJ5IHN3aXRjaCBjcmVhdG9yLgorICAgICAgICAKKyAgICAgICAgSW1wbGVtZW50IHN3
aXRjaCBvbiBzdHJpbmcgdXNpbmcgdGhyZWUgbW9kZXM6CisgICAgICAgIAorICAgICAgICAtIEJp
bmFyeSBzd2l0Y2ggb24gU3RyaW5nSW1wbCogaW4gdGhlIGNhc2Ugb2YgaWRlbnRpZmllcnMuCisg
ICAgICAgIAorICAgICAgICAtIFRyaWUgb2YgYmluYXJ5IHN3aXRjaGVzIG9uIGNoYXJhY3RlcnMg
aW4gdGhlIGNhc2Ugb2YgYSBub3QtdG9vLWJpZworICAgICAgICAgIHN3aXRjaCBvdmVyIG5vdC10
b28tYmlnIDgtYml0IHN0cmluZ3MuCisgICAgICAgIAorICAgICAgICAtIEhhc2ggbG9va3VwIGlm
IGFsbCBlbHNlIGZhaWxzLgorICAgICAgICAKKyAgICAgICAgQW55d2hlcmUgZnJvbSBhIDUlIHRv
IDIuNXggc3BlZWQtdXAgb24gbWljcm9iZW5jaG1hcmtzIHRoYXQgc3RyZXNzCisgICAgICAgIHN0
cmluZyBzd2l0Y2hlcy4KKworICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2o6CisgICAgICAgICogYnl0ZWNvZGUvSnVtcFRhYmxlLmg6CisgICAgICAgIChT
dHJpbmdKdW1wVGFibGUpOgorICAgICAgICAoSlNDOjpTdHJpbmdKdW1wVGFibGU6OmNsZWFyKToK
KyAgICAgICAgKiBkZmcvREZHQmFja3dhcmRzUHJvcGFnYXRpb25QaGFzZS5jcHA6CisgICAgICAg
IChKU0M6OkRGRzo6QmFja3dhcmRzUHJvcGFnYXRpb25QaGFzZTo6cHJvcGFnYXRlKToKKyAgICAg
ICAgKiBkZmcvREZHQmluYXJ5U3dpdGNoLmNwcDogQWRkZWQuCisgICAgICAgIChERkcpOgorICAg
ICAgICAoSlNDOjpERkc6OkJpbmFyeVN3aXRjaDo6QmluYXJ5U3dpdGNoKToKKyAgICAgICAgKEpT
Qzo6REZHOjpCaW5hcnlTd2l0Y2g6OmFkdmFuY2UpOgorICAgICAgICAoSlNDOjpERkc6OkJpbmFy
eVN3aXRjaDo6YnVpbGQpOgorICAgICAgICAqIGRmZy9ERkdCaW5hcnlTd2l0Y2guaDogQWRkZWQu
CisgICAgICAgIChERkcpOgorICAgICAgICAoQmluYXJ5U3dpdGNoKToKKyAgICAgICAgKEpTQzo6
REZHOjpCaW5hcnlTd2l0Y2g6OmNhc2VJbmRleCk6CisgICAgICAgIChKU0M6OkRGRzo6QmluYXJ5
U3dpdGNoOjpjYXNlVmFsdWUpOgorICAgICAgICAoSlNDOjpERkc6OkJpbmFyeVN3aXRjaDo6ZmFs
bFRocm91Z2gpOgorICAgICAgICAoSlNDOjpERkc6OkJpbmFyeVN3aXRjaDo6Q2FzZTo6Q2FzZSk6
CisgICAgICAgIChDYXNlKToKKyAgICAgICAgKEpTQzo6REZHOjpCaW5hcnlTd2l0Y2g6OkNhc2U6
Om9wZXJhdG9yPCk6CisgICAgICAgIChKU0M6OkRGRzo6QmluYXJ5U3dpdGNoOjpCcmFuY2hDb2Rl
OjpCcmFuY2hDb2RlKToKKyAgICAgICAgKEJyYW5jaENvZGUpOgorICAgICAgICAqIGRmZy9ERkdC
eXRlQ29kZVBhcnNlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OnBh
cnNlQmxvY2spOgorICAgICAgICAqIGRmZy9ERkdDYXBhYmlsaXRpZXMuY3BwOgorICAgICAgICAo
SlNDOjpERkc6OmNhcGFiaWxpdHlMZXZlbCk6CisgICAgICAgICogZGZnL0RGR0ZpeHVwUGhhc2Uu
Y3BwOgorICAgICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6OmZpeHVwTm9kZSk6CisgICAgICAg
ICogZGZnL0RGR0pJVENvbXBpbGVyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpKSVRDb21waWxl
cjo6bGluayk6CisgICAgICAgICogZGZnL0RGR0xhenlKU1ZhbHVlLmNwcDoKKyAgICAgICAgKEpT
Qzo6REZHOjpMYXp5SlNWYWx1ZTo6Z2V0VmFsdWUpOgorICAgICAgICAoSlNDOjpERkc6OmVxdWFs
VG9TdHJpbmdJbXBsKToKKyAgICAgICAgKERGRyk6CisgICAgICAgIChKU0M6OkRGRzo6TGF6eUpT
VmFsdWU6OnN0cmljdEVxdWFsKToKKyAgICAgICAgKEpTQzo6REZHOjpMYXp5SlNWYWx1ZTo6ZHVt
cCk6CisgICAgICAgICogZGZnL0RGR0xhenlKU1ZhbHVlLmg6CisgICAgICAgIChKU0M6OkRGRzo6
TGF6eUpTVmFsdWU6Omtub3duU3RyaW5nSW1wbCk6CisgICAgICAgIChMYXp5SlNWYWx1ZSk6Cisg
ICAgICAgIChKU0M6OkRGRzo6TGF6eUpTVmFsdWU6OnN0cmluZ0ltcGwpOgorICAgICAgICAoSlND
OjpERkc6OkxhenlKU1ZhbHVlOjpzd2l0Y2hMb29rdXBWYWx1ZSk6CisgICAgICAgICogZGZnL0RG
R05vZGUuY3BwOgorICAgICAgICAoV1RGOjpwcmludEludGVybmFsKToKKyAgICAgICAgKiBkZmcv
REZHTm9kZS5oOgorICAgICAgICAqIGRmZy9ERkdPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKiBk
ZmcvREZHT3BlcmF0aW9ucy5oOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHA6
CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmVtaXRTd2l0Y2hDaGFyKToKKyAg
ICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6U3RyaW5nU3dpdGNoQ2FzZTo6b3BlcmF0
b3I8KToKKyAgICAgICAgKERGRyk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6
OmVtaXRCaW5hcnlTd2l0Y2hTdHJpbmdSZWN1cnNlKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVj
dWxhdGl2ZUpJVDo6ZW1pdFN3aXRjaFN0cmluZ09uU3RyaW5nKToKKyAgICAgICAgKEpTQzo6REZH
OjpTcGVjdWxhdGl2ZUpJVDo6ZW1pdFN3aXRjaFN0cmluZyk6CisgICAgICAgIChKU0M6OkRGRzo6
U3BlY3VsYXRpdmVKSVQ6OmVtaXRTd2l0Y2gpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0
aXZlSklUOjphZGRCcmFuY2gpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oOgor
ICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjYWxsT3BlcmF0aW9uKToKKyAgICAg
ICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6YnJhbmNoOCk6CisgICAgICAgIChTcGVjdWxh
dGl2ZUpJVCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OlN0cmluZ1N3aXRj
aENhc2U6OlN0cmluZ1N3aXRjaENhc2UpOgorICAgICAgICAoU3RyaW5nU3dpdGNoQ2FzZSk6Cisg
ICAgICAgICogZnRsL0ZUTExvd2VyREZHVG9MTFZNLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpM
b3dlckRGR1RvTExWTTo6Y29tcGlsZVN3aXRjaCk6CisgICAgICAgICogcnVudGltZS9PcHRpb25z
Lmg6CisgICAgICAgIChKU0MpOgorCiAyMDEzLTA2LTI0ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0Bh
cHBsZS5jb20+CiAKICAgICAgICAgZm91cnRoVGllcjogQ291bnQgZXh0ZXJuYWwgbWVtb3J5IHVz
YWdlIHRvd2FyZHMgaGVhcCBmb290cHJpbnQKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCShyZXZpc2lvbiAxNTE5NDQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTY3LDkg
KzE2Nyw5IEBACiAJCTBGNDY4MEQzMTRCQkQxNjcwMEJGRTI3MiAvKiBMTEludERhdGEuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDY4MENGMTRCQkIz
RDEwMEJGRTI3MiAvKiBMTEludERhdGEuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQkwRjQ2ODBENDE0QkJEMjQ5MDBCRkUyNzIgLyogSG9zdENhbGxS
ZXR1cm5WYWx1ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwRjQ2ODBEMDE0QkJDNUY4MDBCRkUyNzIgLyogSG9zdENhbGxSZXR1cm5WYWx1ZS5jcHAg
Ki87IH07CiAJCTBGNDY4MEQ1MTRCQkQyNEIwMEJGRTI3MiAvKiBIb3N0Q2FsbFJldHVyblZhbHVl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQ2ODBE
MTE0QkJDNUY4MDBCRkUyNzIgLyogSG9zdENhbGxSZXR1cm5WYWx1ZS5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGNDZFNkI5MTc2Rjg5REIwMEUx
Rjc1NSAvKiBGVExTd2l0Y2hDYXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwRjQ2RTZCNzE3NkY4OUQ5MDBFMUY3NTUgLyogRlRMU3dpdGNoQ2FzZS5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGNDZF
NkM1MTc2RjhBNUUwMEUxRjc1NSAvKiBERkdMYXp5SlNWYWx1ZS5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQ2RTZDMjE3NkY4QTVCMDBFMUY3NTUg
LyogREZHTGF6eUpTVmFsdWUuY3BwICovOyB9OwogCQkwRjQ2RTZDNjE3NkY4QTYwMDBFMUY3NTUg
LyogREZHTGF6eUpTVmFsdWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDBGNDZFNkMzMTc2RjhBNUIwMEUxRjc1NSAvKiBERkdMYXp5SlNWYWx1ZS5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTBGNDZFNkI5
MTc2Rjg5REIwMEUxRjc1NSAvKiBGVExTd2l0Y2hDYXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQ2RTZCNzE3NkY4OUQ5MDBFMUY3NTUgLyogRlRM
U3dpdGNoQ2FzZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTBGNDkzQUZBMTZEMENBRDMwMDg0NTA4QiAvKiBTb3VyY2VQcm92aWRlci5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQ5M0FGODE2RDBD
QUQxMDA4NDUwOEIgLyogU291cmNlUHJvdmlkZXIuY3BwICovOyB9OwogCQkwRjRFMUEwRTE3M0FF
RERDMDA3RUUyRDMgLyogSW50ZW5kZWRTdHJ1Y3R1cmVDaGFpbi5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjRFMUEwQzE3M0FFRERDMDA3RUUyRDMg
LyogSW50ZW5kZWRTdHJ1Y3R1cmVDaGFpbi5jcHAgKi87IH07CiAJCTBGNEUxQTBGMTczQUVEREMw
MDdFRTJEMyAvKiBJbnRlbmRlZFN0cnVjdHVyZUNoYWluLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjRFMUEwRDE3M0FFRERDMDA3RUUyRDMgLyogSW50
ZW5kZWRTdHJ1Y3R1cmVDaGFpbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CkBAIC0zMTEsNiArMzExLDggQEAKIAkJMEZDODE1MTUxNDA1MTE5QjAwQ0ZB
NjAzIC8qIFZUYWJsZVNwZWN0cnVtLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwRkM4MTUxNDE0MDUxMThEMDBDRkE2MDMgLyogVlRhYmxlU3BlY3RydW0u
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRkM4
MTUxNjE0MDUxMUI1MDBDRkE2MDMgLyogVlRhYmxlU3BlY3RydW0uY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZDODE1MTIxNDA1MTE4NjAwQ0ZBNjAz
IC8qIFZUYWJsZVNwZWN0cnVtLmNwcCAqLzsgfTsKIAkJMEZDQ0FFNDUxNkQwQ0Y3NDAwRDBDNjVC
IC8qIFBhcnNlckVycm9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwRkNDQUU0MzE2RDBDRjZFMDBEMEM2NUIgLyogUGFyc2VyRXJyb3IuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRkQyODEyNzE3Nzkz
QkU1MDBCQkIwRjMgLyogREZHQmluYXJ5U3dpdGNoLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRDI4MTI1MTc3OTNCRTMwMEJCQjBGMyAvKiBERkdC
aW5hcnlTd2l0Y2guY3BwICovOyB9OworCQkwRkQyODEyODE3NzkzQkU3MDBCQkIwRjMgLyogREZH
QmluYXJ5U3dpdGNoLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwRkQyODEyNjE3NzkzQkUzMDBCQkIwRjMgLyogREZHQmluYXJ5U3dpdGNoLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEZEMkM5MjQxNkQw
MUVFOTAwQzc4MDNGIC8qIFN0cnVjdHVyZUlubGluZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRDJDOTIzMTZEMDFFRTkwMEM3ODAzRiAvKiBTdHJ1
Y3R1cmVJbmxpbmVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJMEZEM0M4MjYxNDExNUQ0MDAwRkQ4MUNCIC8qIERGR0RyaXZlci5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkQzQzgyMDE0MTE1Q0Y4
MDBGRDgxQ0IgLyogREZHRHJpdmVyLmNwcCAqLzsgfTsKIAkJMEZEM0M4MjgxNDExNUQ0RjAwRkQ4
MUNCIC8qIERGR0RyaXZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMEZEM0M4MjIxNDExNUQwRTAwRkQ4MUNCIC8qIERGR0RyaXZlci5oICovOyB9OwpA
QCAtMTE3NSw5ICsxMTc3LDkgQEAKIAkJMEY0NjgwQ0YxNEJCQjNEMTAwQkZFMjcyIC8qIExMSW50
RGF0YS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBMTEludERhdGEuaDsgcGF0
aCA9IGxsaW50L0xMSW50RGF0YS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjQ2
ODBEMDE0QkJDNUY4MDBCRkUyNzIgLyogSG9zdENhbGxSZXR1cm5WYWx1ZS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBIb3N0Q2FsbFJldHVyblZhbHVlLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY0NjgwRDExNEJCQzVGODAwQkZFMjcyIC8qIEhv
c3RDYWxsUmV0dXJuVmFsdWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSG9z
dENhbGxSZXR1cm5WYWx1ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjQ2RTZC
NzE3NkY4OUQ5MDBFMUY3NTUgLyogRlRMU3dpdGNoQ2FzZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IG5hbWUgPSBGVExTd2l0Y2hDYXNlLmg7IHBhdGggPSBmdGwvRlRMU3dpdGNoQ2FzZS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjQ2RTZDMjE3NkY4QTVCMDBFMUY3NTUg
LyogREZHTGF6eUpTVmFsdWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1l
ID0gREZHTGF6eUpTVmFsdWUuY3BwOyBwYXRoID0gZGZnL0RGR0xhenlKU1ZhbHVlLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY0NkU2QzMxNzZGOEE1QjAwRTFGNzU1IC8qIERG
R0xhenlKU1ZhbHVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR0xhenlK
U1ZhbHVlLmg7IHBhdGggPSBkZmcvREZHTGF6eUpTVmFsdWUuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKLQkJMEY0NkU2QjcxNzZGODlEOTAwRTFGNzU1IC8qIEZUTFN3aXRjaENhc2UuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gRlRMU3dpdGNoQ2FzZS5oOyBwYXRoID0g
ZnRsL0ZUTFN3aXRjaENhc2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY0OTNB
RjgxNkQwQ0FEMTAwODQ1MDhCIC8qIFNvdXJjZVByb3ZpZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNvdXJjZVByb3ZpZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMEY0RTFBMEMxNzNBRUREQzAwN0VFMkQzIC8qIEludGVuZGVkU3RydWN0
dXJlQ2hhaW4uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW50ZW5k
ZWRTdHJ1Y3R1cmVDaGFpbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNEUx
QTBEMTczQUVEREMwMDdFRTJEMyAvKiBJbnRlbmRlZFN0cnVjdHVyZUNoYWluLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEludGVuZGVkU3RydWN0dXJlQ2hhaW4uaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEzMzIsNiArMTMzNCw4IEBACiAJCTBGQzgxNTE0MTQw
NTExOEQwMENGQTYwMyAvKiBWVGFibGVTcGVjdHJ1bS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBWVGFibGVTcGVjdHJ1bS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkwRkNCNDA4NTE1QzBBM0MzMDA0ODkzMkIgLyogU2xvdFZpc2l0b3JJbmxpbmVzLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNsb3RWaXNpdG9ySW5saW5lcy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkwRkNDQUU0MzE2RDBDRjZFMDBEMEM2NUIgLyogUGFyc2Vy
RXJyb3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGFyc2VyRXJyb3IuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEZEMjgxMjUxNzc5M0JFMzAwQkJCMEYzIC8q
IERGR0JpbmFyeVN3aXRjaC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBERkdCaW5hcnlTd2l0Y2gu
Y3BwOyBwYXRoID0gZGZnL0RGR0JpbmFyeVN3aXRjaC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTBGRDI4MTI2MTc3OTNCRTMwMEJCQjBGMyAvKiBERkdCaW5hcnlTd2l0Y2guaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBuYW1lID0gREZHQmluYXJ5U3dpdGNoLmg7IHBhdGggPSBkZmcvREZHQmluYXJ5U3dp
dGNoLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGRDJDOTIzMTZEMDFFRTkwMEM3
ODAzRiAvKiBTdHJ1Y3R1cmVJbmxpbmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFN0cnVjdHVyZUlubGluZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZE
M0M4MjAxNDExNUNGODAwRkQ4MUNCIC8qIERGR0RyaXZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IG5hbWUgPSBERkdEcml2ZXIuY3BwOyBwYXRoID0gZGZnL0RGR0RyaXZlci5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGRDNDODIyMTQxMTVEMEUwMEZEODFD
QiAvKiBERkdEcml2ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHRHJp
dmVyLmg7IHBhdGggPSBkZmcvREZHRHJpdmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC0yOTQ0LDYgKzI5NDgsOCBAQAogCQkJCTBGNzE0Q0EyMTZFQTkyRUQwMEYzRUJFQiAvKiBE
RkdCYWNrd2FyZHNQcm9wYWdhdGlvblBoYXNlLmggKi8sCiAJCQkJMEY2MjAxNzAxNDNGQ0QyRjAw
NjhCNzdDIC8qIERGR0Jhc2ljQmxvY2suaCAqLywKIAkJCQkwRkQ1NjUyMjE2QUI3ODBBMDAxOTc2
NTMgLyogREZHQmFzaWNCbG9ja0lubGluZXMuaCAqLywKKwkJCQkwRkQyODEyNTE3NzkzQkUzMDBC
QkIwRjMgLyogREZHQmluYXJ5U3dpdGNoLmNwcCAqLywKKwkJCQkwRkQyODEyNjE3NzkzQkUzMDBC
QkIwRjMgLyogREZHQmluYXJ5U3dpdGNoLmggKi8sCiAJCQkJMEY4MzY0QjUxNjRCMEMwRTAwNTMz
MjlBIC8qIERGR0JyYW5jaERpcmVjdGlvbi5oICovLAogCQkJCTg2RUM5REI0MTMyOERGODIwMDJC
MkFENyAvKiBERkdCeXRlQ29kZVBhcnNlci5jcHAgKi8sCiAJCQkJODZFQzlEQjUxMzI4REY4MjAw
MkIyQUQ3IC8qIERGR0J5dGVDb2RlUGFyc2VyLmggKi8sCkBAIC0zNDY3LDYgKzM0NzMsNyBAQAog
CQkJCTBGRUEwQTBFMTcwNTEzREIwMEJCNzIyQyAvKiBGVExKSVRDb2RlLmggaW4gSGVhZGVycyAq
LywKIAkJCQlDMjVGOEJDRTE1NzU0NEE5MDAyNDVCNzEgLyogSW5jcmVtZW50YWxTd2VlcGVyLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkwRkI3RjM5OTE1RUQ4RTQ2MDBGMTY3QjIgLyogSW5kZXhpbmdI
ZWFkZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGRDI4MTI4MTc3OTNCRTcwMEJCQjBGMyAvKiBE
RkdCaW5hcnlTd2l0Y2guaCBpbiBIZWFkZXJzICovLAogCQkJCTBGQjdGMzlBMTVFRDhFNDYwMEYx
NjdCMiAvKiBJbmRleGluZ0hlYWRlcklubGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGQjdG
MzlCMTVFRDhFNDYwMEYxNjdCMiAvKiBJbmRleGluZ1R5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUJDMThDNDEwMEUxNkY1Q0QwMEIzNDQ2MCAvKiBJbml0aWFsaXplVGhyZWFkaW5nLmggaW4gSGVh
ZGVycyAqLywKQEAgLTQzNzgsNiArNDM4NSw3IEBACiAJCQkJMTQyRDZGMTExMzUzOUE0MTAwQjAy
RTg2IC8qIE1hcmtTdGFjay5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDQ2OURERjEwN0VDN0U3
MDA2NTA0NDYgLyogTWF0aE9iamVjdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5MDIxM0UzRDEy
M0E0MEMyMDBENDIyRjMgLyogTWVtb3J5U3RhdGlzdGljcy5jcHAgaW4gU291cmNlcyAqLywKKwkJ
CQkwRkQyODEyNzE3NzkzQkU1MDBCQkIwRjMgLyogREZHQmluYXJ5U3dpdGNoLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTBGQjU0NjdEMTRGNUNGRDYwMDJDMjk4OSAvKiBNZXRob2RPZkdldHRpbmdB
VmFsdWVQcm9maWxlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg2RUJGMkZGMTU2MEYwNkEwMDhF
OTIyMiAvKiBOYW1lQ29uc3RydWN0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODZFQkYzMDEx
NTYwRjA2QTAwOEU5MjIyIC8qIE5hbWVJbnN0YW5jZS5jcHAgaW4gU291cmNlcyAqLywKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9KdW1wVGFibGUuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSnVtcFRhYmxlLmgJKHJldmlzaW9uIDE1
MTk0NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9KdW1wVGFibGUuaAkod29y
a2luZyBjb3B5KQpAQCAtNzAsNiArNzAsMTEgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAg
ICByZXR1cm4gbG9jLT52YWx1ZS5jdGlPZmZzZXQ7CiAgICAgICAgIH0KICNlbmRpZgorICAgICAg
ICAKKyAgICAgICAgdm9pZCBjbGVhcigpCisgICAgICAgIHsKKyAgICAgICAgICAgIG9mZnNldFRh
YmxlLmNsZWFyKCk7CisgICAgICAgIH0KICAgICB9OwogCiAgICAgc3RydWN0IFNpbXBsZUp1bXBU
YWJsZSB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0JhY2t3YXJkc1Byb3Bh
Z2F0aW9uUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQmFja3dhcmRzUHJvcGFnYXRpb25QaGFzZS5jcHAJKHJldmlzaW9uIDE1MTk0NCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQmFja3dhcmRzUHJvcGFnYXRpb25QaGFzZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTM0OSwxNSArMzQ5LDI2IEBAIHByaXZhdGU6CiAgICAgICAgICAg
ICBTd2l0Y2hEYXRhKiBkYXRhID0gbm9kZS0+c3dpdGNoRGF0YSgpOwogICAgICAgICAgICAgc3dp
dGNoIChkYXRhLT5raW5kKSB7CiAgICAgICAgICAgICBjYXNlIFN3aXRjaEltbToKLSAgICAgICAg
ICAgIGNhc2UgU3dpdGNoQ2hhcjogewogICAgICAgICAgICAgICAgIC8vIFdlIGRvbid0IG5lZWQg
Tm9kZU5lZWRzTmVnWmVybyBiZWNhdXNlIGlmIHRoZSBjYXNlcyBhcmUgYWxsIGludGVnZXJzCi0g
ICAgICAgICAgICAgICAgLy8gb3Igc3RyaW5ncyB0aGVuIC0wIGFuZCAwIGFyZSB0cmVhdGVkIHRo
ZSBzYW1lLiAgV2UgZG9uJ3QgbmVlZAotICAgICAgICAgICAgICAgIC8vIE5vZGVVc2VkQXNPdGhl
ciBiZWNhdXNlIGlmIGFsbCBvZiB0aGUgY2FzZXMgYXJlIGludGVnZXJzIG9yCi0gICAgICAgICAg
ICAgICAgLy8gc2luZ2xlLWNoYXJhY3RlciBzdHJpbmdzIHRoZW4gTmFOIGFuZCB1bmRlZmluZWQg
YXJlIHRyZWF0ZWQgdGhlIHNhbWUKLSAgICAgICAgICAgICAgICAvLyAoaS5lLiB0aGV5IHdpbGwg
dGFrZSBkZWZhdWx0KS4KKyAgICAgICAgICAgICAgICAvLyB0aGVuIC0wIGFuZCAwIGFyZSB0cmVh
dGVkIHRoZSBzYW1lLiAgV2UgZG9uJ3QgbmVlZCBOb2RlVXNlZEFzT3RoZXIKKyAgICAgICAgICAg
ICAgICAvLyBiZWNhdXNlIGlmIGFsbCBvZiB0aGUgY2FzZXMgYXJlIGludGVnZXJzIHRoZW4gTmFO
IGFuZCB1bmRlZmluZWQgYXJlCisgICAgICAgICAgICAgICAgLy8gdHJlYXRlZCB0aGUgc2FtZSAo
aS5lLiB0aGV5IHdpbGwgdGFrZSBkZWZhdWx0KS4KICAgICAgICAgICAgICAgICBub2RlLT5jaGls
ZDEoKS0+bWVyZ2VGbGFncyhOb2RlVXNlZEFzTnVtYmVyIHwgTm9kZVVzZWRBc0ludCk7CiAgICAg
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9IH0KKyAgICAgICAgICAgIGNhc2UgU3dp
dGNoQ2hhcjogeworICAgICAgICAgICAgICAgIC8vIFdlIGRvbid0IG5lZWQgTm9kZU5lZWRzTmVn
WmVybyBiZWNhdXNlIGlmIHRoZSBjYXNlcyBhcmUgYWxsIHN0cmluZ3MKKyAgICAgICAgICAgICAg
ICAvLyB0aGVuIC0wIGFuZCAwIGFyZSB0cmVhdGVkIHRoZSBzYW1lLiAgV2UgZG9uJ3QgbmVlZCBO
b2RlVXNlZEFzT3RoZXIKKyAgICAgICAgICAgICAgICAvLyBiZWNhdXNlIGlmIGFsbCBvZiB0aGUg
Y2FzZXMgYXJlIHNpbmdsZS1jaGFyYWN0ZXIgc3RyaW5ncyB0aGVuIE5hTgorICAgICAgICAgICAg
ICAgIC8vIGFuZCB1bmRlZmluZWQgYXJlIHRyZWF0ZWQgdGhlIHNhbWUgKGkuZS4gdGhleSB3aWxs
IHRha2UgZGVmYXVsdCkuCisgICAgICAgICAgICAgICAgbm9kZS0+Y2hpbGQxKCktPm1lcmdlRmxh
Z3MoTm9kZVVzZWRBc051bWJlcik7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICB9CisgICAgICAgICAgICBjYXNlIFN3aXRjaFN0cmluZzoKKyAgICAgICAgICAgICAgICAvLyBX
ZSBkb24ndCBuZWVkIE5vZGVOZWVkc05lZ1plcm8gYmVjYXVzZSBpZiB0aGUgY2FzZXMgYXJlIGFs
bCBzdHJpbmdzCisgICAgICAgICAgICAgICAgLy8gdGhlbiAtMCBhbmQgMCBhcmUgdHJlYXRlZCB0
aGUgc2FtZS4KKyAgICAgICAgICAgICAgICBub2RlLT5jaGlsZDEoKS0+bWVyZ2VGbGFncyhOb2Rl
VXNlZEFzTnVtYmVyIHwgTm9kZVVzZWRBc090aGVyKTsKKyAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgICAg
ICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQmluYXJ5U3dpdGNoLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0JpbmFyeVN3aXRjaC5j
cHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0JpbmFyeVN3
aXRjaC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxODcgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIkRGR0JpbmFyeVN3aXRjaC5oIgorCisjaWYgRU5BQkxFKERGR19KSVQpCisKK25hbWVz
cGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKKworQmluYXJ5U3dpdGNoOjpCaW5hcnlTd2l0Y2go
R1BSUmVnIHZhbHVlLCBjb25zdCBWZWN0b3I8aW50NjRfdD4mIGNhc2VzLCBUeXBlIHR5cGUpCisg
ICAgOiBtX3ZhbHVlKHZhbHVlKQorICAgICwgbV9pbmRleCgwKQorICAgICwgbV9jYXNlSW5kZXgo
VUlOVF9NQVgpCisgICAgLCBtX21lZGlhbkJpYXMoMCkKKyAgICAsIG1fdHlwZSh0eXBlKQorewor
ICAgIGlmIChjYXNlcy5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKyAgICAKKyAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgY2FzZXMuc2l6ZSgpOyArK2kpCisgICAgICAgIG1fY2FzZXMu
YXBwZW5kKENhc2UoY2FzZXNbaV0sIGkpKTsKKyAgICBzdGQ6OnNvcnQobV9jYXNlcy5iZWdpbigp
LCBtX2Nhc2VzLmVuZCgpKTsKKyAgICBidWlsZCgwLCBtX2Nhc2VzLnNpemUoKSk7Cit9CisKK2Jv
b2wgQmluYXJ5U3dpdGNoOjphZHZhbmNlKE1hY3JvQXNzZW1ibGVyJiBqaXQpCit7CisgICAgaWYg
KG1fY2FzZXMuaXNFbXB0eSgpKSB7CisgICAgICAgIG1fZmFsbFRocm91Z2guYXBwZW5kKGppdC5q
dW1wKCkpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIAorICAgIGlmIChtX2lu
ZGV4ID09IG1fYnJhbmNoZXMuc2l6ZSgpKSB7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKG1fanVt
cFN0YWNrLmlzRW1wdHkoKSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgCisg
ICAgZm9yICg7OykgeworICAgICAgICBjb25zdCBCcmFuY2hDb2RlJiBjb2RlID0gbV9icmFuY2hl
c1ttX2luZGV4KytdOworICAgICAgICBzd2l0Y2ggKGNvZGUua2luZCkgeworICAgICAgICBjYXNl
IE5vdEVxdWFsVG9GYWxsVGhyb3VnaDoKKyAgICAgICAgICAgIHN3aXRjaCAobV90eXBlKSB7Cisg
ICAgICAgICAgICBjYXNlIEludDMyOgorICAgICAgICAgICAgICAgIG1fZmFsbFRocm91Z2guYXBw
ZW5kKGppdC5icmFuY2gzMigKKyAgICAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Ok5v
dEVxdWFsLCBtX3ZhbHVlLAorICAgICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6SW1t
MzIobV9jYXNlc1tjb2RlLmluZGV4XS52YWx1ZSkpKTsKKyAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgIGNhc2UgSW50UHRyOgorICAgICAgICAgICAgICAgIG1fZmFsbFRocm91Z2gu
YXBwZW5kKGppdC5icmFuY2hQdHIoCisgICAgICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVy
OjpOb3RFcXVhbCwgbV92YWx1ZSwKKyAgICAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6
OkltbVB0cihiaXR3aXNlX2Nhc3Q8Y29uc3Qgdm9pZCo+KHN0YXRpY19jYXN0PGludHB0cl90Piht
X2Nhc2VzW2NvZGUuaW5kZXhdLnZhbHVlKSkpKSk7CisgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBOb3RFcXVhbFRv
UHVzaDoKKyAgICAgICAgICAgIHN3aXRjaCAobV90eXBlKSB7CisgICAgICAgICAgICBjYXNlIElu
dDMyOgorICAgICAgICAgICAgICAgIG1fanVtcFN0YWNrLmFwcGVuZChqaXQuYnJhbmNoMzIoCisg
ICAgICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgbV92YWx1ZSwKKyAg
ICAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkltbTMyKG1fY2FzZXNbY29kZS5pbmRl
eF0udmFsdWUpKSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIElu
dFB0cjoKKyAgICAgICAgICAgICAgICBtX2p1bXBTdGFjay5hcHBlbmQoaml0LmJyYW5jaFB0cigK
KyAgICAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBtX3ZhbHVlLAor
ICAgICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6SW1tUHRyKGJpdHdpc2VfY2FzdDxj
b25zdCB2b2lkKj4oc3RhdGljX2Nhc3Q8aW50cHRyX3Q+KG1fY2FzZXNbY29kZS5pbmRleF0udmFs
dWUpKSkpKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICBjYXNlIExlc3NUaGFuVG9QdXNoOgorICAgICAgICAgICAgc3dp
dGNoIChtX3R5cGUpIHsKKyAgICAgICAgICAgIGNhc2UgSW50MzI6CisgICAgICAgICAgICAgICAg
bV9qdW1wU3RhY2suYXBwZW5kKGppdC5icmFuY2gzMigKKyAgICAgICAgICAgICAgICAgICAgTWFj
cm9Bc3NlbWJsZXI6Okxlc3NUaGFuLCBtX3ZhbHVlLAorICAgICAgICAgICAgICAgICAgICBNYWNy
b0Fzc2VtYmxlcjo6SW1tMzIobV9jYXNlc1tjb2RlLmluZGV4XS52YWx1ZSkpKTsKKyAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgSW50UHRyOgorICAgICAgICAgICAgICAg
IG1fanVtcFN0YWNrLmFwcGVuZChqaXQuYnJhbmNoUHRyKAorICAgICAgICAgICAgICAgICAgICBN
YWNyb0Fzc2VtYmxlcjo6TGVzc1RoYW4sIG1fdmFsdWUsCisgICAgICAgICAgICAgICAgICAgIE1h
Y3JvQXNzZW1ibGVyOjpJbW1QdHIoYml0d2lzZV9jYXN0PGNvbnN0IHZvaWQqPihzdGF0aWNfY2Fz
dDxpbnRwdHJfdD4obV9jYXNlc1tjb2RlLmluZGV4XS52YWx1ZSkpKSkpOworICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNh
c2UgUG9wOgorICAgICAgICAgICAgbV9qdW1wU3RhY2sudGFrZUxhc3QoKS5saW5rKCZqaXQpOwor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRXhlY3V0ZUNhc2U6CisgICAgICAgICAg
ICBtX2Nhc2VJbmRleCA9IGNvZGUuaW5kZXg7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICAgICAgfQorICAgIH0KK30KKwordm9pZCBCaW5hcnlTd2l0Y2g6OmJ1aWxkKHVuc2lnbmVkIHN0
YXJ0LCB1bnNpZ25lZCBlbmQpCit7CisgICAgdW5zaWduZWQgc2l6ZSA9IGVuZCAtIHN0YXJ0Owor
ICAgIAorICAgIHN3aXRjaCAoc2l6ZSkgeworICAgIGNhc2UgMDoKKyAgICAgICAgUkVMRUFTRV9B
U1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgYnJlYWs7CisgICAgICAgIAorICAgIGNhc2Ug
MToKKyAgICAgICAgaWYgKHN0YXJ0CisgICAgICAgICAgICAmJiBtX2Nhc2VzW3N0YXJ0IC0gMV0u
dmFsdWUgPT0gbV9jYXNlc1tzdGFydF0udmFsdWUgLSAxCisgICAgICAgICAgICAmJiBzdGFydCAr
IDEgPCBtX2Nhc2VzLnNpemUoKQorICAgICAgICAgICAgJiYgbV9jYXNlc1tzdGFydCArIDFdLnZh
bHVlID09IG1fY2FzZXNbc3RhcnRdLnZhbHVlICsgMSkgeworICAgICAgICAgICAgbV9icmFuY2hl
cy5hcHBlbmQoQnJhbmNoQ29kZShFeGVjdXRlQ2FzZSwgc3RhcnQpKTsKKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBtX2JyYW5jaGVzLmFwcGVuZChCcmFu
Y2hDb2RlKE5vdEVxdWFsVG9GYWxsVGhyb3VnaCwgc3RhcnQpKTsKKyAgICAgICAgbV9icmFuY2hl
cy5hcHBlbmQoQnJhbmNoQ29kZShFeGVjdXRlQ2FzZSwgc3RhcnQpKTsKKyAgICAgICAgYnJlYWs7
CisgICAgICAgIAorICAgIGNhc2UgMjoKKyAgICAgICAgaWYgKG1fY2FzZXNbc3RhcnRdLnZhbHVl
ICsgMSA9PSBtX2Nhc2VzW3N0YXJ0ICsgMV0udmFsdWUKKyAgICAgICAgICAgICYmIHN0YXJ0Cisg
ICAgICAgICAgICAmJiBtX2Nhc2VzW3N0YXJ0IC0gMV0udmFsdWUgPT0gbV9jYXNlc1tzdGFydF0u
dmFsdWUgLSAxCisgICAgICAgICAgICAmJiBzdGFydCArIDIgPCBtX2Nhc2VzLnNpemUoKQorICAg
ICAgICAgICAgJiYgbV9jYXNlc1tzdGFydCArIDJdLnZhbHVlID09IG1fY2FzZXNbc3RhcnQgKyAx
XS52YWx1ZSArIDEpIHsKKyAgICAgICAgICAgIG1fYnJhbmNoZXMuYXBwZW5kKEJyYW5jaENvZGUo
Tm90RXF1YWxUb1B1c2gsIHN0YXJ0KSk7CisgICAgICAgICAgICBtX2JyYW5jaGVzLmFwcGVuZChC
cmFuY2hDb2RlKEV4ZWN1dGVDYXNlLCBzdGFydCkpOworICAgICAgICAgICAgbV9icmFuY2hlcy5h
cHBlbmQoQnJhbmNoQ29kZShQb3ApKTsKKyAgICAgICAgICAgIG1fYnJhbmNoZXMuYXBwZW5kKEJy
YW5jaENvZGUoRXhlY3V0ZUNhc2UsIHN0YXJ0ICsgMSkpOworICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIG1fYnJhbmNoZXMuYXBwZW5kKEJyYW5jaENvZGUo
Tm90RXF1YWxUb1B1c2gsIHN0YXJ0KSk7CisgICAgICAgIG1fYnJhbmNoZXMuYXBwZW5kKEJyYW5j
aENvZGUoRXhlY3V0ZUNhc2UsIHN0YXJ0KSk7CisgICAgICAgIG1fYnJhbmNoZXMuYXBwZW5kKEJy
YW5jaENvZGUoUG9wKSk7CisgICAgICAgIG1fYnJhbmNoZXMuYXBwZW5kKEJyYW5jaENvZGUoTm90
RXF1YWxUb0ZhbGxUaHJvdWdoLCBzdGFydCArIDEpKTsKKyAgICAgICAgbV9icmFuY2hlcy5hcHBl
bmQoQnJhbmNoQ29kZShFeGVjdXRlQ2FzZSwgc3RhcnQgKyAxKSk7CisgICAgICAgIGJyZWFrOwor
ICAgICAgICAKKyAgICBkZWZhdWx0OgorICAgICAgICB1bnNpZ25lZCBtZWRpYW5JbmRleCA9IChz
dGFydCArIGVuZCkgLyAyOworICAgICAgICBpZiAoIShzaXplICYgMSkpIHsKKyAgICAgICAgICAg
IC8vIEJlY2F1c2UgZW5kIGlzIGV4Y2x1c2l2ZSwgaW4gdGhlIGV2ZW4gY2FzZSwgdGhpcyByb3Vu
ZHMgdXAgYnkKKyAgICAgICAgICAgIC8vIGRlZmF1bHQuIEhlbmNlIG1lZGlhbiBiaWFzIHNvbWV0
aW1lcyBmbGlwcyB0byBzdWJ0cmFjaW5nIG9uZQorICAgICAgICAgICAgLy8gaW4gb3JkZXIgdG8g
Z2V0IHJvdW5kLWRvd24gYmVoYXZpb3IuCisgICAgICAgICAgICBtZWRpYW5JbmRleCAtPSBtX21l
ZGlhbkJpYXM7CisgICAgICAgICAgICBtX21lZGlhbkJpYXMgXj0gMTsKKyAgICAgICAgfQorICAg
ICAgICAKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQobWVkaWFuSW5kZXggPiBzdGFydCk7CisgICAg
ICAgIFJFTEVBU0VfQVNTRVJUKG1lZGlhbkluZGV4ICsgMSA8IGVuZCk7CisgICAgICAgIAorICAg
ICAgICBtX2JyYW5jaGVzLmFwcGVuZChCcmFuY2hDb2RlKExlc3NUaGFuVG9QdXNoLCBtZWRpYW5J
bmRleCkpOworICAgICAgICBtX2JyYW5jaGVzLmFwcGVuZChCcmFuY2hDb2RlKE5vdEVxdWFsVG9Q
dXNoLCBtZWRpYW5JbmRleCkpOworICAgICAgICBtX2JyYW5jaGVzLmFwcGVuZChCcmFuY2hDb2Rl
KEV4ZWN1dGVDYXNlLCBtZWRpYW5JbmRleCkpOworICAgICAgICAKKyAgICAgICAgbV9icmFuY2hl
cy5hcHBlbmQoQnJhbmNoQ29kZShQb3ApKTsKKyAgICAgICAgYnVpbGQobWVkaWFuSW5kZXggKyAx
LCBlbmQpOworICAgICAgICAKKyAgICAgICAgbV9icmFuY2hlcy5hcHBlbmQoQnJhbmNoQ29kZShQ
b3ApKTsKKyAgICAgICAgYnVpbGQoc3RhcnQsIG1lZGlhbkluZGV4KTsKKyAgICAgICAgYnJlYWs7
CisgICAgfQorfQorCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6REZHCisKKyNlbmRpZiAvLyBFTkFC
TEUoREZHX0pJVCkKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCaW5hcnlT
d2l0Y2guaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0JpbmFy
eVN3aXRjaC5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdC
aW5hcnlTd2l0Y2guaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEyOCBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIERGR0JpbmFyeVN3
aXRjaF9oCisjZGVmaW5lIERGR0JpbmFyeVN3aXRjaF9oCisKKyNpbmNsdWRlIDx3dGYvUGxhdGZv
cm0uaD4KKworI2lmIEVOQUJMRShERkdfSklUKQorCisjaW5jbHVkZSAiREZHR1BSSW5mby5oIgor
I2luY2x1ZGUgIk1hY3JvQXNzZW1ibGVyLmgiCisKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2Ug
REZHIHsKKworLy8gVXNlIHRoaXMgbGlrZSBzbzoKKy8vCisvLyBCaW5hcnlTd2l0Y2ggc3dpdGNo
KHZhbHVlUmVnLCBjYXNlc1ZlY3RvciwgQmluYXJ5U3dpdGNoOjpJbnQzMik7CisvLyB3aGlsZSAo
c3dpdGNoLmFkdmFuY2Uoaml0KSkgeworLy8gICAgIGludCB2YWx1ZSA9IHN3aXRjaC5jYXNlVmFs
dWUoKTsKKy8vICAgICB1bnNpZ25lZCBpbmRleCA9IHN3aXRjaC5jYXNlSW5kZXgoKTsgLy8gaW5k
ZXggaW50byBjYXNlc1ZlY3RvciwgYWJvdmUKKy8vICAgICAuLi4gLy8gZ2VuZXJhdGUgY29kZSBm
b3IgdGhpcyBjYXNlCisvLyB9CisvLyBzd2l0Y2guZmFsbFRocm91Z2goKS5saW5rKCZqaXQpOwor
CitjbGFzcyBCaW5hcnlTd2l0Y2ggeworcHVibGljOgorICAgIGVudW0gVHlwZSB7CisgICAgICAg
IEludDMyLAorICAgICAgICBJbnRQdHIKKyAgICB9OworICAgIAorICAgIEJpbmFyeVN3aXRjaChH
UFJSZWcgdmFsdWUsIGNvbnN0IFZlY3RvcjxpbnQ2NF90PiYgY2FzZXMsIFR5cGUpOworICAgIAor
ICAgIHVuc2lnbmVkIGNhc2VJbmRleCgpIGNvbnN0IHsgcmV0dXJuIG1fY2FzZXNbbV9jYXNlSW5k
ZXhdLmluZGV4OyB9CisgICAgaW50IGNhc2VWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fY2FzZXNb
bV9jYXNlSW5kZXhdLnZhbHVlOyB9CisgICAgCisgICAgYm9vbCBhZHZhbmNlKE1hY3JvQXNzZW1i
bGVyJik7CisgICAgCisgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXBMaXN0JiBmYWxsVGhyb3VnaCgp
IHsgcmV0dXJuIG1fZmFsbFRocm91Z2g7IH0KKyAgICAKK3ByaXZhdGU6CisgICAgdm9pZCBidWls
ZCh1bnNpZ25lZCBzdGFydCwgdW5zaWduZWQgZW5kKTsKKyAgICAKKyAgICBHUFJSZWcgbV92YWx1
ZTsKKyAgICAKKyAgICBzdHJ1Y3QgQ2FzZSB7CisgICAgICAgIENhc2UoKSB7IH0KKworICAgICAg
ICBDYXNlKGludDY0X3QgdmFsdWUsIHVuc2lnbmVkIGluZGV4KQorICAgICAgICAgICAgOiB2YWx1
ZSh2YWx1ZSkKKyAgICAgICAgICAgICwgaW5kZXgoaW5kZXgpCisgICAgICAgIHsKKyAgICAgICAg
fQorICAgICAgICAKKyAgICAgICAgYm9vbCBvcGVyYXRvcjwoY29uc3QgQ2FzZSYgb3RoZXIpIGNv
bnN0CisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiB2YWx1ZSA8IG90aGVyLnZhbHVlOwor
ICAgICAgICB9CisgICAgICAgIAorICAgICAgICBpbnQ2NF90IHZhbHVlOworICAgICAgICB1bnNp
Z25lZCBpbmRleDsKKyAgICB9OworICAgIAorICAgIFZlY3RvcjxDYXNlPiBtX2Nhc2VzOworICAg
IAorICAgIGVudW0gQnJhbmNoS2luZCB7CisgICAgICAgIE5vdEVxdWFsVG9GYWxsVGhyb3VnaCwK
KyAgICAgICAgTm90RXF1YWxUb1B1c2gsCisgICAgICAgIExlc3NUaGFuVG9QdXNoLAorICAgICAg
ICBQb3AsCisgICAgICAgIEV4ZWN1dGVDYXNlCisgICAgfTsKKyAgICAgICAgCisgICAgc3RydWN0
IEJyYW5jaENvZGUgeworICAgICAgICBCcmFuY2hDb2RlKCkgeyB9CisgICAgICAgIAorICAgICAg
ICBCcmFuY2hDb2RlKEJyYW5jaEtpbmQga2luZCwgdW5zaWduZWQgaW5kZXggPSBVSU5UX01BWCkK
KyAgICAgICAgICAgIDoga2luZChraW5kKQorICAgICAgICAgICAgLCBpbmRleChpbmRleCkKKyAg
ICAgICAgeworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBCcmFuY2hLaW5kIGtpbmQ7Cisg
ICAgICAgIHVuc2lnbmVkIGluZGV4OworICAgIH07CisgICAgCisgICAgVmVjdG9yPEJyYW5jaENv
ZGU+IG1fYnJhbmNoZXM7CisKKyAgICB1bnNpZ25lZCBtX2luZGV4OworICAgIHVuc2lnbmVkIG1f
Y2FzZUluZGV4OworICAgIFZlY3RvcjxNYWNyb0Fzc2VtYmxlcjo6SnVtcD4gbV9qdW1wU3RhY2s7
CisgICAgCisgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXBMaXN0IG1fZmFsbFRocm91Z2g7CisgICAg
CisgICAgdW5zaWduZWQgbV9tZWRpYW5CaWFzOworICAgIAorICAgIFR5cGUgbV90eXBlOworfTsK
KworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkRGRworCisjZW5kaWYgLy8gRU5BQkxFKERGR19KSVQp
CisKKyNlbmRpZiAvLyBERkdCaW5hcnlTd2l0Y2hfaAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAkocmV2aXNpb24gMTUxOTQ0KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTI4MDAsNiArMjgwMCwyNiBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJz
ZUJsb2NrKHVuc2lnbmVkCiAgICAgICAgICAgICBMQVNUX09QQ09ERShvcF9zd2l0Y2hfY2hhcik7
CiAgICAgICAgIH0KIAorICAgICAgICBjYXNlIG9wX3N3aXRjaF9zdHJpbmc6IHsKKyAgICAgICAg
ICAgIFN3aXRjaERhdGEgZGF0YTsKKyAgICAgICAgICAgIGRhdGEua2luZCA9IFN3aXRjaFN0cmlu
ZzsKKyAgICAgICAgICAgIGRhdGEuc3dpdGNoVGFibGVJbmRleCA9IGN1cnJlbnRJbnN0cnVjdGlv
blsxXS51Lm9wZXJhbmQ7CisgICAgICAgICAgICBkYXRhLmZhbGxUaHJvdWdoID0gbV9jdXJyZW50
SW5kZXggKyBjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kOworICAgICAgICAgICAgU3Ry
aW5nSnVtcFRhYmxlJiB0YWJsZSA9IG1fY29kZUJsb2NrLT5zdHJpbmdTd2l0Y2hKdW1wVGFibGUo
ZGF0YS5zd2l0Y2hUYWJsZUluZGV4KTsKKyAgICAgICAgICAgIFN0cmluZ0p1bXBUYWJsZTo6U3Ry
aW5nT2Zmc2V0VGFibGU6Oml0ZXJhdG9yIGl0ZXI7CisgICAgICAgICAgICBTdHJpbmdKdW1wVGFi
bGU6OlN0cmluZ09mZnNldFRhYmxlOjppdGVyYXRvciBlbmQgPSB0YWJsZS5vZmZzZXRUYWJsZS5l
bmQoKTsKKyAgICAgICAgICAgIGZvciAoaXRlciA9IHRhYmxlLm9mZnNldFRhYmxlLmJlZ2luKCk7
IGl0ZXIgIT0gZW5kOyArK2l0ZXIpIHsKKyAgICAgICAgICAgICAgICB1bnNpZ25lZCB0YXJnZXQg
PSBtX2N1cnJlbnRJbmRleCArIGl0ZXItPnZhbHVlLmJyYW5jaE9mZnNldDsKKyAgICAgICAgICAg
ICAgICBpZiAodGFyZ2V0ID09IGRhdGEuZmFsbFRocm91Z2gpCisgICAgICAgICAgICAgICAgICAg
IGNvbnRpbnVlOworICAgICAgICAgICAgICAgIGRhdGEuY2FzZXMuYXBwZW5kKAorICAgICAgICAg
ICAgICAgICAgICBTd2l0Y2hDYXNlKExhenlKU1ZhbHVlOjprbm93blN0cmluZ0ltcGwoaXRlci0+
a2V5LmdldCgpKSwgdGFyZ2V0KSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBtX2dyYXBo
Lm1fc3dpdGNoRGF0YS5hcHBlbmQoZGF0YSk7CisgICAgICAgICAgICBhZGRUb0dyYXBoKFN3aXRj
aCwgT3BJbmZvKCZtX2dyYXBoLm1fc3dpdGNoRGF0YS5sYXN0KCkpLCBnZXQoY3VycmVudEluc3Ry
dWN0aW9uWzNdLnUub3BlcmFuZCkpOworICAgICAgICAgICAgTEFTVF9PUENPREUob3Bfc3dpdGNo
X3N0cmluZyk7CisgICAgICAgIH0KKwogICAgICAgICBjYXNlIG9wX3JldDoKICAgICAgICAgICAg
IGZsdXNoQXJndW1lbnRzQW5kQ2FwdHVyZWRWYXJpYWJsZXMoKTsKICAgICAgICAgICAgIGlmIChp
bmxpbmVDYWxsRnJhbWUoKSkgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdD
YXBhYmlsaXRpZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQ2FwYWJpbGl0aWVzLmNwcAkocmV2aXNpb24gMTUxOTQ0KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xOTEsNiAr
MTkxLDcgQEAgQ2FwYWJpbGl0eUxldmVsIGNhcGFiaWxpdHlMZXZlbChPcGNvZGVJRAogICAgIGNh
c2Ugb3BfdGVhcl9vZmZfYWN0aXZhdGlvbjoKICAgICBjYXNlIG9wX25ld19mdW5jOgogICAgIGNh
c2Ugb3BfbmV3X2Z1bmNfZXhwOgorICAgIGNhc2Ugb3Bfc3dpdGNoX3N0cmluZzogLy8gRG9uJ3Qg
aW5saW5lIGJlY2F1c2Ugd2UgZG9uJ3Qgd2FudCB0byBjb3B5IHN0cmluZyB0YWJsZXMgaW4gdGhl
IGNvbmN1cnJlbnQgSklULgogICAgICAgICByZXR1cm4gQ2FuQ29tcGlsZTsKIAogICAgIGRlZmF1
bHQ6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAJ
KHJldmlzaW9uIDE1MTk0NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQ
aGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU5NSw2ICs1OTUsMTIgQEAgcHJpdmF0ZToKICAg
ICAgICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZVN0cmluZygp
KQogICAgICAgICAgICAgICAgICAgICBzZXRVc2VLaW5kQW5kVW5ib3hJZlByb2ZpdGFibGU8U3Ry
aW5nVXNlPihub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICBjYXNlIFN3aXRjaFN0cmluZzoKKyAgICAgICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGQx
KCktPnNob3VsZFNwZWN1bGF0ZVN0cmluZ0lkZW50KCkpCisgICAgICAgICAgICAgICAgICAgIHNl
dFVzZUtpbmRBbmRVbmJveElmUHJvZml0YWJsZTxTdHJpbmdJZGVudFVzZT4obm9kZS0+Y2hpbGQx
KCkpOworICAgICAgICAgICAgICAgIGVsc2UgaWYgKG5vZGUtPmNoaWxkMSgpLT5zaG91bGRTcGVj
dWxhdGVTdHJpbmcoKSkKKyAgICAgICAgICAgICAgICAgICAgc2V0VXNlS2luZEFuZFVuYm94SWZQ
cm9maXRhYmxlPFN0cmluZ1VzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwCShyZXZpc2lv
biAxNTE5NDQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTYzLDYgKzE2Myw5IEBAIHZvaWQgSklUQ29tcGlsZXI6Omxp
bmsoTGlua0J1ZmZlciYgbGlua0IKICAgICAgICAgaWYgKCFkYXRhLmRpZFVzZUp1bXBUYWJsZSkK
ICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAKKyAgICAgICAgaWYgKGRhdGEua2luZCA9
PSBTd2l0Y2hTdHJpbmcpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgCiAgICAgICAg
IFJFTEVBU0VfQVNTRVJUKGRhdGEua2luZCA9PSBTd2l0Y2hJbW0gfHwgZGF0YS5raW5kID09IFN3
aXRjaENoYXIpOwogICAgICAgICAKICAgICAgICAgdXNlZEp1bXBUYWJsZXMuc2V0KGRhdGEuc3dp
dGNoVGFibGVJbmRleCk7CkBAIC0xODQsNiArMTg3LDMxIEBAIHZvaWQgSklUQ29tcGlsZXI6Omxp
bmsoTGlua0J1ZmZlciYgbGlua0IKICAgICAgICAgbV9jb2RlQmxvY2stPnN3aXRjaEp1bXBUYWJs
ZShpKS5jbGVhcigpOwogICAgIH0KIAorICAgIC8vIE5PVEU6IHdlIGNhbm5vdCBjbGVhciBzdHJp
bmcgc3dpdGNoIHRhYmxlcyBiZWNhdXNlICgxKSB3ZSdyZSBydW5uaW5nIGNvbmN1cnJlbnRseQor
ICAgIC8vIGFuZCB3ZSBjYW5ub3QgZGVyZWYgU3RyaW5nSW1wbCdzIGFuZCAoMikgaXQgd291bGQg
YmUgd2VpcmQgdG8gZGVyZWYgdGhvc2UKKyAgICAvLyBTdHJpbmdJbXBsJ3Mgc2luY2Ugd2UgcmVm
ZXIgdG8gdGhlbS4KKyAgICBmb3IgKHVuc2lnbmVkIGkgPSBtX2dyYXBoLm1fc3dpdGNoRGF0YS5z
aXplKCk7IGktLTspIHsKKyAgICAgICAgU3dpdGNoRGF0YSYgZGF0YSA9IG1fZ3JhcGgubV9zd2l0
Y2hEYXRhW2ldOworICAgICAgICBpZiAoIWRhdGEuZGlkVXNlSnVtcFRhYmxlKQorICAgICAgICAg
ICAgY29udGludWU7CisgICAgICAgIAorICAgICAgICBpZiAoZGF0YS5raW5kICE9IFN3aXRjaFN0
cmluZykKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAKKyAgICAgICAgU3RyaW5nSnVt
cFRhYmxlJiB0YWJsZSA9IG1fY29kZUJsb2NrLT5zdHJpbmdTd2l0Y2hKdW1wVGFibGUoZGF0YS5z
d2l0Y2hUYWJsZUluZGV4KTsKKyAgICAgICAgdGFibGUuY3RpRGVmYXVsdCA9IGxpbmtCdWZmZXIu
bG9jYXRpb25PZihtX2Jsb2NrSGVhZHNbZGF0YS5mYWxsVGhyb3VnaF0pOworICAgICAgICBTdHJp
bmdKdW1wVGFibGU6OlN0cmluZ09mZnNldFRhYmxlOjppdGVyYXRvciBpdGVyOworICAgICAgICBT
dHJpbmdKdW1wVGFibGU6OlN0cmluZ09mZnNldFRhYmxlOjppdGVyYXRvciBlbmQgPSB0YWJsZS5v
ZmZzZXRUYWJsZS5lbmQoKTsKKyAgICAgICAgZm9yIChpdGVyID0gdGFibGUub2Zmc2V0VGFibGUu
YmVnaW4oKTsgaXRlciAhPSBlbmQ7ICsraXRlcikKKyAgICAgICAgICAgIGl0ZXItPnZhbHVlLmN0
aU9mZnNldCA9IHRhYmxlLmN0aURlZmF1bHQ7CisgICAgICAgIGZvciAodW5zaWduZWQgaiA9IGRh
dGEuY2FzZXMuc2l6ZSgpOyBqLS07KSB7CisgICAgICAgICAgICBTd2l0Y2hDYXNlJiBteUNhc2Ug
PSBkYXRhLmNhc2VzW2pdOworICAgICAgICAgICAgaXRlciA9IHRhYmxlLm9mZnNldFRhYmxlLmZp
bmQobXlDYXNlLnZhbHVlLnN0cmluZ0ltcGwoKSk7CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VS
VChpdGVyICE9IGVuZCk7CisgICAgICAgICAgICBpdGVyLT52YWx1ZS5jdGlPZmZzZXQgPSBsaW5r
QnVmZmVyLmxvY2F0aW9uT2YobV9ibG9ja0hlYWRzW215Q2FzZS50YXJnZXRdKTsKKyAgICAgICAg
fQorICAgIH0KKwogICAgIC8vIExpbmsgYWxsIGNhbGxzIG91dCBmcm9tIHRoZSBKSVQgY29kZSB0
byB0aGVpciByZXNwZWN0aXZlIGZ1bmN0aW9ucy4KICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgbV9jYWxscy5zaXplKCk7ICsraSkKICAgICAgICAgbGlua0J1ZmZlci5saW5rKG1fY2FsbHNb
aV0ubV9jYWxsLCBtX2NhbGxzW2ldLm1fZnVuY3Rpb24pOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdMYXp5SlNWYWx1ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdMYXp5SlNWYWx1ZS5jcHAJKHJldmlzaW9uIDE1MTk0NCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTGF6eUpTVmFsdWUuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0zOSw2ICszOSw4IEBAIEpTVmFsdWUgTGF6eUpTVmFsdWU6OmdldFZhbHVlKFZNJiB2bSkg
Y28KICAgICAgICAgcmV0dXJuIHZhbHVlKCk7CiAgICAgY2FzZSBTaW5nbGVDaGFyYWN0ZXJTdHJp
bmc6CiAgICAgICAgIHJldHVybiBqc1NpbmdsZUNoYXJhY3RlclN0cmluZygmdm0sIHUuY2hhcmFj
dGVyKTsKKyAgICBjYXNlIEtub3duU3RyaW5nSW1wbDoKKyAgICAgICAgcmV0dXJuIGpzU3RyaW5n
KCZ2bSwgdS5zdHJpbmdJbXBsKTsKICAgICB9CiAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNI
RUQoKTsKIH0KQEAgLTU5LDYgKzYxLDE5IEBAIHN0YXRpYyBUcmlTdGF0ZSBlcXVhbFRvU2luZ2xl
Q2hhcmFjdGVyKEoKICAgICByZXR1cm4gdHJpU3RhdGUoc3RyaW5nLT5hdCgwKSA9PSBjaGFyYWN0
ZXIpOwogfQogCitzdGF0aWMgVHJpU3RhdGUgZXF1YWxUb1N0cmluZ0ltcGwoSlNWYWx1ZSB2YWx1
ZSwgU3RyaW5nSW1wbCogc3RyaW5nSW1wbCkKK3sKKyAgICBpZiAoIXZhbHVlLmlzU3RyaW5nKCkp
CisgICAgICAgIHJldHVybiBGYWxzZVRyaVN0YXRlOworICAgIAorICAgIEpTU3RyaW5nKiBqc1N0
cmluZyA9IGFzU3RyaW5nKHZhbHVlKTsKKyAgICBjb25zdCBTdHJpbmdJbXBsKiBzdHJpbmcgPSBq
c1N0cmluZy0+dHJ5R2V0VmFsdWVJbXBsKCk7CisgICAgaWYgKCFzdHJpbmcpCisgICAgICAgIHJl
dHVybiBNaXhlZFRyaVN0YXRlOworICAgIAorICAgIHJldHVybiB0cmlTdGF0ZShXVEY6OmVxdWFs
KHN0cmluZ0ltcGwsIHN0cmluZykpOworfQorCiBUcmlTdGF0ZSBMYXp5SlNWYWx1ZTo6c3RyaWN0
RXF1YWwoY29uc3QgTGF6eUpTVmFsdWUmIG90aGVyKSBjb25zdAogewogICAgIHN3aXRjaCAobV9r
aW5kKSB7CkBAIC02OCwxMiArODMsMjYgQEAgVHJpU3RhdGUgTGF6eUpTVmFsdWU6OnN0cmljdEVx
dWFsKGNvbnN0IAogICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OnB1cmVTdHJpY3RFcXVhbCh2
YWx1ZSgpLCBvdGhlci52YWx1ZSgpKTsKICAgICAgICAgY2FzZSBTaW5nbGVDaGFyYWN0ZXJTdHJp
bmc6CiAgICAgICAgICAgICByZXR1cm4gZXF1YWxUb1NpbmdsZUNoYXJhY3Rlcih2YWx1ZSgpLCBv
dGhlci5jaGFyYWN0ZXIoKSk7CisgICAgICAgIGNhc2UgS25vd25TdHJpbmdJbXBsOgorICAgICAg
ICAgICAgcmV0dXJuIGVxdWFsVG9TdHJpbmdJbXBsKHZhbHVlKCksIG90aGVyLnN0cmluZ0ltcGwo
KSk7CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBTaW5nbGVDaGFyYWN0ZXJT
dHJpbmc6CiAgICAgICAgIHN3aXRjaCAob3RoZXIubV9raW5kKSB7CiAgICAgICAgIGNhc2UgU2lu
Z2xlQ2hhcmFjdGVyU3RyaW5nOgogICAgICAgICAgICAgcmV0dXJuIHRyaVN0YXRlKGNoYXJhY3Rl
cigpID09IG90aGVyLmNoYXJhY3RlcigpKTsKKyAgICAgICAgY2FzZSBLbm93blN0cmluZ0ltcGw6
CisgICAgICAgICAgICBpZiAob3RoZXIuc3RyaW5nSW1wbCgpLT5sZW5ndGgoKSAhPSAxKQorICAg
ICAgICAgICAgICAgIHJldHVybiBGYWxzZVRyaVN0YXRlOworICAgICAgICAgICAgcmV0dXJuIHRy
aVN0YXRlKG90aGVyLnN0cmluZ0ltcGwoKS0+YXQoMCkgPT0gY2hhcmFjdGVyKCkpOworICAgICAg
ICBkZWZhdWx0OgorICAgICAgICAgICAgcmV0dXJuIG90aGVyLnN0cmljdEVxdWFsKCp0aGlzKTsK
KyAgICAgICAgfQorICAgICAgICBicmVhazsKKyAgICBjYXNlIEtub3duU3RyaW5nSW1wbDoKKyAg
ICAgICAgc3dpdGNoIChvdGhlci5tX2tpbmQpIHsKKyAgICAgICAgY2FzZSBLbm93blN0cmluZ0lt
cGw6CisgICAgICAgICAgICByZXR1cm4gdHJpU3RhdGUoV1RGOjplcXVhbChzdHJpbmdJbXBsKCks
IG90aGVyLnN0cmluZ0ltcGwoKSkpOwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgcmV0
dXJuIG90aGVyLnN0cmljdEVxdWFsKCp0aGlzKTsKICAgICAgICAgfQpAQCAtOTMsNiArMTIyLDkg
QEAgdm9pZCBMYXp5SlNWYWx1ZTo6ZHVtcChQcmludFN0cmVhbSYgb3V0KQogICAgICAgICBvdXQu
cHJpbnRmKCIlMDRYIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGNoYXJhY3RlcigpKSk7CiAgICAg
ICAgIG91dC5wcmludCgiIC8gIiwgU3RyaW5nSW1wbDo6dXRmOEZvckNoYXJhY3RlcnMoJnUuY2hh
cmFjdGVyLCAxKSwgIikiKTsKICAgICAgICAgcmV0dXJuOworICAgIGNhc2UgS25vd25TdHJpbmdJ
bXBsOgorICAgICAgICBvdXQucHJpbnQoIkxhenk6U3RyaW5nKCIsIHN0cmluZ0ltcGwoKSwgIiki
KTsKKyAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hF
RCgpOwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdMYXp5SlNWYWx1ZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTGF6eUpTVmFsdWUu
aAkocmV2aXNpb24gMTUxOTQ0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdMYXp5
SlNWYWx1ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00MCw3ICs0MCw4IEBAIG5hbWVzcGFjZSBKU0Mg
eyBuYW1lc3BhY2UgREZHIHsKIAogZW51bSBMYXppbmVzc0tpbmQgewogICAgIEtub3duVmFsdWUs
Ci0gICAgU2luZ2xlQ2hhcmFjdGVyU3RyaW5nCisgICAgU2luZ2xlQ2hhcmFjdGVyU3RyaW5nLAor
ICAgIEtub3duU3RyaW5nSW1wbAogfTsKIAogY2xhc3MgTGF6eUpTVmFsdWUgewpAQCAtNTksNiAr
NjAsMTQgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KICAgICAKKyAg
ICBzdGF0aWMgTGF6eUpTVmFsdWUga25vd25TdHJpbmdJbXBsKFN0cmluZ0ltcGwqIHN0cmluZykK
KyAgICB7CisgICAgICAgIExhenlKU1ZhbHVlIHJlc3VsdDsKKyAgICAgICAgcmVzdWx0Lm1fa2lu
ZCA9IEtub3duU3RyaW5nSW1wbDsKKyAgICAgICAgcmVzdWx0LnUuc3RyaW5nSW1wbCA9IHN0cmlu
ZzsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisgICAgCiAgICAgSlNWYWx1ZSB0cnlH
ZXRWYWx1ZSgpIGNvbnN0CiAgICAgewogICAgICAgICBpZiAobV9raW5kID09IEtub3duVmFsdWUp
CkBAIC04MCw2ICs4OSwxMiBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiB1LmNoYXJhY3RlcjsK
ICAgICB9CiAgICAgCisgICAgU3RyaW5nSW1wbCogc3RyaW5nSW1wbCgpIGNvbnN0CisgICAgewor
ICAgICAgICBBU1NFUlQobV9raW5kID09IEtub3duU3RyaW5nSW1wbCk7CisgICAgICAgIHJldHVy
biB1LnN0cmluZ0ltcGw7CisgICAgfQorICAgIAogICAgIFRyaVN0YXRlIHN0cmljdEVxdWFsKGNv
bnN0IExhenlKU1ZhbHVlJiBvdGhlcikgY29uc3Q7CiAgICAgCiAgICAgdW5zaWduZWQgc3dpdGNo
TG9va3VwVmFsdWUoKSBjb25zdApAQCAtOTIsOCArMTA3LDEwIEBAIHB1YmxpYzoKICAgICAgICAg
ICAgIHJldHVybiB2YWx1ZSgpLmFzSW50MzIoKTsKICAgICAgICAgY2FzZSBTaW5nbGVDaGFyYWN0
ZXJTdHJpbmc6CiAgICAgICAgICAgICByZXR1cm4gY2hhcmFjdGVyKCk7CisgICAgICAgIGRlZmF1
bHQ6CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAg
ICAgcmV0dXJuIDA7CiAgICAgICAgIH0KLSAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNI
RUQoKTsKICAgICB9CiAgICAgCiAgICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJikgY29uc3Q7CkBA
IC0xMDIsNiArMTE5LDcgQEAgcHJpdmF0ZToKICAgICB1bmlvbiB7CiAgICAgICAgIEVuY29kZWRK
U1ZhbHVlIHZhbHVlOwogICAgICAgICBVQ2hhciBjaGFyYWN0ZXI7CisgICAgICAgIFN0cmluZ0lt
cGwqIHN0cmluZ0ltcGw7CiAgICAgfSB1OwogICAgIExhemluZXNzS2luZCBtX2tpbmQ7CiB9OwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuY3BwCShyZXZpc2lvbiAxNTE5NDQp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC01Myw2ICs1Myw5IEBAIHZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYgb3V0LCBT
d2kKICAgICBjYXNlIFN3aXRjaENoYXI6CiAgICAgICAgIG91dC5wcmludCgiU3dpdGNoQ2hhciIp
OwogICAgICAgICByZXR1cm47CisgICAgY2FzZSBTd2l0Y2hTdHJpbmc6CisgICAgICAgIG91dC5w
cmludCgiU3dpdGNoU3RyaW5nIik7CisgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgUkVMRUFT
RV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHTm9kZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Tm9kZS5oCShyZXZpc2lvbiAxNTE5NDQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R05vZGUuaAkod29ya2luZyBjb3B5KQpAQCAtOTYsNyArOTYsOCBAQCBzdHJ1Y3QgU3dpdGNoQ2Fz
ZSB7CiAKIGVudW0gU3dpdGNoS2luZCB7CiAgICAgU3dpdGNoSW1tLAotICAgIFN3aXRjaENoYXIK
KyAgICBTd2l0Y2hDaGFyLAorICAgIFN3aXRjaFN0cmluZwogfTsKIAogc3RydWN0IFN3aXRjaERh
dGEgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3Bw
CShyZXZpc2lvbiAxNTE5NDQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJh
dGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjMyLDYgKzE2MzIsMTQgQEAgY2hhciogREZH
X09QRVJBVElPTiBvcGVyYXRpb25GaW5kU3dpdGNoSQogICAgIHJldHVybiBzdGF0aWNfY2FzdDxj
aGFyKj4odGFibGUuY3RpRGVmYXVsdC5leGVjdXRhYmxlQWRkcmVzcygpKTsKIH0KIAorY2hhciog
REZHX09QRVJBVElPTiBvcGVyYXRpb25Td2l0Y2hTdHJpbmcoRXhlY1N0YXRlKiBleGVjLCBzaXpl
X3QgdGFibGVJbmRleCwgSlNTdHJpbmcqIHN0cmluZykKK3sKKyAgICBWTSYgdm0gPSBleGVjLT52
bSgpOworICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIoJnZtLCBleGVjKTsKKworICAg
IHJldHVybiBzdGF0aWNfY2FzdDxjaGFyKj4oZXhlYy0+Y29kZUJsb2NrKCktPnN0cmluZ1N3aXRj
aEp1bXBUYWJsZSh0YWJsZUluZGV4KS5jdGlGb3JWYWx1ZShzdHJpbmctPnZhbHVlKGV4ZWMpLmlt
cGwoKSkuZXhlY3V0YWJsZUFkZHJlc3MoKSk7Cit9CisKIGRvdWJsZSBERkdfT1BFUkFUSU9OIG9w
ZXJhdGlvbkZNb2RPbkludHMoaW50MzJfdCBhLCBpbnQzMl90IGIpCiB7CiAgICAgcmV0dXJuIGZt
b2QoYSwgYik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMu
aAkocmV2aXNpb24gMTUxOTQ0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVy
YXRpb25zLmgJKHdvcmtpbmcgY29weSkKQEAgLTExNyw2ICsxMTcsNyBAQCB0eXBlZGVmIGNoYXIq
IERGR19PUEVSQVRJT04gKCpQX0RGR09wZXJhCiB0eXBlZGVmIGNoYXIqIERGR19PUEVSQVRJT04g
KCpQX0RGR09wZXJhdGlvbl9FT1opKEV4ZWNTdGF0ZSosIEpTT2JqZWN0KiwgaW50MzJfdCk7CiB0
eXBlZGVmIGNoYXIqIERGR19PUEVSQVRJT04gKCpQX0RGR09wZXJhdGlvbl9FUFMpKEV4ZWNTdGF0
ZSosIHZvaWQqLCBzaXplX3QpOwogdHlwZWRlZiBjaGFyKiBERkdfT1BFUkFUSU9OICgqUF9ERkdP
cGVyYXRpb25fRVMpKEV4ZWNTdGF0ZSosIHNpemVfdCk7Cit0eXBlZGVmIGNoYXIqIERGR19PUEVS
QVRJT04gKCpQX0RGR09wZXJhdGlvbl9FU0pzcykoRXhlY1N0YXRlKiwgc2l6ZV90LCBKU1N0cmlu
ZyopOwogdHlwZWRlZiBjaGFyKiBERkdfT1BFUkFUSU9OICgqUF9ERkdPcGVyYXRpb25fRVN0KShF
eGVjU3RhdGUqLCBTdHJ1Y3R1cmUqKTsKIHR5cGVkZWYgY2hhciogREZHX09QRVJBVElPTiAoKlBf
REZHT3BlcmF0aW9uX0VTdFBTKShFeGVjU3RhdGUqLCBTdHJ1Y3R1cmUqLCB2b2lkKiwgc2l6ZV90
KTsKIHR5cGVkZWYgY2hhciogREZHX09QRVJBVElPTiAoKlBfREZHT3BlcmF0aW9uX0VTdFNTKShF
eGVjU3RhdGUqLCBTdHJ1Y3R1cmUqLCBzaXplX3QsIHNpemVfdCk7CkBAIC0yMjUsNiArMjI2LDcg
QEAgSlNDZWxsKiBERkdfT1BFUkFUSU9OIG9wZXJhdGlvblRvU3RyaW5nKAogSlNDZWxsKiBERkdf
T1BFUkFUSU9OIG9wZXJhdGlvbk1ha2VSb3BlMihFeGVjU3RhdGUqLCBKU1N0cmluZyosIEpTU3Ry
aW5nKik7CiBKU0NlbGwqIERGR19PUEVSQVRJT04gb3BlcmF0aW9uTWFrZVJvcGUzKEV4ZWNTdGF0
ZSosIEpTU3RyaW5nKiwgSlNTdHJpbmcqLCBKU1N0cmluZyopOwogY2hhciogREZHX09QRVJBVElP
TiBvcGVyYXRpb25GaW5kU3dpdGNoSW1tVGFyZ2V0Rm9yRG91YmxlKEV4ZWNTdGF0ZSosIEVuY29k
ZWRKU1ZhbHVlLCBzaXplX3QgdGFibGVJbmRleCk7CitjaGFyKiBERkdfT1BFUkFUSU9OIG9wZXJh
dGlvblN3aXRjaFN0cmluZyhFeGVjU3RhdGUqLCBzaXplX3QgdGFibGVJbmRleCwgSlNTdHJpbmcq
KTsKIAogLy8gVGhpcyBtZXRob2QgaXMgdXNlZCB0byBsb29rdXAgYW4gZXhjZXB0aW9uIGhhbmRl
ciwga2V5ZWQgYnkgZmF1bHRMb2NhdGlvbiwgd2hpY2ggaXMKIC8vIHRoZSByZXR1cm4gbG9jYXRp
b24gZnJvbSBvbmUgb2YgdGhlIGNhbGxzIG91dCB0byBvbmUgb2YgdGhlIGhlbHBlciBvcGVyYXRp
b25zIGFib3ZlLgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVC5jcHAJKHJldmlzaW9uIDE1MTk0NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw2ICszMCw3
IEBACiAKICNpbmNsdWRlICJBcmd1bWVudHMuaCIKICNpbmNsdWRlICJERkdBcnJheWlmeVNsb3dQ
YXRoR2VuZXJhdG9yLmgiCisjaW5jbHVkZSAiREZHQmluYXJ5U3dpdGNoLmgiCiAjaW5jbHVkZSAi
REZHQ2FsbEFycmF5QWxsb2NhdG9yU2xvd1BhdGhHZW5lcmF0b3IuaCIKICNpbmNsdWRlICJERkdT
bG93UGF0aEdlbmVyYXRvci5oIgogI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCkBAIC00
ODExLDEyICs0ODEyLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdFN3aXRjaENoYXIoTm9k
ZQogICAgICAgICAKICAgICAgICAgb3AxLnVzZSgpOwogCi0gICAgICAgIERGR19UWVBFX0NIRUNL
KAotICAgICAgICAgICAgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwob3AxR1BSKSwgbm9kZS0+
Y2hpbGQxKCksIFNwZWNTdHJpbmcsIG1faml0LmJyYW5jaFB0cigKLSAgICAgICAgICAgICAgICBN
YWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsCi0gICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6
OkFkZHJlc3Mob3AxR1BSLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwKLSAgICAgICAgICAg
ICAgICBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC52bSgpLT5zdHJpbmdTdHJ1
Y3R1cmUuZ2V0KCkpKSk7Ci0gICAgICAgIAorICAgICAgICBzcGVjdWxhdGVTdHJpbmcobm9kZS0+
Y2hpbGQxKCksIG9wMUdQUik7CiAgICAgICAgIGVtaXRTd2l0Y2hDaGFyU3RyaW5nSnVtcChkYXRh
LCBvcDFHUFIsIHRlbXBHUFIpOwogICAgICAgICBub1Jlc3VsdChub2RlLCBVc2VDaGlsZHJlbkNh
bGxlZEV4cGxpY2l0bHkpOwogICAgICAgICBicmVhazsKQEAgLTQ4NjEsNiArNDg1NywzMDYgQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdFN3aXRjaENoYXIoTm9kZQogICAgIH0KIH0KIAorYm9v
bCBTcGVjdWxhdGl2ZUpJVDo6U3RyaW5nU3dpdGNoQ2FzZTo6b3BlcmF0b3I8KAorICAgIGNvbnN0
IFNwZWN1bGF0aXZlSklUOjpTdHJpbmdTd2l0Y2hDYXNlJiBvdGhlcikgY29uc3QKK3sKKyAgICB1
bnNpZ25lZCBtaW5MZW5ndGggPSBzdGQ6Om1pbihzdHJpbmctPmxlbmd0aCgpLCBvdGhlci5zdHJp
bmctPmxlbmd0aCgpKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbWluTGVuZ3RoOyAr
K2kpIHsKKyAgICAgICAgaWYgKHN0cmluZy0+YXQoaSkgPT0gb3RoZXIuc3RyaW5nLT5hdChpKSkK
KyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICByZXR1cm4gc3RyaW5nLT5hdChpKSA8IG90
aGVyLnN0cmluZy0+YXQoaSk7CisgICAgfQorICAgIHJldHVybiBzdHJpbmctPmxlbmd0aCgpIDwg
b3RoZXIuc3RyaW5nLT5sZW5ndGgoKTsKK30KKworbmFtZXNwYWNlIHsKKworc3RydWN0IENoYXJh
Y3RlckNhc2UgeworICAgIGJvb2wgb3BlcmF0b3I8KGNvbnN0IENoYXJhY3RlckNhc2UmIG90aGVy
KSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIGNoYXJhY3RlciA8IG90aGVyLmNoYXJhY3Rl
cjsKKyAgICB9CisgICAgCisgICAgTENoYXIgY2hhcmFjdGVyOworICAgIHVuc2lnbmVkIGJlZ2lu
OworICAgIHVuc2lnbmVkIGVuZDsKK307CisKK30gLy8gYW5vbnltb3VzIG5hbWVzcGFjZQorCit2
b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0QmluYXJ5U3dpdGNoU3RyaW5nUmVjdXJzZSgKKyAgICBT
d2l0Y2hEYXRhKiBkYXRhLCBjb25zdCBWZWN0b3I8U3BlY3VsYXRpdmVKSVQ6OlN0cmluZ1N3aXRj
aENhc2U+JiBjYXNlcywKKyAgICB1bnNpZ25lZCBudW1DaGVja2VkLCB1bnNpZ25lZCBiZWdpbiwg
dW5zaWduZWQgZW5kLCBHUFJSZWcgYnVmZmVyLCBHUFJSZWcgbGVuZ3RoLAorICAgIEdQUlJlZyB0
ZW1wLCB1bnNpZ25lZCBhbHJlYWR5Q2hlY2tlZExlbmd0aCwgYm9vbCBjaGVja2VkRXhhY3RMZW5n
dGgpCit7CisgICAgc3RhdGljIGNvbnN0IGJvb2wgdmVyYm9zZSA9IGZhbHNlOworICAgIAorICAg
IGlmICh2ZXJib3NlKSB7CisgICAgICAgIGRhdGFMb2coIldlJ3JlIGRvd24gdG8gdGhlIGZvbGxv
d2luZyBjYXNlcywgYWxyZWFkeUNoZWNrZWRMZW5ndGggPSAiLCBhbHJlYWR5Q2hlY2tlZExlbmd0
aCwgIjpcbiIpOworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBiZWdpbjsgaSA8IGVuZDsgKytp
KSB7CisgICAgICAgICAgICBkYXRhTG9nKCIgICAgIiwgY2FzZXNbaV0uc3RyaW5nLCAiXG4iKTsK
KyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICBpZiAoYmVnaW4gPT0gZW5kKSB7CisgICAgICAg
IGp1bXAoZGF0YS0+ZmFsbFRocm91Z2gsIEZvcmNlSnVtcCk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisgICAgCisgICAgdW5zaWduZWQgbWluTGVuZ3RoID0gY2FzZXNbYmVnaW5dLnN0cmluZy0+
bGVuZ3RoKCk7CisgICAgdW5zaWduZWQgY29tbW9uQ2hhcnMgPSBtaW5MZW5ndGg7CisgICAgYm9v
bCBhbGxMZW5ndGhzRXF1YWwgPSB0cnVlOworICAgIGZvciAodW5zaWduZWQgaSA9IGJlZ2luICsg
MTsgaSA8IGVuZDsgKytpKSB7CisgICAgICAgIHVuc2lnbmVkIG15Q29tbW9uQ2hhcnMgPSBudW1D
aGVja2VkOworICAgICAgICBmb3IgKHVuc2lnbmVkIGogPSBudW1DaGVja2VkOworICAgICAgICAg
ICAgaiA8IHN0ZDo6bWluKGNhc2VzW2JlZ2luXS5zdHJpbmctPmxlbmd0aCgpLCBjYXNlc1tpXS5z
dHJpbmctPmxlbmd0aCgpKTsKKyAgICAgICAgICAgICsraikgeworICAgICAgICAgICAgaWYgKGNh
c2VzW2JlZ2luXS5zdHJpbmctPmF0KGopICE9IGNhc2VzW2ldLnN0cmluZy0+YXQoaikpIHsKKyAg
ICAgICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygi
c3RyaW5nKCIsIGNhc2VzW2ldLnN0cmluZywgIilbIiwgaiwgIl0gIT0gc3RyaW5nKCIsIGNhc2Vz
W2JlZ2luXS5zdHJpbmcsICIpWyIsIGosICJdXG4iKTsKKyAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG15Q29tbW9uQ2hhcnMrKzsKKyAgICAgICAgfQor
ICAgICAgICBjb21tb25DaGFycyA9IHN0ZDo6bWluKGNvbW1vbkNoYXJzLCBteUNvbW1vbkNoYXJz
KTsKKyAgICAgICAgaWYgKG1pbkxlbmd0aCAhPSBjYXNlc1tpXS5zdHJpbmctPmxlbmd0aCgpKQor
ICAgICAgICAgICAgYWxsTGVuZ3Roc0VxdWFsID0gZmFsc2U7CisgICAgICAgIG1pbkxlbmd0aCA9
IHN0ZDo6bWluKG1pbkxlbmd0aCwgY2FzZXNbaV0uc3RyaW5nLT5sZW5ndGgoKSk7CisgICAgfQor
ICAgIAorICAgIGlmIChjaGVja2VkRXhhY3RMZW5ndGgpIHsKKyAgICAgICAgUkVMRUFTRV9BU1NF
UlQoYWxyZWFkeUNoZWNrZWRMZW5ndGggPT0gbWluTGVuZ3RoKTsKKyAgICAgICAgUkVMRUFTRV9B
U1NFUlQoYWxsTGVuZ3Roc0VxdWFsKTsKKyAgICB9CisgICAgCisgICAgUkVMRUFTRV9BU1NFUlQo
bWluTGVuZ3RoID49IGNvbW1vbkNoYXJzKTsKKyAgICAKKyAgICBpZiAodmVyYm9zZSkKKyAgICAg
ICAgZGF0YUxvZygibGVuZ3RoID0gIiwgbWluTGVuZ3RoLCAiLCBjb21tb25DaGFycyA9ICIsIGNv
bW1vbkNoYXJzLCAiLCBhbGxMZW5ndGhzRXF1YWwgPSAiLCBhbGxMZW5ndGhzRXF1YWwsICJcbiIp
OworICAgIAorICAgIGlmICghYWxsTGVuZ3Roc0VxdWFsICYmIGFscmVhZHlDaGVja2VkTGVuZ3Ro
IDwgbWluTGVuZ3RoKQorICAgICAgICBicmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6QmVsb3csIGxl
bmd0aCwgSW1tMzIobWluTGVuZ3RoKSwgZGF0YS0+ZmFsbFRocm91Z2gpOworICAgIGlmIChhbGxM
ZW5ndGhzRXF1YWwgJiYgKGFscmVhZHlDaGVja2VkTGVuZ3RoIDwgbWluTGVuZ3RoIHx8ICFjaGVj
a2VkRXhhY3RMZW5ndGgpKQorICAgICAgICBicmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1
YWwsIGxlbmd0aCwgSW1tMzIobWluTGVuZ3RoKSwgZGF0YS0+ZmFsbFRocm91Z2gpOworICAgIAor
ICAgIGZvciAodW5zaWduZWQgaSA9IG51bUNoZWNrZWQ7IGkgPCBjb21tb25DaGFyczsgKytpKSB7
CisgICAgICAgIGJyYW5jaDgoCisgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWws
IE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJ1ZmZlciwgaSksCisgICAgICAgICAgICBUcnVzdGVk
SW1tMzIoY2FzZXNbYmVnaW5dLnN0cmluZy0+YXQoaSkpLCBkYXRhLT5mYWxsVGhyb3VnaCk7Cisg
ICAgfQorICAgIAorICAgIGlmIChtaW5MZW5ndGggPT0gY29tbW9uQ2hhcnMpIHsKKyAgICAgICAg
Ly8gVGhpcyBpcyB0aGUgY2FzZSB3aGVyZSBvbmUgb2YgdGhlIGNhc2VzIGlzIGEgcHJlZml4IG9m
IGFsbCBvZiB0aGUgb3RoZXIgY2FzZXMuCisgICAgICAgIC8vIFdlJ3ZlIGFscmVhZHkgY2hlY2tl
ZCB0aGF0IHRoZSBpbnB1dCBzdHJpbmcgaXMgYSBwcmVmaXggb2YgYWxsIG9mIHRoZSBjYXNlcywK
KyAgICAgICAgLy8gc28gd2UganVzdCBjaGVjayBsZW5ndGggdG8ganVtcCB0byB0aGF0IGNhc2Uu
CisgICAgICAgIAorICAgICAgICBpZiAoIUFTU0VSVF9ESVNBQkxFRCkgeworICAgICAgICAgICAg
QVNTRVJUKGNhc2VzW2JlZ2luXS5zdHJpbmctPmxlbmd0aCgpID09IGNvbW1vbkNoYXJzKTsKKyAg
ICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IGJlZ2luICsgMTsgaSA8IGVuZDsgKytpKQorICAg
ICAgICAgICAgICAgIEFTU0VSVChjYXNlc1tpXS5zdHJpbmctPmxlbmd0aCgpID4gY29tbW9uQ2hh
cnMpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBpZiAoYWxsTGVuZ3Roc0VxdWFsKSB7
CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChlbmQgPT0gYmVnaW4gKyAxKTsKKyAgICAgICAg
ICAgIGp1bXAoY2FzZXNbYmVnaW5dLnRhcmdldCwgRm9yY2VKdW1wKTsKKyAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgYnJhbmNoMzIoTWFjcm9Bc3NlbWJs
ZXI6OkVxdWFsLCBsZW5ndGgsIEltbTMyKGNvbW1vbkNoYXJzKSwgY2FzZXNbYmVnaW5dLnRhcmdl
dCk7CisgICAgICAgIAorICAgICAgICAvLyBXZSd2ZSBjaGVja2VkIGlmIHRoZSBsZW5ndGggaXMg
Pj0gbWluTGVuZ3RoLCBhbmQgdGhlbiB3ZSBjaGVja2VkIGlmIHRoZQorICAgICAgICAvLyBsZW5n
dGggaXMgPT0gY29tbW9uQ2hhcnMuIFdlIGdldCB0byB0aGlzIHBvaW50IGlmIGl0IGlzID49IG1p
bkxlbmd0aCBidXQgbm90CisgICAgICAgIC8vID09IGNvbW1vbkNoYXJzLiBIZW5jZSB3ZSBrbm93
IHRoYXQgaXQgbm93IG11c3QgYmUgPj0gbWluTGVuZ3RoLCBpLmUuLCB0aGF0CisgICAgICAgIC8v
IGl0J3MgPj0gbWluTGVuZ3RoICsgMS4KKyAgICAgICAgZW1pdEJpbmFyeVN3aXRjaFN0cmluZ1Jl
Y3Vyc2UoCisgICAgICAgICAgICBkYXRhLCBjYXNlcywgY29tbW9uQ2hhcnMsIGJlZ2luICsgMSwg
ZW5kLCBidWZmZXIsIGxlbmd0aCwgdGVtcCwgbWluTGVuZ3RoICsgMSwgZmFsc2UpOworICAgICAg
ICByZXR1cm47CisgICAgfQorICAgIAorICAgIC8vIEF0IHRoaXMgcG9pbnQgd2Uga25vdyB0aGF0
IHRoZSBzdHJpbmcgaXMgbG9uZ2VyIHRoYW4gY29tbW9uQ2hhcnMsIGFuZCB3ZSd2ZSBvbmx5Cisg
ICAgLy8gdmVyaWZpZWQgY29tbW9uQ2hhcnMuIFVzZSBhIGJpbmFyeSBzd2l0Y2ggb24gdGhlIG5l
eHQgdW5jaGVja2VkIGNoYXJhY3RlciwgaS5lLgorICAgIC8vIHN0cmluZ1tjb21tb25DaGFyc10u
CisgICAgCisgICAgUkVMRUFTRV9BU1NFUlQoZW5kID49IGJlZ2luICsgMik7CisgICAgCisgICAg
bV9qaXQubG9hZDgoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYnVmZmVyLCBjb21tb25DaGFycyks
IHRlbXApOworICAgIAorICAgIFZlY3RvcjxDaGFyYWN0ZXJDYXNlPiBjaGFyYWN0ZXJDYXNlczsK
KyAgICBDaGFyYWN0ZXJDYXNlIGN1cnJlbnRDYXNlOworICAgIGN1cnJlbnRDYXNlLmNoYXJhY3Rl
ciA9IGNhc2VzW2JlZ2luXS5zdHJpbmctPmF0KGNvbW1vbkNoYXJzKTsKKyAgICBjdXJyZW50Q2Fz
ZS5iZWdpbiA9IGJlZ2luOworICAgIGN1cnJlbnRDYXNlLmVuZCA9IGJlZ2luICsgMTsKKyAgICBm
b3IgKHVuc2lnbmVkIGkgPSBiZWdpbiArIDE7IGkgPCBlbmQ7ICsraSkgeworICAgICAgICBpZiAo
Y2FzZXNbaV0uc3RyaW5nLT5hdChjb21tb25DaGFycykgIT0gY3VycmVudENhc2UuY2hhcmFjdGVy
KSB7CisgICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgICAgICBkYXRhTG9nKCJz
dHJpbmcoIiwgY2FzZXNbaV0uc3RyaW5nLCAiKVsiLCBjb21tb25DaGFycywgIl0gIT0gc3RyaW5n
KCIsIGNhc2VzW2JlZ2luXS5zdHJpbmcsICIpWyIsIGNvbW1vbkNoYXJzLCAiXVxuIik7CisgICAg
ICAgICAgICBjdXJyZW50Q2FzZS5lbmQgPSBpOworICAgICAgICAgICAgY2hhcmFjdGVyQ2FzZXMu
YXBwZW5kKGN1cnJlbnRDYXNlKTsKKyAgICAgICAgICAgIGN1cnJlbnRDYXNlLmNoYXJhY3RlciA9
IGNhc2VzW2ldLnN0cmluZy0+YXQoY29tbW9uQ2hhcnMpOworICAgICAgICAgICAgY3VycmVudENh
c2UuYmVnaW4gPSBpOworICAgICAgICAgICAgY3VycmVudENhc2UuZW5kID0gaSArIDE7CisgICAg
ICAgIH0gZWxzZQorICAgICAgICAgICAgY3VycmVudENhc2UuZW5kID0gaSArIDE7CisgICAgfQor
ICAgIGNoYXJhY3RlckNhc2VzLmFwcGVuZChjdXJyZW50Q2FzZSk7CisgICAgCisgICAgVmVjdG9y
PGludDY0X3Q+IGNoYXJhY3RlckNhc2VWYWx1ZXM7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IGNoYXJhY3RlckNhc2VzLnNpemUoKTsgKytpKQorICAgICAgICBjaGFyYWN0ZXJDYXNlVmFs
dWVzLmFwcGVuZChjaGFyYWN0ZXJDYXNlc1tpXS5jaGFyYWN0ZXIpOworICAgIAorICAgIEJpbmFy
eVN3aXRjaCBiaW5hcnlTd2l0Y2godGVtcCwgY2hhcmFjdGVyQ2FzZVZhbHVlcywgQmluYXJ5U3dp
dGNoOjpJbnQzMik7CisgICAgd2hpbGUgKGJpbmFyeVN3aXRjaC5hZHZhbmNlKG1faml0KSkgewor
ICAgICAgICBjb25zdCBDaGFyYWN0ZXJDYXNlJiBteUNhc2UgPSBjaGFyYWN0ZXJDYXNlc1tiaW5h
cnlTd2l0Y2guY2FzZUluZGV4KCldOworICAgICAgICBlbWl0QmluYXJ5U3dpdGNoU3RyaW5nUmVj
dXJzZSgKKyAgICAgICAgICAgIGRhdGEsIGNhc2VzLCBjb21tb25DaGFycyArIDEsIG15Q2FzZS5i
ZWdpbiwgbXlDYXNlLmVuZCwgYnVmZmVyLCBsZW5ndGgsCisgICAgICAgICAgICB0ZW1wLCBtaW5M
ZW5ndGgsIGFsbExlbmd0aHNFcXVhbCk7CisgICAgfQorICAgIAorICAgIGFkZEJyYW5jaChiaW5h
cnlTd2l0Y2guZmFsbFRocm91Z2goKSwgZGF0YS0+ZmFsbFRocm91Z2gpOworfQorCit2b2lkIFNw
ZWN1bGF0aXZlSklUOjplbWl0U3dpdGNoU3RyaW5nT25TdHJpbmcoU3dpdGNoRGF0YSogZGF0YSwg
R1BSUmVnIHN0cmluZykKK3sKKyAgICBkYXRhLT5kaWRVc2VKdW1wVGFibGUgPSB0cnVlOworICAg
IAorICAgIGJvb2wgY2FuRG9CaW5hcnlTd2l0Y2ggPSB0cnVlOworICAgIHVuc2lnbmVkIHRvdGFs
TGVuZ3RoID0gMDsKKyAgICAKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSBkYXRhLT5jYXNlcy5zaXpl
KCk7IGktLTspIHsKKyAgICAgICAgU3RyaW5nSW1wbCogc3RyaW5nID0gZGF0YS0+Y2FzZXNbaV0u
dmFsdWUuc3RyaW5nSW1wbCgpOworICAgICAgICBpZiAoIXN0cmluZy0+aXM4Qml0KCkpIHsKKyAg
ICAgICAgICAgIGNhbkRvQmluYXJ5U3dpdGNoID0gZmFsc2U7CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgfQorICAgICAgICBpZiAoc3RyaW5nLT5sZW5ndGgoKSA+IE9wdGlvbnM6Om1heGlt
dW1CaW5hcnlTdHJpbmdTd2l0Y2hDYXNlTGVuZ3RoKCkpIHsKKyAgICAgICAgICAgIGNhbkRvQmlu
YXJ5U3dpdGNoID0gZmFsc2U7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAg
ICB0b3RhbExlbmd0aCArPSBzdHJpbmctPmxlbmd0aCgpOworICAgIH0KKyAgICAKKyAgICBpZiAo
IWNhbkRvQmluYXJ5U3dpdGNoIHx8IHRvdGFsTGVuZ3RoID4gT3B0aW9uczo6bWF4aW11bUJpbmFy
eVN0cmluZ1N3aXRjaFRvdGFsTGVuZ3RoKCkpIHsKKyAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsK
KyAgICAgICAgY2FsbE9wZXJhdGlvbigKKyAgICAgICAgICAgIG9wZXJhdGlvblN3aXRjaFN0cmlu
Zywgc3RyaW5nLCBkYXRhLT5zd2l0Y2hUYWJsZUluZGV4LCBzdHJpbmcpOworICAgICAgICBtX2pp
dC5qdW1wKHN0cmluZyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgCisgICAgR1BSVGVt
cG9yYXJ5IGxlbmd0aCh0aGlzKTsKKyAgICBHUFJUZW1wb3JhcnkgdGVtcCh0aGlzKTsKKyAgICAK
KyAgICBHUFJSZWcgbGVuZ3RoR1BSID0gbGVuZ3RoLmdwcigpOworICAgIEdQUlJlZyB0ZW1wR1BS
ID0gdGVtcC5ncHIoKTsKKyAgICAKKyAgICBtX2ppdC5sb2FkMzIoTWFjcm9Bc3NlbWJsZXI6OkFk
ZHJlc3Moc3RyaW5nLCBKU1N0cmluZzo6b2Zmc2V0T2ZMZW5ndGgoKSksIGxlbmd0aEdQUik7Cisg
ICAgbV9qaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzdHJpbmcsIEpTU3RyaW5n
OjpvZmZzZXRPZlZhbHVlKCkpLCBzdHJpbmcpOworICAgIAorICAgIE1hY3JvQXNzZW1ibGVyOjpK
dW1wTGlzdCBzbG93Q2FzZXM7CisgICAgc2xvd0Nhc2VzLmFwcGVuZChtX2ppdC5icmFuY2hUZXN0
UHRyKE1hY3JvQXNzZW1ibGVyOjpaZXJvLCBzdHJpbmcpKTsKKyAgICBzbG93Q2FzZXMuYXBwZW5k
KG1faml0LmJyYW5jaFRlc3QzMigKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Olplcm8sCisgICAg
ICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHN0cmluZywgU3RyaW5nSW1wbDo6ZmxhZ3NPZmZz
ZXQoKSksCisgICAgICAgIFRydXN0ZWRJbW0zMihTdHJpbmdJbXBsOjpmbGFnSXM4Qml0KCkpKSk7
CisgICAgCisgICAgbV9qaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzdHJpbmcs
IFN0cmluZ0ltcGw6OmRhdGFPZmZzZXQoKSksIHN0cmluZyk7CisgICAgCisgICAgVmVjdG9yPFN0
cmluZ1N3aXRjaENhc2U+IGNhc2VzOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBkYXRh
LT5jYXNlcy5zaXplKCk7ICsraSkgeworICAgICAgICBjYXNlcy5hcHBlbmQoCisgICAgICAgICAg
ICBTdHJpbmdTd2l0Y2hDYXNlKGRhdGEtPmNhc2VzW2ldLnZhbHVlLnN0cmluZ0ltcGwoKSwgZGF0
YS0+Y2FzZXNbaV0udGFyZ2V0KSk7CisgICAgfQorICAgIAorICAgIHN0ZDo6c29ydChjYXNlcy5i
ZWdpbigpLCBjYXNlcy5lbmQoKSk7CisgICAgCisgICAgZW1pdEJpbmFyeVN3aXRjaFN0cmluZ1Jl
Y3Vyc2UoCisgICAgICAgIGRhdGEsIGNhc2VzLCAwLCAwLCBjYXNlcy5zaXplKCksIHN0cmluZywg
bGVuZ3RoR1BSLCB0ZW1wR1BSLCAwLCBmYWxzZSk7CisgICAgCisgICAgc2xvd0Nhc2VzLmxpbmso
Jm1faml0KTsKKyAgICBzaWxlbnRTcGlsbEFsbFJlZ2lzdGVycyhzdHJpbmcpOworICAgIGNhbGxP
cGVyYXRpb24ob3BlcmF0aW9uU3dpdGNoU3RyaW5nLCBzdHJpbmcsIGRhdGEtPnN3aXRjaFRhYmxl
SW5kZXgsIHN0cmluZyk7CisgICAgc2lsZW50RmlsbEFsbFJlZ2lzdGVycyhzdHJpbmcpOworICAg
IG1faml0Lmp1bXAoc3RyaW5nKTsKK30KKwordm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdFN3aXRj
aFN0cmluZyhOb2RlKiBub2RlLCBTd2l0Y2hEYXRhKiBkYXRhKQoreworICAgIHN3aXRjaCAobm9k
ZS0+Y2hpbGQxKCkudXNlS2luZCgpKSB7CisgICAgY2FzZSBTdHJpbmdJZGVudFVzZTogeworICAg
ICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBvcDEodGhpcywgbm9kZS0+Y2hpbGQxKCkpOworICAg
ICAgICBHUFJUZW1wb3JhcnkgdGVtcCh0aGlzKTsKKyAgICAgICAgCisgICAgICAgIEdQUlJlZyBv
cDFHUFIgPSBvcDEuZ3ByKCk7CisgICAgICAgIEdQUlJlZyB0ZW1wR1BSID0gdGVtcC5ncHIoKTsK
KyAgICAgICAgCisgICAgICAgIHNwZWN1bGF0ZVN0cmluZyhub2RlLT5jaGlsZDEoKSwgb3AxR1BS
KTsKKyAgICAgICAgc3BlY3VsYXRlU3RyaW5nSWRlbnRBbmRMb2FkU3RvcmFnZShub2RlLT5jaGls
ZDEoKSwgb3AxR1BSLCB0ZW1wR1BSKTsKKyAgICAgICAgCisgICAgICAgIFZlY3RvcjxpbnQ2NF90
PiBpZGVudGlmaWVyQ2FzZVZhbHVlczsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IGRhdGEtPmNhc2VzLnNpemUoKTsgKytpKSB7CisgICAgICAgICAgICBpZGVudGlmaWVyQ2FzZVZh
bHVlcy5hcHBlbmQoCisgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8aW50NjRfdD4oYml0d2lz
ZV9jYXN0PGludHB0cl90PihkYXRhLT5jYXNlc1tpXS52YWx1ZS5zdHJpbmdJbXBsKCkpKSk7Cisg
ICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIEJpbmFyeVN3aXRjaCBiaW5hcnlTd2l0Y2godGVt
cEdQUiwgaWRlbnRpZmllckNhc2VWYWx1ZXMsIEJpbmFyeVN3aXRjaDo6SW50UHRyKTsKKyAgICAg
ICAgd2hpbGUgKGJpbmFyeVN3aXRjaC5hZHZhbmNlKG1faml0KSkKKyAgICAgICAgICAgIGp1bXAo
ZGF0YS0+Y2FzZXNbYmluYXJ5U3dpdGNoLmNhc2VJbmRleCgpXS50YXJnZXQsIEZvcmNlSnVtcCk7
CisgICAgICAgIGFkZEJyYW5jaChiaW5hcnlTd2l0Y2guZmFsbFRocm91Z2goKSwgZGF0YS0+ZmFs
bFRocm91Z2gpOworICAgICAgICAKKyAgICAgICAgbm9SZXN1bHQobm9kZSk7CisgICAgICAgIGJy
ZWFrOworICAgIH0KKyAgICAgICAgCisgICAgY2FzZSBTdHJpbmdVc2U6IHsKKyAgICAgICAgU3Bl
Y3VsYXRlQ2VsbE9wZXJhbmQgb3AxKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgCisg
ICAgICAgIEdQUlJlZyBvcDFHUFIgPSBvcDEuZ3ByKCk7CisgICAgICAgIAorICAgICAgICBvcDEu
dXNlKCk7CisKKyAgICAgICAgc3BlY3VsYXRlU3RyaW5nKG5vZGUtPmNoaWxkMSgpLCBvcDFHUFIp
OworICAgICAgICBlbWl0U3dpdGNoU3RyaW5nT25TdHJpbmcoZGF0YSwgb3AxR1BSKTsKKyAgICAg
ICAgbm9SZXN1bHQobm9kZSwgVXNlQ2hpbGRyZW5DYWxsZWRFeHBsaWNpdGx5KTsKKyAgICAgICAg
YnJlYWs7CisgICAgfQorICAgICAgICAKKyAgICBjYXNlIFVudHlwZWRVc2U6IHsKKyAgICAgICAg
SlNWYWx1ZU9wZXJhbmQgb3AxKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgCisgICAg
ICAgIEpTVmFsdWVSZWdzIG9wMVJlZ3MgPSBvcDEuanNWYWx1ZVJlZ3MoKTsKKyAgICAgICAgCisg
ICAgICAgIG9wMS51c2UoKTsKKyAgICAgICAgCisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICAgICAg
YWRkQnJhbmNoKAorICAgICAgICAgICAgbV9qaXQuYnJhbmNoVGVzdDY0KAorICAgICAgICAgICAg
ICAgIE1hY3JvQXNzZW1ibGVyOjpOb25aZXJvLCBvcDFSZWdzLmdwcigpLCBHUFJJbmZvOjp0YWdN
YXNrUmVnaXN0ZXIpLAorICAgICAgICAgICAgZGF0YS0+ZmFsbFRocm91Z2gpOworI2Vsc2UKKyAg
ICAgICAgYWRkQnJhbmNoKAorICAgICAgICAgICAgbV9qaXQuYnJhbmNoMzIoCisgICAgICAgICAg
ICAgICAgTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBvcDFSZWdzLnRhZ0dQUigpLCBUcnVzdGVk
SW1tMzIoSlNWYWx1ZTo6Q2VsbFRhZykpLAorICAgICAgICAgICAgZGF0YS0+ZmFsbFRocm91Z2gp
OworI2VuZGlmCisgICAgICAgIAorICAgICAgICBhZGRCcmFuY2goCisgICAgICAgICAgICBtX2pp
dC5icmFuY2hQdHIoCisgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLAor
ICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKG9wMVJlZ3MucGF5bG9hZEdQ
UigpLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwKKyAgICAgICAgICAgICAgICBNYWNyb0Fz
c2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC52bSgpLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkp
KSwKKyAgICAgICAgICAgIGRhdGEtPmZhbGxUaHJvdWdoKTsKKyAgICAgICAgCisgICAgICAgIGVt
aXRTd2l0Y2hTdHJpbmdPblN0cmluZyhkYXRhLCBvcDFSZWdzLnBheWxvYWRHUFIoKSk7CisgICAg
ICAgIG5vUmVzdWx0KG5vZGUsIFVzZUNoaWxkcmVuQ2FsbGVkRXhwbGljaXRseSk7CisgICAgICAg
IGJyZWFrOworICAgIH0KKyAgICAgICAgCisgICAgZGVmYXVsdDoKKyAgICAgICAgUkVMRUFTRV9B
U1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorfQorCiB2b2lkIFNw
ZWN1bGF0aXZlSklUOjplbWl0U3dpdGNoKE5vZGUqIG5vZGUpCiB7CiAgICAgU3dpdGNoRGF0YSog
ZGF0YSA9IG5vZGUtPnN3aXRjaERhdGEoKTsKQEAgLTQ4NzIsMTAgKzUxNjgsMjAgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6ZW1pdFN3aXRjaChOb2RlKiBubwogICAgIGNhc2UgU3dpdGNoQ2hhcjog
ewogICAgICAgICBlbWl0U3dpdGNoQ2hhcihub2RlLCBkYXRhKTsKICAgICAgICAgcmV0dXJuOwor
ICAgIH0KKyAgICBjYXNlIFN3aXRjaFN0cmluZzogeworICAgICAgICBlbWl0U3dpdGNoU3RyaW5n
KG5vZGUsIGRhdGEpOworICAgICAgICByZXR1cm47CiAgICAgfSB9CiAgICAgUkVMRUFTRV9BU1NF
UlRfTk9UX1JFQUNIRUQoKTsKIH0KIAordm9pZCBTcGVjdWxhdGl2ZUpJVDo6YWRkQnJhbmNoKGNv
bnN0IE1hY3JvQXNzZW1ibGVyOjpKdW1wTGlzdCYganVtcCwgQmxvY2tJbmRleCBkZXN0aW5hdGlv
bikKK3sKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSBqdW1wLmp1bXBzKCkuc2l6ZSgpOyBpLS07KQor
ICAgICAgICBhZGRCcmFuY2goanVtcC5qdW1wcygpW2ldLCBkZXN0aW5hdGlvbik7Cit9CisKIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmxpbmtCcmFuY2hlcygpCiB7CiAgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBtX2JyYW5jaGVzLnNpemUoKTsgKytpKSB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCShyZXZpc2lvbiAxNTE5NDQpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgJKHdvcmtpbmcgY29w
eSkKQEAgLTk1MSw2ICs5NTEsMTEgQEAgcHVibGljOgogICAgICAgICBtX2ppdC5zZXR1cEFyZ3Vt
ZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbVB0cihzaXplKSk7CiAgICAgICAgIHJldHVybiBh
cHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsK
ICAgICB9CisgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihQX0RGR09wZXJhdGlv
bl9FU0pzcyBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIHNpemVfdCBpbmRleCwgR1BSUmVnIGFy
ZzEpCisgICAgeworICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1
c3RlZEltbVB0cihpbmRleCksIGFyZzEpOworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhF
eGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CisgICAgfQogICAgIEpJ
VENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oUF9ERkdPcGVyYXRpb25fRVN0IG9wZXJhdGlv
biwgR1BSUmVnIHJlc3VsdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgewogICAgICAgICBt
X2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbVB0cihzdHJ1Y3R1cmUp
KTsKQEAgLTE3NzAsNiArMTc3NSwxMiBAQCBwdWJsaWM6CiAjZW5kaWYKICAgICAKICAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPgorICAgIHZvaWQgYnJhbmNoOChKSVRDb21waWxl
cjo6UmVsYXRpb25hbENvbmRpdGlvbiBjb25kLCBUIGxlZnQsIFUgcmlnaHQsIEJsb2NrSW5kZXgg
ZGVzdGluYXRpb24pCisgICAgeworICAgICAgICByZXR1cm4gYWRkQnJhbmNoKG1faml0LmJyYW5j
aDgoY29uZCwgbGVmdCwgcmlnaHQpLCBkZXN0aW5hdGlvbik7CisgICAgfQorICAgIAorICAgIHRl
bXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+CiAgICAgdm9pZCBicmFuY2hQdHIoSklUQ29t
cGlsZXI6OlJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwgVCBsZWZ0LCBVIHJpZ2h0LCBCbG9ja0lu
ZGV4IGRlc3RpbmF0aW9uKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkZEJyYW5jaChtX2ppdC5i
cmFuY2hQdHIoY29uZCwgbGVmdCwgcmlnaHQpLCBkZXN0aW5hdGlvbik7CkBAIC0xODE1LDYgKzE4
MjYsNyBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBtX2JyYW5jaGVzLmFwcGVuZChCcmFuY2hS
ZWNvcmQoanVtcCwgZGVzdGluYXRpb24pKTsKICAgICB9CisgICAgdm9pZCBhZGRCcmFuY2goY29u
c3QgTWFjcm9Bc3NlbWJsZXI6Okp1bXBMaXN0JiBqdW1wLCBCbG9ja0luZGV4IGRlc3RpbmF0aW9u
KTsKIAogICAgIHZvaWQgbGlua0JyYW5jaGVzKCk7CiAKQEAgLTE4NjIsMTAgKzE4NzQsMzIgQEAg
cHVibGljOgogICAgIHZvaWQgY29tcGlsZVN0cmluZ0lkZW50RXF1YWxpdHkoTm9kZSopOwogICAg
IHZvaWQgZW1pdE9iamVjdE9yT3RoZXJCcmFuY2goRWRnZSB2YWx1ZSwgQmxvY2tJbmRleCB0YWtl
biwgQmxvY2tJbmRleCBub3RUYWtlbik7CiAgICAgdm9pZCBlbWl0QnJhbmNoKE5vZGUqKTsKKyAg
ICAKKyAgICBzdHJ1Y3QgU3RyaW5nU3dpdGNoQ2FzZSB7CisgICAgICAgIFN0cmluZ1N3aXRjaENh
c2UoKSB7IH0KKyAgICAgICAgCisgICAgICAgIFN0cmluZ1N3aXRjaENhc2UoU3RyaW5nSW1wbCog
c3RyaW5nLCBCbG9ja0luZGV4IHRhcmdldCkKKyAgICAgICAgICAgIDogc3RyaW5nKHN0cmluZykK
KyAgICAgICAgICAgICwgdGFyZ2V0KHRhcmdldCkKKyAgICAgICAgeworICAgICAgICB9CisgICAg
ICAgIAorICAgICAgICBib29sIG9wZXJhdG9yPChjb25zdCBTdHJpbmdTd2l0Y2hDYXNlJiBvdGhl
cikgY29uc3Q7CisgICAgICAgIAorICAgICAgICBTdHJpbmdJbXBsKiBzdHJpbmc7CisgICAgICAg
IEJsb2NrSW5kZXggdGFyZ2V0OworICAgIH07CisgICAgCiAgICAgdm9pZCBlbWl0U3dpdGNoSW50
SnVtcChTd2l0Y2hEYXRhKiwgR1BSUmVnIHZhbHVlLCBHUFJSZWcgc2NyYXRjaCk7CiAgICAgdm9p
ZCBlbWl0U3dpdGNoSW1tKE5vZGUqLCBTd2l0Y2hEYXRhKik7CiAgICAgdm9pZCBlbWl0U3dpdGNo
Q2hhclN0cmluZ0p1bXAoU3dpdGNoRGF0YSosIEdQUlJlZyB2YWx1ZSwgR1BSUmVnIHNjcmF0Y2gp
OwogICAgIHZvaWQgZW1pdFN3aXRjaENoYXIoTm9kZSosIFN3aXRjaERhdGEqKTsKKyAgICB2b2lk
IGVtaXRCaW5hcnlTd2l0Y2hTdHJpbmdSZWN1cnNlKAorICAgICAgICBTd2l0Y2hEYXRhKiwgY29u
c3QgVmVjdG9yPFN0cmluZ1N3aXRjaENhc2U+JiwgdW5zaWduZWQgbnVtQ2hlY2tlZCwKKyAgICAg
ICAgdW5zaWduZWQgYmVnaW4sIHVuc2lnbmVkIGVuZCwgR1BSUmVnIGJ1ZmZlciwgR1BSUmVnIGxl
bmd0aCwgR1BSUmVnIHRlbXAsCisgICAgICAgIHVuc2lnbmVkIGFscmVhZHlDaGVja2VkTGVuZ3Ro
LCBib29sIGNoZWNrZWRFeGFjdExlbmd0aCk7CisgICAgdm9pZCBlbWl0U3dpdGNoU3RyaW5nT25T
dHJpbmcoU3dpdGNoRGF0YSosIEdQUlJlZyBzdHJpbmcpOworICAgIHZvaWQgZW1pdFN3aXRjaFN0
cmluZyhOb2RlKiwgU3dpdGNoRGF0YSopOwogICAgIHZvaWQgZW1pdFN3aXRjaChOb2RlKik7CiAg
ICAgCiAgICAgdm9pZCBjb21waWxlVG9TdHJpbmdPbkNlbGwoTm9kZSopOwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvTExWTS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvTExWTS5jcHAJKHJldmlzaW9u
IDE1MTk0NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0xMVk0u
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTYzLDcgKzE1NjMsMTIgQEAgcHJpdmF0ZToKICAgICAg
ICAgICAgIG1fb3V0LmFwcGVuZFRvKGNvbnRpbnVhdGlvbiwgbGFzdE5leHQpOwogICAgICAgICAg
ICAgYnVpbGRTd2l0Y2goZGF0YSwgbV9vdXQuaW50MTYsIG1fb3V0LnBoaShtX291dC5pbnQxNiwg
Y2hhcmFjdGVycykpOwogICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9IH0KKyAgICAgICAg
fQorICAgICAgICAKKyAgICAgICAgY2FzZSBTd2l0Y2hTdHJpbmc6CisgICAgICAgICAgICBSRUxF
QVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0K
ICAgICAgICAgCiAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfQpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuaAkocmV2aXNpb24gMTUx
OTQ0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xMDcsNiArMTA3LDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgLyogRGVwdGgg
b2YgaW5saW5lIHN0YWNrLCBzbyAxID0gbm8gaW5saW5pbmcsIDIgPSBvbmUgbGV2ZWwsIGV0Yy4g
Ki8gXAogICAgIHYodW5zaWduZWQsIG1heGltdW1JbmxpbmluZ0RlcHRoLCA1KSBcCiAgICAgXAor
ICAgIHYodW5zaWduZWQsIG1heGltdW1CaW5hcnlTdHJpbmdTd2l0Y2hDYXNlTGVuZ3RoLCA1MCkg
XAorICAgIHYodW5zaWduZWQsIG1heGltdW1CaW5hcnlTdHJpbmdTd2l0Y2hUb3RhbExlbmd0aCwg
MjAwMCkgXAorICAgIFwKICAgICB2KGludDMyLCB0aHJlc2hvbGRGb3JKSVRBZnRlcldhcm1VcCwg
MTAwKSBcCiAgICAgdihpbnQzMiwgdGhyZXNob2xkRm9ySklUU29vbiwgMTAwKSBcCiAgICAgXApJ
bmRleDogU291cmNlL1dURi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi9DaGFu
Z2VMb2cJKHJldmlzaW9uIDE1MTk3MCkKKysrIFNvdXJjZS9XVEYvQ2hhbmdlTG9nCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTMtMDYtMjUgIEZpbGlwIFBpemxvICA8ZnBpemxv
QGFwcGxlLmNvbT4KKworICAgICAgICBmb3VydGhUaWVyOiBERkcgc2hvdWxkIHN1cHBvcnQgc3dp
dGNoX3N0cmluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTE3OTY3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisgICAgICAg
IAorICAgICAgICBNYWtlIGl0IHBvc3NpYmxlIHRvIGNvbXBhcmUgYSBSZWZQdHI8U3RyaW5nSW1w
bD4gYW5kIGEgU3RyaW5nSW1wbCogd2l0aG91dAorICAgICAgICBoYXZpbmcgdG8gcmVmIHRoZSBT
dHJpbmdJbXBsLgorCisgICAgICAgICogd3RmL3RleHQvU3RyaW5nSGFzaC5oOgorICAgICAgICAo
V1RGOjpTdHJpbmdIYXNoOjplcXVhbCk6CisKIDIwMTMtMDYtMjQgIEZpbGlwIFBpemxvICA8ZnBp
emxvQGFwcGxlLmNvbT4KIAogICAgICAgICBmb3VydGhUaWVyOiBDb3VudCBleHRlcm5hbCBtZW1v
cnkgdXNhZ2UgdG93YXJkcyBoZWFwIGZvb3RwcmludApJbmRleDogU291cmNlL1dURi93dGYvdGV4
dC9TdHJpbmdIYXNoLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdI
YXNoLmgJKHJldmlzaW9uIDE1MTk0NCkKKysrIFNvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nSGFz
aC5oCSh3b3JraW5nIGNvcHkpCkBAIC03Myw2ICs3MywxNCBAQCBuYW1lc3BhY2UgV1RGIHsKICAg
ICAgICAgewogICAgICAgICAgICAgcmV0dXJuIGVxdWFsKGEuZ2V0KCksIGIuZ2V0KCkpOwogICAg
ICAgICB9CisgICAgICAgIHN0YXRpYyBib29sIGVxdWFsKGNvbnN0IFJlZlB0cjxTdHJpbmdJbXBs
PiYgYSwgY29uc3QgU3RyaW5nSW1wbCogYikKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJu
IGVxdWFsKGEuZ2V0KCksIGIpOworICAgICAgICB9CisgICAgICAgIHN0YXRpYyBib29sIGVxdWFs
KGNvbnN0IFN0cmluZ0ltcGwqIGEsIGNvbnN0IFJlZlB0cjxTdHJpbmdJbXBsPiYgYikKKyAgICAg
ICAgeworICAgICAgICAgICAgcmV0dXJuIGVxdWFsKGEsIGIuZ2V0KCkpOworICAgICAgICB9CiAK
ICAgICAgICAgc3RhdGljIHVuc2lnbmVkIGhhc2goY29uc3QgU3RyaW5nJiBrZXkpIHsgcmV0dXJu
IGtleS5pbXBsKCktPmhhc2goKTsgfQogICAgICAgICBzdGF0aWMgYm9vbCBlcXVhbChjb25zdCBT
dHJpbmcmIGEsIGNvbnN0IFN0cmluZyYgYikKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDE1MTk3MCkKKysr
IExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ2IEBACisy
MDEzLTA2LTI1ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAgZm91
cnRoVGllcjogREZHIHNob3VsZCBzdXBwb3J0IHN3aXRjaF9zdHJpbmcKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExNzk2NworCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZmFzdC9qcy9yZWdyZXNzL3Njcmlw
dC10ZXN0cy9zd2l0Y2gtc3RyaW5nLWJhc2ljLWJpZy12YXIuanM6IEFkZGVkLgorICAgICAgICAo
Zm9vKToKKyAgICAgICAgKG1ha2UpOgorICAgICAgICAqIGZhc3QvanMvcmVncmVzcy9zY3JpcHQt
dGVzdHMvc3dpdGNoLXN0cmluZy1iYXNpYy1iaWcuanM6IEFkZGVkLgorICAgICAgICAoZm9vKToK
KyAgICAgICAgKG1ha2UpOgorICAgICAgICAqIGZhc3QvanMvcmVncmVzcy9zY3JpcHQtdGVzdHMv
c3dpdGNoLXN0cmluZy1iYXNpYy12YXIuanM6IEFkZGVkLgorICAgICAgICAoZm9vKToKKyAgICAg
ICAgKG1ha2UpOgorICAgICAgICAqIGZhc3QvanMvcmVncmVzcy9zY3JpcHQtdGVzdHMvc3dpdGNo
LXN0cmluZy1iYXNpYy5qczogQWRkZWQuCisgICAgICAgIChmb28pOgorICAgICAgICAqIGZhc3Qv
anMvcmVncmVzcy9zY3JpcHQtdGVzdHMvc3dpdGNoLXN0cmluZy1iaWctbGVuZ3RoLXRvd2VyLXZh
ci5qczogQWRkZWQuCisgICAgICAgIChmb28pOgorICAgICAgICAqIGZhc3QvanMvcmVncmVzcy9z
Y3JpcHQtdGVzdHMvc3dpdGNoLXN0cmluZy1sZW5ndGgtdG93ZXItdmFyLmpzOiBBZGRlZC4KKyAg
ICAgICAgKGZvbyk6CisgICAgICAgICogZmFzdC9qcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9zd2l0
Y2gtc3RyaW5nLWxlbmd0aC10b3dlci5qczogQWRkZWQuCisgICAgICAgIChmb28pOgorICAgICAg
ICAqIGZhc3QvanMvcmVncmVzcy9zY3JpcHQtdGVzdHMvc3dpdGNoLXN0cmluZy1zaG9ydC5qczog
QWRkZWQuCisgICAgICAgIChmb28pOgorICAgICAgICAqIGZhc3QvanMvcmVncmVzcy9zd2l0Y2gt
c3RyaW5nLWJhc2ljLWJpZy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvanMv
cmVncmVzcy9zd2l0Y2gtc3RyaW5nLWJhc2ljLWJpZy12YXItZXhwZWN0ZWQudHh0OiBBZGRlZC4K
KyAgICAgICAgKiBmYXN0L2pzL3JlZ3Jlc3Mvc3dpdGNoLXN0cmluZy1iYXNpYy1iaWctdmFyLmh0
bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvanMvcmVncmVzcy9zd2l0Y2gtc3RyaW5nLWJhc2lj
LWJpZy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2pzL3JlZ3Jlc3Mvc3dpdGNoLXN0cmlu
Zy1iYXNpYy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvanMvcmVncmVzcy9z
d2l0Y2gtc3RyaW5nLWJhc2ljLXZhci1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZh
c3QvanMvcmVncmVzcy9zd2l0Y2gtc3RyaW5nLWJhc2ljLXZhci5odG1sOiBBZGRlZC4KKyAgICAg
ICAgKiBmYXN0L2pzL3JlZ3Jlc3Mvc3dpdGNoLXN0cmluZy1iYXNpYy5odG1sOiBBZGRlZC4KKyAg
ICAgICAgKiBmYXN0L2pzL3JlZ3Jlc3Mvc3dpdGNoLXN0cmluZy1iaWctbGVuZ3RoLXRvd2VyLXZh
ci1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvanMvcmVncmVzcy9zd2l0Y2gt
c3RyaW5nLWJpZy1sZW5ndGgtdG93ZXItdmFyLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3Qv
anMvcmVncmVzcy9zd2l0Y2gtc3RyaW5nLWxlbmd0aC10b3dlci1leHBlY3RlZC50eHQ6IEFkZGVk
LgorICAgICAgICAqIGZhc3QvanMvcmVncmVzcy9zd2l0Y2gtc3RyaW5nLWxlbmd0aC10b3dlci12
YXItZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2pzL3JlZ3Jlc3Mvc3dpdGNo
LXN0cmluZy1sZW5ndGgtdG93ZXItdmFyLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvanMv
cmVncmVzcy9zd2l0Y2gtc3RyaW5nLWxlbmd0aC10b3dlci5odG1sOiBBZGRlZC4KKyAgICAgICAg
KiBmYXN0L2pzL3JlZ3Jlc3Mvc3dpdGNoLXN0cmluZy1zaG9ydC1leHBlY3RlZC50eHQ6IEFkZGVk
LgorICAgICAgICAqIGZhc3QvanMvcmVncmVzcy9zd2l0Y2gtc3RyaW5nLXNob3J0Lmh0bWw6IEFk
ZGVkLgorCiAyMDEzLTA2LTIzICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CiAKICAg
ICAgICAgZm91cnRoVGllcjogREZHIHNob3VsZCBvcHRpbWl6ZSBpZGVudGlmaWVyIHN0cmluZyBl
cXVhbGl0eQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9qcy9yZWdyZXNzL3N3aXRjaC1zdHJpbmct
YmFzaWMtYmlnLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2pz
L3JlZ3Jlc3Mvc3dpdGNoLXN0cmluZy1iYXNpYy1iaWctZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAw
KQorKysgTGF5b3V0VGVzdHMvZmFzdC9qcy9yZWdyZXNzL3N3aXRjaC1zdHJpbmctYmFzaWMtYmln
LWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEwIEBACitKU1JlZ3Jlc3Mv
c3dpdGNoLXN0cmluZy1iYXNpYy1iaWcKKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2Vy
aWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisK
K1BBU1Mgbm8gZXhjZXB0aW9uIHRocm93bgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1
ZQorCitURVNUIENPTVBMRVRFCisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvanMvcmVncmVzcy9z
d2l0Y2gtc3RyaW5nLWJhc2ljLWJpZy12YXItZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2Zhc3QvanMvcmVncmVzcy9zd2l0Y2gtc3RyaW5nLWJhc2ljLWJpZy12YXItZXhw
ZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9qcy9yZWdyZXNzL3N3
aXRjaC1zdHJpbmctYmFzaWMtYmlnLXZhci1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAg
LTAsMCArMSwxMCBAQAorSlNSZWdyZXNzL3N3aXRjaC1zdHJpbmctYmFzaWMtYmlnLXZhcgorCitP
biBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xs
b3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBubyBleGNlcHRpb24gdGhyb3duCitQ
QVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpJbmRleDog
TGF5b3V0VGVzdHMvZmFzdC9qcy9yZWdyZXNzL3N3aXRjaC1zdHJpbmctYmFzaWMtYmlnLXZhci5o
dG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvanMvcmVncmVzcy9zd2l0Y2gtc3Ry
aW5nLWJhc2ljLWJpZy12YXIuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3Qv
anMvcmVncmVzcy9zd2l0Y2gtc3RyaW5nLWJhc2ljLWJpZy12YXIuaHRtbAkod29ya2luZyBjb3B5
KQpAQCAtMCwwICsxLDEyIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBI
VE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10
ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSJyZXNv
dXJjZXMvcmVncmVzcy1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0
cy9zd2l0Y2gtc3RyaW5nLWJhc2ljLWJpZy12YXIuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
InJlc291cmNlcy9yZWdyZXNzLXBvc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jl
c291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpJbmRl
eDogTGF5b3V0VGVzdHMvZmFzdC9qcy9yZWdyZXNzL3N3aXRjaC1zdHJpbmctYmFzaWMtYmlnLmh0
bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9qcy9yZWdyZXNzL3N3aXRjaC1zdHJp
bmctYmFzaWMtYmlnLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2pzL3Jl
Z3Jlc3Mvc3dpdGNoLXN0cmluZy1iYXNpYy1iaWcuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCww
ICsxLDEyIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+
Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5q
cyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvcmVn
cmVzcy1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy9zd2l0Y2gt
c3RyaW5nLWJhc2ljLWJpZy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3Jl
Z3Jlc3MtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRl
c3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0
cy9mYXN0L2pzL3JlZ3Jlc3Mvc3dpdGNoLXN0cmluZy1iYXNpYy1leHBlY3RlZC50eHQKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9qcy9yZWdyZXNzL3N3aXRjaC1zdHJpbmctYmFzaWMt
ZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9qcy9yZWdyZXNz
L3N3aXRjaC1zdHJpbmctYmFzaWMtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAg
KzEsMTAgQEAKK0pTUmVncmVzcy9zd2l0Y2gtc3RyaW5nLWJhc2ljCisKK09uIHN1Y2Nlc3MsIHlv
dSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNU
IENPTVBMRVRFIi4KKworCitQQVNTIG5vIGV4Y2VwdGlvbiB0aHJvd24KK1BBU1Mgc3VjY2Vzc2Z1
bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCkluZGV4OiBMYXlvdXRUZXN0cy9m
YXN0L2pzL3JlZ3Jlc3Mvc3dpdGNoLXN0cmluZy1iYXNpYy12YXItZXhwZWN0ZWQudHh0Cj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvanMvcmVncmVzcy9zd2l0Y2gtc3RyaW5nLWJhc2lj
LXZhci1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2pzL3Jl
Z3Jlc3Mvc3dpdGNoLXN0cmluZy1iYXNpYy12YXItZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkp
CkBAIC0wLDAgKzEsMTAgQEAKK0pTUmVncmVzcy9zd2l0Y2gtc3RyaW5nLWJhc2ljLXZhcgorCitP
biBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xs
b3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBubyBleGNlcHRpb24gdGhyb3duCitQ
QVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpJbmRleDog
TGF5b3V0VGVzdHMvZmFzdC9qcy9yZWdyZXNzL3N3aXRjaC1zdHJpbmctYmFzaWMtdmFyLmh0bWwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9qcy9yZWdyZXNzL3N3aXRjaC1zdHJpbmct
YmFzaWMtdmFyLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2pzL3JlZ3Jl
c3Mvc3dpdGNoLXN0cmluZy1iYXNpYy12YXIuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsx
LDEyIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8
aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+
PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvcmVncmVz
cy1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy9zd2l0Y2gtc3Ry
aW5nLWJhc2ljLXZhci5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3JlZ3Jl
c3MtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3Qt
cG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9m
YXN0L2pzL3JlZ3Jlc3Mvc3dpdGNoLXN0cmluZy1iYXNpYy5odG1sCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2Zhc3QvanMvcmVncmVzcy9zd2l0Y2gtc3RyaW5nLWJhc2ljLmh0bWwJKHJldmlz
aW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2pzL3JlZ3Jlc3Mvc3dpdGNoLXN0cmluZy1iYXNp
Yy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTIgQEAKKzwhRE9DVFlQRSBIVE1MIFBV
QkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNy
Yz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5
PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9yZWdyZXNzLXByZS5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0ic2NyaXB0LXRlc3RzL3N3aXRjaC1zdHJpbmctYmFzaWMuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9InJlc291cmNlcy9yZWdyZXNzLXBvc3QuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5Pgor
PC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9qcy9yZWdyZXNzL3N3aXRjaC1zdHJpbmct
YmlnLWxlbmd0aC10b3dlci12YXItZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2Zhc3QvanMvcmVncmVzcy9zd2l0Y2gtc3RyaW5nLWJpZy1sZW5ndGgtdG93ZXItdmFyLWV4
cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvanMvcmVncmVzcy9z
d2l0Y2gtc3RyaW5nLWJpZy1sZW5ndGgtdG93ZXItdmFyLWV4cGVjdGVkLnR4dAkod29ya2luZyBj
b3B5KQpAQCAtMCwwICsxLDEwIEBACitKU1JlZ3Jlc3Mvc3dpdGNoLXN0cmluZy1iaWctbGVuZ3Ro
LXRvd2VyLXZhcgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1Mi
IG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBubyBleGNl
cHRpb24gdGhyb3duCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09N
UExFVEUKKwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9qcy9yZWdyZXNzL3N3aXRjaC1zdHJpbmct
YmlnLWxlbmd0aC10b3dlci12YXIuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0
L2pzL3JlZ3Jlc3Mvc3dpdGNoLXN0cmluZy1iaWctbGVuZ3RoLXRvd2VyLXZhci5odG1sCShyZXZp
c2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9qcy9yZWdyZXNzL3N3aXRjaC1zdHJpbmctYmln
LWxlbmd0aC10b3dlci12YXIuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEyIEBACis8
IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxo
ZWFkPgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+
Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvcmVncmVzcy1wcmUuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy9zd2l0Y2gtc3RyaW5nLWJpZy1s
ZW5ndGgtdG93ZXItdmFyLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvcmVn
cmVzcy1wb3N0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvanMtdGVz
dC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3Rz
L2Zhc3QvanMvcmVncmVzcy9zd2l0Y2gtc3RyaW5nLWxlbmd0aC10b3dlci1leHBlY3RlZC50eHQK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9qcy9yZWdyZXNzL3N3aXRjaC1zdHJpbmct
bGVuZ3RoLXRvd2VyLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zh
c3QvanMvcmVncmVzcy9zd2l0Y2gtc3RyaW5nLWxlbmd0aC10b3dlci1leHBlY3RlZC50eHQJKHdv
cmtpbmcgY29weSkKQEAgLTAsMCArMSwxMCBAQAorSlNSZWdyZXNzL3N3aXRjaC1zdHJpbmctbGVu
Z3RoLXRvd2VyCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIg
bWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIG5vIGV4Y2Vw
dGlvbiB0aHJvd24KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01Q
TEVURQorCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2pzL3JlZ3Jlc3Mvc3dpdGNoLXN0cmluZy1s
ZW5ndGgtdG93ZXItdmFyLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9m
YXN0L2pzL3JlZ3Jlc3Mvc3dpdGNoLXN0cmluZy1sZW5ndGgtdG93ZXItdmFyLWV4cGVjdGVkLnR4
dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvanMvcmVncmVzcy9zd2l0Y2gtc3Ry
aW5nLWxlbmd0aC10b3dlci12YXItZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAg
KzEsMTAgQEAKK0pTUmVncmVzcy9zd2l0Y2gtc3RyaW5nLWxlbmd0aC10b3dlci12YXIKKworT24g
c3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93
ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1Mgbm8gZXhjZXB0aW9uIHRocm93bgorUEFT
UyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKSW5kZXg6IExh
eW91dFRlc3RzL2Zhc3QvanMvcmVncmVzcy9zd2l0Y2gtc3RyaW5nLWxlbmd0aC10b3dlci12YXIu
aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2pzL3JlZ3Jlc3Mvc3dpdGNoLXN0
cmluZy1sZW5ndGgtdG93ZXItdmFyLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9m
YXN0L2pzL3JlZ3Jlc3Mvc3dpdGNoLXN0cmluZy1sZW5ndGgtdG93ZXItdmFyLmh0bWwJKHdvcmtp
bmcgY29weSkKQEAgLTAsMCArMSwxMiBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRG
Ly9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJj
ZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0IHNy
Yz0icmVzb3VyY2VzL3JlZ3Jlc3MtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJzY3Jp
cHQtdGVzdHMvc3dpdGNoLXN0cmluZy1sZW5ndGgtdG93ZXItdmFyLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSJyZXNvdXJjZXMvcmVncmVzcy1wb3N0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSIuLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwv
aHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvanMvcmVncmVzcy9zd2l0Y2gtc3RyaW5nLWxl
bmd0aC10b3dlci5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvanMvcmVncmVz
cy9zd2l0Y2gtc3RyaW5nLWxlbmd0aC10b3dlci5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0
VGVzdHMvZmFzdC9qcy9yZWdyZXNzL3N3aXRjaC1zdHJpbmctbGVuZ3RoLXRvd2VyLmh0bWwJKHdv
cmtpbmcgY29weSkKQEAgLTAsMCArMSwxMiBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9J
RVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNv
dXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0
IHNyYz0icmVzb3VyY2VzL3JlZ3Jlc3MtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJz
Y3JpcHQtdGVzdHMvc3dpdGNoLXN0cmluZy1sZW5ndGgtdG93ZXIuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9InJlc291cmNlcy9yZWdyZXNzLXBvc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9o
dG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9qcy9yZWdyZXNzL3N3aXRjaC1zdHJpbmctc2hv
cnQtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvanMvcmVncmVz
cy9zd2l0Y2gtc3RyaW5nLXNob3J0LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91
dFRlc3RzL2Zhc3QvanMvcmVncmVzcy9zd2l0Y2gtc3RyaW5nLXNob3J0LWV4cGVjdGVkLnR4dAko
d29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEwIEBACitKU1JlZ3Jlc3Mvc3dpdGNoLXN0cmluZy1z
aG9ydAorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3Nh
Z2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBubyBleGNlcHRpb24g
dGhyb3duCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUK
KwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9qcy9yZWdyZXNzL3N3aXRjaC1zdHJpbmctc2hvcnQu
aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2pzL3JlZ3Jlc3Mvc3dpdGNoLXN0
cmluZy1zaG9ydC5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9qcy9yZWdy
ZXNzL3N3aXRjaC1zdHJpbmctc2hvcnQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEy
IEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRt
bD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9z
Y3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvcmVncmVzcy1w
cmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy9zd2l0Y2gtc3RyaW5n
LXNob3J0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvcmVncmVzcy1wb3N0
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0Lmpz
Ij48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvanMv
cmVncmVzcy9zY3JpcHQtdGVzdHMvc3dpdGNoLXN0cmluZy1iYXNpYy1iaWctdmFyLmpzCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvanMvcmVncmVzcy9zY3JpcHQtdGVzdHMvc3dpdGNo
LXN0cmluZy1iYXNpYy1iaWctdmFyLmpzCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFz
dC9qcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9zd2l0Y2gtc3RyaW5nLWJhc2ljLWJpZy12YXIuanMJ
KHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0OSBAQAorZnVuY3Rpb24gZm9vKHgpIHsKKyAgICBz
d2l0Y2ggKHgpIHsKKyAgICBjYXNlICJhYWEiOiByZXR1cm4gMTsKKyAgICBjYXNlICJhYWIiOiBy
ZXR1cm4gMjsKKyAgICBjYXNlICJhYWMiOiByZXR1cm4gMzsKKyAgICBjYXNlICJhYmEiOiByZXR1
cm4gMTA7CisgICAgY2FzZSAiYWJiIjogcmV0dXJuIDIwOworICAgIGNhc2UgImFiYyI6IHJldHVy
biAzMDsKKyAgICBjYXNlICJiYWFhIjogcmV0dXJuIDQ7CisgICAgY2FzZSAiYmFhYiI6IHJldHVy
biA1OworICAgIGNhc2UgImJhYWMiOiByZXR1cm4gNjsKKyAgICBjYXNlICJiYmFhIjogcmV0dXJu
IDQwOworICAgIGNhc2UgImJiYWIiOiByZXR1cm4gNTA7CisgICAgY2FzZSAiYmJhYyI6IHJldHVy
biA2MDsKKyAgICBjYXNlICJiYmJhIjogcmV0dXJuIDQwMDsKKyAgICBjYXNlICJiYmJiIjogcmV0
dXJuIDUwMDsKKyAgICBjYXNlICJiYmJjIjogcmV0dXJuIDYwMDsKKyAgICBjYXNlICJjYWFhYSI6
IHJldHVybiA3OworICAgIGNhc2UgImNhYWFiIjogcmV0dXJuIDg7CisgICAgY2FzZSAiY2FhYWMi
OiByZXR1cm4gOTsKKyAgICBjYXNlICJjYmFhYSI6IHJldHVybiA3MDsKKyAgICBjYXNlICJjYmFh
YiI6IHJldHVybiA4MDsKKyAgICBjYXNlICJjYmFhYyI6IHJldHVybiA5MDsKKyAgICBjYXNlICJj
YmJhYSI6IHJldHVybiA3MDA7CisgICAgY2FzZSAiY2JiYWIiOiByZXR1cm4gODAwOworICAgIGNh
c2UgImNiYmFjIjogcmV0dXJuIDkwMDsKKyAgICBjYXNlICJjYmJiYSI6IHJldHVybiA3MDAwOwor
ICAgIGNhc2UgImNiYmJiIjogcmV0dXJuIDgwMDA7CisgICAgY2FzZSAiY2JiYmMiOiByZXR1cm4g
OTAwMDsKKyAgICBjYXNlICJkYmJiYSI6IHJldHVybiA3MDAwMDsKKyAgICBjYXNlICJkYmJiYiI6
IHJldHVybiA4MDAwMDsKKyAgICBjYXNlICJkYmJiYyI6IHJldHVybiA5MDAwMDsKKyAgICBjYXNl
ICJlYmFhYSI6IHJldHVybiA0MDAwMDA7CisgICAgY2FzZSAiZWJhYWIiOiByZXR1cm4gNTAwMDAw
OworICAgIGNhc2UgImViYWFjIjogcmV0dXJuIDYwMDAwMDsKKyAgICBkZWZhdWx0OiByZXR1cm4g
MTA7CisgICAgfQorfQorCitmdW5jdGlvbiBtYWtlKHByZSwgcG9zdCkgeyByZXR1cm4gcHJlICsg
ImEiICsgcG9zdDsgfQorCit2YXIgc3RyaW5ncyA9IFttYWtlKCJhIiwgImEiKSwgbWFrZSgiYSIs
ICJiIiksIG1ha2UoImEiLCAiYyIpLCBtYWtlKCJiIiwgImFhIiksIG1ha2UoImIiLCAiYWIiKSwg
bWFrZSgiYiIsICJhYyIpLCBtYWtlKCJjIiwgImFhYSIpLCBtYWtlKCJjIiwgImFhYiIpLCBtYWtl
KCJjIiwgImFhYyIpLCBtYWtlKCJhIiwgImQiKSwgbWFrZSgiYiIsICJhZCIpLCBtYWtlKCJjIiwg
ImFhZCIpLCAiZCIsIG1ha2UoImQiLCAiYSIpXTsKKwordmFyIHJlc3VsdCA9IDA7Citmb3IgKHZh
ciBpID0gMDsgaSA8IDEwMDAwMDA7ICsraSkKKyAgICByZXN1bHQgKz0gZm9vKHN0cmluZ3NbaSAl
IHN0cmluZ3MubGVuZ3RoXSk7CisKK2lmIChyZXN1bHQgIT0gNjc4NTY5NikKKyAgICB0aHJvdyAi
QmFkIHJlc3VsdDogIiArIHJlc3VsdDsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvanMvcmVncmVz
cy9zY3JpcHQtdGVzdHMvc3dpdGNoLXN0cmluZy1iYXNpYy1iaWcuanMKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvZmFzdC9qcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9zd2l0Y2gtc3RyaW5nLWJh
c2ljLWJpZy5qcwkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvanMvcmVncmVzcy9z
Y3JpcHQtdGVzdHMvc3dpdGNoLXN0cmluZy1iYXNpYy1iaWcuanMJKHdvcmtpbmcgY29weSkKQEAg
LTAsMCArMSw0OSBAQAorZnVuY3Rpb24gZm9vKHgpIHsKKyAgICBzd2l0Y2ggKHgpIHsKKyAgICBj
YXNlICJhYWEiOiByZXR1cm4gMTsKKyAgICBjYXNlICJhYWIiOiByZXR1cm4gMjsKKyAgICBjYXNl
ICJhYWMiOiByZXR1cm4gMzsKKyAgICBjYXNlICJhYmEiOiByZXR1cm4gMTA7CisgICAgY2FzZSAi
YWJiIjogcmV0dXJuIDIwOworICAgIGNhc2UgImFiYyI6IHJldHVybiAzMDsKKyAgICBjYXNlICJi
YWFhIjogcmV0dXJuIDQ7CisgICAgY2FzZSAiYmFhYiI6IHJldHVybiA1OworICAgIGNhc2UgImJh
YWMiOiByZXR1cm4gNjsKKyAgICBjYXNlICJiYmFhIjogcmV0dXJuIDQwOworICAgIGNhc2UgImJi
YWIiOiByZXR1cm4gNTA7CisgICAgY2FzZSAiYmJhYyI6IHJldHVybiA2MDsKKyAgICBjYXNlICJi
YmJhIjogcmV0dXJuIDQwMDsKKyAgICBjYXNlICJiYmJiIjogcmV0dXJuIDUwMDsKKyAgICBjYXNl
ICJiYmJjIjogcmV0dXJuIDYwMDsKKyAgICBjYXNlICJjYWFhYSI6IHJldHVybiA3OworICAgIGNh
c2UgImNhYWFiIjogcmV0dXJuIDg7CisgICAgY2FzZSAiY2FhYWMiOiByZXR1cm4gOTsKKyAgICBj
YXNlICJjYmFhYSI6IHJldHVybiA3MDsKKyAgICBjYXNlICJjYmFhYiI6IHJldHVybiA4MDsKKyAg
ICBjYXNlICJjYmFhYyI6IHJldHVybiA5MDsKKyAgICBjYXNlICJjYmJhYSI6IHJldHVybiA3MDA7
CisgICAgY2FzZSAiY2JiYWIiOiByZXR1cm4gODAwOworICAgIGNhc2UgImNiYmFjIjogcmV0dXJu
IDkwMDsKKyAgICBjYXNlICJjYmJiYSI6IHJldHVybiA3MDAwOworICAgIGNhc2UgImNiYmJiIjog
cmV0dXJuIDgwMDA7CisgICAgY2FzZSAiY2JiYmMiOiByZXR1cm4gOTAwMDsKKyAgICBjYXNlICJk
YmJiYSI6IHJldHVybiA3MDAwMDsKKyAgICBjYXNlICJkYmJiYiI6IHJldHVybiA4MDAwMDsKKyAg
ICBjYXNlICJkYmJiYyI6IHJldHVybiA5MDAwMDsKKyAgICBjYXNlICJlYmFhYSI6IHJldHVybiA0
MDAwMDA7CisgICAgY2FzZSAiZWJhYWIiOiByZXR1cm4gNTAwMDAwOworICAgIGNhc2UgImViYWFj
IjogcmV0dXJuIDYwMDAwMDsKKyAgICBkZWZhdWx0OiByZXR1cm4gMTA7CisgICAgfQorfQorCitm
dW5jdGlvbiBtYWtlKHByZSwgcG9zdCkgeyByZXR1cm4gcHJlICsgImEiICsgcG9zdDsgfQorCit2
YXIgc3RyaW5ncyA9IFsiYWFhIiwgImFhYiIsICJhYWMiLCAiYmFhYSIsICJiYWFiIiwgImJhYWMi
LCAiY2FhYWEiLCAiY2FhYWIiLCAiY2FhYWMiLCAiYWFkIiwgImJhYWQiLCAiY2FhYWQiLCAiZCIs
ICJkYWEiXTsKKwordmFyIHJlc3VsdCA9IDA7Citmb3IgKHZhciBpID0gMDsgaSA8IDEwMDAwMDA7
ICsraSkKKyAgICByZXN1bHQgKz0gZm9vKHN0cmluZ3NbaSAlIHN0cmluZ3MubGVuZ3RoXSk7CisK
K2lmIChyZXN1bHQgIT0gNjc4NTY5NikKKyAgICB0aHJvdyAiQmFkIHJlc3VsdDogIiArIHJlc3Vs
dDsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvanMvcmVncmVzcy9zY3JpcHQtdGVzdHMvc3dpdGNo
LXN0cmluZy1iYXNpYy12YXIuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9qcy9y
ZWdyZXNzL3NjcmlwdC10ZXN0cy9zd2l0Y2gtc3RyaW5nLWJhc2ljLXZhci5qcwkocmV2aXNpb24g
MCkKKysrIExheW91dFRlc3RzL2Zhc3QvanMvcmVncmVzcy9zY3JpcHQtdGVzdHMvc3dpdGNoLXN0
cmluZy1iYXNpYy12YXIuanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwyNSBAQAorZnVuY3Rp
b24gZm9vKHgpIHsKKyAgICBzd2l0Y2ggKHgpIHsKKyAgICBjYXNlICJhYWEiOiByZXR1cm4gMTsK
KyAgICBjYXNlICJhYWIiOiByZXR1cm4gMjsKKyAgICBjYXNlICJhYWMiOiByZXR1cm4gMzsKKyAg
ICBjYXNlICJiYWFhIjogcmV0dXJuIDQ7CisgICAgY2FzZSAiYmFhYiI6IHJldHVybiA1OworICAg
IGNhc2UgImJhYWMiOiByZXR1cm4gNjsKKyAgICBjYXNlICJjYWFhYSI6IHJldHVybiA3OworICAg
IGNhc2UgImNhYWFiIjogcmV0dXJuIDg7CisgICAgY2FzZSAiY2FhYWMiOiByZXR1cm4gOTsKKyAg
ICBkZWZhdWx0OiByZXR1cm4gMTA7CisgICAgfQorfQorCitmdW5jdGlvbiBtYWtlKHByZSwgcG9z
dCkgeyByZXR1cm4gcHJlICsgImEiICsgcG9zdDsgfQorCit2YXIgc3RyaW5ncyA9IFttYWtlKCJh
IiwgImEiKSwgbWFrZSgiYSIsICJiIiksIG1ha2UoImEiLCAiYyIpLCBtYWtlKCJiIiwgImFhIiks
IG1ha2UoImIiLCAiYWIiKSwgbWFrZSgiYiIsICJhYyIpLCBtYWtlKCJjIiwgImFhYSIpLCBtYWtl
KCJjIiwgImFhYiIpLCBtYWtlKCJjIiwgImFhYyIpLCBtYWtlKCJhIiwgImQiKSwgbWFrZSgiYiIs
ICJhZCIpLCBtYWtlKCJjIiwgImFhZCIpLCAiZCIsIG1ha2UoImQiLCAiYSIpXTsKKwordmFyIHJl
c3VsdCA9IDA7Citmb3IgKHZhciBpID0gMDsgaSA8IDEwMDAwMDA7ICsraSkKKyAgICByZXN1bHQg
Kz0gZm9vKHN0cmluZ3NbaSAlIHN0cmluZ3MubGVuZ3RoXSk7CisKK2lmIChyZXN1bHQgIT0gNjc4
NTY5NikKKyAgICB0aHJvdyAiQmFkIHJlc3VsdDogIiArIHJlc3VsdDsKSW5kZXg6IExheW91dFRl
c3RzL2Zhc3QvanMvcmVncmVzcy9zY3JpcHQtdGVzdHMvc3dpdGNoLXN0cmluZy1iYXNpYy5qcwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2pzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL3N3
aXRjaC1zdHJpbmctYmFzaWMuanMJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2pz
L3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL3N3aXRjaC1zdHJpbmctYmFzaWMuanMJKHdvcmtpbmcgY29w
eSkKQEAgLTAsMCArMSwyMyBAQAorZnVuY3Rpb24gZm9vKHgpIHsKKyAgICBzd2l0Y2ggKHgpIHsK
KyAgICBjYXNlICJhYWEiOiByZXR1cm4gMTsKKyAgICBjYXNlICJhYWIiOiByZXR1cm4gMjsKKyAg
ICBjYXNlICJhYWMiOiByZXR1cm4gMzsKKyAgICBjYXNlICJiYWFhIjogcmV0dXJuIDQ7CisgICAg
Y2FzZSAiYmFhYiI6IHJldHVybiA1OworICAgIGNhc2UgImJhYWMiOiByZXR1cm4gNjsKKyAgICBj
YXNlICJjYWFhYSI6IHJldHVybiA3OworICAgIGNhc2UgImNhYWFiIjogcmV0dXJuIDg7CisgICAg
Y2FzZSAiY2FhYWMiOiByZXR1cm4gOTsKKyAgICBkZWZhdWx0OiByZXR1cm4gMTA7CisgICAgfQor
fQorCit2YXIgc3RyaW5ncyA9IFsiYWFhIiwgImFhYiIsICJhYWMiLCAiYmFhYSIsICJiYWFiIiwg
ImJhYWMiLCAiY2FhYWEiLCAiY2FhYWIiLCAiY2FhYWMiLCAiYWFkIiwgImJhYWQiLCAiY2FhYWQi
LCAiZCIsICJkYWEiXTsKKwordmFyIHJlc3VsdCA9IDA7Citmb3IgKHZhciBpID0gMDsgaSA8IDEw
MDAwMDA7ICsraSkKKyAgICByZXN1bHQgKz0gZm9vKHN0cmluZ3NbaSAlIHN0cmluZ3MubGVuZ3Ro
XSk7CisKK2lmIChyZXN1bHQgIT0gNjc4NTY5NikKKyAgICB0aHJvdyAiQmFkIHJlc3VsdDogIiAr
IHJlc3VsdDsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvanMvcmVncmVzcy9zY3JpcHQtdGVzdHMv
c3dpdGNoLXN0cmluZy1iaWctbGVuZ3RoLXRvd2VyLXZhci5qcwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9mYXN0L2pzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL3N3aXRjaC1zdHJpbmctYmlnLWxl
bmd0aC10b3dlci12YXIuanMJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2pzL3Jl
Z3Jlc3Mvc2NyaXB0LXRlc3RzL3N3aXRjaC1zdHJpbmctYmlnLWxlbmd0aC10b3dlci12YXIuanMJ
KHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzMCBAQAorZnVuY3Rpb24gZm9vKHgpIHsKKyAgICBz
d2l0Y2ggKHgpIHsKKyAgICBjYXNlICJmb29hIjogcmV0dXJuIDE7CisgICAgY2FzZSAiZm9vYWIi
OiByZXR1cm4gMjsKKyAgICBjYXNlICJmb29hYmMiOiByZXR1cm4gMzsKKyAgICBjYXNlICJmb29h
YmNkIjogcmV0dXJuIDQ7CisgICAgY2FzZSAiZm9vYWJjZGUiOiByZXR1cm4gNTsKKyAgICBjYXNl
ICJmb29hYmNkZWYiOiByZXR1cm4gNjsKKyAgICBjYXNlICJmb29hYmNkZWZnIjogcmV0dXJuIDc7
CisgICAgY2FzZSAiZm9vYWJjZGVmZ2giOiByZXR1cm4gODsKKyAgICBjYXNlICJmb29hYmNkZWZn
aGkiOiByZXR1cm4gOTsKKyAgICBjYXNlICJmb29hYmNkZWZnaGlqIjogcmV0dXJuIDEwOworICAg
IGNhc2UgImZvb2FiY2RlZmdoaWprIjogcmV0dXJuIDExOworICAgIGNhc2UgImZvb2FiY2RlZmdo
aWprbCI6IHJldHVybiAxMjsKKyAgICBjYXNlICJmb29hYmNkZWZnaGlqa2xtIjogcmV0dXJuIDEz
OworICAgIGNhc2UgImZvb2FiY2RlZmdoaWprbG1uIjogcmV0dXJuIDE0OworICAgIGRlZmF1bHQ6
IHJldHVybiAxNTsKKyAgICB9Cit9CisKK3ZhciBzdHJpbmdzID0gWyJhIiwgImFiIiwgImFiYyIs
ICJhYmNkIiwgImFiY2RlIiwgImFiY2RlZiIsICJhYmNkZWZnIiwgImFiY2RlZmdoIiwgImFiY2Rl
ZmdoaSIsICJhYmNkZWZnaGlqIiwgImFiY2RlZmdoaWprIiwgImFiY2RlZmdoaWprbCIsICJhYmNk
ZWZnaGlqa2xtIiwgImFiY2RlZmdoaWprbG1uIiwgImFiY2RlZmdoaWprbG1ubyJdOworZm9yICh2
YXIgaSA9IDA7IGkgPCBzdHJpbmdzLmxlbmd0aDsgKytpKQorICAgIHN0cmluZ3NbaV0gPSAiZm9v
IiArIHN0cmluZ3NbaV07CisKK3ZhciByZXN1bHQgPSAwOworZm9yICh2YXIgaSA9IDA7IGkgPCAx
MDAwMDAwOyArK2kpCisgICAgcmVzdWx0ICs9IGZvbyhzdHJpbmdzW2kgJSBzdHJpbmdzLmxlbmd0
aF0pOworCitpZiAocmVzdWx0ICE9IDc5OTk5NzUpCisgICAgdGhyb3cgIkJhZCByZXN1bHQ6ICIg
KyByZXN1bHQ7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2pzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3Rz
L3N3aXRjaC1zdHJpbmctbGVuZ3RoLXRvd2VyLXZhci5qcwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9mYXN0L2pzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL3N3aXRjaC1zdHJpbmctbGVuZ3RoLXRv
d2VyLXZhci5qcwkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvanMvcmVncmVzcy9z
Y3JpcHQtdGVzdHMvc3dpdGNoLXN0cmluZy1sZW5ndGgtdG93ZXItdmFyLmpzCSh3b3JraW5nIGNv
cHkpCkBAIC0wLDAgKzEsMjAgQEAKK2Z1bmN0aW9uIGZvbyh4KSB7CisgICAgc3dpdGNoICh4KSB7
CisgICAgY2FzZSAiZm9vYSI6IHJldHVybiAxOworICAgIGNhc2UgImZvb2FiIjogcmV0dXJuIDI7
CisgICAgY2FzZSAiZm9vYWJjIjogcmV0dXJuIDM7CisgICAgY2FzZSAiZm9vYWJjZCI6IHJldHVy
biA0OworICAgIGRlZmF1bHQ6IHJldHVybiAxMDsKKyAgICB9Cit9CisKK3ZhciBzdHJpbmdzID0g
WyJhIiwgImFiIiwgImFiYyIsICJhYmNkIiwgImFiY2RlIl07Citmb3IgKHZhciBpID0gMDsgaSA8
IHN0cmluZ3MubGVuZ3RoOyArK2kpCisgICAgc3RyaW5nc1tpXSA9ICJmb28iICsgc3RyaW5nc1tp
XTsKKwordmFyIHJlc3VsdCA9IDA7Citmb3IgKHZhciBpID0gMDsgaSA8IDEwMDAwMDA7ICsraSkK
KyAgICByZXN1bHQgKz0gZm9vKHN0cmluZ3NbaSAlIHN0cmluZ3MubGVuZ3RoXSk7CisKK2lmIChy
ZXN1bHQgIT0gNDAwMDAwMCkKKyAgICB0aHJvdyAiQmFkIHJlc3VsdDogIiArIHJlc3VsdDsKSW5k
ZXg6IExheW91dFRlc3RzL2Zhc3QvanMvcmVncmVzcy9zY3JpcHQtdGVzdHMvc3dpdGNoLXN0cmlu
Zy1sZW5ndGgtdG93ZXIuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9qcy9yZWdy
ZXNzL3NjcmlwdC10ZXN0cy9zd2l0Y2gtc3RyaW5nLWxlbmd0aC10b3dlci5qcwkocmV2aXNpb24g
MCkKKysrIExheW91dFRlc3RzL2Zhc3QvanMvcmVncmVzcy9zY3JpcHQtdGVzdHMvc3dpdGNoLXN0
cmluZy1sZW5ndGgtdG93ZXIuanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxOCBAQAorZnVu
Y3Rpb24gZm9vKHgpIHsKKyAgICBzd2l0Y2ggKHgpIHsKKyAgICBjYXNlICJhIjogcmV0dXJuIDE7
CisgICAgY2FzZSAiYWIiOiByZXR1cm4gMjsKKyAgICBjYXNlICJhYmMiOiByZXR1cm4gMzsKKyAg
ICBjYXNlICJhYmNkIjogcmV0dXJuIDQ7CisgICAgZGVmYXVsdDogcmV0dXJuIDEwOworICAgIH0K
K30KKwordmFyIHN0cmluZ3MgPSBbImEiLCAiYWIiLCAiYWJjIiwgImFiY2QiLCAiYWJjZGUiXTsK
KwordmFyIHJlc3VsdCA9IDA7Citmb3IgKHZhciBpID0gMDsgaSA8IDEwMDAwMDA7ICsraSkKKyAg
ICByZXN1bHQgKz0gZm9vKHN0cmluZ3NbaSAlIHN0cmluZ3MubGVuZ3RoXSk7CisKK2lmIChyZXN1
bHQgIT0gNDAwMDAwMCkKKyAgICB0aHJvdyAiQmFkIHJlc3VsdDogIiArIHJlc3VsdDsKSW5kZXg6
IExheW91dFRlc3RzL2Zhc3QvanMvcmVncmVzcy9zY3JpcHQtdGVzdHMvc3dpdGNoLXN0cmluZy1z
aG9ydC5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2pzL3JlZ3Jlc3Mvc2NyaXB0
LXRlc3RzL3N3aXRjaC1zdHJpbmctc2hvcnQuanMJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0
cy9mYXN0L2pzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL3N3aXRjaC1zdHJpbmctc2hvcnQuanMJKHdv
cmtpbmcgY29weSkKQEAgLTAsMCArMSwxOCBAQAorZnVuY3Rpb24gZm9vKHgpIHsKKyAgICBzd2l0
Y2ggKHgpIHsKKyAgICBjYXNlICJhYSI6IHJldHVybiAxOworICAgIGNhc2UgImFiIjogcmV0dXJu
IDI7CisgICAgY2FzZSAiYWMiOiByZXR1cm4gMzsKKyAgICBjYXNlICJhZCI6IHJldHVybiA0Owor
ICAgIGRlZmF1bHQ6IHJldHVybiAxMDsKKyAgICB9Cit9CisKK3ZhciBzdHJpbmdzID0gWyJhYSIs
ICJhYiIsICJhYyIsICJhZCIsICJhZSJdOworCit2YXIgcmVzdWx0ID0gMDsKK2ZvciAodmFyIGkg
PSAwOyBpIDwgMTAwMDAwMDsgKytpKQorICAgIHJlc3VsdCArPSBmb28oc3RyaW5nc1tpICUgc3Ry
aW5ncy5sZW5ndGhdKTsKKworaWYgKHJlc3VsdCAhPSA0MDAwMDAwKQorICAgIHRocm93ICJCYWQg
cmVzdWx0OiAiICsgcmVzdWx0Owo=
</data>
<flag name="review"
          id="226954"
          type_id="1"
          status="+"
          setter="sam"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>205445</attachid>
            <date>2013-06-25 21:02:32 -0700</date>
            <delta_ts>2013-06-25 21:02:32 -0700</delta_ts>
            <desc>patch for landing</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>79294</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTUxOTcwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDkxIEBA
CisyMDEzLTA2LTI1ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
Zm91cnRoVGllcjogREZHIHNob3VsZCBzdXBwb3J0IHN3aXRjaF9zdHJpbmcKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExNzk2NworCisgICAgICAgIFJl
dmlld2VkIGJ5IFNhbSBXZWluaWcuCisgICAgICAgIAorICAgICAgICBBZGQgYSByZXVzYWJsZSBi
aW5hcnkgc3dpdGNoIGNyZWF0b3IuCisgICAgICAgIAorICAgICAgICBJbXBsZW1lbnQgc3dpdGNo
IG9uIHN0cmluZyB1c2luZyB0aHJlZSBtb2RlczoKKyAgICAgICAgCisgICAgICAgIC0gQmluYXJ5
IHN3aXRjaCBvbiBTdHJpbmdJbXBsKiBpbiB0aGUgY2FzZSBvZiBpZGVudGlmaWVycy4KKyAgICAg
ICAgCisgICAgICAgIC0gVHJpZSBvZiBiaW5hcnkgc3dpdGNoZXMgb24gY2hhcmFjdGVycyBpbiB0
aGUgY2FzZSBvZiBhIG5vdC10b28tYmlnCisgICAgICAgICAgc3dpdGNoIG92ZXIgbm90LXRvby1i
aWcgOC1iaXQgc3RyaW5ncy4KKyAgICAgICAgCisgICAgICAgIC0gSGFzaCBsb29rdXAgaWYgYWxs
IGVsc2UgZmFpbHMuCisgICAgICAgIAorICAgICAgICBBbnl3aGVyZSBmcm9tIGEgMnggdG8gM3gg
c3BlZWQtdXAgb24gbWljcm9iZW5jaG1hcmtzIHRoYXQgc3RyZXNzCisgICAgICAgIHN0cmluZyBz
d2l0Y2hlcy4gMjUtMzUlIHNwZWVkLXVwIG9uIEhhc2hNYXAgdGVzdHMuIDQlIHNwZWVkLXVwIG9u
CisgICAgICAgIHBkZmpzLgorCisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBieXRlY29kZS9KdW1wVGFibGUuaDoKKyAgICAgICAg
KFN0cmluZ0p1bXBUYWJsZSk6CisgICAgICAgIChKU0M6OlN0cmluZ0p1bXBUYWJsZTo6Y2xlYXIp
OgorICAgICAgICAqIGRmZy9ERkdCYWNrd2FyZHNQcm9wYWdhdGlvblBoYXNlLmNwcDoKKyAgICAg
ICAgKEpTQzo6REZHOjpCYWNrd2FyZHNQcm9wYWdhdGlvblBoYXNlOjpwcm9wYWdhdGUpOgorICAg
ICAgICAqIGRmZy9ERkdCaW5hcnlTd2l0Y2guY3BwOiBBZGRlZC4KKyAgICAgICAgKERGRyk6Cisg
ICAgICAgIChKU0M6OkRGRzo6QmluYXJ5U3dpdGNoOjpCaW5hcnlTd2l0Y2gpOgorICAgICAgICAo
SlNDOjpERkc6OkJpbmFyeVN3aXRjaDo6YWR2YW5jZSk6CisgICAgICAgIChKU0M6OkRGRzo6Qmlu
YXJ5U3dpdGNoOjpidWlsZCk6CisgICAgICAgICogZGZnL0RGR0JpbmFyeVN3aXRjaC5oOiBBZGRl
ZC4KKyAgICAgICAgKERGRyk6CisgICAgICAgIChCaW5hcnlTd2l0Y2gpOgorICAgICAgICAoSlND
OjpERkc6OkJpbmFyeVN3aXRjaDo6Y2FzZUluZGV4KToKKyAgICAgICAgKEpTQzo6REZHOjpCaW5h
cnlTd2l0Y2g6OmNhc2VWYWx1ZSk6CisgICAgICAgIChKU0M6OkRGRzo6QmluYXJ5U3dpdGNoOjpm
YWxsVGhyb3VnaCk6CisgICAgICAgIChKU0M6OkRGRzo6QmluYXJ5U3dpdGNoOjpDYXNlOjpDYXNl
KToKKyAgICAgICAgKENhc2UpOgorICAgICAgICAoSlNDOjpERkc6OkJpbmFyeVN3aXRjaDo6Q2Fz
ZTo6b3BlcmF0b3I8KToKKyAgICAgICAgKEpTQzo6REZHOjpCaW5hcnlTd2l0Y2g6OkJyYW5jaENv
ZGU6OkJyYW5jaENvZGUpOgorICAgICAgICAoQnJhbmNoQ29kZSk6CisgICAgICAgICogZGZnL0RG
R0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6
cGFyc2VCbG9jayk6CisgICAgICAgICogZGZnL0RGR0NhcGFiaWxpdGllcy5jcHA6CisgICAgICAg
IChKU0M6OkRGRzo6Y2FwYWJpbGl0eUxldmVsKToKKyAgICAgICAgKiBkZmcvREZHRml4dXBQaGFz
ZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Rml4dXBQaGFzZTo6Zml4dXBOb2RlKToKKyAgICAg
ICAgKiBkZmcvREZHSklUQ29tcGlsZXIuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkpJVENvbXBp
bGVyOjpsaW5rKToKKyAgICAgICAgKiBkZmcvREZHTGF6eUpTVmFsdWUuY3BwOgorICAgICAgICAo
SlNDOjpERkc6OkxhenlKU1ZhbHVlOjpnZXRWYWx1ZSk6CisgICAgICAgIChKU0M6OkRGRzo6ZXF1
YWxUb1N0cmluZ0ltcGwpOgorICAgICAgICAoREZHKToKKyAgICAgICAgKEpTQzo6REZHOjpMYXp5
SlNWYWx1ZTo6c3RyaWN0RXF1YWwpOgorICAgICAgICAoSlNDOjpERkc6OkxhenlKU1ZhbHVlOjpk
dW1wKToKKyAgICAgICAgKiBkZmcvREZHTGF6eUpTVmFsdWUuaDoKKyAgICAgICAgKEpTQzo6REZH
OjpMYXp5SlNWYWx1ZTo6a25vd25TdHJpbmdJbXBsKToKKyAgICAgICAgKExhenlKU1ZhbHVlKToK
KyAgICAgICAgKEpTQzo6REZHOjpMYXp5SlNWYWx1ZTo6c3RyaW5nSW1wbCk6CisgICAgICAgIChK
U0M6OkRGRzo6TGF6eUpTVmFsdWU6OnN3aXRjaExvb2t1cFZhbHVlKToKKyAgICAgICAgKiBkZmcv
REZHTm9kZS5jcHA6CisgICAgICAgIChXVEY6OnByaW50SW50ZXJuYWwpOgorICAgICAgICAqIGRm
Zy9ERkdOb2RlLmg6CisgICAgICAgICogZGZnL0RGR09wZXJhdGlvbnMuY3BwOgorICAgICAgICAq
IGRmZy9ERkdPcGVyYXRpb25zLmg6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmNw
cDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZW1pdFN3aXRjaENoYXIpOgor
ICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpTdHJpbmdTd2l0Y2hDYXNlOjpvcGVy
YXRvcjwpOgorICAgICAgICAoREZHKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJ
VDo6ZW1pdEJpbmFyeVN3aXRjaFN0cmluZ1JlY3Vyc2UpOgorICAgICAgICAoSlNDOjpERkc6OlNw
ZWN1bGF0aXZlSklUOjplbWl0U3dpdGNoU3RyaW5nT25TdHJpbmcpOgorICAgICAgICAoSlNDOjpE
Rkc6OlNwZWN1bGF0aXZlSklUOjplbWl0U3dpdGNoU3RyaW5nKToKKyAgICAgICAgKEpTQzo6REZH
OjpTcGVjdWxhdGl2ZUpJVDo6ZW1pdFN3aXRjaCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3Vs
YXRpdmVKSVQ6OmFkZEJyYW5jaCk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmg6
CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNhbGxPcGVyYXRpb24pOgorICAg
ICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpicmFuY2g4KToKKyAgICAgICAgKFNwZWN1
bGF0aXZlSklUKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6U3RyaW5nU3dp
dGNoQ2FzZTo6U3RyaW5nU3dpdGNoQ2FzZSk6CisgICAgICAgIChTdHJpbmdTd2l0Y2hDYXNlKToK
KyAgICAgICAgKiBmdGwvRlRMTG93ZXJERkdUb0xMVk0uY3BwOgorICAgICAgICAoSlNDOjpGVEw6
Okxvd2VyREZHVG9MTFZNOjpjb21waWxlU3dpdGNoKToKKyAgICAgICAgKiBydW50aW1lL09wdGlv
bnMuaDoKKyAgICAgICAgKEpTQyk6CisKIDIwMTMtMDYtMjQgIEZpbGlwIFBpemxvICA8ZnBpemxv
QGFwcGxlLmNvbT4KIAogICAgICAgICBmb3VydGhUaWVyOiBDb3VudCBleHRlcm5hbCBtZW1vcnkg
dXNhZ2UgdG93YXJkcyBoZWFwIGZvb3RwcmludApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oJKHJldmlzaW9uIDE1MTk0NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xNjcs
OSArMTY3LDkgQEAKIAkJMEY0NjgwRDMxNEJCRDE2NzAwQkZFMjcyIC8qIExMSW50RGF0YS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0NjgwQ0YxNEJC
QjNEMTAwQkZFMjcyIC8qIExMSW50RGF0YS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTBGNDY4MEQ0MTRCQkQyNDkwMEJGRTI3MiAvKiBIb3N0Q2Fs
bFJldHVyblZhbHVlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDBGNDY4MEQwMTRCQkM1RjgwMEJGRTI3MiAvKiBIb3N0Q2FsbFJldHVyblZhbHVlLmNw
cCAqLzsgfTsKIAkJMEY0NjgwRDUxNEJCRDI0QjAwQkZFMjcyIC8qIEhvc3RDYWxsUmV0dXJuVmFs
dWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDY4
MEQxMTRCQkM1RjgwMEJGRTI3MiAvKiBIb3N0Q2FsbFJldHVyblZhbHVlLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEY0NkU2QjkxNzZGODlEQjAw
RTFGNzU1IC8qIEZUTFN3aXRjaENhc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDBGNDZFNkI3MTc2Rjg5RDkwMEUxRjc1NSAvKiBGVExTd2l0Y2hDYXNl
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEY0
NkU2QzUxNzZGOEE1RTAwRTFGNzU1IC8qIERGR0xhenlKU1ZhbHVlLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDZFNkMyMTc2RjhBNUIwMEUxRjc1
NSAvKiBERkdMYXp5SlNWYWx1ZS5jcHAgKi87IH07CiAJCTBGNDZFNkM2MTc2RjhBNjAwMEUxRjc1
NSAvKiBERkdMYXp5SlNWYWx1ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMEY0NkU2QzMxNzZGOEE1QjAwRTFGNzU1IC8qIERGR0xhenlKU1ZhbHVlLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJMEY0NkU2
QjkxNzZGODlEQjAwRTFGNzU1IC8qIEZUTFN3aXRjaENhc2UuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDZFNkI3MTc2Rjg5RDkwMEUxRjc1NSAvKiBG
VExTd2l0Y2hDYXNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJMEY0OTNBRkExNkQwQ0FEMzAwODQ1MDhCIC8qIFNvdXJjZVByb3ZpZGVyLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDkzQUY4MTZE
MENBRDEwMDg0NTA4QiAvKiBTb3VyY2VQcm92aWRlci5jcHAgKi87IH07CiAJCTBGNEUxQTBFMTcz
QUVEREMwMDdFRTJEMyAvKiBJbnRlbmRlZFN0cnVjdHVyZUNoYWluLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNEUxQTBDMTczQUVEREMwMDdFRTJE
MyAvKiBJbnRlbmRlZFN0cnVjdHVyZUNoYWluLmNwcCAqLzsgfTsKIAkJMEY0RTFBMEYxNzNBRURE
QzAwN0VFMkQzIC8qIEludGVuZGVkU3RydWN0dXJlQ2hhaW4uaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNEUxQTBEMTczQUVEREMwMDdFRTJEMyAvKiBJ
bnRlbmRlZFN0cnVjdHVyZUNoYWluLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKQEAgLTMxMSw2ICszMTEsOCBAQAogCQkwRkM4MTUxNTE0MDUxMTlCMDBD
RkE2MDMgLyogVlRhYmxlU3BlY3RydW0uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDBGQzgxNTE0MTQwNTExOEQwMENGQTYwMyAvKiBWVGFibGVTcGVjdHJ1
bS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBG
QzgxNTE2MTQwNTExQjUwMENGQTYwMyAvKiBWVGFibGVTcGVjdHJ1bS5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkM4MTUxMjE0MDUxMTg2MDBDRkE2
MDMgLyogVlRhYmxlU3BlY3RydW0uY3BwICovOyB9OwogCQkwRkNDQUU0NTE2RDBDRjc0MDBEMEM2
NUIgLyogUGFyc2VyRXJyb3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDBGQ0NBRTQzMTZEMENGNkUwMEQwQzY1QiAvKiBQYXJzZXJFcnJvci5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGRDI4MTI3MTc3
OTNCRTUwMEJCQjBGMyAvKiBERkdCaW5hcnlTd2l0Y2guY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZEMjgxMjUxNzc5M0JFMzAwQkJCMEYzIC8qIERG
R0JpbmFyeVN3aXRjaC5jcHAgKi87IH07CisJCTBGRDI4MTI4MTc3OTNCRTcwMEJCQjBGMyAvKiBE
RkdCaW5hcnlTd2l0Y2guaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDBGRDI4MTI2MTc3OTNCRTMwMEJCQjBGMyAvKiBERkdCaW5hcnlTd2l0Y2guaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRkQyQzkyNDE2
RDAxRUU5MDBDNzgwM0YgLyogU3RydWN0dXJlSW5saW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZEMkM5MjMxNkQwMUVFOTAwQzc4MDNGIC8qIFN0
cnVjdHVyZUlubGluZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQkwRkQzQzgyNjE0MTE1RDQwMDBGRDgxQ0IgLyogREZHRHJpdmVyLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRDNDODIwMTQxMTVD
RjgwMEZEODFDQiAvKiBERkdEcml2ZXIuY3BwICovOyB9OwogCQkwRkQzQzgyODE0MTE1RDRGMDBG
RDgxQ0IgLyogREZHRHJpdmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwRkQzQzgyMjE0MTE1RDBFMDBGRDgxQ0IgLyogREZHRHJpdmVyLmggKi87IH07
CkBAIC0xMTc1LDkgKzExNzcsOSBAQAogCQkwRjQ2ODBDRjE0QkJCM0QxMDBCRkUyNzIgLyogTExJ
bnREYXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IExMSW50RGF0YS5oOyBw
YXRoID0gbGxpbnQvTExJbnREYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBG
NDY4MEQwMTRCQkM1RjgwMEJGRTI3MiAvKiBIb3N0Q2FsbFJldHVyblZhbHVlLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEhvc3RDYWxsUmV0dXJuVmFsdWUuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjQ2ODBEMTE0QkJDNUY4MDBCRkUyNzIgLyog
SG9zdENhbGxSZXR1cm5WYWx1ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBI
b3N0Q2FsbFJldHVyblZhbHVlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNDZF
NkI3MTc2Rjg5RDkwMEUxRjc1NSAvKiBGVExTd2l0Y2hDYXNlLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgbmFtZSA9IEZUTFN3aXRjaENhc2UuaDsgcGF0aCA9IGZ0bC9GVExTd2l0Y2hDYXNl
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNDZFNkMyMTc2RjhBNUIwMEUxRjc1
NSAvKiBERkdMYXp5SlNWYWx1ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5h
bWUgPSBERkdMYXp5SlNWYWx1ZS5jcHA7IHBhdGggPSBkZmcvREZHTGF6eUpTVmFsdWUuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjQ2RTZDMzE3NkY4QTVCMDBFMUY3NTUgLyog
REZHTGF6eUpTVmFsdWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHTGF6
eUpTVmFsdWUuaDsgcGF0aCA9IGRmZy9ERkdMYXp5SlNWYWx1ZS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwotCQkwRjQ2RTZCNzE3NkY4OUQ5MDBFMUY3NTUgLyogRlRMU3dpdGNoQ2FzZS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBGVExTd2l0Y2hDYXNlLmg7IHBhdGgg
PSBmdGwvRlRMU3dpdGNoQ2FzZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjQ5
M0FGODE2RDBDQUQxMDA4NDUwOEIgLyogU291cmNlUHJvdmlkZXIuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU291cmNlUHJvdmlkZXIuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkwRjRFMUEwQzE3M0FFRERDMDA3RUUyRDMgLyogSW50ZW5kZWRTdHJ1
Y3R1cmVDaGFpbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbnRl
bmRlZFN0cnVjdHVyZUNoYWluLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY0
RTFBMEQxNzNBRUREQzAwN0VFMkQzIC8qIEludGVuZGVkU3RydWN0dXJlQ2hhaW4uaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW50ZW5kZWRTdHJ1Y3R1cmVDaGFpbi5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTMzMiw2ICsxMzM0LDggQEAKIAkJMEZDODE1MTQx
NDA1MTE4RDAwQ0ZBNjAzIC8qIFZUYWJsZVNwZWN0cnVtLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFZUYWJsZVNwZWN0cnVtLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTBGQ0I0MDg1MTVDMEEzQzMwMDQ4OTMyQiAvKiBTbG90VmlzaXRvcklubGluZXMuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2xvdFZpc2l0b3JJbmxpbmVzLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGQ0NBRTQzMTZEMENGNkUwMEQwQzY1QiAvKiBQYXJz
ZXJFcnJvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQYXJzZXJFcnJvci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRkQyODEyNTE3NzkzQkUzMDBCQkIwRjMg
LyogREZHQmluYXJ5U3dpdGNoLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERGR0JpbmFyeVN3aXRj
aC5jcHA7IHBhdGggPSBkZmcvREZHQmluYXJ5U3dpdGNoLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJMEZEMjgxMjYxNzc5M0JFMzAwQkJCMEYzIC8qIERGR0JpbmFyeVN3aXRjaC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IG5hbWUgPSBERkdCaW5hcnlTd2l0Y2guaDsgcGF0aCA9IGRmZy9ERkdCaW5hcnlT
d2l0Y2guaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZEMkM5MjMxNkQwMUVFOTAw
Qzc4MDNGIC8qIFN0cnVjdHVyZUlubGluZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gU3RydWN0dXJlSW5saW5lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkw
RkQzQzgyMDE0MTE1Q0Y4MDBGRDgxQ0IgLyogREZHRHJpdmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERGR0RyaXZlci5jcHA7IHBhdGggPSBkZmcvREZHRHJpdmVy
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZEM0M4MjIxNDExNUQwRTAwRkQ4
MUNCIC8qIERGR0RyaXZlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdE
cml2ZXIuaDsgcGF0aCA9IGRmZy9ERkdEcml2ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTI5NDQsNiArMjk0OCw4IEBACiAJCQkJMEY3MTRDQTIxNkVBOTJFRDAwRjNFQkVCIC8q
IERGR0JhY2t3YXJkc1Byb3BhZ2F0aW9uUGhhc2UuaCAqLywKIAkJCQkwRjYyMDE3MDE0M0ZDRDJG
MDA2OEI3N0MgLyogREZHQmFzaWNCbG9jay5oICovLAogCQkJCTBGRDU2NTIyMTZBQjc4MEEwMDE5
NzY1MyAvKiBERkdCYXNpY0Jsb2NrSW5saW5lcy5oICovLAorCQkJCTBGRDI4MTI1MTc3OTNCRTMw
MEJCQjBGMyAvKiBERkdCaW5hcnlTd2l0Y2guY3BwICovLAorCQkJCTBGRDI4MTI2MTc3OTNCRTMw
MEJCQjBGMyAvKiBERkdCaW5hcnlTd2l0Y2guaCAqLywKIAkJCQkwRjgzNjRCNTE2NEIwQzBFMDA1
MzMyOUEgLyogREZHQnJhbmNoRGlyZWN0aW9uLmggKi8sCiAJCQkJODZFQzlEQjQxMzI4REY4MjAw
MkIyQUQ3IC8qIERGR0J5dGVDb2RlUGFyc2VyLmNwcCAqLywKIAkJCQk4NkVDOURCNTEzMjhERjgy
MDAyQjJBRDcgLyogREZHQnl0ZUNvZGVQYXJzZXIuaCAqLywKQEAgLTM0NjcsNiArMzQ3Myw3IEBA
CiAJCQkJMEZFQTBBMEUxNzA1MTNEQjAwQkI3MjJDIC8qIEZUTEpJVENvZGUuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUMyNUY4QkNFMTU3NTQ0QTkwMDI0NUI3MSAvKiBJbmNyZW1lbnRhbFN3ZWVwZXIu
aCBpbiBIZWFkZXJzICovLAogCQkJCTBGQjdGMzk5MTVFRDhFNDYwMEYxNjdCMiAvKiBJbmRleGlu
Z0hlYWRlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEZEMjgxMjgxNzc5M0JFNzAwQkJCMEYzIC8q
IERGR0JpbmFyeVN3aXRjaC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZCN0YzOUExNUVEOEU0NjAw
RjE2N0IyIC8qIEluZGV4aW5nSGVhZGVySW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZC
N0YzOUIxNUVEOEU0NjAwRjE2N0IyIC8qIEluZGV4aW5nVHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQkMxOEM0MTAwRTE2RjVDRDAwQjM0NDYwIC8qIEluaXRpYWxpemVUaHJlYWRpbmcuaCBpbiBI
ZWFkZXJzICovLApAQCAtNDM3OCw2ICs0Mzg1LDcgQEAKIAkJCQkxNDJENkYxMTEzNTM5QTQxMDBC
MDJFODYgLyogTWFya1N0YWNrLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0NDY5RERGMTA3RUM3
RTcwMDY1MDQ0NiAvKiBNYXRoT2JqZWN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTkwMjEzRTNE
MTIzQTQwQzIwMEQ0MjJGMyAvKiBNZW1vcnlTdGF0aXN0aWNzLmNwcCBpbiBTb3VyY2VzICovLAor
CQkJCTBGRDI4MTI3MTc3OTNCRTUwMEJCQjBGMyAvKiBERkdCaW5hcnlTd2l0Y2guY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMEZCNTQ2N0QxNEY1Q0ZENjAwMkMyOTg5IC8qIE1ldGhvZE9mR2V0dGlu
Z0FWYWx1ZVByb2ZpbGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODZFQkYyRkYxNTYwRjA2QTAw
OEU5MjIyIC8qIE5hbWVDb25zdHJ1Y3Rvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4NkVCRjMw
MTE1NjBGMDZBMDA4RTkyMjIgLyogTmFtZUluc3RhbmNlLmNwcCBpbiBTb3VyY2VzICovLApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0p1bXBUYWJsZS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9KdW1wVGFibGUuaAkocmV2aXNpb24g
MTUxOTQ0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0p1bXBUYWJsZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC03MCw2ICs3MCwxMSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAg
ICAgIHJldHVybiBsb2MtPnZhbHVlLmN0aU9mZnNldDsKICAgICAgICAgfQogI2VuZGlmCisgICAg
ICAgIAorICAgICAgICB2b2lkIGNsZWFyKCkKKyAgICAgICAgeworICAgICAgICAgICAgb2Zmc2V0
VGFibGUuY2xlYXIoKTsKKyAgICAgICAgfQogICAgIH07CiAKICAgICBzdHJ1Y3QgU2ltcGxlSnVt
cFRhYmxlIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQmFja3dhcmRzUHJv
cGFnYXRpb25QaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdCYWNrd2FyZHNQcm9wYWdhdGlvblBoYXNlLmNwcAkocmV2aXNpb24gMTUxOTQ0KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCYWNrd2FyZHNQcm9wYWdhdGlvblBoYXNlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzQ5LDE1ICszNDksMjYgQEAgcHJpdmF0ZToKICAgICAgICAg
ICAgIFN3aXRjaERhdGEqIGRhdGEgPSBub2RlLT5zd2l0Y2hEYXRhKCk7CiAgICAgICAgICAgICBz
d2l0Y2ggKGRhdGEtPmtpbmQpIHsKICAgICAgICAgICAgIGNhc2UgU3dpdGNoSW1tOgotICAgICAg
ICAgICAgY2FzZSBTd2l0Y2hDaGFyOiB7CiAgICAgICAgICAgICAgICAgLy8gV2UgZG9uJ3QgbmVl
ZCBOb2RlTmVlZHNOZWdaZXJvIGJlY2F1c2UgaWYgdGhlIGNhc2VzIGFyZSBhbGwgaW50ZWdlcnMK
LSAgICAgICAgICAgICAgICAvLyBvciBzdHJpbmdzIHRoZW4gLTAgYW5kIDAgYXJlIHRyZWF0ZWQg
dGhlIHNhbWUuICBXZSBkb24ndCBuZWVkCi0gICAgICAgICAgICAgICAgLy8gTm9kZVVzZWRBc090
aGVyIGJlY2F1c2UgaWYgYWxsIG9mIHRoZSBjYXNlcyBhcmUgaW50ZWdlcnMgb3IKLSAgICAgICAg
ICAgICAgICAvLyBzaW5nbGUtY2hhcmFjdGVyIHN0cmluZ3MgdGhlbiBOYU4gYW5kIHVuZGVmaW5l
ZCBhcmUgdHJlYXRlZCB0aGUgc2FtZQotICAgICAgICAgICAgICAgIC8vIChpLmUuIHRoZXkgd2ls
bCB0YWtlIGRlZmF1bHQpLgorICAgICAgICAgICAgICAgIC8vIHRoZW4gLTAgYW5kIDAgYXJlIHRy
ZWF0ZWQgdGhlIHNhbWUuICBXZSBkb24ndCBuZWVkIE5vZGVVc2VkQXNPdGhlcgorICAgICAgICAg
ICAgICAgIC8vIGJlY2F1c2UgaWYgYWxsIG9mIHRoZSBjYXNlcyBhcmUgaW50ZWdlcnMgdGhlbiBO
YU4gYW5kIHVuZGVmaW5lZCBhcmUKKyAgICAgICAgICAgICAgICAvLyB0cmVhdGVkIHRoZSBzYW1l
IChpLmUuIHRoZXkgd2lsbCB0YWtlIGRlZmF1bHQpLgogICAgICAgICAgICAgICAgIG5vZGUtPmNo
aWxkMSgpLT5tZXJnZUZsYWdzKE5vZGVVc2VkQXNOdW1iZXIgfCBOb2RlVXNlZEFzSW50KTsKICAg
ICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0gfQorICAgICAgICAgICAgY2FzZSBT
d2l0Y2hDaGFyOiB7CisgICAgICAgICAgICAgICAgLy8gV2UgZG9uJ3QgbmVlZCBOb2RlTmVlZHNO
ZWdaZXJvIGJlY2F1c2UgaWYgdGhlIGNhc2VzIGFyZSBhbGwgc3RyaW5ncworICAgICAgICAgICAg
ICAgIC8vIHRoZW4gLTAgYW5kIDAgYXJlIHRyZWF0ZWQgdGhlIHNhbWUuICBXZSBkb24ndCBuZWVk
IE5vZGVVc2VkQXNPdGhlcgorICAgICAgICAgICAgICAgIC8vIGJlY2F1c2UgaWYgYWxsIG9mIHRo
ZSBjYXNlcyBhcmUgc2luZ2xlLWNoYXJhY3RlciBzdHJpbmdzIHRoZW4gTmFOCisgICAgICAgICAg
ICAgICAgLy8gYW5kIHVuZGVmaW5lZCBhcmUgdHJlYXRlZCB0aGUgc2FtZSAoaS5lLiB0aGV5IHdp
bGwgdGFrZSBkZWZhdWx0KS4KKyAgICAgICAgICAgICAgICBub2RlLT5jaGlsZDEoKS0+bWVyZ2VG
bGFncyhOb2RlVXNlZEFzTnVtYmVyKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIGNhc2UgU3dpdGNoU3RyaW5nOgorICAgICAgICAgICAgICAgIC8v
IFdlIGRvbid0IG5lZWQgTm9kZU5lZWRzTmVnWmVybyBiZWNhdXNlIGlmIHRoZSBjYXNlcyBhcmUg
YWxsIHN0cmluZ3MKKyAgICAgICAgICAgICAgICAvLyB0aGVuIC0wIGFuZCAwIGFyZSB0cmVhdGVk
IHRoZSBzYW1lLgorICAgICAgICAgICAgICAgIG5vZGUtPmNoaWxkMSgpLT5tZXJnZUZsYWdzKE5v
ZGVVc2VkQXNOdW1iZXIgfCBOb2RlVXNlZEFzT3RoZXIpOworICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgfQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAg
ICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCaW5hcnlTd2l0Y2guY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQmluYXJ5U3dpdGNo
LmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQmluYXJ5
U3dpdGNoLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE5NiBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSAiREZHQmluYXJ5U3dpdGNoLmgiCisKKyNpZiBFTkFCTEUoREZHX0pJVCkKKworbmFt
ZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgeworCitCaW5hcnlTd2l0Y2g6OkJpbmFyeVN3aXRj
aChHUFJSZWcgdmFsdWUsIGNvbnN0IFZlY3RvcjxpbnQ2NF90PiYgY2FzZXMsIFR5cGUgdHlwZSkK
KyAgICA6IG1fdmFsdWUodmFsdWUpCisgICAgLCBtX2luZGV4KDApCisgICAgLCBtX2Nhc2VJbmRl
eChVSU5UX01BWCkKKyAgICAsIG1fbWVkaWFuQmlhcygwKQorICAgICwgbV90eXBlKHR5cGUpCit7
CisgICAgaWYgKGNhc2VzLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBjYXNlcy5zaXplKCk7ICsraSkKKyAgICAgICAgbV9jYXNl
cy5hcHBlbmQoQ2FzZShjYXNlc1tpXSwgaSkpOworICAgIHN0ZDo6c29ydChtX2Nhc2VzLmJlZ2lu
KCksIG1fY2FzZXMuZW5kKCkpOworICAgIGJ1aWxkKDAsIG1fY2FzZXMuc2l6ZSgpKTsKK30KKwor
Ym9vbCBCaW5hcnlTd2l0Y2g6OmFkdmFuY2UoTWFjcm9Bc3NlbWJsZXImIGppdCkKK3sKKyAgICBp
ZiAobV9jYXNlcy5pc0VtcHR5KCkpIHsKKyAgICAgICAgbV9mYWxsVGhyb3VnaC5hcHBlbmQoaml0
Lmp1bXAoKSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgCisgICAgaWYgKG1f
aW5kZXggPT0gbV9icmFuY2hlcy5zaXplKCkpIHsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQobV9q
dW1wU3RhY2suaXNFbXB0eSgpKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICAK
KyAgICBmb3IgKDs7KSB7CisgICAgICAgIGNvbnN0IEJyYW5jaENvZGUmIGNvZGUgPSBtX2JyYW5j
aGVzW21faW5kZXgrK107CisgICAgICAgIHN3aXRjaCAoY29kZS5raW5kKSB7CisgICAgICAgIGNh
c2UgTm90RXF1YWxUb0ZhbGxUaHJvdWdoOgorICAgICAgICAgICAgc3dpdGNoIChtX3R5cGUpIHsK
KyAgICAgICAgICAgIGNhc2UgSW50MzI6CisgICAgICAgICAgICAgICAgbV9mYWxsVGhyb3VnaC5h
cHBlbmQoaml0LmJyYW5jaDMyKAorICAgICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6
Tm90RXF1YWwsIG1fdmFsdWUsCisgICAgICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpJ
bW0zMihtX2Nhc2VzW2NvZGUuaW5kZXhdLnZhbHVlKSkpOworICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgY2FzZSBJbnRQdHI6CisgICAgICAgICAgICAgICAgbV9mYWxsVGhyb3Vn
aC5hcHBlbmQoaml0LmJyYW5jaFB0cigKKyAgICAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJs
ZXI6Ok5vdEVxdWFsLCBtX3ZhbHVlLAorICAgICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxl
cjo6SW1tUHRyKGJpdHdpc2VfY2FzdDxjb25zdCB2b2lkKj4oc3RhdGljX2Nhc3Q8aW50cHRyX3Q+
KG1fY2FzZXNbY29kZS5pbmRleF0udmFsdWUpKSkpKTsKKyAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIE5vdEVxdWFs
VG9QdXNoOgorICAgICAgICAgICAgc3dpdGNoIChtX3R5cGUpIHsKKyAgICAgICAgICAgIGNhc2Ug
SW50MzI6CisgICAgICAgICAgICAgICAgbV9qdW1wU3RhY2suYXBwZW5kKGppdC5icmFuY2gzMigK
KyAgICAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBtX3ZhbHVlLAor
ICAgICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6SW1tMzIobV9jYXNlc1tjb2RlLmlu
ZGV4XS52YWx1ZSkpKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2Ug
SW50UHRyOgorICAgICAgICAgICAgICAgIG1fanVtcFN0YWNrLmFwcGVuZChqaXQuYnJhbmNoUHRy
KAorICAgICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIG1fdmFsdWUs
CisgICAgICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpJbW1QdHIoYml0d2lzZV9jYXN0
PGNvbnN0IHZvaWQqPihzdGF0aWNfY2FzdDxpbnRwdHJfdD4obV9jYXNlc1tjb2RlLmluZGV4XS52
YWx1ZSkpKSkpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgTGVzc1RoYW5Ub1B1c2g6CisgICAgICAgICAgICBz
d2l0Y2ggKG1fdHlwZSkgeworICAgICAgICAgICAgY2FzZSBJbnQzMjoKKyAgICAgICAgICAgICAg
ICBtX2p1bXBTdGFjay5hcHBlbmQoaml0LmJyYW5jaDMyKAorICAgICAgICAgICAgICAgICAgICBN
YWNyb0Fzc2VtYmxlcjo6TGVzc1RoYW4sIG1fdmFsdWUsCisgICAgICAgICAgICAgICAgICAgIE1h
Y3JvQXNzZW1ibGVyOjpJbW0zMihtX2Nhc2VzW2NvZGUuaW5kZXhdLnZhbHVlKSkpOworICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBJbnRQdHI6CisgICAgICAgICAgICAg
ICAgbV9qdW1wU3RhY2suYXBwZW5kKGppdC5icmFuY2hQdHIoCisgICAgICAgICAgICAgICAgICAg
IE1hY3JvQXNzZW1ibGVyOjpMZXNzVGhhbiwgbV92YWx1ZSwKKyAgICAgICAgICAgICAgICAgICAg
TWFjcm9Bc3NlbWJsZXI6OkltbVB0cihiaXR3aXNlX2Nhc3Q8Y29uc3Qgdm9pZCo+KHN0YXRpY19j
YXN0PGludHB0cl90PihtX2Nhc2VzW2NvZGUuaW5kZXhdLnZhbHVlKSkpKSk7CisgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
Y2FzZSBQb3A6CisgICAgICAgICAgICBtX2p1bXBTdGFjay50YWtlTGFzdCgpLmxpbmsoJmppdCk7
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBFeGVjdXRlQ2FzZToKKyAgICAgICAg
ICAgIG1fY2FzZUluZGV4ID0gY29kZS5pbmRleDsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOwor
ICAgICAgICB9CisgICAgfQorfQorCit2b2lkIEJpbmFyeVN3aXRjaDo6YnVpbGQodW5zaWduZWQg
c3RhcnQsIHVuc2lnbmVkIGVuZCkKK3sKKyAgICB1bnNpZ25lZCBzaXplID0gZW5kIC0gc3RhcnQ7
CisgICAgCisgICAgc3dpdGNoIChzaXplKSB7CisgICAgY2FzZSAwOiB7CisgICAgICAgIFJFTEVB
U0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICAgICAg
CisgICAgY2FzZSAxOiB7CisgICAgICAgIGlmIChzdGFydAorICAgICAgICAgICAgJiYgbV9jYXNl
c1tzdGFydCAtIDFdLnZhbHVlID09IG1fY2FzZXNbc3RhcnRdLnZhbHVlIC0gMQorICAgICAgICAg
ICAgJiYgc3RhcnQgKyAxIDwgbV9jYXNlcy5zaXplKCkKKyAgICAgICAgICAgICYmIG1fY2FzZXNb
c3RhcnQgKyAxXS52YWx1ZSA9PSBtX2Nhc2VzW3N0YXJ0XS52YWx1ZSArIDEpIHsKKyAgICAgICAg
ICAgIG1fYnJhbmNoZXMuYXBwZW5kKEJyYW5jaENvZGUoRXhlY3V0ZUNhc2UsIHN0YXJ0KSk7Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgbV9icmFuY2hl
cy5hcHBlbmQoQnJhbmNoQ29kZShOb3RFcXVhbFRvRmFsbFRocm91Z2gsIHN0YXJ0KSk7CisgICAg
ICAgIG1fYnJhbmNoZXMuYXBwZW5kKEJyYW5jaENvZGUoRXhlY3V0ZUNhc2UsIHN0YXJ0KSk7Cisg
ICAgICAgIGJyZWFrOworICAgIH0KKyAgICAgICAgCisgICAgY2FzZSAyOiB7CisgICAgICAgIGlm
IChtX2Nhc2VzW3N0YXJ0XS52YWx1ZSArIDEgPT0gbV9jYXNlc1tzdGFydCArIDFdLnZhbHVlCisg
ICAgICAgICAgICAmJiBzdGFydAorICAgICAgICAgICAgJiYgbV9jYXNlc1tzdGFydCAtIDFdLnZh
bHVlID09IG1fY2FzZXNbc3RhcnRdLnZhbHVlIC0gMQorICAgICAgICAgICAgJiYgc3RhcnQgKyAy
IDwgbV9jYXNlcy5zaXplKCkKKyAgICAgICAgICAgICYmIG1fY2FzZXNbc3RhcnQgKyAyXS52YWx1
ZSA9PSBtX2Nhc2VzW3N0YXJ0ICsgMV0udmFsdWUgKyAxKSB7CisgICAgICAgICAgICBtX2JyYW5j
aGVzLmFwcGVuZChCcmFuY2hDb2RlKE5vdEVxdWFsVG9QdXNoLCBzdGFydCkpOworICAgICAgICAg
ICAgbV9icmFuY2hlcy5hcHBlbmQoQnJhbmNoQ29kZShFeGVjdXRlQ2FzZSwgc3RhcnQpKTsKKyAg
ICAgICAgICAgIG1fYnJhbmNoZXMuYXBwZW5kKEJyYW5jaENvZGUoUG9wKSk7CisgICAgICAgICAg
ICBtX2JyYW5jaGVzLmFwcGVuZChCcmFuY2hDb2RlKEV4ZWN1dGVDYXNlLCBzdGFydCArIDEpKTsK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICB1bnNpZ25l
ZCBmaXJzdENhc2UgPSBzdGFydDsKKyAgICAgICAgdW5zaWduZWQgc2Vjb25kQ2FzZSA9IHN0YXJ0
ICsgMTsKKyAgICAgICAgaWYgKG1fbWVkaWFuQmlhcykKKyAgICAgICAgICAgIHN0ZDo6c3dhcChm
aXJzdENhc2UsIHNlY29uZENhc2UpOworICAgICAgICBtX21lZGlhbkJpYXMgXj0gMTsKKyAgICAg
ICAgCisgICAgICAgIG1fYnJhbmNoZXMuYXBwZW5kKEJyYW5jaENvZGUoTm90RXF1YWxUb1B1c2gs
IGZpcnN0Q2FzZSkpOworICAgICAgICBtX2JyYW5jaGVzLmFwcGVuZChCcmFuY2hDb2RlKEV4ZWN1
dGVDYXNlLCBmaXJzdENhc2UpKTsKKyAgICAgICAgbV9icmFuY2hlcy5hcHBlbmQoQnJhbmNoQ29k
ZShQb3ApKTsKKyAgICAgICAgbV9icmFuY2hlcy5hcHBlbmQoQnJhbmNoQ29kZShOb3RFcXVhbFRv
RmFsbFRocm91Z2gsIHNlY29uZENhc2UpKTsKKyAgICAgICAgbV9icmFuY2hlcy5hcHBlbmQoQnJh
bmNoQ29kZShFeGVjdXRlQ2FzZSwgc2Vjb25kQ2FzZSkpOworICAgICAgICBicmVhazsKKyAgICB9
CisgICAgICAgIAorICAgIGRlZmF1bHQ6IHsKKyAgICAgICAgdW5zaWduZWQgbWVkaWFuSW5kZXgg
PSAoc3RhcnQgKyBlbmQpIC8gMjsKKyAgICAgICAgaWYgKCEoc2l6ZSAmIDEpKSB7CisgICAgICAg
ICAgICAvLyBCZWNhdXNlIGVuZCBpcyBleGNsdXNpdmUsIGluIHRoZSBldmVuIGNhc2UsIHRoaXMg
cm91bmRzIHVwIGJ5CisgICAgICAgICAgICAvLyBkZWZhdWx0LiBIZW5jZSBtZWRpYW4gYmlhcyBz
b21ldGltZXMgZmxpcHMgdG8gc3VidHJhY2luZyBvbmUKKyAgICAgICAgICAgIC8vIGluIG9yZGVy
IHRvIGdldCByb3VuZC1kb3duIGJlaGF2aW9yLgorICAgICAgICAgICAgbWVkaWFuSW5kZXggLT0g
bV9tZWRpYW5CaWFzOworICAgICAgICAgICAgbV9tZWRpYW5CaWFzIF49IDE7CisgICAgICAgIH0K
KyAgICAgICAgCisgICAgICAgIFJFTEVBU0VfQVNTRVJUKG1lZGlhbkluZGV4ID4gc3RhcnQpOwor
ICAgICAgICBSRUxFQVNFX0FTU0VSVChtZWRpYW5JbmRleCArIDEgPCBlbmQpOworICAgICAgICAK
KyAgICAgICAgbV9icmFuY2hlcy5hcHBlbmQoQnJhbmNoQ29kZShMZXNzVGhhblRvUHVzaCwgbWVk
aWFuSW5kZXgpKTsKKyAgICAgICAgbV9icmFuY2hlcy5hcHBlbmQoQnJhbmNoQ29kZShOb3RFcXVh
bFRvUHVzaCwgbWVkaWFuSW5kZXgpKTsKKyAgICAgICAgbV9icmFuY2hlcy5hcHBlbmQoQnJhbmNo
Q29kZShFeGVjdXRlQ2FzZSwgbWVkaWFuSW5kZXgpKTsKKyAgICAgICAgCisgICAgICAgIG1fYnJh
bmNoZXMuYXBwZW5kKEJyYW5jaENvZGUoUG9wKSk7CisgICAgICAgIGJ1aWxkKG1lZGlhbkluZGV4
ICsgMSwgZW5kKTsKKyAgICAgICAgCisgICAgICAgIG1fYnJhbmNoZXMuYXBwZW5kKEJyYW5jaENv
ZGUoUG9wKSk7CisgICAgICAgIGJ1aWxkKHN0YXJ0LCBtZWRpYW5JbmRleCk7CisgICAgICAgIGJy
ZWFrOworICAgIH0gfQorfQorCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6REZHCisKKyNlbmRpZiAv
LyBFTkFCTEUoREZHX0pJVCkKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdC
aW5hcnlTd2l0Y2guaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0JpbmFyeVN3aXRjaC5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdCaW5hcnlTd2l0Y2guaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE0MiBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIERGR0Jp
bmFyeVN3aXRjaF9oCisjZGVmaW5lIERGR0JpbmFyeVN3aXRjaF9oCisKKyNpbmNsdWRlIDx3dGYv
UGxhdGZvcm0uaD4KKworI2lmIEVOQUJMRShERkdfSklUKQorCisjaW5jbHVkZSAiREZHR1BSSW5m
by5oIgorI2luY2x1ZGUgIk1hY3JvQXNzZW1ibGVyLmgiCisKK25hbWVzcGFjZSBKU0MgeyBuYW1l
c3BhY2UgREZHIHsKKworLy8gVGhlIEJpbmFyeVN3aXRjaCBjbGFzcyBtYWtlcyBpdCBlYXN5IHRv
IGVtaXQgYSBzd2l0Y2ggc3RhdGVtZW50IG92ZXIgZWl0aGVyCisvLyAzMi1iaXQgaW50ZWdlcnMg
b3IgcG9pbnRlcnMsIHdoZXJlIHRoZSBzd2l0Y2ggdXNlcyBhIHRyZWUgb2YgYnJhbmNoZXMKKy8v
IHJhdGhlciB0aGFuIGEganVtcCB0YWJsZS4gVGhpcyBtYWtlcyBpdCBwYXJ0aWN1bGFybHkgdXNl
ZnVsIGlmIHRoZSBjYXNlCisvLyB2YWx1ZXMgYXJlIHRvbyBmYXIgYXBhcnQgdG8gbWFrZSBhIGp1
bXAgdGFibGUgcHJhY3RpY2FsLCBvciBpZiB0aGVyZSBhcmUKKy8vIHN1ZmZpY2llbnRseSBmZXcg
Y2FzZXMgdGhhdCB0aGUgdG90YWwgY29zdCBvZiBsb2cobnVtQ2FzZXMpIGJyYW5jaGVzIGlzCisv
LyBsZXNzIHRoYW4gdGhlIGNvc3Qgb2YgYW4gaW5kaXJlY3RlZCBqdW1wLgorLy8KKy8vIEluIGFu
IGVmZm9ydCB0byBzaW1wbGlmeSB0aGUgbG9naWMgb2YgZW1pdHRpbmcgY29kZSBmb3IgZWFjaCBj
YXNlLCB0aGlzCisvLyB1c2VzIGFuIGl0ZXJhdG9yIHN0eWxlLCByYXRoZXIgdGhhbiBhIGZ1bmN0
b3IgY2FsbGJhY2sgc3R5bGUuIFRoaXMgbWFrZXMKKy8vIHNlbnNlIGJlY2F1c2UgZXZlbiB0aGUg
aXRlcmF0b3IgaW1wbGVtZW50YXRpb24gZm91bmQgaGVyZWluIGlzIHJlbGF0aXZlbHkKKy8vIHNp
bXBsZSwgd2hlcmVhcyB0aGUgY29kZSBpdCdzIHVzZWQgZnJvbSBpcyB1c3VhbGx5IHF1aXRlIGNv
bXBsZXggLSBvbmUKKy8vIGV4YW1wbGUgYmVpbmcgdGhlIHRyaWUtb2YtdHJlZXMgc3RyaW5nIHN3
aXRjaCBpbXBsZW1lbnRhdGlvbiwgd2hlcmUgdGhlCisvLyBjb2RlIGVtaXR0ZWQgZm9yIGVhY2gg
Y2FzZSBpbnZvbHZlcyByZWN1cnNpbmcgdG8gZW1pdCBjb2RlIGZvciBhIHN1Yi10cmllLgorLy8K
Ky8vIFVzZSB0aGlzIGxpa2Ugc286CisvLworLy8gQmluYXJ5U3dpdGNoIHN3aXRjaCh2YWx1ZVJl
ZywgY2FzZXNWZWN0b3IsIEJpbmFyeVN3aXRjaDo6SW50MzIpOworLy8gd2hpbGUgKHN3aXRjaC5h
ZHZhbmNlKGppdCkpIHsKKy8vICAgICBpbnQgdmFsdWUgPSBzd2l0Y2guY2FzZVZhbHVlKCk7Cisv
LyAgICAgdW5zaWduZWQgaW5kZXggPSBzd2l0Y2guY2FzZUluZGV4KCk7IC8vIGluZGV4IGludG8g
Y2FzZXNWZWN0b3IsIGFib3ZlCisvLyAgICAgLi4uIC8vIGdlbmVyYXRlIGNvZGUgZm9yIHRoaXMg
Y2FzZQorLy8gfQorLy8gc3dpdGNoLmZhbGxUaHJvdWdoKCkubGluaygmaml0KTsKKworY2xhc3Mg
QmluYXJ5U3dpdGNoIHsKK3B1YmxpYzoKKyAgICBlbnVtIFR5cGUgeworICAgICAgICBJbnQzMiwK
KyAgICAgICAgSW50UHRyCisgICAgfTsKKyAgICAKKyAgICBCaW5hcnlTd2l0Y2goR1BSUmVnIHZh
bHVlLCBjb25zdCBWZWN0b3I8aW50NjRfdD4mIGNhc2VzLCBUeXBlKTsKKyAgICAKKyAgICB1bnNp
Z25lZCBjYXNlSW5kZXgoKSBjb25zdCB7IHJldHVybiBtX2Nhc2VzW21fY2FzZUluZGV4XS5pbmRl
eDsgfQorICAgIGludCBjYXNlVmFsdWUoKSBjb25zdCB7IHJldHVybiBtX2Nhc2VzW21fY2FzZUlu
ZGV4XS52YWx1ZTsgfQorICAgIAorICAgIGJvb2wgYWR2YW5jZShNYWNyb0Fzc2VtYmxlciYpOwor
ICAgIAorICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wTGlzdCYgZmFsbFRocm91Z2goKSB7IHJldHVy
biBtX2ZhbGxUaHJvdWdoOyB9CisgICAgCitwcml2YXRlOgorICAgIHZvaWQgYnVpbGQodW5zaWdu
ZWQgc3RhcnQsIHVuc2lnbmVkIGVuZCk7CisgICAgCisgICAgR1BSUmVnIG1fdmFsdWU7CisgICAg
CisgICAgc3RydWN0IENhc2UgeworICAgICAgICBDYXNlKCkgeyB9CisKKyAgICAgICAgQ2FzZShp
bnQ2NF90IHZhbHVlLCB1bnNpZ25lZCBpbmRleCkKKyAgICAgICAgICAgIDogdmFsdWUodmFsdWUp
CisgICAgICAgICAgICAsIGluZGV4KGluZGV4KQorICAgICAgICB7CisgICAgICAgIH0KKyAgICAg
ICAgCisgICAgICAgIGJvb2wgb3BlcmF0b3I8KGNvbnN0IENhc2UmIG90aGVyKSBjb25zdAorICAg
ICAgICB7CisgICAgICAgICAgICByZXR1cm4gdmFsdWUgPCBvdGhlci52YWx1ZTsKKyAgICAgICAg
fQorICAgICAgICAKKyAgICAgICAgaW50NjRfdCB2YWx1ZTsKKyAgICAgICAgdW5zaWduZWQgaW5k
ZXg7CisgICAgfTsKKyAgICAKKyAgICBWZWN0b3I8Q2FzZT4gbV9jYXNlczsKKyAgICAKKyAgICBl
bnVtIEJyYW5jaEtpbmQgeworICAgICAgICBOb3RFcXVhbFRvRmFsbFRocm91Z2gsCisgICAgICAg
IE5vdEVxdWFsVG9QdXNoLAorICAgICAgICBMZXNzVGhhblRvUHVzaCwKKyAgICAgICAgUG9wLAor
ICAgICAgICBFeGVjdXRlQ2FzZQorICAgIH07CisgICAgICAgIAorICAgIHN0cnVjdCBCcmFuY2hD
b2RlIHsKKyAgICAgICAgQnJhbmNoQ29kZSgpIHsgfQorICAgICAgICAKKyAgICAgICAgQnJhbmNo
Q29kZShCcmFuY2hLaW5kIGtpbmQsIHVuc2lnbmVkIGluZGV4ID0gVUlOVF9NQVgpCisgICAgICAg
ICAgICA6IGtpbmQoa2luZCkKKyAgICAgICAgICAgICwgaW5kZXgoaW5kZXgpCisgICAgICAgIHsK
KyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgQnJhbmNoS2luZCBraW5kOworICAgICAgICB1
bnNpZ25lZCBpbmRleDsKKyAgICB9OworICAgIAorICAgIFZlY3RvcjxCcmFuY2hDb2RlPiBtX2Jy
YW5jaGVzOworCisgICAgdW5zaWduZWQgbV9pbmRleDsKKyAgICB1bnNpZ25lZCBtX2Nhc2VJbmRl
eDsKKyAgICBWZWN0b3I8TWFjcm9Bc3NlbWJsZXI6Okp1bXA+IG1fanVtcFN0YWNrOworICAgIAor
ICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wTGlzdCBtX2ZhbGxUaHJvdWdoOworICAgIAorICAgIHVu
c2lnbmVkIG1fbWVkaWFuQmlhczsKKyAgICAKKyAgICBUeXBlIG1fdHlwZTsKK307CisKK30gfSAv
LyBuYW1lc3BhY2UgSlNDOjpERkcKKworI2VuZGlmIC8vIEVOQUJMRShERkdfSklUKQorCisjZW5k
aWYgLy8gREZHQmluYXJ5U3dpdGNoX2gKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAJKHJldmlzaW9uIDE1MTk0NCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yODAwLDYgKzI4MDAsMjYgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1
bnNpZ25lZAogICAgICAgICAgICAgTEFTVF9PUENPREUob3Bfc3dpdGNoX2NoYXIpOwogICAgICAg
ICB9CiAKKyAgICAgICAgY2FzZSBvcF9zd2l0Y2hfc3RyaW5nOiB7CisgICAgICAgICAgICBTd2l0
Y2hEYXRhIGRhdGE7CisgICAgICAgICAgICBkYXRhLmtpbmQgPSBTd2l0Y2hTdHJpbmc7CisgICAg
ICAgICAgICBkYXRhLnN3aXRjaFRhYmxlSW5kZXggPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5v
cGVyYW5kOworICAgICAgICAgICAgZGF0YS5mYWxsVGhyb3VnaCA9IG1fY3VycmVudEluZGV4ICsg
Y3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZDsKKyAgICAgICAgICAgIFN0cmluZ0p1bXBU
YWJsZSYgdGFibGUgPSBtX2NvZGVCbG9jay0+c3RyaW5nU3dpdGNoSnVtcFRhYmxlKGRhdGEuc3dp
dGNoVGFibGVJbmRleCk7CisgICAgICAgICAgICBTdHJpbmdKdW1wVGFibGU6OlN0cmluZ09mZnNl
dFRhYmxlOjppdGVyYXRvciBpdGVyOworICAgICAgICAgICAgU3RyaW5nSnVtcFRhYmxlOjpTdHJp
bmdPZmZzZXRUYWJsZTo6aXRlcmF0b3IgZW5kID0gdGFibGUub2Zmc2V0VGFibGUuZW5kKCk7Cisg
ICAgICAgICAgICBmb3IgKGl0ZXIgPSB0YWJsZS5vZmZzZXRUYWJsZS5iZWdpbigpOyBpdGVyICE9
IGVuZDsgKytpdGVyKSB7CisgICAgICAgICAgICAgICAgdW5zaWduZWQgdGFyZ2V0ID0gbV9jdXJy
ZW50SW5kZXggKyBpdGVyLT52YWx1ZS5icmFuY2hPZmZzZXQ7CisgICAgICAgICAgICAgICAgaWYg
KHRhcmdldCA9PSBkYXRhLmZhbGxUaHJvdWdoKQorICAgICAgICAgICAgICAgICAgICBjb250aW51
ZTsKKyAgICAgICAgICAgICAgICBkYXRhLmNhc2VzLmFwcGVuZCgKKyAgICAgICAgICAgICAgICAg
ICAgU3dpdGNoQ2FzZShMYXp5SlNWYWx1ZTo6a25vd25TdHJpbmdJbXBsKGl0ZXItPmtleS5nZXQo
KSksIHRhcmdldCkpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgbV9ncmFwaC5tX3N3aXRj
aERhdGEuYXBwZW5kKGRhdGEpOworICAgICAgICAgICAgYWRkVG9HcmFwaChTd2l0Y2gsIE9wSW5m
bygmbV9ncmFwaC5tX3N3aXRjaERhdGEubGFzdCgpKSwgZ2V0KGN1cnJlbnRJbnN0cnVjdGlvblsz
XS51Lm9wZXJhbmQpKTsKKyAgICAgICAgICAgIExBU1RfT1BDT0RFKG9wX3N3aXRjaF9zdHJpbmcp
OworICAgICAgICB9CisKICAgICAgICAgY2FzZSBvcF9yZXQ6CiAgICAgICAgICAgICBmbHVzaEFy
Z3VtZW50c0FuZENhcHR1cmVkVmFyaWFibGVzKCk7CiAgICAgICAgICAgICBpZiAoaW5saW5lQ2Fs
bEZyYW1lKCkpIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0
aWVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFi
aWxpdGllcy5jcHAJKHJldmlzaW9uIDE1MTk0NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQ2FwYWJpbGl0aWVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTkxLDYgKzE5MSw3IEBA
IENhcGFiaWxpdHlMZXZlbCBjYXBhYmlsaXR5TGV2ZWwoT3Bjb2RlSUQKICAgICBjYXNlIG9wX3Rl
YXJfb2ZmX2FjdGl2YXRpb246CiAgICAgY2FzZSBvcF9uZXdfZnVuYzoKICAgICBjYXNlIG9wX25l
d19mdW5jX2V4cDoKKyAgICBjYXNlIG9wX3N3aXRjaF9zdHJpbmc6IC8vIERvbid0IGlubGluZSBi
ZWNhdXNlIHdlIGRvbid0IHdhbnQgdG8gY29weSBzdHJpbmcgdGFibGVzIGluIHRoZSBjb25jdXJy
ZW50IEpJVC4KICAgICAgICAgcmV0dXJuIENhbkNvbXBpbGU7CiAKICAgICBkZWZhdWx0OgpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCShyZXZpc2lv
biAxNTE5NDQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC01OTUsNiArNTk1LDEyIEBAIHByaXZhdGU6CiAgICAgICAgICAg
ICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLT5zaG91bGRTcGVjdWxhdGVTdHJpbmcoKSkKICAgICAg
ICAgICAgICAgICAgICAgc2V0VXNlS2luZEFuZFVuYm94SWZQcm9maXRhYmxlPFN0cmluZ1VzZT4o
bm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2Fz
ZSBTd2l0Y2hTdHJpbmc6CisgICAgICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLT5zaG91
bGRTcGVjdWxhdGVTdHJpbmdJZGVudCgpKQorICAgICAgICAgICAgICAgICAgICBzZXRVc2VLaW5k
QW5kVW5ib3hJZlByb2ZpdGFibGU8U3RyaW5nSWRlbnRVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAg
ICAgICAgICAgICAgICBlbHNlIGlmIChub2RlLT5jaGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRlU3Ry
aW5nKCkpCisgICAgICAgICAgICAgICAgICAgIHNldFVzZUtpbmRBbmRVbmJveElmUHJvZml0YWJs
ZTxTdHJpbmdVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmNwcAkocmV2aXNpb24gMTUxOTQ0
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTE2Myw2ICsxNjMsOSBAQCB2b2lkIEpJVENvbXBpbGVyOjpsaW5rKExpbmtC
dWZmZXImIGxpbmtCCiAgICAgICAgIGlmICghZGF0YS5kaWRVc2VKdW1wVGFibGUpCiAgICAgICAg
ICAgICBjb250aW51ZTsKICAgICAgICAgCisgICAgICAgIGlmIChkYXRhLmtpbmQgPT0gU3dpdGNo
U3RyaW5nKQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIAogICAgICAgICBSRUxFQVNF
X0FTU0VSVChkYXRhLmtpbmQgPT0gU3dpdGNoSW1tIHx8IGRhdGEua2luZCA9PSBTd2l0Y2hDaGFy
KTsKICAgICAgICAgCiAgICAgICAgIHVzZWRKdW1wVGFibGVzLnNldChkYXRhLnN3aXRjaFRhYmxl
SW5kZXgpOwpAQCAtMTg0LDYgKzE4NywzMSBAQCB2b2lkIEpJVENvbXBpbGVyOjpsaW5rKExpbmtC
dWZmZXImIGxpbmtCCiAgICAgICAgIG1fY29kZUJsb2NrLT5zd2l0Y2hKdW1wVGFibGUoaSkuY2xl
YXIoKTsKICAgICB9CiAKKyAgICAvLyBOT1RFOiB3ZSBjYW5ub3QgY2xlYXIgc3RyaW5nIHN3aXRj
aCB0YWJsZXMgYmVjYXVzZSAoMSkgd2UncmUgcnVubmluZyBjb25jdXJyZW50bHkKKyAgICAvLyBh
bmQgd2UgY2Fubm90IGRlcmVmIFN0cmluZ0ltcGwncyBhbmQgKDIpIGl0IHdvdWxkIGJlIHdlaXJk
IHRvIGRlcmVmIHRob3NlCisgICAgLy8gU3RyaW5nSW1wbCdzIHNpbmNlIHdlIHJlZmVyIHRvIHRo
ZW0uCisgICAgZm9yICh1bnNpZ25lZCBpID0gbV9ncmFwaC5tX3N3aXRjaERhdGEuc2l6ZSgpOyBp
LS07KSB7CisgICAgICAgIFN3aXRjaERhdGEmIGRhdGEgPSBtX2dyYXBoLm1fc3dpdGNoRGF0YVtp
XTsKKyAgICAgICAgaWYgKCFkYXRhLmRpZFVzZUp1bXBUYWJsZSkKKyAgICAgICAgICAgIGNvbnRp
bnVlOworICAgICAgICAKKyAgICAgICAgaWYgKGRhdGEua2luZCAhPSBTd2l0Y2hTdHJpbmcpCisg
ICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgCisgICAgICAgIFN0cmluZ0p1bXBUYWJsZSYg
dGFibGUgPSBtX2NvZGVCbG9jay0+c3RyaW5nU3dpdGNoSnVtcFRhYmxlKGRhdGEuc3dpdGNoVGFi
bGVJbmRleCk7CisgICAgICAgIHRhYmxlLmN0aURlZmF1bHQgPSBsaW5rQnVmZmVyLmxvY2F0aW9u
T2YobV9ibG9ja0hlYWRzW2RhdGEuZmFsbFRocm91Z2hdKTsKKyAgICAgICAgU3RyaW5nSnVtcFRh
YmxlOjpTdHJpbmdPZmZzZXRUYWJsZTo6aXRlcmF0b3IgaXRlcjsKKyAgICAgICAgU3RyaW5nSnVt
cFRhYmxlOjpTdHJpbmdPZmZzZXRUYWJsZTo6aXRlcmF0b3IgZW5kID0gdGFibGUub2Zmc2V0VGFi
bGUuZW5kKCk7CisgICAgICAgIGZvciAoaXRlciA9IHRhYmxlLm9mZnNldFRhYmxlLmJlZ2luKCk7
IGl0ZXIgIT0gZW5kOyArK2l0ZXIpCisgICAgICAgICAgICBpdGVyLT52YWx1ZS5jdGlPZmZzZXQg
PSB0YWJsZS5jdGlEZWZhdWx0OworICAgICAgICBmb3IgKHVuc2lnbmVkIGogPSBkYXRhLmNhc2Vz
LnNpemUoKTsgai0tOykgeworICAgICAgICAgICAgU3dpdGNoQ2FzZSYgbXlDYXNlID0gZGF0YS5j
YXNlc1tqXTsKKyAgICAgICAgICAgIGl0ZXIgPSB0YWJsZS5vZmZzZXRUYWJsZS5maW5kKG15Q2Fz
ZS52YWx1ZS5zdHJpbmdJbXBsKCkpOworICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoaXRlciAh
PSBlbmQpOworICAgICAgICAgICAgaXRlci0+dmFsdWUuY3RpT2Zmc2V0ID0gbGlua0J1ZmZlci5s
b2NhdGlvbk9mKG1fYmxvY2tIZWFkc1tteUNhc2UudGFyZ2V0XSk7CisgICAgICAgIH0KKyAgICB9
CisKICAgICAvLyBMaW5rIGFsbCBjYWxscyBvdXQgZnJvbSB0aGUgSklUIGNvZGUgdG8gdGhlaXIg
cmVzcGVjdGl2ZSBmdW5jdGlvbnMuCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fY2Fs
bHMuc2l6ZSgpOyArK2kpCiAgICAgICAgIGxpbmtCdWZmZXIubGluayhtX2NhbGxzW2ldLm1fY2Fs
bCwgbV9jYWxsc1tpXS5tX2Z1bmN0aW9uKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHTGF6eUpTVmFsdWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHTGF6eUpTVmFsdWUuY3BwCShyZXZpc2lvbiAxNTE5NDQpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0xhenlKU1ZhbHVlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzks
NiArMzksOCBAQCBKU1ZhbHVlIExhenlKU1ZhbHVlOjpnZXRWYWx1ZShWTSYgdm0pIGNvCiAgICAg
ICAgIHJldHVybiB2YWx1ZSgpOwogICAgIGNhc2UgU2luZ2xlQ2hhcmFjdGVyU3RyaW5nOgogICAg
ICAgICByZXR1cm4ganNTaW5nbGVDaGFyYWN0ZXJTdHJpbmcoJnZtLCB1LmNoYXJhY3Rlcik7Cisg
ICAgY2FzZSBLbm93blN0cmluZ0ltcGw6CisgICAgICAgIHJldHVybiBqc1N0cmluZygmdm0sIHUu
c3RyaW5nSW1wbCk7CiAgICAgfQogICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9
CkBAIC01OSw2ICs2MSwxOSBAQCBzdGF0aWMgVHJpU3RhdGUgZXF1YWxUb1NpbmdsZUNoYXJhY3Rl
cihKCiAgICAgcmV0dXJuIHRyaVN0YXRlKHN0cmluZy0+YXQoMCkgPT0gY2hhcmFjdGVyKTsKIH0K
IAorc3RhdGljIFRyaVN0YXRlIGVxdWFsVG9TdHJpbmdJbXBsKEpTVmFsdWUgdmFsdWUsIFN0cmlu
Z0ltcGwqIHN0cmluZ0ltcGwpCit7CisgICAgaWYgKCF2YWx1ZS5pc1N0cmluZygpKQorICAgICAg
ICByZXR1cm4gRmFsc2VUcmlTdGF0ZTsKKyAgICAKKyAgICBKU1N0cmluZyoganNTdHJpbmcgPSBh
c1N0cmluZyh2YWx1ZSk7CisgICAgY29uc3QgU3RyaW5nSW1wbCogc3RyaW5nID0ganNTdHJpbmct
PnRyeUdldFZhbHVlSW1wbCgpOworICAgIGlmICghc3RyaW5nKQorICAgICAgICByZXR1cm4gTWl4
ZWRUcmlTdGF0ZTsKKyAgICAKKyAgICByZXR1cm4gdHJpU3RhdGUoV1RGOjplcXVhbChzdHJpbmdJ
bXBsLCBzdHJpbmcpKTsKK30KKwogVHJpU3RhdGUgTGF6eUpTVmFsdWU6OnN0cmljdEVxdWFsKGNv
bnN0IExhenlKU1ZhbHVlJiBvdGhlcikgY29uc3QKIHsKICAgICBzd2l0Y2ggKG1fa2luZCkgewpA
QCAtNjgsMTIgKzgzLDI2IEBAIFRyaVN0YXRlIExhenlKU1ZhbHVlOjpzdHJpY3RFcXVhbChjb25z
dCAKICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjpwdXJlU3RyaWN0RXF1YWwodmFsdWUoKSwg
b3RoZXIudmFsdWUoKSk7CiAgICAgICAgIGNhc2UgU2luZ2xlQ2hhcmFjdGVyU3RyaW5nOgogICAg
ICAgICAgICAgcmV0dXJuIGVxdWFsVG9TaW5nbGVDaGFyYWN0ZXIodmFsdWUoKSwgb3RoZXIuY2hh
cmFjdGVyKCkpOworICAgICAgICBjYXNlIEtub3duU3RyaW5nSW1wbDoKKyAgICAgICAgICAgIHJl
dHVybiBlcXVhbFRvU3RyaW5nSW1wbCh2YWx1ZSgpLCBvdGhlci5zdHJpbmdJbXBsKCkpOwogICAg
ICAgICB9CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgU2luZ2xlQ2hhcmFjdGVyU3RyaW5nOgog
ICAgICAgICBzd2l0Y2ggKG90aGVyLm1fa2luZCkgewogICAgICAgICBjYXNlIFNpbmdsZUNoYXJh
Y3RlclN0cmluZzoKICAgICAgICAgICAgIHJldHVybiB0cmlTdGF0ZShjaGFyYWN0ZXIoKSA9PSBv
dGhlci5jaGFyYWN0ZXIoKSk7CisgICAgICAgIGNhc2UgS25vd25TdHJpbmdJbXBsOgorICAgICAg
ICAgICAgaWYgKG90aGVyLnN0cmluZ0ltcGwoKS0+bGVuZ3RoKCkgIT0gMSkKKyAgICAgICAgICAg
ICAgICByZXR1cm4gRmFsc2VUcmlTdGF0ZTsKKyAgICAgICAgICAgIHJldHVybiB0cmlTdGF0ZShv
dGhlci5zdHJpbmdJbXBsKCktPmF0KDApID09IGNoYXJhY3RlcigpKTsKKyAgICAgICAgZGVmYXVs
dDoKKyAgICAgICAgICAgIHJldHVybiBvdGhlci5zdHJpY3RFcXVhbCgqdGhpcyk7CisgICAgICAg
IH0KKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBLbm93blN0cmluZ0ltcGw6CisgICAgICAgIHN3
aXRjaCAob3RoZXIubV9raW5kKSB7CisgICAgICAgIGNhc2UgS25vd25TdHJpbmdJbXBsOgorICAg
ICAgICAgICAgcmV0dXJuIHRyaVN0YXRlKFdURjo6ZXF1YWwoc3RyaW5nSW1wbCgpLCBvdGhlci5z
dHJpbmdJbXBsKCkpKTsKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIHJldHVybiBvdGhl
ci5zdHJpY3RFcXVhbCgqdGhpcyk7CiAgICAgICAgIH0KQEAgLTkzLDYgKzEyMiw5IEBAIHZvaWQg
TGF6eUpTVmFsdWU6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkKICAgICAgICAgb3V0LnByaW50Zigi
JTA0WCIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihjaGFyYWN0ZXIoKSkpOwogICAgICAgICBvdXQu
cHJpbnQoIiAvICIsIFN0cmluZ0ltcGw6OnV0ZjhGb3JDaGFyYWN0ZXJzKCZ1LmNoYXJhY3Rlciwg
MSksICIpIik7CiAgICAgICAgIHJldHVybjsKKyAgICBjYXNlIEtub3duU3RyaW5nSW1wbDoKKyAg
ICAgICAgb3V0LnByaW50KCJMYXp5OlN0cmluZygiLCBzdHJpbmdJbXBsKCksICIpIik7CisgICAg
ICAgIHJldHVybjsKICAgICB9CiAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0K
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTGF6eUpTVmFsdWUuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0xhenlKU1ZhbHVlLmgJKHJldmlz
aW9uIDE1MTk0NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTGF6eUpTVmFsdWUu
aAkod29ya2luZyBjb3B5KQpAQCAtNDAsNyArNDAsOCBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNw
YWNlIERGRyB7CiAKIGVudW0gTGF6aW5lc3NLaW5kIHsKICAgICBLbm93blZhbHVlLAotICAgIFNp
bmdsZUNoYXJhY3RlclN0cmluZworICAgIFNpbmdsZUNoYXJhY3RlclN0cmluZywKKyAgICBLbm93
blN0cmluZ0ltcGwKIH07CiAKIGNsYXNzIExhenlKU1ZhbHVlIHsKQEAgLTU5LDYgKzYwLDE0IEBA
IHB1YmxpYzoKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAgICAgCisgICAgc3RhdGlj
IExhenlKU1ZhbHVlIGtub3duU3RyaW5nSW1wbChTdHJpbmdJbXBsKiBzdHJpbmcpCisgICAgewor
ICAgICAgICBMYXp5SlNWYWx1ZSByZXN1bHQ7CisgICAgICAgIHJlc3VsdC5tX2tpbmQgPSBLbm93
blN0cmluZ0ltcGw7CisgICAgICAgIHJlc3VsdC51LnN0cmluZ0ltcGwgPSBzdHJpbmc7CisgICAg
ICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorICAgIAogICAgIEpTVmFsdWUgdHJ5R2V0VmFsdWUo
KSBjb25zdAogICAgIHsKICAgICAgICAgaWYgKG1fa2luZCA9PSBLbm93blZhbHVlKQpAQCAtODAs
NiArODksMTIgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gdS5jaGFyYWN0ZXI7CiAgICAgfQog
ICAgIAorICAgIFN0cmluZ0ltcGwqIHN0cmluZ0ltcGwoKSBjb25zdAorICAgIHsKKyAgICAgICAg
QVNTRVJUKG1fa2luZCA9PSBLbm93blN0cmluZ0ltcGwpOworICAgICAgICByZXR1cm4gdS5zdHJp
bmdJbXBsOworICAgIH0KKyAgICAKICAgICBUcmlTdGF0ZSBzdHJpY3RFcXVhbChjb25zdCBMYXp5
SlNWYWx1ZSYgb3RoZXIpIGNvbnN0OwogICAgIAogICAgIHVuc2lnbmVkIHN3aXRjaExvb2t1cFZh
bHVlKCkgY29uc3QKQEAgLTkyLDggKzEwNywxMCBAQCBwdWJsaWM6CiAgICAgICAgICAgICByZXR1
cm4gdmFsdWUoKS5hc0ludDMyKCk7CiAgICAgICAgIGNhc2UgU2luZ2xlQ2hhcmFjdGVyU3RyaW5n
OgogICAgICAgICAgICAgcmV0dXJuIGNoYXJhY3RlcigpOworICAgICAgICBkZWZhdWx0OgorICAg
ICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgIHJldHVy
biAwOwogICAgICAgICB9Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAg
ICAgfQogICAgIAogICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYpIGNvbnN0OwpAQCAtMTAyLDYg
KzExOSw3IEBAIHByaXZhdGU6CiAgICAgdW5pb24gewogICAgICAgICBFbmNvZGVkSlNWYWx1ZSB2
YWx1ZTsKICAgICAgICAgVUNoYXIgY2hhcmFjdGVyOworICAgICAgICBTdHJpbmdJbXBsKiBzdHJp
bmdJbXBsOwogICAgIH0gdTsKICAgICBMYXppbmVzc0tpbmQgbV9raW5kOwogfTsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmNwcAkocmV2aXNpb24gMTUxOTQ0KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTMs
NiArNTMsOSBAQCB2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwgU3dpCiAgICAg
Y2FzZSBTd2l0Y2hDaGFyOgogICAgICAgICBvdXQucHJpbnQoIlN3aXRjaENoYXIiKTsKICAgICAg
ICAgcmV0dXJuOworICAgIGNhc2UgU3dpdGNoU3RyaW5nOgorICAgICAgICBvdXQucHJpbnQoIlN3
aXRjaFN0cmluZyIpOworICAgICAgICByZXR1cm47CiAgICAgfQogICAgIFJFTEVBU0VfQVNTRVJU
X05PVF9SRUFDSEVEKCk7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05v
ZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAko
cmV2aXNpb24gMTUxOTQ0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTk2LDcgKzk2LDggQEAgc3RydWN0IFN3aXRjaENhc2UgewogCiBl
bnVtIFN3aXRjaEtpbmQgewogICAgIFN3aXRjaEltbSwKLSAgICBTd2l0Y2hDaGFyCisgICAgU3dp
dGNoQ2hhciwKKyAgICBTd2l0Y2hTdHJpbmcKIH07CiAKIHN0cnVjdCBTd2l0Y2hEYXRhIHsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAkocmV2aXNp
b24gMTUxOTQ0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTYzMiw2ICsxNjMyLDE0IEBAIGNoYXIqIERGR19PUEVSQVRJ
T04gb3BlcmF0aW9uRmluZFN3aXRjaEkKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y2hhcio+KHRh
YmxlLmN0aURlZmF1bHQuZXhlY3V0YWJsZUFkZHJlc3MoKSk7CiB9CiAKK2NoYXIqIERGR19PUEVS
QVRJT04gb3BlcmF0aW9uU3dpdGNoU3RyaW5nKEV4ZWNTdGF0ZSogZXhlYywgc2l6ZV90IHRhYmxl
SW5kZXgsIEpTU3RyaW5nKiBzdHJpbmcpCit7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAg
ICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKCZ2bSwgZXhlYyk7CisKKyAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8Y2hhcio+KGV4ZWMtPmNvZGVCbG9jaygpLT5zdHJpbmdTd2l0Y2hKdW1wVGFi
bGUodGFibGVJbmRleCkuY3RpRm9yVmFsdWUoc3RyaW5nLT52YWx1ZShleGVjKS5pbXBsKCkpLmV4
ZWN1dGFibGVBZGRyZXNzKCkpOworfQorCiBkb3VibGUgREZHX09QRVJBVElPTiBvcGVyYXRpb25G
TW9kT25JbnRzKGludDMyX3QgYSwgaW50MzJfdCBiKQogewogICAgIHJldHVybiBmbW9kKGEsIGIp
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmgJKHJldmlz
aW9uIDE1MTk0NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xMTcsNiArMTE3LDcgQEAgdHlwZWRlZiBjaGFyKiBERkdfT1BF
UkFUSU9OICgqUF9ERkdPcGVyYQogdHlwZWRlZiBjaGFyKiBERkdfT1BFUkFUSU9OICgqUF9ERkdP
cGVyYXRpb25fRU9aKShFeGVjU3RhdGUqLCBKU09iamVjdCosIGludDMyX3QpOwogdHlwZWRlZiBj
aGFyKiBERkdfT1BFUkFUSU9OICgqUF9ERkdPcGVyYXRpb25fRVBTKShFeGVjU3RhdGUqLCB2b2lk
Kiwgc2l6ZV90KTsKIHR5cGVkZWYgY2hhciogREZHX09QRVJBVElPTiAoKlBfREZHT3BlcmF0aW9u
X0VTKShFeGVjU3RhdGUqLCBzaXplX3QpOwordHlwZWRlZiBjaGFyKiBERkdfT1BFUkFUSU9OICgq
UF9ERkdPcGVyYXRpb25fRVNKc3MpKEV4ZWNTdGF0ZSosIHNpemVfdCwgSlNTdHJpbmcqKTsKIHR5
cGVkZWYgY2hhciogREZHX09QRVJBVElPTiAoKlBfREZHT3BlcmF0aW9uX0VTdCkoRXhlY1N0YXRl
KiwgU3RydWN0dXJlKik7CiB0eXBlZGVmIGNoYXIqIERGR19PUEVSQVRJT04gKCpQX0RGR09wZXJh
dGlvbl9FU3RQUykoRXhlY1N0YXRlKiwgU3RydWN0dXJlKiwgdm9pZCosIHNpemVfdCk7CiB0eXBl
ZGVmIGNoYXIqIERGR19PUEVSQVRJT04gKCpQX0RGR09wZXJhdGlvbl9FU3RTUykoRXhlY1N0YXRl
KiwgU3RydWN0dXJlKiwgc2l6ZV90LCBzaXplX3QpOwpAQCAtMjI1LDYgKzIyNiw3IEBAIEpTQ2Vs
bCogREZHX09QRVJBVElPTiBvcGVyYXRpb25Ub1N0cmluZygKIEpTQ2VsbCogREZHX09QRVJBVElP
TiBvcGVyYXRpb25NYWtlUm9wZTIoRXhlY1N0YXRlKiwgSlNTdHJpbmcqLCBKU1N0cmluZyopOwog
SlNDZWxsKiBERkdfT1BFUkFUSU9OIG9wZXJhdGlvbk1ha2VSb3BlMyhFeGVjU3RhdGUqLCBKU1N0
cmluZyosIEpTU3RyaW5nKiwgSlNTdHJpbmcqKTsKIGNoYXIqIERGR19PUEVSQVRJT04gb3BlcmF0
aW9uRmluZFN3aXRjaEltbVRhcmdldEZvckRvdWJsZShFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1
ZSwgc2l6ZV90IHRhYmxlSW5kZXgpOworY2hhciogREZHX09QRVJBVElPTiBvcGVyYXRpb25Td2l0
Y2hTdHJpbmcoRXhlY1N0YXRlKiwgc2l6ZV90IHRhYmxlSW5kZXgsIEpTU3RyaW5nKik7CiAKIC8v
IFRoaXMgbWV0aG9kIGlzIHVzZWQgdG8gbG9va3VwIGFuIGV4Y2VwdGlvbiBoYW5kZXIsIGtleWVk
IGJ5IGZhdWx0TG9jYXRpb24sIHdoaWNoIGlzCiAvLyB0aGUgcmV0dXJuIGxvY2F0aW9uIGZyb20g
b25lIG9mIHRoZSBjYWxscyBvdXQgdG8gb25lIG9mIHRoZSBoZWxwZXIgb3BlcmF0aW9ucyBhYm92
ZS4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVK
SVQuY3BwCShyZXZpc2lvbiAxNTE5NDQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklULmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAsNiArMzAsNyBAQAogCiAj
aW5jbHVkZSAiQXJndW1lbnRzLmgiCiAjaW5jbHVkZSAiREZHQXJyYXlpZnlTbG93UGF0aEdlbmVy
YXRvci5oIgorI2luY2x1ZGUgIkRGR0JpbmFyeVN3aXRjaC5oIgogI2luY2x1ZGUgIkRGR0NhbGxB
cnJheUFsbG9jYXRvclNsb3dQYXRoR2VuZXJhdG9yLmgiCiAjaW5jbHVkZSAiREZHU2xvd1BhdGhH
ZW5lcmF0b3IuaCIKICNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgpAQCAtNDgxMSwxMiAr
NDgxMiw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRTd2l0Y2hDaGFyKE5vZGUKICAgICAg
ICAgCiAgICAgICAgIG9wMS51c2UoKTsKIAotICAgICAgICBERkdfVFlQRV9DSEVDSygKLSAgICAg
ICAgICAgIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKG9wMUdQUiksIG5vZGUtPmNoaWxkMSgp
LCBTcGVjU3RyaW5nLCBtX2ppdC5icmFuY2hQdHIoCi0gICAgICAgICAgICAgICAgTWFjcm9Bc3Nl
bWJsZXI6Ok5vdEVxdWFsLAotICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNz
KG9wMUdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksCi0gICAgICAgICAgICAgICAgTWFj
cm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQudm0oKS0+c3RyaW5nU3RydWN0dXJlLmdl
dCgpKSkpOwotICAgICAgICAKKyAgICAgICAgc3BlY3VsYXRlU3RyaW5nKG5vZGUtPmNoaWxkMSgp
LCBvcDFHUFIpOwogICAgICAgICBlbWl0U3dpdGNoQ2hhclN0cmluZ0p1bXAoZGF0YSwgb3AxR1BS
LCB0ZW1wR1BSKTsKICAgICAgICAgbm9SZXN1bHQobm9kZSwgVXNlQ2hpbGRyZW5DYWxsZWRFeHBs
aWNpdGx5KTsKICAgICAgICAgYnJlYWs7CkBAIC00ODYxLDYgKzQ4NTcsMzA2IEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmVtaXRTd2l0Y2hDaGFyKE5vZGUKICAgICB9CiB9CiAKK2Jvb2wgU3BlY3Vs
YXRpdmVKSVQ6OlN0cmluZ1N3aXRjaENhc2U6Om9wZXJhdG9yPCgKKyAgICBjb25zdCBTcGVjdWxh
dGl2ZUpJVDo6U3RyaW5nU3dpdGNoQ2FzZSYgb3RoZXIpIGNvbnN0Cit7CisgICAgdW5zaWduZWQg
bWluTGVuZ3RoID0gc3RkOjptaW4oc3RyaW5nLT5sZW5ndGgoKSwgb3RoZXIuc3RyaW5nLT5sZW5n
dGgoKSk7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1pbkxlbmd0aDsgKytpKSB7Cisg
ICAgICAgIGlmIChzdHJpbmctPmF0KGkpID09IG90aGVyLnN0cmluZy0+YXQoaSkpCisgICAgICAg
ICAgICBjb250aW51ZTsKKyAgICAgICAgcmV0dXJuIHN0cmluZy0+YXQoaSkgPCBvdGhlci5zdHJp
bmctPmF0KGkpOworICAgIH0KKyAgICByZXR1cm4gc3RyaW5nLT5sZW5ndGgoKSA8IG90aGVyLnN0
cmluZy0+bGVuZ3RoKCk7Cit9CisKK25hbWVzcGFjZSB7CisKK3N0cnVjdCBDaGFyYWN0ZXJDYXNl
IHsKKyAgICBib29sIG9wZXJhdG9yPChjb25zdCBDaGFyYWN0ZXJDYXNlJiBvdGhlcikgY29uc3QK
KyAgICB7CisgICAgICAgIHJldHVybiBjaGFyYWN0ZXIgPCBvdGhlci5jaGFyYWN0ZXI7CisgICAg
fQorICAgIAorICAgIExDaGFyIGNoYXJhY3RlcjsKKyAgICB1bnNpZ25lZCBiZWdpbjsKKyAgICB1
bnNpZ25lZCBlbmQ7Cit9OworCit9IC8vIGFub255bW91cyBuYW1lc3BhY2UKKwordm9pZCBTcGVj
dWxhdGl2ZUpJVDo6ZW1pdEJpbmFyeVN3aXRjaFN0cmluZ1JlY3Vyc2UoCisgICAgU3dpdGNoRGF0
YSogZGF0YSwgY29uc3QgVmVjdG9yPFNwZWN1bGF0aXZlSklUOjpTdHJpbmdTd2l0Y2hDYXNlPiYg
Y2FzZXMsCisgICAgdW5zaWduZWQgbnVtQ2hlY2tlZCwgdW5zaWduZWQgYmVnaW4sIHVuc2lnbmVk
IGVuZCwgR1BSUmVnIGJ1ZmZlciwgR1BSUmVnIGxlbmd0aCwKKyAgICBHUFJSZWcgdGVtcCwgdW5z
aWduZWQgYWxyZWFkeUNoZWNrZWRMZW5ndGgsIGJvb2wgY2hlY2tlZEV4YWN0TGVuZ3RoKQorewor
ICAgIHN0YXRpYyBjb25zdCBib29sIHZlcmJvc2UgPSBmYWxzZTsKKyAgICAKKyAgICBpZiAodmVy
Ym9zZSkgeworICAgICAgICBkYXRhTG9nKCJXZSdyZSBkb3duIHRvIHRoZSBmb2xsb3dpbmcgY2Fz
ZXMsIGFscmVhZHlDaGVja2VkTGVuZ3RoID0gIiwgYWxyZWFkeUNoZWNrZWRMZW5ndGgsICI6XG4i
KTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gYmVnaW47IGkgPCBlbmQ7ICsraSkgeworICAg
ICAgICAgICAgZGF0YUxvZygiICAgICIsIGNhc2VzW2ldLnN0cmluZywgIlxuIik7CisgICAgICAg
IH0KKyAgICB9CisgICAgCisgICAgaWYgKGJlZ2luID09IGVuZCkgeworICAgICAgICBqdW1wKGRh
dGEtPmZhbGxUaHJvdWdoLCBGb3JjZUp1bXApOworICAgICAgICByZXR1cm47CisgICAgfQorICAg
IAorICAgIHVuc2lnbmVkIG1pbkxlbmd0aCA9IGNhc2VzW2JlZ2luXS5zdHJpbmctPmxlbmd0aCgp
OworICAgIHVuc2lnbmVkIGNvbW1vbkNoYXJzID0gbWluTGVuZ3RoOworICAgIGJvb2wgYWxsTGVu
Z3Roc0VxdWFsID0gdHJ1ZTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSBiZWdpbiArIDE7IGkgPCBl
bmQ7ICsraSkgeworICAgICAgICB1bnNpZ25lZCBteUNvbW1vbkNoYXJzID0gbnVtQ2hlY2tlZDsK
KyAgICAgICAgZm9yICh1bnNpZ25lZCBqID0gbnVtQ2hlY2tlZDsKKyAgICAgICAgICAgIGogPCBz
dGQ6Om1pbihjYXNlc1tiZWdpbl0uc3RyaW5nLT5sZW5ndGgoKSwgY2FzZXNbaV0uc3RyaW5nLT5s
ZW5ndGgoKSk7CisgICAgICAgICAgICArK2opIHsKKyAgICAgICAgICAgIGlmIChjYXNlc1tiZWdp
bl0uc3RyaW5nLT5hdChqKSAhPSBjYXNlc1tpXS5zdHJpbmctPmF0KGopKSB7CisgICAgICAgICAg
ICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICAgICAgICAgIGRhdGFMb2coInN0cmluZygi
LCBjYXNlc1tpXS5zdHJpbmcsICIpWyIsIGosICJdICE9IHN0cmluZygiLCBjYXNlc1tiZWdpbl0u
c3RyaW5nLCAiKVsiLCBqLCAiXVxuIik7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICB9CisgICAgICAgICAgICBteUNvbW1vbkNoYXJzKys7CisgICAgICAgIH0KKyAgICAgICAg
Y29tbW9uQ2hhcnMgPSBzdGQ6Om1pbihjb21tb25DaGFycywgbXlDb21tb25DaGFycyk7CisgICAg
ICAgIGlmIChtaW5MZW5ndGggIT0gY2FzZXNbaV0uc3RyaW5nLT5sZW5ndGgoKSkKKyAgICAgICAg
ICAgIGFsbExlbmd0aHNFcXVhbCA9IGZhbHNlOworICAgICAgICBtaW5MZW5ndGggPSBzdGQ6Om1p
bihtaW5MZW5ndGgsIGNhc2VzW2ldLnN0cmluZy0+bGVuZ3RoKCkpOworICAgIH0KKyAgICAKKyAg
ICBpZiAoY2hlY2tlZEV4YWN0TGVuZ3RoKSB7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKGFscmVh
ZHlDaGVja2VkTGVuZ3RoID09IG1pbkxlbmd0aCk7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKGFs
bExlbmd0aHNFcXVhbCk7CisgICAgfQorICAgIAorICAgIFJFTEVBU0VfQVNTRVJUKG1pbkxlbmd0
aCA+PSBjb21tb25DaGFycyk7CisgICAgCisgICAgaWYgKHZlcmJvc2UpCisgICAgICAgIGRhdGFM
b2coImxlbmd0aCA9ICIsIG1pbkxlbmd0aCwgIiwgY29tbW9uQ2hhcnMgPSAiLCBjb21tb25DaGFy
cywgIiwgYWxsTGVuZ3Roc0VxdWFsID0gIiwgYWxsTGVuZ3Roc0VxdWFsLCAiXG4iKTsKKyAgICAK
KyAgICBpZiAoIWFsbExlbmd0aHNFcXVhbCAmJiBhbHJlYWR5Q2hlY2tlZExlbmd0aCA8IG1pbkxl
bmd0aCkKKyAgICAgICAgYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6OkJlbG93LCBsZW5ndGgsIElt
bTMyKG1pbkxlbmd0aCksIGRhdGEtPmZhbGxUaHJvdWdoKTsKKyAgICBpZiAoYWxsTGVuZ3Roc0Vx
dWFsICYmIChhbHJlYWR5Q2hlY2tlZExlbmd0aCA8IG1pbkxlbmd0aCB8fCAhY2hlY2tlZEV4YWN0
TGVuZ3RoKSkKKyAgICAgICAgYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBsZW5n
dGgsIEltbTMyKG1pbkxlbmd0aCksIGRhdGEtPmZhbGxUaHJvdWdoKTsKKyAgICAKKyAgICBmb3Ig
KHVuc2lnbmVkIGkgPSBudW1DaGVja2VkOyBpIDwgY29tbW9uQ2hhcnM7ICsraSkgeworICAgICAg
ICBicmFuY2g4KAorICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fz
c2VtYmxlcjo6QWRkcmVzcyhidWZmZXIsIGkpLAorICAgICAgICAgICAgVHJ1c3RlZEltbTMyKGNh
c2VzW2JlZ2luXS5zdHJpbmctPmF0KGkpKSwgZGF0YS0+ZmFsbFRocm91Z2gpOworICAgIH0KKyAg
ICAKKyAgICBpZiAobWluTGVuZ3RoID09IGNvbW1vbkNoYXJzKSB7CisgICAgICAgIC8vIFRoaXMg
aXMgdGhlIGNhc2Ugd2hlcmUgb25lIG9mIHRoZSBjYXNlcyBpcyBhIHByZWZpeCBvZiBhbGwgb2Yg
dGhlIG90aGVyIGNhc2VzLgorICAgICAgICAvLyBXZSd2ZSBhbHJlYWR5IGNoZWNrZWQgdGhhdCB0
aGUgaW5wdXQgc3RyaW5nIGlzIGEgcHJlZml4IG9mIGFsbCBvZiB0aGUgY2FzZXMsCisgICAgICAg
IC8vIHNvIHdlIGp1c3QgY2hlY2sgbGVuZ3RoIHRvIGp1bXAgdG8gdGhhdCBjYXNlLgorICAgICAg
ICAKKyAgICAgICAgaWYgKCFBU1NFUlRfRElTQUJMRUQpIHsKKyAgICAgICAgICAgIEFTU0VSVChj
YXNlc1tiZWdpbl0uc3RyaW5nLT5sZW5ndGgoKSA9PSBjb21tb25DaGFycyk7CisgICAgICAgICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSBiZWdpbiArIDE7IGkgPCBlbmQ7ICsraSkKKyAgICAgICAgICAg
ICAgICBBU1NFUlQoY2FzZXNbaV0uc3RyaW5nLT5sZW5ndGgoKSA+IGNvbW1vbkNoYXJzKTsKKyAg
ICAgICAgfQorICAgICAgICAKKyAgICAgICAgaWYgKGFsbExlbmd0aHNFcXVhbCkgeworICAgICAg
ICAgICAgUkVMRUFTRV9BU1NFUlQoZW5kID09IGJlZ2luICsgMSk7CisgICAgICAgICAgICBqdW1w
KGNhc2VzW2JlZ2luXS50YXJnZXQsIEZvcmNlSnVtcCk7CisgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpFcXVh
bCwgbGVuZ3RoLCBJbW0zMihjb21tb25DaGFycyksIGNhc2VzW2JlZ2luXS50YXJnZXQpOworICAg
ICAgICAKKyAgICAgICAgLy8gV2UndmUgY2hlY2tlZCBpZiB0aGUgbGVuZ3RoIGlzID49IG1pbkxl
bmd0aCwgYW5kIHRoZW4gd2UgY2hlY2tlZCBpZiB0aGUKKyAgICAgICAgLy8gbGVuZ3RoIGlzID09
IGNvbW1vbkNoYXJzLiBXZSBnZXQgdG8gdGhpcyBwb2ludCBpZiBpdCBpcyA+PSBtaW5MZW5ndGgg
YnV0IG5vdAorICAgICAgICAvLyA9PSBjb21tb25DaGFycy4gSGVuY2Ugd2Uga25vdyB0aGF0IGl0
IG5vdyBtdXN0IGJlID4gbWluTGVuZ3RoLCBpLmUuLCB0aGF0CisgICAgICAgIC8vIGl0J3MgPj0g
bWluTGVuZ3RoICsgMS4KKyAgICAgICAgZW1pdEJpbmFyeVN3aXRjaFN0cmluZ1JlY3Vyc2UoCisg
ICAgICAgICAgICBkYXRhLCBjYXNlcywgY29tbW9uQ2hhcnMsIGJlZ2luICsgMSwgZW5kLCBidWZm
ZXIsIGxlbmd0aCwgdGVtcCwgbWluTGVuZ3RoICsgMSwgZmFsc2UpOworICAgICAgICByZXR1cm47
CisgICAgfQorICAgIAorICAgIC8vIEF0IHRoaXMgcG9pbnQgd2Uga25vdyB0aGF0IHRoZSBzdHJp
bmcgaXMgbG9uZ2VyIHRoYW4gY29tbW9uQ2hhcnMsIGFuZCB3ZSd2ZSBvbmx5CisgICAgLy8gdmVy
aWZpZWQgY29tbW9uQ2hhcnMuIFVzZSBhIGJpbmFyeSBzd2l0Y2ggb24gdGhlIG5leHQgdW5jaGVj
a2VkIGNoYXJhY3RlciwgaS5lLgorICAgIC8vIHN0cmluZ1tjb21tb25DaGFyc10uCisgICAgCisg
ICAgUkVMRUFTRV9BU1NFUlQoZW5kID49IGJlZ2luICsgMik7CisgICAgCisgICAgbV9qaXQubG9h
ZDgoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYnVmZmVyLCBjb21tb25DaGFycyksIHRlbXApOwor
ICAgIAorICAgIFZlY3RvcjxDaGFyYWN0ZXJDYXNlPiBjaGFyYWN0ZXJDYXNlczsKKyAgICBDaGFy
YWN0ZXJDYXNlIGN1cnJlbnRDYXNlOworICAgIGN1cnJlbnRDYXNlLmNoYXJhY3RlciA9IGNhc2Vz
W2JlZ2luXS5zdHJpbmctPmF0KGNvbW1vbkNoYXJzKTsKKyAgICBjdXJyZW50Q2FzZS5iZWdpbiA9
IGJlZ2luOworICAgIGN1cnJlbnRDYXNlLmVuZCA9IGJlZ2luICsgMTsKKyAgICBmb3IgKHVuc2ln
bmVkIGkgPSBiZWdpbiArIDE7IGkgPCBlbmQ7ICsraSkgeworICAgICAgICBpZiAoY2FzZXNbaV0u
c3RyaW5nLT5hdChjb21tb25DaGFycykgIT0gY3VycmVudENhc2UuY2hhcmFjdGVyKSB7CisgICAg
ICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgICAgICBkYXRhTG9nKCJzdHJpbmcoIiwg
Y2FzZXNbaV0uc3RyaW5nLCAiKVsiLCBjb21tb25DaGFycywgIl0gIT0gc3RyaW5nKCIsIGNhc2Vz
W2JlZ2luXS5zdHJpbmcsICIpWyIsIGNvbW1vbkNoYXJzLCAiXVxuIik7CisgICAgICAgICAgICBj
dXJyZW50Q2FzZS5lbmQgPSBpOworICAgICAgICAgICAgY2hhcmFjdGVyQ2FzZXMuYXBwZW5kKGN1
cnJlbnRDYXNlKTsKKyAgICAgICAgICAgIGN1cnJlbnRDYXNlLmNoYXJhY3RlciA9IGNhc2VzW2ld
LnN0cmluZy0+YXQoY29tbW9uQ2hhcnMpOworICAgICAgICAgICAgY3VycmVudENhc2UuYmVnaW4g
PSBpOworICAgICAgICAgICAgY3VycmVudENhc2UuZW5kID0gaSArIDE7CisgICAgICAgIH0gZWxz
ZQorICAgICAgICAgICAgY3VycmVudENhc2UuZW5kID0gaSArIDE7CisgICAgfQorICAgIGNoYXJh
Y3RlckNhc2VzLmFwcGVuZChjdXJyZW50Q2FzZSk7CisgICAgCisgICAgVmVjdG9yPGludDY0X3Q+
IGNoYXJhY3RlckNhc2VWYWx1ZXM7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGNoYXJh
Y3RlckNhc2VzLnNpemUoKTsgKytpKQorICAgICAgICBjaGFyYWN0ZXJDYXNlVmFsdWVzLmFwcGVu
ZChjaGFyYWN0ZXJDYXNlc1tpXS5jaGFyYWN0ZXIpOworICAgIAorICAgIEJpbmFyeVN3aXRjaCBi
aW5hcnlTd2l0Y2godGVtcCwgY2hhcmFjdGVyQ2FzZVZhbHVlcywgQmluYXJ5U3dpdGNoOjpJbnQz
Mik7CisgICAgd2hpbGUgKGJpbmFyeVN3aXRjaC5hZHZhbmNlKG1faml0KSkgeworICAgICAgICBj
b25zdCBDaGFyYWN0ZXJDYXNlJiBteUNhc2UgPSBjaGFyYWN0ZXJDYXNlc1tiaW5hcnlTd2l0Y2gu
Y2FzZUluZGV4KCldOworICAgICAgICBlbWl0QmluYXJ5U3dpdGNoU3RyaW5nUmVjdXJzZSgKKyAg
ICAgICAgICAgIGRhdGEsIGNhc2VzLCBjb21tb25DaGFycyArIDEsIG15Q2FzZS5iZWdpbiwgbXlD
YXNlLmVuZCwgYnVmZmVyLCBsZW5ndGgsCisgICAgICAgICAgICB0ZW1wLCBtaW5MZW5ndGgsIGFs
bExlbmd0aHNFcXVhbCk7CisgICAgfQorICAgIAorICAgIGFkZEJyYW5jaChiaW5hcnlTd2l0Y2gu
ZmFsbFRocm91Z2goKSwgZGF0YS0+ZmFsbFRocm91Z2gpOworfQorCit2b2lkIFNwZWN1bGF0aXZl
SklUOjplbWl0U3dpdGNoU3RyaW5nT25TdHJpbmcoU3dpdGNoRGF0YSogZGF0YSwgR1BSUmVnIHN0
cmluZykKK3sKKyAgICBkYXRhLT5kaWRVc2VKdW1wVGFibGUgPSB0cnVlOworICAgIAorICAgIGJv
b2wgY2FuRG9CaW5hcnlTd2l0Y2ggPSB0cnVlOworICAgIHVuc2lnbmVkIHRvdGFsTGVuZ3RoID0g
MDsKKyAgICAKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSBkYXRhLT5jYXNlcy5zaXplKCk7IGktLTsp
IHsKKyAgICAgICAgU3RyaW5nSW1wbCogc3RyaW5nID0gZGF0YS0+Y2FzZXNbaV0udmFsdWUuc3Ry
aW5nSW1wbCgpOworICAgICAgICBpZiAoIXN0cmluZy0+aXM4Qml0KCkpIHsKKyAgICAgICAgICAg
IGNhbkRvQmluYXJ5U3dpdGNoID0gZmFsc2U7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
fQorICAgICAgICBpZiAoc3RyaW5nLT5sZW5ndGgoKSA+IE9wdGlvbnM6Om1heGltdW1CaW5hcnlT
dHJpbmdTd2l0Y2hDYXNlTGVuZ3RoKCkpIHsKKyAgICAgICAgICAgIGNhbkRvQmluYXJ5U3dpdGNo
ID0gZmFsc2U7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICB0b3RhbExl
bmd0aCArPSBzdHJpbmctPmxlbmd0aCgpOworICAgIH0KKyAgICAKKyAgICBpZiAoIWNhbkRvQmlu
YXJ5U3dpdGNoIHx8IHRvdGFsTGVuZ3RoID4gT3B0aW9uczo6bWF4aW11bUJpbmFyeVN0cmluZ1N3
aXRjaFRvdGFsTGVuZ3RoKCkpIHsKKyAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKKyAgICAgICAg
Y2FsbE9wZXJhdGlvbigKKyAgICAgICAgICAgIG9wZXJhdGlvblN3aXRjaFN0cmluZywgc3RyaW5n
LCBkYXRhLT5zd2l0Y2hUYWJsZUluZGV4LCBzdHJpbmcpOworICAgICAgICBtX2ppdC5qdW1wKHN0
cmluZyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgCisgICAgR1BSVGVtcG9yYXJ5IGxl
bmd0aCh0aGlzKTsKKyAgICBHUFJUZW1wb3JhcnkgdGVtcCh0aGlzKTsKKyAgICAKKyAgICBHUFJS
ZWcgbGVuZ3RoR1BSID0gbGVuZ3RoLmdwcigpOworICAgIEdQUlJlZyB0ZW1wR1BSID0gdGVtcC5n
cHIoKTsKKyAgICAKKyAgICBtX2ppdC5sb2FkMzIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc3Ry
aW5nLCBKU1N0cmluZzo6b2Zmc2V0T2ZMZW5ndGgoKSksIGxlbmd0aEdQUik7CisgICAgbV9qaXQu
bG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzdHJpbmcsIEpTU3RyaW5nOjpvZmZzZXRP
ZlZhbHVlKCkpLCB0ZW1wR1BSKTsKKyAgICAKKyAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcExpc3Qg
c2xvd0Nhc2VzOworICAgIHNsb3dDYXNlcy5hcHBlbmQobV9qaXQuYnJhbmNoVGVzdFB0cihNYWNy
b0Fzc2VtYmxlcjo6WmVybywgdGVtcEdQUikpOworICAgIHNsb3dDYXNlcy5hcHBlbmQobV9qaXQu
YnJhbmNoVGVzdDMyKAorICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6WmVybywKKyAgICAgICAgTWFj
cm9Bc3NlbWJsZXI6OkFkZHJlc3ModGVtcEdQUiwgU3RyaW5nSW1wbDo6ZmxhZ3NPZmZzZXQoKSks
CisgICAgICAgIFRydXN0ZWRJbW0zMihTdHJpbmdJbXBsOjpmbGFnSXM4Qml0KCkpKSk7CisgICAg
CisgICAgbV9qaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyh0ZW1wR1BSLCBTdHJp
bmdJbXBsOjpkYXRhT2Zmc2V0KCkpLCBzdHJpbmcpOworICAgIAorICAgIFZlY3RvcjxTdHJpbmdT
d2l0Y2hDYXNlPiBjYXNlczsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZGF0YS0+Y2Fz
ZXMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgY2FzZXMuYXBwZW5kKAorICAgICAgICAgICAgU3Ry
aW5nU3dpdGNoQ2FzZShkYXRhLT5jYXNlc1tpXS52YWx1ZS5zdHJpbmdJbXBsKCksIGRhdGEtPmNh
c2VzW2ldLnRhcmdldCkpOworICAgIH0KKyAgICAKKyAgICBzdGQ6OnNvcnQoY2FzZXMuYmVnaW4o
KSwgY2FzZXMuZW5kKCkpOworICAgIAorICAgIGVtaXRCaW5hcnlTd2l0Y2hTdHJpbmdSZWN1cnNl
KAorICAgICAgICBkYXRhLCBjYXNlcywgMCwgMCwgY2FzZXMuc2l6ZSgpLCBzdHJpbmcsIGxlbmd0
aEdQUiwgdGVtcEdQUiwgMCwgZmFsc2UpOworICAgIAorICAgIHNsb3dDYXNlcy5saW5rKCZtX2pp
dCk7CisgICAgc2lsZW50U3BpbGxBbGxSZWdpc3RlcnMoc3RyaW5nKTsKKyAgICBjYWxsT3BlcmF0
aW9uKG9wZXJhdGlvblN3aXRjaFN0cmluZywgc3RyaW5nLCBkYXRhLT5zd2l0Y2hUYWJsZUluZGV4
LCBzdHJpbmcpOworICAgIHNpbGVudEZpbGxBbGxSZWdpc3RlcnMoc3RyaW5nKTsKKyAgICBtX2pp
dC5qdW1wKHN0cmluZyk7Cit9CisKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRTd2l0Y2hTdHJp
bmcoTm9kZSogbm9kZSwgU3dpdGNoRGF0YSogZGF0YSkKK3sKKyAgICBzd2l0Y2ggKG5vZGUtPmNo
aWxkMSgpLnVzZUtpbmQoKSkgeworICAgIGNhc2UgU3RyaW5nSWRlbnRVc2U6IHsKKyAgICAgICAg
U3BlY3VsYXRlQ2VsbE9wZXJhbmQgb3AxKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAg
R1BSVGVtcG9yYXJ5IHRlbXAodGhpcyk7CisgICAgICAgIAorICAgICAgICBHUFJSZWcgb3AxR1BS
ID0gb3AxLmdwcigpOworICAgICAgICBHUFJSZWcgdGVtcEdQUiA9IHRlbXAuZ3ByKCk7CisgICAg
ICAgIAorICAgICAgICBzcGVjdWxhdGVTdHJpbmcobm9kZS0+Y2hpbGQxKCksIG9wMUdQUik7Cisg
ICAgICAgIHNwZWN1bGF0ZVN0cmluZ0lkZW50QW5kTG9hZFN0b3JhZ2Uobm9kZS0+Y2hpbGQxKCks
IG9wMUdQUiwgdGVtcEdQUik7CisgICAgICAgIAorICAgICAgICBWZWN0b3I8aW50NjRfdD4gaWRl
bnRpZmllckNhc2VWYWx1ZXM7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBkYXRh
LT5jYXNlcy5zaXplKCk7ICsraSkgeworICAgICAgICAgICAgaWRlbnRpZmllckNhc2VWYWx1ZXMu
YXBwZW5kKAorICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PGludDY0X3Q+KGJpdHdpc2VfY2Fz
dDxpbnRwdHJfdD4oZGF0YS0+Y2FzZXNbaV0udmFsdWUuc3RyaW5nSW1wbCgpKSkpOworICAgICAg
ICB9CisgICAgICAgIAorICAgICAgICBCaW5hcnlTd2l0Y2ggYmluYXJ5U3dpdGNoKHRlbXBHUFIs
IGlkZW50aWZpZXJDYXNlVmFsdWVzLCBCaW5hcnlTd2l0Y2g6OkludFB0cik7CisgICAgICAgIHdo
aWxlIChiaW5hcnlTd2l0Y2guYWR2YW5jZShtX2ppdCkpCisgICAgICAgICAgICBqdW1wKGRhdGEt
PmNhc2VzW2JpbmFyeVN3aXRjaC5jYXNlSW5kZXgoKV0udGFyZ2V0LCBGb3JjZUp1bXApOworICAg
ICAgICBhZGRCcmFuY2goYmluYXJ5U3dpdGNoLmZhbGxUaHJvdWdoKCksIGRhdGEtPmZhbGxUaHJv
dWdoKTsKKyAgICAgICAgCisgICAgICAgIG5vUmVzdWx0KG5vZGUpOworICAgICAgICBicmVhazsK
KyAgICB9CisgICAgICAgIAorICAgIGNhc2UgU3RyaW5nVXNlOiB7CisgICAgICAgIFNwZWN1bGF0
ZUNlbGxPcGVyYW5kIG9wMSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CisgICAgICAgIAorICAgICAg
ICBHUFJSZWcgb3AxR1BSID0gb3AxLmdwcigpOworICAgICAgICAKKyAgICAgICAgb3AxLnVzZSgp
OworCisgICAgICAgIHNwZWN1bGF0ZVN0cmluZyhub2RlLT5jaGlsZDEoKSwgb3AxR1BSKTsKKyAg
ICAgICAgZW1pdFN3aXRjaFN0cmluZ09uU3RyaW5nKGRhdGEsIG9wMUdQUik7CisgICAgICAgIG5v
UmVzdWx0KG5vZGUsIFVzZUNoaWxkcmVuQ2FsbGVkRXhwbGljaXRseSk7CisgICAgICAgIGJyZWFr
OworICAgIH0KKyAgICAgICAgCisgICAgY2FzZSBVbnR5cGVkVXNlOiB7CisgICAgICAgIEpTVmFs
dWVPcGVyYW5kIG9wMSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CisgICAgICAgIAorICAgICAgICBK
U1ZhbHVlUmVncyBvcDFSZWdzID0gb3AxLmpzVmFsdWVSZWdzKCk7CisgICAgICAgIAorICAgICAg
ICBvcDEudXNlKCk7CisgICAgICAgIAorI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgICAgIGFkZEJy
YW5jaCgKKyAgICAgICAgICAgIG1faml0LmJyYW5jaFRlc3Q2NCgKKyAgICAgICAgICAgICAgICBN
YWNyb0Fzc2VtYmxlcjo6Tm9uWmVybywgb3AxUmVncy5ncHIoKSwgR1BSSW5mbzo6dGFnTWFza1Jl
Z2lzdGVyKSwKKyAgICAgICAgICAgIGRhdGEtPmZhbGxUaHJvdWdoKTsKKyNlbHNlCisgICAgICAg
IGFkZEJyYW5jaCgKKyAgICAgICAgICAgIG1faml0LmJyYW5jaDMyKAorICAgICAgICAgICAgICAg
IE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgb3AxUmVncy50YWdHUFIoKSwgVHJ1c3RlZEltbTMy
KEpTVmFsdWU6OkNlbGxUYWcpKSwKKyAgICAgICAgICAgIGRhdGEtPmZhbGxUaHJvdWdoKTsKKyNl
bmRpZgorICAgICAgICAKKyAgICAgICAgYWRkQnJhbmNoKAorICAgICAgICAgICAgbV9qaXQuYnJh
bmNoUHRyKAorICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwKKyAgICAg
ICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhvcDFSZWdzLnBheWxvYWRHUFIoKSwg
SlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksCisgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJs
ZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQudm0oKS0+c3RyaW5nU3RydWN0dXJlLmdldCgpKSksCisg
ICAgICAgICAgICBkYXRhLT5mYWxsVGhyb3VnaCk7CisgICAgICAgIAorICAgICAgICBlbWl0U3dp
dGNoU3RyaW5nT25TdHJpbmcoZGF0YSwgb3AxUmVncy5wYXlsb2FkR1BSKCkpOworICAgICAgICBu
b1Jlc3VsdChub2RlLCBVc2VDaGlsZHJlbkNhbGxlZEV4cGxpY2l0bHkpOworICAgICAgICBicmVh
azsKKyAgICB9CisgICAgICAgIAorICAgIGRlZmF1bHQ6CisgICAgICAgIFJFTEVBU0VfQVNTRVJU
X05PVF9SRUFDSEVEKCk7CisgICAgICAgIGJyZWFrOworICAgIH0KK30KKwogdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6ZW1pdFN3aXRjaChOb2RlKiBub2RlKQogewogICAgIFN3aXRjaERhdGEqIGRhdGEg
PSBub2RlLT5zd2l0Y2hEYXRhKCk7CkBAIC00ODcyLDEwICs1MTY4LDIwIEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmVtaXRTd2l0Y2goTm9kZSogbm8KICAgICBjYXNlIFN3aXRjaENoYXI6IHsKICAg
ICAgICAgZW1pdFN3aXRjaENoYXIobm9kZSwgZGF0YSk7CiAgICAgICAgIHJldHVybjsKKyAgICB9
CisgICAgY2FzZSBTd2l0Y2hTdHJpbmc6IHsKKyAgICAgICAgZW1pdFN3aXRjaFN0cmluZyhub2Rl
LCBkYXRhKTsKKyAgICAgICAgcmV0dXJuOwogICAgIH0gfQogICAgIFJFTEVBU0VfQVNTRVJUX05P
VF9SRUFDSEVEKCk7CiB9CiAKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmFkZEJyYW5jaChjb25zdCBN
YWNyb0Fzc2VtYmxlcjo6SnVtcExpc3QmIGp1bXAsIEJsb2NrSW5kZXggZGVzdGluYXRpb24pCit7
CisgICAgZm9yICh1bnNpZ25lZCBpID0ganVtcC5qdW1wcygpLnNpemUoKTsgaS0tOykKKyAgICAg
ICAgYWRkQnJhbmNoKGp1bXAuanVtcHMoKVtpXSwgZGVzdGluYXRpb24pOworfQorCiB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpsaW5rQnJhbmNoZXMoKQogewogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgbV9icmFuY2hlcy5zaXplKCk7ICsraSkgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAkocmV2aXNpb24gMTUxOTQ0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCSh3b3JraW5nIGNvcHkpCkBA
IC05NTEsNiArOTUxLDExIEBAIHB1YmxpYzoKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNX
aXRoRXhlY1N0YXRlKFRydXN0ZWRJbW1QdHIoc2l6ZSkpOwogICAgICAgICByZXR1cm4gYXBwZW5k
Q2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CiAgICAg
fQorICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oUF9ERkdPcGVyYXRpb25fRVNK
c3Mgb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBzaXplX3QgaW5kZXgsIEdQUlJlZyBhcmcxKQor
ICAgIHsKKyAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJ
bW1QdHIoaW5kZXgpLCBhcmcxKTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0
aW9uQ2hlY2tTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOworICAgIH0KICAgICBKSVRDb21w
aWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFBfREZHT3BlcmF0aW9uX0VTdCBvcGVyYXRpb24sIEdQ
UlJlZyByZXN1bHQsIFN0cnVjdHVyZSogc3RydWN0dXJlKQogICAgIHsKICAgICAgICAgbV9qaXQu
c2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW1QdHIoc3RydWN0dXJlKSk7CkBA
IC0xNzcwLDYgKzE3NzUsMTIgQEAgcHVibGljOgogI2VuZGlmCiAgICAgCiAgICAgdGVtcGxhdGU8
dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4KKyAgICB2b2lkIGJyYW5jaDgoSklUQ29tcGlsZXI6OlJl
bGF0aW9uYWxDb25kaXRpb24gY29uZCwgVCBsZWZ0LCBVIHJpZ2h0LCBCbG9ja0luZGV4IGRlc3Rp
bmF0aW9uKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkZEJyYW5jaChtX2ppdC5icmFuY2g4KGNv
bmQsIGxlZnQsIHJpZ2h0KSwgZGVzdGluYXRpb24pOworICAgIH0KKyAgICAKKyAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPgogICAgIHZvaWQgYnJhbmNoUHRyKEpJVENvbXBpbGVy
OjpSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQsIFQgbGVmdCwgVSByaWdodCwgQmxvY2tJbmRleCBk
ZXN0aW5hdGlvbikKICAgICB7CiAgICAgICAgIHJldHVybiBhZGRCcmFuY2gobV9qaXQuYnJhbmNo
UHRyKGNvbmQsIGxlZnQsIHJpZ2h0KSwgZGVzdGluYXRpb24pOwpAQCAtMTgxNSw2ICsxODI2LDcg
QEAgcHVibGljOgogICAgIHsKICAgICAgICAgbV9icmFuY2hlcy5hcHBlbmQoQnJhbmNoUmVjb3Jk
KGp1bXAsIGRlc3RpbmF0aW9uKSk7CiAgICAgfQorICAgIHZvaWQgYWRkQnJhbmNoKGNvbnN0IE1h
Y3JvQXNzZW1ibGVyOjpKdW1wTGlzdCYganVtcCwgQmxvY2tJbmRleCBkZXN0aW5hdGlvbik7CiAK
ICAgICB2b2lkIGxpbmtCcmFuY2hlcygpOwogCkBAIC0xODYyLDEwICsxODc0LDMyIEBAIHB1Ymxp
YzoKICAgICB2b2lkIGNvbXBpbGVTdHJpbmdJZGVudEVxdWFsaXR5KE5vZGUqKTsKICAgICB2b2lk
IGVtaXRPYmplY3RPck90aGVyQnJhbmNoKEVkZ2UgdmFsdWUsIEJsb2NrSW5kZXggdGFrZW4sIEJs
b2NrSW5kZXggbm90VGFrZW4pOwogICAgIHZvaWQgZW1pdEJyYW5jaChOb2RlKik7CisgICAgCisg
ICAgc3RydWN0IFN0cmluZ1N3aXRjaENhc2UgeworICAgICAgICBTdHJpbmdTd2l0Y2hDYXNlKCkg
eyB9CisgICAgICAgIAorICAgICAgICBTdHJpbmdTd2l0Y2hDYXNlKFN0cmluZ0ltcGwqIHN0cmlu
ZywgQmxvY2tJbmRleCB0YXJnZXQpCisgICAgICAgICAgICA6IHN0cmluZyhzdHJpbmcpCisgICAg
ICAgICAgICAsIHRhcmdldCh0YXJnZXQpCisgICAgICAgIHsKKyAgICAgICAgfQorICAgICAgICAK
KyAgICAgICAgYm9vbCBvcGVyYXRvcjwoY29uc3QgU3RyaW5nU3dpdGNoQ2FzZSYgb3RoZXIpIGNv
bnN0OworICAgICAgICAKKyAgICAgICAgU3RyaW5nSW1wbCogc3RyaW5nOworICAgICAgICBCbG9j
a0luZGV4IHRhcmdldDsKKyAgICB9OworICAgIAogICAgIHZvaWQgZW1pdFN3aXRjaEludEp1bXAo
U3dpdGNoRGF0YSosIEdQUlJlZyB2YWx1ZSwgR1BSUmVnIHNjcmF0Y2gpOwogICAgIHZvaWQgZW1p
dFN3aXRjaEltbShOb2RlKiwgU3dpdGNoRGF0YSopOwogICAgIHZvaWQgZW1pdFN3aXRjaENoYXJT
dHJpbmdKdW1wKFN3aXRjaERhdGEqLCBHUFJSZWcgdmFsdWUsIEdQUlJlZyBzY3JhdGNoKTsKICAg
ICB2b2lkIGVtaXRTd2l0Y2hDaGFyKE5vZGUqLCBTd2l0Y2hEYXRhKik7CisgICAgdm9pZCBlbWl0
QmluYXJ5U3dpdGNoU3RyaW5nUmVjdXJzZSgKKyAgICAgICAgU3dpdGNoRGF0YSosIGNvbnN0IFZl
Y3RvcjxTdHJpbmdTd2l0Y2hDYXNlPiYsIHVuc2lnbmVkIG51bUNoZWNrZWQsCisgICAgICAgIHVu
c2lnbmVkIGJlZ2luLCB1bnNpZ25lZCBlbmQsIEdQUlJlZyBidWZmZXIsIEdQUlJlZyBsZW5ndGgs
IEdQUlJlZyB0ZW1wLAorICAgICAgICB1bnNpZ25lZCBhbHJlYWR5Q2hlY2tlZExlbmd0aCwgYm9v
bCBjaGVja2VkRXhhY3RMZW5ndGgpOworICAgIHZvaWQgZW1pdFN3aXRjaFN0cmluZ09uU3RyaW5n
KFN3aXRjaERhdGEqLCBHUFJSZWcgc3RyaW5nKTsKKyAgICB2b2lkIGVtaXRTd2l0Y2hTdHJpbmco
Tm9kZSosIFN3aXRjaERhdGEqKTsKICAgICB2b2lkIGVtaXRTd2l0Y2goTm9kZSopOwogICAgIAog
ICAgIHZvaWQgY29tcGlsZVRvU3RyaW5nT25DZWxsKE5vZGUqKTsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0xMVk0uY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0xMVk0uY3BwCShyZXZpc2lvbiAxNTE5
NDQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9MTFZNLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTU2Myw3ICsxNTYzLDEyIEBAIHByaXZhdGU6CiAgICAgICAgICAg
ICBtX291dC5hcHBlbmRUbyhjb250aW51YXRpb24sIGxhc3ROZXh0KTsKICAgICAgICAgICAgIGJ1
aWxkU3dpdGNoKGRhdGEsIG1fb3V0LmludDE2LCBtX291dC5waGkobV9vdXQuaW50MTYsIGNoYXJh
Y3RlcnMpKTsKICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfSB9CisgICAgICAgIH0KKyAg
ICAgICAgCisgICAgICAgIGNhc2UgU3dpdGNoU3RyaW5nOgorICAgICAgICAgICAgUkVMRUFTRV9B
U1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CiAgICAg
ICAgIAogICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIH0KSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmgJKHJldmlzaW9uIDE1MTk0NCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuaAkod29ya2luZyBjb3B5
KQpAQCAtMTA3LDYgKzEwNyw5IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIC8qIERlcHRoIG9mIGlu
bGluZSBzdGFjaywgc28gMSA9IG5vIGlubGluaW5nLCAyID0gb25lIGxldmVsLCBldGMuICovIFwK
ICAgICB2KHVuc2lnbmVkLCBtYXhpbXVtSW5saW5pbmdEZXB0aCwgNSkgXAogICAgIFwKKyAgICB2
KHVuc2lnbmVkLCBtYXhpbXVtQmluYXJ5U3RyaW5nU3dpdGNoQ2FzZUxlbmd0aCwgNTApIFwKKyAg
ICB2KHVuc2lnbmVkLCBtYXhpbXVtQmluYXJ5U3RyaW5nU3dpdGNoVG90YWxMZW5ndGgsIDIwMDAp
IFwKKyAgICBcCiAgICAgdihpbnQzMiwgdGhyZXNob2xkRm9ySklUQWZ0ZXJXYXJtVXAsIDEwMCkg
XAogICAgIHYoaW50MzIsIHRocmVzaG9sZEZvckpJVFNvb24sIDEwMCkgXAogICAgIFwKSW5kZXg6
IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hhbmdlTG9n
CShyZXZpc2lvbiAxNTE5NzApCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2luZyBjb3B5
KQpAQCAtMSwzICsxLDE2IEBACisyMDEzLTA2LTI1ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBs
ZS5jb20+CisKKyAgICAgICAgZm91cnRoVGllcjogREZHIHNob3VsZCBzdXBwb3J0IHN3aXRjaF9z
dHJpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEx
Nzk2NworCisgICAgICAgIFJldmlld2VkIGJ5IFNhbSBXZWluaWcuCisgICAgICAgIAorICAgICAg
ICBNYWtlIGl0IHBvc3NpYmxlIHRvIGNvbXBhcmUgYSBSZWZQdHI8U3RyaW5nSW1wbD4gYW5kIGEg
U3RyaW5nSW1wbCogd2l0aG91dAorICAgICAgICBoYXZpbmcgdG8gcmVmIHRoZSBTdHJpbmdJbXBs
LgorCisgICAgICAgICogd3RmL3RleHQvU3RyaW5nSGFzaC5oOgorICAgICAgICAoV1RGOjpTdHJp
bmdIYXNoOjplcXVhbCk6CisKIDIwMTMtMDYtMjQgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxl
LmNvbT4KIAogICAgICAgICBmb3VydGhUaWVyOiBDb3VudCBleHRlcm5hbCBtZW1vcnkgdXNhZ2Ug
dG93YXJkcyBoZWFwIGZvb3RwcmludApJbmRleDogU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdI
YXNoLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdIYXNoLmgJKHJl
dmlzaW9uIDE1MTk0NCkKKysrIFNvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nSGFzaC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC03Myw2ICs3MywxNCBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICAgICAgewog
ICAgICAgICAgICAgcmV0dXJuIGVxdWFsKGEuZ2V0KCksIGIuZ2V0KCkpOwogICAgICAgICB9Cisg
ICAgICAgIHN0YXRpYyBib29sIGVxdWFsKGNvbnN0IFJlZlB0cjxTdHJpbmdJbXBsPiYgYSwgY29u
c3QgU3RyaW5nSW1wbCogYikKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGVxdWFsKGEu
Z2V0KCksIGIpOworICAgICAgICB9CisgICAgICAgIHN0YXRpYyBib29sIGVxdWFsKGNvbnN0IFN0
cmluZ0ltcGwqIGEsIGNvbnN0IFJlZlB0cjxTdHJpbmdJbXBsPiYgYikKKyAgICAgICAgeworICAg
ICAgICAgICAgcmV0dXJuIGVxdWFsKGEsIGIuZ2V0KCkpOworICAgICAgICB9CiAKICAgICAgICAg
c3RhdGljIHVuc2lnbmVkIGhhc2goY29uc3QgU3RyaW5nJiBrZXkpIHsgcmV0dXJuIGtleS5pbXBs
KCktPmhhc2goKTsgfQogICAgICAgICBzdGF0aWMgYm9vbCBlcXVhbChjb25zdCBTdHJpbmcmIGEs
IGNvbnN0IFN0cmluZyYgYikKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDE1MTk3MCkKKysrIExheW91dFRl
c3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ2IEBACisyMDEzLTA2LTI1
ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAgZm91cnRoVGllcjog
REZHIHNob3VsZCBzdXBwb3J0IHN3aXRjaF9zdHJpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExNzk2NworCisgICAgICAgIFJldmlld2VkIGJ5IFNh
bSBXZWluaWcuCisKKyAgICAgICAgKiBmYXN0L2pzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL3N3aXRj
aC1zdHJpbmctYmFzaWMtYmlnLXZhci5qczogQWRkZWQuCisgICAgICAgIChmb28pOgorICAgICAg
ICAobWFrZSk6CisgICAgICAgICogZmFzdC9qcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9zd2l0Y2gt
c3RyaW5nLWJhc2ljLWJpZy5qczogQWRkZWQuCisgICAgICAgIChmb28pOgorICAgICAgICAobWFr
ZSk6CisgICAgICAgICogZmFzdC9qcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9zd2l0Y2gtc3RyaW5n
LWJhc2ljLXZhci5qczogQWRkZWQuCisgICAgICAgIChmb28pOgorICAgICAgICAobWFrZSk6Cisg
ICAgICAgICogZmFzdC9qcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9zd2l0Y2gtc3RyaW5nLWJhc2lj
LmpzOiBBZGRlZC4KKyAgICAgICAgKGZvbyk6CisgICAgICAgICogZmFzdC9qcy9yZWdyZXNzL3Nj
cmlwdC10ZXN0cy9zd2l0Y2gtc3RyaW5nLWJpZy1sZW5ndGgtdG93ZXItdmFyLmpzOiBBZGRlZC4K
KyAgICAgICAgKGZvbyk6CisgICAgICAgICogZmFzdC9qcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9z
d2l0Y2gtc3RyaW5nLWxlbmd0aC10b3dlci12YXIuanM6IEFkZGVkLgorICAgICAgICAoZm9vKToK
KyAgICAgICAgKiBmYXN0L2pzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL3N3aXRjaC1zdHJpbmctbGVu
Z3RoLXRvd2VyLmpzOiBBZGRlZC4KKyAgICAgICAgKGZvbyk6CisgICAgICAgICogZmFzdC9qcy9y
ZWdyZXNzL3NjcmlwdC10ZXN0cy9zd2l0Y2gtc3RyaW5nLXNob3J0LmpzOiBBZGRlZC4KKyAgICAg
ICAgKGZvbyk6CisgICAgICAgICogZmFzdC9qcy9yZWdyZXNzL3N3aXRjaC1zdHJpbmctYmFzaWMt
YmlnLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9qcy9yZWdyZXNzL3N3aXRj
aC1zdHJpbmctYmFzaWMtYmlnLXZhci1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZh
c3QvanMvcmVncmVzcy9zd2l0Y2gtc3RyaW5nLWJhc2ljLWJpZy12YXIuaHRtbDogQWRkZWQuCisg
ICAgICAgICogZmFzdC9qcy9yZWdyZXNzL3N3aXRjaC1zdHJpbmctYmFzaWMtYmlnLmh0bWw6IEFk
ZGVkLgorICAgICAgICAqIGZhc3QvanMvcmVncmVzcy9zd2l0Y2gtc3RyaW5nLWJhc2ljLWV4cGVj
dGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9qcy9yZWdyZXNzL3N3aXRjaC1zdHJpbmct
YmFzaWMtdmFyLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9qcy9yZWdyZXNz
L3N3aXRjaC1zdHJpbmctYmFzaWMtdmFyLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvanMv
cmVncmVzcy9zd2l0Y2gtc3RyaW5nLWJhc2ljLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3Qv
anMvcmVncmVzcy9zd2l0Y2gtc3RyaW5nLWJpZy1sZW5ndGgtdG93ZXItdmFyLWV4cGVjdGVkLnR4
dDogQWRkZWQuCisgICAgICAgICogZmFzdC9qcy9yZWdyZXNzL3N3aXRjaC1zdHJpbmctYmlnLWxl
bmd0aC10b3dlci12YXIuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9qcy9yZWdyZXNzL3N3
aXRjaC1zdHJpbmctbGVuZ3RoLXRvd2VyLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICog
ZmFzdC9qcy9yZWdyZXNzL3N3aXRjaC1zdHJpbmctbGVuZ3RoLXRvd2VyLXZhci1leHBlY3RlZC50
eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvanMvcmVncmVzcy9zd2l0Y2gtc3RyaW5nLWxlbmd0
aC10b3dlci12YXIuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9qcy9yZWdyZXNzL3N3aXRj
aC1zdHJpbmctbGVuZ3RoLXRvd2VyLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvanMvcmVn
cmVzcy9zd2l0Y2gtc3RyaW5nLXNob3J0LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICog
ZmFzdC9qcy9yZWdyZXNzL3N3aXRjaC1zdHJpbmctc2hvcnQuaHRtbDogQWRkZWQuCisKIDIwMTMt
MDYtMjMgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KIAogICAgICAgICBmb3VydGhU
aWVyOiBERkcgc2hvdWxkIG9wdGltaXplIGlkZW50aWZpZXIgc3RyaW5nIGVxdWFsaXR5CkluZGV4
OiBMYXlvdXRUZXN0cy9mYXN0L2pzL3JlZ3Jlc3Mvc3dpdGNoLXN0cmluZy1iYXNpYy1iaWctZXhw
ZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvanMvcmVncmVzcy9zd2l0
Y2gtc3RyaW5nLWJhc2ljLWJpZy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRU
ZXN0cy9mYXN0L2pzL3JlZ3Jlc3Mvc3dpdGNoLXN0cmluZy1iYXNpYy1iaWctZXhwZWN0ZWQudHh0
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTAgQEAKK0pTUmVncmVzcy9zd2l0Y2gtc3RyaW5n
LWJhc2ljLWJpZworCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1Mi
IG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBubyBleGNl
cHRpb24gdGhyb3duCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09N
UExFVEUKKwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9qcy9yZWdyZXNzL3N3aXRjaC1zdHJpbmct
YmFzaWMtYmlnLXZhci1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFz
dC9qcy9yZWdyZXNzL3N3aXRjaC1zdHJpbmctYmFzaWMtYmlnLXZhci1leHBlY3RlZC50eHQJKHJl
dmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2pzL3JlZ3Jlc3Mvc3dpdGNoLXN0cmluZy1i
YXNpYy1iaWctdmFyLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEwIEBA
CitKU1JlZ3Jlc3Mvc3dpdGNoLXN0cmluZy1iYXNpYy1iaWctdmFyCisKK09uIHN1Y2Nlc3MsIHlv
dSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNU
IENPTVBMRVRFIi4KKworCitQQVNTIG5vIGV4Y2VwdGlvbiB0aHJvd24KK1BBU1Mgc3VjY2Vzc2Z1
bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCkluZGV4OiBMYXlvdXRUZXN0cy9m
YXN0L2pzL3JlZ3Jlc3Mvc3dpdGNoLXN0cmluZy1iYXNpYy1iaWctdmFyLmh0bWwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9qcy9yZWdyZXNzL3N3aXRjaC1zdHJpbmctYmFzaWMtYmln
LXZhci5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9qcy9yZWdyZXNzL3N3
aXRjaC1zdHJpbmctYmFzaWMtYmlnLXZhci5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEs
MTIgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxo
dG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48
L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9yZWdyZXNz
LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0ic2NyaXB0LXRlc3RzL3N3aXRjaC1zdHJp
bmctYmFzaWMtYmlnLXZhci5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3Jl
Z3Jlc3MtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRl
c3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0
cy9mYXN0L2pzL3JlZ3Jlc3Mvc3dpdGNoLXN0cmluZy1iYXNpYy1iaWcuaHRtbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2pzL3JlZ3Jlc3Mvc3dpdGNoLXN0cmluZy1iYXNpYy1iaWcu
aHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvanMvcmVncmVzcy9zd2l0Y2gt
c3RyaW5nLWJhc2ljLWJpZy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTIgQEAKKzwh
RE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhl
YWQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4K
KzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9yZWdyZXNzLXByZS5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0ic2NyaXB0LXRlc3RzL3N3aXRjaC1zdHJpbmctYmFzaWMt
YmlnLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvcmVncmVzcy1wb3N0Lmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48
L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvanMvcmVn
cmVzcy9zd2l0Y2gtc3RyaW5nLWJhc2ljLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9mYXN0L2pzL3JlZ3Jlc3Mvc3dpdGNoLXN0cmluZy1iYXNpYy1leHBlY3RlZC50eHQJ
KHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2pzL3JlZ3Jlc3Mvc3dpdGNoLXN0cmlu
Zy1iYXNpYy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMCBAQAorSlNS
ZWdyZXNzL3N3aXRjaC1zdHJpbmctYmFzaWMKKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEg
c2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgor
CisKK1BBU1Mgbm8gZXhjZXB0aW9uIHRocm93bgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMg
dHJ1ZQorCitURVNUIENPTVBMRVRFCisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvanMvcmVncmVz
cy9zd2l0Y2gtc3RyaW5nLWJhc2ljLXZhci1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvZmFzdC9qcy9yZWdyZXNzL3N3aXRjaC1zdHJpbmctYmFzaWMtdmFyLWV4cGVjdGVk
LnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvanMvcmVncmVzcy9zd2l0Y2gt
c3RyaW5nLWJhc2ljLXZhci1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwx
MCBAQAorSlNSZWdyZXNzL3N3aXRjaC1zdHJpbmctYmFzaWMtdmFyCisKK09uIHN1Y2Nlc3MsIHlv
dSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNU
IENPTVBMRVRFIi4KKworCitQQVNTIG5vIGV4Y2VwdGlvbiB0aHJvd24KK1BBU1Mgc3VjY2Vzc2Z1
bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCkluZGV4OiBMYXlvdXRUZXN0cy9m
YXN0L2pzL3JlZ3Jlc3Mvc3dpdGNoLXN0cmluZy1iYXNpYy12YXIuaHRtbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9mYXN0L2pzL3JlZ3Jlc3Mvc3dpdGNoLXN0cmluZy1iYXNpYy12YXIuaHRt
bAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvanMvcmVncmVzcy9zd2l0Y2gtc3Ry
aW5nLWJhc2ljLXZhci5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTIgQEAKKzwhRE9D
VFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+
Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwv
aGVhZD4KKzxib2R5PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9yZWdyZXNzLXByZS5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0ic2NyaXB0LXRlc3RzL3N3aXRjaC1zdHJpbmctYmFzaWMtdmFy
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvcmVncmVzcy1wb3N0LmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3Nj
cmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvanMvcmVncmVz
cy9zd2l0Y2gtc3RyaW5nLWJhc2ljLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFz
dC9qcy9yZWdyZXNzL3N3aXRjaC1zdHJpbmctYmFzaWMuaHRtbAkocmV2aXNpb24gMCkKKysrIExh
eW91dFRlc3RzL2Zhc3QvanMvcmVncmVzcy9zd2l0Y2gtc3RyaW5nLWJhc2ljLmh0bWwJKHdvcmtp
bmcgY29weSkKQEAgLTAsMCArMSwxMiBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRG
Ly9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJj
ZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0IHNy
Yz0icmVzb3VyY2VzL3JlZ3Jlc3MtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJzY3Jp
cHQtdGVzdHMvc3dpdGNoLXN0cmluZy1iYXNpYy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
cmVzb3VyY2VzL3JlZ3Jlc3MtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVz
b3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4
OiBMYXlvdXRUZXN0cy9mYXN0L2pzL3JlZ3Jlc3Mvc3dpdGNoLXN0cmluZy1iaWctbGVuZ3RoLXRv
d2VyLXZhci1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9qcy9y
ZWdyZXNzL3N3aXRjaC1zdHJpbmctYmlnLWxlbmd0aC10b3dlci12YXItZXhwZWN0ZWQudHh0CShy
ZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9qcy9yZWdyZXNzL3N3aXRjaC1zdHJpbmct
YmlnLWxlbmd0aC10b3dlci12YXItZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAg
KzEsMTAgQEAKK0pTUmVncmVzcy9zd2l0Y2gtc3RyaW5nLWJpZy1sZW5ndGgtdG93ZXItdmFyCisK
K09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZv
bGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIG5vIGV4Y2VwdGlvbiB0aHJvd24K
K1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCkluZGV4
OiBMYXlvdXRUZXN0cy9mYXN0L2pzL3JlZ3Jlc3Mvc3dpdGNoLXN0cmluZy1iaWctbGVuZ3RoLXRv
d2VyLXZhci5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvanMvcmVncmVzcy9z
d2l0Y2gtc3RyaW5nLWJpZy1sZW5ndGgtdG93ZXItdmFyLmh0bWwJKHJldmlzaW9uIDApCisrKyBM
YXlvdXRUZXN0cy9mYXN0L2pzL3JlZ3Jlc3Mvc3dpdGNoLXN0cmluZy1iaWctbGVuZ3RoLXRvd2Vy
LXZhci5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTIgQEAKKzwhRE9DVFlQRSBIVE1M
IFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0
IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxi
b2R5PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9yZWdyZXNzLXByZS5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0ic2NyaXB0LXRlc3RzL3N3aXRjaC1zdHJpbmctYmlnLWxlbmd0aC10b3dlci12
YXIuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9yZWdyZXNzLXBvc3QuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwv
c2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9qcy9yZWdy
ZXNzL3N3aXRjaC1zdHJpbmctbGVuZ3RoLXRvd2VyLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9mYXN0L2pzL3JlZ3Jlc3Mvc3dpdGNoLXN0cmluZy1sZW5ndGgtdG93ZXIt
ZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9qcy9yZWdyZXNz
L3N3aXRjaC1zdHJpbmctbGVuZ3RoLXRvd2VyLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpA
QCAtMCwwICsxLDEwIEBACitKU1JlZ3Jlc3Mvc3dpdGNoLXN0cmluZy1sZW5ndGgtdG93ZXIKKwor
T24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9s
bG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1Mgbm8gZXhjZXB0aW9uIHRocm93bgor
UEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKSW5kZXg6
IExheW91dFRlc3RzL2Zhc3QvanMvcmVncmVzcy9zd2l0Y2gtc3RyaW5nLWxlbmd0aC10b3dlci12
YXItZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvanMvcmVncmVz
cy9zd2l0Y2gtc3RyaW5nLWxlbmd0aC10b3dlci12YXItZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAw
KQorKysgTGF5b3V0VGVzdHMvZmFzdC9qcy9yZWdyZXNzL3N3aXRjaC1zdHJpbmctbGVuZ3RoLXRv
d2VyLXZhci1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMCBAQAorSlNS
ZWdyZXNzL3N3aXRjaC1zdHJpbmctbGVuZ3RoLXRvd2VyLXZhcgorCitPbiBzdWNjZXNzLCB5b3Ug
d2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBD
T01QTEVURSIuCisKKworUEFTUyBubyBleGNlcHRpb24gdGhyb3duCitQQVNTIHN1Y2Nlc3NmdWxs
eVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpJbmRleDogTGF5b3V0VGVzdHMvZmFz
dC9qcy9yZWdyZXNzL3N3aXRjaC1zdHJpbmctbGVuZ3RoLXRvd2VyLXZhci5odG1sCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvanMvcmVncmVzcy9zd2l0Y2gtc3RyaW5nLWxlbmd0aC10
b3dlci12YXIuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvanMvcmVncmVz
cy9zd2l0Y2gtc3RyaW5nLWxlbmd0aC10b3dlci12YXIuaHRtbAkod29ya2luZyBjb3B5KQpAQCAt
MCwwICsxLDEyIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9F
TiI+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LXBy
ZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMv
cmVncmVzcy1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy9zd2l0
Y2gtc3RyaW5nLWxlbmd0aC10b3dlci12YXIuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJl
c291cmNlcy9yZWdyZXNzLXBvc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291
cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDog
TGF5b3V0VGVzdHMvZmFzdC9qcy9yZWdyZXNzL3N3aXRjaC1zdHJpbmctbGVuZ3RoLXRvd2VyLmh0
bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9qcy9yZWdyZXNzL3N3aXRjaC1zdHJp
bmctbGVuZ3RoLXRvd2VyLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2pz
L3JlZ3Jlc3Mvc3dpdGNoLXN0cmluZy1sZW5ndGgtdG93ZXIuaHRtbAkod29ya2luZyBjb3B5KQpA
QCAtMCwwICsxLDEyIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1M
Ly9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0
LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSJyZXNvdXJj
ZXMvcmVncmVzcy1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy9z
d2l0Y2gtc3RyaW5nLWxlbmd0aC10b3dlci5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVz
b3VyY2VzL3JlZ3Jlc3MtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3Vy
Y2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBM
YXlvdXRUZXN0cy9mYXN0L2pzL3JlZ3Jlc3Mvc3dpdGNoLXN0cmluZy1zaG9ydC1leHBlY3RlZC50
eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9qcy9yZWdyZXNzL3N3aXRjaC1zdHJp
bmctc2hvcnQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9q
cy9yZWdyZXNzL3N3aXRjaC1zdHJpbmctc2hvcnQtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkp
CkBAIC0wLDAgKzEsMTAgQEAKK0pTUmVncmVzcy9zd2l0Y2gtc3RyaW5nLXNob3J0CisKK09uIHN1
Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2Vk
IGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIG5vIGV4Y2VwdGlvbiB0aHJvd24KK1BBU1Mg
c3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCkluZGV4OiBMYXlv
dXRUZXN0cy9mYXN0L2pzL3JlZ3Jlc3Mvc3dpdGNoLXN0cmluZy1zaG9ydC5odG1sCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvanMvcmVncmVzcy9zd2l0Y2gtc3RyaW5nLXNob3J0Lmh0
bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2pzL3JlZ3Jlc3Mvc3dpdGNoLXN0
cmluZy1zaG9ydC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTIgQEAKKzwhRE9DVFlQ
RSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8
c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVh
ZD4KKzxib2R5PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9yZWdyZXNzLXByZS5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0ic2NyaXB0LXRlc3RzL3N3aXRjaC1zdHJpbmctc2hvcnQuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9yZWdyZXNzLXBvc3QuanMiPjwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0Pgor
PC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9qcy9yZWdyZXNzL3Njcmlw
dC10ZXN0cy9zd2l0Y2gtc3RyaW5nLWJhc2ljLWJpZy12YXIuanMKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvZmFzdC9qcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9zd2l0Y2gtc3RyaW5nLWJhc2lj
LWJpZy12YXIuanMJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2pzL3JlZ3Jlc3Mv
c2NyaXB0LXRlc3RzL3N3aXRjaC1zdHJpbmctYmFzaWMtYmlnLXZhci5qcwkod29ya2luZyBjb3B5
KQpAQCAtMCwwICsxLDQ5IEBACitmdW5jdGlvbiBmb28oeCkgeworICAgIHN3aXRjaCAoeCkgewor
ICAgIGNhc2UgImFhYSI6IHJldHVybiAxOworICAgIGNhc2UgImFhYiI6IHJldHVybiAyOworICAg
IGNhc2UgImFhYyI6IHJldHVybiAzOworICAgIGNhc2UgImFiYSI6IHJldHVybiAxMDsKKyAgICBj
YXNlICJhYmIiOiByZXR1cm4gMjA7CisgICAgY2FzZSAiYWJjIjogcmV0dXJuIDMwOworICAgIGNh
c2UgImJhYWEiOiByZXR1cm4gNDsKKyAgICBjYXNlICJiYWFiIjogcmV0dXJuIDU7CisgICAgY2Fz
ZSAiYmFhYyI6IHJldHVybiA2OworICAgIGNhc2UgImJiYWEiOiByZXR1cm4gNDA7CisgICAgY2Fz
ZSAiYmJhYiI6IHJldHVybiA1MDsKKyAgICBjYXNlICJiYmFjIjogcmV0dXJuIDYwOworICAgIGNh
c2UgImJiYmEiOiByZXR1cm4gNDAwOworICAgIGNhc2UgImJiYmIiOiByZXR1cm4gNTAwOworICAg
IGNhc2UgImJiYmMiOiByZXR1cm4gNjAwOworICAgIGNhc2UgImNhYWFhIjogcmV0dXJuIDc7Cisg
ICAgY2FzZSAiY2FhYWIiOiByZXR1cm4gODsKKyAgICBjYXNlICJjYWFhYyI6IHJldHVybiA5Owor
ICAgIGNhc2UgImNiYWFhIjogcmV0dXJuIDcwOworICAgIGNhc2UgImNiYWFiIjogcmV0dXJuIDgw
OworICAgIGNhc2UgImNiYWFjIjogcmV0dXJuIDkwOworICAgIGNhc2UgImNiYmFhIjogcmV0dXJu
IDcwMDsKKyAgICBjYXNlICJjYmJhYiI6IHJldHVybiA4MDA7CisgICAgY2FzZSAiY2JiYWMiOiBy
ZXR1cm4gOTAwOworICAgIGNhc2UgImNiYmJhIjogcmV0dXJuIDcwMDA7CisgICAgY2FzZSAiY2Ji
YmIiOiByZXR1cm4gODAwMDsKKyAgICBjYXNlICJjYmJiYyI6IHJldHVybiA5MDAwOworICAgIGNh
c2UgImRiYmJhIjogcmV0dXJuIDcwMDAwOworICAgIGNhc2UgImRiYmJiIjogcmV0dXJuIDgwMDAw
OworICAgIGNhc2UgImRiYmJjIjogcmV0dXJuIDkwMDAwOworICAgIGNhc2UgImViYWFhIjogcmV0
dXJuIDQwMDAwMDsKKyAgICBjYXNlICJlYmFhYiI6IHJldHVybiA1MDAwMDA7CisgICAgY2FzZSAi
ZWJhYWMiOiByZXR1cm4gNjAwMDAwOworICAgIGRlZmF1bHQ6IHJldHVybiAxMDsKKyAgICB9Cit9
CisKK2Z1bmN0aW9uIG1ha2UocHJlLCBwb3N0KSB7IHJldHVybiBwcmUgKyAiYSIgKyBwb3N0OyB9
CisKK3ZhciBzdHJpbmdzID0gW21ha2UoImEiLCAiYSIpLCBtYWtlKCJhIiwgImIiKSwgbWFrZSgi
YSIsICJjIiksIG1ha2UoImIiLCAiYWEiKSwgbWFrZSgiYiIsICJhYiIpLCBtYWtlKCJiIiwgImFj
IiksIG1ha2UoImMiLCAiYWFhIiksIG1ha2UoImMiLCAiYWFiIiksIG1ha2UoImMiLCAiYWFjIiks
IG1ha2UoImEiLCAiZCIpLCBtYWtlKCJiIiwgImFkIiksIG1ha2UoImMiLCAiYWFkIiksICJkIiwg
bWFrZSgiZCIsICJhIildOworCit2YXIgcmVzdWx0ID0gMDsKK2ZvciAodmFyIGkgPSAwOyBpIDwg
MTAwMDAwMDsgKytpKQorICAgIHJlc3VsdCArPSBmb28oc3RyaW5nc1tpICUgc3RyaW5ncy5sZW5n
dGhdKTsKKworaWYgKHJlc3VsdCAhPSA2Nzg1Njk2KQorICAgIHRocm93ICJCYWQgcmVzdWx0OiAi
ICsgcmVzdWx0OwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9qcy9yZWdyZXNzL3NjcmlwdC10ZXN0
cy9zd2l0Y2gtc3RyaW5nLWJhc2ljLWJpZy5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9m
YXN0L2pzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL3N3aXRjaC1zdHJpbmctYmFzaWMtYmlnLmpzCShy
ZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9qcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9z
d2l0Y2gtc3RyaW5nLWJhc2ljLWJpZy5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQ5IEBA
CitmdW5jdGlvbiBmb28oeCkgeworICAgIHN3aXRjaCAoeCkgeworICAgIGNhc2UgImFhYSI6IHJl
dHVybiAxOworICAgIGNhc2UgImFhYiI6IHJldHVybiAyOworICAgIGNhc2UgImFhYyI6IHJldHVy
biAzOworICAgIGNhc2UgImFiYSI6IHJldHVybiAxMDsKKyAgICBjYXNlICJhYmIiOiByZXR1cm4g
MjA7CisgICAgY2FzZSAiYWJjIjogcmV0dXJuIDMwOworICAgIGNhc2UgImJhYWEiOiByZXR1cm4g
NDsKKyAgICBjYXNlICJiYWFiIjogcmV0dXJuIDU7CisgICAgY2FzZSAiYmFhYyI6IHJldHVybiA2
OworICAgIGNhc2UgImJiYWEiOiByZXR1cm4gNDA7CisgICAgY2FzZSAiYmJhYiI6IHJldHVybiA1
MDsKKyAgICBjYXNlICJiYmFjIjogcmV0dXJuIDYwOworICAgIGNhc2UgImJiYmEiOiByZXR1cm4g
NDAwOworICAgIGNhc2UgImJiYmIiOiByZXR1cm4gNTAwOworICAgIGNhc2UgImJiYmMiOiByZXR1
cm4gNjAwOworICAgIGNhc2UgImNhYWFhIjogcmV0dXJuIDc7CisgICAgY2FzZSAiY2FhYWIiOiBy
ZXR1cm4gODsKKyAgICBjYXNlICJjYWFhYyI6IHJldHVybiA5OworICAgIGNhc2UgImNiYWFhIjog
cmV0dXJuIDcwOworICAgIGNhc2UgImNiYWFiIjogcmV0dXJuIDgwOworICAgIGNhc2UgImNiYWFj
IjogcmV0dXJuIDkwOworICAgIGNhc2UgImNiYmFhIjogcmV0dXJuIDcwMDsKKyAgICBjYXNlICJj
YmJhYiI6IHJldHVybiA4MDA7CisgICAgY2FzZSAiY2JiYWMiOiByZXR1cm4gOTAwOworICAgIGNh
c2UgImNiYmJhIjogcmV0dXJuIDcwMDA7CisgICAgY2FzZSAiY2JiYmIiOiByZXR1cm4gODAwMDsK
KyAgICBjYXNlICJjYmJiYyI6IHJldHVybiA5MDAwOworICAgIGNhc2UgImRiYmJhIjogcmV0dXJu
IDcwMDAwOworICAgIGNhc2UgImRiYmJiIjogcmV0dXJuIDgwMDAwOworICAgIGNhc2UgImRiYmJj
IjogcmV0dXJuIDkwMDAwOworICAgIGNhc2UgImViYWFhIjogcmV0dXJuIDQwMDAwMDsKKyAgICBj
YXNlICJlYmFhYiI6IHJldHVybiA1MDAwMDA7CisgICAgY2FzZSAiZWJhYWMiOiByZXR1cm4gNjAw
MDAwOworICAgIGRlZmF1bHQ6IHJldHVybiAxMDsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIG1ha2Uo
cHJlLCBwb3N0KSB7IHJldHVybiBwcmUgKyAiYSIgKyBwb3N0OyB9CisKK3ZhciBzdHJpbmdzID0g
WyJhYWEiLCAiYWFiIiwgImFhYyIsICJiYWFhIiwgImJhYWIiLCAiYmFhYyIsICJjYWFhYSIsICJj
YWFhYiIsICJjYWFhYyIsICJhYWQiLCAiYmFhZCIsICJjYWFhZCIsICJkIiwgImRhYSJdOworCit2
YXIgcmVzdWx0ID0gMDsKK2ZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDAwMDsgKytpKQorICAgIHJl
c3VsdCArPSBmb28oc3RyaW5nc1tpICUgc3RyaW5ncy5sZW5ndGhdKTsKKworaWYgKHJlc3VsdCAh
PSA2Nzg1Njk2KQorICAgIHRocm93ICJCYWQgcmVzdWx0OiAiICsgcmVzdWx0OwpJbmRleDogTGF5
b3V0VGVzdHMvZmFzdC9qcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9zd2l0Y2gtc3RyaW5nLWJhc2lj
LXZhci5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2pzL3JlZ3Jlc3Mvc2NyaXB0
LXRlc3RzL3N3aXRjaC1zdHJpbmctYmFzaWMtdmFyLmpzCShyZXZpc2lvbiAwKQorKysgTGF5b3V0
VGVzdHMvZmFzdC9qcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9zd2l0Y2gtc3RyaW5nLWJhc2ljLXZh
ci5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDI1IEBACitmdW5jdGlvbiBmb28oeCkgewor
ICAgIHN3aXRjaCAoeCkgeworICAgIGNhc2UgImFhYSI6IHJldHVybiAxOworICAgIGNhc2UgImFh
YiI6IHJldHVybiAyOworICAgIGNhc2UgImFhYyI6IHJldHVybiAzOworICAgIGNhc2UgImJhYWEi
OiByZXR1cm4gNDsKKyAgICBjYXNlICJiYWFiIjogcmV0dXJuIDU7CisgICAgY2FzZSAiYmFhYyI6
IHJldHVybiA2OworICAgIGNhc2UgImNhYWFhIjogcmV0dXJuIDc7CisgICAgY2FzZSAiY2FhYWIi
OiByZXR1cm4gODsKKyAgICBjYXNlICJjYWFhYyI6IHJldHVybiA5OworICAgIGRlZmF1bHQ6IHJl
dHVybiAxMDsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIG1ha2UocHJlLCBwb3N0KSB7IHJldHVybiBw
cmUgKyAiYSIgKyBwb3N0OyB9CisKK3ZhciBzdHJpbmdzID0gW21ha2UoImEiLCAiYSIpLCBtYWtl
KCJhIiwgImIiKSwgbWFrZSgiYSIsICJjIiksIG1ha2UoImIiLCAiYWEiKSwgbWFrZSgiYiIsICJh
YiIpLCBtYWtlKCJiIiwgImFjIiksIG1ha2UoImMiLCAiYWFhIiksIG1ha2UoImMiLCAiYWFiIiks
IG1ha2UoImMiLCAiYWFjIiksIG1ha2UoImEiLCAiZCIpLCBtYWtlKCJiIiwgImFkIiksIG1ha2Uo
ImMiLCAiYWFkIiksICJkIiwgbWFrZSgiZCIsICJhIildOworCit2YXIgcmVzdWx0ID0gMDsKK2Zv
ciAodmFyIGkgPSAwOyBpIDwgMTAwMDAwMDsgKytpKQorICAgIHJlc3VsdCArPSBmb28oc3RyaW5n
c1tpICUgc3RyaW5ncy5sZW5ndGhdKTsKKworaWYgKHJlc3VsdCAhPSA2Nzg1Njk2KQorICAgIHRo
cm93ICJCYWQgcmVzdWx0OiAiICsgcmVzdWx0OwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9qcy9y
ZWdyZXNzL3NjcmlwdC10ZXN0cy9zd2l0Y2gtc3RyaW5nLWJhc2ljLmpzCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2Zhc3QvanMvcmVncmVzcy9zY3JpcHQtdGVzdHMvc3dpdGNoLXN0cmluZy1i
YXNpYy5qcwkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvanMvcmVncmVzcy9zY3Jp
cHQtdGVzdHMvc3dpdGNoLXN0cmluZy1iYXNpYy5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsx
LDIzIEBACitmdW5jdGlvbiBmb28oeCkgeworICAgIHN3aXRjaCAoeCkgeworICAgIGNhc2UgImFh
YSI6IHJldHVybiAxOworICAgIGNhc2UgImFhYiI6IHJldHVybiAyOworICAgIGNhc2UgImFhYyI6
IHJldHVybiAzOworICAgIGNhc2UgImJhYWEiOiByZXR1cm4gNDsKKyAgICBjYXNlICJiYWFiIjog
cmV0dXJuIDU7CisgICAgY2FzZSAiYmFhYyI6IHJldHVybiA2OworICAgIGNhc2UgImNhYWFhIjog
cmV0dXJuIDc7CisgICAgY2FzZSAiY2FhYWIiOiByZXR1cm4gODsKKyAgICBjYXNlICJjYWFhYyI6
IHJldHVybiA5OworICAgIGRlZmF1bHQ6IHJldHVybiAxMDsKKyAgICB9Cit9CisKK3ZhciBzdHJp
bmdzID0gWyJhYWEiLCAiYWFiIiwgImFhYyIsICJiYWFhIiwgImJhYWIiLCAiYmFhYyIsICJjYWFh
YSIsICJjYWFhYiIsICJjYWFhYyIsICJhYWQiLCAiYmFhZCIsICJjYWFhZCIsICJkIiwgImRhYSJd
OworCit2YXIgcmVzdWx0ID0gMDsKK2ZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDAwMDsgKytpKQor
ICAgIHJlc3VsdCArPSBmb28oc3RyaW5nc1tpICUgc3RyaW5ncy5sZW5ndGhdKTsKKworaWYgKHJl
c3VsdCAhPSA2Nzg1Njk2KQorICAgIHRocm93ICJCYWQgcmVzdWx0OiAiICsgcmVzdWx0OwpJbmRl
eDogTGF5b3V0VGVzdHMvZmFzdC9qcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9zd2l0Y2gtc3RyaW5n
LWJpZy1sZW5ndGgtdG93ZXItdmFyLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qv
anMvcmVncmVzcy9zY3JpcHQtdGVzdHMvc3dpdGNoLXN0cmluZy1iaWctbGVuZ3RoLXRvd2VyLXZh
ci5qcwkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvanMvcmVncmVzcy9zY3JpcHQt
dGVzdHMvc3dpdGNoLXN0cmluZy1iaWctbGVuZ3RoLXRvd2VyLXZhci5qcwkod29ya2luZyBjb3B5
KQpAQCAtMCwwICsxLDMwIEBACitmdW5jdGlvbiBmb28oeCkgeworICAgIHN3aXRjaCAoeCkgewor
ICAgIGNhc2UgImZvb2EiOiByZXR1cm4gMTsKKyAgICBjYXNlICJmb29hYiI6IHJldHVybiAyOwor
ICAgIGNhc2UgImZvb2FiYyI6IHJldHVybiAzOworICAgIGNhc2UgImZvb2FiY2QiOiByZXR1cm4g
NDsKKyAgICBjYXNlICJmb29hYmNkZSI6IHJldHVybiA1OworICAgIGNhc2UgImZvb2FiY2RlZiI6
IHJldHVybiA2OworICAgIGNhc2UgImZvb2FiY2RlZmciOiByZXR1cm4gNzsKKyAgICBjYXNlICJm
b29hYmNkZWZnaCI6IHJldHVybiA4OworICAgIGNhc2UgImZvb2FiY2RlZmdoaSI6IHJldHVybiA5
OworICAgIGNhc2UgImZvb2FiY2RlZmdoaWoiOiByZXR1cm4gMTA7CisgICAgY2FzZSAiZm9vYWJj
ZGVmZ2hpamsiOiByZXR1cm4gMTE7CisgICAgY2FzZSAiZm9vYWJjZGVmZ2hpamtsIjogcmV0dXJu
IDEyOworICAgIGNhc2UgImZvb2FiY2RlZmdoaWprbG0iOiByZXR1cm4gMTM7CisgICAgY2FzZSAi
Zm9vYWJjZGVmZ2hpamtsbW4iOiByZXR1cm4gMTQ7CisgICAgZGVmYXVsdDogcmV0dXJuIDE1Owor
ICAgIH0KK30KKwordmFyIHN0cmluZ3MgPSBbImEiLCAiYWIiLCAiYWJjIiwgImFiY2QiLCAiYWJj
ZGUiLCAiYWJjZGVmIiwgImFiY2RlZmciLCAiYWJjZGVmZ2giLCAiYWJjZGVmZ2hpIiwgImFiY2Rl
ZmdoaWoiLCAiYWJjZGVmZ2hpamsiLCAiYWJjZGVmZ2hpamtsIiwgImFiY2RlZmdoaWprbG0iLCAi
YWJjZGVmZ2hpamtsbW4iLCAiYWJjZGVmZ2hpamtsbW5vIl07Citmb3IgKHZhciBpID0gMDsgaSA8
IHN0cmluZ3MubGVuZ3RoOyArK2kpCisgICAgc3RyaW5nc1tpXSA9ICJmb28iICsgc3RyaW5nc1tp
XTsKKwordmFyIHJlc3VsdCA9IDA7Citmb3IgKHZhciBpID0gMDsgaSA8IDEwMDAwMDA7ICsraSkK
KyAgICByZXN1bHQgKz0gZm9vKHN0cmluZ3NbaSAlIHN0cmluZ3MubGVuZ3RoXSk7CisKK2lmIChy
ZXN1bHQgIT0gNzk5OTk3NSkKKyAgICB0aHJvdyAiQmFkIHJlc3VsdDogIiArIHJlc3VsdDsKSW5k
ZXg6IExheW91dFRlc3RzL2Zhc3QvanMvcmVncmVzcy9zY3JpcHQtdGVzdHMvc3dpdGNoLXN0cmlu
Zy1sZW5ndGgtdG93ZXItdmFyLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvanMv
cmVncmVzcy9zY3JpcHQtdGVzdHMvc3dpdGNoLXN0cmluZy1sZW5ndGgtdG93ZXItdmFyLmpzCShy
ZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9qcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9z
d2l0Y2gtc3RyaW5nLWxlbmd0aC10b3dlci12YXIuanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCAr
MSwyMCBAQAorZnVuY3Rpb24gZm9vKHgpIHsKKyAgICBzd2l0Y2ggKHgpIHsKKyAgICBjYXNlICJm
b29hIjogcmV0dXJuIDE7CisgICAgY2FzZSAiZm9vYWIiOiByZXR1cm4gMjsKKyAgICBjYXNlICJm
b29hYmMiOiByZXR1cm4gMzsKKyAgICBjYXNlICJmb29hYmNkIjogcmV0dXJuIDQ7CisgICAgZGVm
YXVsdDogcmV0dXJuIDEwOworICAgIH0KK30KKwordmFyIHN0cmluZ3MgPSBbImEiLCAiYWIiLCAi
YWJjIiwgImFiY2QiLCAiYWJjZGUiXTsKK2ZvciAodmFyIGkgPSAwOyBpIDwgc3RyaW5ncy5sZW5n
dGg7ICsraSkKKyAgICBzdHJpbmdzW2ldID0gImZvbyIgKyBzdHJpbmdzW2ldOworCit2YXIgcmVz
dWx0ID0gMDsKK2ZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDAwMDsgKytpKQorICAgIHJlc3VsdCAr
PSBmb28oc3RyaW5nc1tpICUgc3RyaW5ncy5sZW5ndGhdKTsKKworaWYgKHJlc3VsdCAhPSA0MDAw
MDAwKQorICAgIHRocm93ICJCYWQgcmVzdWx0OiAiICsgcmVzdWx0OwpJbmRleDogTGF5b3V0VGVz
dHMvZmFzdC9qcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9zd2l0Y2gtc3RyaW5nLWxlbmd0aC10b3dl
ci5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2pzL3JlZ3Jlc3Mvc2NyaXB0LXRl
c3RzL3N3aXRjaC1zdHJpbmctbGVuZ3RoLXRvd2VyLmpzCShyZXZpc2lvbiAwKQorKysgTGF5b3V0
VGVzdHMvZmFzdC9qcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9zd2l0Y2gtc3RyaW5nLWxlbmd0aC10
b3dlci5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE4IEBACitmdW5jdGlvbiBmb28oeCkg
eworICAgIHN3aXRjaCAoeCkgeworICAgIGNhc2UgImEiOiByZXR1cm4gMTsKKyAgICBjYXNlICJh
YiI6IHJldHVybiAyOworICAgIGNhc2UgImFiYyI6IHJldHVybiAzOworICAgIGNhc2UgImFiY2Qi
OiByZXR1cm4gNDsKKyAgICBkZWZhdWx0OiByZXR1cm4gMTA7CisgICAgfQorfQorCit2YXIgc3Ry
aW5ncyA9IFsiYSIsICJhYiIsICJhYmMiLCAiYWJjZCIsICJhYmNkZSJdOworCit2YXIgcmVzdWx0
ID0gMDsKK2ZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDAwMDsgKytpKQorICAgIHJlc3VsdCArPSBm
b28oc3RyaW5nc1tpICUgc3RyaW5ncy5sZW5ndGhdKTsKKworaWYgKHJlc3VsdCAhPSA0MDAwMDAw
KQorICAgIHRocm93ICJCYWQgcmVzdWx0OiAiICsgcmVzdWx0OwpJbmRleDogTGF5b3V0VGVzdHMv
ZmFzdC9qcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9zd2l0Y2gtc3RyaW5nLXNob3J0LmpzCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvanMvcmVncmVzcy9zY3JpcHQtdGVzdHMvc3dpdGNo
LXN0cmluZy1zaG9ydC5qcwkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvanMvcmVn
cmVzcy9zY3JpcHQtdGVzdHMvc3dpdGNoLXN0cmluZy1zaG9ydC5qcwkod29ya2luZyBjb3B5KQpA
QCAtMCwwICsxLDE4IEBACitmdW5jdGlvbiBmb28oeCkgeworICAgIHN3aXRjaCAoeCkgeworICAg
IGNhc2UgImFhIjogcmV0dXJuIDE7CisgICAgY2FzZSAiYWIiOiByZXR1cm4gMjsKKyAgICBjYXNl
ICJhYyI6IHJldHVybiAzOworICAgIGNhc2UgImFkIjogcmV0dXJuIDQ7CisgICAgZGVmYXVsdDog
cmV0dXJuIDEwOworICAgIH0KK30KKwordmFyIHN0cmluZ3MgPSBbImFhIiwgImFiIiwgImFjIiwg
ImFkIiwgImFlIl07CisKK3ZhciByZXN1bHQgPSAwOworZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAw
MDAwOyArK2kpCisgICAgcmVzdWx0ICs9IGZvbyhzdHJpbmdzW2kgJSBzdHJpbmdzLmxlbmd0aF0p
OworCitpZiAocmVzdWx0ICE9IDQwMDAwMDApCisgICAgdGhyb3cgIkJhZCByZXN1bHQ6ICIgKyBy
ZXN1bHQ7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>