<?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>93150</bug_id>
          
          <creation_ts>2012-08-03 12:18:43 -0700</creation_ts>
          <short_desc>Array checks should use the structure, not the class info</short_desc>
          <delta_ts>2012-08-14 19:49:26 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>93162</dependson>
          <blocked>91933</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Filip Pizlo">fpizlo</assigned_to>
          <cc>gyuyoung.kim</cc>
    
    <cc>rakuco</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>687024</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-08-03 12:18:43 -0700</bug_when>
    <thetext>This implies that the LLInt and baseline JIT must profile which structure was observed, so that the DFG may pick the right structure to check on the fast path.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>687030</commentid>
    <comment_count>1</comment_count>
      <attachid>156431</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-08-03 12:22:58 -0700</bug_when>
    <thetext>Created attachment 156431
work in progress</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>687307</commentid>
    <comment_count>2</comment_count>
      <attachid>156494</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-08-03 18:07:32 -0700</bug_when>
    <thetext>Created attachment 156494
more</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>694570</commentid>
    <comment_count>3</comment_count>
      <attachid>158235</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-08-13 23:57:06 -0700</bug_when>
    <thetext>Created attachment 158235
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>694579</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-14 00:01:39 -0700</bug_when>
    <thetext>Attachment 158235 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/CMakeLists.txt&apos;, u&apos;S...&quot; exit_code: 1
Source/JavaScriptCore/bytecode/Instruction.h:49:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Source/JavaScriptCore/bytecode/ArrayProfile.h:79:  The parameter name &quot;operation&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 2 in 29 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>694646</commentid>
    <comment_count>5</comment_count>
      <attachid>158235</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-08-14 01:22:36 -0700</bug_when>
    <thetext>Comment on attachment 158235
the patch

Attachment 158235 did not pass win-ews (win):
Output: http://queues.webkit.org/results/13501104</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>695399</commentid>
    <comment_count>6</comment_count>
      <attachid>158235</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2012-08-14 14:32:01 -0700</bug_when>
    <thetext>Comment on attachment 158235
the patch

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

Looks good overall except for minor fix. Also placate windows and style bot please :-)

&gt; Source/JavaScriptCore/jit/JITPropertyAccess32_64.cpp:214
&gt; +    addSlowCase(branchPtr(NotEqual, Address(regT1, JSCell::classInfoOffset()), TrustedImmPtr(&amp;JSArray::s_info)));

Should this be Structure::classInfoOffset()?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>695458</commentid>
    <comment_count>7</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-08-14 16:00:05 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; (From update of attachment 158235 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=158235&amp;action=review
&gt; 
&gt; Looks good overall except for minor fix. Also placate windows and style bot please :-)
&gt; 
&gt; &gt; Source/JavaScriptCore/jit/JITPropertyAccess32_64.cpp:214
&gt; &gt; +    addSlowCase(branchPtr(NotEqual, Address(regT1, JSCell::classInfoOffset()), TrustedImmPtr(&amp;JSArray::s_info)));
&gt; 
&gt; Should this be Structure::classInfoOffset()?

Good catch!  Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>695648</commentid>
    <comment_count>8</comment_count>
      <attachid>158475</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-08-14 18:57:34 -0700</bug_when>
    <thetext>Created attachment 158475
patch for landing, hopefully</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>695653</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-14 19:00:39 -0700</bug_when>
    <thetext>Attachment 158475 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/CMakeLists.txt&apos;, u&apos;S...&quot; exit_code: 1
Source/JavaScriptCore/bytecode/Instruction.h:49:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Source/JavaScriptCore/bytecode/ArrayProfile.h:79:  The parameter name &quot;operation&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 2 in 32 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>695681</commentid>
    <comment_count>10</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-08-14 19:49:26 -0700</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/125637</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>156431</attachid>
            <date>2012-08-03 12:22:58 -0700</date>
            <delta_ts>2012-08-03 18:07:32 -0700</delta_ts>
            <desc>work in progress</desc>
            <filename>arraystruct_patch_1.diff</filename>
            <type>text/plain</type>
            <size>27600</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTI0NjM3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDYxIEBA
CisyMDEyLTA4LTAzICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
QXJyYXkgY2hlY2tzIHNob3VsZCB1c2UgdGhlIHN0cnVjdHVyZSwgbm90IHRoZSBjbGFzcyBpbmZv
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MzE1MAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdvcmsgaW4g
cHJvZ3Jlc3MuCisKKyAgICAgICAgKiBieXRlY29kZS9BcnJheVByb2ZpbGUuY3BwOiBBZGRlZC4K
KyAgICAgICAgKEpTQyk6CisgICAgICAgIChKU0M6OkFycmF5UHJvZmlsZTo6Y29tcHV0ZVVwZGF0
ZWRQcmVkaWN0aW9uKToKKyAgICAgICAgKEpTQzo6QXJyYXlQcm9maWxlUGFyc2VyOjpBcnJheVBy
b2ZpbGVQYXJzZXIpOgorICAgICAgICAoSlNDOjpBcnJheVByb2ZpbGVQYXJzZXI6On5BcnJheVBy
b2ZpbGVQYXJzZXIpOgorICAgICAgICAoSlNDOjpBcnJheVByb2ZpbGVQQXJzZXI6OmdldCk6Cisg
ICAgICAgICogYnl0ZWNvZGUvQXJyYXlQcm9maWxlLmg6IEFkZGVkLgorICAgICAgICAoSlNDKToK
KyAgICAgICAgKEpTQzo6YXJyYXlNb2RlRnJvbVN0cnVjdHVyZSk6CisgICAgICAgIChBcnJheVBy
b2ZpbGUpOgorICAgICAgICAoSlNDOjpBcnJheVByb2ZpbGU6OkFycmF5UHJvZmlsZSk6CisgICAg
ICAgIChKU0M6OkFycmF5UHJvZmlsZTo6YWRkcmVzc09mTGFzdFNlZW5TdHJ1Y3R1cmUpOgorICAg
ICAgICAoSlNDOjpBcnJheVByb2ZpbGU6Om9ic2VydmVTdHJ1Y3R1cmUpOgorICAgICAgICAoSlND
OjpBcnJheVByb2ZpbGU6OmV4cGVjdGVkU3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6QXJyYXlQ
cm9maWxlOjpzdHJ1Y3R1cmVJc1BvbHltb3JwaGljKToKKyAgICAgICAgKEpTQzo6QXJyYXlQcm9m
aWxlOjpvYnNlcnZlZEFycmF5TW9kZXMpOgorICAgICAgICAoQXJyYXlQcm9maWxlUGFyc2VyKToK
KyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suY3BwOgorICAgICAgICAoSlNDOjpDb2RlQmxv
Y2s6OmdldE9yQWRkQXJyYXlQcm9maWxlKToKKyAgICAgICAgKEpTQyk6CisgICAgICAgICogYnl0
ZWNvZGUvQ29kZUJsb2NrLmg6CisgICAgICAgIChDb2RlQmxvY2spOgorICAgICAgICAoSlNDOjpD
b2RlQmxvY2s6Om51bWJlck9mQXJyYXlQcm9maWxlcyk6CisgICAgICAgIChKU0M6OkNvZGVCbG9j
azo6YXJyYXlQcm9maWxlcyk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6YWRkQXJyYXlQcm9m
aWxlKToKKyAgICAgICAgKiBieXRlY29kZS9JbnN0cnVjdGlvbi5oOgorICAgICAgICAoSlNDKToK
KyAgICAgICAgKEpTQzo6SW5zdHJ1Y3Rpb246Okluc3RydWN0aW9uKToKKyAgICAgICAgKiBieXRl
Y29kZS9PcGNvZGUuaDoKKyAgICAgICAgKEpTQyk6CisgICAgICAgIChKU0M6OnBhZE9wY29kZU5h
bWUpOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHA6CisgICAg
ICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0R2V0QXJndW1lbnRCeVZhbCk6CisgICAg
ICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0R2V0QnlWYWwpOgorICAgICAgICAoSlND
OjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFB1dEJ5VmFsKToKKyAgICAgICAgKiBqaXQvSklUUHJv
cGVydHlBY2Nlc3MuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZ2V0X2J5X3ZhbCk6
CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9wdXRfYnlfdmFsKToKKyAgICAgICAgKEpTQzo6
SklUOjpwcml2YXRlQ29tcGlsZVBhdGNoR2V0QXJyYXlMZW5ndGgpOgorICAgICAgICAqIGppdC9K
SVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2dl
dF9ieV92YWwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfcHV0X2J5X3ZhbCk6CisgICAg
ICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVQYXRjaEdldEFycmF5TGVuZ3RoKToKKyAgICAg
ICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtOgorICAgICAgICAqIGxsaW50
L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc206CisgICAgICAgICogcnVudGltZS9TdHJ1Y3R1cmUu
aDoKKyAgICAgICAgKFN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6Y2xhc3NJ
bmZvT2Zmc2V0KToKKwogMjAxMi0wOC0wMiAgUGF0cmljayBHYW5zdGVyZXIgIDxwYXJvZ2FAd2Vi
a2l0Lm9yZz4KIAogICAgICAgICBNb3ZlIGdldExvY2FsVGltZSgpIGFzIHN0YXRpYyBpbmxpbmUg
ZnVuY3Rpb24gdG8gRGF0ZU1hdGgKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9BcnJheVByb2ZpbGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9BcnJheVByb2ZpbGUuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0FycmF5UHJvZmlsZS5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEs
NzAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IK
KyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkFycmF5UHJvZmlsZS5oIgorCituYW1lc3BhY2Ug
SlNDIHsKKwordm9pZCBBcnJheVByb2ZpbGU6OmNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbihPcGVy
YXRpb25JblByb2dyZXNzIG9wZXJhdGlvbikKK3sKKyAgICBpZiAobV9sYXN0U2VlblN0cnVjdHVy
ZSkgeworICAgICAgICBtX29ic2VydmVkQXJyYXlNb2RlcyB8PSBhcnJheU1vZGVGcm9tU3RydWN0
dXJlKG1fbGFzdFNlZW5TdHJ1Y3R1cmUpOworICAgICAgICBpZiAoIW1fc3RydWN0dXJlSXNQb2x5
bW9ycGhpYykgeworICAgICAgICAgICAgaWYgKCFtX2V4cGVjdGVkU3RydWN0dXJlKQorICAgICAg
ICAgICAgICAgIG1fZXhwZWN0ZWRTdHJ1Y3R1cmUgPSBtX2xhc3RTZWVuU3RydWN0dXJlOworICAg
ICAgICAgICAgZWxzZSBpZiAobV9leHBlY3RlZFN0cnVjdHVyZSAhPSBtX2xhc3RTZWVuU3RydWN0
dXJlKSB7CisgICAgICAgICAgICAgICAgbV9leHBlY3RlZFN0cnVjdHVyZSA9IDA7CisgICAgICAg
ICAgICAgICAgbV9zdHJ1Y3R1cmVJc1BvbHltb3JwaGljID0gdHJ1ZTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgfQorICAgICAgICBtX2xhc3RTZWVuU3RydWN0dXJlID0gMDsKKyAgICB9CisgICAg
CisgICAgaWYgKG9wZXJhdGlvbiA9PSBDb2xsZWN0aW9uCisgICAgICAgICYmICFIZWFwOjppc01h
cmtlZChtX2V4cGVjdGVkU3RydWN0dXJlKSkgeworICAgICAgICBtX2V4cGVjdGVkU3RydWN0dXJl
ID0gMDsKKyAgICAgICAgbV9zdHJ1Y3R1cmVJc1BvbHltb3JwaGljID0gdHJ1ZTsKKyAgICB9Cit9
CisKK0FycmF5UHJvZmlsZVBhcnNlcjo6QXJyYXlQcm9maWxlUGFyc2VyKGNvbnN0IEFycmF5UHJv
ZmlsZVZlY3RvciYgdmVjdG9yKQoreworICAgIGZvciAodW5zaWduZWQgaSA9IHZlY3Rvci5zaXpl
KCk7IGktLTspIHsKKyAgICAgICAgQXJyYXlQcm9maWxlKiBwcm9maWxlID0gJnZlY3RvcltpXTsK
KyAgICAgICAgQVNTRVJUKHByb2ZpbGUtPm1fYnl0ZWNvZGVPZmZzZXQpOyAvLyBDYW5ub3QgaGF2
ZSBhbiBhcnJheSBhY2Nlc3MgYXMgdGhlIGZpcnN0IG9wY29kZSwgYW5kIGFueXdheSB0aGUgSGFz
aE1hcCB3b24ndCBsaWtlIGl0LgorICAgICAgICBtX21hcC5hZGQocHJvZmlsZS0+bV9ieXRlY29k
ZU9mZnNldCwgbWFwKTsKKyAgICB9Cit9CisKK0FycmF5UHJvZmlsZVBhcnNlcjo6fkFycmF5UHJv
ZmlsZVBhcnNlcigpIHsgfQorCitBcnJheVByb2ZpbGUqIEFycmF5UHJvZmlsZVBBcnNlcjo6Z2V0
KHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0KQoreworICAgIHJldHVybiBtX21hcC5nZXQoYnl0ZWNv
ZGVPZmZzZXQpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKKwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0FycmF5UHJvZmlsZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BcnJheVByb2ZpbGUuaAkocmV2aXNpb24gMCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BcnJheVByb2ZpbGUuaAkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSwxMDUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4g
CisgKi8KKworI2lmbmRlZiBBcnJheVByb2ZpbGVfaAorI2RlZmluZSBBcnJheVByb2ZpbGVfaAor
CisjaW5jbHVkZSAiSlNBcnJheS5oIgorI2luY2x1ZGUgIlN0cnVjdHVyZS5oIgorI2luY2x1ZGUg
PHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL1NlZ21lbnRlZFZlY3Rvci5oPgorCituYW1l
c3BhY2UgSlNDIHsKKwordHlwZWRlZiB1bnNpZ25lZCBBcnJheU1vZGVzOworCitzdGF0aWMgY29u
c3QgdW5zaWduZWQgSXNOb3RBcnJheSA9IDE7CitzdGF0aWMgY29uc3QgdW5zaWduZWQgSXNKU0Fy
cmF5ICA9IDI7CisKK3N0YXRpYyBBcnJheU1vZGVzIGFycmF5TW9kZUZyb21TdHJ1Y3R1cmUoU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUpCit7CisgICAgaWYgKHN0cnVjdHVyZS0+Y2xhc3NJbmZvKCkgPT0g
JkpTQXJyYXk6OnNfaW5mbykKKyAgICAgICAgcmV0dXJuIElzSlNBcnJheTsKKyAgICByZXR1cm4g
SXNOb3RBcnJheTsKK30KKworY2xhc3MgQXJyYXlQcm9maWxlIHsKK3B1YmxpYzoKKyAgICBBcnJh
eVByb2ZpbGUoKQorICAgICAgICA6IG1fYnl0ZWNvZGVPZmZzZXQoc3RkOjpudW1lcmljX2xpbWl0
czx1bnNpZ25lZD46Om1heCgpKQorICAgICAgICAsIG1fbGFzdFNlZW5TdHJ1Y3R1cmUoMCkKKyAg
ICAgICAgLCBtX2V4cGVjdGVkU3RydWN0dXJlKDApCisgICAgICAgICwgbV9zdHJ1Y3R1cmVJc1Bv
bHltb3JwaGljKGZhbHNlKQorICAgICAgICAsIG1fb2JzZXJ2ZWRBcnJheU1vZGVzKDApCisgICAg
eworICAgIH0KKyAgICAKKyAgICBBcnJheVByb2ZpbGUodW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQp
CisgICAgICAgIDogbV9ieXRlY29kZU9mZnNldChieXRlY29kZU9mZnNldCkKKyAgICAgICAgLCBt
X2xhc3RTZWVuU3RydWN0dXJlKDApCisgICAgICAgICwgbV9leHBlY3RlZFN0cnVjdHVyZSgwKQor
ICAgICAgICAsIG1fc3RydWN0dXJlSXNQb2x5bW9ycGhpYyhmYWxzZSkKKyAgICAgICAgLCBtX29i
c2VydmVkQXJyYXlNb2RlcygwKQorICAgIHsKKyAgICB9CisgICAgCisgICAgU3RydWN0dXJlKiog
YWRkcmVzc09mTGFzdFNlZW5TdHJ1Y3R1cmUoKSB7IHJldHVybiAmbV9sYXN0U2VlblN0cnVjdHVy
ZTsgfQorICAgIAorICAgIHZvaWQgb2JzZXJ2ZVN0cnVjdHVyZShTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSkKKyAgICB7CisgICAgICAgIG1fbGFzdFNlZW5TdHJ1Y3R1cmUgPSBzdHJ1Y3R1cmU7CisgICAg
fQorICAgIAorICAgIHZvaWQgY29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKE9wZXJhdGlvbkluUHJv
Z3Jlc3Mgb3BlcmF0aW9uID0gTm9PcGVyYXRpb24pOworICAgIAorICAgIFN0cnVjdHVyZSogZXhw
ZWN0ZWRTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX2V4cGVjdGVkU3RydWN0dXJlOyB9Cisg
ICAgYm9vbCBzdHJ1Y3R1cmVJc1BvbHltb3JwaGljKCkgY29uc3QgeyByZXR1cm4gbV9zdHJ1Y3R1
cmVJc1BvbHltb3JwaGljOyB9CisgICAgQXJyYXlNb2RlcyBvYnNlcnZlZEFycmF5TW9kZXMoKSBj
b25zdCB7IHJldHVybiBtX29ic2VydmVkQXJyYXlNb2RlczsgfQorICAgIAorcHJpdmF0ZToKKyAg
ICB1bnNpZ25lZCBtX2J5dGVjb2RlT2Zmc2V0OworICAgIFN0cnVjdHVyZSogbV9sYXN0U2VlblN0
cnVjdHVyZTsKKyAgICBTdHJ1Y3R1cmUqIG1fZXhwZWN0ZWRTdHJ1Y3R1cmU7CisgICAgYm9vbCBt
X3N0cnVjdHVyZUlzUG9seW1vcnBoaWM7CisgICAgQXJyYXlNb2RlcyBtX29ic2VydmVkQXJyYXlN
b2RlczsKK307CisKK3R5cGVkZWYgU2VnbWVudGVkVmVjdG9yPEFycmF5UHJvZmlsZSwgNCwgMD4g
QXJyYXlQcm9maWxlVmVjdG9yOworCitjbGFzcyBBcnJheVByb2ZpbGVQYXJzZXIgeworcHVibGlj
OgorICAgIEFycmF5UHJvZmlsZVBhcnNlcihjb25zdCBBcnJheVByb2ZpbGVWZWN0b3ImIHZlY3Rv
cik7CisgICAgfkFycmF5UHJvZmlsZVBhcnNlcigpOworICAgIAorICAgIEFycmF5UHJvZmlsZSog
Z2V0KHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0KTsKKworcHJpdmF0ZToKKyAgICBIYXNoTWFwPHVu
c2lnbmVkLCBBcnJheVByb2ZpbGUqPiBtX21hcDsKK307CisKK30gLy8gbmFtZXNwYWNlIEpTQwor
CisjZW5kaWYgLy8gQXJyYXlQcm9maWxlX2gKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAJKHJldmlzaW9uIDEyNDQxMSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0y
NzY3LDYgKzI3NjcsMTUgQEAgYm9vbCBGdW5jdGlvbkNvZGVCbG9jazo6aml0Q29tcGlsZUltcGwo
RQogfQogI2VuZGlmCiAKK0FycmF5UHJvZmlsZSogQ29kZUJsb2NrOjpnZXRPckFkZEFycmF5UHJv
ZmlsZSh1bnNpZ25lZCBieXRlY29kZU9mZnNldCkKK3sKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgbV9hcnJheVByb2ZpbGVzLnNpemUoKTsgKytpKSB7CisgICAgICAgIGlmIChtX2FycmF5
UHJvZmlsZXNbaV0tPm1fYnl0ZWNvZGVPZmZzZXQgPT0gYnl0ZWNvZGVPZmZzZXQpCisgICAgICAg
ICAgICByZXR1cm4gJm1fYXJyYXlQcm9maWxlc1tpXTsKKyAgICB9CisgICAgcmV0dXJuIGFkZEFy
cmF5UHJvZmlsZShieXRlY29kZU9mZnNldCk7Cit9CisKICNpZiBFTkFCTEUoVkFMVUVfUFJPRklM
RVIpCiB2b2lkIENvZGVCbG9jazo6dXBkYXRlQWxsUHJlZGljdGlvbnNBbmRDb3VudExpdmVuZXNz
KAogICAgIE9wZXJhdGlvbkluUHJvZ3Jlc3Mgb3BlcmF0aW9uLCB1bnNpZ25lZCYgbnVtYmVyT2ZM
aXZlTm9uQXJndW1lbnRWYWx1ZVByb2ZpbGVzLCB1bnNpZ25lZCYgbnVtYmVyT2ZTYW1wbGVzSW5Q
cm9maWxlcykKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2su
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2Nr
LmgJKHJldmlzaW9uIDEyNDQxMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9D
b2RlQmxvY2suaAkod29ya2luZyBjb3B5KQpAQCAtMzAsNiArMzAsNyBAQAogI2lmbmRlZiBDb2Rl
QmxvY2tfaAogI2RlZmluZSBDb2RlQmxvY2tfaAogCisjaW5jbHVkZSAiQXJyYXlQcm9maWxlLmgi
CiAjaW5jbHVkZSAiQnl0ZWNvZGVDb252ZW50aW9ucy5oIgogI2luY2x1ZGUgIkNhbGxMaW5rSW5m
by5oIgogI2luY2x1ZGUgIkNhbGxSZXR1cm5PZmZzZXRUb0J5dGVjb2RlT2Zmc2V0LmgiCkBAIC03
NTIsNiArNzUzLDE1IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAKICAgICAgICAgdW5zaWdu
ZWQgZXhlY3V0aW9uRW50cnlDb3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fZXhlY3V0aW9uRW50cnlD
b3VudDsgfQogI2VuZGlmCisgICAgICAgIAorICAgICAgICB1bnNpZ25lZCBudW1iZXJPZkFycmF5
UHJvZmlsZXMoKSBjb25zdCB7IHJldHVybiBtX2FycmF5UHJvZmlsZXMuc2l6ZSgpOyB9CisgICAg
ICAgIGNvbnN0IEFycmF5UHJvZmlsZVZlY3RvciYgYXJyYXlQcm9maWxlcygpIHsgcmV0dXJuIG1f
YXJyYXlQcm9maWxlczsgfQorICAgICAgICBBcnJheVByb2ZpbGUqIGFkZEFycmF5UHJvZmlsZSh1
bnNpZ25lZCBieXRlY29kZU9mZnNldCkKKyAgICAgICAgeworICAgICAgICAgICAgbV9hcnJheVBy
b2ZpbGVzLmFwcGVuZChBcnJheVByb2ZpbGUoYnl0ZWNvZGVPZmZzZXQpKTsKKyAgICAgICAgICAg
IHJldHVybiAmbV9hcnJheVByb2ZpbGVzLmxhc3QoKTsKKyAgICAgICAgfQorICAgICAgICBBcnJh
eVByb2ZpbGUqIGdldE9yQWRkQXJyYXlQcm9maWxlKHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0KTsK
IAogICAgICAgICB1bnNpZ25lZCBnbG9iYWxSZXNvbHZlSW5mb0NvdW50KCkgY29uc3QKICAgICAg
ICAgewpAQCAtMTMzNSw2ICsxMzQ1LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFNlZ21l
bnRlZFZlY3RvcjxSYXJlQ2FzZVByb2ZpbGUsIDg+IG1fc3BlY2lhbEZhc3RDYXNlUHJvZmlsZXM7
CiAgICAgICAgIHVuc2lnbmVkIG1fZXhlY3V0aW9uRW50cnlDb3VudDsKICNlbmRpZgorICAgICAg
ICBBcnJheVByb2ZpbGVWZWN0b3IgbV9hcnJheVByb2ZpbGVzOwogCiAgICAgICAgIFZlY3Rvcjx1
bnNpZ25lZD4gbV9qdW1wVGFyZ2V0czsKICAgICAgICAgVmVjdG9yPHVuc2lnbmVkPiBtX2xvb3BU
YXJnZXRzOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luc3RydWN0aW9u
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luc3RydWN0
aW9uLmgJKHJldmlzaW9uIDEyNDQxMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9JbnN0cnVjdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC00Niw2ICs0Niw3IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgIC8vIGN1cmVudGx5IGFjdHVhbGx5IHVzZSBQb2x5bW9ycGhpY0FjY2Vzc1N0
cnVjdHVyZUxpc3RzLCB3aGljaCB3ZSBzaG91bGQpLiAgQW55d2F5LCB0aGlzIHNlZW1zIGxpa2Ug
dGhlIGJlc3QKICAgICAvLyBzb2x1dGlvbiBmb3Igbm93IC0gd2lsbCBuZWVkIHRvIHNvbWV0aGlu
ZyBzbWFydGVyIGlmL3doZW4gd2UgYWN0dWFsbHkgd2FudCBtaXhlZC1tb2RlIG9wZXJhdGlvbi4K
IAorICAgIGNsYXNzIEFycmF5UHJvZmlsZTsKICAgICBjbGFzcyBKU0NlbGw7CiAgICAgY2xhc3Mg
U3RydWN0dXJlOwogICAgIGNsYXNzIFN0cnVjdHVyZUNoYWluOwpAQCAtMTkwLDYgKzE5MSw3IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgICAgICBJbnN0cnVjdGlvbihMTEludENhbGxMaW5rSW5mbyog
Y2FsbExpbmtJbmZvKSB7IHUuY2FsbExpbmtJbmZvID0gY2FsbExpbmtJbmZvOyB9CiAgICAgICAg
IAogICAgICAgICBJbnN0cnVjdGlvbihWYWx1ZVByb2ZpbGUqIHByb2ZpbGUpIHsgdS5wcm9maWxl
ID0gcHJvZmlsZTsgfQorICAgICAgICBJbnN0cnVjdGlvbihBcnJheVByb2ZpbGUqIHByb2ZpbGUp
IHsgdS5hcnJheVByb2ZpbGUgPSBwcm9maWxlOyB9CiAgICAgICAgIAogICAgICAgICBJbnN0cnVj
dGlvbihXcml0ZUJhcnJpZXI8VW5rbm93bj4qIHJlZ2lzdGVyUG9pbnRlcikgeyB1LnJlZ2lzdGVy
UG9pbnRlciA9IHJlZ2lzdGVyUG9pbnRlcjsgfQogICAgICAgICAKQEAgLTIwNSw2ICsyMDcsNyBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5j
IGdldHRlckZ1bmM7CiAgICAgICAgICAgICBMTEludENhbGxMaW5rSW5mbyogY2FsbExpbmtJbmZv
OwogICAgICAgICAgICAgVmFsdWVQcm9maWxlKiBwcm9maWxlOworICAgICAgICAgICAgQXJyYXlQ
cm9maWxlKiBhcnJheVByb2ZpbGU7CiAgICAgICAgICAgICB2b2lkKiBwb2ludGVyOwogICAgICAg
ICAgICAgYm9vbCogcHJlZGljYXRlUG9pbnRlcjsKICAgICAgICAgfSB1OwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09wY29kZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PcGNvZGUuaAkocmV2aXNpb24gMTI0NDExKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09wY29kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
MzIsMTAgKzEzMiwxMCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgbWFjcm8ob3BfcHV0X2J5
X2lkX3JlcGxhY2UsIDkpIFwKICAgICAgICAgbWFjcm8ob3BfcHV0X2J5X2lkX2dlbmVyaWMsIDkp
IFwKICAgICAgICAgbWFjcm8ob3BfZGVsX2J5X2lkLCA0KSBcCi0gICAgICAgIG1hY3JvKG9wX2dl
dF9ieV92YWwsIDUpIC8qIGhhcyB2YWx1ZSBwcm9maWxpbmcgKi8gXAotICAgICAgICBtYWNybyhv
cF9nZXRfYXJndW1lbnRfYnlfdmFsLCA1KSAvKiBtdXN0IGJlIHRoZSBzYW1lIHNpemUgYXMgb3Bf
Z2V0X2J5X3ZhbCAqLyBcCisgICAgICAgIG1hY3JvKG9wX2dldF9ieV92YWwsIDYpIC8qIGhhcyB2
YWx1ZSBwcm9maWxpbmcgKi8gXAorICAgICAgICBtYWNybyhvcF9nZXRfYXJndW1lbnRfYnlfdmFs
LCA2KSAvKiBtdXN0IGJlIHRoZSBzYW1lIHNpemUgYXMgb3BfZ2V0X2J5X3ZhbCAqLyBcCiAgICAg
ICAgIG1hY3JvKG9wX2dldF9ieV9wbmFtZSwgNykgXAotICAgICAgICBtYWNybyhvcF9wdXRfYnlf
dmFsLCA0KSBcCisgICAgICAgIG1hY3JvKG9wX3B1dF9ieV92YWwsIDUpIFwKICAgICAgICAgbWFj
cm8ob3BfZGVsX2J5X3ZhbCwgNCkgXAogICAgICAgICBtYWNybyhvcF9wdXRfYnlfaW5kZXgsIDQp
IFwKICAgICAgICAgbWFjcm8ob3BfcHV0X2dldHRlcl9zZXR0ZXIsIDUpIFwKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5l
cmF0b3IuY3BwCShyZXZpc2lvbiAxMjQ0MTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTY2OSwx
MSArMTY2OSwxMyBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdERlbGV0CiAK
IFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0R2V0QXJndW1lbnRCeVZhbChSZWdp
c3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGJhc2UsIFJlZ2lzdGVySUQqIHByb3BlcnR5KQogewor
ICAgIEFycmF5UHJvZmlsZSogYXJyYXlQcm9maWxlID0gbV9jb2RlQmxvY2stPmFkZEFycmF5UHJv
ZmlsZShpbnN0cnVjdGlvbnMoKS5zaXplKCkpOwogICAgIFZhbHVlUHJvZmlsZSogcHJvZmlsZSA9
IGVtaXRQcm9maWxlZE9wY29kZShvcF9nZXRfYXJndW1lbnRfYnlfdmFsKTsKICAgICBpbnN0cnVj
dGlvbnMoKS5hcHBlbmQoZHN0LT5pbmRleCgpKTsKICAgICBBU1NFUlQoYmFzZS0+aW5kZXgoKSA9
PSBtX2NvZGVCbG9jay0+YXJndW1lbnRzUmVnaXN0ZXIoKSk7CiAgICAgaW5zdHJ1Y3Rpb25zKCku
YXBwZW5kKGJhc2UtPmluZGV4KCkpOwogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChwcm9wZXJ0
eS0+aW5kZXgoKSk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGFycmF5UHJvZmlsZSk7CiAg
ICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHByb2ZpbGUpOwogICAgIHJldHVybiBkc3Q7CiB9CkBA
IC0xNjkzLDIwICsxNjk1LDI0IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0
R2V0QnkKICAgICAgICAgICAgIHJldHVybiBkc3Q7CiAgICAgICAgIH0KICAgICB9CisgICAgQXJy
YXlQcm9maWxlKiBhcnJheVByb2ZpbGUgPSBtX2NvZGVCbG9jay0+YWRkQXJyYXlQcm9maWxlKGlu
c3RydWN0aW9ucygpLnNpemUoKSk7CiAgICAgVmFsdWVQcm9maWxlKiBwcm9maWxlID0gZW1pdFBy
b2ZpbGVkT3Bjb2RlKG9wX2dldF9ieV92YWwpOwogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChk
c3QtPmluZGV4KCkpOwogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChiYXNlLT5pbmRleCgpKTsK
ICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQocHJvcGVydHktPmluZGV4KCkpOworICAgIGluc3Ry
dWN0aW9ucygpLmFwcGVuZChhcnJheVByb2ZpbGUpOwogICAgIGluc3RydWN0aW9ucygpLmFwcGVu
ZChwcm9maWxlKTsKICAgICByZXR1cm4gZHN0OwogfQogCiBSZWdpc3RlcklEKiBCeXRlY29kZUdl
bmVyYXRvcjo6ZW1pdFB1dEJ5VmFsKFJlZ2lzdGVySUQqIGJhc2UsIFJlZ2lzdGVySUQqIHByb3Bl
cnR5LCBSZWdpc3RlcklEKiB2YWx1ZSkKIHsKKyAgICBBcnJheVByb2ZpbGUqIGFycmF5UHJvZmls
ZSA9IG1fY29kZUJsb2NrLT5hZGRBcnJheVByb2ZpbGUoaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKTsK
ICAgICBlbWl0T3Bjb2RlKG9wX3B1dF9ieV92YWwpOwogICAgIGluc3RydWN0aW9ucygpLmFwcGVu
ZChiYXNlLT5pbmRleCgpKTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQocHJvcGVydHktPmlu
ZGV4KCkpOwogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZCh2YWx1ZS0+aW5kZXgoKSk7CisgICAg
aW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGFycmF5UHJvZmlsZSk7CiAgICAgcmV0dXJuIHZhbHVlOwog
fQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJf
NjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVy
dHlBY2Nlc3MzMl82NC5jcHAJKHJldmlzaW9uIDEyNDQxMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIw
OSw3ICsyMDksOSBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfYnlfdmFsKEluc3RydWN0aW9uCiAg
ICAgCiAgICAgYWRkU2xvd0Nhc2UoYnJhbmNoMzIoTm90RXF1YWwsIHJlZ1QzLCBUcnVzdGVkSW1t
MzIoSlNWYWx1ZTo6SW50MzJUYWcpKSk7CiAgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxs
KGJhc2UsIHJlZ1QxKTsKLSAgICBhZGRTbG93Q2FzZShicmFuY2hQdHIoTm90RXF1YWwsIEFkZHJl
c3MocmVnVDAsIEpTQ2VsbDo6Y2xhc3NJbmZvT2Zmc2V0KCkpLCBUcnVzdGVkSW1tUHRyKCZKU0Fy
cmF5OjpzX2luZm8pKSk7CisgICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OnN0cnVj
dHVyZU9mZnNldCgpKSwgcmVnVDEpOworICAgIHN0b3JlUHRyKHJlZ1QxLCAmY3VycmVudEluc3Ry
dWN0aW9uWzRdLnUuYXJyYXlQcm9maWxlLT5tX2xhc3RTZWVuU3RydWN0dXJlKTsKKyAgICBhZGRT
bG93Q2FzZShicmFuY2hQdHIoTm90RXF1YWwsIEFkZHJlc3MocmVnVDEsIEpTQ2VsbDo6Y2xhc3NJ
bmZvT2Zmc2V0KCkpLCBUcnVzdGVkSW1tUHRyKCZKU0FycmF5OjpzX2luZm8pKSk7CiAgICAgCiAg
ICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QwLCBKU0FycmF5OjpzdG9yYWdlT2Zmc2V0KCkpLCByZWdU
Myk7CiAgICAgYWRkU2xvd0Nhc2UoYnJhbmNoMzIoQWJvdmVPckVxdWFsLCByZWdUMiwgQWRkcmVz
cyhyZWdUMCwgSlNBcnJheTo6dmVjdG9yTGVuZ3RoT2Zmc2V0KCkpKSk7CkBAIC0yNjQsNyArMjY2
LDkgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfcHV0X2J5X3ZhbChJbnN0cnVjdGlvbgogICAgIAogICAg
IGFkZFNsb3dDYXNlKGJyYW5jaDMyKE5vdEVxdWFsLCByZWdUMywgVHJ1c3RlZEltbTMyKEpTVmFs
dWU6OkludDMyVGFnKSkpOwogICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChiYXNlLCBy
ZWdUMSk7Ci0gICAgYWRkU2xvd0Nhc2UoYnJhbmNoUHRyKE5vdEVxdWFsLCBBZGRyZXNzKHJlZ1Qw
LCBKU0NlbGw6OmNsYXNzSW5mb09mZnNldCgpKSwgVHJ1c3RlZEltbVB0cigmSlNBcnJheTo6c19p
bmZvKSkpOworICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZz
ZXQoKSksIHJlZ1QxKTsKKyAgICBzdG9yZVB0cihyZWdUMSwgJmN1cnJlbnRJbnN0cnVjdGlvbls0
XS51LmFycmF5UHJvZmlsZS0+bV9sYXN0U2VlblN0cnVjdHVyZSk7CisgICAgYWRkU2xvd0Nhc2Uo
YnJhbmNoUHRyKE5vdEVxdWFsLCBBZGRyZXNzKHJlZ1QxLCBTdHJ1Y3R1cmU6OmNsYXNzSW5mb09m
ZnNldCgpKSwgVHJ1c3RlZEltbVB0cigmSlNBcnJheTo6c19pbmZvKSkpOwogICAgIGFkZFNsb3dD
YXNlKGJyYW5jaDMyKEFib3ZlT3JFcXVhbCwgcmVnVDIsIEFkZHJlc3MocmVnVDAsIEpTQXJyYXk6
OnZlY3Rvckxlbmd0aE9mZnNldCgpKSkpOwogCiAgICAgZW1pdFdyaXRlQmFycmllcihyZWdUMCwg
cmVnVDEsIHJlZ1QxLCByZWdUMywgVW5jb25kaXRpb25hbFdyaXRlQmFycmllciwgV3JpdGVCYXJy
aWVyRm9yUHJvcGVydHlBY2Nlc3MpOwpAQCAtNjA4LDcgKzYxMiw5IEBAIHZvaWQgSklUOjpwcml2
YXRlQ29tcGlsZVBhdGNoR2V0QXJyYXlMZW4KICAgICAvLyByZWdUMCBob2xkcyBhIEpTQ2VsbCoK
ICAgICAKICAgICAvLyBDaGVjayBmb3IgYXJyYXkKLSAgICBKdW1wIGZhaWx1cmVDYXNlczEgPSBi
cmFuY2hQdHIoTm90RXF1YWwsIEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6Y2xhc3NJbmZvT2Zmc2V0
KCkpLCBUcnVzdGVkSW1tUHRyKCZKU0FycmF5OjpzX2luZm8pKTsKKyAgICBsb2FkUHRyKEFkZHJl
c3MocmVnVDAsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCByZWdUMik7CisgICAgc3RvcmVQ
dHIocmVnVDIsICZtX2NvZGVCbG9jay0+Z2V0T3JBZGRBcnJheVByb2ZpbGUoc3R1YkluZm8uYnl0
ZWNvZGVJbmRleCktPm1fbGFzdFNlZW5TdHJ1Y3R1cmUpOworICAgIEp1bXAgZmFpbHVyZUNhc2Vz
MSA9IGJyYW5jaFB0cihOb3RFcXVhbCwgQWRkcmVzcyhyZWdUMiwgU3RydWN0dXJlOjpjbGFzc0lu
Zm9PZmZzZXQoKSksIFRydXN0ZWRJbW1QdHIoJkpTQXJyYXk6OnNfaW5mbykpOwogICAgIAogICAg
IC8vIENoZWNrcyBvdXQgb2theSEgLSBnZXQgdGhlIGxlbmd0aCBmcm9tIHRoZSBzdG9yYWdlCiAg
ICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QwLCBKU0FycmF5OjpzdG9yYWdlT2Zmc2V0KCkpLCByZWdU
Mik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNj
ZXNzLmNwcAkocmV2aXNpb24gMTI0NDExKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRQcm9wZXJ0eUFjY2Vzcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExMCw3ICsxMTAsOSBAQCB2
b2lkIEpJVDo6ZW1pdF9vcF9nZXRfYnlfdmFsKEluc3RydWN0aW9uCiAgICAgemVyb0V4dGVuZDMy
VG9QdHIocmVnVDEsIHJlZ1QxKTsKIAogICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChy
ZWdUMCwgYmFzZSk7Ci0gICAgYWRkU2xvd0Nhc2UoYnJhbmNoUHRyKE5vdEVxdWFsLCBBZGRyZXNz
KHJlZ1QwLCBKU0NlbGw6OmNsYXNzSW5mb09mZnNldCgpKSwgVHJ1c3RlZEltbVB0cigmSlNBcnJh
eTo6c19pbmZvKSkpOworICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpzdHJ1Y3R1
cmVPZmZzZXQoKSksIHJlZ1QyKTsKKyAgICBzdG9yZVB0cihyZWdUMiwgJmN1cnJlbnRJbnN0cnVj
dGlvbls0XS51LmFycmF5UHJvZmlsZS0+bV9sYXN0U2VlblN0cnVjdHVyZSk7CisgICAgYWRkU2xv
d0Nhc2UoYnJhbmNoUHRyKE5vdEVxdWFsLCBBZGRyZXNzKHJlZ1QyLCBTdHJ1Y3R1cmU6OmNsYXNz
SW5mb09mZnNldCgpKSwgVHJ1c3RlZEltbVB0cigmSlNBcnJheTo6c19pbmZvKSkpOwogCiAgICAg
bG9hZFB0cihBZGRyZXNzKHJlZ1QwLCBKU0FycmF5OjpzdG9yYWdlT2Zmc2V0KCkpLCByZWdUMik7
CiAgICAgYWRkU2xvd0Nhc2UoYnJhbmNoMzIoQWJvdmVPckVxdWFsLCByZWdUMSwgQWRkcmVzcyhy
ZWdUMCwgSlNBcnJheTo6dmVjdG9yTGVuZ3RoT2Zmc2V0KCkpKSk7CkBAIC0yMzEsNyArMjMzLDkg
QEAgdm9pZCBKSVQ6OmVtaXRfb3BfcHV0X2J5X3ZhbChJbnN0cnVjdGlvbgogICAgIC8vIFNlZSBj
b21tZW50IGluIG9wX2dldF9ieV92YWwuCiAgICAgemVyb0V4dGVuZDMyVG9QdHIocmVnVDEsIHJl
Z1QxKTsKICAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwocmVnVDAsIGJhc2UpOwotICAg
IGFkZFNsb3dDYXNlKGJyYW5jaFB0cihOb3RFcXVhbCwgQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpj
bGFzc0luZm9PZmZzZXQoKSksIFRydXN0ZWRJbW1QdHIoJkpTQXJyYXk6OnNfaW5mbykpKTsKKyAg
ICBsb2FkUHRyKEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCByZWdU
Mik7CisgICAgc3RvcmVQdHIocmVnVDIsICZjdXJyZW50SW5zdHJ1Y3Rpb25bNF0udS5hcnJheVBy
b2ZpbGUtPm1fbGFzdFNlZW5TdHJ1Y3R1cmUpOworICAgIGFkZFNsb3dDYXNlKGJyYW5jaFB0cihO
b3RFcXVhbCwgQWRkcmVzcyhyZWdUMiwgSlNDZWxsOjpjbGFzc0luZm9PZmZzZXQoKSksIFRydXN0
ZWRJbW1QdHIoJkpTQXJyYXk6OnNfaW5mbykpKTsKICAgICBhZGRTbG93Q2FzZShicmFuY2gzMihB
Ym92ZU9yRXF1YWwsIHJlZ1QxLCBBZGRyZXNzKHJlZ1QwLCBKU0FycmF5Ojp2ZWN0b3JMZW5ndGhP
ZmZzZXQoKSkpKTsKIAogICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgSlNBcnJheTo6c3RvcmFn
ZU9mZnNldCgpKSwgcmVnVDIpOwpAQCAtNjQ1LDcgKzY0OSw5IEBAIHZvaWQgSklUOjpwcml2YXRl
Q29tcGlsZVBhdGNoR2V0QXJyYXlMZW4KICAgICBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8g
PSAmbV9jb2RlQmxvY2stPmdldFN0dWJJbmZvKHJldHVybkFkZHJlc3MpOwogCiAgICAgLy8gQ2hl
Y2sgZWF4IGlzIGFuIGFycmF5Ci0gICAgSnVtcCBmYWlsdXJlQ2FzZXMxID0gYnJhbmNoUHRyKE5v
dEVxdWFsLCBBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OmNsYXNzSW5mb09mZnNldCgpKSwgVHJ1c3Rl
ZEltbVB0cigmSlNBcnJheTo6c19pbmZvKSk7CisgICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QwLCBK
U0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgcmVnVDMpOworICAgIHN0b3JlUHRyKHJlZ1QzLCAm
bV9jb2RlQmxvY2stPmdldE9yQWRkQXJyYXlQcm9maWxlKHN0dWJJbmZvLmJ5dGVjb2RlSW5kZXgp
LT5tX2xhc3RTZWVuU3RydWN0dXJlKTsKKyAgICBKdW1wIGZhaWx1cmVDYXNlczEgPSBicmFuY2hQ
dHIoTm90RXF1YWwsIEFkZHJlc3MocmVnVDMsIFN0cnVjdHVyZTo6Y2xhc3NJbmZvT2Zmc2V0KCkp
LCBUcnVzdGVkSW1tUHRyKCZKU0FycmF5OjpzX2luZm8pKTsKIAogICAgIC8vIENoZWNrcyBvdXQg
b2theSEgLSBnZXQgdGhlIGxlbmd0aCBmcm9tIHRoZSBzdG9yYWdlCiAgICAgbG9hZFB0cihBZGRy
ZXNzKHJlZ1QwLCBKU0FycmF5OjpzdG9yYWdlT2Zmc2V0KCkpLCByZWdUMyk7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRl
cjMyXzY0LmFzbQkocmV2aXNpb24gMTI0NDExKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20JKHdvcmtpbmcgY29weSkKQEAgLTEyNTUs
MTQgKzEyNTUsMTcgQEAgX2xsaW50X29wX3B1dF9ieV9pZF90cmFuc2l0aW9uX25vcm1hbF9vdQog
CiBfbGxpbnRfb3BfZ2V0X2J5X3ZhbDoKICAgICB0cmFjZUV4ZWN1dGlvbigpCi0gICAgbG9hZHAg
Q29kZUJsb2NrW2Nmcl0sIHQxCiAgICAgbG9hZGkgOFtQQ10sIHQyCiAgICAgbG9hZGkgMTJbUENd
LCB0MwotICAgIGxvYWRwIENvZGVCbG9jazo6bV9nbG9iYWxEYXRhW3QxXSwgdDEKICAgICBsb2Fk
Q29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZCh0MiwgQ2VsbFRhZywgdDAsIC5vcEdldEJ5VmFsU2xv
dykKLSAgICBsb2FkcCBKU0dsb2JhbERhdGE6OmpzQXJyYXlDbGFzc0luZm9bdDFdLCB0MgogICAg
IGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHQzLCBJbnQzMlRhZywgdDEsIC5vcEdldEJ5
VmFsU2xvdykKLSAgICBicG5lcSBbdDBdLCB0MiwgLm9wR2V0QnlWYWxTbG93CisgICAgbG9hZHAg
SlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQzCisgICAgbG9hZHAgMTZbUENdLCB0MgorICAgIHN0
b3JlcCB0MywgQXJyYXlQcm9maWxlOjptX2xhc3RTZWVuU3RydWN0dXJlW3QyXQorICAgIGxvYWRw
IENvZGVCbG9ja1tjZnJdLCB0MgorICAgIGxvYWRwIENvZGVCbG9jazo6bV9nbG9iYWxEYXRhW3Qy
XSwgdDIKKyAgICBsb2FkcCBKU0dsb2JhbERhdGE6OmpzQXJyYXlDbGFzc0luZm9bdDJdLCB0Mgor
ICAgIGJwbmVxIFN0cnVjdHVyZTo6bV9jbGFzc0luZm9bdDNdLCB0MiwgLm9wR2V0QnlWYWxTbG93
CiAgICAgbG9hZHAgSlNBcnJheTo6bV9zdG9yYWdlW3QwXSwgdDMKICAgICBiaWFlcSB0MSwgSlNB
cnJheTo6bV92ZWN0b3JMZW5ndGhbdDBdLCAub3BHZXRCeVZhbFNsb3cKICAgICBsb2FkaSA0W1BD
XSwgdDAKQEAgLTEyNzEsMTYgKzEyNzQsMTggQEAgX2xsaW50X29wX2dldF9ieV92YWw6CiAgICAg
YmllcSB0MiwgRW1wdHlWYWx1ZVRhZywgLm9wR2V0QnlWYWxTbG93CiAgICAgc3RvcmVpIHQyLCBU
YWdPZmZzZXRbY2ZyLCB0MCwgOF0KICAgICBzdG9yZWkgdDEsIFBheWxvYWRPZmZzZXRbY2ZyLCB0
MCwgOF0KLSAgICBsb2FkaSAxNltQQ10sIHQwCisgICAgbG9hZGkgMjBbUENdLCB0MAogICAgIHZh
bHVlUHJvZmlsZSh0MiwgdDEsIHQwKQotICAgIGRpc3BhdGNoKDUpCisgICAgZGlzcGF0Y2goNikK
IAogLm9wR2V0QnlWYWxTbG93OgogICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX2dl
dF9ieV92YWwpCi0gICAgZGlzcGF0Y2goNSkKKyAgICBkaXNwYXRjaCg2KQogCiAKIF9sbGludF9v
cF9nZXRfYXJndW1lbnRfYnlfdmFsOgorICAgICMgRklYTUU6IEF0IHNvbWUgcG9pbnQgd2Ugc2hv
dWxkIGFycmF5IHByb2ZpbGUgdGhpcy4gUmlnaHQgbm93IGl0IGlzbid0IG5lY2Vzc2FyeQorICAg
ICMgc2luY2UgdGhlIERGRyB3aWxsIG5ldmVyIHR1cm4gYSBnZXRfYXJndW1lbnRfYnlfdmFsIGlu
dG8gYSBHZXRCeVZhbC4KICAgICB0cmFjZUV4ZWN1dGlvbigpCiAgICAgbG9hZGkgOFtQQ10sIHQw
CiAgICAgbG9hZGkgMTJbUENdLCB0MQpAQCAtMTI5MywxNSArMTI5OCwxNSBAQCBfbGxpbnRfb3Bf
Z2V0X2FyZ3VtZW50X2J5X3ZhbDoKICAgICBsb2FkaSA0W1BDXSwgdDMKICAgICBsb2FkaSBUaGlz
QXJndW1lbnRPZmZzZXQgKyBUYWdPZmZzZXRbY2ZyLCB0MiwgOF0sIHQwCiAgICAgbG9hZGkgVGhp
c0FyZ3VtZW50T2Zmc2V0ICsgUGF5bG9hZE9mZnNldFtjZnIsIHQyLCA4XSwgdDEKLSAgICBsb2Fk
aSAxNltQQ10sIHQyCisgICAgbG9hZGkgMjBbUENdLCB0MgogICAgIHN0b3JlaSB0MCwgVGFnT2Zm
c2V0W2NmciwgdDMsIDhdCiAgICAgc3RvcmVpIHQxLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDMsIDhd
CiAgICAgdmFsdWVQcm9maWxlKHQwLCB0MSwgdDIpCi0gICAgZGlzcGF0Y2goNSkKKyAgICBkaXNw
YXRjaCg2KQogCiAub3BHZXRBcmd1bWVudEJ5VmFsU2xvdzoKICAgICBjYWxsU2xvd1BhdGgoX2xs
aW50X3Nsb3dfcGF0aF9nZXRfYXJndW1lbnRfYnlfdmFsKQotICAgIGRpc3BhdGNoKDUpCisgICAg
ZGlzcGF0Y2goNikKIAogCiBfbGxpbnRfb3BfZ2V0X2J5X3BuYW1lOgpAQCAtMTMzOCwxMCArMTM0
MywxMyBAQCBfbGxpbnRfb3BfcHV0X2J5X3ZhbDoKICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxl
UGF5bG9hZCh0MCwgQ2VsbFRhZywgdDEsIC5vcFB1dEJ5VmFsU2xvdykKICAgICBsb2FkaSA4W1BD
XSwgdDAKICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZCh0MCwgSW50MzJUYWcsIHQy
LCAub3BQdXRCeVZhbFNsb3cpCisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MV0sIHQz
CisgICAgbG9hZHAgMTZbUENdLCB0MAorICAgIHN0b3JlcCB0MywgQXJyYXlQcm9maWxlOjptX2xh
c3RTZWVuU3RydWN0dXJlW3QwXQogICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0MAogICAgIGxv
YWRwIENvZGVCbG9jazo6bV9nbG9iYWxEYXRhW3QwXSwgdDAKICAgICBsb2FkcCBKU0dsb2JhbERh
dGE6OmpzQXJyYXlDbGFzc0luZm9bdDBdLCB0MAotICAgIGJwbmVxIFt0MV0sIHQwLCAub3BQdXRC
eVZhbFNsb3cKKyAgICBicG5lcSBTdHJ1Y3R1cmU6Om1fY2xhc3NJbmZvW3QzXSwgdDAsIC5vcFB1
dEJ5VmFsU2xvdwogICAgIGJpYWVxIHQyLCBKU0FycmF5OjptX3ZlY3Rvckxlbmd0aFt0MV0sIC5v
cFB1dEJ5VmFsU2xvdwogICAgIGxvYWRwIEpTQXJyYXk6Om1fc3RvcmFnZVt0MV0sIHQwCiAgICAg
YmllcSBBcnJheVN0b3JhZ2U6Om1fdmVjdG9yICsgVGFnT2Zmc2V0W3QwLCB0MiwgOF0sIEVtcHR5
VmFsdWVUYWcsIC5vcFB1dEJ5VmFsRW1wdHkKQEAgLTEzNTEsNyArMTM1OSw3IEBAIF9sbGludF9v
cF9wdXRfYnlfdmFsOgogICAgIHdyaXRlQmFycmllcih0MSwgdDMpCiAgICAgc3RvcmVpIHQxLCBB
cnJheVN0b3JhZ2U6Om1fdmVjdG9yICsgVGFnT2Zmc2V0W3QwLCB0MiwgOF0KICAgICBzdG9yZWkg
dDMsIEFycmF5U3RvcmFnZTo6bV92ZWN0b3IgKyBQYXlsb2FkT2Zmc2V0W3QwLCB0MiwgOF0KLSAg
ICBkaXNwYXRjaCg0KQorICAgIGRpc3BhdGNoKDUpCiAKIC5vcFB1dEJ5VmFsRW1wdHk6CiAgICAg
YWRkaSAxLCBBcnJheVN0b3JhZ2U6Om1fbnVtVmFsdWVzSW5WZWN0b3JbdDBdCkBAIC0xMzYyLDcg
KzEzNzAsNyBAQCBfbGxpbnRfb3BfcHV0X2J5X3ZhbDoKIAogLm9wUHV0QnlWYWxTbG93OgogICAg
IGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX3B1dF9ieV92YWwpCi0gICAgZGlzcGF0Y2go
NCkKKyAgICBkaXNwYXRjaCg1KQogCiAKIF9sbGludF9vcF9sb29wOgpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20J
KHJldmlzaW9uIDEyNDQxMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZl
bEludGVycHJldGVyNjQuYXNtCSh3b3JraW5nIGNvcHkpCkBAIC0xMDk5LDMxICsxMDk5LDM2IEBA
IF9sbGludF9vcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWxfb3UKIAogX2xsaW50X29wX2dl
dF9ieV92YWw6CiAgICAgdHJhY2VFeGVjdXRpb24oKQotICAgIGxvYWRwIENvZGVCbG9ja1tjZnJd
LCB0MQogICAgIGxvYWRpcyAxNltQQiwgUEMsIDhdLCB0MgogICAgIGxvYWRpcyAyNFtQQiwgUEMs
IDhdLCB0MwotICAgIGxvYWRwIENvZGVCbG9jazo6bV9nbG9iYWxEYXRhW3QxXSwgdDEKICAgICBs
b2FkQ29uc3RhbnRPclZhcmlhYmxlQ2VsbCh0MiwgdDAsIC5vcEdldEJ5VmFsU2xvdykKLSAgICBs
b2FkcCBKU0dsb2JhbERhdGE6OmpzQXJyYXlDbGFzc0luZm9bdDFdLCB0MgogICAgIGxvYWRDb25z
dGFudE9yVmFyaWFibGVJbnQzMih0MywgdDEsIC5vcEdldEJ5VmFsU2xvdykKICAgICBzeGkycCB0
MSwgdDEKLSAgICBicG5lcSBbdDBdLCB0MiwgLm9wR2V0QnlWYWxTbG93CisgICAgbG9hZHAgSlND
ZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQzCisgICAgbG9hZHAgMzJbUEIsIFBDLCA4XSwgdDIKKyAg
ICBzdG9yZXAgdDMsIEFycmF5UHJvZmlsZTo6bV9sYXN0U2VlblN0cnVjdHVyZVt0Ml0KKyAgICBs
b2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDIKKyAgICBsb2FkcCBDb2RlQmxvY2s6Om1fZ2xvYmFsRGF0
YVt0Ml0sIHQyCisgICAgbG9hZHAgSlNHbG9iYWxEYXRhOjpqc0FycmF5Q2xhc3NJbmZvW3QyXSwg
dDIKKyAgICBicG5lcSBTdHJ1Y3R1cmU6Om1fY2xhc3NJbmZvW3QzXSwgdDIsIC5vcEdldEJ5VmFs
U2xvdwogICAgIGxvYWRwIEpTQXJyYXk6Om1fc3RvcmFnZVt0MF0sIHQzCiAgICAgYmlhZXEgdDEs
IEpTQXJyYXk6Om1fdmVjdG9yTGVuZ3RoW3QwXSwgLm9wR2V0QnlWYWxTbG93CiAgICAgbG9hZGlz
IDhbUEIsIFBDLCA4XSwgdDAKICAgICBsb2FkcCBBcnJheVN0b3JhZ2U6Om1fdmVjdG9yW3QzLCB0
MSwgOF0sIHQyCiAgICAgYnRweiB0MiwgLm9wR2V0QnlWYWxTbG93CiAgICAgc3RvcmVwIHQyLCBb
Y2ZyLCB0MCwgOF0KLSAgICBsb2FkcCAzMltQQiwgUEMsIDhdLCB0MAorICAgIGxvYWRwIDQwW1BC
LCBQQywgOF0sIHQwCiAgICAgdmFsdWVQcm9maWxlKHQyLCB0MCkKLSAgICBkaXNwYXRjaCg1KQor
ICAgIGRpc3BhdGNoKDYpCiAKIC5vcEdldEJ5VmFsU2xvdzoKICAgICBjYWxsU2xvd1BhdGgoX2xs
aW50X3Nsb3dfcGF0aF9nZXRfYnlfdmFsKQotICAgIGRpc3BhdGNoKDUpCisgICAgZGlzcGF0Y2go
NikKIAogCiBfbGxpbnRfb3BfZ2V0X2FyZ3VtZW50X2J5X3ZhbDoKKyAgICAjIEZJWE1FOiBBdCBz
b21lIHBvaW50IHdlIHNob3VsZCBhcnJheSBwcm9maWxlIHRoaXMuIFJpZ2h0IG5vdyBpdCBpc24n
dCBuZWNlc3NhcnkKKyAgICAjIHNpbmNlIHRoZSBERkcgd2lsbCBuZXZlciB0dXJuIGEgZ2V0X2Fy
Z3VtZW50X2J5X3ZhbCBpbnRvIGEgR2V0QnlWYWwuCiAgICAgdHJhY2VFeGVjdXRpb24oKQogICAg
IGxvYWRpcyAxNltQQiwgUEMsIDhdLCB0MAogICAgIGxvYWRpcyAyNFtQQiwgUEMsIDhdLCB0MQpA
QCAtMTEzOSwxMSArMTE0NCwxMSBAQCBfbGxpbnRfb3BfZ2V0X2FyZ3VtZW50X2J5X3ZhbDoKICAg
ICBsb2FkcCBUaGlzQXJndW1lbnRPZmZzZXRbY2ZyLCB0MiwgOF0sIHQwCiAgICAgc3RvcmVwIHQw
LCBbY2ZyLCB0MywgOF0KICAgICB2YWx1ZVByb2ZpbGUodDAsIHQxKQotICAgIGRpc3BhdGNoKDUp
CisgICAgZGlzcGF0Y2goNikKIAogLm9wR2V0QXJndW1lbnRCeVZhbFNsb3c6CiAgICAgY2FsbFNs
b3dQYXRoKF9sbGludF9zbG93X3BhdGhfZ2V0X2FyZ3VtZW50X2J5X3ZhbCkKLSAgICBkaXNwYXRj
aCg1KQorICAgIGRpc3BhdGNoKDYpCiAKIAogX2xsaW50X29wX2dldF9ieV9wbmFtZToKQEAgLTEx
ODIsMTAgKzExODcsMTMgQEAgX2xsaW50X29wX3B1dF9ieV92YWw6CiAgICAgbG9hZGlzIDE2W1BC
LCBQQywgOF0sIHQwCiAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZUludDMyKHQwLCB0MiwgLm9w
UHV0QnlWYWxTbG93KQogICAgIHN4aTJwIHQyLCB0MgorICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1
Y3R1cmVbdDFdLCB0MworICAgIGxvYWRwIDMyW1BCLCBQQywgOF0sIHQwCisgICAgc3RvcmVwIHQz
LCBBcnJheVByb2ZpbGU6Om1fbGFzdFNlZW5TdHJ1Y3R1cmVbdDBdCiAgICAgbG9hZHAgQ29kZUJs
b2NrW2Nmcl0sIHQwCiAgICAgbG9hZHAgQ29kZUJsb2NrOjptX2dsb2JhbERhdGFbdDBdLCB0MAog
ICAgIGxvYWRwIEpTR2xvYmFsRGF0YTo6anNBcnJheUNsYXNzSW5mb1t0MF0sIHQwCi0gICAgYnBu
ZXEgW3QxXSwgdDAsIC5vcFB1dEJ5VmFsU2xvdworICAgIGJwbmVxIFN0cnVjdHVyZTo6bV9jbGFz
c0luZm9bdDNdLCB0MCwgLm9wUHV0QnlWYWxTbG93CiAgICAgYmlhZXEgdDIsIEpTQXJyYXk6Om1f
dmVjdG9yTGVuZ3RoW3QxXSwgLm9wUHV0QnlWYWxTbG93CiAgICAgbG9hZHAgSlNBcnJheTo6bV9z
dG9yYWdlW3QxXSwgdDAKICAgICBidHB6IEFycmF5U3RvcmFnZTo6bV92ZWN0b3JbdDAsIHQyLCA4
XSwgLm9wUHV0QnlWYWxFbXB0eQpAQCAtMTE5NCw3ICsxMjAyLDcgQEAgX2xsaW50X29wX3B1dF9i
eV92YWw6CiAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZSh0MywgdDEpCiAgICAgd3JpdGVCYXJy
aWVyKHQxKQogICAgIHN0b3JlcCB0MSwgQXJyYXlTdG9yYWdlOjptX3ZlY3Rvclt0MCwgdDIsIDhd
Ci0gICAgZGlzcGF0Y2goNCkKKyAgICBkaXNwYXRjaCg1KQogCiAub3BQdXRCeVZhbEVtcHR5Ogog
ICAgIGFkZGkgMSwgQXJyYXlTdG9yYWdlOjptX251bVZhbHVlc0luVmVjdG9yW3QwXQpAQCAtMTIw
NSw3ICsxMjEzLDcgQEAgX2xsaW50X29wX3B1dF9ieV92YWw6CiAKIC5vcFB1dEJ5VmFsU2xvdzoK
ICAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9wdXRfYnlfdmFsKQotICAgIGRpc3Bh
dGNoKDQpCisgICAgZGlzcGF0Y2goNSkKIAogCiBfbGxpbnRfb3BfbG9vcDoKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oCShyZXZpc2lvbiAxMjQ0MTEpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaAkod29ya2luZyBjb3B5
KQpAQCAtMzIyLDYgKzMyMiwxMSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgewogICAgICAg
ICAgICAgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihTdHJ1Y3R1cmUsIG1fdHlwZUluZm8pICsgVHlw
ZUluZm86OnR5cGVPZmZzZXQoKTsKICAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgc3RhdGlj
IHB0cmRpZmZfdCBjbGFzc0luZm9PZmZzZXQoKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1
cm4gT0JKRUNUX09GRlNFVE9GKFN0cnVjdHVyZSwgbV9jbGFzc0luZm8pOworICAgICAgICB9CiAK
ICAgICAgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTR2xvYmFsRGF0YSYp
OwogICAgICAgICAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>156494</attachid>
            <date>2012-08-03 18:07:32 -0700</date>
            <delta_ts>2012-08-13 23:57:06 -0700</delta_ts>
            <desc>more</desc>
            <filename>arraystruct_patch_2.diff</filename>
            <type>text/plain</type>
            <size>34672</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTI0NjM3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDYxIEBA
CisyMDEyLTA4LTAzICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
QXJyYXkgY2hlY2tzIHNob3VsZCB1c2UgdGhlIHN0cnVjdHVyZSwgbm90IHRoZSBjbGFzcyBpbmZv
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MzE1MAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdvcmsgaW4g
cHJvZ3Jlc3MuCisKKyAgICAgICAgKiBieXRlY29kZS9BcnJheVByb2ZpbGUuY3BwOiBBZGRlZC4K
KyAgICAgICAgKEpTQyk6CisgICAgICAgIChKU0M6OkFycmF5UHJvZmlsZTo6Y29tcHV0ZVVwZGF0
ZWRQcmVkaWN0aW9uKToKKyAgICAgICAgKEpTQzo6QXJyYXlQcm9maWxlUGFyc2VyOjpBcnJheVBy
b2ZpbGVQYXJzZXIpOgorICAgICAgICAoSlNDOjpBcnJheVByb2ZpbGVQYXJzZXI6On5BcnJheVBy
b2ZpbGVQYXJzZXIpOgorICAgICAgICAoSlNDOjpBcnJheVByb2ZpbGVQQXJzZXI6OmdldCk6Cisg
ICAgICAgICogYnl0ZWNvZGUvQXJyYXlQcm9maWxlLmg6IEFkZGVkLgorICAgICAgICAoSlNDKToK
KyAgICAgICAgKEpTQzo6YXJyYXlNb2RlRnJvbVN0cnVjdHVyZSk6CisgICAgICAgIChBcnJheVBy
b2ZpbGUpOgorICAgICAgICAoSlNDOjpBcnJheVByb2ZpbGU6OkFycmF5UHJvZmlsZSk6CisgICAg
ICAgIChKU0M6OkFycmF5UHJvZmlsZTo6YWRkcmVzc09mTGFzdFNlZW5TdHJ1Y3R1cmUpOgorICAg
ICAgICAoSlNDOjpBcnJheVByb2ZpbGU6Om9ic2VydmVTdHJ1Y3R1cmUpOgorICAgICAgICAoSlND
OjpBcnJheVByb2ZpbGU6OmV4cGVjdGVkU3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6QXJyYXlQ
cm9maWxlOjpzdHJ1Y3R1cmVJc1BvbHltb3JwaGljKToKKyAgICAgICAgKEpTQzo6QXJyYXlQcm9m
aWxlOjpvYnNlcnZlZEFycmF5TW9kZXMpOgorICAgICAgICAoQXJyYXlQcm9maWxlUGFyc2VyKToK
KyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suY3BwOgorICAgICAgICAoSlNDOjpDb2RlQmxv
Y2s6OmdldE9yQWRkQXJyYXlQcm9maWxlKToKKyAgICAgICAgKEpTQyk6CisgICAgICAgICogYnl0
ZWNvZGUvQ29kZUJsb2NrLmg6CisgICAgICAgIChDb2RlQmxvY2spOgorICAgICAgICAoSlNDOjpD
b2RlQmxvY2s6Om51bWJlck9mQXJyYXlQcm9maWxlcyk6CisgICAgICAgIChKU0M6OkNvZGVCbG9j
azo6YXJyYXlQcm9maWxlcyk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6YWRkQXJyYXlQcm9m
aWxlKToKKyAgICAgICAgKiBieXRlY29kZS9JbnN0cnVjdGlvbi5oOgorICAgICAgICAoSlNDKToK
KyAgICAgICAgKEpTQzo6SW5zdHJ1Y3Rpb246Okluc3RydWN0aW9uKToKKyAgICAgICAgKiBieXRl
Y29kZS9PcGNvZGUuaDoKKyAgICAgICAgKEpTQyk6CisgICAgICAgIChKU0M6OnBhZE9wY29kZU5h
bWUpOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHA6CisgICAg
ICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0R2V0QXJndW1lbnRCeVZhbCk6CisgICAg
ICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0R2V0QnlWYWwpOgorICAgICAgICAoSlND
OjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFB1dEJ5VmFsKToKKyAgICAgICAgKiBqaXQvSklUUHJv
cGVydHlBY2Nlc3MuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZ2V0X2J5X3ZhbCk6
CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9wdXRfYnlfdmFsKToKKyAgICAgICAgKEpTQzo6
SklUOjpwcml2YXRlQ29tcGlsZVBhdGNoR2V0QXJyYXlMZW5ndGgpOgorICAgICAgICAqIGppdC9K
SVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2dl
dF9ieV92YWwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfcHV0X2J5X3ZhbCk6CisgICAg
ICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVQYXRjaEdldEFycmF5TGVuZ3RoKToKKyAgICAg
ICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtOgorICAgICAgICAqIGxsaW50
L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc206CisgICAgICAgICogcnVudGltZS9TdHJ1Y3R1cmUu
aDoKKyAgICAgICAgKFN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6Y2xhc3NJ
bmZvT2Zmc2V0KToKKwogMjAxMi0wOC0wMiAgUGF0cmljayBHYW5zdGVyZXIgIDxwYXJvZ2FAd2Vi
a2l0Lm9yZz4KIAogICAgICAgICBNb3ZlIGdldExvY2FsVGltZSgpIGFzIHN0YXRpYyBpbmxpbmUg
ZnVuY3Rpb24gdG8gRGF0ZU1hdGgKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9BcnJheVByb2ZpbGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9BcnJheVByb2ZpbGUuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0FycmF5UHJvZmlsZS5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEs
NTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IK
KyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkFycmF5UHJvZmlsZS5oIgorCituYW1lc3BhY2Ug
SlNDIHsKKwordm9pZCBBcnJheVByb2ZpbGU6OmNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbihPcGVy
YXRpb25JblByb2dyZXNzIG9wZXJhdGlvbikKK3sKKyAgICBpZiAobV9sYXN0U2VlblN0cnVjdHVy
ZSkgeworICAgICAgICBtX29ic2VydmVkQXJyYXlNb2RlcyB8PSBhcnJheU1vZGVGcm9tU3RydWN0
dXJlKG1fbGFzdFNlZW5TdHJ1Y3R1cmUpOworICAgICAgICBpZiAoIW1fc3RydWN0dXJlSXNQb2x5
bW9ycGhpYykgeworICAgICAgICAgICAgaWYgKCFtX2V4cGVjdGVkU3RydWN0dXJlKQorICAgICAg
ICAgICAgICAgIG1fZXhwZWN0ZWRTdHJ1Y3R1cmUgPSBtX2xhc3RTZWVuU3RydWN0dXJlOworICAg
ICAgICAgICAgZWxzZSBpZiAobV9leHBlY3RlZFN0cnVjdHVyZSAhPSBtX2xhc3RTZWVuU3RydWN0
dXJlKSB7CisgICAgICAgICAgICAgICAgbV9leHBlY3RlZFN0cnVjdHVyZSA9IDA7CisgICAgICAg
ICAgICAgICAgbV9zdHJ1Y3R1cmVJc1BvbHltb3JwaGljID0gdHJ1ZTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgfQorICAgICAgICBtX2xhc3RTZWVuU3RydWN0dXJlID0gMDsKKyAgICB9CisgICAg
CisgICAgaWYgKG9wZXJhdGlvbiA9PSBDb2xsZWN0aW9uCisgICAgICAgICYmICFIZWFwOjppc01h
cmtlZChtX2V4cGVjdGVkU3RydWN0dXJlKSkgeworICAgICAgICBtX2V4cGVjdGVkU3RydWN0dXJl
ID0gMDsKKyAgICAgICAgbV9zdHJ1Y3R1cmVJc1BvbHltb3JwaGljID0gdHJ1ZTsKKyAgICB9Cit9
CisKK30gLy8gbmFtZXNwYWNlIEpTQworCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQXJyYXlQcm9maWxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0FycmF5UHJvZmlsZS5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0FycmF5UHJvZmlsZS5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDk4
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisg
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5k
ZWYgQXJyYXlQcm9maWxlX2gKKyNkZWZpbmUgQXJyYXlQcm9maWxlX2gKKworI2luY2x1ZGUgIkpT
QXJyYXkuaCIKKyNpbmNsdWRlICJTdHJ1Y3R1cmUuaCIKKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5o
PgorI2luY2x1ZGUgPHd0Zi9TZWdtZW50ZWRWZWN0b3IuaD4KKworbmFtZXNwYWNlIEpTQyB7CisK
K3R5cGVkZWYgdW5zaWduZWQgQXJyYXlNb2RlczsKKworc3RhdGljIGNvbnN0IHVuc2lnbmVkIElz
Tm90QXJyYXkgPSAxOworc3RhdGljIGNvbnN0IHVuc2lnbmVkIElzSlNBcnJheSAgPSAyOworCitz
dGF0aWMgQXJyYXlNb2RlcyBhcnJheU1vZGVGcm9tU3RydWN0dXJlKFN0cnVjdHVyZSogc3RydWN0
dXJlKQoreworICAgIGlmIChzdHJ1Y3R1cmUtPmNsYXNzSW5mbygpID09ICZKU0FycmF5OjpzX2lu
Zm8pCisgICAgICAgIHJldHVybiBJc0pTQXJyYXk7CisgICAgcmV0dXJuIElzTm90QXJyYXk7Cit9
CisKK2NsYXNzIEFycmF5UHJvZmlsZSB7CitwdWJsaWM6CisgICAgQXJyYXlQcm9maWxlKCkKKyAg
ICAgICAgOiBtX2J5dGVjb2RlT2Zmc2V0KHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+Ojpt
YXgoKSkKKyAgICAgICAgLCBtX2xhc3RTZWVuU3RydWN0dXJlKDApCisgICAgICAgICwgbV9leHBl
Y3RlZFN0cnVjdHVyZSgwKQorICAgICAgICAsIG1fc3RydWN0dXJlSXNQb2x5bW9ycGhpYyhmYWxz
ZSkKKyAgICAgICAgLCBtX29ic2VydmVkQXJyYXlNb2RlcygwKQorICAgIHsKKyAgICB9CisgICAg
CisgICAgQXJyYXlQcm9maWxlKHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0KQorICAgICAgICA6IG1f
Ynl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVPZmZzZXQpCisgICAgICAgICwgbV9sYXN0U2VlblN0cnVj
dHVyZSgwKQorICAgICAgICAsIG1fZXhwZWN0ZWRTdHJ1Y3R1cmUoMCkKKyAgICAgICAgLCBtX3N0
cnVjdHVyZUlzUG9seW1vcnBoaWMoZmFsc2UpCisgICAgICAgICwgbV9vYnNlcnZlZEFycmF5TW9k
ZXMoMCkKKyAgICB7CisgICAgfQorICAgIAorICAgIFN0cnVjdHVyZSoqIGFkZHJlc3NPZkxhc3RT
ZWVuU3RydWN0dXJlKCkgeyByZXR1cm4gJm1fbGFzdFNlZW5TdHJ1Y3R1cmU7IH0KKyAgICAKKyAg
ICB2b2lkIG9ic2VydmVTdHJ1Y3R1cmUoU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgeworICAg
ICAgICBtX2xhc3RTZWVuU3RydWN0dXJlID0gc3RydWN0dXJlOworICAgIH0KKyAgICAKKyAgICB2
b2lkIGNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbihPcGVyYXRpb25JblByb2dyZXNzIG9wZXJhdGlv
biA9IE5vT3BlcmF0aW9uKTsKKyAgICAKKyAgICBTdHJ1Y3R1cmUqIGV4cGVjdGVkU3RydWN0dXJl
KCkgY29uc3QgeyByZXR1cm4gbV9leHBlY3RlZFN0cnVjdHVyZTsgfQorICAgIGJvb2wgc3RydWN0
dXJlSXNQb2x5bW9ycGhpYygpIGNvbnN0IHsgcmV0dXJuIG1fc3RydWN0dXJlSXNQb2x5bW9ycGhp
YzsgfQorICAgIGJvb2wgaGFzRGVmaW5pdGVTdHJ1Y3R1cmUoKSBjb25zdAorICAgIHsKKyAgICAg
ICAgcmV0dXJuICFzdHJ1Y3R1cmVJc1BvbHltb3JwaGljKCkgJiYgbV9leHBlY3RlZFN0cnVjdHVy
ZTsKKyAgICB9CisgICAgQXJyYXlNb2RlcyBvYnNlcnZlZEFycmF5TW9kZXMoKSBjb25zdCB7IHJl
dHVybiBtX29ic2VydmVkQXJyYXlNb2RlczsgfQorICAgIAorcHJpdmF0ZToKKyAgICB1bnNpZ25l
ZCBtX2J5dGVjb2RlT2Zmc2V0OworICAgIFN0cnVjdHVyZSogbV9sYXN0U2VlblN0cnVjdHVyZTsK
KyAgICBTdHJ1Y3R1cmUqIG1fZXhwZWN0ZWRTdHJ1Y3R1cmU7CisgICAgYm9vbCBtX3N0cnVjdHVy
ZUlzUG9seW1vcnBoaWM7CisgICAgQXJyYXlNb2RlcyBtX29ic2VydmVkQXJyYXlNb2RlczsKK307
CisKK3R5cGVkZWYgU2VnbWVudGVkVmVjdG9yPEFycmF5UHJvZmlsZSwgNCwgMD4gQXJyYXlQcm9m
aWxlVmVjdG9yOworCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIEFycmF5UHJvZmls
ZV9oCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2su
Y3BwCShyZXZpc2lvbiAxMjQ0MTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Q29kZUJsb2NrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjc2OCw2ICsyNzY4LDIzIEBAIGJvb2wg
RnVuY3Rpb25Db2RlQmxvY2s6OmppdENvbXBpbGVJbXBsKEUKICNlbmRpZgogCiAjaWYgRU5BQkxF
KFZBTFVFX1BST0ZJTEVSKQorQXJyYXlQcm9maWxlKiBDb2RlQmxvY2s6OmdldEFycmF5UHJvZmls
ZSh1bnNpZ25lZCBieXRlY29kZU9mZnNldCkKK3sKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgbV9hcnJheVByb2ZpbGVzLnNpemUoKTsgKytpKSB7CisgICAgICAgIGlmIChtX2FycmF5UHJv
ZmlsZXNbaV0tPm1fYnl0ZWNvZGVPZmZzZXQgPT0gYnl0ZWNvZGVPZmZzZXQpCisgICAgICAgICAg
ICByZXR1cm4gJm1fYXJyYXlQcm9maWxlc1tpXTsKKyAgICB9CisgICAgcmV0dXJuIDA7Cit9CisK
K0FycmF5UHJvZmlsZSogQ29kZUJsb2NrOjpnZXRPckFkZEFycmF5UHJvZmlsZSh1bnNpZ25lZCBi
eXRlY29kZU9mZnNldCkKK3sKKyAgICBBcnJheVByb2ZpbGUqIHJlc3VsdCA9IGdldEFycmF5UHJv
ZmlsZShieXRlY29kZU9mZnNldCk7CisgICAgaWYgKHJlc3VsdCkKKyAgICAgICAgcmV0dXJuIHJl
c3VsdDsKKyAgICByZXR1cm4gYWRkQXJyYXlQcm9maWxlKGJ5dGVjb2RlT2Zmc2V0KTsKK30KKwog
dm9pZCBDb2RlQmxvY2s6OnVwZGF0ZUFsbFByZWRpY3Rpb25zQW5kQ291bnRMaXZlbmVzcygKICAg
ICBPcGVyYXRpb25JblByb2dyZXNzIG9wZXJhdGlvbiwgdW5zaWduZWQmIG51bWJlck9mTGl2ZU5v
bkFyZ3VtZW50VmFsdWVQcm9maWxlcywgdW5zaWduZWQmIG51bWJlck9mU2FtcGxlc0luUHJvZmls
ZXMpCiB7CkBAIC0yNzkxLDYgKzI4MDgsMTIgQEAgdm9pZCBDb2RlQmxvY2s6OnVwZGF0ZUFsbFBy
ZWRpY3Rpb25zQW5kQwogI2lmIEVOQUJMRShERkdfSklUKQogICAgIG1fbGF6eU9wZXJhbmRWYWx1
ZVByb2ZpbGVzLmNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbnMob3BlcmF0aW9uKTsKICNlbmRpZgor
ICAgIAorICAgIC8vIERvbid0IGNvdW50IHRoZSBhcnJheSBwcm9maWxlcyB0b3dhcmRzIHN0YXRp
c3RpY3MsIHNpbmNlIGVhY2ggYXJyYXkgcHJvZmlsZQorICAgIC8vIHNpdGUgYWxzbyBoYXMgYSB2
YWx1ZSBwcm9maWxlIHNpdGUgLSBzbyB3ZSBhbHJlYWR5IGtub3cgd2hldGhlciBvciBub3QgaXQn
cworICAgIC8vIGxpdmUuCisgICAgZm9yICh1bnNpZ25lZCBpID0gbV9hcnJheVByb2ZpbGVzLnNp
emUoKTsgaS0tOykKKyAgICAgICAgbV9hcnJheVByb2ZpbGVzW2ldLmNvbXB1dGVVcGRhdGVkUHJl
ZGljdGlvbihvcGVyYXRpb24pOwogfQogCiB2b2lkIENvZGVCbG9jazo6dXBkYXRlQWxsUHJlZGlj
dGlvbnMoT3BlcmF0aW9uSW5Qcm9ncmVzcyBvcGVyYXRpb24pCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCShyZXZpc2lvbiAxMjQ0MTEpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgJKHdvcmtpbmcgY29weSkKQEAg
LTMwLDYgKzMwLDcgQEAKICNpZm5kZWYgQ29kZUJsb2NrX2gKICNkZWZpbmUgQ29kZUJsb2NrX2gK
IAorI2luY2x1ZGUgIkFycmF5UHJvZmlsZS5oIgogI2luY2x1ZGUgIkJ5dGVjb2RlQ29udmVudGlv
bnMuaCIKICNpbmNsdWRlICJDYWxsTGlua0luZm8uaCIKICNpbmNsdWRlICJDYWxsUmV0dXJuT2Zm
c2V0VG9CeXRlY29kZU9mZnNldC5oIgpAQCAtNzUxLDggKzc1MiwxOCBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgdW5zaWduZWQgZXhlY3V0aW9uRW50cnlD
b3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fZXhlY3V0aW9uRW50cnlDb3VudDsgfQotI2VuZGlmCiAK
KyAgICAgICAgdW5zaWduZWQgbnVtYmVyT2ZBcnJheVByb2ZpbGVzKCkgY29uc3QgeyByZXR1cm4g
bV9hcnJheVByb2ZpbGVzLnNpemUoKTsgfQorICAgICAgICBjb25zdCBBcnJheVByb2ZpbGVWZWN0
b3ImIGFycmF5UHJvZmlsZXMoKSB7IHJldHVybiBtX2FycmF5UHJvZmlsZXM7IH0KKyAgICAgICAg
QXJyYXlQcm9maWxlKiBhZGRBcnJheVByb2ZpbGUodW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIG1fYXJyYXlQcm9maWxlcy5hcHBlbmQoQXJyYXlQcm9maWxl
KGJ5dGVjb2RlT2Zmc2V0KSk7CisgICAgICAgICAgICByZXR1cm4gJm1fYXJyYXlQcm9maWxlcy5s
YXN0KCk7CisgICAgICAgIH0KKyAgICAgICAgQXJyYXlQcm9maWxlKiBnZXRBcnJheVByb2ZpbGUo
dW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQpOworICAgICAgICBBcnJheVByb2ZpbGUqIGdldE9yQWRk
QXJyYXlQcm9maWxlKHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0KTsKKyNlbmRpZgorICAgICAgICAK
ICAgICAgICAgdW5zaWduZWQgZ2xvYmFsUmVzb2x2ZUluZm9Db3VudCgpIGNvbnN0CiAgICAgICAg
IHsKICNpZiBFTkFCTEUoSklUKSAgICAKQEAgLTEzMzMsNiArMTM0NCw3IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgICAgICBTZWdtZW50ZWRWZWN0b3I8VmFsdWVQcm9maWxlLCA4PiBtX3ZhbHVlUHJv
ZmlsZXM7CiAgICAgICAgIFNlZ21lbnRlZFZlY3RvcjxSYXJlQ2FzZVByb2ZpbGUsIDg+IG1fcmFy
ZUNhc2VQcm9maWxlczsKICAgICAgICAgU2VnbWVudGVkVmVjdG9yPFJhcmVDYXNlUHJvZmlsZSwg
OD4gbV9zcGVjaWFsRmFzdENhc2VQcm9maWxlczsKKyAgICAgICAgQXJyYXlQcm9maWxlVmVjdG9y
IG1fYXJyYXlQcm9maWxlczsKICAgICAgICAgdW5zaWduZWQgbV9leGVjdXRpb25FbnRyeUNvdW50
OwogI2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbnN0cnVj
dGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbnN0
cnVjdGlvbi5oCShyZXZpc2lvbiAxMjQ0MTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvSW5zdHJ1Y3Rpb24uaAkod29ya2luZyBjb3B5KQpAQCAtNDYsNiArNDYsNyBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAvLyBjdXJlbnRseSBhY3R1YWxseSB1c2UgUG9seW1vcnBoaWNBY2Nl
c3NTdHJ1Y3R1cmVMaXN0cywgd2hpY2ggd2Ugc2hvdWxkKS4gIEFueXdheSwgdGhpcyBzZWVtcyBs
aWtlIHRoZSBiZXN0CiAgICAgLy8gc29sdXRpb24gZm9yIG5vdyAtIHdpbGwgbmVlZCB0byBzb21l
dGhpbmcgc21hcnRlciBpZi93aGVuIHdlIGFjdHVhbGx5IHdhbnQgbWl4ZWQtbW9kZSBvcGVyYXRp
b24uCiAKKyAgICBjbGFzcyBBcnJheVByb2ZpbGU7CiAgICAgY2xhc3MgSlNDZWxsOwogICAgIGNs
YXNzIFN0cnVjdHVyZTsKICAgICBjbGFzcyBTdHJ1Y3R1cmVDaGFpbjsKQEAgLTE5MCw2ICsxOTEs
NyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgSW5zdHJ1Y3Rpb24oTExJbnRDYWxsTGlua0lu
Zm8qIGNhbGxMaW5rSW5mbykgeyB1LmNhbGxMaW5rSW5mbyA9IGNhbGxMaW5rSW5mbzsgfQogICAg
ICAgICAKICAgICAgICAgSW5zdHJ1Y3Rpb24oVmFsdWVQcm9maWxlKiBwcm9maWxlKSB7IHUucHJv
ZmlsZSA9IHByb2ZpbGU7IH0KKyAgICAgICAgSW5zdHJ1Y3Rpb24oQXJyYXlQcm9maWxlKiBwcm9m
aWxlKSB7IHUuYXJyYXlQcm9maWxlID0gcHJvZmlsZTsgfQogICAgICAgICAKICAgICAgICAgSW5z
dHJ1Y3Rpb24oV3JpdGVCYXJyaWVyPFVua25vd24+KiByZWdpc3RlclBvaW50ZXIpIHsgdS5yZWdp
c3RlclBvaW50ZXIgPSByZWdpc3RlclBvaW50ZXI7IH0KICAgICAgICAgCkBAIC0yMDUsNiArMjA3
LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICBQcm9wZXJ0eVNsb3Q6OkdldFZhbHVl
RnVuYyBnZXR0ZXJGdW5jOwogICAgICAgICAgICAgTExJbnRDYWxsTGlua0luZm8qIGNhbGxMaW5r
SW5mbzsKICAgICAgICAgICAgIFZhbHVlUHJvZmlsZSogcHJvZmlsZTsKKyAgICAgICAgICAgIEFy
cmF5UHJvZmlsZSogYXJyYXlQcm9maWxlOwogICAgICAgICAgICAgdm9pZCogcG9pbnRlcjsKICAg
ICAgICAgICAgIGJvb2wqIHByZWRpY2F0ZVBvaW50ZXI7CiAgICAgICAgIH0gdTsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PcGNvZGUuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT3Bjb2RlLmgJKHJldmlzaW9uIDEyNDQxMSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PcGNvZGUuaAkod29ya2luZyBjb3B5KQpA
QCAtMTMyLDEwICsxMzIsMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIG1hY3JvKG9wX3B1
dF9ieV9pZF9yZXBsYWNlLCA5KSBcCiAgICAgICAgIG1hY3JvKG9wX3B1dF9ieV9pZF9nZW5lcmlj
LCA5KSBcCiAgICAgICAgIG1hY3JvKG9wX2RlbF9ieV9pZCwgNCkgXAotICAgICAgICBtYWNybyhv
cF9nZXRfYnlfdmFsLCA1KSAvKiBoYXMgdmFsdWUgcHJvZmlsaW5nICovIFwKLSAgICAgICAgbWFj
cm8ob3BfZ2V0X2FyZ3VtZW50X2J5X3ZhbCwgNSkgLyogbXVzdCBiZSB0aGUgc2FtZSBzaXplIGFz
IG9wX2dldF9ieV92YWwgKi8gXAorICAgICAgICBtYWNybyhvcF9nZXRfYnlfdmFsLCA2KSAvKiBo
YXMgdmFsdWUgcHJvZmlsaW5nICovIFwKKyAgICAgICAgbWFjcm8ob3BfZ2V0X2FyZ3VtZW50X2J5
X3ZhbCwgNikgLyogbXVzdCBiZSB0aGUgc2FtZSBzaXplIGFzIG9wX2dldF9ieV92YWwgKi8gXAog
ICAgICAgICBtYWNybyhvcF9nZXRfYnlfcG5hbWUsIDcpIFwKLSAgICAgICAgbWFjcm8ob3BfcHV0
X2J5X3ZhbCwgNCkgXAorICAgICAgICBtYWNybyhvcF9wdXRfYnlfdmFsLCA1KSBcCiAgICAgICAg
IG1hY3JvKG9wX2RlbF9ieV92YWwsIDQpIFwKICAgICAgICAgbWFjcm8ob3BfcHV0X2J5X2luZGV4
LCA0KSBcCiAgICAgICAgIG1hY3JvKG9wX3B1dF9nZXR0ZXJfc2V0dGVyLCA1KSBcCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2Rl
R2VuZXJhdG9yLmNwcAkocmV2aXNpb24gMTI0NDExKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2
NjksMTEgKzE2NjksMTMgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXREZWxl
dAogCiBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEdldEFyZ3VtZW50QnlWYWwo
UmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBiYXNlLCBSZWdpc3RlcklEKiBwcm9wZXJ0eSkK
IHsKKyAgICBBcnJheVByb2ZpbGUqIGFycmF5UHJvZmlsZSA9IG1fY29kZUJsb2NrLT5hZGRBcnJh
eVByb2ZpbGUoaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKTsKICAgICBWYWx1ZVByb2ZpbGUqIHByb2Zp
bGUgPSBlbWl0UHJvZmlsZWRPcGNvZGUob3BfZ2V0X2FyZ3VtZW50X2J5X3ZhbCk7CiAgICAgaW5z
dHJ1Y3Rpb25zKCkuYXBwZW5kKGRzdC0+aW5kZXgoKSk7CiAgICAgQVNTRVJUKGJhc2UtPmluZGV4
KCkgPT0gbV9jb2RlQmxvY2stPmFyZ3VtZW50c1JlZ2lzdGVyKCkpOwogICAgIGluc3RydWN0aW9u
cygpLmFwcGVuZChiYXNlLT5pbmRleCgpKTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQocHJv
cGVydHktPmluZGV4KCkpOworICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChhcnJheVByb2ZpbGUp
OwogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChwcm9maWxlKTsKICAgICByZXR1cm4gZHN0Owog
fQpAQCAtMTY5MywyMCArMTY5NSwyNCBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6
ZW1pdEdldEJ5CiAgICAgICAgICAgICByZXR1cm4gZHN0OwogICAgICAgICB9CiAgICAgfQorICAg
IEFycmF5UHJvZmlsZSogYXJyYXlQcm9maWxlID0gbV9jb2RlQmxvY2stPmFkZEFycmF5UHJvZmls
ZShpbnN0cnVjdGlvbnMoKS5zaXplKCkpOwogICAgIFZhbHVlUHJvZmlsZSogcHJvZmlsZSA9IGVt
aXRQcm9maWxlZE9wY29kZShvcF9nZXRfYnlfdmFsKTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBl
bmQoZHN0LT5pbmRleCgpKTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoYmFzZS0+aW5kZXgo
KSk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHByb3BlcnR5LT5pbmRleCgpKTsKKyAgICBp
bnN0cnVjdGlvbnMoKS5hcHBlbmQoYXJyYXlQcm9maWxlKTsKICAgICBpbnN0cnVjdGlvbnMoKS5h
cHBlbmQocHJvZmlsZSk7CiAgICAgcmV0dXJuIGRzdDsKIH0KIAogUmVnaXN0ZXJJRCogQnl0ZWNv
ZGVHZW5lcmF0b3I6OmVtaXRQdXRCeVZhbChSZWdpc3RlcklEKiBiYXNlLCBSZWdpc3RlcklEKiBw
cm9wZXJ0eSwgUmVnaXN0ZXJJRCogdmFsdWUpCiB7CisgICAgQXJyYXlQcm9maWxlKiBhcnJheVBy
b2ZpbGUgPSBtX2NvZGVCbG9jay0+YWRkQXJyYXlQcm9maWxlKGluc3RydWN0aW9ucygpLnNpemUo
KSk7CiAgICAgZW1pdE9wY29kZShvcF9wdXRfYnlfdmFsKTsKICAgICBpbnN0cnVjdGlvbnMoKS5h
cHBlbmQoYmFzZS0+aW5kZXgoKSk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHByb3BlcnR5
LT5pbmRleCgpKTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQodmFsdWUtPmluZGV4KCkpOwor
ICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChhcnJheVByb2ZpbGUpOwogICAgIHJldHVybiB2YWx1
ZTsKIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdFN0YXRl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0
U3RhdGUuY3BwCShyZXZpc2lvbiAxMjQ0MTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0Fic3RyYWN0U3RhdGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDYsOCArMTA2LDYgQEAg
dm9pZCBBYnN0cmFjdFN0YXRlOjppbml0aWFsaXplKEdyYXBoJiBncgogICAgICAgICBTcGVjdWxh
dGVkVHlwZSBwcmVkaWN0aW9uID0gbm9kZS52YXJpYWJsZUFjY2Vzc0RhdGEoKS0+cHJlZGljdGlv
bigpOwogICAgICAgICBpZiAoaXNJbnQzMlNwZWN1bGF0aW9uKHByZWRpY3Rpb24pKQogICAgICAg
ICAgICAgcm9vdC0+dmFsdWVzQXRIZWFkLmFyZ3VtZW50KGkpLnNldChTcGVjSW50MzIpOwotICAg
ICAgICBlbHNlIGlmIChpc0FycmF5U3BlY3VsYXRpb24ocHJlZGljdGlvbikpCi0gICAgICAgICAg
ICByb290LT52YWx1ZXNBdEhlYWQuYXJndW1lbnQoaSkuc2V0KFNwZWNBcnJheSk7CiAgICAgICAg
IGVsc2UgaWYgKGlzQm9vbGVhblNwZWN1bGF0aW9uKHByZWRpY3Rpb24pKQogICAgICAgICAgICAg
cm9vdC0+dmFsdWVzQXRIZWFkLmFyZ3VtZW50KGkpLnNldChTcGVjQm9vbGVhbik7CiAgICAgICAg
IGVsc2UgaWYgKGlzSW50OEFycmF5U3BlY3VsYXRpb24ocHJlZGljdGlvbikpCkBAIC0yOTAsMTAg
KzI4OCw3IEBAIGJvb2wgQWJzdHJhY3RTdGF0ZTo6ZXhlY3V0ZSh1bnNpZ25lZCBpbmQKICAgICAg
ICAgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGVkVHlwZSA9IG5vZGUudmFyaWFibGVBY2Nlc3NEYXRh
KCktPmFyZ3VtZW50QXdhcmVQcmVkaWN0aW9uKCk7CiAgICAgICAgIGlmIChpc0ludDMyU3BlY3Vs
YXRpb24ocHJlZGljdGVkVHlwZSkpCiAgICAgICAgICAgICBzcGVjdWxhdGVJbnQzMlVuYXJ5KG5v
ZGUpOwotICAgICAgICBlbHNlIGlmIChpc0FycmF5U3BlY3VsYXRpb24ocHJlZGljdGVkVHlwZSkp
IHsKLSAgICAgICAgICAgIG5vZGUuc2V0Q2FuRXhpdCghaXNBcnJheVNwZWN1bGF0aW9uKGZvck5v
ZGUobm9kZS5jaGlsZDEoKSkubV90eXBlKSk7Ci0gICAgICAgICAgICBmb3JOb2RlKG5vZGUuY2hp
bGQxKCkpLmZpbHRlcihTcGVjQXJyYXkpOwotICAgICAgICB9IGVsc2UgaWYgKGlzQ2VsbFNwZWN1
bGF0aW9uKHByZWRpY3RlZFR5cGUpKSB7CisgICAgICAgIGVsc2UgaWYgKGlzQ2VsbFNwZWN1bGF0
aW9uKHByZWRpY3RlZFR5cGUpKSB7CiAgICAgICAgICAgICBub2RlLnNldENhbkV4aXQoIWlzQ2Vs
bFNwZWN1bGF0aW9uKGZvck5vZGUobm9kZS5jaGlsZDEoKSkubV90eXBlKSk7CiAgICAgICAgICAg
ICBmb3JOb2RlKG5vZGUuY2hpbGQxKCkpLmZpbHRlcihTcGVjQ2VsbCk7CiAgICAgICAgIH0gZWxz
ZSBpZiAoaXNCb29sZWFuU3BlY3VsYXRpb24ocHJlZGljdGVkVHlwZSkpCkBAIC05NDMsNyArOTM4
LDcgQEAgYm9vbCBBYnN0cmFjdFN0YXRlOjpleGVjdXRlKHVuc2lnbmVkIGluZAogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgQVNTRVJUKG1fZ3JhcGhbbm9kZS5jaGlsZDEo
KV0uc2hvdWxkU3BlY3VsYXRlQXJyYXkoKSk7Ci0gICAgICAgIGZvck5vZGUobm9kZS5jaGlsZDEo
KSkuZmlsdGVyKFNwZWNBcnJheSk7CisgICAgICAgIGZvck5vZGUobm9kZS5jaGlsZDEoKSkuZmls
dGVyKFNwZWNDZWxsKTsKICAgICAgICAgZm9yTm9kZShub2RlLmNoaWxkMigpKS5maWx0ZXIoU3Bl
Y0ludDMyKTsKICAgICAgICAgZm9yTm9kZShub2RlSW5kZXgpLm1ha2VUb3AoKTsKICAgICAgICAg
YnJlYWs7CkBAIC0xMDU0LDcgKzEwNDksNyBAQCBib29sIEFic3RyYWN0U3RhdGU6OmV4ZWN1dGUo
dW5zaWduZWQgaW5kCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBBU1NF
UlQobV9ncmFwaFtjaGlsZDFdLnNob3VsZFNwZWN1bGF0ZUFycmF5KCkpOwotICAgICAgICBmb3JO
b2RlKGNoaWxkMSkuZmlsdGVyKFNwZWNBcnJheSk7CisgICAgICAgIGZvck5vZGUoY2hpbGQxKS5m
aWx0ZXIoU3BlY0NlbGwpOwogICAgICAgICBmb3JOb2RlKGNoaWxkMikuZmlsdGVyKFNwZWNJbnQz
Mik7CiAgICAgICAgIGlmIChub2RlLm9wKCkgPT0gUHV0QnlWYWxTYWZlKQogICAgICAgICAgICAg
Y2xvYmJlcldvcmxkKG5vZGUuY29kZU9yaWdpbiwgaW5kZXhJbkJsb2NrKTsKQEAgLTEwNjMsMTMg
KzEwNTgsMTMgQEAgYm9vbCBBYnN0cmFjdFN0YXRlOjpleGVjdXRlKHVuc2lnbmVkIGluZAogICAg
ICAgICAgICAgCiAgICAgY2FzZSBBcnJheVB1c2g6CiAgICAgICAgIG5vZGUuc2V0Q2FuRXhpdCh0
cnVlKTsKLSAgICAgICAgZm9yTm9kZShub2RlLmNoaWxkMSgpKS5maWx0ZXIoU3BlY0FycmF5KTsK
KyAgICAgICAgZm9yTm9kZShub2RlLmNoaWxkMSgpKS5maWx0ZXIoU3BlY0NlbGwpOwogICAgICAg
ICBmb3JOb2RlKG5vZGVJbmRleCkuc2V0KFNwZWNOdW1iZXIpOwogICAgICAgICBicmVhazsKICAg
ICAgICAgICAgIAogICAgIGNhc2UgQXJyYXlQb3A6CiAgICAgICAgIG5vZGUuc2V0Q2FuRXhpdCh0
cnVlKTsKLSAgICAgICAgZm9yTm9kZShub2RlLmNoaWxkMSgpKS5maWx0ZXIoU3BlY0FycmF5KTsK
KyAgICAgICAgZm9yTm9kZShub2RlLmNoaWxkMSgpKS5maWx0ZXIoU3BlY0NlbGwpOwogICAgICAg
ICBmb3JOb2RlKG5vZGVJbmRleCkubWFrZVRvcCgpOwogICAgICAgICBicmVhazsKICAgICAgICAg
ICAgIApAQCAtMTM1NCw3ICsxMzQ5LDcgQEAgYm9vbCBBYnN0cmFjdFN0YXRlOjpleGVjdXRlKHVu
c2lnbmVkIGluZAogICAgICAgICAgICAgCiAgICAgY2FzZSBHZXRBcnJheUxlbmd0aDoKICAgICAg
ICAgbm9kZS5zZXRDYW5FeGl0KHRydWUpOwotICAgICAgICBmb3JOb2RlKG5vZGUuY2hpbGQxKCkp
LmZpbHRlcihTcGVjQXJyYXkpOworICAgICAgICBmb3JOb2RlKG5vZGUuY2hpbGQxKCkpLmZpbHRl
cihTcGVjQ2VsbCk7CiAgICAgICAgIGZvck5vZGUobm9kZUluZGV4KS5zZXQoU3BlY0ludDMyKTsK
ICAgICAgICAgYnJlYWs7CiAKQEAgLTE1MTQsNyArMTUwOSw3IEBAIGJvb2wgQWJzdHJhY3RTdGF0
ZTo6ZXhlY3V0ZSh1bnNpZ25lZCBpbmQKICAgICAgICAgICAgIGZvck5vZGUobm9kZUluZGV4KS5j
bGVhcigpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KLSAgICAgICAgZm9yTm9kZShu
b2RlLmNoaWxkMSgpKS5maWx0ZXIoU3BlY0FycmF5KTsKKyAgICAgICAgZm9yTm9kZShub2RlLmNo
aWxkMSgpKS5maWx0ZXIoU3BlY0NlbGwpOwogICAgICAgICBmb3JOb2RlKG5vZGVJbmRleCkuY2xl
YXIoKTsKICAgICAgICAgYnJlYWs7IAogICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCShyZXZpc2lvbiAxMjQ0MTEpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMjE0OSw2ICsyMTQ5LDEwIEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxv
Y2sodW5zaWduZWQKICAgICAgICAgICAgIAogICAgICAgICAgICAgTm9kZUluZGV4IGJhc2UgPSBn
ZXQoY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZCk7CiAgICAgICAgICAgICBOb2RlSW5k
ZXggcHJvcGVydHkgPSBnZXQoY3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFuZCk7CisgICAg
ICAgICAgICBBcnJheVByb2ZpbGUqIHByb2ZpbGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bNF0udS5h
cnJheVByb2ZpbGU7CisgICAgICAgICAgICBwcm9maWxlLT5jb21wdXRlVXBkYXRlZFByZWRpY3Rp
b24oKTsKKyAgICAgICAgICAgIGlmIChwcm9maWxlLT5oYXNEZWZpbml0ZVN0cnVjdHVyZSgpKQor
ICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoQ2hlY2tTdHJ1Y3R1cmUsIE9wSW5mbyhtX2dyYXBo
LmFkZFN0cnVjdHVyZVNldChwcm9maWxlLT5leHBlY3RlZFN0cnVjdHVyZSgpKSksIGJhc2UpOwog
ICAgICAgICAgICAgTm9kZUluZGV4IHByb3BlcnR5U3RvcmFnZSA9IGFkZFRvR3JhcGgoR2V0SW5k
ZXhlZFByb3BlcnR5U3RvcmFnZSwgYmFzZSwgcHJvcGVydHkpOwogICAgICAgICAgICAgTm9kZUlu
ZGV4IGdldEJ5VmFsID0gYWRkVG9HcmFwaChHZXRCeVZhbCwgT3BJbmZvKDApLCBPcEluZm8ocHJl
ZGljdGlvbiksIGJhc2UsIHByb3BlcnR5LCBwcm9wZXJ0eVN0b3JhZ2UpOwogICAgICAgICAgICAg
c2V0KGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQsIGdldEJ5VmFsKTsKQEAgLTIxNjAs
NiArMjE2NCwxMSBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkCiAg
ICAgICAgICAgICBOb2RlSW5kZXggYmFzZSA9IGdldChjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5v
cGVyYW5kKTsKICAgICAgICAgICAgIE5vZGVJbmRleCBwcm9wZXJ0eSA9IGdldChjdXJyZW50SW5z
dHJ1Y3Rpb25bMl0udS5vcGVyYW5kKTsKICAgICAgICAgICAgIE5vZGVJbmRleCB2YWx1ZSA9IGdl
dChjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kKTsKKyAgICAgICAgICAgIAorICAgICAg
ICAgICAgQXJyYXlQcm9maWxlKiBwcm9maWxlID0gY3VycmVudEluc3RydWN0aW9uWzRdLnUuYXJy
YXlQcm9maWxlOworICAgICAgICAgICAgcHJvZmlsZS0+Y29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9u
KCk7CisgICAgICAgICAgICBpZiAocHJvZmlsZS0+aGFzRGVmaW5pdGVTdHJ1Y3R1cmUoKSkKKyAg
ICAgICAgICAgICAgICBhZGRUb0dyYXBoKENoZWNrU3RydWN0dXJlLCBPcEluZm8obV9ncmFwaC5h
ZGRTdHJ1Y3R1cmVTZXQocHJvZmlsZS0+ZXhwZWN0ZWRTdHJ1Y3R1cmUoKSkpLCBiYXNlKTsKIAog
ICAgICAgICAgICAgYm9vbCBtYWtlU2FmZSA9CiAgICAgICAgICAgICAgICAgbV9pbmxpbmVTdGFj
a1RvcC0+bV9wcm9maWxlZEJsb2NrLT5jb3VsZFRha2VTbG93Q2FzZShtX2N1cnJlbnRJbmRleCkK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAkocmV2
aXNpb24gMTI0NDExKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTYsOSArOTYsMjggQEAgcHJpdmF0ZToKICNpZiBERkdf
RU5BQkxFKERFQlVHX1BST1BBR0FUSU9OX1ZFUkJPU0UpCiAgICAgICAgICAgICBkYXRhTG9nKCIg
IEAldSAtPiAlcyIsIG1fY29tcGlsZUluZGV4LCBpc0FycmF5ID8gIkdldEFycmF5TGVuZ3RoIiA6
ICJHZXRTdHJpbmdMZW5ndGgiKTsKICNlbmRpZgotICAgICAgICAgICAgaWYgKGlzQXJyYXkpCisg
ICAgICAgICAgICBpZiAoaXNBcnJheSkgewogICAgICAgICAgICAgICAgIG5vZGUuc2V0T3AoR2V0
QXJyYXlMZW5ndGgpOwotICAgICAgICAgICAgZWxzZSBpZiAoaXNBcmd1bWVudHMpCisgICAgICAg
ICAgICAgICAgQVNTRVJUKG5vZGUuZmxhZ3MoKSAmIE5vZGVNdXN0R2VuZXJhdGUpOworICAgICAg
ICAgICAgICAgIG5vZGUuY2xlYXJGbGFncyhOb2RlTXVzdEdlbmVyYXRlKTsKKyAgICAgICAgICAg
ICAgICBtX2dyYXBoLmRlcmVmKG1fY29tcGlsZUluZGV4KTsKKyAgICAgICAgICAgICAgICAKKyAg
ICAgICAgICAgICAgICBBcnJheVByb2ZpbGUqIGFycmF5UHJvZmlsZSA9IAorICAgICAgICAgICAg
ICAgICAgICBtX2dyYXBoLmJhc2VsaW5lQ29kZUJsb2NrRm9yKG5vZGUuY29kZU9yaWdpbiktPmdl
dEFycmF5UHJvZmlsZSgKKyAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUuY29kZU9yaWdpbi5i
eXRlY29kZUluZGV4KTsKKyAgICAgICAgICAgICAgICBpZiAoIWFycmF5UHJvZmlsZSkKKyAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgYXJyYXlQcm9maWxlLT5jb21w
dXRlVXBkYXRlZFByZWRpY3Rpb24oKTsKKyAgICAgICAgICAgICAgICBpZiAoIWFycmF5UHJvZmls
ZS0+aGFzRGVmaW5pdGVTdHJ1Y3R1cmUoKSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICAgICAgTm9kZSBjaGVja1N0cnVjdHVyZShDaGVja1N0cnVjdHVyZSwgbm9kZS5j
b2RlT3JpZ2luLCBtX2dyYXBoLmFkZFN0cnVjdHVyZVNldChhcnJheVByb2ZpbGUtPmV4cGVjdGVk
U3RydWN0dXJlKCkpLCBub2RlLmNoaWxkMSgpLmluZGV4KCkpOworICAgICAgICAgICAgICAgIGNo
ZWNrU3RydWN0dXJlLnJlZigpOworICAgICAgICAgICAgICAgIE5vZGVJbmRleCBjaGVja1N0cnVj
dHVyZUluZGV4ID0gbV9ncmFwaC5zaXplKCk7CisgICAgICAgICAgICAgICAgbV9ncmFwaC5hcHBl
bmQoY2hlY2tTdHJ1Y3R1cmUpOworICAgICAgICAgICAgICAgIG1faW5zZXJ0aW9uU2V0LmFwcGVu
ZChtX2luZGV4SW5CbG9jaywgY2hlY2tTdHJ1Y3R1cmVJbmRleCk7CisgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoaXNBcmd1bWVudHMpCiAgICAg
ICAgICAgICAgICAgbm9kZS5zZXRPcChHZXRBcmd1bWVudHNMZW5ndGgpOwogICAgICAgICAgICAg
ZWxzZSBpZiAoaXNTdHJpbmcpCiAgICAgICAgICAgICAgICAgbm9kZS5zZXRPcChHZXRTdHJpbmdM
ZW5ndGgpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vz
czMyXzY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFBy
b3BlcnR5QWNjZXNzMzJfNjQuY3BwCShyZXZpc2lvbiAxMjQ0MTEpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0yMDksNyArMjA5LDkgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X2J5X3ZhbChJbnN0cnVjdGlv
bgogICAgIAogICAgIGFkZFNsb3dDYXNlKGJyYW5jaDMyKE5vdEVxdWFsLCByZWdUMywgVHJ1c3Rl
ZEltbTMyKEpTVmFsdWU6OkludDMyVGFnKSkpOwogICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpT
Q2VsbChiYXNlLCByZWdUMSk7Ci0gICAgYWRkU2xvd0Nhc2UoYnJhbmNoUHRyKE5vdEVxdWFsLCBB
ZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OmNsYXNzSW5mb09mZnNldCgpKSwgVHJ1c3RlZEltbVB0cigm
SlNBcnJheTo6c19pbmZvKSkpOworICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpz
dHJ1Y3R1cmVPZmZzZXQoKSksIHJlZ1QxKTsKKyAgICBzdG9yZVB0cihyZWdUMSwgJmN1cnJlbnRJ
bnN0cnVjdGlvbls0XS51LmFycmF5UHJvZmlsZS0+bV9sYXN0U2VlblN0cnVjdHVyZSk7CisgICAg
YWRkU2xvd0Nhc2UoYnJhbmNoUHRyKE5vdEVxdWFsLCBBZGRyZXNzKHJlZ1QxLCBKU0NlbGw6OmNs
YXNzSW5mb09mZnNldCgpKSwgVHJ1c3RlZEltbVB0cigmSlNBcnJheTo6c19pbmZvKSkpOwogICAg
IAogICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgSlNBcnJheTo6c3RvcmFnZU9mZnNldCgpKSwg
cmVnVDMpOwogICAgIGFkZFNsb3dDYXNlKGJyYW5jaDMyKEFib3ZlT3JFcXVhbCwgcmVnVDIsIEFk
ZHJlc3MocmVnVDAsIEpTQXJyYXk6OnZlY3Rvckxlbmd0aE9mZnNldCgpKSkpOwpAQCAtMjY0LDcg
KzI2Niw5IEBAIHZvaWQgSklUOjplbWl0X29wX3B1dF9ieV92YWwoSW5zdHJ1Y3Rpb24KICAgICAK
ICAgICBhZGRTbG93Q2FzZShicmFuY2gzMihOb3RFcXVhbCwgcmVnVDMsIFRydXN0ZWRJbW0zMihK
U1ZhbHVlOjpJbnQzMlRhZykpKTsKICAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwoYmFz
ZSwgcmVnVDEpOwotICAgIGFkZFNsb3dDYXNlKGJyYW5jaFB0cihOb3RFcXVhbCwgQWRkcmVzcyhy
ZWdUMCwgSlNDZWxsOjpjbGFzc0luZm9PZmZzZXQoKSksIFRydXN0ZWRJbW1QdHIoJkpTQXJyYXk6
OnNfaW5mbykpKTsKKyAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6c3RydWN0dXJl
T2Zmc2V0KCkpLCByZWdUMSk7CisgICAgc3RvcmVQdHIocmVnVDEsICZjdXJyZW50SW5zdHJ1Y3Rp
b25bNF0udS5hcnJheVByb2ZpbGUtPm1fbGFzdFNlZW5TdHJ1Y3R1cmUpOworICAgIGFkZFNsb3dD
YXNlKGJyYW5jaFB0cihOb3RFcXVhbCwgQWRkcmVzcyhyZWdUMSwgU3RydWN0dXJlOjpjbGFzc0lu
Zm9PZmZzZXQoKSksIFRydXN0ZWRJbW1QdHIoJkpTQXJyYXk6OnNfaW5mbykpKTsKICAgICBhZGRT
bG93Q2FzZShicmFuY2gzMihBYm92ZU9yRXF1YWwsIHJlZ1QyLCBBZGRyZXNzKHJlZ1QwLCBKU0Fy
cmF5Ojp2ZWN0b3JMZW5ndGhPZmZzZXQoKSkpKTsKIAogICAgIGVtaXRXcml0ZUJhcnJpZXIocmVn
VDAsIHJlZ1QxLCByZWdUMSwgcmVnVDMsIFVuY29uZGl0aW9uYWxXcml0ZUJhcnJpZXIsIFdyaXRl
QmFycmllckZvclByb3BlcnR5QWNjZXNzKTsKQEAgLTYwOCw3ICs2MTIsOSBAQCB2b2lkIEpJVDo6
cHJpdmF0ZUNvbXBpbGVQYXRjaEdldEFycmF5TGVuCiAgICAgLy8gcmVnVDAgaG9sZHMgYSBKU0Nl
bGwqCiAgICAgCiAgICAgLy8gQ2hlY2sgZm9yIGFycmF5Ci0gICAgSnVtcCBmYWlsdXJlQ2FzZXMx
ID0gYnJhbmNoUHRyKE5vdEVxdWFsLCBBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OmNsYXNzSW5mb09m
ZnNldCgpKSwgVHJ1c3RlZEltbVB0cigmSlNBcnJheTo6c19pbmZvKSk7CisgICAgbG9hZFB0cihB
ZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgcmVnVDIpOworICAgIHN0
b3JlUHRyKHJlZ1QyLCAmbV9jb2RlQmxvY2stPmdldE9yQWRkQXJyYXlQcm9maWxlKHN0dWJJbmZv
LmJ5dGVjb2RlSW5kZXgpLT5tX2xhc3RTZWVuU3RydWN0dXJlKTsKKyAgICBKdW1wIGZhaWx1cmVD
YXNlczEgPSBicmFuY2hQdHIoTm90RXF1YWwsIEFkZHJlc3MocmVnVDIsIFN0cnVjdHVyZTo6Y2xh
c3NJbmZvT2Zmc2V0KCkpLCBUcnVzdGVkSW1tUHRyKCZKU0FycmF5OjpzX2luZm8pKTsKICAgICAK
ICAgICAvLyBDaGVja3Mgb3V0IG9rYXkhIC0gZ2V0IHRoZSBsZW5ndGggZnJvbSB0aGUgc3RvcmFn
ZQogICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgSlNBcnJheTo6c3RvcmFnZU9mZnNldCgpKSwg
cmVnVDIpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vz
cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0
eUFjY2Vzcy5jcHAJKHJldmlzaW9uIDEyNDQxMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTAsNyArMTEwLDkg
QEAgdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X2J5X3ZhbChJbnN0cnVjdGlvbgogICAgIHplcm9FeHRl
bmQzMlRvUHRyKHJlZ1QxLCByZWdUMSk7CiAKICAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0Nl
bGwocmVnVDAsIGJhc2UpOwotICAgIGFkZFNsb3dDYXNlKGJyYW5jaFB0cihOb3RFcXVhbCwgQWRk
cmVzcyhyZWdUMCwgSlNDZWxsOjpjbGFzc0luZm9PZmZzZXQoKSksIFRydXN0ZWRJbW1QdHIoJkpT
QXJyYXk6OnNfaW5mbykpKTsKKyAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6c3Ry
dWN0dXJlT2Zmc2V0KCkpLCByZWdUMik7CisgICAgc3RvcmVQdHIocmVnVDIsICZjdXJyZW50SW5z
dHJ1Y3Rpb25bNF0udS5hcnJheVByb2ZpbGUtPm1fbGFzdFNlZW5TdHJ1Y3R1cmUpOworICAgIGFk
ZFNsb3dDYXNlKGJyYW5jaFB0cihOb3RFcXVhbCwgQWRkcmVzcyhyZWdUMiwgU3RydWN0dXJlOjpj
bGFzc0luZm9PZmZzZXQoKSksIFRydXN0ZWRJbW1QdHIoJkpTQXJyYXk6OnNfaW5mbykpKTsKIAog
ICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgSlNBcnJheTo6c3RvcmFnZU9mZnNldCgpKSwgcmVn
VDIpOwogICAgIGFkZFNsb3dDYXNlKGJyYW5jaDMyKEFib3ZlT3JFcXVhbCwgcmVnVDEsIEFkZHJl
c3MocmVnVDAsIEpTQXJyYXk6OnZlY3Rvckxlbmd0aE9mZnNldCgpKSkpOwpAQCAtMjMxLDcgKzIz
Myw5IEBAIHZvaWQgSklUOjplbWl0X29wX3B1dF9ieV92YWwoSW5zdHJ1Y3Rpb24KICAgICAvLyBT
ZWUgY29tbWVudCBpbiBvcF9nZXRfYnlfdmFsLgogICAgIHplcm9FeHRlbmQzMlRvUHRyKHJlZ1Qx
LCByZWdUMSk7CiAgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKHJlZ1QwLCBiYXNlKTsK
LSAgICBhZGRTbG93Q2FzZShicmFuY2hQdHIoTm90RXF1YWwsIEFkZHJlc3MocmVnVDAsIEpTQ2Vs
bDo6Y2xhc3NJbmZvT2Zmc2V0KCkpLCBUcnVzdGVkSW1tUHRyKCZKU0FycmF5OjpzX2luZm8pKSk7
CisgICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwg
cmVnVDIpOworICAgIHN0b3JlUHRyKHJlZ1QyLCAmY3VycmVudEluc3RydWN0aW9uWzRdLnUuYXJy
YXlQcm9maWxlLT5tX2xhc3RTZWVuU3RydWN0dXJlKTsKKyAgICBhZGRTbG93Q2FzZShicmFuY2hQ
dHIoTm90RXF1YWwsIEFkZHJlc3MocmVnVDIsIEpTQ2VsbDo6Y2xhc3NJbmZvT2Zmc2V0KCkpLCBU
cnVzdGVkSW1tUHRyKCZKU0FycmF5OjpzX2luZm8pKSk7CiAgICAgYWRkU2xvd0Nhc2UoYnJhbmNo
MzIoQWJvdmVPckVxdWFsLCByZWdUMSwgQWRkcmVzcyhyZWdUMCwgSlNBcnJheTo6dmVjdG9yTGVu
Z3RoT2Zmc2V0KCkpKSk7CiAKICAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDAsIEpTQXJyYXk6OnN0
b3JhZ2VPZmZzZXQoKSksIHJlZ1QyKTsKQEAgLTY0NSw3ICs2NDksOSBAQCB2b2lkIEpJVDo6cHJp
dmF0ZUNvbXBpbGVQYXRjaEdldEFycmF5TGVuCiAgICAgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJ
bmZvID0gJm1fY29kZUJsb2NrLT5nZXRTdHViSW5mbyhyZXR1cm5BZGRyZXNzKTsKIAogICAgIC8v
IENoZWNrIGVheCBpcyBhbiBhcnJheQotICAgIEp1bXAgZmFpbHVyZUNhc2VzMSA9IGJyYW5jaFB0
cihOb3RFcXVhbCwgQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpjbGFzc0luZm9PZmZzZXQoKSksIFRy
dXN0ZWRJbW1QdHIoJkpTQXJyYXk6OnNfaW5mbykpOworICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdU
MCwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHJlZ1QzKTsKKyAgICBzdG9yZVB0cihyZWdU
MywgJm1fY29kZUJsb2NrLT5nZXRPckFkZEFycmF5UHJvZmlsZShzdHViSW5mby5ieXRlY29kZUlu
ZGV4KS0+bV9sYXN0U2VlblN0cnVjdHVyZSk7CisgICAgSnVtcCBmYWlsdXJlQ2FzZXMxID0gYnJh
bmNoUHRyKE5vdEVxdWFsLCBBZGRyZXNzKHJlZ1QzLCBTdHJ1Y3R1cmU6OmNsYXNzSW5mb09mZnNl
dCgpKSwgVHJ1c3RlZEltbVB0cigmSlNBcnJheTo6c19pbmZvKSk7CiAKICAgICAvLyBDaGVja3Mg
b3V0IG9rYXkhIC0gZ2V0IHRoZSBsZW5ndGggZnJvbSB0aGUgc3RvcmFnZQogICAgIGxvYWRQdHIo
QWRkcmVzcyhyZWdUMCwgSlNBcnJheTo6c3RvcmFnZU9mZnNldCgpKSwgcmVnVDMpOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJw
cmV0ZXIzMl82NC5hc20JKHJldmlzaW9uIDEyNDQxMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCSh3b3JraW5nIGNvcHkpCkBAIC0x
MjU1LDE0ICsxMjU1LDE3IEBAIF9sbGludF9vcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWxf
b3UKIAogX2xsaW50X29wX2dldF9ieV92YWw6CiAgICAgdHJhY2VFeGVjdXRpb24oKQotICAgIGxv
YWRwIENvZGVCbG9ja1tjZnJdLCB0MQogICAgIGxvYWRpIDhbUENdLCB0MgogICAgIGxvYWRpIDEy
W1BDXSwgdDMKLSAgICBsb2FkcCBDb2RlQmxvY2s6Om1fZ2xvYmFsRGF0YVt0MV0sIHQxCiAgICAg
bG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQodDIsIENlbGxUYWcsIHQwLCAub3BHZXRCeVZh
bFNsb3cpCi0gICAgbG9hZHAgSlNHbG9iYWxEYXRhOjpqc0FycmF5Q2xhc3NJbmZvW3QxXSwgdDIK
ICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZCh0MywgSW50MzJUYWcsIHQxLCAub3BH
ZXRCeVZhbFNsb3cpCi0gICAgYnBuZXEgW3QwXSwgdDIsIC5vcEdldEJ5VmFsU2xvdworICAgIGxv
YWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MworICAgIGxvYWRwIDE2W1BDXSwgdDIKKyAg
ICBzdG9yZXAgdDMsIEFycmF5UHJvZmlsZTo6bV9sYXN0U2VlblN0cnVjdHVyZVt0Ml0KKyAgICBs
b2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDIKKyAgICBsb2FkcCBDb2RlQmxvY2s6Om1fZ2xvYmFsRGF0
YVt0Ml0sIHQyCisgICAgbG9hZHAgSlNHbG9iYWxEYXRhOjpqc0FycmF5Q2xhc3NJbmZvW3QyXSwg
dDIKKyAgICBicG5lcSBTdHJ1Y3R1cmU6Om1fY2xhc3NJbmZvW3QzXSwgdDIsIC5vcEdldEJ5VmFs
U2xvdwogICAgIGxvYWRwIEpTQXJyYXk6Om1fc3RvcmFnZVt0MF0sIHQzCiAgICAgYmlhZXEgdDEs
IEpTQXJyYXk6Om1fdmVjdG9yTGVuZ3RoW3QwXSwgLm9wR2V0QnlWYWxTbG93CiAgICAgbG9hZGkg
NFtQQ10sIHQwCkBAIC0xMjcxLDE2ICsxMjc0LDE4IEBAIF9sbGludF9vcF9nZXRfYnlfdmFsOgog
ICAgIGJpZXEgdDIsIEVtcHR5VmFsdWVUYWcsIC5vcEdldEJ5VmFsU2xvdwogICAgIHN0b3JlaSB0
MiwgVGFnT2Zmc2V0W2NmciwgdDAsIDhdCiAgICAgc3RvcmVpIHQxLCBQYXlsb2FkT2Zmc2V0W2Nm
ciwgdDAsIDhdCi0gICAgbG9hZGkgMTZbUENdLCB0MAorICAgIGxvYWRpIDIwW1BDXSwgdDAKICAg
ICB2YWx1ZVByb2ZpbGUodDIsIHQxLCB0MCkKLSAgICBkaXNwYXRjaCg1KQorICAgIGRpc3BhdGNo
KDYpCiAKIC5vcEdldEJ5VmFsU2xvdzoKICAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0
aF9nZXRfYnlfdmFsKQotICAgIGRpc3BhdGNoKDUpCisgICAgZGlzcGF0Y2goNikKIAogCiBfbGxp
bnRfb3BfZ2V0X2FyZ3VtZW50X2J5X3ZhbDoKKyAgICAjIEZJWE1FOiBBdCBzb21lIHBvaW50IHdl
IHNob3VsZCBhcnJheSBwcm9maWxlIHRoaXMuIFJpZ2h0IG5vdyBpdCBpc24ndCBuZWNlc3NhcnkK
KyAgICAjIHNpbmNlIHRoZSBERkcgd2lsbCBuZXZlciB0dXJuIGEgZ2V0X2FyZ3VtZW50X2J5X3Zh
bCBpbnRvIGEgR2V0QnlWYWwuCiAgICAgdHJhY2VFeGVjdXRpb24oKQogICAgIGxvYWRpIDhbUENd
LCB0MAogICAgIGxvYWRpIDEyW1BDXSwgdDEKQEAgLTEyOTMsMTUgKzEyOTgsMTUgQEAgX2xsaW50
X29wX2dldF9hcmd1bWVudF9ieV92YWw6CiAgICAgbG9hZGkgNFtQQ10sIHQzCiAgICAgbG9hZGkg
VGhpc0FyZ3VtZW50T2Zmc2V0ICsgVGFnT2Zmc2V0W2NmciwgdDIsIDhdLCB0MAogICAgIGxvYWRp
IFRoaXNBcmd1bWVudE9mZnNldCArIFBheWxvYWRPZmZzZXRbY2ZyLCB0MiwgOF0sIHQxCi0gICAg
bG9hZGkgMTZbUENdLCB0MgorICAgIGxvYWRpIDIwW1BDXSwgdDIKICAgICBzdG9yZWkgdDAsIFRh
Z09mZnNldFtjZnIsIHQzLCA4XQogICAgIHN0b3JlaSB0MSwgUGF5bG9hZE9mZnNldFtjZnIsIHQz
LCA4XQogICAgIHZhbHVlUHJvZmlsZSh0MCwgdDEsIHQyKQotICAgIGRpc3BhdGNoKDUpCisgICAg
ZGlzcGF0Y2goNikKIAogLm9wR2V0QXJndW1lbnRCeVZhbFNsb3c6CiAgICAgY2FsbFNsb3dQYXRo
KF9sbGludF9zbG93X3BhdGhfZ2V0X2FyZ3VtZW50X2J5X3ZhbCkKLSAgICBkaXNwYXRjaCg1KQor
ICAgIGRpc3BhdGNoKDYpCiAKIAogX2xsaW50X29wX2dldF9ieV9wbmFtZToKQEAgLTEzMzgsMTAg
KzEzNDMsMTMgQEAgX2xsaW50X29wX3B1dF9ieV92YWw6CiAgICAgbG9hZENvbnN0YW50T3JWYXJp
YWJsZVBheWxvYWQodDAsIENlbGxUYWcsIHQxLCAub3BQdXRCeVZhbFNsb3cpCiAgICAgbG9hZGkg
OFtQQ10sIHQwCiAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQodDAsIEludDMyVGFn
LCB0MiwgLm9wUHV0QnlWYWxTbG93KQorICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDFd
LCB0MworICAgIGxvYWRwIDE2W1BDXSwgdDAKKyAgICBzdG9yZXAgdDMsIEFycmF5UHJvZmlsZTo6
bV9sYXN0U2VlblN0cnVjdHVyZVt0MF0KICAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDAKICAg
ICBsb2FkcCBDb2RlQmxvY2s6Om1fZ2xvYmFsRGF0YVt0MF0sIHQwCiAgICAgbG9hZHAgSlNHbG9i
YWxEYXRhOjpqc0FycmF5Q2xhc3NJbmZvW3QwXSwgdDAKLSAgICBicG5lcSBbdDFdLCB0MCwgLm9w
UHV0QnlWYWxTbG93CisgICAgYnBuZXEgU3RydWN0dXJlOjptX2NsYXNzSW5mb1t0M10sIHQwLCAu
b3BQdXRCeVZhbFNsb3cKICAgICBiaWFlcSB0MiwgSlNBcnJheTo6bV92ZWN0b3JMZW5ndGhbdDFd
LCAub3BQdXRCeVZhbFNsb3cKICAgICBsb2FkcCBKU0FycmF5OjptX3N0b3JhZ2VbdDFdLCB0MAog
ICAgIGJpZXEgQXJyYXlTdG9yYWdlOjptX3ZlY3RvciArIFRhZ09mZnNldFt0MCwgdDIsIDhdLCBF
bXB0eVZhbHVlVGFnLCAub3BQdXRCeVZhbEVtcHR5CkBAIC0xMzUxLDcgKzEzNTksNyBAQCBfbGxp
bnRfb3BfcHV0X2J5X3ZhbDoKICAgICB3cml0ZUJhcnJpZXIodDEsIHQzKQogICAgIHN0b3JlaSB0
MSwgQXJyYXlTdG9yYWdlOjptX3ZlY3RvciArIFRhZ09mZnNldFt0MCwgdDIsIDhdCiAgICAgc3Rv
cmVpIHQzLCBBcnJheVN0b3JhZ2U6Om1fdmVjdG9yICsgUGF5bG9hZE9mZnNldFt0MCwgdDIsIDhd
Ci0gICAgZGlzcGF0Y2goNCkKKyAgICBkaXNwYXRjaCg1KQogCiAub3BQdXRCeVZhbEVtcHR5Ogog
ICAgIGFkZGkgMSwgQXJyYXlTdG9yYWdlOjptX251bVZhbHVlc0luVmVjdG9yW3QwXQpAQCAtMTM2
Miw3ICsxMzcwLDcgQEAgX2xsaW50X29wX3B1dF9ieV92YWw6CiAKIC5vcFB1dEJ5VmFsU2xvdzoK
ICAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9wdXRfYnlfdmFsKQotICAgIGRpc3Bh
dGNoKDQpCisgICAgZGlzcGF0Y2goNSkKIAogCiBfbGxpbnRfb3BfbG9vcDoKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQu
YXNtCShyZXZpc2lvbiAxMjQ0MTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93
TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQkod29ya2luZyBjb3B5KQpAQCAtMTA5OSwzMSArMTA5OSwz
NiBAQCBfbGxpbnRfb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFsX291CiAKIF9sbGludF9v
cF9nZXRfYnlfdmFsOgogICAgIHRyYWNlRXhlY3V0aW9uKCkKLSAgICBsb2FkcCBDb2RlQmxvY2tb
Y2ZyXSwgdDEKICAgICBsb2FkaXMgMTZbUEIsIFBDLCA4XSwgdDIKICAgICBsb2FkaXMgMjRbUEIs
IFBDLCA4XSwgdDMKLSAgICBsb2FkcCBDb2RlQmxvY2s6Om1fZ2xvYmFsRGF0YVt0MV0sIHQxCiAg
ICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZUNlbGwodDIsIHQwLCAub3BHZXRCeVZhbFNsb3cpCi0g
ICAgbG9hZHAgSlNHbG9iYWxEYXRhOjpqc0FycmF5Q2xhc3NJbmZvW3QxXSwgdDIKICAgICBsb2Fk
Q29uc3RhbnRPclZhcmlhYmxlSW50MzIodDMsIHQxLCAub3BHZXRCeVZhbFNsb3cpCiAgICAgc3hp
MnAgdDEsIHQxCi0gICAgYnBuZXEgW3QwXSwgdDIsIC5vcEdldEJ5VmFsU2xvdworICAgIGxvYWRw
IEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MworICAgIGxvYWRwIDMyW1BCLCBQQywgOF0sIHQy
CisgICAgc3RvcmVwIHQzLCBBcnJheVByb2ZpbGU6Om1fbGFzdFNlZW5TdHJ1Y3R1cmVbdDJdCisg
ICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHQyCisgICAgbG9hZHAgQ29kZUJsb2NrOjptX2dsb2Jh
bERhdGFbdDJdLCB0MgorICAgIGxvYWRwIEpTR2xvYmFsRGF0YTo6anNBcnJheUNsYXNzSW5mb1t0
Ml0sIHQyCisgICAgYnBuZXEgU3RydWN0dXJlOjptX2NsYXNzSW5mb1t0M10sIHQyLCAub3BHZXRC
eVZhbFNsb3cKICAgICBsb2FkcCBKU0FycmF5OjptX3N0b3JhZ2VbdDBdLCB0MwogICAgIGJpYWVx
IHQxLCBKU0FycmF5OjptX3ZlY3Rvckxlbmd0aFt0MF0sIC5vcEdldEJ5VmFsU2xvdwogICAgIGxv
YWRpcyA4W1BCLCBQQywgOF0sIHQwCiAgICAgbG9hZHAgQXJyYXlTdG9yYWdlOjptX3ZlY3Rvclt0
MywgdDEsIDhdLCB0MgogICAgIGJ0cHogdDIsIC5vcEdldEJ5VmFsU2xvdwogICAgIHN0b3JlcCB0
MiwgW2NmciwgdDAsIDhdCi0gICAgbG9hZHAgMzJbUEIsIFBDLCA4XSwgdDAKKyAgICBsb2FkcCA0
MFtQQiwgUEMsIDhdLCB0MAogICAgIHZhbHVlUHJvZmlsZSh0MiwgdDApCi0gICAgZGlzcGF0Y2go
NSkKKyAgICBkaXNwYXRjaCg2KQogCiAub3BHZXRCeVZhbFNsb3c6CiAgICAgY2FsbFNsb3dQYXRo
KF9sbGludF9zbG93X3BhdGhfZ2V0X2J5X3ZhbCkKLSAgICBkaXNwYXRjaCg1KQorICAgIGRpc3Bh
dGNoKDYpCiAKIAogX2xsaW50X29wX2dldF9hcmd1bWVudF9ieV92YWw6CisgICAgIyBGSVhNRTog
QXQgc29tZSBwb2ludCB3ZSBzaG91bGQgYXJyYXkgcHJvZmlsZSB0aGlzLiBSaWdodCBub3cgaXQg
aXNuJ3QgbmVjZXNzYXJ5CisgICAgIyBzaW5jZSB0aGUgREZHIHdpbGwgbmV2ZXIgdHVybiBhIGdl
dF9hcmd1bWVudF9ieV92YWwgaW50byBhIEdldEJ5VmFsLgogICAgIHRyYWNlRXhlY3V0aW9uKCkK
ICAgICBsb2FkaXMgMTZbUEIsIFBDLCA4XSwgdDAKICAgICBsb2FkaXMgMjRbUEIsIFBDLCA4XSwg
dDEKQEAgLTExMzksMTEgKzExNDQsMTEgQEAgX2xsaW50X29wX2dldF9hcmd1bWVudF9ieV92YWw6
CiAgICAgbG9hZHAgVGhpc0FyZ3VtZW50T2Zmc2V0W2NmciwgdDIsIDhdLCB0MAogICAgIHN0b3Jl
cCB0MCwgW2NmciwgdDMsIDhdCiAgICAgdmFsdWVQcm9maWxlKHQwLCB0MSkKLSAgICBkaXNwYXRj
aCg1KQorICAgIGRpc3BhdGNoKDYpCiAKIC5vcEdldEFyZ3VtZW50QnlWYWxTbG93OgogICAgIGNh
bGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX2dldF9hcmd1bWVudF9ieV92YWwpCi0gICAgZGlz
cGF0Y2goNSkKKyAgICBkaXNwYXRjaCg2KQogCiAKIF9sbGludF9vcF9nZXRfYnlfcG5hbWU6CkBA
IC0xMTgyLDEwICsxMTg3LDEzIEBAIF9sbGludF9vcF9wdXRfYnlfdmFsOgogICAgIGxvYWRpcyAx
NltQQiwgUEMsIDhdLCB0MAogICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVJbnQzMih0MCwgdDIs
IC5vcFB1dEJ5VmFsU2xvdykKICAgICBzeGkycCB0MiwgdDIKKyAgICBsb2FkcCBKU0NlbGw6Om1f
c3RydWN0dXJlW3QxXSwgdDMKKyAgICBsb2FkcCAzMltQQiwgUEMsIDhdLCB0MAorICAgIHN0b3Jl
cCB0MywgQXJyYXlQcm9maWxlOjptX2xhc3RTZWVuU3RydWN0dXJlW3QwXQogICAgIGxvYWRwIENv
ZGVCbG9ja1tjZnJdLCB0MAogICAgIGxvYWRwIENvZGVCbG9jazo6bV9nbG9iYWxEYXRhW3QwXSwg
dDAKICAgICBsb2FkcCBKU0dsb2JhbERhdGE6OmpzQXJyYXlDbGFzc0luZm9bdDBdLCB0MAotICAg
IGJwbmVxIFt0MV0sIHQwLCAub3BQdXRCeVZhbFNsb3cKKyAgICBicG5lcSBTdHJ1Y3R1cmU6Om1f
Y2xhc3NJbmZvW3QzXSwgdDAsIC5vcFB1dEJ5VmFsU2xvdwogICAgIGJpYWVxIHQyLCBKU0FycmF5
OjptX3ZlY3Rvckxlbmd0aFt0MV0sIC5vcFB1dEJ5VmFsU2xvdwogICAgIGxvYWRwIEpTQXJyYXk6
Om1fc3RvcmFnZVt0MV0sIHQwCiAgICAgYnRweiBBcnJheVN0b3JhZ2U6Om1fdmVjdG9yW3QwLCB0
MiwgOF0sIC5vcFB1dEJ5VmFsRW1wdHkKQEAgLTExOTQsNyArMTIwMiw3IEBAIF9sbGludF9vcF9w
dXRfYnlfdmFsOgogICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDMsIHQxKQogICAgIHdyaXRl
QmFycmllcih0MSkKICAgICBzdG9yZXAgdDEsIEFycmF5U3RvcmFnZTo6bV92ZWN0b3JbdDAsIHQy
LCA4XQotICAgIGRpc3BhdGNoKDQpCisgICAgZGlzcGF0Y2goNSkKIAogLm9wUHV0QnlWYWxFbXB0
eToKICAgICBhZGRpIDEsIEFycmF5U3RvcmFnZTo6bV9udW1WYWx1ZXNJblZlY3Rvclt0MF0KQEAg
LTEyMDUsNyArMTIxMyw3IEBAIF9sbGludF9vcF9wdXRfYnlfdmFsOgogCiAub3BQdXRCeVZhbFNs
b3c6CiAgICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfcHV0X2J5X3ZhbCkKLSAgICBk
aXNwYXRjaCg0KQorICAgIGRpc3BhdGNoKDUpCiAKIAogX2xsaW50X29wX2xvb3A6CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaAkocmV2aXNpb24gMTI0NDEx
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTMyMiw2ICszMjIsMTEgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHsKICAg
ICAgICAgICAgIHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoU3RydWN0dXJlLCBtX3R5cGVJbmZvKSAr
IFR5cGVJbmZvOjp0eXBlT2Zmc2V0KCk7CiAgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHN0
YXRpYyBwdHJkaWZmX3QgY2xhc3NJbmZvT2Zmc2V0KCkKKyAgICAgICAgeworICAgICAgICAgICAg
cmV0dXJuIE9CSkVDVF9PRkZTRVRPRihTdHJ1Y3R1cmUsIG1fY2xhc3NJbmZvKTsKKyAgICAgICAg
fQogCiAgICAgICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0dsb2JhbERh
dGEmKTsKICAgICAgICAgCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>158235</attachid>
            <date>2012-08-13 23:57:06 -0700</date>
            <delta_ts>2012-08-14 18:57:34 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>arraystruct_patch_3.diff</filename>
            <type>text/plain</type>
            <size>73237</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTI1NTA5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDk5IEBA
CisyMDEyLTA4LTEzICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
QXJyYXkgY2hlY2tzIHNob3VsZCB1c2UgdGhlIHN0cnVjdHVyZSwgbm90IHRoZSBjbGFzcyBpbmZv
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MzE1MAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgY2hh
bmdlcyBhbGwgYXJyYXkgY2hlY2tzIHVzZWQgaW4gYXJyYXkgYWNjZXNzZXMgKGdldCwgcHV0LCBn
ZXQgbGVuZ3RoLAorICAgICAgICBwdXNoLCBwb3ApIHRvIHVzZSB0aGUgc3RydWN0dXJlLCBub3Qg
dGhlIGNsYXNzIGluZm8uIEFkZGl0aW9uYWxseSwgdGhlc2UKKyAgICAgICAgY2hlY2tzIGluIHRo
ZSBMTEludCBhbmQgYmFzZWxpbmUgSklUIHJlY29yZCB0aGUgc3RydWN0dXJlIGluIGFuIEFycmF5
UHJvZmlsZSwKKyAgICAgICAgc28gdGhhdCB0aGUgREZHIGNhbiBrbm93IGV4YWN0bHkgd2hhdCBz
dHJ1Y3R1cmUgdG8gY2hlY2sgZm9yLgorICAgICAgICAKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4
dDoKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOgorICAgICAgICAqIEphdmFTY3JpcHRD
b3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2o6CisgICAgICAg
ICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBU
YXJnZXQucHJpOgorICAgICAgICAqIGJ5dGVjb2RlL0FycmF5UHJvZmlsZS5jcHA6IEFkZGVkLgor
ICAgICAgICAoSlNDKToKKyAgICAgICAgKEpTQzo6QXJyYXlQcm9maWxlOjpjb21wdXRlVXBkYXRl
ZFByZWRpY3Rpb24pOgorICAgICAgICAqIGJ5dGVjb2RlL0FycmF5UHJvZmlsZS5oOiBBZGRlZC4K
KyAgICAgICAgKEpTQyk6CisgICAgICAgIChKU0M6OmFycmF5TW9kZUZyb21TdHJ1Y3R1cmUpOgor
ICAgICAgICAoQXJyYXlQcm9maWxlKToKKyAgICAgICAgKEpTQzo6QXJyYXlQcm9maWxlOjpBcnJh
eVByb2ZpbGUpOgorICAgICAgICAoSlNDOjpBcnJheVByb2ZpbGU6OmJ5dGVjb2RlT2Zmc2V0KToK
KyAgICAgICAgKEpTQzo6QXJyYXlQcm9maWxlOjphZGRyZXNzT2ZMYXN0U2VlblN0cnVjdHVyZSk6
CisgICAgICAgIChKU0M6OkFycmF5UHJvZmlsZTo6b2JzZXJ2ZVN0cnVjdHVyZSk6CisgICAgICAg
IChKU0M6OkFycmF5UHJvZmlsZTo6ZXhwZWN0ZWRTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpB
cnJheVByb2ZpbGU6OnN0cnVjdHVyZUlzUG9seW1vcnBoaWMpOgorICAgICAgICAoSlNDOjpBcnJh
eVByb2ZpbGU6Omhhc0RlZmluaXRlU3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6QXJyYXlQcm9m
aWxlOjpvYnNlcnZlZEFycmF5TW9kZXMpOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5j
cHA6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6ZHVtcCk6CisgICAgICAgIChKU0M6OkNvZGVC
bG9jazo6Z2V0QXJyYXlQcm9maWxlKToKKyAgICAgICAgKEpTQyk6CisgICAgICAgIChKU0M6OkNv
ZGVCbG9jazo6Z2V0T3JBZGRBcnJheVByb2ZpbGUpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6
OnVwZGF0ZUFsbFByZWRpY3Rpb25zQW5kQ291bnRMaXZlbmVzcyk6CisgICAgICAgICogYnl0ZWNv
ZGUvQ29kZUJsb2NrLmg6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6ZXhlY3V0aW9uRW50cnlD
b3VudCk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6bnVtYmVyT2ZBcnJheVByb2ZpbGVzKToK
KyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjphcnJheVByb2ZpbGVzKToKKyAgICAgICAgKEpTQzo6
Q29kZUJsb2NrOjphZGRBcnJheVByb2ZpbGUpOgorICAgICAgICAoQ29kZUJsb2NrKToKKyAgICAg
ICAgKiBieXRlY29kZS9JbnN0cnVjdGlvbi5oOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKEpT
Qzo6SW5zdHJ1Y3Rpb246Okluc3RydWN0aW9uKToKKyAgICAgICAgKiBieXRlY29kZS9PcGNvZGUu
aDoKKyAgICAgICAgKEpTQyk6CisgICAgICAgIChKU0M6OnBhZE9wY29kZU5hbWUpOgorICAgICAg
ICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OkJ5
dGVjb2RlR2VuZXJhdG9yOjplbWl0R2V0QXJndW1lbnRCeVZhbCk6CisgICAgICAgIChKU0M6OkJ5
dGVjb2RlR2VuZXJhdG9yOjplbWl0R2V0QnlWYWwpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdl
bmVyYXRvcjo6ZW1pdFB1dEJ5VmFsKToKKyAgICAgICAgKiBkZmcvREZHQWJzdHJhY3RTdGF0ZS5j
cHA6CisgICAgICAgIChKU0M6OkRGRzo6QWJzdHJhY3RTdGF0ZTo6aW5pdGlhbGl6ZSk6CisgICAg
ICAgIChKU0M6OkRGRzo6QWJzdHJhY3RTdGF0ZTo6ZXhlY3V0ZSk6CisgICAgICAgICogZGZnL0RG
R0Fic3RyYWN0VmFsdWUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpTdHJ1Y3R1cmVBYnN0cmFjdFZh
bHVlOjpoYXNTaW5nbGV0b24pOgorICAgICAgICAoU3RydWN0dXJlQWJzdHJhY3RWYWx1ZSk6Cisg
ICAgICAgIChKU0M6OkRGRzo6U3RydWN0dXJlQWJzdHJhY3RWYWx1ZTo6c2luZ2xldG9uKToKKyAg
ICAgICAgKiBkZmcvREZHQXJndW1lbnRzU2ltcGxpZmljYXRpb25QaGFzZS5jcHA6CisgICAgICAg
IChKU0M6OkRGRzo6QXJndW1lbnRzU2ltcGxpZmljYXRpb25QaGFzZTo6cnVuKToKKyAgICAgICAg
KiBkZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2Rl
UGFyc2VyOjpwYXJzZUJsb2NrKToKKyAgICAgICAgKiBkZmcvREZHRml4dXBQaGFzZS5jcHA6Cisg
ICAgICAgIChKU0M6OkRGRzo6Rml4dXBQaGFzZTo6Zml4dXBOb2RlKToKKyAgICAgICAgKiBkZmcv
REZHU3BlY3VsYXRpdmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklU
OjpzcGVjdWxhdGVBcnJheSk6CisgICAgICAgIChERkcpOgorICAgICAgICAoSlNDOjpERkc6OlNw
ZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJ
VDo6Y2hlY2tBcmd1bWVudFR5cGVzKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZUdldEluZGV4ZWRQcm9wZXJ0eVN0b3JhZ2UpOgorICAgICAgICAqIGRmZy9ERkdT
cGVjdWxhdGl2ZUpJVC5oOgorICAgICAgICAoU3BlY3VsYXRpdmVKSVQpOgorICAgICAgICAqIGRm
Zy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3Bw
OgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAgICAg
KiBkZmcvREZHU3RydWN0dXJlQ2hlY2tIb2lzdGluZ1BoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6
REZHOjpTdHJ1Y3R1cmVDaGVja0hvaXN0aW5nUGhhc2U6OnJ1bik6CisgICAgICAgICogaml0L0pJ
VFByb3BlcnR5QWNjZXNzLmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2dldF9ieV92
YWwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfcHV0X2J5X3ZhbCk6CisgICAgICAgIChK
U0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVQYXRjaEdldEFycmF5TGVuZ3RoKToKKyAgICAgICAgKiBq
aXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9v
cF9nZXRfYnlfdmFsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3B1dF9ieV92YWwpOgor
ICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlUGF0Y2hHZXRBcnJheUxlbmd0aCk6Cisg
ICAgICAgICogbGxpbnQvTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcDoKKyAgICAgICAgKiBsbGlu
dC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtOgorICAgICAgICAqIGxsaW50L0xvd0xldmVs
SW50ZXJwcmV0ZXI2NC5hc206CisgICAgICAgICogcnVudGltZS9TdHJ1Y3R1cmUuaDoKKyAgICAg
ICAgKFN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6Y2xhc3NJbmZvT2Zmc2V0
KToKKwogMjAxMi0wOC0xMyAgU2ltb24gSGF1c21hbm4gIDxzaW1vbi5oYXVzbWFubkBub2tpYS5j
b20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjEyNTQ0NC4KSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDEyNDQxMSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMzksNiAr
MzksNyBAQCBTRVQoSmF2YVNjcmlwdENvcmVfU09VUkNFUwogICAgIAogICAgIGFzc2VtYmxlci9M
aW5rQnVmZmVyLmNwcAogCisgICAgYnl0ZWNvZGUvQXJyYXlQcm9maWxlLmNwcAogICAgIGJ5dGVj
b2RlL0NhbGxMaW5rSW5mby5jcHAKICAgICBieXRlY29kZS9DYWxsTGlua1N0YXR1cy5jcHAKICAg
ICBieXRlY29kZS9Db2RlQmxvY2suY3BwCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvR05V
bWFrZWZpbGUubGlzdC5hbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvR05V
bWFrZWZpbGUubGlzdC5hbQkocmV2aXNpb24gMTI1NDkzKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0JKHdvcmtpbmcgY29weSkKQEAgLTgyLDYgKzgyLDggQEAg
amF2YXNjcmlwdGNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2Vt
Ymxlci9SZXBhdGNoQnVmZmVyLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIv
U0g0QXNzZW1ibGVyLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvWDg2QXNz
ZW1ibGVyLmggXAorCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BcnJheVByb2ZpbGUu
Y3BwIFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJyYXlQcm9maWxlLmggXAog
CVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUNvbnZlbnRpb25zLmggXAog
CVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua0luZm8uY3BwIFwKIAlTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtJbmZvLmggXApJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL1RhcmdldC5wcmkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL1RhcmdldC5wcmkJKHJldmlzaW9uIDEyNTQ5MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9UYXJnZXQucHJpCSh3b3JraW5nIGNvcHkpCkBAIC00Niw2ICs0Niw3IEBAIFNPVVJDRVMg
Kz0gXAogICAgIGFzc2VtYmxlci9MaW5rQnVmZmVyLmNwcCBcCiAgICAgYXNzZW1ibGVyL01hY3Jv
QXNzZW1ibGVyQVJNLmNwcCBcCiAgICAgYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyU0g0LmNwcCBc
CisgICAgYnl0ZWNvZGUvQXJyYXlQcm9maWxlLmNwcCBcCiAgICAgYnl0ZWNvZGUvQ2FsbExpbmtJ
bmZvLmNwcCBcCiAgICAgYnl0ZWNvZGUvQ2FsbExpbmtTdGF0dXMuY3BwIFwKICAgICBieXRlY29k
ZS9Db2RlQmxvY2suY3BwIFwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNj
cmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qCShyZXZpc2lvbiAxMjQ0MTEpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnZjcHJvagkod29ya2luZyBjb3B5KQpAQCAtMTUzMCw2ICsxNTMwLDE0IEBA
CiAJCQlOYW1lPSJieXRlY29kZSIKIAkJCT4KIAkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIu
LlwuLlxieXRlY29kZVxBcnJheVByb2ZpbGUuY3BwIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxG
aWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxieXRlY29kZVxBcnJheVByb2ZpbGUuaCIKKwkJ
CQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQogCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cYnl0ZWNv
ZGVcQ2FsbExpbmtJbmZvLmNwcCIKIAkJCQk+CiAJCQk8L0ZpbGU+CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMTI0NDExKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29w
eSkKQEAgLTE0MCw2ICsxNDAsOCBAQAogCQkwRjYyMDE3OTE0M0ZDRDQ4MDA2OEI3N0MgLyogREZH
QWJzdHJhY3RTdGF0ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwRjYyMDE2RDE0M0ZDRDJGMDA2OEI3N0MgLyogREZHQWJzdHJhY3RTdGF0ZS5jcHAg
Ki87IH07CiAJCTBGNjM5NDNGMTVDNzVGMTkwMDZBNTk3QyAvKiBERkdTdHJ1Y3R1cmVDaGVja0hv
aXN0aW5nUGhhc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDBGNjM5NDNEMTVDNzVGMTQwMDZBNTk3QyAvKiBERkdTdHJ1Y3R1cmVDaGVja0hvaXN0aW5n
UGhhc2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQkwRjYzOTQ0MDE1Qzc1RjFEMDA2QTU5N0MgLyogREZHU3RydWN0dXJlQ2hlY2tIb2lzdGluZ1Bo
YXNlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBG
NjM5NDNDMTVDNzVGMTQwMDZBNTk3QyAvKiBERkdTdHJ1Y3R1cmVDaGVja0hvaXN0aW5nUGhhc2Uu
Y3BwICovOyB9OworCQkwRjYzOTQ1NDE1RDA3MDU1MDA2QTU5N0MgLyogQXJyYXlQcm9maWxlLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNjM5NDUx
MTVEMDcwNTEwMDZBNTk3QyAvKiBBcnJheVByb2ZpbGUuY3BwICovOyB9OworCQkwRjYzOTQ1NTE1
RDA3MDU3MDA2QTU5N0MgLyogQXJyYXlQcm9maWxlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjYzOTQ1MjE1RDA3MDUxMDA2QTU5N0MgLyogQXJyYXlQ
cm9maWxlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJMEY2NkUxNkIxNERGM0YxNjAwQjdCMkU0IC8qIERGR0FkamFjZW5jeUxpc3QuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNjZFMTY4MTRERjNGMTMw
MEI3QjJFNCAvKiBERkdBZGphY2VuY3lMaXN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEY2NkUxNkMxNERGM0YxNjAwQjdCMkU0IC8qIERGR0Vk
Z2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNjZF
MTY5MTRERjNGMTMwMEI3QjJFNCAvKiBERkdFZGdlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEY3NjZEMjgxNUE4Q0MxRTAwOEYzNjNFIC8qIEpJ
VFN0dWJSb3V0aW5lLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDBGNzY2RDI2MTVBOENDMUIwMDhGMzYzRSAvKiBKSVRTdHViUm91dGluZS5jcHAgKi87
IH07CkBAIC04ODksNiArODkxLDggQEAKIAkJMEY2MjAxNzIxNDNGQ0QyRjAwNjhCNzdDIC8qIERG
R1ZhcmlhYmxlQWNjZXNzRGF0YS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBE
RkdWYXJpYWJsZUFjY2Vzc0RhdGEuaDsgcGF0aCA9IGRmZy9ERkdWYXJpYWJsZUFjY2Vzc0RhdGEu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY2Mzk0M0MxNUM3NUYxNDAwNkE1OTdD
IC8qIERGR1N0cnVjdHVyZUNoZWNrSG9pc3RpbmdQaGFzZS5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IG5hbWUgPSBERkdTdHJ1Y3R1cmVDaGVja0hvaXN0aW5nUGhhc2UuY3BwOyBw
YXRoID0gZGZnL0RGR1N0cnVjdHVyZUNoZWNrSG9pc3RpbmdQaGFzZS5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTBGNjM5NDNEMTVDNzVGMTQwMDZBNTk3QyAvKiBERkdTdHJ1Y3R1
cmVDaGVja0hvaXN0aW5nUGhhc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0g
REZHU3RydWN0dXJlQ2hlY2tIb2lzdGluZ1BoYXNlLmg7IHBhdGggPSBkZmcvREZHU3RydWN0dXJl
Q2hlY2tIb2lzdGluZ1BoYXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNjM5
NDUxMTVEMDcwNTEwMDZBNTk3QyAvKiBBcnJheVByb2ZpbGUuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gQXJyYXlQcm9maWxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJMEY2Mzk0NTIxNUQwNzA1MTAwNkE1OTdDIC8qIEFycmF5UHJvZmlsZS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBcnJheVByb2ZpbGUuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY2NkUxNjgxNERGM0YxMzAwQjdCMkU0IC8qIERGR0FkamFj
ZW5jeUxpc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHQWRqYWNlbmN5
TGlzdC5oOyBwYXRoID0gZGZnL0RGR0FkamFjZW5jeUxpc3QuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMEY2NkUxNjkxNERGM0YxMzAwQjdCMkU0IC8qIERGR0VkZ2UuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHRWRnZS5oOyBwYXRoID0gZGZnL0RGR0VkZ2Uu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY3NjZEMUMxNUE1MDI4RDAwOEYzNjNF
IC8qIEpJVFN0dWJSb3V0aW5lLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpJ
VFN0dWJSb3V0aW5lLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yNDA3LDYgKzI0
MTEsOCBAQAogCQk5NjlBMDc4RjBFRDFEM0FFMDBGMUY2ODEgLyogYnl0ZWNvZGUgKi8gPSB7CiAJ
CQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCTBGNjM5NDUxMTVEMDcwNTEw
MDZBNTk3QyAvKiBBcnJheVByb2ZpbGUuY3BwICovLAorCQkJCTBGNjM5NDUyMTVEMDcwNTEwMDZB
NTk3QyAvKiBBcnJheVByb2ZpbGUuaCAqLywKIAkJCQkwRjU2QTFENDE1MDAxQ0YyMDAyOTkyQjEg
LyogRXhlY3V0aW9uQ291bnRlci5jcHAgKi8sCiAJCQkJMEY1NkExRDExNTAwMEYzMTAwMjk5MkIx
IC8qIEV4ZWN1dGlvbkNvdW50ZXIuaCAqLywKIAkJCQkwRkI1NDY3QzE0RjVDRkQzMDAyQzI5ODkg
LyogTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZS5jcHAgKi8sCkBAIC0yODY3LDYgKzI4NzMs
NyBAQAogCQkJCTBGNzY2RDQ0MTVCMkEzQzAwMDhGMzYzRSAvKiBERkdSZWdpc3RlclNldC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMEY3NjZENDYxNUIzNzAxRjAwOEYzNjNFIC8qIERGR1NjcmF0Y2hS
ZWdpc3RlckFsbG9jYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY2Mzk0M0YxNUM3NUYxOTAw
NkE1OTdDIC8qIERGR1N0cnVjdHVyZUNoZWNrSG9pc3RpbmdQaGFzZS5oIGluIEhlYWRlcnMgKi8s
CisJCQkJMEY2Mzk0NTUxNUQwNzA1NzAwNkE1OTdDIC8qIEFycmF5UHJvZmlsZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7
CiAJCX07CkBAIC0zNDY1LDYgKzM0NzIsNyBAQAogCQkJCTBGNzY2RDM0MTVBRTI1MzgwMDhGMzYz
RSAvKiBKdW1wUmVwbGFjZW1lbnRXYXRjaHBvaW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBG
NzY2RDM4MTVBRTRBMUMwMDhGMzYzRSAvKiBTdHJ1Y3R1cmVTdHViQ2xlYXJpbmdXYXRjaHBvaW50
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGNjM5NDQwMTVDNzVGMUQwMDZBNTk3QyAvKiBERkdT
dHJ1Y3R1cmVDaGVja0hvaXN0aW5nUGhhc2UuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEY2Mzk0
NTQxNUQwNzA1NTAwNkE1OTdDIC8qIEFycmF5UHJvZmlsZS5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BcnJheVByb2ZpbGUuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BcnJheVByb2ZpbGUuY3Bw
CShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FycmF5UHJv
ZmlsZS5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTUgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1
ZGUgIkFycmF5UHJvZmlsZS5oIgorCituYW1lc3BhY2UgSlNDIHsKKwordm9pZCBBcnJheVByb2Zp
bGU6OmNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbihPcGVyYXRpb25JblByb2dyZXNzIG9wZXJhdGlv
bikKK3sKKyAgICBpZiAobV9sYXN0U2VlblN0cnVjdHVyZSkgeworICAgICAgICBtX29ic2VydmVk
QXJyYXlNb2RlcyB8PSBhcnJheU1vZGVGcm9tU3RydWN0dXJlKG1fbGFzdFNlZW5TdHJ1Y3R1cmUp
OworICAgICAgICBpZiAoIW1fc3RydWN0dXJlSXNQb2x5bW9ycGhpYykgeworICAgICAgICAgICAg
aWYgKCFtX2V4cGVjdGVkU3RydWN0dXJlKQorICAgICAgICAgICAgICAgIG1fZXhwZWN0ZWRTdHJ1
Y3R1cmUgPSBtX2xhc3RTZWVuU3RydWN0dXJlOworICAgICAgICAgICAgZWxzZSBpZiAobV9leHBl
Y3RlZFN0cnVjdHVyZSAhPSBtX2xhc3RTZWVuU3RydWN0dXJlKSB7CisgICAgICAgICAgICAgICAg
bV9leHBlY3RlZFN0cnVjdHVyZSA9IDA7CisgICAgICAgICAgICAgICAgbV9zdHJ1Y3R1cmVJc1Bv
bHltb3JwaGljID0gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBtX2xh
c3RTZWVuU3RydWN0dXJlID0gMDsKKyAgICB9CisgICAgCisgICAgaWYgKG9wZXJhdGlvbiA9PSBD
b2xsZWN0aW9uCisgICAgICAgICYmIG1fZXhwZWN0ZWRTdHJ1Y3R1cmUKKyAgICAgICAgJiYgIUhl
YXA6OmlzTWFya2VkKG1fZXhwZWN0ZWRTdHJ1Y3R1cmUpKSB7CisgICAgICAgIG1fZXhwZWN0ZWRT
dHJ1Y3R1cmUgPSAwOworICAgICAgICBtX3N0cnVjdHVyZUlzUG9seW1vcnBoaWMgPSB0cnVlOwor
ICAgIH0KK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9BcnJheVByb2ZpbGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQXJyYXlQcm9maWxlLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJyYXlQcm9maWxlLmgJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsMTA0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICov
CisKKyNpZm5kZWYgQXJyYXlQcm9maWxlX2gKKyNkZWZpbmUgQXJyYXlQcm9maWxlX2gKKworI2lu
Y2x1ZGUgIkpTQXJyYXkuaCIKKyNpbmNsdWRlICJTdHJ1Y3R1cmUuaCIKKyNpbmNsdWRlIDx3dGYv
SGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9TZWdtZW50ZWRWZWN0b3IuaD4KKworbmFtZXNwYWNl
IEpTQyB7CisKK2NsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKwordHlwZWRlZiB1bnNpZ25l
ZCBBcnJheU1vZGVzOworCitzdGF0aWMgY29uc3QgdW5zaWduZWQgSXNOb3RBcnJheSA9IDE7Citz
dGF0aWMgY29uc3QgdW5zaWduZWQgSXNKU0FycmF5ICA9IDI7CisKK2lubGluZSBBcnJheU1vZGVz
IGFycmF5TW9kZUZyb21TdHJ1Y3R1cmUoU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCit7CisgICAgaWYg
KHN0cnVjdHVyZS0+Y2xhc3NJbmZvKCkgPT0gJkpTQXJyYXk6OnNfaW5mbykKKyAgICAgICAgcmV0
dXJuIElzSlNBcnJheTsKKyAgICByZXR1cm4gSXNOb3RBcnJheTsKK30KKworY2xhc3MgQXJyYXlQ
cm9maWxlIHsKK3B1YmxpYzoKKyAgICBBcnJheVByb2ZpbGUoKQorICAgICAgICA6IG1fYnl0ZWNv
ZGVPZmZzZXQoc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpKQorICAgICAgICAs
IG1fbGFzdFNlZW5TdHJ1Y3R1cmUoMCkKKyAgICAgICAgLCBtX2V4cGVjdGVkU3RydWN0dXJlKDAp
CisgICAgICAgICwgbV9zdHJ1Y3R1cmVJc1BvbHltb3JwaGljKGZhbHNlKQorICAgICAgICAsIG1f
b2JzZXJ2ZWRBcnJheU1vZGVzKDApCisgICAgeworICAgIH0KKyAgICAKKyAgICBBcnJheVByb2Zp
bGUodW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQpCisgICAgICAgIDogbV9ieXRlY29kZU9mZnNldChi
eXRlY29kZU9mZnNldCkKKyAgICAgICAgLCBtX2xhc3RTZWVuU3RydWN0dXJlKDApCisgICAgICAg
ICwgbV9leHBlY3RlZFN0cnVjdHVyZSgwKQorICAgICAgICAsIG1fc3RydWN0dXJlSXNQb2x5bW9y
cGhpYyhmYWxzZSkKKyAgICAgICAgLCBtX29ic2VydmVkQXJyYXlNb2RlcygwKQorICAgIHsKKyAg
ICB9CisgICAgCisgICAgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQoKSBjb25zdCB7IHJldHVybiBt
X2J5dGVjb2RlT2Zmc2V0OyB9CisgICAgCisgICAgU3RydWN0dXJlKiogYWRkcmVzc09mTGFzdFNl
ZW5TdHJ1Y3R1cmUoKSB7IHJldHVybiAmbV9sYXN0U2VlblN0cnVjdHVyZTsgfQorICAgIAorICAg
IHZvaWQgb2JzZXJ2ZVN0cnVjdHVyZShTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICB7CisgICAg
ICAgIG1fbGFzdFNlZW5TdHJ1Y3R1cmUgPSBzdHJ1Y3R1cmU7CisgICAgfQorICAgIAorICAgIHZv
aWQgY29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKE9wZXJhdGlvbkluUHJvZ3Jlc3Mgb3BlcmF0aW9u
ID0gTm9PcGVyYXRpb24pOworICAgIAorICAgIFN0cnVjdHVyZSogZXhwZWN0ZWRTdHJ1Y3R1cmUo
KSBjb25zdCB7IHJldHVybiBtX2V4cGVjdGVkU3RydWN0dXJlOyB9CisgICAgYm9vbCBzdHJ1Y3R1
cmVJc1BvbHltb3JwaGljKCkgY29uc3QgeyByZXR1cm4gbV9zdHJ1Y3R1cmVJc1BvbHltb3JwaGlj
OyB9CisgICAgYm9vbCBoYXNEZWZpbml0ZVN0cnVjdHVyZSgpIGNvbnN0CisgICAgeworICAgICAg
ICByZXR1cm4gIXN0cnVjdHVyZUlzUG9seW1vcnBoaWMoKSAmJiBtX2V4cGVjdGVkU3RydWN0dXJl
OworICAgIH0KKyAgICBBcnJheU1vZGVzIG9ic2VydmVkQXJyYXlNb2RlcygpIGNvbnN0IHsgcmV0
dXJuIG1fb2JzZXJ2ZWRBcnJheU1vZGVzOyB9CisgICAgCitwcml2YXRlOgorICAgIGZyaWVuZCBj
bGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CisgICAgCisgICAgdW5zaWduZWQgbV9ieXRlY29k
ZU9mZnNldDsKKyAgICBTdHJ1Y3R1cmUqIG1fbGFzdFNlZW5TdHJ1Y3R1cmU7CisgICAgU3RydWN0
dXJlKiBtX2V4cGVjdGVkU3RydWN0dXJlOworICAgIGJvb2wgbV9zdHJ1Y3R1cmVJc1BvbHltb3Jw
aGljOworICAgIEFycmF5TW9kZXMgbV9vYnNlcnZlZEFycmF5TW9kZXM7Cit9OworCit0eXBlZGVm
IFNlZ21lbnRlZFZlY3RvcjxBcnJheVByb2ZpbGUsIDQsIDA+IEFycmF5UHJvZmlsZVZlY3RvcjsK
KworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBBcnJheVByb2ZpbGVfaAorCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAkocmV2aXNp
b24gMTI1NDkzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTExNTUsNiArMTE1NSw3IEBAIHZvaWQgQ29kZUJsb2NrOjpk
dW1wKEV4ZWNTdGF0ZSogZXhlYywgY28KICAgICAgICAgICAgIGRhdGFMb2coIlslNGRdIGdldF9i
eV92YWxcdCAlcywgJXMsICVzIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0
YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgcjEpLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIy
KS5kYXRhKCkpOwogICAgICAgICAgICAgZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUobG9j
YXRpb24pOwogICAgICAgICAgICAgaXQrKzsKKyAgICAgICAgICAgIGl0Kys7CiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIG9wX2dldF9hcmd1bWVudF9ieV92YWw6
IHsKQEAgLTExNjQsNiArMTE2NSw3IEBAIHZvaWQgQ29kZUJsb2NrOjpkdW1wKEV4ZWNTdGF0ZSog
ZXhlYywgY28KICAgICAgICAgICAgIGRhdGFMb2coIlslNGRdIGdldF9hcmd1bWVudF9ieV92YWxc
dCAlcywgJXMsICVzIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpLCBy
ZWdpc3Rlck5hbWUoZXhlYywgcjEpLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIyKS5kYXRh
KCkpOwogICAgICAgICAgICAgZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUobG9jYXRpb24p
OwogICAgICAgICAgICAgKytpdDsKKyAgICAgICAgICAgICsraXQ7CiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgfQogICAgICAgICBjYXNlIG9wX2dldF9ieV9wbmFtZTogewpAQCAtMTE4Myw2
ICsxMTg1LDcgQEAgdm9pZCBDb2RlQmxvY2s6OmR1bXAoRXhlY1N0YXRlKiBleGVjLCBjbwogICAg
ICAgICAgICAgaW50IHIyID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBkYXRhTG9n
KCJbJTRkXSBwdXRfYnlfdmFsXHQgJXMsICVzLCAlcyIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUo
ZXhlYywgcjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIxKS5kYXRhKCksIHJlZ2lzdGVy
TmFtZShleGVjLCByMikuZGF0YSgpKTsKICAgICAgICAgICAgIGR1bXBCeXRlY29kZUNvbW1lbnRB
bmROZXdMaW5lKGxvY2F0aW9uKTsKKyAgICAgICAgICAgICsraXQ7CiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgfQogICAgICAgICBjYXNlIG9wX2RlbF9ieV92YWw6IHsKQEAgLTI3NjksNiAr
Mjc3MiwyMyBAQCBib29sIEZ1bmN0aW9uQ29kZUJsb2NrOjpqaXRDb21waWxlSW1wbChFCiAjZW5k
aWYKIAogI2lmIEVOQUJMRShWQUxVRV9QUk9GSUxFUikKK0FycmF5UHJvZmlsZSogQ29kZUJsb2Nr
OjpnZXRBcnJheVByb2ZpbGUodW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQpCit7CisgICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IG1fYXJyYXlQcm9maWxlcy5zaXplKCk7ICsraSkgeworICAgICAg
ICBpZiAobV9hcnJheVByb2ZpbGVzW2ldLmJ5dGVjb2RlT2Zmc2V0KCkgPT0gYnl0ZWNvZGVPZmZz
ZXQpCisgICAgICAgICAgICByZXR1cm4gJm1fYXJyYXlQcm9maWxlc1tpXTsKKyAgICB9CisgICAg
cmV0dXJuIDA7Cit9CisKK0FycmF5UHJvZmlsZSogQ29kZUJsb2NrOjpnZXRPckFkZEFycmF5UHJv
ZmlsZSh1bnNpZ25lZCBieXRlY29kZU9mZnNldCkKK3sKKyAgICBBcnJheVByb2ZpbGUqIHJlc3Vs
dCA9IGdldEFycmF5UHJvZmlsZShieXRlY29kZU9mZnNldCk7CisgICAgaWYgKHJlc3VsdCkKKyAg
ICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICByZXR1cm4gYWRkQXJyYXlQcm9maWxlKGJ5dGVjb2Rl
T2Zmc2V0KTsKK30KKwogdm9pZCBDb2RlQmxvY2s6OnVwZGF0ZUFsbFByZWRpY3Rpb25zQW5kQ291
bnRMaXZlbmVzcygKICAgICBPcGVyYXRpb25JblByb2dyZXNzIG9wZXJhdGlvbiwgdW5zaWduZWQm
IG51bWJlck9mTGl2ZU5vbkFyZ3VtZW50VmFsdWVQcm9maWxlcywgdW5zaWduZWQmIG51bWJlck9m
U2FtcGxlc0luUHJvZmlsZXMpCiB7CkBAIC0yNzkyLDYgKzI4MTIsMTIgQEAgdm9pZCBDb2RlQmxv
Y2s6OnVwZGF0ZUFsbFByZWRpY3Rpb25zQW5kQwogI2lmIEVOQUJMRShERkdfSklUKQogICAgIG1f
bGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGVzLmNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbnMob3BlcmF0
aW9uKTsKICNlbmRpZgorICAgIAorICAgIC8vIERvbid0IGNvdW50IHRoZSBhcnJheSBwcm9maWxl
cyB0b3dhcmRzIHN0YXRpc3RpY3MsIHNpbmNlIGVhY2ggYXJyYXkgcHJvZmlsZQorICAgIC8vIHNp
dGUgYWxzbyBoYXMgYSB2YWx1ZSBwcm9maWxlIHNpdGUgLSBzbyB3ZSBhbHJlYWR5IGtub3cgd2hl
dGhlciBvciBub3QgaXQncworICAgIC8vIGxpdmUuCisgICAgZm9yICh1bnNpZ25lZCBpID0gbV9h
cnJheVByb2ZpbGVzLnNpemUoKTsgaS0tOykKKyAgICAgICAgbV9hcnJheVByb2ZpbGVzW2ldLmNv
bXB1dGVVcGRhdGVkUHJlZGljdGlvbihvcGVyYXRpb24pOwogfQogCiB2b2lkIENvZGVCbG9jazo6
dXBkYXRlQWxsUHJlZGljdGlvbnMoT3BlcmF0aW9uSW5Qcm9ncmVzcyBvcGVyYXRpb24pCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCShyZXZpc2lvbiAx
MjQ0MTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgJKHdv
cmtpbmcgY29weSkKQEAgLTMwLDYgKzMwLDcgQEAKICNpZm5kZWYgQ29kZUJsb2NrX2gKICNkZWZp
bmUgQ29kZUJsb2NrX2gKIAorI2luY2x1ZGUgIkFycmF5UHJvZmlsZS5oIgogI2luY2x1ZGUgIkJ5
dGVjb2RlQ29udmVudGlvbnMuaCIKICNpbmNsdWRlICJDYWxsTGlua0luZm8uaCIKICNpbmNsdWRl
ICJDYWxsUmV0dXJuT2Zmc2V0VG9CeXRlY29kZU9mZnNldC5oIgpAQCAtNzUxLDggKzc1MiwxOCBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgdW5zaWduZWQg
ZXhlY3V0aW9uRW50cnlDb3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fZXhlY3V0aW9uRW50cnlDb3Vu
dDsgfQotI2VuZGlmCiAKKyAgICAgICAgdW5zaWduZWQgbnVtYmVyT2ZBcnJheVByb2ZpbGVzKCkg
Y29uc3QgeyByZXR1cm4gbV9hcnJheVByb2ZpbGVzLnNpemUoKTsgfQorICAgICAgICBjb25zdCBB
cnJheVByb2ZpbGVWZWN0b3ImIGFycmF5UHJvZmlsZXMoKSB7IHJldHVybiBtX2FycmF5UHJvZmls
ZXM7IH0KKyAgICAgICAgQXJyYXlQcm9maWxlKiBhZGRBcnJheVByb2ZpbGUodW5zaWduZWQgYnl0
ZWNvZGVPZmZzZXQpCisgICAgICAgIHsKKyAgICAgICAgICAgIG1fYXJyYXlQcm9maWxlcy5hcHBl
bmQoQXJyYXlQcm9maWxlKGJ5dGVjb2RlT2Zmc2V0KSk7CisgICAgICAgICAgICByZXR1cm4gJm1f
YXJyYXlQcm9maWxlcy5sYXN0KCk7CisgICAgICAgIH0KKyAgICAgICAgQXJyYXlQcm9maWxlKiBn
ZXRBcnJheVByb2ZpbGUodW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQpOworICAgICAgICBBcnJheVBy
b2ZpbGUqIGdldE9yQWRkQXJyYXlQcm9maWxlKHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0KTsKKyNl
bmRpZgorICAgICAgICAKICAgICAgICAgdW5zaWduZWQgZ2xvYmFsUmVzb2x2ZUluZm9Db3VudCgp
IGNvbnN0CiAgICAgICAgIHsKICNpZiBFTkFCTEUoSklUKSAgICAKQEAgLTEzMzMsNiArMTM0NCw3
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBTZWdtZW50ZWRWZWN0b3I8VmFsdWVQcm9maWxl
LCA4PiBtX3ZhbHVlUHJvZmlsZXM7CiAgICAgICAgIFNlZ21lbnRlZFZlY3RvcjxSYXJlQ2FzZVBy
b2ZpbGUsIDg+IG1fcmFyZUNhc2VQcm9maWxlczsKICAgICAgICAgU2VnbWVudGVkVmVjdG9yPFJh
cmVDYXNlUHJvZmlsZSwgOD4gbV9zcGVjaWFsRmFzdENhc2VQcm9maWxlczsKKyAgICAgICAgQXJy
YXlQcm9maWxlVmVjdG9yIG1fYXJyYXlQcm9maWxlczsKICAgICAgICAgdW5zaWduZWQgbV9leGVj
dXRpb25FbnRyeUNvdW50OwogI2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9JbnN0cnVjdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9JbnN0cnVjdGlvbi5oCShyZXZpc2lvbiAxMjQ0MTEpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5zdHJ1Y3Rpb24uaAkod29ya2luZyBjb3B5KQpAQCAtNDYs
NiArNDYsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAvLyBjdXJlbnRseSBhY3R1YWxseSB1c2Ug
UG9seW1vcnBoaWNBY2Nlc3NTdHJ1Y3R1cmVMaXN0cywgd2hpY2ggd2Ugc2hvdWxkKS4gIEFueXdh
eSwgdGhpcyBzZWVtcyBsaWtlIHRoZSBiZXN0CiAgICAgLy8gc29sdXRpb24gZm9yIG5vdyAtIHdp
bGwgbmVlZCB0byBzb21ldGhpbmcgc21hcnRlciBpZi93aGVuIHdlIGFjdHVhbGx5IHdhbnQgbWl4
ZWQtbW9kZSBvcGVyYXRpb24uCiAKKyAgICBjbGFzcyBBcnJheVByb2ZpbGU7CiAgICAgY2xhc3Mg
SlNDZWxsOwogICAgIGNsYXNzIFN0cnVjdHVyZTsKICAgICBjbGFzcyBTdHJ1Y3R1cmVDaGFpbjsK
QEAgLTE5MCw2ICsxOTEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgSW5zdHJ1Y3Rpb24o
TExJbnRDYWxsTGlua0luZm8qIGNhbGxMaW5rSW5mbykgeyB1LmNhbGxMaW5rSW5mbyA9IGNhbGxM
aW5rSW5mbzsgfQogICAgICAgICAKICAgICAgICAgSW5zdHJ1Y3Rpb24oVmFsdWVQcm9maWxlKiBw
cm9maWxlKSB7IHUucHJvZmlsZSA9IHByb2ZpbGU7IH0KKyAgICAgICAgSW5zdHJ1Y3Rpb24oQXJy
YXlQcm9maWxlKiBwcm9maWxlKSB7IHUuYXJyYXlQcm9maWxlID0gcHJvZmlsZTsgfQogICAgICAg
ICAKICAgICAgICAgSW5zdHJ1Y3Rpb24oV3JpdGVCYXJyaWVyPFVua25vd24+KiByZWdpc3RlclBv
aW50ZXIpIHsgdS5yZWdpc3RlclBvaW50ZXIgPSByZWdpc3RlclBvaW50ZXI7IH0KICAgICAgICAg
CkBAIC0yMDUsNiArMjA3LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICBQcm9wZXJ0
eVNsb3Q6OkdldFZhbHVlRnVuYyBnZXR0ZXJGdW5jOwogICAgICAgICAgICAgTExJbnRDYWxsTGlu
a0luZm8qIGNhbGxMaW5rSW5mbzsKICAgICAgICAgICAgIFZhbHVlUHJvZmlsZSogcHJvZmlsZTsK
KyAgICAgICAgICAgIEFycmF5UHJvZmlsZSogYXJyYXlQcm9maWxlOwogICAgICAgICAgICAgdm9p
ZCogcG9pbnRlcjsKICAgICAgICAgICAgIGJvb2wqIHByZWRpY2F0ZVBvaW50ZXI7CiAgICAgICAg
IH0gdTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PcGNvZGUuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT3Bjb2RlLmgJKHJldmlz
aW9uIDEyNTQ5MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PcGNvZGUuaAko
d29ya2luZyBjb3B5KQpAQCAtMTMyLDEwICsxMzIsMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgIG1hY3JvKG9wX3B1dF9ieV9pZF9yZXBsYWNlLCA5KSBcCiAgICAgICAgIG1hY3JvKG9wX3B1
dF9ieV9pZF9nZW5lcmljLCA5KSBcCiAgICAgICAgIG1hY3JvKG9wX2RlbF9ieV9pZCwgNCkgXAot
ICAgICAgICBtYWNybyhvcF9nZXRfYnlfdmFsLCA1KSAvKiBoYXMgdmFsdWUgcHJvZmlsaW5nICov
IFwKLSAgICAgICAgbWFjcm8ob3BfZ2V0X2FyZ3VtZW50X2J5X3ZhbCwgNSkgLyogbXVzdCBiZSB0
aGUgc2FtZSBzaXplIGFzIG9wX2dldF9ieV92YWwgKi8gXAorICAgICAgICBtYWNybyhvcF9nZXRf
YnlfdmFsLCA2KSAvKiBoYXMgdmFsdWUgcHJvZmlsaW5nICovIFwKKyAgICAgICAgbWFjcm8ob3Bf
Z2V0X2FyZ3VtZW50X2J5X3ZhbCwgNikgLyogbXVzdCBiZSB0aGUgc2FtZSBzaXplIGFzIG9wX2dl
dF9ieV92YWwgKi8gXAogICAgICAgICBtYWNybyhvcF9nZXRfYnlfcG5hbWUsIDcpIFwKLSAgICAg
ICAgbWFjcm8ob3BfcHV0X2J5X3ZhbCwgNCkgXAorICAgICAgICBtYWNybyhvcF9wdXRfYnlfdmFs
LCA1KSBcCiAgICAgICAgIG1hY3JvKG9wX2RlbF9ieV92YWwsIDQpIFwKICAgICAgICAgbWFjcm8o
b3BfcHV0X2J5X2luZGV4LCA0KSBcCiAgICAgICAgIG1hY3JvKG9wX3B1dF9nZXR0ZXJfc2V0dGVy
LCA1KSBcCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2Rl
R2VuZXJhdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
bXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAkocmV2aXNpb24gMTI1NDkzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTE2NjksMTEgKzE2NjksMTMgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5l
cmF0b3I6OmVtaXREZWxldAogCiBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEdl
dEFyZ3VtZW50QnlWYWwoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBiYXNlLCBSZWdpc3Rl
cklEKiBwcm9wZXJ0eSkKIHsKKyAgICBBcnJheVByb2ZpbGUqIGFycmF5UHJvZmlsZSA9IG1fY29k
ZUJsb2NrLT5hZGRBcnJheVByb2ZpbGUoaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKTsKICAgICBWYWx1
ZVByb2ZpbGUqIHByb2ZpbGUgPSBlbWl0UHJvZmlsZWRPcGNvZGUob3BfZ2V0X2FyZ3VtZW50X2J5
X3ZhbCk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGRzdC0+aW5kZXgoKSk7CiAgICAgQVNT
RVJUKGJhc2UtPmluZGV4KCkgPT0gbV9jb2RlQmxvY2stPmFyZ3VtZW50c1JlZ2lzdGVyKCkpOwog
ICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChiYXNlLT5pbmRleCgpKTsKICAgICBpbnN0cnVjdGlv
bnMoKS5hcHBlbmQocHJvcGVydHktPmluZGV4KCkpOworICAgIGluc3RydWN0aW9ucygpLmFwcGVu
ZChhcnJheVByb2ZpbGUpOwogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChwcm9maWxlKTsKICAg
ICByZXR1cm4gZHN0OwogfQpAQCAtMTY5MywyMCArMTY5NSwyNCBAQCBSZWdpc3RlcklEKiBCeXRl
Y29kZUdlbmVyYXRvcjo6ZW1pdEdldEJ5CiAgICAgICAgICAgICByZXR1cm4gZHN0OwogICAgICAg
ICB9CiAgICAgfQorICAgIEFycmF5UHJvZmlsZSogYXJyYXlQcm9maWxlID0gbV9jb2RlQmxvY2st
PmFkZEFycmF5UHJvZmlsZShpbnN0cnVjdGlvbnMoKS5zaXplKCkpOwogICAgIFZhbHVlUHJvZmls
ZSogcHJvZmlsZSA9IGVtaXRQcm9maWxlZE9wY29kZShvcF9nZXRfYnlfdmFsKTsKICAgICBpbnN0
cnVjdGlvbnMoKS5hcHBlbmQoZHN0LT5pbmRleCgpKTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBl
bmQoYmFzZS0+aW5kZXgoKSk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHByb3BlcnR5LT5p
bmRleCgpKTsKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoYXJyYXlQcm9maWxlKTsKICAgICBp
bnN0cnVjdGlvbnMoKS5hcHBlbmQocHJvZmlsZSk7CiAgICAgcmV0dXJuIGRzdDsKIH0KIAogUmVn
aXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRQdXRCeVZhbChSZWdpc3RlcklEKiBiYXNl
LCBSZWdpc3RlcklEKiBwcm9wZXJ0eSwgUmVnaXN0ZXJJRCogdmFsdWUpCiB7CisgICAgQXJyYXlQ
cm9maWxlKiBhcnJheVByb2ZpbGUgPSBtX2NvZGVCbG9jay0+YWRkQXJyYXlQcm9maWxlKGluc3Ry
dWN0aW9ucygpLnNpemUoKSk7CiAgICAgZW1pdE9wY29kZShvcF9wdXRfYnlfdmFsKTsKICAgICBp
bnN0cnVjdGlvbnMoKS5hcHBlbmQoYmFzZS0+aW5kZXgoKSk7CiAgICAgaW5zdHJ1Y3Rpb25zKCku
YXBwZW5kKHByb3BlcnR5LT5pbmRleCgpKTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQodmFs
dWUtPmluZGV4KCkpOworICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChhcnJheVByb2ZpbGUpOwog
ICAgIHJldHVybiB2YWx1ZTsKIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdBYnN0cmFjdFN0YXRlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0Fic3RyYWN0U3RhdGUuY3BwCShyZXZpc2lvbiAxMjQ0MTEpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0U3RhdGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
MDYsOCArMTA2LDYgQEAgdm9pZCBBYnN0cmFjdFN0YXRlOjppbml0aWFsaXplKEdyYXBoJiBncgog
ICAgICAgICBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uID0gbm9kZS52YXJpYWJsZUFjY2Vzc0Rh
dGEoKS0+cHJlZGljdGlvbigpOwogICAgICAgICBpZiAoaXNJbnQzMlNwZWN1bGF0aW9uKHByZWRp
Y3Rpb24pKQogICAgICAgICAgICAgcm9vdC0+dmFsdWVzQXRIZWFkLmFyZ3VtZW50KGkpLnNldChT
cGVjSW50MzIpOwotICAgICAgICBlbHNlIGlmIChpc0FycmF5U3BlY3VsYXRpb24ocHJlZGljdGlv
bikpCi0gICAgICAgICAgICByb290LT52YWx1ZXNBdEhlYWQuYXJndW1lbnQoaSkuc2V0KFNwZWNB
cnJheSk7CiAgICAgICAgIGVsc2UgaWYgKGlzQm9vbGVhblNwZWN1bGF0aW9uKHByZWRpY3Rpb24p
KQogICAgICAgICAgICAgcm9vdC0+dmFsdWVzQXRIZWFkLmFyZ3VtZW50KGkpLnNldChTcGVjQm9v
bGVhbik7CiAgICAgICAgIGVsc2UgaWYgKGlzSW50OEFycmF5U3BlY3VsYXRpb24ocHJlZGljdGlv
bikpCkBAIC0yOTAsMTAgKzI4OCw3IEBAIGJvb2wgQWJzdHJhY3RTdGF0ZTo6ZXhlY3V0ZSh1bnNp
Z25lZCBpbmQKICAgICAgICAgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGVkVHlwZSA9IG5vZGUudmFy
aWFibGVBY2Nlc3NEYXRhKCktPmFyZ3VtZW50QXdhcmVQcmVkaWN0aW9uKCk7CiAgICAgICAgIGlm
IChpc0ludDMyU3BlY3VsYXRpb24ocHJlZGljdGVkVHlwZSkpCiAgICAgICAgICAgICBzcGVjdWxh
dGVJbnQzMlVuYXJ5KG5vZGUpOwotICAgICAgICBlbHNlIGlmIChpc0FycmF5U3BlY3VsYXRpb24o
cHJlZGljdGVkVHlwZSkpIHsKLSAgICAgICAgICAgIG5vZGUuc2V0Q2FuRXhpdCghaXNBcnJheVNw
ZWN1bGF0aW9uKGZvck5vZGUobm9kZS5jaGlsZDEoKSkubV90eXBlKSk7Ci0gICAgICAgICAgICBm
b3JOb2RlKG5vZGUuY2hpbGQxKCkpLmZpbHRlcihTcGVjQXJyYXkpOwotICAgICAgICB9IGVsc2Ug
aWYgKGlzQ2VsbFNwZWN1bGF0aW9uKHByZWRpY3RlZFR5cGUpKSB7CisgICAgICAgIGVsc2UgaWYg
KGlzQ2VsbFNwZWN1bGF0aW9uKHByZWRpY3RlZFR5cGUpKSB7CiAgICAgICAgICAgICBub2RlLnNl
dENhbkV4aXQoIWlzQ2VsbFNwZWN1bGF0aW9uKGZvck5vZGUobm9kZS5jaGlsZDEoKSkubV90eXBl
KSk7CiAgICAgICAgICAgICBmb3JOb2RlKG5vZGUuY2hpbGQxKCkpLmZpbHRlcihTcGVjQ2VsbCk7
CiAgICAgICAgIH0gZWxzZSBpZiAoaXNCb29sZWFuU3BlY3VsYXRpb24ocHJlZGljdGVkVHlwZSkp
CkBAIC04NjcsNyArODYyLDcgQEAgYm9vbCBBYnN0cmFjdFN0YXRlOjpleGVjdXRlKHVuc2lnbmVk
IGluZAogICAgICAgICAgICAgbV9pc1ZhbGlkID0gZmFsc2U7CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgfQotICAgICAgICBpZiAoIWlzQWN0aW9uYWJsZUFycmF5U3BlY3VsYXRpb24obV9n
cmFwaFtub2RlLmNoaWxkMSgpXS5wcmVkaWN0aW9uKCkpIHx8ICFtX2dyYXBoW25vZGUuY2hpbGQy
KCldLnNob3VsZFNwZWN1bGF0ZUludGVnZXIoKSkgeworICAgICAgICBpZiAoIW1fZ3JhcGhbbm9k
ZS5jaGlsZDIoKV0uc2hvdWxkU3BlY3VsYXRlSW50ZWdlcigpKSB7CiAgICAgICAgICAgICBjbG9i
YmVyV29ybGQobm9kZS5jb2RlT3JpZ2luLCBpbmRleEluQmxvY2spOwogICAgICAgICAgICAgZm9y
Tm9kZShub2RlSW5kZXgpLm1ha2VUb3AoKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtOTQyLDgg
KzkzNyw3IEBAIGJvb2wgQWJzdHJhY3RTdGF0ZTo6ZXhlY3V0ZSh1bnNpZ25lZCBpbmQKICAgICAg
ICAgICAgIGZvck5vZGUobm9kZUluZGV4KS5zZXQoU3BlY0RvdWJsZSk7CiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgfQotICAgICAgICBBU1NFUlQobV9ncmFwaFtub2RlLmNoaWxkMSgpXS5z
aG91bGRTcGVjdWxhdGVBcnJheSgpKTsKLSAgICAgICAgZm9yTm9kZShub2RlLmNoaWxkMSgpKS5m
aWx0ZXIoU3BlY0FycmF5KTsKKyAgICAgICAgZm9yTm9kZShub2RlLmNoaWxkMSgpKS5maWx0ZXIo
U3BlY0NlbGwpOwogICAgICAgICBmb3JOb2RlKG5vZGUuY2hpbGQyKCkpLmZpbHRlcihTcGVjSW50
MzIpOwogICAgICAgICBmb3JOb2RlKG5vZGVJbmRleCkubWFrZVRvcCgpOwogICAgICAgICBicmVh
azsKQEAgLTEwNTMsOCArMTA0Nyw3IEBAIGJvb2wgQWJzdHJhY3RTdGF0ZTo6ZXhlY3V0ZSh1bnNp
Z25lZCBpbmQKICAgICAgICAgICAgIGZvck5vZGUoY2hpbGQzKS5maWx0ZXIoU3BlY051bWJlcik7
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQotICAgICAgICBBU1NFUlQobV9ncmFwaFtj
aGlsZDFdLnNob3VsZFNwZWN1bGF0ZUFycmF5KCkpOwotICAgICAgICBmb3JOb2RlKGNoaWxkMSku
ZmlsdGVyKFNwZWNBcnJheSk7CisgICAgICAgIGZvck5vZGUoY2hpbGQxKS5maWx0ZXIoU3BlY0Nl
bGwpOwogICAgICAgICBmb3JOb2RlKGNoaWxkMikuZmlsdGVyKFNwZWNJbnQzMik7CiAgICAgICAg
IGlmIChub2RlLm9wKCkgPT0gUHV0QnlWYWxTYWZlKQogICAgICAgICAgICAgY2xvYmJlcldvcmxk
KG5vZGUuY29kZU9yaWdpbiwgaW5kZXhJbkJsb2NrKTsKQEAgLTEwNjMsMTMgKzEwNTYsMTMgQEAg
Ym9vbCBBYnN0cmFjdFN0YXRlOjpleGVjdXRlKHVuc2lnbmVkIGluZAogICAgICAgICAgICAgCiAg
ICAgY2FzZSBBcnJheVB1c2g6CiAgICAgICAgIG5vZGUuc2V0Q2FuRXhpdCh0cnVlKTsKLSAgICAg
ICAgZm9yTm9kZShub2RlLmNoaWxkMSgpKS5maWx0ZXIoU3BlY0FycmF5KTsKKyAgICAgICAgZm9y
Tm9kZShub2RlLmNoaWxkMSgpKS5maWx0ZXIoU3BlY0NlbGwpOwogICAgICAgICBmb3JOb2RlKG5v
ZGVJbmRleCkuc2V0KFNwZWNOdW1iZXIpOwogICAgICAgICBicmVhazsKICAgICAgICAgICAgIAog
ICAgIGNhc2UgQXJyYXlQb3A6CiAgICAgICAgIG5vZGUuc2V0Q2FuRXhpdCh0cnVlKTsKLSAgICAg
ICAgZm9yTm9kZShub2RlLmNoaWxkMSgpKS5maWx0ZXIoU3BlY0FycmF5KTsKKyAgICAgICAgZm9y
Tm9kZShub2RlLmNoaWxkMSgpKS5maWx0ZXIoU3BlY0NlbGwpOwogICAgICAgICBmb3JOb2RlKG5v
ZGVJbmRleCkubWFrZVRvcCgpOwogICAgICAgICBicmVhazsKICAgICAgICAgICAgIApAQCAtMTM1
NCw3ICsxMzQ3LDcgQEAgYm9vbCBBYnN0cmFjdFN0YXRlOjpleGVjdXRlKHVuc2lnbmVkIGluZAog
ICAgICAgICAgICAgCiAgICAgY2FzZSBHZXRBcnJheUxlbmd0aDoKICAgICAgICAgbm9kZS5zZXRD
YW5FeGl0KHRydWUpOwotICAgICAgICBmb3JOb2RlKG5vZGUuY2hpbGQxKCkpLmZpbHRlcihTcGVj
QXJyYXkpOworICAgICAgICBmb3JOb2RlKG5vZGUuY2hpbGQxKCkpLmZpbHRlcihTcGVjQ2VsbCk7
CiAgICAgICAgIGZvck5vZGUobm9kZUluZGV4KS5zZXQoU3BlY0ludDMyKTsKICAgICAgICAgYnJl
YWs7CiAKQEAgLTE1MTQsNyArMTUwNyw3IEBAIGJvb2wgQWJzdHJhY3RTdGF0ZTo6ZXhlY3V0ZSh1
bnNpZ25lZCBpbmQKICAgICAgICAgICAgIGZvck5vZGUobm9kZUluZGV4KS5jbGVhcigpOwogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KLSAgICAgICAgZm9yTm9kZShub2RlLmNoaWxkMSgp
KS5maWx0ZXIoU3BlY0FycmF5KTsKKyAgICAgICAgZm9yTm9kZShub2RlLmNoaWxkMSgpKS5maWx0
ZXIoU3BlY0NlbGwpOwogICAgICAgICBmb3JOb2RlKG5vZGVJbmRleCkuY2xlYXIoKTsKICAgICAg
ICAgYnJlYWs7IAogICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJz
dHJhY3RWYWx1ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
QWJzdHJhY3RWYWx1ZS5oCShyZXZpc2lvbiAxMjQ0MTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0Fic3RyYWN0VmFsdWUuaAkod29ya2luZyBjb3B5KQpAQCAtMjgyLDYgKzI4Miwx
NyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBzcGVjdWxhdGlvbkZyb21TdHJ1Y3R1cmUobV9z
dHJ1Y3R1cmUpOwogICAgIH0KICAgICAKKyAgICBib29sIGhhc1NpbmdsZXRvbigpIGNvbnN0Cisg
ICAgeworICAgICAgICByZXR1cm4gaXNOZWl0aGVyQ2xlYXJOb3JUb3AoKTsKKyAgICB9CisgICAg
CisgICAgU3RydWN0dXJlKiBzaW5nbGV0b24oKSBjb25zdAorICAgIHsKKyAgICAgICAgQVNTRVJU
KGlzTmVpdGhlckNsZWFyTm9yVG9wKCkpOworICAgICAgICByZXR1cm4gbV9zdHJ1Y3R1cmU7Cisg
ICAgfQorICAgIAogICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTdHJ1Y3R1cmVBYnN0cmFjdFZh
bHVlJiBvdGhlcikgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiBtX3N0cnVjdHVyZSA9PSBv
dGhlci5tX3N0cnVjdHVyZTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJn
dW1lbnRzU2ltcGxpZmljYXRpb25QaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdBcmd1bWVudHNTaW1wbGlmaWNhdGlvblBoYXNlLmNwcAkocmV2aXNp
b24gMTI0NDExKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcmd1bWVudHNTaW1w
bGlmaWNhdGlvblBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzE3LDYgKzMxNywxNSBAQCBw
dWJsaWM6CiAgICAgICAgICAgICAgICAgICAgIC8vIFBoYW50b21Bcmd1bWVudHMgYW5kIE9TUiBl
eGl0IHdpbGwgc3RpbGwgZG8gdGhlIHJpZ2h0IHRoaW5ncy4KICAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIGNhc2UgQ2hlY2tT
dHJ1Y3R1cmU6CisgICAgICAgICAgICAgICAgY2FzZSBTdHJ1Y3R1cmVUcmFuc2l0aW9uV2F0Y2hw
b2ludDoKKyAgICAgICAgICAgICAgICAgICAgLy8gV2UgZG9uJ3QgY2FyZSBhYm91dCB0aGVzZSBi
ZWNhdXNlIGlmIHdlIGdldCB1c2VzIG9mIHRoZSByZWxldmFudAorICAgICAgICAgICAgICAgICAg
ICAvLyB2YXJpYWJsZSB0aGVuIHdlIGNhbiBzYWZlbHkgZ2V0IHJpZCBvZiB0aGVzZSwgdG9vLiBU
aGlzIG9mIGNvdXJzZQorICAgICAgICAgICAgICAgICAgICAvLyByZWxpZXMgb24gdGhlcmUgbm90
IGJlaW5nIGFueSBpbmZvcm1hdGlvbiB0cmFuc2ZlcnJlZCBieSB0aGUgQ0ZBCisgICAgICAgICAg
ICAgICAgICAgIC8vIGZyb20gYSBDaGVja1N0cnVjdHVyZSBvbiBvbmUgdmFyaWFibGUgdG8gdGhl
IGluZm9ybWF0aW9uIGFib3V0IHRoZQorICAgICAgICAgICAgICAgICAgICAvLyBzdHJ1Y3R1cmVz
IG9mIGFub3RoZXIgdmFyaWFibGUuCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAg
ICAgICBvYnNlcnZlQmFkQXJndW1lbnRzVXNlcyhub2RlKTsKICAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CkBAIC00NzEsNiArNDgwLDE3IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAg
ICAgICAgICBjYXNlIENoZWNrU3RydWN0dXJlOgorICAgICAgICAgICAgICAgIGNhc2UgU3RydWN0
dXJlVHJhbnNpdGlvbldhdGNocG9pbnQ6IHsKKyAgICAgICAgICAgICAgICAgICAgLy8gV2UgY2Fu
IGp1c3QgZ2V0IHJpZCBvZiB0aGlzIG5vZGUsIGlmIGl0IHJlZmVyZW5jZXMgYSBwaGFudG9tIGFy
Z3VtZW50LgorICAgICAgICAgICAgICAgICAgICBpZiAoIWlzT0tUb09wdGltaXplKG1fZ3JhcGhb
bm9kZS5jaGlsZDEoKV0pKQorICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICAgICAgICAgIG1fZ3JhcGguZGVyZWYobm9kZS5jaGlsZDEoKSk7CisgICAgICAgICAgICAg
ICAgICAgIG5vZGUuc2V0T3BBbmREZWZhdWx0RmxhZ3MoUGhhbnRvbSk7CisgICAgICAgICAgICAg
ICAgICAgIG5vZGUuY2hpbGRyZW4uc2V0Q2hpbGQxKEVkZ2UoKSk7CisgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgCiAgICAg
ICAgICAgICAgICAgY2FzZSBHZXRCeVZhbDogewogICAgICAgICAgICAgICAgICAgICBpZiAoIW5v
ZGUucHJlZGljdGlvbigpCiAgICAgICAgICAgICAgICAgICAgICAgICB8fCAhbV9ncmFwaFtub2Rl
LmNoaWxkMSgpXS5wcmVkaWN0aW9uKCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQnl0ZUNvZGVQYXJzZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCShyZXZpc2lvbiAxMjU0OTMpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjE0OSw2ICsyMTQ5LDEwIEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5z
aWduZWQKICAgICAgICAgICAgIAogICAgICAgICAgICAgTm9kZUluZGV4IGJhc2UgPSBnZXQoY3Vy
cmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZCk7CiAgICAgICAgICAgICBOb2RlSW5kZXggcHJv
cGVydHkgPSBnZXQoY3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFuZCk7CisgICAgICAgICAg
ICBBcnJheVByb2ZpbGUqIHByb2ZpbGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bNF0udS5hcnJheVBy
b2ZpbGU7CisgICAgICAgICAgICBwcm9maWxlLT5jb21wdXRlVXBkYXRlZFByZWRpY3Rpb24oKTsK
KyAgICAgICAgICAgIGlmIChwcm9maWxlLT5oYXNEZWZpbml0ZVN0cnVjdHVyZSgpKQorICAgICAg
ICAgICAgICAgIGFkZFRvR3JhcGgoQ2hlY2tTdHJ1Y3R1cmUsIE9wSW5mbyhtX2dyYXBoLmFkZFN0
cnVjdHVyZVNldChwcm9maWxlLT5leHBlY3RlZFN0cnVjdHVyZSgpKSksIGJhc2UpOwogICAgICAg
ICAgICAgTm9kZUluZGV4IHByb3BlcnR5U3RvcmFnZSA9IGFkZFRvR3JhcGgoR2V0SW5kZXhlZFBy
b3BlcnR5U3RvcmFnZSwgYmFzZSwgcHJvcGVydHkpOwogICAgICAgICAgICAgTm9kZUluZGV4IGdl
dEJ5VmFsID0gYWRkVG9HcmFwaChHZXRCeVZhbCwgT3BJbmZvKDApLCBPcEluZm8ocHJlZGljdGlv
biksIGJhc2UsIHByb3BlcnR5LCBwcm9wZXJ0eVN0b3JhZ2UpOwogICAgICAgICAgICAgc2V0KGN1
cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQsIGdldEJ5VmFsKTsKQEAgLTIxNjAsNiArMjE2
NCwxNSBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkCiAgICAgICAg
ICAgICBOb2RlSW5kZXggYmFzZSA9IGdldChjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5k
KTsKICAgICAgICAgICAgIE5vZGVJbmRleCBwcm9wZXJ0eSA9IGdldChjdXJyZW50SW5zdHJ1Y3Rp
b25bMl0udS5vcGVyYW5kKTsKICAgICAgICAgICAgIE5vZGVJbmRleCB2YWx1ZSA9IGdldChjdXJy
ZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAg
QXJyYXlQcm9maWxlKiBwcm9maWxlID0gY3VycmVudEluc3RydWN0aW9uWzRdLnUuYXJyYXlQcm9m
aWxlOworICAgICAgICAgICAgcHJvZmlsZS0+Y29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKCk7Cisg
ICAgICAgICAgICBpZiAocHJvZmlsZS0+aGFzRGVmaW5pdGVTdHJ1Y3R1cmUoKSkKKyAgICAgICAg
ICAgICAgICBhZGRUb0dyYXBoKENoZWNrU3RydWN0dXJlLCBPcEluZm8obV9ncmFwaC5hZGRTdHJ1
Y3R1cmVTZXQocHJvZmlsZS0+ZXhwZWN0ZWRTdHJ1Y3R1cmUoKSkpLCBiYXNlKTsKKworI2lmIERG
R19FTkFCTEUoREVCVUdfUFJPUEFHQVRJT05fVkVSQk9TRSkKKyAgICAgICAgICAgIGRhdGFMb2co
IlNsb3cgY2FzZSBwcm9maWxlIGZvciBiYyMldTogJXVcbiIsIG1fY3VycmVudEluZGV4LCBtX2lu
bGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2stPnJhcmVDYXNlUHJvZmlsZUZvckJ5dGVjb2Rl
T2Zmc2V0KG1fY3VycmVudEluZGV4KS0+bV9jb3VudGVyKTsKKyNlbmRpZgogCiAgICAgICAgICAg
ICBib29sIG1ha2VTYWZlID0KICAgICAgICAgICAgICAgICBtX2lubGluZVN0YWNrVG9wLT5tX3By
b2ZpbGVkQmxvY2stPmNvdWxkVGFrZVNsb3dDYXNlKG1fY3VycmVudEluZGV4KQpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCShyZXZpc2lvbiAxMjQ0
MTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC05Niw5ICs5NiwyOSBAQCBwcml2YXRlOgogI2lmIERGR19FTkFCTEUoREVC
VUdfUFJPUEFHQVRJT05fVkVSQk9TRSkKICAgICAgICAgICAgIGRhdGFMb2coIiAgQCV1IC0+ICVz
IiwgbV9jb21waWxlSW5kZXgsIGlzQXJyYXkgPyAiR2V0QXJyYXlMZW5ndGgiIDogIkdldFN0cmlu
Z0xlbmd0aCIpOwogI2VuZGlmCi0gICAgICAgICAgICBpZiAoaXNBcnJheSkKKyAgICAgICAgICAg
IGlmIChpc0FycmF5KSB7CiAgICAgICAgICAgICAgICAgbm9kZS5zZXRPcChHZXRBcnJheUxlbmd0
aCk7Ci0gICAgICAgICAgICBlbHNlIGlmIChpc0FyZ3VtZW50cykKKyAgICAgICAgICAgICAgICBB
U1NFUlQobm9kZS5mbGFncygpICYgTm9kZU11c3RHZW5lcmF0ZSk7CisgICAgICAgICAgICAgICAg
bm9kZS5jbGVhckZsYWdzKE5vZGVNdXN0R2VuZXJhdGUpOworICAgICAgICAgICAgICAgIG1fZ3Jh
cGguZGVyZWYobV9jb21waWxlSW5kZXgpOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAg
ICAgIEFycmF5UHJvZmlsZSogYXJyYXlQcm9maWxlID0gCisgICAgICAgICAgICAgICAgICAgIG1f
Z3JhcGguYmFzZWxpbmVDb2RlQmxvY2tGb3Iobm9kZS5jb2RlT3JpZ2luKS0+Z2V0QXJyYXlQcm9m
aWxlKAorICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS5jb2RlT3JpZ2luLmJ5dGVjb2RlSW5k
ZXgpOworICAgICAgICAgICAgICAgIGlmICghYXJyYXlQcm9maWxlKQorICAgICAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBhcnJheVByb2ZpbGUtPmNvbXB1dGVVcGRhdGVk
UHJlZGljdGlvbigpOworICAgICAgICAgICAgICAgIGlmICghYXJyYXlQcm9maWxlLT5oYXNEZWZp
bml0ZVN0cnVjdHVyZSgpKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
ICAgICBtX2dyYXBoLnJlZihub2RlLmNoaWxkMSgpKTsKKyAgICAgICAgICAgICAgICBOb2RlIGNo
ZWNrU3RydWN0dXJlKENoZWNrU3RydWN0dXJlLCBub2RlLmNvZGVPcmlnaW4sIE9wSW5mbyhtX2dy
YXBoLmFkZFN0cnVjdHVyZVNldChhcnJheVByb2ZpbGUtPmV4cGVjdGVkU3RydWN0dXJlKCkpKSwg
bm9kZS5jaGlsZDEoKS5pbmRleCgpKTsKKyAgICAgICAgICAgICAgICBjaGVja1N0cnVjdHVyZS5y
ZWYoKTsKKyAgICAgICAgICAgICAgICBOb2RlSW5kZXggY2hlY2tTdHJ1Y3R1cmVJbmRleCA9IG1f
Z3JhcGguc2l6ZSgpOworICAgICAgICAgICAgICAgIG1fZ3JhcGguYXBwZW5kKGNoZWNrU3RydWN0
dXJlKTsKKyAgICAgICAgICAgICAgICBtX2luc2VydGlvblNldC5hcHBlbmQobV9pbmRleEluQmxv
Y2ssIGNoZWNrU3RydWN0dXJlSW5kZXgpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgfQorICAgICAgICAgICAgaWYgKGlzQXJndW1lbnRzKQogICAgICAgICAgICAgICAgIG5v
ZGUuc2V0T3AoR2V0QXJndW1lbnRzTGVuZ3RoKTsKICAgICAgICAgICAgIGVsc2UgaWYgKGlzU3Ry
aW5nKQogICAgICAgICAgICAgICAgIG5vZGUuc2V0T3AoR2V0U3RyaW5nTGVuZ3RoKTsKQEAgLTEz
MSw4ICsxNTEsNyBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIEdldEluZGV4ZWRQcm9wZXJ0eVN0
b3JhZ2U6IHsKICAgICAgICAgICAgIFNwZWN1bGF0ZWRUeXBlIGJhc2VQcmVkaWN0aW9uID0gbV9n
cmFwaFtub2RlLmNoaWxkMigpXS5wcmVkaWN0aW9uKCk7CiAgICAgICAgICAgICBpZiAoKCEoYmFz
ZVByZWRpY3Rpb24gJiBTcGVjSW50MzIpICYmIGJhc2VQcmVkaWN0aW9uKQotICAgICAgICAgICAg
ICAgIHx8IG1fZ3JhcGhbbm9kZS5jaGlsZDEoKV0uc2hvdWxkU3BlY3VsYXRlQXJndW1lbnRzKCkK
LSAgICAgICAgICAgICAgICB8fCAhaXNBY3Rpb25hYmxlQXJyYXlTcGVjdWxhdGlvbihtX2dyYXBo
W25vZGUuY2hpbGQxKCldLnByZWRpY3Rpb24oKSkpIHsKKyAgICAgICAgICAgICAgICB8fCBtX2dy
YXBoW25vZGUuY2hpbGQxKCldLnNob3VsZFNwZWN1bGF0ZUFyZ3VtZW50cygpKSB7CiAgICAgICAg
ICAgICAgICAgbm9kZS5zZXRPcEFuZERlZmF1bHRGbGFncyhOb3ApOwogICAgICAgICAgICAgICAg
IG1fZ3JhcGguY2xlYXJBbmREZXJlZkNoaWxkMShub2RlKTsKICAgICAgICAgICAgICAgICBtX2dy
YXBoLmNsZWFyQW5kRGVyZWZDaGlsZDIobm9kZSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAJKHJldmlzaW9uIDEy
NTQ5MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82
NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5MTgsNyArMTkxOCw3IEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGUoTm9kZSYgbm9kZSkKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgICAgIH0KIAotICAgICAgICAgICAgaWYgKGlzQXJyYXlTcGVjdWxhdGlvbih2YWx1ZS5tX3R5
cGUpIHx8IGlzQ2VsbFNwZWN1bGF0aW9uKHZhbHVlLm1fdHlwZSkpIHsKKyAgICAgICAgICAgIGlm
IChpc0NlbGxTcGVjdWxhdGlvbih2YWx1ZS5tX3R5cGUpKSB7CiAgICAgICAgICAgICAgICAgR1BS
VGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsKICAgICAgICAgICAgICAgICBtX2ppdC5sb2FkMzIoSklU
Q29tcGlsZXI6OnBheWxvYWRGb3Iobm9kZS5sb2NhbCgpKSwgcmVzdWx0LmdwcigpKTsKIApAQCAt
MjAzNiwxNiArMjAzNiw2IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSYgbm9k
ZSkKICAgICAgICAgICAgICAgICByZWNvcmRTZXRMb2NhbChub2RlLmxvY2FsKCksIFZhbHVlU291
cmNlKEludDMySW5SZWdpc3RlckZpbGUpKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgIGlmIChpc0FycmF5U3BlY3VsYXRpb24ocHJlZGljdGVkVHlw
ZSkpIHsKLSAgICAgICAgICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBjZWxsKHRoaXMsIG5v
ZGUuY2hpbGQxKCkpOwotICAgICAgICAgICAgICAgIEdQUlJlZyBjZWxsR1BSID0gY2VsbC5ncHIo
KTsKLSAgICAgICAgICAgICAgICBpZiAoIWlzQXJyYXlTcGVjdWxhdGlvbihtX3N0YXRlLmZvck5v
ZGUobm9kZS5jaGlsZDEoKSkubV90eXBlKSkKLSAgICAgICAgICAgICAgICAgICAgc3BlY3VsYXRp
b25DaGVjayhCYWRUeXBlLCBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChjZWxsR1BSKSwgbm9k
ZS5jaGlsZDEoKSwgbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFj
cm9Bc3NlbWJsZXI6OkFkZHJlc3MoY2VsbEdQUiwgSlNDZWxsOjpjbGFzc0luZm9PZmZzZXQoKSks
IE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKCZKU0FycmF5OjpzX2luZm8pKSk7Ci0gICAg
ICAgICAgICAgICAgbV9qaXQuc3RvcmVQdHIoY2VsbEdQUiwgSklUQ29tcGlsZXI6OnBheWxvYWRG
b3Iobm9kZS5sb2NhbCgpKSk7Ci0gICAgICAgICAgICAgICAgbm9SZXN1bHQobV9jb21waWxlSW5k
ZXgpOwotICAgICAgICAgICAgICAgIHJlY29yZFNldExvY2FsKG5vZGUubG9jYWwoKSwgVmFsdWVT
b3VyY2UoQ2VsbEluUmVnaXN0ZXJGaWxlKSk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgICAgICB9CiAgICAgICAgICAgICBpZiAoaXNDZWxsU3BlY3VsYXRpb24ocHJlZGljdGVkVHlw
ZSkpIHsKICAgICAgICAgICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBjZWxsKHRoaXMsIG5v
ZGUuY2hpbGQxKCkpOwogICAgICAgICAgICAgICAgIEdQUlJlZyBjZWxsR1BSID0gY2VsbC5ncHIo
KTsKQEAgLTIzNTYsNyArMjM0Niw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9k
ZSYgbm9kZSkKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIAotICAgICAg
ICBpZiAoIWF0KG5vZGUuY2hpbGQyKCkpLnNob3VsZFNwZWN1bGF0ZUludGVnZXIoKSB8fCAhaXNB
Y3Rpb25hYmxlQXJyYXlTcGVjdWxhdGlvbihhdChub2RlLmNoaWxkMSgpKS5wcmVkaWN0aW9uKCkp
KSB7CisgICAgICAgIGlmICghYXQobm9kZS5jaGlsZDIoKSkuc2hvdWxkU3BlY3VsYXRlSW50ZWdl
cigpKSB7CiAgICAgICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUu
Y2hpbGQxKCkpOyAvLyBTYXZlIGEgcmVnaXN0ZXIsIHNwZWN1bGF0ZSBjZWxsLiBXZSdsbCBwcm9i
YWJseSBiZSByaWdodC4KICAgICAgICAgICAgIEpTVmFsdWVPcGVyYW5kIHByb3BlcnR5KHRoaXMs
IG5vZGUuY2hpbGQyKCkpOwogICAgICAgICAgICAgR1BSUmVnIGJhc2VHUFIgPSBiYXNlLmdwcigp
OwpAQCAtMjQ0OSw4ICsyNDM5LDYgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2Rl
JiBub2RlKQogICAgICAgICAgICAgYnJlYWs7ICAgICAgICAgICAgCiAgICAgICAgIH0KICAgICAg
ICAgCi0gICAgICAgIEFTU0VSVChhdChub2RlLmNoaWxkMSgpKS5zaG91bGRTcGVjdWxhdGVBcnJh
eSgpKTsKLQogICAgICAgICBTcGVjdWxhdGVTdHJpY3RJbnQzMk9wZXJhbmQgcHJvcGVydHkodGhp
cywgbm9kZS5jaGlsZDIoKSk7CiAgICAgICAgIFN0b3JhZ2VPcGVyYW5kIHN0b3JhZ2UodGhpcywg
bm9kZS5jaGlsZDMoKSk7CiAgICAgICAgIEdQUlJlZyBwcm9wZXJ0eVJlZyA9IHByb3BlcnR5Lmdw
cigpOwpAQCAtMjQ2NCwxNyArMjQ1MiwxMyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxl
KE5vZGUmIG5vZGUpCiAgICAgICAgIHsKICAgICAgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5k
IGJhc2UodGhpcywgbm9kZS5jaGlsZDEoKSk7CiAgICAgICAgICAgICBHUFJSZWcgYmFzZVJlZyA9
IGJhc2UuZ3ByKCk7Ci0gICAgICAgICAgICBpZiAoIWlzQXJyYXlTcGVjdWxhdGlvbihtX3N0YXRl
LmZvck5vZGUobm9kZS5jaGlsZDEoKSkubV90eXBlKSkKLSAgICAgICAgICAgICAgICBzcGVjdWxh
dGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKGJhc2VSZWcpLCBu
b2RlLmNoaWxkMSgpLCBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBN
YWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlUmVnLCBKU0NlbGw6OmNsYXNzSW5mb09mZnNldCgp
KSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoJkpTQXJyYXk6OnNfaW5mbykpKTsKKyAg
ICAgICAgICAgIC8vIFdlJ3ZlIGFscmVhZHkgc3BlY3VsYXRlZCB0aGF0IGl0J3Mgc29tZSBraW5k
IG9mIGFycmF5LCBhdCB0aGlzIHBvaW50LgogICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhV
bmNvdW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgTm9Ob2RlLCBtX2ppdC5icmFuY2gzMihNYWNyb0Fz
c2VtYmxlcjo6QWJvdmVPckVxdWFsLCBwcm9wZXJ0eVJlZywgTWFjcm9Bc3NlbWJsZXI6OkFkZHJl
c3MoYmFzZVJlZywgSlNBcnJheTo6dmVjdG9yTGVuZ3RoT2Zmc2V0KCkpKSk7CiAgICAgICAgIH0K
IAogICAgICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0VGFnKHRoaXMpOwogICAgICAgICBHUFJUZW1w
b3JhcnkgcmVzdWx0UGF5bG9hZCh0aGlzKTsKIAotICAgICAgICAvLyBGSVhNRTogSW4gY2FzZXMg
d2hlcmUgdGhlcmUgYXJlIHN1YnNlcXVlbnQgYnlfdmFsIGFjY2Vzc2VzIHRvIHRoZSBzYW1lIGJh
c2UgaXQgbWlnaHQgaGVscCB0byBjYWNoZQotICAgICAgICAvLyB0aGUgc3RvcmFnZSBwb2ludGVy
IC0gZXNwZWNpYWxseSBpZiB0aGVyZSBoYXBwZW5zIHRvIGJlIGFub3RoZXIgcmVnaXN0ZXIgZnJl
ZSByaWdodCBub3cuIElmIHdlIGRvIHNvLAotICAgICAgICAvLyB0aGVuIHdlJ2xsIG5lZWQgdG8g
YWxsb2NhdGUgYSBuZXcgdGVtcG9yYXJ5IGZvciByZXN1bHQuCiAgICAgICAgIG1faml0LmxvYWQz
MihNYWNyb0Fzc2VtYmxlcjo6QmFzZUluZGV4KHN0b3JhZ2VSZWcsIHByb3BlcnR5UmVnLCBNYWNy
b0Fzc2VtYmxlcjo6VGltZXNFaWdodCwgT0JKRUNUX09GRlNFVE9GKEFycmF5U3RvcmFnZSwgbV92
ZWN0b3JbMF0pICsgT0JKRUNUX09GRlNFVE9GKEpTVmFsdWUsIHUuYXNCaXRzLnRhZykpLCByZXN1
bHRUYWcuZ3ByKCkpOwogICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKFVuY291bnRhYmxlLCBKU1Zh
bHVlUmVncygpLCBOb05vZGUsIG1faml0LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpFcXVhbCwg
cmVzdWx0VGFnLmdwcigpLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6RW1wdHlWYWx1ZVRhZykpKTsK
ICAgICAgICAgbV9qaXQubG9hZDMyKE1hY3JvQXNzZW1ibGVyOjpCYXNlSW5kZXgoc3RvcmFnZVJl
ZywgcHJvcGVydHlSZWcsIE1hY3JvQXNzZW1ibGVyOjpUaW1lc0VpZ2h0LCBPQkpFQ1RfT0ZGU0VU
T0YoQXJyYXlTdG9yYWdlLCBtX3ZlY3RvclswXSkgKyBPQkpFQ1RfT0ZGU0VUT0YoSlNWYWx1ZSwg
dS5hc0JpdHMucGF5bG9hZCkpLCByZXN1bHRQYXlsb2FkLmdwcigpKTsKQEAgLTI0OTUsNyArMjQ3
OSw2IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSYgbm9kZSkKICAgICAgICAg
fQogICAgICAgICAKICAgICAgICAgaWYgKCFhdChjaGlsZDIpLnNob3VsZFNwZWN1bGF0ZUludGVn
ZXIoKQotICAgICAgICAgICAgfHwgIWlzQWN0aW9uYWJsZU11dGFibGVBcnJheVNwZWN1bGF0aW9u
KGF0KGNoaWxkMSkucHJlZGljdGlvbigpKQogICAgICAgICAgICAgfHwgYXQoY2hpbGQxKS5zaG91
bGRTcGVjdWxhdGVBcmd1bWVudHMoKSkgewogICAgICAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJh
bmQgYmFzZSh0aGlzLCBjaGlsZDEpOyAvLyBTYXZlIGEgcmVnaXN0ZXIsIHNwZWN1bGF0ZSBjZWxs
LiBXZSdsbCBwcm9iYWJseSBiZSByaWdodC4KICAgICAgICAgICAgIEpTVmFsdWVPcGVyYW5kIHBy
b3BlcnR5KHRoaXMsIGNoaWxkMik7CkBAIC0yNTc4LDI3ICsyNTYxLDIzIEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSYgbm9kZSkKICAgICAgICAgICAgIGJyZWFrOyAgICAgICAg
ICAgIAogICAgICAgICB9CiAgICAgICAgIAotICAgICAgICBBU1NFUlQoYXQoY2hpbGQxKS5zaG91
bGRTcGVjdWxhdGVBcnJheSgpKTsKLQogICAgICAgICBKU1ZhbHVlT3BlcmFuZCB2YWx1ZSh0aGlz
LCBjaGlsZDMpOwotICAgICAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaCh0aGlzKTsKLQogICAgICAg
ICAvLyBNYXAgYmFzZSwgcHJvcGVydHkgJiB2YWx1ZSBpbnRvIHJlZ2lzdGVycywgYWxsb2NhdGUg
YSBzY3JhdGNoIHJlZ2lzdGVyLgogICAgICAgICBHUFJSZWcgYmFzZVJlZyA9IGJhc2UuZ3ByKCk7
CiAgICAgICAgIEdQUlJlZyBwcm9wZXJ0eVJlZyA9IHByb3BlcnR5LmdwcigpOwogICAgICAgICBH
UFJSZWcgdmFsdWVUYWdSZWcgPSB2YWx1ZS50YWdHUFIoKTsKICAgICAgICAgR1BSUmVnIHZhbHVl
UGF5bG9hZFJlZyA9IHZhbHVlLnBheWxvYWRHUFIoKTsKLSAgICAgICAgR1BSUmVnIHNjcmF0Y2hS
ZWcgPSBzY3JhdGNoLmdwcigpOwogICAgICAgICAKICAgICAgICAgaWYgKCFtX2NvbXBpbGVPa2F5
KQogICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAKLSAgICAgICAgd3JpdGVCYXJyaWVyKGJh
c2VSZWcsIHZhbHVlVGFnUmVnLCBjaGlsZDMsIFdyaXRlQmFycmllckZvclByb3BlcnR5QWNjZXNz
LCBzY3JhdGNoUmVnKTsKIAotICAgICAgICAvLyBDaGVjayB0aGF0IGJhc2UgaXMgYW4gYXJyYXks
IGFuZCB0aGF0IHByb3BlcnR5IGlzIGNvbnRhaW5lZCB3aXRoaW4gbV92ZWN0b3IgKDwgbV92ZWN0
b3JMZW5ndGgpLgotICAgICAgICAvLyBJZiB3ZSBoYXZlIHByZWRpY3RlZCB0aGUgYmFzZSB0byBi
ZSB0eXBlIGFycmF5LCB3ZSBjYW4gc2tpcCB0aGUgY2hlY2suCi0gICAgICAgIGlmICghaXNBcnJh
eVNwZWN1bGF0aW9uKG1fc3RhdGUuZm9yTm9kZShjaGlsZDEpLm1fdHlwZSkpCi0gICAgICAgICAg
ICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKGJh
c2VSZWcpLCBjaGlsZDEsIG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWws
IE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VSZWcsIEpTQ2VsbDo6Y2xhc3NJbmZvT2Zmc2V0
KCkpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cigmSlNBcnJheTo6c19pbmZvKSkpOwor
ICAgICAgICB7CisgICAgICAgICAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaCh0aGlzKTsKKyAgICAg
ICAgICAgIEdQUlJlZyBzY3JhdGNoUmVnID0gc2NyYXRjaC5ncHIoKTsKKyAgICAgICAgICAgIHdy
aXRlQmFycmllcihiYXNlUmVnLCB2YWx1ZVRhZ1JlZywgY2hpbGQzLCBXcml0ZUJhcnJpZXJGb3JQ
cm9wZXJ0eUFjY2Vzcywgc2NyYXRjaFJlZyk7CisgICAgICAgIH0KKworICAgICAgICBzcGVjdWxh
dGVBcnJheShjaGlsZDEsIGJhc2VSZWcpOwogCiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1w
IGJleW9uZEFycmF5Qm91bmRzID0gbV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6OkFib3Zl
T3JFcXVhbCwgcHJvcGVydHlSZWcsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VSZWcsIEpT
QXJyYXk6OnZlY3Rvckxlbmd0aE9mZnNldCgpKSk7CiAgICAgICAgIGlmIChub2RlLm9wKCkgPT0g
UHV0QnlWYWwpCkBAIC0yNjA5LDcgKzI1ODgsOCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlKE5vZGUmIG5vZGUpCiAgICAgICAgIHZhbHVlLnVzZSgpOwogICAgICAgICAKICAgICAgICAg
Ly8gR2V0IHRoZSBhcnJheSBzdG9yYWdlLgotICAgICAgICBHUFJSZWcgc3RvcmFnZVJlZyA9IHNj
cmF0Y2hSZWc7CisgICAgICAgIEdQUlRlbXBvcmFyeSBzdG9yYWdlKHRoaXMpOworICAgICAgICBH
UFJSZWcgc3RvcmFnZVJlZyA9IHN0b3JhZ2UuZ3ByKCk7CiAgICAgICAgIG1faml0LmxvYWRQdHIo
TWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZVJlZywgSlNBcnJheTo6c3RvcmFnZU9mZnNldCgp
KSwgc3RvcmFnZVJlZyk7CiAKICAgICAgICAgLy8gQ2hlY2sgaWYgd2UncmUgd3JpdGluZyB0byBh
IGhvbGU7IGlmIHNvIGluY3JlbWVudCBtX251bVZhbHVlc0luVmVjdG9yLgpAQCAtMjc5NSwyMCAr
Mjc3NSwyMyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUmIG5vZGUpCiAgICAg
Y2FzZSBBcnJheVB1c2g6IHsKICAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlz
LCBub2RlLmNoaWxkMSgpKTsKICAgICAgICAgSlNWYWx1ZU9wZXJhbmQgdmFsdWUodGhpcywgbm9k
ZS5jaGlsZDIoKSk7Ci0gICAgICAgIEdQUlRlbXBvcmFyeSBzdG9yYWdlKHRoaXMpOwogICAgICAg
ICBHUFJUZW1wb3Jhcnkgc3RvcmFnZUxlbmd0aCh0aGlzKTsKICAgICAgICAgCiAgICAgICAgIEdQ
UlJlZyBiYXNlR1BSID0gYmFzZS5ncHIoKTsKICAgICAgICAgR1BSUmVnIHZhbHVlVGFnR1BSID0g
dmFsdWUudGFnR1BSKCk7CiAgICAgICAgIEdQUlJlZyB2YWx1ZVBheWxvYWRHUFIgPSB2YWx1ZS5w
YXlsb2FkR1BSKCk7Ci0gICAgICAgIEdQUlJlZyBzdG9yYWdlR1BSID0gc3RvcmFnZS5ncHIoKTsK
ICAgICAgICAgR1BSUmVnIHN0b3JhZ2VMZW5ndGhHUFIgPSBzdG9yYWdlTGVuZ3RoLmdwcigpOwog
ICAgICAgICAKLSAgICAgICAgd3JpdGVCYXJyaWVyKGJhc2VHUFIsIHZhbHVlVGFnR1BSLCBub2Rl
LmNoaWxkMigpLCBXcml0ZUJhcnJpZXJGb3JQcm9wZXJ0eUFjY2Vzcywgc3RvcmFnZUdQUiwgc3Rv
cmFnZUxlbmd0aEdQUik7CisgICAgICAgIHsKKyAgICAgICAgICAgIEdQUlRlbXBvcmFyeSBzY3Jh
dGNoKHRoaXMpOworICAgICAgICAgICAgd3JpdGVCYXJyaWVyKGJhc2VHUFIsIHZhbHVlVGFnR1BS
LCBub2RlLmNoaWxkMigpLCBXcml0ZUJhcnJpZXJGb3JQcm9wZXJ0eUFjY2Vzcywgc2NyYXRjaC5n
cHIoKSwgc3RvcmFnZUxlbmd0aEdQUik7CisgICAgICAgIH0KIAotICAgICAgICBpZiAoIWlzQXJy
YXlTcGVjdWxhdGlvbihtX3N0YXRlLmZvck5vZGUobm9kZS5jaGlsZDEoKSkubV90eXBlKSkKLSAg
ICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1ZVNvdXJjZTo6dW5ib3hl
ZENlbGwoYmFzZUdQUiksIG5vZGUuY2hpbGQxKCksIG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2Vt
Ymxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTQ2VsbDo6
Y2xhc3NJbmZvT2Zmc2V0KCkpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cigmSlNBcnJh
eTo6c19pbmZvKSkpOworICAgICAgICBzcGVjdWxhdGVBcnJheShub2RlLmNoaWxkMSgpLCBiYXNl
R1BSKTsKICAgICAgICAgCisgICAgICAgIEdQUlRlbXBvcmFyeSBzdG9yYWdlKHRoaXMpOworICAg
ICAgICBHUFJSZWcgc3RvcmFnZUdQUiA9IHN0b3JhZ2UuZ3ByKCk7CisKICAgICAgICAgbV9qaXQu
bG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU0FycmF5OjpzdG9yYWdl
T2Zmc2V0KCkpLCBzdG9yYWdlR1BSKTsKICAgICAgICAgbV9qaXQubG9hZDMyKE1hY3JvQXNzZW1i
bGVyOjpBZGRyZXNzKHN0b3JhZ2VHUFIsIE9CSkVDVF9PRkZTRVRPRihBcnJheVN0b3JhZ2UsIG1f
bGVuZ3RoKSksIHN0b3JhZ2VMZW5ndGhHUFIpOwogICAgICAgICAKQEAgLTI4NDQsOCArMjgyNyw3
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSYgbm9kZSkKICAgICAgICAgR1BS
UmVnIHN0b3JhZ2VHUFIgPSBzdG9yYWdlLmdwcigpOwogICAgICAgICBHUFJSZWcgc3RvcmFnZUxl
bmd0aEdQUiA9IHN0b3JhZ2VMZW5ndGguZ3ByKCk7CiAgICAgICAgIAotICAgICAgICBpZiAoIWlz
QXJyYXlTcGVjdWxhdGlvbihtX3N0YXRlLmZvck5vZGUobm9kZS5jaGlsZDEoKSkubV90eXBlKSkK
LSAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1ZVNvdXJjZTo6dW5i
b3hlZENlbGwoYmFzZUdQUiksIG5vZGUuY2hpbGQxKCksIG1faml0LmJyYW5jaFB0cihNYWNyb0Fz
c2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTQ2Vs
bDo6Y2xhc3NJbmZvT2Zmc2V0KCkpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cigmSlNB
cnJheTo6c19pbmZvKSkpOworICAgICAgICBzcGVjdWxhdGVBcnJheShub2RlLmNoaWxkMSgpLCBi
YXNlR1BSKTsKICAgICAgICAgCiAgICAgICAgIG1faml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6
OkFkZHJlc3MoYmFzZUdQUiwgSlNBcnJheTo6c3RvcmFnZU9mZnNldCgpKSwgc3RvcmFnZUdQUik7
CiAgICAgICAgIG1faml0LmxvYWQzMihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzdG9yYWdlR1BS
LCBPQkpFQ1RfT0ZGU0VUT0YoQXJyYXlTdG9yYWdlLCBtX2xlbmd0aCkpLCBzdG9yYWdlTGVuZ3Ro
R1BSKTsKQEAgLTMzOTUsOCArMzM3Nyw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUo
Tm9kZSYgbm9kZSkKICAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBub2Rl
LmNoaWxkMSgpKTsKICAgICAgICAgR1BSUmVnIGJhc2VHUFIgPSBiYXNlLmdwcigpOwogICAgICAg
ICAKLSAgICAgICAgaWYgKCFpc0FycmF5U3BlY3VsYXRpb24obV9zdGF0ZS5mb3JOb2RlKG5vZGUu
Y2hpbGQxKCkpLm1fdHlwZSkpCi0gICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUs
IEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKGJhc2VHUFIpLCBub2RlLmNoaWxkMSgpLCBtX2pp
dC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRk
cmVzcyhiYXNlR1BSLCBKU0NlbGw6OmNsYXNzSW5mb09mZnNldCgpKSwgTWFjcm9Bc3NlbWJsZXI6
OlRydXN0ZWRJbW1QdHIoJkpTQXJyYXk6OnNfaW5mbykpKTsKKyAgICAgICAgc3BlY3VsYXRlQXJy
YXkobm9kZS5jaGlsZDEoKSwgYmFzZUdQUik7CiAgICAgICAgIAogICAgICAgICBHUFJUZW1wb3Jh
cnkgcmVzdWx0KHRoaXMpOwogICAgICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0Lmdwcigp
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZl
SklUNjQuY3BwCShyZXZpc2lvbiAxMjU0OTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMDcyLDE2ICsyMDcy
LDYgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlJiBub2RlKQogICAgICAgICAg
ICAgICAgIHJlY29yZFNldExvY2FsKG5vZGUubG9jYWwoKSwgVmFsdWVTb3VyY2UoSW50MzJJblJl
Z2lzdGVyRmlsZSkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQotICAg
ICAgICAgICAgaWYgKGlzQXJyYXlTcGVjdWxhdGlvbihwcmVkaWN0ZWRUeXBlKSkgewotICAgICAg
ICAgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGNlbGwodGhpcywgbm9kZS5jaGlsZDEoKSk7
Ci0gICAgICAgICAgICAgICAgR1BSUmVnIGNlbGxHUFIgPSBjZWxsLmdwcigpOwotICAgICAgICAg
ICAgICAgIGlmICghaXNBcnJheVNwZWN1bGF0aW9uKG1fc3RhdGUuZm9yTm9kZShub2RlLmNoaWxk
MSgpKS5tX3R5cGUpKQotICAgICAgICAgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5
cGUsIEpTVmFsdWVSZWdzKGNlbGxHUFIpLCBub2RlLmNoaWxkMSgpLCBtX2ppdC5icmFuY2hQdHIo
TWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhjZWxsR1BS
LCBKU0NlbGw6OmNsYXNzSW5mb09mZnNldCgpKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1Q
dHIoJkpTQXJyYXk6OnNfaW5mbykpKTsKLSAgICAgICAgICAgICAgICBtX2ppdC5zdG9yZVB0cihj
ZWxsR1BSLCBKSVRDb21waWxlcjo6YWRkcmVzc0Zvcihub2RlLmxvY2FsKCkpKTsKLSAgICAgICAg
ICAgICAgICBub1Jlc3VsdChtX2NvbXBpbGVJbmRleCk7Ci0gICAgICAgICAgICAgICAgcmVjb3Jk
U2V0TG9jYWwobm9kZS5sb2NhbCgpLCBWYWx1ZVNvdXJjZShDZWxsSW5SZWdpc3RlckZpbGUpKTsK
LSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmIChp
c0NlbGxTcGVjdWxhdGlvbihwcmVkaWN0ZWRUeXBlKSkgewogICAgICAgICAgICAgICAgIFNwZWN1
bGF0ZUNlbGxPcGVyYW5kIGNlbGwodGhpcywgbm9kZS5jaGlsZDEoKSk7CiAgICAgICAgICAgICAg
ICAgR1BSUmVnIGNlbGxHUFIgPSBjZWxsLmdwcigpOwpAQCAtMjM4OSw3ICsyMzc5LDcgQEAgdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlJiBub2RlKQogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIH0KICAgICAgICAgCi0gICAgICAgIGlmICghYXQobm9kZS5jaGlsZDIoKSkuc2hv
dWxkU3BlY3VsYXRlSW50ZWdlcigpIHx8ICFpc0FjdGlvbmFibGVBcnJheVNwZWN1bGF0aW9uKGF0
KG5vZGUuY2hpbGQxKCkpLnByZWRpY3Rpb24oKSkpIHsKKyAgICAgICAgaWYgKCFhdChub2RlLmNo
aWxkMigpKS5zaG91bGRTcGVjdWxhdGVJbnRlZ2VyKCkpIHsKICAgICAgICAgICAgIEpTVmFsdWVP
cGVyYW5kIGJhc2UodGhpcywgbm9kZS5jaGlsZDEoKSk7CiAgICAgICAgICAgICBKU1ZhbHVlT3Bl
cmFuZCBwcm9wZXJ0eSh0aGlzLCBub2RlLmNoaWxkMigpKTsKICAgICAgICAgICAgIEdQUlJlZyBi
YXNlR1BSID0gYmFzZS5ncHIoKTsKQEAgLTI0ODAsOCArMjQ3MCw2IEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGUoTm9kZSYgbm9kZSkKICAgICAgICAgICAgIGJyZWFrOyAgICAgICAgICAg
IAogICAgICAgICB9CiAgICAgICAgIAotICAgICAgICBBU1NFUlQoYXQobm9kZS5jaGlsZDEoKSku
c2hvdWxkU3BlY3VsYXRlQXJyYXkoKSk7Ci0KICAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQg
YmFzZSh0aGlzLCBub2RlLmNoaWxkMSgpKTsKICAgICAgICAgU3BlY3VsYXRlU3RyaWN0SW50MzJP
cGVyYW5kIHByb3BlcnR5KHRoaXMsIG5vZGUuY2hpbGQyKCkpOwogICAgICAgICBTdG9yYWdlT3Bl
cmFuZCBzdG9yYWdlKHRoaXMsIG5vZGUuY2hpbGQzKCkpOwpAQCAtMjQ5MywxMyArMjQ4MSwxMSBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUmIG5vZGUpCiAgICAgICAgIGlmICgh
bV9jb21waWxlT2theSkKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBpZiAoIWlzQXJy
YXlTcGVjdWxhdGlvbihtX3N0YXRlLmZvck5vZGUobm9kZS5jaGlsZDEoKSkubV90eXBlKSkKLSAg
ICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1ZVJlZ3MoYmFzZVJlZyks
IG5vZGUuY2hpbGQxKCksIG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWws
IE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VSZWcsIEpTQ2VsbDo6Y2xhc3NJbmZvT2Zmc2V0
KCkpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cigmSlNBcnJheTo6c19pbmZvKSkpOwor
ICAgICAgICAvLyBXZSB3aWxsIGhhdmUgYWxyZWFkeSBzcGVjdWxhdGVkIHRoYXQgdGhlIGJhc2Ug
aXMgc29tZSBraW5kIG9mIGFycmF5LAorICAgICAgICAvLyBhdCB0aGlzIHBvaW50LgorICAgICAg
ICAKICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhVbmNvdW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwg
Tm9Ob2RlLCBtX2ppdC5icmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6QWJvdmVPckVxdWFsLCBwcm9w
ZXJ0eVJlZywgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZVJlZywgSlNBcnJheTo6dmVjdG9y
TGVuZ3RoT2Zmc2V0KCkpKSk7CiAKLSAgICAgICAgLy8gRklYTUU6IEluIGNhc2VzIHdoZXJlIHRo
ZXJlIGFyZSBzdWJzZXF1ZW50IGJ5X3ZhbCBhY2Nlc3NlcyB0byB0aGUgc2FtZSBiYXNlIGl0IG1p
Z2h0IGhlbHAgdG8gY2FjaGUKLSAgICAgICAgLy8gdGhlIHN0b3JhZ2UgcG9pbnRlciAtIGVzcGVj
aWFsbHkgaWYgdGhlcmUgaGFwcGVucyB0byBiZSBhbm90aGVyIHJlZ2lzdGVyIGZyZWUgcmlnaHQg
bm93LiBJZiB3ZSBkbyBzbywKLSAgICAgICAgLy8gdGhlbiB3ZSdsbCBuZWVkIHRvIGFsbG9jYXRl
IGEgbmV3IHRlbXBvcmFyeSBmb3IgcmVzdWx0LgogICAgICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0
KHRoaXMpOwogICAgICAgICBtX2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpCYXNlSW5kZXgo
c3RvcmFnZVJlZywgcHJvcGVydHlSZWcsIE1hY3JvQXNzZW1ibGVyOjpTY2FsZVB0ciwgT0JKRUNU
X09GRlNFVE9GKEFycmF5U3RvcmFnZSwgbV92ZWN0b3JbMF0pKSwgcmVzdWx0LmdwcigpKTsKICAg
ICAgICAgc3BlY3VsYXRpb25DaGVjayhVbmNvdW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgTm9Ob2Rl
LCBtX2ppdC5icmFuY2hUZXN0UHRyKE1hY3JvQXNzZW1ibGVyOjpaZXJvLCByZXN1bHQuZ3ByKCkp
KTsKQEAgLTI1MTksNyArMjUwNSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9k
ZSYgbm9kZSkKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIAotICAgICAg
ICBpZiAoIWF0KGNoaWxkMikuc2hvdWxkU3BlY3VsYXRlSW50ZWdlcigpIHx8ICFpc0FjdGlvbmFi
bGVNdXRhYmxlQXJyYXlTcGVjdWxhdGlvbihhdChjaGlsZDEpLnByZWRpY3Rpb24oKSkpIHsKKyAg
ICAgICAgaWYgKCFhdChjaGlsZDIpLnNob3VsZFNwZWN1bGF0ZUludGVnZXIoKSkgewogICAgICAg
ICAgICAgSlNWYWx1ZU9wZXJhbmQgYXJnMSh0aGlzLCBjaGlsZDEpOwogICAgICAgICAgICAgSlNW
YWx1ZU9wZXJhbmQgYXJnMih0aGlzLCBjaGlsZDIpOwogICAgICAgICAgICAgSlNWYWx1ZU9wZXJh
bmQgYXJnMyh0aGlzLCBjaGlsZDMpOwpAQCAtMjY1Niw4ICsyNjQyLDYgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZShOb2RlJiBub2RlKQogICAgICAgICAgICAgYnJlYWs7ICAgICAgICAg
ICAgCiAgICAgICAgIH0KICAgICAgICAgICAgIAotICAgICAgICBBU1NFUlQoYXQoY2hpbGQxKS5z
aG91bGRTcGVjdWxhdGVBcnJheSgpKTsKLQogICAgICAgICBKU1ZhbHVlT3BlcmFuZCB2YWx1ZSh0
aGlzLCBjaGlsZDMpOwogICAgICAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaCh0aGlzKTsKIApAQCAt
MjY3MiwxMSArMjY1Niw4IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSYgbm9k
ZSkKICAgICAgICAgCiAgICAgICAgIHdyaXRlQmFycmllcihiYXNlUmVnLCB2YWx1ZS5ncHIoKSwg
Y2hpbGQzLCBXcml0ZUJhcnJpZXJGb3JQcm9wZXJ0eUFjY2Vzcywgc2NyYXRjaFJlZyk7CiAKLSAg
ICAgICAgLy8gQ2hlY2sgdGhhdCBiYXNlIGlzIGFuIGFycmF5LCBhbmQgdGhhdCBwcm9wZXJ0eSBp
cyBjb250YWluZWQgd2l0aGluIG1fdmVjdG9yICg8IG1fdmVjdG9yTGVuZ3RoKS4KLSAgICAgICAg
Ly8gSWYgd2UgaGF2ZSBwcmVkaWN0ZWQgdGhlIGJhc2UgdG8gYmUgdHlwZSBhcnJheSwgd2UgY2Fu
IHNraXAgdGhlIGNoZWNrLgotICAgICAgICBpZiAoIWlzQXJyYXlTcGVjdWxhdGlvbihtX3N0YXRl
LmZvck5vZGUoY2hpbGQxKS5tX3R5cGUpKQotICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhC
YWRUeXBlLCBKU1ZhbHVlUmVncyhiYXNlUmVnKSwgY2hpbGQxLCBtX2ppdC5icmFuY2hQdHIoTWFj
cm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlUmVnLCBK
U0NlbGw6OmNsYXNzSW5mb09mZnNldCgpKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIo
JkpTQXJyYXk6OnNfaW5mbykpKTsKLSAgICAgICAgCisgICAgICAgIHNwZWN1bGF0ZUFycmF5KGNo
aWxkMSwgYmFzZVJlZyk7CisKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgYmV5b25kQXJy
YXlCb3VuZHMgPSBtX2ppdC5icmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6QWJvdmVPckVxdWFsLCBw
cm9wZXJ0eVJlZywgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZVJlZywgSlNBcnJheTo6dmVj
dG9yTGVuZ3RoT2Zmc2V0KCkpKTsKICAgICAgICAgaWYgKG5vZGUub3AoKSA9PSBQdXRCeVZhbCkK
ICAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soT3V0T2ZCb3VuZHMsIEpTVmFsdWVSZWdzKCks
IE5vTm9kZSwgYmV5b25kQXJyYXlCb3VuZHMpOwpAQCAtMjg3OSw5ICsyODYwLDggQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlJiBub2RlKQogICAgICAgICAKICAgICAgICAgd3Jp
dGVCYXJyaWVyKGJhc2VHUFIsIHZhbHVlR1BSLCBub2RlLmNoaWxkMigpLCBXcml0ZUJhcnJpZXJG
b3JQcm9wZXJ0eUFjY2Vzcywgc3RvcmFnZUdQUiwgc3RvcmFnZUxlbmd0aEdQUik7CiAKLSAgICAg
ICAgaWYgKCFpc0FycmF5U3BlY3VsYXRpb24obV9zdGF0ZS5mb3JOb2RlKG5vZGUuY2hpbGQxKCkp
Lm1fdHlwZSkpCi0gICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFsdWVS
ZWdzKGJhc2VHUFIpLCBub2RlLmNoaWxkMSgpLCBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJs
ZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU0NlbGw6OmNs
YXNzSW5mb09mZnNldCgpKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoJkpTQXJyYXk6
OnNfaW5mbykpKTsKLSAgICAgICAgCisgICAgICAgIHNwZWN1bGF0ZUFycmF5KG5vZGUuY2hpbGQx
KCksIGJhc2VHUFIpOworCiAgICAgICAgIG1faml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFk
ZHJlc3MoYmFzZUdQUiwgSlNBcnJheTo6c3RvcmFnZU9mZnNldCgpKSwgc3RvcmFnZUdQUik7CiAg
ICAgICAgIG1faml0LmxvYWQzMihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzdG9yYWdlR1BSLCBP
QkpFQ1RfT0ZGU0VUT0YoQXJyYXlTdG9yYWdlLCBtX2xlbmd0aCkpLCBzdG9yYWdlTGVuZ3RoR1BS
KTsKICAgICAgICAgCkBAIC0yOTE3LDkgKzI4OTcsOCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpj
b21waWxlKE5vZGUmIG5vZGUpCiAgICAgICAgIEdQUlJlZyBzdG9yYWdlR1BSID0gc3RvcmFnZS5n
cHIoKTsKICAgICAgICAgR1BSUmVnIHN0b3JhZ2VMZW5ndGhHUFIgPSBzdG9yYWdlTGVuZ3RoLmdw
cigpOwogICAgICAgICAKLSAgICAgICAgaWYgKCFpc0FycmF5U3BlY3VsYXRpb24obV9zdGF0ZS5m
b3JOb2RlKG5vZGUuY2hpbGQxKCkpLm1fdHlwZSkpCi0gICAgICAgICAgICBzcGVjdWxhdGlvbkNo
ZWNrKEJhZFR5cGUsIEpTVmFsdWVSZWdzKGJhc2VHUFIpLCBub2RlLmNoaWxkMSgpLCBtX2ppdC5i
cmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVz
cyhiYXNlR1BSLCBKU0NlbGw6OmNsYXNzSW5mb09mZnNldCgpKSwgTWFjcm9Bc3NlbWJsZXI6OlRy
dXN0ZWRJbW1QdHIoJkpTQXJyYXk6OnNfaW5mbykpKTsKLSAgICAgICAgCisgICAgICAgIHNwZWN1
bGF0ZUFycmF5KG5vZGUuY2hpbGQxKCksIGJhc2VHUFIpOworCiAgICAgICAgIG1faml0LmxvYWRQ
dHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNBcnJheTo6c3RvcmFnZU9mZnNl
dCgpKSwgc3RvcmFnZUdQUik7CiAgICAgICAgIG1faml0LmxvYWQzMihNYWNyb0Fzc2VtYmxlcjo6
QWRkcmVzcyhzdG9yYWdlR1BSLCBPQkpFQ1RfT0ZGU0VUT0YoQXJyYXlTdG9yYWdlLCBtX2xlbmd0
aCkpLCBzdG9yYWdlTGVuZ3RoR1BSKTsKICAgICAgICAgCkBAIC0zNDE1LDkgKzMzOTQsOCBAQCB2
b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUmIG5vZGUpCiAgICAgICAgIEdQUlJlZyBi
YXNlR1BSID0gYmFzZS5ncHIoKTsKICAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5n
cHIoKTsKICAgICAgICAgCi0gICAgICAgIGlmICghaXNBcnJheVNwZWN1bGF0aW9uKG1fc3RhdGUu
Zm9yTm9kZShub2RlLmNoaWxkMSgpKS5tX3R5cGUpKQotICAgICAgICAgICAgc3BlY3VsYXRpb25D
aGVjayhCYWRUeXBlLCBKU1ZhbHVlUmVncyhiYXNlR1BSKSwgbm9kZS5jaGlsZDEoKSwgbV9qaXQu
YnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJl
c3MoYmFzZUdQUiwgSlNDZWxsOjpjbGFzc0luZm9PZmZzZXQoKSksIE1hY3JvQXNzZW1ibGVyOjpU
cnVzdGVkSW1tUHRyKCZKU0FycmF5OjpzX2luZm8pKSk7Ci0gICAgICAgIAorICAgICAgICBzcGVj
dWxhdGVBcnJheShub2RlLmNoaWxkMSgpLCBiYXNlR1BSKTsKKwogICAgICAgICBtX2ppdC5sb2Fk
UHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTQXJyYXk6OnN0b3JhZ2VPZmZz
ZXQoKSksIHJlc3VsdEdQUik7CiAgICAgICAgIG1faml0LmxvYWQzMihNYWNyb0Fzc2VtYmxlcjo6
QWRkcmVzcyhyZXN1bHRHUFIsIE9CSkVDVF9PRkZTRVRPRihBcnJheVN0b3JhZ2UsIG1fbGVuZ3Ro
KSksIHJlc3VsdEdQUik7CiAgICAgICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAJKHJldmlzaW9uIDEyNTQ5MykKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yNDYsNiArMjQ2LDI0IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNsZWFyR2VuZXJhdGlv
bkluZm8KICAgICBtX2ZwcnMgPSBSZWdpc3RlckJhbms8RlBSSW5mbz4oKTsKIH0KIAordm9pZCBT
cGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRlQXJyYXkoRWRnZSBlZGdlLCBHUFJSZWcgYmFzZVJlZykK
K3sKKyAgICBBYnN0cmFjdFZhbHVlJiBhcnJheVZhbHVlID0gbV9zdGF0ZS5mb3JOb2RlKGVkZ2Up
OworICAgIGlmIChhcnJheVZhbHVlLm1fc3RydWN0dXJlLmhhc1NpbmdsZXRvbigpCisgICAgICAg
ICYmIGFycmF5VmFsdWUubV9zdHJ1Y3R1cmUuc2luZ2xldG9uKCktPmNsYXNzSW5mbygpID09ICZK
U0FycmF5OjpzX2luZm8pCisgICAgICAgIHJldHVybjsKKyAgICAKKyAgICBHUFJUZW1wb3Jhcnkg
dGVtcCh0aGlzKTsKKyAgICBtX2ppdC5sb2FkUHRyKAorICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6
QWRkcmVzcyhiYXNlUmVnLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgdGVtcC5ncHIoKSk7
CisgICAgc3BlY3VsYXRpb25DaGVjaygKKyAgICAgICAgVW5jb3VudGFibGUsIEpTVmFsdWVSZWdz
KCksIE5vTm9kZSwKKyAgICAgICAgbV9qaXQuYnJhbmNoUHRyKAorICAgICAgICAgICAgTWFjcm9B
c3NlbWJsZXI6Ok5vdEVxdWFsLAorICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mo
dGVtcC5ncHIoKSwgU3RydWN0dXJlOjpjbGFzc0luZm9PZmZzZXQoKSksCisgICAgICAgICAgICBN
YWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cigmSlNBcnJheTo6c19pbmZvKSkpOworfQorCiBH
UFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxTdG9yYWdlKE5vZGVJbmRleCBub2RlSW5kZXgpCiB7
CiAgICAgTm9kZSYgbm9kZSA9IG1faml0LmdyYXBoKClbbm9kZUluZGV4XTsKQEAgLTEyMjAsNyAr
MTIzOCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoQmFzaWNCbG9jayYKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZVNvdXJjZSA9IFZhbHVlU291cmNlKERvdWJsZUlu
UmVnaXN0ZXJGaWxlKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGlzSW50MzJT
cGVjdWxhdGlvbihhcmd1bWVudFBvc2l0aW9uLnByZWRpY3Rpb24oKSkpCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdmFsdWVTb3VyY2UgPSBWYWx1ZVNvdXJjZShJbnQzMkluUmVnaXN0ZXJG
aWxlKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGlzQXJyYXlTcGVjdWxhdGlv
bihhcmd1bWVudFBvc2l0aW9uLnByZWRpY3Rpb24oKSkgfHwgaXNDZWxsU3BlY3VsYXRpb24oYXJn
dW1lbnRQb3NpdGlvbi5wcmVkaWN0aW9uKCkpKQorICAgICAgICAgICAgICAgICAgICAgICAgZWxz
ZSBpZiAoaXNDZWxsU3BlY3VsYXRpb24oYXJndW1lbnRQb3NpdGlvbi5wcmVkaWN0aW9uKCkpKQog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlU291cmNlID0gVmFsdWVTb3VyY2UoQ2Vs
bEluUmVnaXN0ZXJGaWxlKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGlzQm9v
bGVhblNwZWN1bGF0aW9uKGFyZ3VtZW50UG9zaXRpb24ucHJlZGljdGlvbigpKSkKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB2YWx1ZVNvdXJjZSA9IFZhbHVlU291cmNlKEJvb2xlYW5JblJl
Z2lzdGVyRmlsZSk7CkBAIC0xMzQzLDEyICsxMzYxLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y2hlY2tBcmd1bWVudFR5cGVzKAogI2lmIFVTRShKU1ZBTFVFNjQpCiAgICAgICAgIGlmIChpc0lu
dDMyU3BlY3VsYXRpb24ocHJlZGljdGVkVHlwZSkpCiAgICAgICAgICAgICBzcGVjdWxhdGlvbkNo
ZWNrKEJhZFR5cGUsIHZhbHVlU291cmNlLCBub2RlSW5kZXgsIG1faml0LmJyYW5jaFB0cihNYWNy
b0Fzc2VtYmxlcjo6QmVsb3csIEpJVENvbXBpbGVyOjphZGRyZXNzRm9yKHZpcnR1YWxSZWdpc3Rl
ciksIEdQUkluZm86OnRhZ1R5cGVOdW1iZXJSZWdpc3RlcikpOwotICAgICAgICBlbHNlIGlmIChp
c0FycmF5U3BlY3VsYXRpb24ocHJlZGljdGVkVHlwZSkpIHsKLSAgICAgICAgICAgIEdQUlRlbXBv
cmFyeSB0ZW1wKHRoaXMpOwotICAgICAgICAgICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6
YWRkcmVzc0Zvcih2aXJ0dWFsUmVnaXN0ZXIpLCB0ZW1wLmdwcigpKTsKLSAgICAgICAgICAgIHNw
ZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgdmFsdWVTb3VyY2UsIG5vZGVJbmRleCwgbV9qaXQuYnJh
bmNoVGVzdFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm9uWmVybywgdGVtcC5ncHIoKSwgR1BSSW5mbzo6
dGFnTWFza1JlZ2lzdGVyKSk7Ci0gICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUs
IHZhbHVlU291cmNlLCBub2RlSW5kZXgsIG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6
Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHRlbXAuZ3ByKCksIEpTQ2VsbDo6Y2xh
c3NJbmZvT2Zmc2V0KCkpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cigmSlNBcnJheTo6
c19pbmZvKSkpOwotICAgICAgICB9IGVsc2UgaWYgKGlzQm9vbGVhblNwZWN1bGF0aW9uKHByZWRp
Y3RlZFR5cGUpKSB7CisgICAgICAgIGVsc2UgaWYgKGlzQm9vbGVhblNwZWN1bGF0aW9uKHByZWRp
Y3RlZFR5cGUpKSB7CiAgICAgICAgICAgICBHUFJUZW1wb3JhcnkgdGVtcCh0aGlzKTsKICAgICAg
ICAgICAgIG1faml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OmFkZHJlc3NGb3IodmlydHVhbFJlZ2lz
dGVyKSwgdGVtcC5ncHIoKSk7CiAgICAgICAgICAgICBtX2ppdC54b3JQdHIoVHJ1c3RlZEltbTMy
KHN0YXRpY19jYXN0PGludDMyX3Q+KFZhbHVlRmFsc2UpKSwgdGVtcC5ncHIoKSk7CkBAIC0xNDAz
LDEzICsxNDE2LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y2hlY2tBcmd1bWVudFR5cGVzKAog
I2Vsc2UKICAgICAgICAgaWYgKGlzSW50MzJTcGVjdWxhdGlvbihwcmVkaWN0ZWRUeXBlKSkKICAg
ICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgdmFsdWVTb3VyY2UsIG5vZGVJbmRl
eCwgbV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBKSVRDb21waWxlcjo6
dGFnRm9yKHZpcnR1YWxSZWdpc3RlciksIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpJbnQzMlRhZykp
KTsKLSAgICAgICAgZWxzZSBpZiAoaXNBcnJheVNwZWN1bGF0aW9uKHByZWRpY3RlZFR5cGUpKSB7
Ci0gICAgICAgICAgICBHUFJUZW1wb3JhcnkgdGVtcCh0aGlzKTsKLSAgICAgICAgICAgIG1faml0
LmxvYWQzMihKSVRDb21waWxlcjo6dGFnRm9yKHZpcnR1YWxSZWdpc3RlciksIHRlbXAuZ3ByKCkp
OwotICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCB2YWx1ZVNvdXJjZSwgbm9k
ZUluZGV4LCBtX2ppdC5icmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIHRlbXAuZ3By
KCksIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpDZWxsVGFnKSkpOwotICAgICAgICAgICAgbV9qaXQu
bG9hZDMyKEpJVENvbXBpbGVyOjpwYXlsb2FkRm9yKHZpcnR1YWxSZWdpc3RlciksIHRlbXAuZ3By
KCkpOwotICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCB2YWx1ZVNvdXJjZSwg
bm9kZUluZGV4LCBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNy
b0Fzc2VtYmxlcjo6QWRkcmVzcyh0ZW1wLmdwcigpLCBKU0NlbGw6OmNsYXNzSW5mb09mZnNldCgp
KSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoJkpTQXJyYXk6OnNfaW5mbykpKTsKLSAg
ICAgICAgfSBlbHNlIGlmIChpc0Jvb2xlYW5TcGVjdWxhdGlvbihwcmVkaWN0ZWRUeXBlKSkKKyAg
ICAgICAgZWxzZSBpZiAoaXNCb29sZWFuU3BlY3VsYXRpb24ocHJlZGljdGVkVHlwZSkpCiAgICAg
ICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIHZhbHVlU291cmNlLCBub2RlSW5kZXgs
IG1faml0LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgSklUQ29tcGlsZXI6OnRh
Z0Zvcih2aXJ0dWFsUmVnaXN0ZXIpLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Qm9vbGVhblRhZykp
KTsKICAgICAgICAgZWxzZSBpZiAoaXNJbnQ4QXJyYXlTcGVjdWxhdGlvbihwcmVkaWN0ZWRUeXBl
KSkgewogICAgICAgICAgICAgR1BSVGVtcG9yYXJ5IHRlbXAodGhpcyk7CkBAIC0zMTEzLDggKzMx
MjAsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0SW5kZXhlZFByCiAgICAgICAg
ICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxs
KGJhc2VSZWcpLCBub2RlLmNoaWxkMSgpLCBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6
Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlUmVnLCBKU0NlbGw6OmNsYXNz
SW5mb09mZnNldCgpKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoZGVzY3JpcHRvci5t
X2NsYXNzSW5mbykpKTsKICAgICAgICAgbV9qaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRk
cmVzcyhiYXNlUmVnLCBkZXNjcmlwdG9yLm1fc3RvcmFnZU9mZnNldCksIHN0b3JhZ2VSZWcpOwog
ICAgIH0gZWxzZSB7Ci0gICAgICAgIGlmICghaXNBcnJheVNwZWN1bGF0aW9uKG1fc3RhdGUuZm9y
Tm9kZShub2RlLmNoaWxkMSgpKS5tX3R5cGUpKQotICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVj
ayhCYWRUeXBlLCBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChiYXNlUmVnKSwgbm9kZS5jaGls
ZDEoKSwgbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3Nl
bWJsZXI6OkFkZHJlc3MoYmFzZVJlZywgSlNDZWxsOjpjbGFzc0luZm9PZmZzZXQoKSksIE1hY3Jv
QXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKCZKU0FycmF5OjpzX2luZm8pKSk7CisgICAgICAgIHNw
ZWN1bGF0ZUFycmF5KG5vZGUuY2hpbGQxKCksIGJhc2VSZWcpOwogICAgICAgICBtX2ppdC5sb2Fk
UHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VSZWcsIEpTQXJyYXk6OnN0b3JhZ2VPZmZz
ZXQoKSksIHN0b3JhZ2VSZWcpOwogICAgIH0KICAgICBzdG9yYWdlUmVzdWx0KHN0b3JhZ2VSZWcs
IG1fY29tcGlsZUluZGV4KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Bl
Y3VsYXRpdmVKSVQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklULmgJKHJldmlzaW9uIDEyNTQ5MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAkod29ya2luZyBjb3B5KQpAQCAtMjE5MSw2ICsy
MTkxLDggQEAgcHVibGljOgogICAgIHZvaWQgdGVybWluYXRlU3BlY3VsYXRpdmVFeGVjdXRpb24o
RXhpdEtpbmQsIEpTVmFsdWVSZWdzLCBFZGdlKTsKICAgICB2b2lkIHRlcm1pbmF0ZVNwZWN1bGF0
aXZlRXhlY3V0aW9uV2l0aENvbmRpdGlvbmFsRGlyZWN0aW9uKEV4aXRLaW5kLCBKU1ZhbHVlUmVn
cywgTm9kZUluZGV4LCBib29sIGlzRm9yd2FyZCk7CiAgICAgCisgICAgdm9pZCBzcGVjdWxhdGVB
cnJheShFZGdlIGJhc2VFZGdlLCBHUFJSZWcgYmFzZVJlZyk7CisgICAgCiAgICAgdGVtcGxhdGU8
Ym9vbCBzdHJpY3Q+CiAgICAgR1BSUmVnIGZpbGxTcGVjdWxhdGVJbnRJbnRlcm5hbChOb2RlSW5k
ZXgsIERhdGFGb3JtYXQmIHJldHVybkZvcm1hdCk7CiAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1N0cnVjdHVyZUNoZWNrSG9pc3RpbmdQaGFzZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdHJ1Y3R1cmVDaGVja0hvaXN0aW5n
UGhhc2UuY3BwCShyZXZpc2lvbiAxMjU0OTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1N0cnVjdHVyZUNoZWNrSG9pc3RpbmdQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk0
LDYgKzk0LDExIEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICBjYXNlIEFsbG9jYXRlUHJvcGVy
dHlTdG9yYWdlOgogICAgICAgICAgICAgICAgIGNhc2UgUmVhbGxvY2F0ZVByb3BlcnR5U3RvcmFn
ZToKICAgICAgICAgICAgICAgICBjYXNlIEdldFByb3BlcnR5U3RvcmFnZToKKyAgICAgICAgICAg
ICAgICBjYXNlIEdldEJ5VmFsOgorICAgICAgICAgICAgICAgIGNhc2UgUHV0QnlWYWw6CisgICAg
ICAgICAgICAgICAgY2FzZSBQdXRCeVZhbEFsaWFzOgorICAgICAgICAgICAgICAgIGNhc2UgR2V0
QXJyYXlMZW5ndGg6CisgICAgICAgICAgICAgICAgY2FzZSBQaGFudG9tOgogICAgICAgICAgICAg
ICAgICAgICAvLyBEb24ndCBjb3VudCB0aGVzZSB1c2VzLgogICAgICAgICAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgICAgICAgICAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAJKHJldmlzaW9uIDEyNTQ5
MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTIwOSw3ICsyMDksOSBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9n
ZXRfYnlfdmFsKEluc3RydWN0aW9uCiAgICAgCiAgICAgYWRkU2xvd0Nhc2UoYnJhbmNoMzIoTm90
RXF1YWwsIHJlZ1QzLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6SW50MzJUYWcpKSk7CiAgICAgZW1p
dEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKGJhc2UsIHJlZ1QxKTsKLSAgICBhZGRTbG93Q2FzZShi
cmFuY2hQdHIoTm90RXF1YWwsIEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6Y2xhc3NJbmZvT2Zmc2V0
KCkpLCBUcnVzdGVkSW1tUHRyKCZKU0FycmF5OjpzX2luZm8pKSk7CisgICAgbG9hZFB0cihBZGRy
ZXNzKHJlZ1QwLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgcmVnVDEpOworICAgIHN0b3Jl
UHRyKHJlZ1QxLCBjdXJyZW50SW5zdHJ1Y3Rpb25bNF0udS5hcnJheVByb2ZpbGUtPmFkZHJlc3NP
Zkxhc3RTZWVuU3RydWN0dXJlKCkpOworICAgIGFkZFNsb3dDYXNlKGJyYW5jaFB0cihOb3RFcXVh
bCwgQWRkcmVzcyhyZWdUMSwgSlNDZWxsOjpjbGFzc0luZm9PZmZzZXQoKSksIFRydXN0ZWRJbW1Q
dHIoJkpTQXJyYXk6OnNfaW5mbykpKTsKICAgICAKICAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDAs
IEpTQXJyYXk6OnN0b3JhZ2VPZmZzZXQoKSksIHJlZ1QzKTsKICAgICBhZGRTbG93Q2FzZShicmFu
Y2gzMihBYm92ZU9yRXF1YWwsIHJlZ1QyLCBBZGRyZXNzKHJlZ1QwLCBKU0FycmF5Ojp2ZWN0b3JM
ZW5ndGhPZmZzZXQoKSkpKTsKQEAgLTI2NCw3ICsyNjYsOSBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9w
dXRfYnlfdmFsKEluc3RydWN0aW9uCiAgICAgCiAgICAgYWRkU2xvd0Nhc2UoYnJhbmNoMzIoTm90
RXF1YWwsIHJlZ1QzLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6SW50MzJUYWcpKSk7CiAgICAgZW1p
dEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKGJhc2UsIHJlZ1QxKTsKLSAgICBhZGRTbG93Q2FzZShi
cmFuY2hQdHIoTm90RXF1YWwsIEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6Y2xhc3NJbmZvT2Zmc2V0
KCkpLCBUcnVzdGVkSW1tUHRyKCZKU0FycmF5OjpzX2luZm8pKSk7CisgICAgbG9hZFB0cihBZGRy
ZXNzKHJlZ1QwLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgcmVnVDEpOworICAgIHN0b3Jl
UHRyKHJlZ1QxLCBjdXJyZW50SW5zdHJ1Y3Rpb25bNF0udS5hcnJheVByb2ZpbGUtPmFkZHJlc3NP
Zkxhc3RTZWVuU3RydWN0dXJlKCkpOworICAgIGFkZFNsb3dDYXNlKGJyYW5jaFB0cihOb3RFcXVh
bCwgQWRkcmVzcyhyZWdUMSwgU3RydWN0dXJlOjpjbGFzc0luZm9PZmZzZXQoKSksIFRydXN0ZWRJ
bW1QdHIoJkpTQXJyYXk6OnNfaW5mbykpKTsKICAgICBhZGRTbG93Q2FzZShicmFuY2gzMihBYm92
ZU9yRXF1YWwsIHJlZ1QyLCBBZGRyZXNzKHJlZ1QwLCBKU0FycmF5Ojp2ZWN0b3JMZW5ndGhPZmZz
ZXQoKSkpKTsKIAogICAgIGVtaXRXcml0ZUJhcnJpZXIocmVnVDAsIHJlZ1QxLCByZWdUMSwgcmVn
VDMsIFVuY29uZGl0aW9uYWxXcml0ZUJhcnJpZXIsIFdyaXRlQmFycmllckZvclByb3BlcnR5QWNj
ZXNzKTsKQEAgLTYwOCw3ICs2MTIsOSBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVQYXRjaEdl
dEFycmF5TGVuCiAgICAgLy8gcmVnVDAgaG9sZHMgYSBKU0NlbGwqCiAgICAgCiAgICAgLy8gQ2hl
Y2sgZm9yIGFycmF5Ci0gICAgSnVtcCBmYWlsdXJlQ2FzZXMxID0gYnJhbmNoUHRyKE5vdEVxdWFs
LCBBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OmNsYXNzSW5mb09mZnNldCgpKSwgVHJ1c3RlZEltbVB0
cigmSlNBcnJheTo6c19pbmZvKSk7CisgICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6
OnN0cnVjdHVyZU9mZnNldCgpKSwgcmVnVDIpOworICAgIHN0b3JlUHRyKHJlZ1QyLCBtX2NvZGVC
bG9jay0+Z2V0T3JBZGRBcnJheVByb2ZpbGUoc3R1YkluZm8tPmJ5dGVjb2RlSW5kZXgpLT5hZGRy
ZXNzT2ZMYXN0U2VlblN0cnVjdHVyZSgpKTsKKyAgICBKdW1wIGZhaWx1cmVDYXNlczEgPSBicmFu
Y2hQdHIoTm90RXF1YWwsIEFkZHJlc3MocmVnVDIsIFN0cnVjdHVyZTo6Y2xhc3NJbmZvT2Zmc2V0
KCkpLCBUcnVzdGVkSW1tUHRyKCZKU0FycmF5OjpzX2luZm8pKTsKICAgICAKICAgICAvLyBDaGVj
a3Mgb3V0IG9rYXkhIC0gZ2V0IHRoZSBsZW5ndGggZnJvbSB0aGUgc3RvcmFnZQogICAgIGxvYWRQ
dHIoQWRkcmVzcyhyZWdUMCwgSlNBcnJheTo6c3RvcmFnZU9mZnNldCgpKSwgcmVnVDIpOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAJ
KHJldmlzaW9uIDEyNTQ5MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVy
dHlBY2Nlc3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTAsNyArMTEwLDkgQEAgdm9pZCBKSVQ6
OmVtaXRfb3BfZ2V0X2J5X3ZhbChJbnN0cnVjdGlvbgogICAgIHplcm9FeHRlbmQzMlRvUHRyKHJl
Z1QxLCByZWdUMSk7CiAKICAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwocmVnVDAsIGJh
c2UpOwotICAgIGFkZFNsb3dDYXNlKGJyYW5jaFB0cihOb3RFcXVhbCwgQWRkcmVzcyhyZWdUMCwg
SlNDZWxsOjpjbGFzc0luZm9PZmZzZXQoKSksIFRydXN0ZWRJbW1QdHIoJkpTQXJyYXk6OnNfaW5m
bykpKTsKKyAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0
KCkpLCByZWdUMik7CisgICAgc3RvcmVQdHIocmVnVDIsIGN1cnJlbnRJbnN0cnVjdGlvbls0XS51
LmFycmF5UHJvZmlsZS0+YWRkcmVzc09mTGFzdFNlZW5TdHJ1Y3R1cmUoKSk7CisgICAgYWRkU2xv
d0Nhc2UoYnJhbmNoUHRyKE5vdEVxdWFsLCBBZGRyZXNzKHJlZ1QyLCBTdHJ1Y3R1cmU6OmNsYXNz
SW5mb09mZnNldCgpKSwgVHJ1c3RlZEltbVB0cigmSlNBcnJheTo6c19pbmZvKSkpOwogCiAgICAg
bG9hZFB0cihBZGRyZXNzKHJlZ1QwLCBKU0FycmF5OjpzdG9yYWdlT2Zmc2V0KCkpLCByZWdUMik7
CiAgICAgYWRkU2xvd0Nhc2UoYnJhbmNoMzIoQWJvdmVPckVxdWFsLCByZWdUMSwgQWRkcmVzcyhy
ZWdUMCwgSlNBcnJheTo6dmVjdG9yTGVuZ3RoT2Zmc2V0KCkpKSk7CkBAIC0yMzEsNyArMjMzLDkg
QEAgdm9pZCBKSVQ6OmVtaXRfb3BfcHV0X2J5X3ZhbChJbnN0cnVjdGlvbgogICAgIC8vIFNlZSBj
b21tZW50IGluIG9wX2dldF9ieV92YWwuCiAgICAgemVyb0V4dGVuZDMyVG9QdHIocmVnVDEsIHJl
Z1QxKTsKICAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwocmVnVDAsIGJhc2UpOwotICAg
IGFkZFNsb3dDYXNlKGJyYW5jaFB0cihOb3RFcXVhbCwgQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpj
bGFzc0luZm9PZmZzZXQoKSksIFRydXN0ZWRJbW1QdHIoJkpTQXJyYXk6OnNfaW5mbykpKTsKKyAg
ICBsb2FkUHRyKEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCByZWdU
Mik7CisgICAgc3RvcmVQdHIocmVnVDIsIGN1cnJlbnRJbnN0cnVjdGlvbls0XS51LmFycmF5UHJv
ZmlsZS0+YWRkcmVzc09mTGFzdFNlZW5TdHJ1Y3R1cmUoKSk7CisgICAgYWRkU2xvd0Nhc2UoYnJh
bmNoUHRyKE5vdEVxdWFsLCBBZGRyZXNzKHJlZ1QyLCBTdHJ1Y3R1cmU6OmNsYXNzSW5mb09mZnNl
dCgpKSwgVHJ1c3RlZEltbVB0cigmSlNBcnJheTo6c19pbmZvKSkpOwogICAgIGFkZFNsb3dDYXNl
KGJyYW5jaDMyKEFib3ZlT3JFcXVhbCwgcmVnVDEsIEFkZHJlc3MocmVnVDAsIEpTQXJyYXk6OnZl
Y3Rvckxlbmd0aE9mZnNldCgpKSkpOwogCiAgICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QwLCBKU0Fy
cmF5OjpzdG9yYWdlT2Zmc2V0KCkpLCByZWdUMik7CkBAIC02NDUsNyArNjQ5LDkgQEAgdm9pZCBK
SVQ6OnByaXZhdGVDb21waWxlUGF0Y2hHZXRBcnJheUxlbgogICAgIFN0cnVjdHVyZVN0dWJJbmZv
KiBzdHViSW5mbyA9ICZtX2NvZGVCbG9jay0+Z2V0U3R1YkluZm8ocmV0dXJuQWRkcmVzcyk7CiAK
ICAgICAvLyBDaGVjayBlYXggaXMgYW4gYXJyYXkKLSAgICBKdW1wIGZhaWx1cmVDYXNlczEgPSBi
cmFuY2hQdHIoTm90RXF1YWwsIEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6Y2xhc3NJbmZvT2Zmc2V0
KCkpLCBUcnVzdGVkSW1tUHRyKCZKU0FycmF5OjpzX2luZm8pKTsKKyAgICBsb2FkUHRyKEFkZHJl
c3MocmVnVDAsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCByZWdUMyk7CisgICAgc3RvcmVQ
dHIocmVnVDMsIG1fY29kZUJsb2NrLT5nZXRPckFkZEFycmF5UHJvZmlsZShzdHViSW5mby0+Ynl0
ZWNvZGVJbmRleCktPmFkZHJlc3NPZkxhc3RTZWVuU3RydWN0dXJlKCkpOworICAgIEp1bXAgZmFp
bHVyZUNhc2VzMSA9IGJyYW5jaFB0cihOb3RFcXVhbCwgQWRkcmVzcyhyZWdUMywgU3RydWN0dXJl
OjpjbGFzc0luZm9PZmZzZXQoKSksIFRydXN0ZWRJbW1QdHIoJkpTQXJyYXk6OnNfaW5mbykpOwog
CiAgICAgLy8gQ2hlY2tzIG91dCBva2F5ISAtIGdldCB0aGUgbGVuZ3RoIGZyb20gdGhlIHN0b3Jh
Z2UKICAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDAsIEpTQXJyYXk6OnN0b3JhZ2VPZmZzZXQoKSks
IHJlZ1QzKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9mZnNldHNF
eHRyYWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
TEludE9mZnNldHNFeHRyYWN0b3IuY3BwCShyZXZpc2lvbiAxMjQ0MTEpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjUsNiArMjUsNyBAQAogCiAjaW5jbHVkZSAiY29uZmlnLmgiCiAKKyNpbmNsdWRlICJB
cnJheVByb2ZpbGUuaCIKICNpbmNsdWRlICJDb2RlQmxvY2suaCIKICNpbmNsdWRlICJFeGVjdXRh
YmxlLmgiCiAjaW5jbHVkZSAiSGVhcC5oIgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20JKHJldmlzaW9u
IDEyNDQxMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJl
dGVyMzJfNjQuYXNtCSh3b3JraW5nIGNvcHkpCkBAIC0xMjU1LDE0ICsxMjU1LDE3IEBAIF9sbGlu
dF9vcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWxfb3UKIAogX2xsaW50X29wX2dldF9ieV92
YWw6CiAgICAgdHJhY2VFeGVjdXRpb24oKQotICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0MQog
ICAgIGxvYWRpIDhbUENdLCB0MgogICAgIGxvYWRpIDEyW1BDXSwgdDMKLSAgICBsb2FkcCBDb2Rl
QmxvY2s6Om1fZ2xvYmFsRGF0YVt0MV0sIHQxCiAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBh
eWxvYWQodDIsIENlbGxUYWcsIHQwLCAub3BHZXRCeVZhbFNsb3cpCi0gICAgbG9hZHAgSlNHbG9i
YWxEYXRhOjpqc0FycmF5Q2xhc3NJbmZvW3QxXSwgdDIKICAgICBsb2FkQ29uc3RhbnRPclZhcmlh
YmxlUGF5bG9hZCh0MywgSW50MzJUYWcsIHQxLCAub3BHZXRCeVZhbFNsb3cpCi0gICAgYnBuZXEg
W3QwXSwgdDIsIC5vcEdldEJ5VmFsU2xvdworICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVb
dDBdLCB0MworICAgIGxvYWRwIDE2W1BDXSwgdDIKKyAgICBzdG9yZXAgdDMsIEFycmF5UHJvZmls
ZTo6bV9sYXN0U2VlblN0cnVjdHVyZVt0Ml0KKyAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDIK
KyAgICBsb2FkcCBDb2RlQmxvY2s6Om1fZ2xvYmFsRGF0YVt0Ml0sIHQyCisgICAgbG9hZHAgSlNH
bG9iYWxEYXRhOjpqc0FycmF5Q2xhc3NJbmZvW3QyXSwgdDIKKyAgICBicG5lcSBTdHJ1Y3R1cmU6
Om1fY2xhc3NJbmZvW3QzXSwgdDIsIC5vcEdldEJ5VmFsU2xvdwogICAgIGxvYWRwIEpTQXJyYXk6
Om1fc3RvcmFnZVt0MF0sIHQzCiAgICAgYmlhZXEgdDEsIEpTQXJyYXk6Om1fdmVjdG9yTGVuZ3Ro
W3QwXSwgLm9wR2V0QnlWYWxTbG93CiAgICAgbG9hZGkgNFtQQ10sIHQwCkBAIC0xMjcxLDE2ICsx
Mjc0LDE4IEBAIF9sbGludF9vcF9nZXRfYnlfdmFsOgogICAgIGJpZXEgdDIsIEVtcHR5VmFsdWVU
YWcsIC5vcEdldEJ5VmFsU2xvdwogICAgIHN0b3JlaSB0MiwgVGFnT2Zmc2V0W2NmciwgdDAsIDhd
CiAgICAgc3RvcmVpIHQxLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdCi0gICAgbG9hZGkgMTZb
UENdLCB0MAorICAgIGxvYWRpIDIwW1BDXSwgdDAKICAgICB2YWx1ZVByb2ZpbGUodDIsIHQxLCB0
MCkKLSAgICBkaXNwYXRjaCg1KQorICAgIGRpc3BhdGNoKDYpCiAKIC5vcEdldEJ5VmFsU2xvdzoK
ICAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9nZXRfYnlfdmFsKQotICAgIGRpc3Bh
dGNoKDUpCisgICAgZGlzcGF0Y2goNikKIAogCiBfbGxpbnRfb3BfZ2V0X2FyZ3VtZW50X2J5X3Zh
bDoKKyAgICAjIEZJWE1FOiBBdCBzb21lIHBvaW50IHdlIHNob3VsZCBhcnJheSBwcm9maWxlIHRo
aXMuIFJpZ2h0IG5vdyBpdCBpc24ndCBuZWNlc3NhcnkKKyAgICAjIHNpbmNlIHRoZSBERkcgd2ls
bCBuZXZlciB0dXJuIGEgZ2V0X2FyZ3VtZW50X2J5X3ZhbCBpbnRvIGEgR2V0QnlWYWwuCiAgICAg
dHJhY2VFeGVjdXRpb24oKQogICAgIGxvYWRpIDhbUENdLCB0MAogICAgIGxvYWRpIDEyW1BDXSwg
dDEKQEAgLTEyOTMsMTUgKzEyOTgsMTUgQEAgX2xsaW50X29wX2dldF9hcmd1bWVudF9ieV92YWw6
CiAgICAgbG9hZGkgNFtQQ10sIHQzCiAgICAgbG9hZGkgVGhpc0FyZ3VtZW50T2Zmc2V0ICsgVGFn
T2Zmc2V0W2NmciwgdDIsIDhdLCB0MAogICAgIGxvYWRpIFRoaXNBcmd1bWVudE9mZnNldCArIFBh
eWxvYWRPZmZzZXRbY2ZyLCB0MiwgOF0sIHQxCi0gICAgbG9hZGkgMTZbUENdLCB0MgorICAgIGxv
YWRpIDIwW1BDXSwgdDIKICAgICBzdG9yZWkgdDAsIFRhZ09mZnNldFtjZnIsIHQzLCA4XQogICAg
IHN0b3JlaSB0MSwgUGF5bG9hZE9mZnNldFtjZnIsIHQzLCA4XQogICAgIHZhbHVlUHJvZmlsZSh0
MCwgdDEsIHQyKQotICAgIGRpc3BhdGNoKDUpCisgICAgZGlzcGF0Y2goNikKIAogLm9wR2V0QXJn
dW1lbnRCeVZhbFNsb3c6CiAgICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfZ2V0X2Fy
Z3VtZW50X2J5X3ZhbCkKLSAgICBkaXNwYXRjaCg1KQorICAgIGRpc3BhdGNoKDYpCiAKIAogX2xs
aW50X29wX2dldF9ieV9wbmFtZToKQEAgLTEzMzgsMTAgKzEzNDMsMTMgQEAgX2xsaW50X29wX3B1
dF9ieV92YWw6CiAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQodDAsIENlbGxUYWcs
IHQxLCAub3BQdXRCeVZhbFNsb3cpCiAgICAgbG9hZGkgOFtQQ10sIHQwCiAgICAgbG9hZENvbnN0
YW50T3JWYXJpYWJsZVBheWxvYWQodDAsIEludDMyVGFnLCB0MiwgLm9wUHV0QnlWYWxTbG93KQor
ICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDFdLCB0MworICAgIGxvYWRwIDE2W1BDXSwg
dDAKKyAgICBzdG9yZXAgdDMsIEFycmF5UHJvZmlsZTo6bV9sYXN0U2VlblN0cnVjdHVyZVt0MF0K
ICAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDAKICAgICBsb2FkcCBDb2RlQmxvY2s6Om1fZ2xv
YmFsRGF0YVt0MF0sIHQwCiAgICAgbG9hZHAgSlNHbG9iYWxEYXRhOjpqc0FycmF5Q2xhc3NJbmZv
W3QwXSwgdDAKLSAgICBicG5lcSBbdDFdLCB0MCwgLm9wUHV0QnlWYWxTbG93CisgICAgYnBuZXEg
U3RydWN0dXJlOjptX2NsYXNzSW5mb1t0M10sIHQwLCAub3BQdXRCeVZhbFNsb3cKICAgICBiaWFl
cSB0MiwgSlNBcnJheTo6bV92ZWN0b3JMZW5ndGhbdDFdLCAub3BQdXRCeVZhbFNsb3cKICAgICBs
b2FkcCBKU0FycmF5OjptX3N0b3JhZ2VbdDFdLCB0MAogICAgIGJpZXEgQXJyYXlTdG9yYWdlOjpt
X3ZlY3RvciArIFRhZ09mZnNldFt0MCwgdDIsIDhdLCBFbXB0eVZhbHVlVGFnLCAub3BQdXRCeVZh
bEVtcHR5CkBAIC0xMzUxLDcgKzEzNTksNyBAQCBfbGxpbnRfb3BfcHV0X2J5X3ZhbDoKICAgICB3
cml0ZUJhcnJpZXIodDEsIHQzKQogICAgIHN0b3JlaSB0MSwgQXJyYXlTdG9yYWdlOjptX3ZlY3Rv
ciArIFRhZ09mZnNldFt0MCwgdDIsIDhdCiAgICAgc3RvcmVpIHQzLCBBcnJheVN0b3JhZ2U6Om1f
dmVjdG9yICsgUGF5bG9hZE9mZnNldFt0MCwgdDIsIDhdCi0gICAgZGlzcGF0Y2goNCkKKyAgICBk
aXNwYXRjaCg1KQogCiAub3BQdXRCeVZhbEVtcHR5OgogICAgIGFkZGkgMSwgQXJyYXlTdG9yYWdl
OjptX251bVZhbHVlc0luVmVjdG9yW3QwXQpAQCAtMTM2Miw3ICsxMzcwLDcgQEAgX2xsaW50X29w
X3B1dF9ieV92YWw6CiAKIC5vcFB1dEJ5VmFsU2xvdzoKICAgICBjYWxsU2xvd1BhdGgoX2xsaW50
X3Nsb3dfcGF0aF9wdXRfYnlfdmFsKQotICAgIGRpc3BhdGNoKDQpCisgICAgZGlzcGF0Y2goNSkK
IAogCiBfbGxpbnRfb3BfbG9vcDoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
b3dMZXZlbEludGVycHJldGVyNjQuYXNtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCShyZXZpc2lvbiAxMjQ0MTEpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQko
d29ya2luZyBjb3B5KQpAQCAtMTA5OSwzMSArMTA5OSwzNiBAQCBfbGxpbnRfb3BfcHV0X2J5X2lk
X3RyYW5zaXRpb25fbm9ybWFsX291CiAKIF9sbGludF9vcF9nZXRfYnlfdmFsOgogICAgIHRyYWNl
RXhlY3V0aW9uKCkKLSAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDEKICAgICBsb2FkaXMgMTZb
UEIsIFBDLCA4XSwgdDIKICAgICBsb2FkaXMgMjRbUEIsIFBDLCA4XSwgdDMKLSAgICBsb2FkcCBD
b2RlQmxvY2s6Om1fZ2xvYmFsRGF0YVt0MV0sIHQxCiAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJs
ZUNlbGwodDIsIHQwLCAub3BHZXRCeVZhbFNsb3cpCi0gICAgbG9hZHAgSlNHbG9iYWxEYXRhOjpq
c0FycmF5Q2xhc3NJbmZvW3QxXSwgdDIKICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlSW50MzIo
dDMsIHQxLCAub3BHZXRCeVZhbFNsb3cpCiAgICAgc3hpMnAgdDEsIHQxCi0gICAgYnBuZXEgW3Qw
XSwgdDIsIC5vcEdldEJ5VmFsU2xvdworICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBd
LCB0MworICAgIGxvYWRwIDMyW1BCLCBQQywgOF0sIHQyCisgICAgc3RvcmVwIHQzLCBBcnJheVBy
b2ZpbGU6Om1fbGFzdFNlZW5TdHJ1Y3R1cmVbdDJdCisgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0s
IHQyCisgICAgbG9hZHAgQ29kZUJsb2NrOjptX2dsb2JhbERhdGFbdDJdLCB0MgorICAgIGxvYWRw
IEpTR2xvYmFsRGF0YTo6anNBcnJheUNsYXNzSW5mb1t0Ml0sIHQyCisgICAgYnBuZXEgU3RydWN0
dXJlOjptX2NsYXNzSW5mb1t0M10sIHQyLCAub3BHZXRCeVZhbFNsb3cKICAgICBsb2FkcCBKU0Fy
cmF5OjptX3N0b3JhZ2VbdDBdLCB0MwogICAgIGJpYWVxIHQxLCBKU0FycmF5OjptX3ZlY3Rvckxl
bmd0aFt0MF0sIC5vcEdldEJ5VmFsU2xvdwogICAgIGxvYWRpcyA4W1BCLCBQQywgOF0sIHQwCiAg
ICAgbG9hZHAgQXJyYXlTdG9yYWdlOjptX3ZlY3Rvclt0MywgdDEsIDhdLCB0MgogICAgIGJ0cHog
dDIsIC5vcEdldEJ5VmFsU2xvdwogICAgIHN0b3JlcCB0MiwgW2NmciwgdDAsIDhdCi0gICAgbG9h
ZHAgMzJbUEIsIFBDLCA4XSwgdDAKKyAgICBsb2FkcCA0MFtQQiwgUEMsIDhdLCB0MAogICAgIHZh
bHVlUHJvZmlsZSh0MiwgdDApCi0gICAgZGlzcGF0Y2goNSkKKyAgICBkaXNwYXRjaCg2KQogCiAu
b3BHZXRCeVZhbFNsb3c6CiAgICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfZ2V0X2J5
X3ZhbCkKLSAgICBkaXNwYXRjaCg1KQorICAgIGRpc3BhdGNoKDYpCiAKIAogX2xsaW50X29wX2dl
dF9hcmd1bWVudF9ieV92YWw6CisgICAgIyBGSVhNRTogQXQgc29tZSBwb2ludCB3ZSBzaG91bGQg
YXJyYXkgcHJvZmlsZSB0aGlzLiBSaWdodCBub3cgaXQgaXNuJ3QgbmVjZXNzYXJ5CisgICAgIyBz
aW5jZSB0aGUgREZHIHdpbGwgbmV2ZXIgdHVybiBhIGdldF9hcmd1bWVudF9ieV92YWwgaW50byBh
IEdldEJ5VmFsLgogICAgIHRyYWNlRXhlY3V0aW9uKCkKICAgICBsb2FkaXMgMTZbUEIsIFBDLCA4
XSwgdDAKICAgICBsb2FkaXMgMjRbUEIsIFBDLCA4XSwgdDEKQEAgLTExMzksMTEgKzExNDQsMTEg
QEAgX2xsaW50X29wX2dldF9hcmd1bWVudF9ieV92YWw6CiAgICAgbG9hZHAgVGhpc0FyZ3VtZW50
T2Zmc2V0W2NmciwgdDIsIDhdLCB0MAogICAgIHN0b3JlcCB0MCwgW2NmciwgdDMsIDhdCiAgICAg
dmFsdWVQcm9maWxlKHQwLCB0MSkKLSAgICBkaXNwYXRjaCg1KQorICAgIGRpc3BhdGNoKDYpCiAK
IC5vcEdldEFyZ3VtZW50QnlWYWxTbG93OgogICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19w
YXRoX2dldF9hcmd1bWVudF9ieV92YWwpCi0gICAgZGlzcGF0Y2goNSkKKyAgICBkaXNwYXRjaCg2
KQogCiAKIF9sbGludF9vcF9nZXRfYnlfcG5hbWU6CkBAIC0xMTgyLDEwICsxMTg3LDEzIEBAIF9s
bGludF9vcF9wdXRfYnlfdmFsOgogICAgIGxvYWRpcyAxNltQQiwgUEMsIDhdLCB0MAogICAgIGxv
YWRDb25zdGFudE9yVmFyaWFibGVJbnQzMih0MCwgdDIsIC5vcFB1dEJ5VmFsU2xvdykKICAgICBz
eGkycCB0MiwgdDIKKyAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QxXSwgdDMKKyAgICBs
b2FkcCAzMltQQiwgUEMsIDhdLCB0MAorICAgIHN0b3JlcCB0MywgQXJyYXlQcm9maWxlOjptX2xh
c3RTZWVuU3RydWN0dXJlW3QwXQogICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0MAogICAgIGxv
YWRwIENvZGVCbG9jazo6bV9nbG9iYWxEYXRhW3QwXSwgdDAKICAgICBsb2FkcCBKU0dsb2JhbERh
dGE6OmpzQXJyYXlDbGFzc0luZm9bdDBdLCB0MAotICAgIGJwbmVxIFt0MV0sIHQwLCAub3BQdXRC
eVZhbFNsb3cKKyAgICBicG5lcSBTdHJ1Y3R1cmU6Om1fY2xhc3NJbmZvW3QzXSwgdDAsIC5vcFB1
dEJ5VmFsU2xvdwogICAgIGJpYWVxIHQyLCBKU0FycmF5OjptX3ZlY3Rvckxlbmd0aFt0MV0sIC5v
cFB1dEJ5VmFsU2xvdwogICAgIGxvYWRwIEpTQXJyYXk6Om1fc3RvcmFnZVt0MV0sIHQwCiAgICAg
YnRweiBBcnJheVN0b3JhZ2U6Om1fdmVjdG9yW3QwLCB0MiwgOF0sIC5vcFB1dEJ5VmFsRW1wdHkK
QEAgLTExOTQsNyArMTIwMiw3IEBAIF9sbGludF9vcF9wdXRfYnlfdmFsOgogICAgIGxvYWRDb25z
dGFudE9yVmFyaWFibGUodDMsIHQxKQogICAgIHdyaXRlQmFycmllcih0MSkKICAgICBzdG9yZXAg
dDEsIEFycmF5U3RvcmFnZTo6bV92ZWN0b3JbdDAsIHQyLCA4XQotICAgIGRpc3BhdGNoKDQpCisg
ICAgZGlzcGF0Y2goNSkKIAogLm9wUHV0QnlWYWxFbXB0eToKICAgICBhZGRpIDEsIEFycmF5U3Rv
cmFnZTo6bV9udW1WYWx1ZXNJblZlY3Rvclt0MF0KQEAgLTEyMDUsNyArMTIxMyw3IEBAIF9sbGlu
dF9vcF9wdXRfYnlfdmFsOgogCiAub3BQdXRCeVZhbFNsb3c6CiAgICAgY2FsbFNsb3dQYXRoKF9s
bGludF9zbG93X3BhdGhfcHV0X2J5X3ZhbCkKLSAgICBkaXNwYXRjaCg0KQorICAgIGRpc3BhdGNo
KDUpCiAKIAogX2xsaW50X29wX2xvb3A6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9TdHJ1Y3R1cmUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9TdHJ1Y3R1cmUuaAkocmV2aXNpb24gMTI0NDExKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvU3RydWN0dXJlLmgJKHdvcmtpbmcgY29weSkKQEAgLTMyMiw2ICszMjIsMTEg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiBPQkpFQ1Rf
T0ZGU0VUT0YoU3RydWN0dXJlLCBtX3R5cGVJbmZvKSArIFR5cGVJbmZvOjp0eXBlT2Zmc2V0KCk7
CiAgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHN0YXRpYyBwdHJkaWZmX3QgY2xhc3NJbmZv
T2Zmc2V0KCkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihT
dHJ1Y3R1cmUsIG1fY2xhc3NJbmZvKTsKKyAgICAgICAgfQogCiAgICAgICAgIHN0YXRpYyBTdHJ1
Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0dsb2JhbERhdGEmKTsKICAgICAgICAgCg==
</data>
<flag name="review"
          id="168284"
          type_id="1"
          status="+"
          setter="mhahnenberg"
    />
    <flag name="commit-queue"
          id="168306"
          type_id="3"
          status="-"
          setter="buildbot"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>158475</attachid>
            <date>2012-08-14 18:57:34 -0700</date>
            <delta_ts>2012-08-14 18:57:34 -0700</delta_ts>
            <desc>patch for landing, hopefully</desc>
            <filename>arraystruct_patch_4.diff</filename>
            <type>text/plain</type>
            <size>79367</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTI1NjAzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDk5IEBA
CisyMDEyLTA4LTEzICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
QXJyYXkgY2hlY2tzIHNob3VsZCB1c2UgdGhlIHN0cnVjdHVyZSwgbm90IHRoZSBjbGFzcyBpbmZv
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MzE1MAor
CisgICAgICAgIFJldmlld2VkIGJ5IE1hcmsgSGFobmVuYmVyZy4KKworICAgICAgICBUaGlzIGNo
YW5nZXMgYWxsIGFycmF5IGNoZWNrcyB1c2VkIGluIGFycmF5IGFjY2Vzc2VzIChnZXQsIHB1dCwg
Z2V0IGxlbmd0aCwKKyAgICAgICAgcHVzaCwgcG9wKSB0byB1c2UgdGhlIHN0cnVjdHVyZSwgbm90
IHRoZSBjbGFzcyBpbmZvLiBBZGRpdGlvbmFsbHksIHRoZXNlCisgICAgICAgIGNoZWNrcyBpbiB0
aGUgTExJbnQgYW5kIGJhc2VsaW5lIEpJVCByZWNvcmQgdGhlIHN0cnVjdHVyZSBpbiBhbiBBcnJh
eVByb2ZpbGUsCisgICAgICAgIHNvIHRoYXQgdGhlIERGRyBjYW4ga25vdyBleGFjdGx5IHdoYXQg
c3RydWN0dXJlIHRvIGNoZWNrIGZvci4KKyAgICAgICAgCisgICAgICAgICogQ01ha2VMaXN0cy50
eHQ6CisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBKYXZhU2NyaXB0
Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qOgorICAgICAg
ICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICog
VGFyZ2V0LnByaToKKyAgICAgICAgKiBieXRlY29kZS9BcnJheVByb2ZpbGUuY3BwOiBBZGRlZC4K
KyAgICAgICAgKEpTQyk6CisgICAgICAgIChKU0M6OkFycmF5UHJvZmlsZTo6Y29tcHV0ZVVwZGF0
ZWRQcmVkaWN0aW9uKToKKyAgICAgICAgKiBieXRlY29kZS9BcnJheVByb2ZpbGUuaDogQWRkZWQu
CisgICAgICAgIChKU0MpOgorICAgICAgICAoSlNDOjphcnJheU1vZGVGcm9tU3RydWN0dXJlKToK
KyAgICAgICAgKEFycmF5UHJvZmlsZSk6CisgICAgICAgIChKU0M6OkFycmF5UHJvZmlsZTo6QXJy
YXlQcm9maWxlKToKKyAgICAgICAgKEpTQzo6QXJyYXlQcm9maWxlOjpieXRlY29kZU9mZnNldCk6
CisgICAgICAgIChKU0M6OkFycmF5UHJvZmlsZTo6YWRkcmVzc09mTGFzdFNlZW5TdHJ1Y3R1cmUp
OgorICAgICAgICAoSlNDOjpBcnJheVByb2ZpbGU6Om9ic2VydmVTdHJ1Y3R1cmUpOgorICAgICAg
ICAoSlNDOjpBcnJheVByb2ZpbGU6OmV4cGVjdGVkU3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6
QXJyYXlQcm9maWxlOjpzdHJ1Y3R1cmVJc1BvbHltb3JwaGljKToKKyAgICAgICAgKEpTQzo6QXJy
YXlQcm9maWxlOjpoYXNEZWZpbml0ZVN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OkFycmF5UHJv
ZmlsZTo6b2JzZXJ2ZWRBcnJheU1vZGVzKToKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2su
Y3BwOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmR1bXApOgorICAgICAgICAoSlNDOjpDb2Rl
QmxvY2s6OmdldEFycmF5UHJvZmlsZSk6CisgICAgICAgIChKU0MpOgorICAgICAgICAoSlNDOjpD
b2RlQmxvY2s6OmdldE9yQWRkQXJyYXlQcm9maWxlKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2Nr
Ojp1cGRhdGVBbGxQcmVkaWN0aW9uc0FuZENvdW50TGl2ZW5lc3MpOgorICAgICAgICAqIGJ5dGVj
b2RlL0NvZGVCbG9jay5oOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmV4ZWN1dGlvbkVudHJ5
Q291bnQpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6Om51bWJlck9mQXJyYXlQcm9maWxlcyk6
CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6YXJyYXlQcm9maWxlcyk6CisgICAgICAgIChKU0M6
OkNvZGVCbG9jazo6YWRkQXJyYXlQcm9maWxlKToKKyAgICAgICAgKENvZGVCbG9jayk6CisgICAg
ICAgICogYnl0ZWNvZGUvSW5zdHJ1Y3Rpb24uaDoKKyAgICAgICAgKEpTQyk6CisgICAgICAgIChK
U0M6Okluc3RydWN0aW9uOjpJbnN0cnVjdGlvbik6CisgICAgICAgICogYnl0ZWNvZGUvT3Bjb2Rl
Lmg6CisgICAgICAgIChKU0MpOgorICAgICAgICAoSlNDOjpwYWRPcGNvZGVOYW1lKToKKyAgICAg
ICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpC
eXRlY29kZUdlbmVyYXRvcjo6ZW1pdEdldEFyZ3VtZW50QnlWYWwpOgorICAgICAgICAoSlNDOjpC
eXRlY29kZUdlbmVyYXRvcjo6ZW1pdEdldEJ5VmFsKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVH
ZW5lcmF0b3I6OmVtaXRQdXRCeVZhbCk6CisgICAgICAgICogZGZnL0RGR0Fic3RyYWN0U3RhdGUu
Y3BwOgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0U3RhdGU6OmluaXRpYWxpemUpOgorICAg
ICAgICAoSlNDOjpERkc6OkFic3RyYWN0U3RhdGU6OmV4ZWN1dGUpOgorICAgICAgICAqIGRmZy9E
RkdBYnN0cmFjdFZhbHVlLmg6CisgICAgICAgIChKU0M6OkRGRzo6U3RydWN0dXJlQWJzdHJhY3RW
YWx1ZTo6aGFzU2luZ2xldG9uKToKKyAgICAgICAgKFN0cnVjdHVyZUFic3RyYWN0VmFsdWUpOgor
ICAgICAgICAoSlNDOjpERkc6OlN0cnVjdHVyZUFic3RyYWN0VmFsdWU6OnNpbmdsZXRvbik6Cisg
ICAgICAgICogZGZnL0RGR0FyZ3VtZW50c1NpbXBsaWZpY2F0aW9uUGhhc2UuY3BwOgorICAgICAg
ICAoSlNDOjpERkc6OkFyZ3VtZW50c1NpbXBsaWZpY2F0aW9uUGhhc2U6OnJ1bik6CisgICAgICAg
ICogZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29k
ZVBhcnNlcjo6cGFyc2VCbG9jayk6CisgICAgICAgICogZGZnL0RGR0ZpeHVwUGhhc2UuY3BwOgor
ICAgICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6OmZpeHVwTm9kZSk6CisgICAgICAgICogZGZn
L0RGR1NwZWN1bGF0aXZlSklULmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJ
VDo6c3BlY3VsYXRlQXJyYXkpOgorICAgICAgICAoREZHKToKKyAgICAgICAgKEpTQzo6REZHOjpT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVK
SVQ6OmNoZWNrQXJndW1lbnRUeXBlcyk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGVHZXRJbmRleGVkUHJvcGVydHlTdG9yYWdlKToKKyAgICAgICAgKiBkZmcvREZH
U3BlY3VsYXRpdmVKSVQuaDoKKyAgICAgICAgKFNwZWN1bGF0aXZlSklUKToKKyAgICAgICAgKiBk
ZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNw
cDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAg
ICogZGZnL0RGR1N0cnVjdHVyZUNoZWNrSG9pc3RpbmdQaGFzZS5jcHA6CisgICAgICAgIChKU0M6
OkRGRzo6U3RydWN0dXJlQ2hlY2tIb2lzdGluZ1BoYXNlOjpydW4pOgorICAgICAgICAqIGppdC9K
SVRQcm9wZXJ0eUFjY2Vzcy5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9nZXRfYnlf
dmFsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3B1dF9ieV92YWwpOgorICAgICAgICAo
SlNDOjpKSVQ6OnByaXZhdGVDb21waWxlUGF0Y2hHZXRBcnJheUxlbmd0aCk6CisgICAgICAgICog
aml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRf
b3BfZ2V0X2J5X3ZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9wdXRfYnlfdmFsKToK
KyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZVBhdGNoR2V0QXJyYXlMZW5ndGgpOgor
ICAgICAgICAqIGxsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHA6CisgICAgICAgICogbGxp
bnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZl
bEludGVycHJldGVyNjQuYXNtOgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlLmg6CisgICAg
ICAgIChTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OmNsYXNzSW5mb09mZnNl
dCk6CisKIDIwMTItMDgtMTQgIEdhYm9yIEJhbGxhYmFzICA8Z2Fib3JiQGluZi51LXN6ZWdlZC5o
dT4KIAogICAgICAgICBSZW5hbWUgZnVuY3Rpb25zIGluIHRoZSBBUk0gcG9ydCBvZiBERkctSklU
IGZvciBiZXR0ZXIgY29kZSByZWFkYWJpbGl0eS4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01h
a2VMaXN0cy50eHQJKHJldmlzaW9uIDEyNTYwMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9D
TWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMzksNiArMzksNyBAQCBTRVQoSmF2YVNj
cmlwdENvcmVfU09VUkNFUwogICAgIAogICAgIGFzc2VtYmxlci9MaW5rQnVmZmVyLmNwcAogCisg
ICAgYnl0ZWNvZGUvQXJyYXlQcm9maWxlLmNwcAogICAgIGJ5dGVjb2RlL0NhbGxMaW5rSW5mby5j
cHAKICAgICBieXRlY29kZS9DYWxsTGlua1N0YXR1cy5jcHAKICAgICBieXRlY29kZS9Db2RlQmxv
Y2suY3BwCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUubGlzdC5hbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUubGlzdC5hbQko
cmV2aXNpb24gMTI1NjAzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmxp
c3QuYW0JKHdvcmtpbmcgY29weSkKQEAgLTgyLDYgKzgyLDggQEAgamF2YXNjcmlwdGNvcmVfc291
cmNlcyArPSBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9SZXBhdGNoQnVmZmVy
LmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvU0g0QXNzZW1ibGVyLmggXAog
CVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvWDg2QXNzZW1ibGVyLmggXAorCVNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BcnJheVByb2ZpbGUuY3BwIFwKKwlTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJyYXlQcm9maWxlLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9CeXRlY29kZUNvbnZlbnRpb25zLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9DYWxsTGlua0luZm8uY3BwIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQ2FsbExpbmtJbmZvLmggXApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL1Rh
cmdldC5wcmkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL1RhcmdldC5wcmkJ
KHJldmlzaW9uIDEyNTYwMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9UYXJnZXQucHJpCSh3
b3JraW5nIGNvcHkpCkBAIC00Niw2ICs0Niw3IEBAIFNPVVJDRVMgKz0gXAogICAgIGFzc2VtYmxl
ci9MaW5rQnVmZmVyLmNwcCBcCiAgICAgYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNLmNwcCBc
CiAgICAgYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyU0g0LmNwcCBcCisgICAgYnl0ZWNvZGUvQXJy
YXlQcm9maWxlLmNwcCBcCiAgICAgYnl0ZWNvZGUvQ2FsbExpbmtJbmZvLmNwcCBcCiAgICAgYnl0
ZWNvZGUvQ2FsbExpbmtTdGF0dXMuY3BwIFwKICAgICBieXRlY29kZS9Db2RlQmxvY2suY3BwIFwK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNj
cmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUudmNwcm9qCShyZXZpc2lvbiAxMjU2MDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
SmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJv
agkod29ya2luZyBjb3B5KQpAQCAtMTUzMCw2ICsxNTMwLDE0IEBACiAJCQlOYW1lPSJieXRlY29k
ZSIKIAkJCT4KIAkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxieXRlY29kZVxBcnJh
eVByb2ZpbGUuY3BwIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQ
YXRoPSIuLlwuLlxieXRlY29kZVxBcnJheVByb2ZpbGUuaCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJ
CQk8RmlsZQogCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cYnl0ZWNvZGVcQ2FsbExpbmtJbmZvLmNw
cCIKIAkJCQk+CiAJCQk8L0ZpbGU+CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNj
cmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagko
cmV2aXNpb24gMTI1NjAzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTE0MCw2ICsxNDAs
OCBAQAogCQkwRjYyMDE3OTE0M0ZDRDQ4MDA2OEI3N0MgLyogREZHQWJzdHJhY3RTdGF0ZS5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjYyMDE2RDE0
M0ZDRDJGMDA2OEI3N0MgLyogREZHQWJzdHJhY3RTdGF0ZS5jcHAgKi87IH07CiAJCTBGNjM5NDNG
MTVDNzVGMTkwMDZBNTk3QyAvKiBERkdTdHJ1Y3R1cmVDaGVja0hvaXN0aW5nUGhhc2UuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNjM5NDNEMTVDNzVG
MTQwMDZBNTk3QyAvKiBERkdTdHJ1Y3R1cmVDaGVja0hvaXN0aW5nUGhhc2UuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjYzOTQ0MDE1Qzc1RjFE
MDA2QTU5N0MgLyogREZHU3RydWN0dXJlQ2hlY2tIb2lzdGluZ1BoYXNlLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNjM5NDNDMTVDNzVGMTQwMDZB
NTk3QyAvKiBERkdTdHJ1Y3R1cmVDaGVja0hvaXN0aW5nUGhhc2UuY3BwICovOyB9OworCQkwRjYz
OTQ1NDE1RDA3MDU1MDA2QTU5N0MgLyogQXJyYXlQcm9maWxlLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNjM5NDUxMTVEMDcwNTEwMDZBNTk3QyAv
KiBBcnJheVByb2ZpbGUuY3BwICovOyB9OworCQkwRjYzOTQ1NTE1RDA3MDU3MDA2QTU5N0MgLyog
QXJyYXlQcm9maWxlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwRjYzOTQ1MjE1RDA3MDUxMDA2QTU5N0MgLyogQXJyYXlQcm9maWxlLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEY2NkUxNkIxNERGM0Yx
NjAwQjdCMkU0IC8qIERGR0FkamFjZW5jeUxpc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNjZFMTY4MTRERjNGMTMwMEI3QjJFNCAvKiBERkdBZGph
Y2VuY3lMaXN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJMEY2NkUxNkMxNERGM0YxNjAwQjdCMkU0IC8qIERGR0VkZ2UuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNjZFMTY5MTRERjNGMTMwMEI3QjJF
NCAvKiBERkdFZGdlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJMEY3NjZEMjgxNUE4Q0MxRTAwOEYzNjNFIC8qIEpJVFN0dWJSb3V0aW5lLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNzY2RDI2MTVB
OENDMUIwMDhGMzYzRSAvKiBKSVRTdHViUm91dGluZS5jcHAgKi87IH07CkBAIC04ODksNiArODkx
LDggQEAKIAkJMEY2MjAxNzIxNDNGQ0QyRjAwNjhCNzdDIC8qIERGR1ZhcmlhYmxlQWNjZXNzRGF0
YS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdWYXJpYWJsZUFjY2Vzc0Rh
dGEuaDsgcGF0aCA9IGRmZy9ERkdWYXJpYWJsZUFjY2Vzc0RhdGEuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMEY2Mzk0M0MxNUM3NUYxNDAwNkE1OTdDIC8qIERGR1N0cnVjdHVyZUNo
ZWNrSG9pc3RpbmdQaGFzZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUg
PSBERkdTdHJ1Y3R1cmVDaGVja0hvaXN0aW5nUGhhc2UuY3BwOyBwYXRoID0gZGZnL0RGR1N0cnVj
dHVyZUNoZWNrSG9pc3RpbmdQaGFzZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTBGNjM5NDNEMTVDNzVGMTQwMDZBNTk3QyAvKiBERkdTdHJ1Y3R1cmVDaGVja0hvaXN0aW5nUGhh
c2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHU3RydWN0dXJlQ2hlY2tI
b2lzdGluZ1BoYXNlLmg7IHBhdGggPSBkZmcvREZHU3RydWN0dXJlQ2hlY2tIb2lzdGluZ1BoYXNl
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNjM5NDUxMTVEMDcwNTEwMDZBNTk3
QyAvKiBBcnJheVByb2ZpbGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gQXJyYXlQcm9maWxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY2Mzk0
NTIxNUQwNzA1MTAwNkE1OTdDIC8qIEFycmF5UHJvZmlsZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBBcnJheVByb2ZpbGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMEY2NkUxNjgxNERGM0YxMzAwQjdCMkU0IC8qIERGR0FkamFjZW5jeUxpc3QuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHQWRqYWNlbmN5TGlzdC5oOyBwYXRoID0gZGZn
L0RGR0FkamFjZW5jeUxpc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY2NkUx
NjkxNERGM0YxMzAwQjdCMkU0IC8qIERGR0VkZ2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBuYW1lID0gREZHRWRnZS5oOyBwYXRoID0gZGZnL0RGR0VkZ2UuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMEY3NjZEMUMxNUE1MDI4RDAwOEYzNjNFIC8qIEpJVFN0dWJSb3V0aW5l
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpJVFN0dWJSb3V0aW5lLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yNDA3LDYgKzI0MTEsOCBAQAogCQk5NjlBMDc4
RjBFRDFEM0FFMDBGMUY2ODEgLyogYnl0ZWNvZGUgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsK
IAkJCWNoaWxkcmVuID0gKAorCQkJCTBGNjM5NDUxMTVEMDcwNTEwMDZBNTk3QyAvKiBBcnJheVBy
b2ZpbGUuY3BwICovLAorCQkJCTBGNjM5NDUyMTVEMDcwNTEwMDZBNTk3QyAvKiBBcnJheVByb2Zp
bGUuaCAqLywKIAkJCQkwRjU2QTFENDE1MDAxQ0YyMDAyOTkyQjEgLyogRXhlY3V0aW9uQ291bnRl
ci5jcHAgKi8sCiAJCQkJMEY1NkExRDExNTAwMEYzMTAwMjk5MkIxIC8qIEV4ZWN1dGlvbkNvdW50
ZXIuaCAqLywKIAkJCQkwRkI1NDY3QzE0RjVDRkQzMDAyQzI5ODkgLyogTWV0aG9kT2ZHZXR0aW5n
QVZhbHVlUHJvZmlsZS5jcHAgKi8sCkBAIC0yODY3LDYgKzI4NzMsNyBAQAogCQkJCTBGNzY2RDQ0
MTVCMkEzQzAwMDhGMzYzRSAvKiBERkdSZWdpc3RlclNldC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MEY3NjZENDYxNUIzNzAxRjAwOEYzNjNFIC8qIERGR1NjcmF0Y2hSZWdpc3RlckFsbG9jYXRvci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMEY2Mzk0M0YxNUM3NUYxOTAwNkE1OTdDIC8qIERGR1N0cnVj
dHVyZUNoZWNrSG9pc3RpbmdQaGFzZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEY2Mzk0NTUxNUQw
NzA1NzAwNkE1OTdDIC8qIEFycmF5UHJvZmlsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJ
cnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC0zNDY1LDYg
KzM0NzIsNyBAQAogCQkJCTBGNzY2RDM0MTVBRTI1MzgwMDhGMzYzRSAvKiBKdW1wUmVwbGFjZW1l
bnRXYXRjaHBvaW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGNzY2RDM4MTVBRTRBMUMwMDhG
MzYzRSAvKiBTdHJ1Y3R1cmVTdHViQ2xlYXJpbmdXYXRjaHBvaW50LmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTBGNjM5NDQwMTVDNzVGMUQwMDZBNTk3QyAvKiBERkdTdHJ1Y3R1cmVDaGVja0hvaXN0
aW5nUGhhc2UuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEY2Mzk0NTQxNUQwNzA1NTAwNkE1OTdD
IC8qIEFycmF5UHJvZmlsZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9y
RGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9BcnJheVByb2ZpbGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BcnJheVByb2ZpbGUuY3BwCShyZXZpc2lvbiAwKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FycmF5UHJvZmlsZS5jcHAJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsNTUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkFycmF5UHJvZmlsZS5o
IgorCituYW1lc3BhY2UgSlNDIHsKKwordm9pZCBBcnJheVByb2ZpbGU6OmNvbXB1dGVVcGRhdGVk
UHJlZGljdGlvbihPcGVyYXRpb25JblByb2dyZXNzIG9wZXJhdGlvbikKK3sKKyAgICBpZiAobV9s
YXN0U2VlblN0cnVjdHVyZSkgeworICAgICAgICBtX29ic2VydmVkQXJyYXlNb2RlcyB8PSBhcnJh
eU1vZGVGcm9tU3RydWN0dXJlKG1fbGFzdFNlZW5TdHJ1Y3R1cmUpOworICAgICAgICBpZiAoIW1f
c3RydWN0dXJlSXNQb2x5bW9ycGhpYykgeworICAgICAgICAgICAgaWYgKCFtX2V4cGVjdGVkU3Ry
dWN0dXJlKQorICAgICAgICAgICAgICAgIG1fZXhwZWN0ZWRTdHJ1Y3R1cmUgPSBtX2xhc3RTZWVu
U3RydWN0dXJlOworICAgICAgICAgICAgZWxzZSBpZiAobV9leHBlY3RlZFN0cnVjdHVyZSAhPSBt
X2xhc3RTZWVuU3RydWN0dXJlKSB7CisgICAgICAgICAgICAgICAgbV9leHBlY3RlZFN0cnVjdHVy
ZSA9IDA7CisgICAgICAgICAgICAgICAgbV9zdHJ1Y3R1cmVJc1BvbHltb3JwaGljID0gdHJ1ZTsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBtX2xhc3RTZWVuU3RydWN0dXJlID0g
MDsKKyAgICB9CisgICAgCisgICAgaWYgKG9wZXJhdGlvbiA9PSBDb2xsZWN0aW9uCisgICAgICAg
ICYmIG1fZXhwZWN0ZWRTdHJ1Y3R1cmUKKyAgICAgICAgJiYgIUhlYXA6OmlzTWFya2VkKG1fZXhw
ZWN0ZWRTdHJ1Y3R1cmUpKSB7CisgICAgICAgIG1fZXhwZWN0ZWRTdHJ1Y3R1cmUgPSAwOworICAg
ICAgICBtX3N0cnVjdHVyZUlzUG9seW1vcnBoaWMgPSB0cnVlOworICAgIH0KK30KKworfSAvLyBu
YW1lc3BhY2UgSlNDCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BcnJh
eVByb2ZpbGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
QXJyYXlQcm9maWxlLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQXJyYXlQcm9maWxlLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTA0IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgQXJyYXlQ
cm9maWxlX2gKKyNkZWZpbmUgQXJyYXlQcm9maWxlX2gKKworI2luY2x1ZGUgIkpTQXJyYXkuaCIK
KyNpbmNsdWRlICJTdHJ1Y3R1cmUuaCIKKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1
ZGUgPHd0Zi9TZWdtZW50ZWRWZWN0b3IuaD4KKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIExM
SW50T2Zmc2V0c0V4dHJhY3RvcjsKKwordHlwZWRlZiB1bnNpZ25lZCBBcnJheU1vZGVzOworCitz
dGF0aWMgY29uc3QgdW5zaWduZWQgSXNOb3RBcnJheSA9IDE7CitzdGF0aWMgY29uc3QgdW5zaWdu
ZWQgSXNKU0FycmF5ICA9IDI7CisKK2lubGluZSBBcnJheU1vZGVzIGFycmF5TW9kZUZyb21TdHJ1
Y3R1cmUoU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCit7CisgICAgaWYgKHN0cnVjdHVyZS0+Y2xhc3NJ
bmZvKCkgPT0gJkpTQXJyYXk6OnNfaW5mbykKKyAgICAgICAgcmV0dXJuIElzSlNBcnJheTsKKyAg
ICByZXR1cm4gSXNOb3RBcnJheTsKK30KKworY2xhc3MgQXJyYXlQcm9maWxlIHsKK3B1YmxpYzoK
KyAgICBBcnJheVByb2ZpbGUoKQorICAgICAgICA6IG1fYnl0ZWNvZGVPZmZzZXQoc3RkOjpudW1l
cmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpKQorICAgICAgICAsIG1fbGFzdFNlZW5TdHJ1Y3R1
cmUoMCkKKyAgICAgICAgLCBtX2V4cGVjdGVkU3RydWN0dXJlKDApCisgICAgICAgICwgbV9zdHJ1
Y3R1cmVJc1BvbHltb3JwaGljKGZhbHNlKQorICAgICAgICAsIG1fb2JzZXJ2ZWRBcnJheU1vZGVz
KDApCisgICAgeworICAgIH0KKyAgICAKKyAgICBBcnJheVByb2ZpbGUodW5zaWduZWQgYnl0ZWNv
ZGVPZmZzZXQpCisgICAgICAgIDogbV9ieXRlY29kZU9mZnNldChieXRlY29kZU9mZnNldCkKKyAg
ICAgICAgLCBtX2xhc3RTZWVuU3RydWN0dXJlKDApCisgICAgICAgICwgbV9leHBlY3RlZFN0cnVj
dHVyZSgwKQorICAgICAgICAsIG1fc3RydWN0dXJlSXNQb2x5bW9ycGhpYyhmYWxzZSkKKyAgICAg
ICAgLCBtX29ic2VydmVkQXJyYXlNb2RlcygwKQorICAgIHsKKyAgICB9CisgICAgCisgICAgdW5z
aWduZWQgYnl0ZWNvZGVPZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX2J5dGVjb2RlT2Zmc2V0OyB9
CisgICAgCisgICAgU3RydWN0dXJlKiogYWRkcmVzc09mTGFzdFNlZW5TdHJ1Y3R1cmUoKSB7IHJl
dHVybiAmbV9sYXN0U2VlblN0cnVjdHVyZTsgfQorICAgIAorICAgIHZvaWQgb2JzZXJ2ZVN0cnVj
dHVyZShTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICB7CisgICAgICAgIG1fbGFzdFNlZW5TdHJ1
Y3R1cmUgPSBzdHJ1Y3R1cmU7CisgICAgfQorICAgIAorICAgIHZvaWQgY29tcHV0ZVVwZGF0ZWRQ
cmVkaWN0aW9uKE9wZXJhdGlvbkluUHJvZ3Jlc3Mgb3BlcmF0aW9uID0gTm9PcGVyYXRpb24pOwor
ICAgIAorICAgIFN0cnVjdHVyZSogZXhwZWN0ZWRTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBt
X2V4cGVjdGVkU3RydWN0dXJlOyB9CisgICAgYm9vbCBzdHJ1Y3R1cmVJc1BvbHltb3JwaGljKCkg
Y29uc3QgeyByZXR1cm4gbV9zdHJ1Y3R1cmVJc1BvbHltb3JwaGljOyB9CisgICAgYm9vbCBoYXNE
ZWZpbml0ZVN0cnVjdHVyZSgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gIXN0cnVjdHVy
ZUlzUG9seW1vcnBoaWMoKSAmJiBtX2V4cGVjdGVkU3RydWN0dXJlOworICAgIH0KKyAgICBBcnJh
eU1vZGVzIG9ic2VydmVkQXJyYXlNb2RlcygpIGNvbnN0IHsgcmV0dXJuIG1fb2JzZXJ2ZWRBcnJh
eU1vZGVzOyB9CisgICAgCitwcml2YXRlOgorICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNF
eHRyYWN0b3I7CisgICAgCisgICAgdW5zaWduZWQgbV9ieXRlY29kZU9mZnNldDsKKyAgICBTdHJ1
Y3R1cmUqIG1fbGFzdFNlZW5TdHJ1Y3R1cmU7CisgICAgU3RydWN0dXJlKiBtX2V4cGVjdGVkU3Ry
dWN0dXJlOworICAgIGJvb2wgbV9zdHJ1Y3R1cmVJc1BvbHltb3JwaGljOworICAgIEFycmF5TW9k
ZXMgbV9vYnNlcnZlZEFycmF5TW9kZXM7Cit9OworCit0eXBlZGVmIFNlZ21lbnRlZFZlY3RvcjxB
cnJheVByb2ZpbGUsIDQsIDA+IEFycmF5UHJvZmlsZVZlY3RvcjsKKworfSAvLyBuYW1lc3BhY2Ug
SlNDCisKKyNlbmRpZiAvLyBBcnJheVByb2ZpbGVfaAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAkocmV2aXNpb24gMTI1NjAzKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTExNTUsNiArMTE1NSw3IEBAIHZvaWQgQ29kZUJsb2NrOjpkdW1wKEV4ZWNTdGF0ZSogZXhl
YywgY28KICAgICAgICAgICAgIGRhdGFMb2coIlslNGRdIGdldF9ieV92YWxcdCAlcywgJXMsICVz
IiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUo
ZXhlYywgcjEpLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIyKS5kYXRhKCkpOwogICAgICAg
ICAgICAgZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUobG9jYXRpb24pOwogICAgICAgICAg
ICAgaXQrKzsKKyAgICAgICAgICAgIGl0Kys7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
fQogICAgICAgICBjYXNlIG9wX2dldF9hcmd1bWVudF9ieV92YWw6IHsKQEAgLTExNjQsNiArMTE2
NSw3IEBAIHZvaWQgQ29kZUJsb2NrOjpkdW1wKEV4ZWNTdGF0ZSogZXhlYywgY28KICAgICAgICAg
ICAgIGRhdGFMb2coIlslNGRdIGdldF9hcmd1bWVudF9ieV92YWxcdCAlcywgJXMsICVzIiwgbG9j
YXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywg
cjEpLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIyKS5kYXRhKCkpOwogICAgICAgICAgICAg
ZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUobG9jYXRpb24pOwogICAgICAgICAgICAgKytp
dDsKKyAgICAgICAgICAgICsraXQ7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAg
ICAgICBjYXNlIG9wX2dldF9ieV9wbmFtZTogewpAQCAtMTE4Myw2ICsxMTg1LDcgQEAgdm9pZCBD
b2RlQmxvY2s6OmR1bXAoRXhlY1N0YXRlKiBleGVjLCBjbwogICAgICAgICAgICAgaW50IHIyID0g
KCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBkYXRhTG9nKCJbJTRkXSBwdXRfYnlfdmFs
XHQgJXMsICVzLCAlcyIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSwg
cmVnaXN0ZXJOYW1lKGV4ZWMsIHIxKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCByMikuZGF0
YSgpKTsKICAgICAgICAgICAgIGR1bXBCeXRlY29kZUNvbW1lbnRBbmROZXdMaW5lKGxvY2F0aW9u
KTsKKyAgICAgICAgICAgICsraXQ7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAg
ICAgICBjYXNlIG9wX2RlbF9ieV92YWw6IHsKQEAgLTI3NjksNiArMjc3MiwyMyBAQCBib29sIEZ1
bmN0aW9uQ29kZUJsb2NrOjpqaXRDb21waWxlSW1wbChFCiAjZW5kaWYKIAogI2lmIEVOQUJMRShW
QUxVRV9QUk9GSUxFUikKK0FycmF5UHJvZmlsZSogQ29kZUJsb2NrOjpnZXRBcnJheVByb2ZpbGUo
dW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQpCit7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IG1fYXJyYXlQcm9maWxlcy5zaXplKCk7ICsraSkgeworICAgICAgICBpZiAobV9hcnJheVByb2Zp
bGVzW2ldLmJ5dGVjb2RlT2Zmc2V0KCkgPT0gYnl0ZWNvZGVPZmZzZXQpCisgICAgICAgICAgICBy
ZXR1cm4gJm1fYXJyYXlQcm9maWxlc1tpXTsKKyAgICB9CisgICAgcmV0dXJuIDA7Cit9CisKK0Fy
cmF5UHJvZmlsZSogQ29kZUJsb2NrOjpnZXRPckFkZEFycmF5UHJvZmlsZSh1bnNpZ25lZCBieXRl
Y29kZU9mZnNldCkKK3sKKyAgICBBcnJheVByb2ZpbGUqIHJlc3VsdCA9IGdldEFycmF5UHJvZmls
ZShieXRlY29kZU9mZnNldCk7CisgICAgaWYgKHJlc3VsdCkKKyAgICAgICAgcmV0dXJuIHJlc3Vs
dDsKKyAgICByZXR1cm4gYWRkQXJyYXlQcm9maWxlKGJ5dGVjb2RlT2Zmc2V0KTsKK30KKwogdm9p
ZCBDb2RlQmxvY2s6OnVwZGF0ZUFsbFByZWRpY3Rpb25zQW5kQ291bnRMaXZlbmVzcygKICAgICBP
cGVyYXRpb25JblByb2dyZXNzIG9wZXJhdGlvbiwgdW5zaWduZWQmIG51bWJlck9mTGl2ZU5vbkFy
Z3VtZW50VmFsdWVQcm9maWxlcywgdW5zaWduZWQmIG51bWJlck9mU2FtcGxlc0luUHJvZmlsZXMp
CiB7CkBAIC0yNzkyLDYgKzI4MTIsMTIgQEAgdm9pZCBDb2RlQmxvY2s6OnVwZGF0ZUFsbFByZWRp
Y3Rpb25zQW5kQwogI2lmIEVOQUJMRShERkdfSklUKQogICAgIG1fbGF6eU9wZXJhbmRWYWx1ZVBy
b2ZpbGVzLmNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbnMob3BlcmF0aW9uKTsKICNlbmRpZgorICAg
IAorICAgIC8vIERvbid0IGNvdW50IHRoZSBhcnJheSBwcm9maWxlcyB0b3dhcmRzIHN0YXRpc3Rp
Y3MsIHNpbmNlIGVhY2ggYXJyYXkgcHJvZmlsZQorICAgIC8vIHNpdGUgYWxzbyBoYXMgYSB2YWx1
ZSBwcm9maWxlIHNpdGUgLSBzbyB3ZSBhbHJlYWR5IGtub3cgd2hldGhlciBvciBub3QgaXQncwor
ICAgIC8vIGxpdmUuCisgICAgZm9yICh1bnNpZ25lZCBpID0gbV9hcnJheVByb2ZpbGVzLnNpemUo
KTsgaS0tOykKKyAgICAgICAgbV9hcnJheVByb2ZpbGVzW2ldLmNvbXB1dGVVcGRhdGVkUHJlZGlj
dGlvbihvcGVyYXRpb24pOwogfQogCiB2b2lkIENvZGVCbG9jazo6dXBkYXRlQWxsUHJlZGljdGlv
bnMoT3BlcmF0aW9uSW5Qcm9ncmVzcyBvcGVyYXRpb24pCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCShyZXZpc2lvbiAxMjU2MDMpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgJKHdvcmtpbmcgY29weSkKQEAgLTMw
LDYgKzMwLDcgQEAKICNpZm5kZWYgQ29kZUJsb2NrX2gKICNkZWZpbmUgQ29kZUJsb2NrX2gKIAor
I2luY2x1ZGUgIkFycmF5UHJvZmlsZS5oIgogI2luY2x1ZGUgIkJ5dGVjb2RlQ29udmVudGlvbnMu
aCIKICNpbmNsdWRlICJDYWxsTGlua0luZm8uaCIKICNpbmNsdWRlICJDYWxsUmV0dXJuT2Zmc2V0
VG9CeXRlY29kZU9mZnNldC5oIgpAQCAtNzUxLDggKzc1MiwxOCBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgdW5zaWduZWQgZXhlY3V0aW9uRW50cnlDb3Vu
dCgpIGNvbnN0IHsgcmV0dXJuIG1fZXhlY3V0aW9uRW50cnlDb3VudDsgfQotI2VuZGlmCiAKKyAg
ICAgICAgdW5zaWduZWQgbnVtYmVyT2ZBcnJheVByb2ZpbGVzKCkgY29uc3QgeyByZXR1cm4gbV9h
cnJheVByb2ZpbGVzLnNpemUoKTsgfQorICAgICAgICBjb25zdCBBcnJheVByb2ZpbGVWZWN0b3Im
IGFycmF5UHJvZmlsZXMoKSB7IHJldHVybiBtX2FycmF5UHJvZmlsZXM7IH0KKyAgICAgICAgQXJy
YXlQcm9maWxlKiBhZGRBcnJheVByb2ZpbGUodW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIG1fYXJyYXlQcm9maWxlcy5hcHBlbmQoQXJyYXlQcm9maWxlKGJ5
dGVjb2RlT2Zmc2V0KSk7CisgICAgICAgICAgICByZXR1cm4gJm1fYXJyYXlQcm9maWxlcy5sYXN0
KCk7CisgICAgICAgIH0KKyAgICAgICAgQXJyYXlQcm9maWxlKiBnZXRBcnJheVByb2ZpbGUodW5z
aWduZWQgYnl0ZWNvZGVPZmZzZXQpOworICAgICAgICBBcnJheVByb2ZpbGUqIGdldE9yQWRkQXJy
YXlQcm9maWxlKHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0KTsKKyNlbmRpZgorICAgICAgICAKICAg
ICAgICAgdW5zaWduZWQgZ2xvYmFsUmVzb2x2ZUluZm9Db3VudCgpIGNvbnN0CiAgICAgICAgIHsK
ICNpZiBFTkFCTEUoSklUKSAgICAKQEAgLTEzMzMsNiArMTM0NCw3IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICBTZWdtZW50ZWRWZWN0b3I8VmFsdWVQcm9maWxlLCA4PiBtX3ZhbHVlUHJvZmls
ZXM7CiAgICAgICAgIFNlZ21lbnRlZFZlY3RvcjxSYXJlQ2FzZVByb2ZpbGUsIDg+IG1fcmFyZUNh
c2VQcm9maWxlczsKICAgICAgICAgU2VnbWVudGVkVmVjdG9yPFJhcmVDYXNlUHJvZmlsZSwgOD4g
bV9zcGVjaWFsRmFzdENhc2VQcm9maWxlczsKKyAgICAgICAgQXJyYXlQcm9maWxlVmVjdG9yIG1f
YXJyYXlQcm9maWxlczsKICAgICAgICAgdW5zaWduZWQgbV9leGVjdXRpb25FbnRyeUNvdW50Owog
I2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbnN0cnVjdGlv
bi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbnN0cnVj
dGlvbi5oCShyZXZpc2lvbiAxMjU2MDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvSW5zdHJ1Y3Rpb24uaAkod29ya2luZyBjb3B5KQpAQCAtNDYsNiArNDYsNyBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAvLyBjdXJlbnRseSBhY3R1YWxseSB1c2UgUG9seW1vcnBoaWNBY2Nlc3NT
dHJ1Y3R1cmVMaXN0cywgd2hpY2ggd2Ugc2hvdWxkKS4gIEFueXdheSwgdGhpcyBzZWVtcyBsaWtl
IHRoZSBiZXN0CiAgICAgLy8gc29sdXRpb24gZm9yIG5vdyAtIHdpbGwgbmVlZCB0byBzb21ldGhp
bmcgc21hcnRlciBpZi93aGVuIHdlIGFjdHVhbGx5IHdhbnQgbWl4ZWQtbW9kZSBvcGVyYXRpb24u
CiAKKyAgICBjbGFzcyBBcnJheVByb2ZpbGU7CiAgICAgY2xhc3MgSlNDZWxsOwogICAgIGNsYXNz
IFN0cnVjdHVyZTsKICAgICBjbGFzcyBTdHJ1Y3R1cmVDaGFpbjsKQEAgLTE5MCw2ICsxOTEsNyBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgSW5zdHJ1Y3Rpb24oTExJbnRDYWxsTGlua0luZm8q
IGNhbGxMaW5rSW5mbykgeyB1LmNhbGxMaW5rSW5mbyA9IGNhbGxMaW5rSW5mbzsgfQogICAgICAg
ICAKICAgICAgICAgSW5zdHJ1Y3Rpb24oVmFsdWVQcm9maWxlKiBwcm9maWxlKSB7IHUucHJvZmls
ZSA9IHByb2ZpbGU7IH0KKyAgICAgICAgSW5zdHJ1Y3Rpb24oQXJyYXlQcm9maWxlKiBwcm9maWxl
KSB7IHUuYXJyYXlQcm9maWxlID0gcHJvZmlsZTsgfQogICAgICAgICAKICAgICAgICAgSW5zdHJ1
Y3Rpb24oV3JpdGVCYXJyaWVyPFVua25vd24+KiByZWdpc3RlclBvaW50ZXIpIHsgdS5yZWdpc3Rl
clBvaW50ZXIgPSByZWdpc3RlclBvaW50ZXI7IH0KICAgICAgICAgCkBAIC0yMDUsNiArMjA3LDcg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICBQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVu
YyBnZXR0ZXJGdW5jOwogICAgICAgICAgICAgTExJbnRDYWxsTGlua0luZm8qIGNhbGxMaW5rSW5m
bzsKICAgICAgICAgICAgIFZhbHVlUHJvZmlsZSogcHJvZmlsZTsKKyAgICAgICAgICAgIEFycmF5
UHJvZmlsZSogYXJyYXlQcm9maWxlOwogICAgICAgICAgICAgdm9pZCogcG9pbnRlcjsKICAgICAg
ICAgICAgIGJvb2wqIHByZWRpY2F0ZVBvaW50ZXI7CiAgICAgICAgIH0gdTsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PcGNvZGUuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT3Bjb2RlLmgJKHJldmlzaW9uIDEyNTYwMykKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PcGNvZGUuaAkod29ya2luZyBjb3B5KQpAQCAt
MTMyLDEwICsxMzIsMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIG1hY3JvKG9wX3B1dF9i
eV9pZF9yZXBsYWNlLCA5KSBcCiAgICAgICAgIG1hY3JvKG9wX3B1dF9ieV9pZF9nZW5lcmljLCA5
KSBcCiAgICAgICAgIG1hY3JvKG9wX2RlbF9ieV9pZCwgNCkgXAotICAgICAgICBtYWNybyhvcF9n
ZXRfYnlfdmFsLCA1KSAvKiBoYXMgdmFsdWUgcHJvZmlsaW5nICovIFwKLSAgICAgICAgbWFjcm8o
b3BfZ2V0X2FyZ3VtZW50X2J5X3ZhbCwgNSkgLyogbXVzdCBiZSB0aGUgc2FtZSBzaXplIGFzIG9w
X2dldF9ieV92YWwgKi8gXAorICAgICAgICBtYWNybyhvcF9nZXRfYnlfdmFsLCA2KSAvKiBoYXMg
dmFsdWUgcHJvZmlsaW5nICovIFwKKyAgICAgICAgbWFjcm8ob3BfZ2V0X2FyZ3VtZW50X2J5X3Zh
bCwgNikgLyogbXVzdCBiZSB0aGUgc2FtZSBzaXplIGFzIG9wX2dldF9ieV92YWwgKi8gXAogICAg
ICAgICBtYWNybyhvcF9nZXRfYnlfcG5hbWUsIDcpIFwKLSAgICAgICAgbWFjcm8ob3BfcHV0X2J5
X3ZhbCwgNCkgXAorICAgICAgICBtYWNybyhvcF9wdXRfYnlfdmFsLCA1KSBcCiAgICAgICAgIG1h
Y3JvKG9wX2RlbF9ieV92YWwsIDQpIFwKICAgICAgICAgbWFjcm8ob3BfcHV0X2J5X2luZGV4LCA0
KSBcCiAgICAgICAgIG1hY3JvKG9wX3B1dF9nZXR0ZXJfc2V0dGVyLCA1KSBcCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2Vu
ZXJhdG9yLmNwcAkocmV2aXNpb24gMTI1NjAzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcwOCw2
ICs3MDgsMTUgQEAgdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6cHJlcGVuZENvbW1lbnQoYwogfQog
I2VuZGlmCiAKK0FycmF5UHJvZmlsZSogQnl0ZWNvZGVHZW5lcmF0b3I6Om5ld0FycmF5UHJvZmls
ZSgpCit7CisjaWYgRU5BQkxFKFZBTFVFX1BST0ZJTEVSKQorICAgIHJldHVybiBtX2NvZGVCbG9j
ay0+YWRkQXJyYXlQcm9maWxlKGluc3RydWN0aW9ucygpLnNpemUoKSk7CisjZWxzZQorICAgIHJl
dHVybiAwOworI2VuZGlmCit9CisKIFZhbHVlUHJvZmlsZSogQnl0ZWNvZGVHZW5lcmF0b3I6OmVt
aXRQcm9maWxlZE9wY29kZShPcGNvZGVJRCBvcGNvZGVJRCkKIHsKICNpZiBFTkFCTEUoVkFMVUVf
UFJPRklMRVIpCkBAIC0xNjY5LDExICsxNjc4LDEzIEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2Vu
ZXJhdG9yOjplbWl0RGVsZXQKIAogUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRH
ZXRBcmd1bWVudEJ5VmFsKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogYmFzZSwgUmVnaXN0
ZXJJRCogcHJvcGVydHkpCiB7CisgICAgQXJyYXlQcm9maWxlKiBhcnJheVByb2ZpbGUgPSBuZXdB
cnJheVByb2ZpbGUoKTsKICAgICBWYWx1ZVByb2ZpbGUqIHByb2ZpbGUgPSBlbWl0UHJvZmlsZWRP
cGNvZGUob3BfZ2V0X2FyZ3VtZW50X2J5X3ZhbCk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5k
KGRzdC0+aW5kZXgoKSk7CiAgICAgQVNTRVJUKGJhc2UtPmluZGV4KCkgPT0gbV9jb2RlQmxvY2st
PmFyZ3VtZW50c1JlZ2lzdGVyKCkpOwogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChiYXNlLT5p
bmRleCgpKTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQocHJvcGVydHktPmluZGV4KCkpOwor
ICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChhcnJheVByb2ZpbGUpOwogICAgIGluc3RydWN0aW9u
cygpLmFwcGVuZChwcm9maWxlKTsKICAgICByZXR1cm4gZHN0OwogfQpAQCAtMTY5MywyMCArMTcw
NCwyNCBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEdldEJ5CiAgICAgICAg
ICAgICByZXR1cm4gZHN0OwogICAgICAgICB9CiAgICAgfQorICAgIEFycmF5UHJvZmlsZSogYXJy
YXlQcm9maWxlID0gbmV3QXJyYXlQcm9maWxlKCk7CiAgICAgVmFsdWVQcm9maWxlKiBwcm9maWxl
ID0gZW1pdFByb2ZpbGVkT3Bjb2RlKG9wX2dldF9ieV92YWwpOwogICAgIGluc3RydWN0aW9ucygp
LmFwcGVuZChkc3QtPmluZGV4KCkpOwogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChiYXNlLT5p
bmRleCgpKTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQocHJvcGVydHktPmluZGV4KCkpOwor
ICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChhcnJheVByb2ZpbGUpOwogICAgIGluc3RydWN0aW9u
cygpLmFwcGVuZChwcm9maWxlKTsKICAgICByZXR1cm4gZHN0OwogfQogCiBSZWdpc3RlcklEKiBC
eXRlY29kZUdlbmVyYXRvcjo6ZW1pdFB1dEJ5VmFsKFJlZ2lzdGVySUQqIGJhc2UsIFJlZ2lzdGVy
SUQqIHByb3BlcnR5LCBSZWdpc3RlcklEKiB2YWx1ZSkKIHsKKyAgICBBcnJheVByb2ZpbGUqIGFy
cmF5UHJvZmlsZSA9IG5ld0FycmF5UHJvZmlsZSgpOwogICAgIGVtaXRPcGNvZGUob3BfcHV0X2J5
X3ZhbCk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGJhc2UtPmluZGV4KCkpOwogICAgIGlu
c3RydWN0aW9ucygpLmFwcGVuZChwcm9wZXJ0eS0+aW5kZXgoKSk7CiAgICAgaW5zdHJ1Y3Rpb25z
KCkuYXBwZW5kKHZhbHVlLT5pbmRleCgpKTsKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoYXJy
YXlQcm9maWxlKTsKICAgICByZXR1cm4gdmFsdWU7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgJKHJl
dmlzaW9uIDEyNTYwMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0
ZWNvZGVHZW5lcmF0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtNTU1LDYgKzU1NSw3IEBAIG5hbWVz
cGFjZSBKU0MgewogI2VuZGlmCiAKICAgICAgICAgdm9pZCBlbWl0T3Bjb2RlKE9wY29kZUlEKTsK
KyAgICAgICAgQXJyYXlQcm9maWxlKiBuZXdBcnJheVByb2ZpbGUoKTsKICAgICAgICAgVmFsdWVQ
cm9maWxlKiBlbWl0UHJvZmlsZWRPcGNvZGUoT3Bjb2RlSUQpOwogICAgICAgICB2b2lkIHJldHJp
ZXZlTGFzdEJpbmFyeU9wKGludCYgZHN0SW5kZXgsIGludCYgc3JjMUluZGV4LCBpbnQmIHNyYzJJ
bmRleCk7CiAgICAgICAgIHZvaWQgcmV0cmlldmVMYXN0VW5hcnlPcChpbnQmIGRzdEluZGV4LCBp
bnQmIHNyY0luZGV4KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJh
Y3RTdGF0ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdB
YnN0cmFjdFN0YXRlLmNwcAkocmV2aXNpb24gMTI1NjAzKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdBYnN0cmFjdFN0YXRlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA2LDggKzEw
Niw2IEBAIHZvaWQgQWJzdHJhY3RTdGF0ZTo6aW5pdGlhbGl6ZShHcmFwaCYgZ3IKICAgICAgICAg
U3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbiA9IG5vZGUudmFyaWFibGVBY2Nlc3NEYXRhKCktPnBy
ZWRpY3Rpb24oKTsKICAgICAgICAgaWYgKGlzSW50MzJTcGVjdWxhdGlvbihwcmVkaWN0aW9uKSkK
ICAgICAgICAgICAgIHJvb3QtPnZhbHVlc0F0SGVhZC5hcmd1bWVudChpKS5zZXQoU3BlY0ludDMy
KTsKLSAgICAgICAgZWxzZSBpZiAoaXNBcnJheVNwZWN1bGF0aW9uKHByZWRpY3Rpb24pKQotICAg
ICAgICAgICAgcm9vdC0+dmFsdWVzQXRIZWFkLmFyZ3VtZW50KGkpLnNldChTcGVjQXJyYXkpOwog
ICAgICAgICBlbHNlIGlmIChpc0Jvb2xlYW5TcGVjdWxhdGlvbihwcmVkaWN0aW9uKSkKICAgICAg
ICAgICAgIHJvb3QtPnZhbHVlc0F0SGVhZC5hcmd1bWVudChpKS5zZXQoU3BlY0Jvb2xlYW4pOwog
ICAgICAgICBlbHNlIGlmIChpc0ludDhBcnJheVNwZWN1bGF0aW9uKHByZWRpY3Rpb24pKQpAQCAt
MjkwLDEwICsyODgsNyBAQCBib29sIEFic3RyYWN0U3RhdGU6OmV4ZWN1dGUodW5zaWduZWQgaW5k
CiAgICAgICAgIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3RlZFR5cGUgPSBub2RlLnZhcmlhYmxlQWNj
ZXNzRGF0YSgpLT5hcmd1bWVudEF3YXJlUHJlZGljdGlvbigpOwogICAgICAgICBpZiAoaXNJbnQz
MlNwZWN1bGF0aW9uKHByZWRpY3RlZFR5cGUpKQogICAgICAgICAgICAgc3BlY3VsYXRlSW50MzJV
bmFyeShub2RlKTsKLSAgICAgICAgZWxzZSBpZiAoaXNBcnJheVNwZWN1bGF0aW9uKHByZWRpY3Rl
ZFR5cGUpKSB7Ci0gICAgICAgICAgICBub2RlLnNldENhbkV4aXQoIWlzQXJyYXlTcGVjdWxhdGlv
bihmb3JOb2RlKG5vZGUuY2hpbGQxKCkpLm1fdHlwZSkpOwotICAgICAgICAgICAgZm9yTm9kZShu
b2RlLmNoaWxkMSgpKS5maWx0ZXIoU3BlY0FycmF5KTsKLSAgICAgICAgfSBlbHNlIGlmIChpc0Nl
bGxTcGVjdWxhdGlvbihwcmVkaWN0ZWRUeXBlKSkgeworICAgICAgICBlbHNlIGlmIChpc0NlbGxT
cGVjdWxhdGlvbihwcmVkaWN0ZWRUeXBlKSkgewogICAgICAgICAgICAgbm9kZS5zZXRDYW5FeGl0
KCFpc0NlbGxTcGVjdWxhdGlvbihmb3JOb2RlKG5vZGUuY2hpbGQxKCkpLm1fdHlwZSkpOwogICAg
ICAgICAgICAgZm9yTm9kZShub2RlLmNoaWxkMSgpKS5maWx0ZXIoU3BlY0NlbGwpOwogICAgICAg
ICB9IGVsc2UgaWYgKGlzQm9vbGVhblNwZWN1bGF0aW9uKHByZWRpY3RlZFR5cGUpKQpAQCAtODY3
LDcgKzg2Miw3IEBAIGJvb2wgQWJzdHJhY3RTdGF0ZTo6ZXhlY3V0ZSh1bnNpZ25lZCBpbmQKICAg
ICAgICAgICAgIG1faXNWYWxpZCA9IGZhbHNlOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IH0KLSAgICAgICAgaWYgKCFpc0FjdGlvbmFibGVBcnJheVNwZWN1bGF0aW9uKG1fZ3JhcGhbbm9k
ZS5jaGlsZDEoKV0ucHJlZGljdGlvbigpKSB8fCAhbV9ncmFwaFtub2RlLmNoaWxkMigpXS5zaG91
bGRTcGVjdWxhdGVJbnRlZ2VyKCkpIHsKKyAgICAgICAgaWYgKCFtX2dyYXBoW25vZGUuY2hpbGQy
KCldLnNob3VsZFNwZWN1bGF0ZUludGVnZXIoKSB8fCAoIW5vZGUuY2hpbGQzKCkgJiYgIW1fZ3Jh
cGhbbm9kZS5jaGlsZDEoKV0uc2hvdWxkU3BlY3VsYXRlQXJndW1lbnRzKCkpKSB7CiAgICAgICAg
ICAgICBjbG9iYmVyV29ybGQobm9kZS5jb2RlT3JpZ2luLCBpbmRleEluQmxvY2spOwogICAgICAg
ICAgICAgZm9yTm9kZShub2RlSW5kZXgpLm1ha2VUb3AoKTsKICAgICAgICAgICAgIGJyZWFrOwpA
QCAtOTQyLDggKzkzNyw3IEBAIGJvb2wgQWJzdHJhY3RTdGF0ZTo6ZXhlY3V0ZSh1bnNpZ25lZCBp
bmQKICAgICAgICAgICAgIGZvck5vZGUobm9kZUluZGV4KS5zZXQoU3BlY0RvdWJsZSk7CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgfQotICAgICAgICBBU1NFUlQobV9ncmFwaFtub2RlLmNo
aWxkMSgpXS5zaG91bGRTcGVjdWxhdGVBcnJheSgpKTsKLSAgICAgICAgZm9yTm9kZShub2RlLmNo
aWxkMSgpKS5maWx0ZXIoU3BlY0FycmF5KTsKKyAgICAgICAgZm9yTm9kZShub2RlLmNoaWxkMSgp
KS5maWx0ZXIoU3BlY0NlbGwpOwogICAgICAgICBmb3JOb2RlKG5vZGUuY2hpbGQyKCkpLmZpbHRl
cihTcGVjSW50MzIpOwogICAgICAgICBmb3JOb2RlKG5vZGVJbmRleCkubWFrZVRvcCgpOwogICAg
ICAgICBicmVhazsKQEAgLTEwNTMsOCArMTA0Nyw3IEBAIGJvb2wgQWJzdHJhY3RTdGF0ZTo6ZXhl
Y3V0ZSh1bnNpZ25lZCBpbmQKICAgICAgICAgICAgIGZvck5vZGUoY2hpbGQzKS5maWx0ZXIoU3Bl
Y051bWJlcik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQotICAgICAgICBBU1NFUlQo
bV9ncmFwaFtjaGlsZDFdLnNob3VsZFNwZWN1bGF0ZUFycmF5KCkpOwotICAgICAgICBmb3JOb2Rl
KGNoaWxkMSkuZmlsdGVyKFNwZWNBcnJheSk7CisgICAgICAgIGZvck5vZGUoY2hpbGQxKS5maWx0
ZXIoU3BlY0NlbGwpOwogICAgICAgICBmb3JOb2RlKGNoaWxkMikuZmlsdGVyKFNwZWNJbnQzMik7
CiAgICAgICAgIGlmIChub2RlLm9wKCkgPT0gUHV0QnlWYWxTYWZlKQogICAgICAgICAgICAgY2xv
YmJlcldvcmxkKG5vZGUuY29kZU9yaWdpbiwgaW5kZXhJbkJsb2NrKTsKQEAgLTEwNjMsMTMgKzEw
NTYsMTMgQEAgYm9vbCBBYnN0cmFjdFN0YXRlOjpleGVjdXRlKHVuc2lnbmVkIGluZAogICAgICAg
ICAgICAgCiAgICAgY2FzZSBBcnJheVB1c2g6CiAgICAgICAgIG5vZGUuc2V0Q2FuRXhpdCh0cnVl
KTsKLSAgICAgICAgZm9yTm9kZShub2RlLmNoaWxkMSgpKS5maWx0ZXIoU3BlY0FycmF5KTsKKyAg
ICAgICAgZm9yTm9kZShub2RlLmNoaWxkMSgpKS5maWx0ZXIoU3BlY0NlbGwpOwogICAgICAgICBm
b3JOb2RlKG5vZGVJbmRleCkuc2V0KFNwZWNOdW1iZXIpOwogICAgICAgICBicmVhazsKICAgICAg
ICAgICAgIAogICAgIGNhc2UgQXJyYXlQb3A6CiAgICAgICAgIG5vZGUuc2V0Q2FuRXhpdCh0cnVl
KTsKLSAgICAgICAgZm9yTm9kZShub2RlLmNoaWxkMSgpKS5maWx0ZXIoU3BlY0FycmF5KTsKKyAg
ICAgICAgZm9yTm9kZShub2RlLmNoaWxkMSgpKS5maWx0ZXIoU3BlY0NlbGwpOwogICAgICAgICBm
b3JOb2RlKG5vZGVJbmRleCkubWFrZVRvcCgpOwogICAgICAgICBicmVhazsKICAgICAgICAgICAg
IApAQCAtMTM1NCw3ICsxMzQ3LDcgQEAgYm9vbCBBYnN0cmFjdFN0YXRlOjpleGVjdXRlKHVuc2ln
bmVkIGluZAogICAgICAgICAgICAgCiAgICAgY2FzZSBHZXRBcnJheUxlbmd0aDoKICAgICAgICAg
bm9kZS5zZXRDYW5FeGl0KHRydWUpOwotICAgICAgICBmb3JOb2RlKG5vZGUuY2hpbGQxKCkpLmZp
bHRlcihTcGVjQXJyYXkpOworICAgICAgICBmb3JOb2RlKG5vZGUuY2hpbGQxKCkpLmZpbHRlcihT
cGVjQ2VsbCk7CiAgICAgICAgIGZvck5vZGUobm9kZUluZGV4KS5zZXQoU3BlY0ludDMyKTsKICAg
ICAgICAgYnJlYWs7CiAKQEAgLTE0NTMsMTIgKzE0NDYsOSBAQCBib29sIEFic3RyYWN0U3RhdGU6
OmV4ZWN1dGUodW5zaWduZWQgaW5kCiAgICAgICAgIGZvck5vZGUobm9kZUluZGV4KS5jbGVhcigp
OyAvLyBUaGUgcmVzdWx0IGlzIG5vdCBhIEpTIHZhbHVlLgogICAgICAgICBicmVhazsKICAgICBj
YXNlIEdldEluZGV4ZWRQcm9wZXJ0eVN0b3JhZ2U6IHsKKyAgICAgICAgQVNTRVJUKG1fZ3JhcGhb
bm9kZS5jaGlsZDEoKV0ucHJlZGljdGlvbigpKTsKKyAgICAgICAgQVNTRVJUKG1fZ3JhcGhbbm9k
ZS5jaGlsZDIoKV0uc2hvdWxkU3BlY3VsYXRlSW50ZWdlcigpKTsKICAgICAgICAgbm9kZS5zZXRD
YW5FeGl0KHRydWUpOyAvLyBMaWVzLCBidXQgdGhpcyBpcyAoYWxtb3N0KSBhbHdheXMgZm9sbG93
ZWQgYnkgR2V0QnlWYWwsIHdoaWNoIGRvZXMgZXhpdC4gU28gbm8gcG9pbnQgaW4gdHJ5aW5nIHRv
IGJlIG1vcmUgcHJlY2lzZS4KLSAgICAgICAgU3BlY3VsYXRlZFR5cGUgYmFzZVByZWRpY3Rpb24g
PSBtX2dyYXBoW25vZGUuY2hpbGQyKCldLnByZWRpY3Rpb24oKTsKLSAgICAgICAgaWYgKCEoYmFz
ZVByZWRpY3Rpb24gJiBTcGVjSW50MzIpICYmIGJhc2VQcmVkaWN0aW9uKSB7Ci0gICAgICAgICAg
ICBmb3JOb2RlKG5vZGVJbmRleCkuY2xlYXIoKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICB9CiAgICAgICAgIGlmIChtX2dyYXBoW25vZGUuY2hpbGQxKCldLnNob3VsZFNwZWN1bGF0ZUFy
Z3VtZW50cygpKSB7CiAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAg
ICAgIGJyZWFrOwpAQCAtMTUxNCw3ICsxNTA0LDcgQEAgYm9vbCBBYnN0cmFjdFN0YXRlOjpleGVj
dXRlKHVuc2lnbmVkIGluZAogICAgICAgICAgICAgZm9yTm9kZShub2RlSW5kZXgpLmNsZWFyKCk7
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQotICAgICAgICBmb3JOb2RlKG5vZGUuY2hp
bGQxKCkpLmZpbHRlcihTcGVjQXJyYXkpOworICAgICAgICBmb3JOb2RlKG5vZGUuY2hpbGQxKCkp
LmZpbHRlcihTcGVjQ2VsbCk7CiAgICAgICAgIGZvck5vZGUobm9kZUluZGV4KS5jbGVhcigpOwog
ICAgICAgICBicmVhazsgCiAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdBYnN0cmFjdFZhbHVlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdBYnN0cmFjdFZhbHVlLmgJKHJldmlzaW9uIDEyNTYwMykKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQWJzdHJhY3RWYWx1ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yODIsNiAr
MjgyLDE3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIHNwZWN1bGF0aW9uRnJvbVN0cnVjdHVy
ZShtX3N0cnVjdHVyZSk7CiAgICAgfQogICAgIAorICAgIGJvb2wgaGFzU2luZ2xldG9uKCkgY29u
c3QKKyAgICB7CisgICAgICAgIHJldHVybiBpc05laXRoZXJDbGVhck5vclRvcCgpOworICAgIH0K
KyAgICAKKyAgICBTdHJ1Y3R1cmUqIHNpbmdsZXRvbigpIGNvbnN0CisgICAgeworICAgICAgICBB
U1NFUlQoaXNOZWl0aGVyQ2xlYXJOb3JUb3AoKSk7CisgICAgICAgIHJldHVybiBtX3N0cnVjdHVy
ZTsKKyAgICB9CisgICAgCiAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFN0cnVjdHVyZUFic3Ry
YWN0VmFsdWUmIG90aGVyKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJuIG1fc3RydWN0dXJl
ID09IG90aGVyLm1fc3RydWN0dXJlOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdBcmd1bWVudHNTaW1wbGlmaWNhdGlvblBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0FyZ3VtZW50c1NpbXBsaWZpY2F0aW9uUGhhc2UuY3BwCShy
ZXZpc2lvbiAxMjU2MDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FyZ3VtZW50
c1NpbXBsaWZpY2F0aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMTcsNiArMzE3LDE1
IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICAgICAgLy8gUGhhbnRvbUFyZ3VtZW50cyBhbmQg
T1NSIGV4aXQgd2lsbCBzdGlsbCBkbyB0aGUgcmlnaHQgdGhpbmdzLgogICAgICAgICAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgY2FzZSBD
aGVja1N0cnVjdHVyZToKKyAgICAgICAgICAgICAgICBjYXNlIFN0cnVjdHVyZVRyYW5zaXRpb25X
YXRjaHBvaW50OgorICAgICAgICAgICAgICAgICAgICAvLyBXZSBkb24ndCBjYXJlIGFib3V0IHRo
ZXNlIGJlY2F1c2UgaWYgd2UgZ2V0IHVzZXMgb2YgdGhlIHJlbGV2YW50CisgICAgICAgICAgICAg
ICAgICAgIC8vIHZhcmlhYmxlIHRoZW4gd2UgY2FuIHNhZmVseSBnZXQgcmlkIG9mIHRoZXNlLCB0
b28uIFRoaXMgb2YgY291cnNlCisgICAgICAgICAgICAgICAgICAgIC8vIHJlbGllcyBvbiB0aGVy
ZSBub3QgYmVpbmcgYW55IGluZm9ybWF0aW9uIHRyYW5zZmVycmVkIGJ5IHRoZSBDRkEKKyAgICAg
ICAgICAgICAgICAgICAgLy8gZnJvbSBhIENoZWNrU3RydWN0dXJlIG9uIG9uZSB2YXJpYWJsZSB0
byB0aGUgaW5mb3JtYXRpb24gYWJvdXQgdGhlCisgICAgICAgICAgICAgICAgICAgIC8vIHN0cnVj
dHVyZXMgb2YgYW5vdGhlciB2YXJpYWJsZS4KKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAg
ICAgICAgICAgIG9ic2VydmVCYWRBcmd1bWVudHNVc2VzKG5vZGUpOwogICAgICAgICAgICAgICAg
ICAgICBicmVhazsKQEAgLTQ3MSw2ICs0ODAsMTcgQEAgcHVibGljOgogICAgICAgICAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIAorICAg
ICAgICAgICAgICAgIGNhc2UgQ2hlY2tTdHJ1Y3R1cmU6CisgICAgICAgICAgICAgICAgY2FzZSBT
dHJ1Y3R1cmVUcmFuc2l0aW9uV2F0Y2hwb2ludDogeworICAgICAgICAgICAgICAgICAgICAvLyBX
ZSBjYW4ganVzdCBnZXQgcmlkIG9mIHRoaXMgbm9kZSwgaWYgaXQgcmVmZXJlbmNlcyBhIHBoYW50
b20gYXJndW1lbnQuCisgICAgICAgICAgICAgICAgICAgIGlmICghaXNPS1RvT3B0aW1pemUobV9n
cmFwaFtub2RlLmNoaWxkMSgpXSkpCisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgICAgICAgICAgbV9ncmFwaC5kZXJlZihub2RlLmNoaWxkMSgpKTsKKyAgICAgICAg
ICAgICAgICAgICAgbm9kZS5zZXRPcEFuZERlZmF1bHRGbGFncyhQaGFudG9tKTsKKyAgICAgICAg
ICAgICAgICAgICAgbm9kZS5jaGlsZHJlbi5zZXRDaGlsZDEoRWRnZSgpKTsKKyAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAK
ICAgICAgICAgICAgICAgICBjYXNlIEdldEJ5VmFsOiB7CiAgICAgICAgICAgICAgICAgICAgIGlm
ICghbm9kZS5wcmVkaWN0aW9uKCkKICAgICAgICAgICAgICAgICAgICAgICAgIHx8ICFtX2dyYXBo
W25vZGUuY2hpbGQxKCldLnByZWRpY3Rpb24oKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAJKHJldmlzaW9uIDEyNTYwMykKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yMTQ5LDYgKzIxNDksMTAgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9j
ayh1bnNpZ25lZAogICAgICAgICAgICAgCiAgICAgICAgICAgICBOb2RlSW5kZXggYmFzZSA9IGdl
dChjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kKTsKICAgICAgICAgICAgIE5vZGVJbmRl
eCBwcm9wZXJ0eSA9IGdldChjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kKTsKKyAgICAg
ICAgICAgIEFycmF5UHJvZmlsZSogcHJvZmlsZSA9IGN1cnJlbnRJbnN0cnVjdGlvbls0XS51LmFy
cmF5UHJvZmlsZTsKKyAgICAgICAgICAgIHByb2ZpbGUtPmNvbXB1dGVVcGRhdGVkUHJlZGljdGlv
bigpOworICAgICAgICAgICAgaWYgKHByb2ZpbGUtPmhhc0RlZmluaXRlU3RydWN0dXJlKCkpCisg
ICAgICAgICAgICAgICAgYWRkVG9HcmFwaChDaGVja1N0cnVjdHVyZSwgT3BJbmZvKG1fZ3JhcGgu
YWRkU3RydWN0dXJlU2V0KHByb2ZpbGUtPmV4cGVjdGVkU3RydWN0dXJlKCkpKSwgYmFzZSk7CiAg
ICAgICAgICAgICBOb2RlSW5kZXggcHJvcGVydHlTdG9yYWdlID0gYWRkVG9HcmFwaChHZXRJbmRl
eGVkUHJvcGVydHlTdG9yYWdlLCBiYXNlLCBwcm9wZXJ0eSk7CiAgICAgICAgICAgICBOb2RlSW5k
ZXggZ2V0QnlWYWwgPSBhZGRUb0dyYXBoKEdldEJ5VmFsLCBPcEluZm8oMCksIE9wSW5mbyhwcmVk
aWN0aW9uKSwgYmFzZSwgcHJvcGVydHksIHByb3BlcnR5U3RvcmFnZSk7CiAgICAgICAgICAgICBz
ZXQoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCwgZ2V0QnlWYWwpOwpAQCAtMjE2MCw2
ICsyMTY0LDE1IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQKICAg
ICAgICAgICAgIE5vZGVJbmRleCBiYXNlID0gZ2V0KGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9w
ZXJhbmQpOwogICAgICAgICAgICAgTm9kZUluZGV4IHByb3BlcnR5ID0gZ2V0KGN1cnJlbnRJbnN0
cnVjdGlvblsyXS51Lm9wZXJhbmQpOwogICAgICAgICAgICAgTm9kZUluZGV4IHZhbHVlID0gZ2V0
KGN1cnJlbnRJbnN0cnVjdGlvblszXS51Lm9wZXJhbmQpOworICAgICAgICAgICAgCisgICAgICAg
ICAgICBBcnJheVByb2ZpbGUqIHByb2ZpbGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bNF0udS5hcnJh
eVByb2ZpbGU7CisgICAgICAgICAgICBwcm9maWxlLT5jb21wdXRlVXBkYXRlZFByZWRpY3Rpb24o
KTsKKyAgICAgICAgICAgIGlmIChwcm9maWxlLT5oYXNEZWZpbml0ZVN0cnVjdHVyZSgpKQorICAg
ICAgICAgICAgICAgIGFkZFRvR3JhcGgoQ2hlY2tTdHJ1Y3R1cmUsIE9wSW5mbyhtX2dyYXBoLmFk
ZFN0cnVjdHVyZVNldChwcm9maWxlLT5leHBlY3RlZFN0cnVjdHVyZSgpKSksIGJhc2UpOworCisj
aWYgREZHX0VOQUJMRShERUJVR19QUk9QQUdBVElPTl9WRVJCT1NFKQorICAgICAgICAgICAgZGF0
YUxvZygiU2xvdyBjYXNlIHByb2ZpbGUgZm9yIGJjIyV1OiAldVxuIiwgbV9jdXJyZW50SW5kZXgs
IG1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jay0+cmFyZUNhc2VQcm9maWxlRm9yQnl0
ZWNvZGVPZmZzZXQobV9jdXJyZW50SW5kZXgpLT5tX2NvdW50ZXIpOworI2VuZGlmCiAKICAgICAg
ICAgICAgIGJvb2wgbWFrZVNhZmUgPQogICAgICAgICAgICAgICAgIG1faW5saW5lU3RhY2tUb3At
Pm1fcHJvZmlsZWRCbG9jay0+Y291bGRUYWtlU2xvd0Nhc2UobV9jdXJyZW50SW5kZXgpCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NGR1NpbXBsaWZpY2F0aW9uUGhhc2UuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ0ZHU2ltcGxpZmlj
YXRpb25QaGFzZS5jcHAJKHJldmlzaW9uIDEyNTYwMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQ0ZHU2ltcGxpZmljYXRpb25QaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYx
Myw3ICs2MTMsOSBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAg
IEFTU0VSVChub2RlLnNob3VsZEdlbmVyYXRlKCkpOwogICAgICAgICAgICAgICAgIE5vZGUmIHBv
c3NpYmxlTG9jYWxPcCA9IG1fZ3JhcGhbbm9kZS5jaGlsZDEoKV07Ci0gICAgICAgICAgICAgICAg
aWYgKHBvc3NpYmxlTG9jYWxPcC5oYXNMb2NhbCgpICYmICFwb3NzaWJsZUxvY2FsT3AudmFyaWFi
bGVBY2Nlc3NEYXRhKCktPmlzQ2FwdHVyZWQoKSkgeworICAgICAgICAgICAgICAgIGlmIChwb3Nz
aWJsZUxvY2FsT3Aub3AoKSAhPSBHZXRMb2NhbAorICAgICAgICAgICAgICAgICAgICAmJiBwb3Nz
aWJsZUxvY2FsT3AuaGFzTG9jYWwoKQorICAgICAgICAgICAgICAgICAgICAmJiAhcG9zc2libGVM
b2NhbE9wLnZhcmlhYmxlQWNjZXNzRGF0YSgpLT5pc0NhcHR1cmVkKCkpIHsKICAgICAgICAgICAg
ICAgICAgICAgTm9kZUluZGV4IHNldExvY2FsSW5kZXggPQogICAgICAgICAgICAgICAgICAgICAg
ICAgZmlyc3RCbG9jay0+dmFyaWFibGVzQXRUYWlsLm9wZXJhbmQocG9zc2libGVMb2NhbE9wLmxv
Y2FsKCkpOwogICAgICAgICAgICAgICAgICAgICBOb2RlJiBzZXRMb2NhbCA9IG1fZ3JhcGhbc2V0
TG9jYWxJbmRleF07CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0YW50
Rm9sZGluZ1BoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcAkocmV2aXNpb24gMTI1NjAzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTEwMyw5ICsxMDMsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgfQogICAgICAg
ICAgICAgICAgIAogICAgICAgICAgICAgbV9zdGF0ZS5leGVjdXRlKGluZGV4SW5CbG9jayk7Ci0g
ICAgICAgICAgICBpZiAoIW5vZGUuc2hvdWxkR2VuZXJhdGUoKQotICAgICAgICAgICAgICAgIHx8
IG1fc3RhdGUuZGlkQ2xvYmJlcigpCi0gICAgICAgICAgICAgICAgfHwgbm9kZS5oYXNDb25zdGFu
dCgpKQorICAgICAgICAgICAgaWYgKCFub2RlLnNob3VsZEdlbmVyYXRlKCkgfHwgbV9zdGF0ZS5k
aWRDbG9iYmVyKCkgfHwgbm9kZS5oYXNDb25zdGFudCgpKQogICAgICAgICAgICAgICAgIGNvbnRp
bnVlOwogICAgICAgICAgICAgSlNWYWx1ZSB2YWx1ZSA9IG1fc3RhdGUuZm9yTm9kZShub2RlSW5k
ZXgpLnZhbHVlKCk7CiAgICAgICAgICAgICBpZiAoIXZhbHVlKQpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCShyZXZpc2lvbiAxMjU2MDMpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC05Niw5ICs5NiwyOSBAQCBwcml2YXRlOgogI2lmIERGR19FTkFCTEUoREVCVUdfUFJPUEFH
QVRJT05fVkVSQk9TRSkKICAgICAgICAgICAgIGRhdGFMb2coIiAgQCV1IC0+ICVzIiwgbV9jb21w
aWxlSW5kZXgsIGlzQXJyYXkgPyAiR2V0QXJyYXlMZW5ndGgiIDogIkdldFN0cmluZ0xlbmd0aCIp
OwogI2VuZGlmCi0gICAgICAgICAgICBpZiAoaXNBcnJheSkKKyAgICAgICAgICAgIGlmIChpc0Fy
cmF5KSB7CiAgICAgICAgICAgICAgICAgbm9kZS5zZXRPcChHZXRBcnJheUxlbmd0aCk7Ci0gICAg
ICAgICAgICBlbHNlIGlmIChpc0FyZ3VtZW50cykKKyAgICAgICAgICAgICAgICBBU1NFUlQobm9k
ZS5mbGFncygpICYgTm9kZU11c3RHZW5lcmF0ZSk7CisgICAgICAgICAgICAgICAgbm9kZS5jbGVh
ckZsYWdzKE5vZGVNdXN0R2VuZXJhdGUpOworICAgICAgICAgICAgICAgIG1fZ3JhcGguZGVyZWYo
bV9jb21waWxlSW5kZXgpOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIEFycmF5
UHJvZmlsZSogYXJyYXlQcm9maWxlID0gCisgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGguYmFz
ZWxpbmVDb2RlQmxvY2tGb3Iobm9kZS5jb2RlT3JpZ2luKS0+Z2V0QXJyYXlQcm9maWxlKAorICAg
ICAgICAgICAgICAgICAgICAgICAgbm9kZS5jb2RlT3JpZ2luLmJ5dGVjb2RlSW5kZXgpOworICAg
ICAgICAgICAgICAgIGlmICghYXJyYXlQcm9maWxlKQorICAgICAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgICAgICBhcnJheVByb2ZpbGUtPmNvbXB1dGVVcGRhdGVkUHJlZGljdGlv
bigpOworICAgICAgICAgICAgICAgIGlmICghYXJyYXlQcm9maWxlLT5oYXNEZWZpbml0ZVN0cnVj
dHVyZSgpKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBtX2dy
YXBoLnJlZihub2RlLmNoaWxkMSgpKTsKKyAgICAgICAgICAgICAgICBOb2RlIGNoZWNrU3RydWN0
dXJlKENoZWNrU3RydWN0dXJlLCBub2RlLmNvZGVPcmlnaW4sIE9wSW5mbyhtX2dyYXBoLmFkZFN0
cnVjdHVyZVNldChhcnJheVByb2ZpbGUtPmV4cGVjdGVkU3RydWN0dXJlKCkpKSwgbm9kZS5jaGls
ZDEoKS5pbmRleCgpKTsKKyAgICAgICAgICAgICAgICBjaGVja1N0cnVjdHVyZS5yZWYoKTsKKyAg
ICAgICAgICAgICAgICBOb2RlSW5kZXggY2hlY2tTdHJ1Y3R1cmVJbmRleCA9IG1fZ3JhcGguc2l6
ZSgpOworICAgICAgICAgICAgICAgIG1fZ3JhcGguYXBwZW5kKGNoZWNrU3RydWN0dXJlKTsKKyAg
ICAgICAgICAgICAgICBtX2luc2VydGlvblNldC5hcHBlbmQobV9pbmRleEluQmxvY2ssIGNoZWNr
U3RydWN0dXJlSW5kZXgpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQor
ICAgICAgICAgICAgaWYgKGlzQXJndW1lbnRzKQogICAgICAgICAgICAgICAgIG5vZGUuc2V0T3Ao
R2V0QXJndW1lbnRzTGVuZ3RoKTsKICAgICAgICAgICAgIGVsc2UgaWYgKGlzU3RyaW5nKQogICAg
ICAgICAgICAgICAgIG5vZGUuc2V0T3AoR2V0U3RyaW5nTGVuZ3RoKTsKQEAgLTEyOSwxMCArMTQ5
LDkgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNh
c2UgR2V0SW5kZXhlZFByb3BlcnR5U3RvcmFnZTogewotICAgICAgICAgICAgU3BlY3VsYXRlZFR5
cGUgYmFzZVByZWRpY3Rpb24gPSBtX2dyYXBoW25vZGUuY2hpbGQyKCldLnByZWRpY3Rpb24oKTsK
LSAgICAgICAgICAgIGlmICgoIShiYXNlUHJlZGljdGlvbiAmIFNwZWNJbnQzMikgJiYgYmFzZVBy
ZWRpY3Rpb24pCi0gICAgICAgICAgICAgICAgfHwgbV9ncmFwaFtub2RlLmNoaWxkMSgpXS5zaG91
bGRTcGVjdWxhdGVBcmd1bWVudHMoKQotICAgICAgICAgICAgICAgIHx8ICFpc0FjdGlvbmFibGVB
cnJheVNwZWN1bGF0aW9uKG1fZ3JhcGhbbm9kZS5jaGlsZDEoKV0ucHJlZGljdGlvbigpKSkgewor
ICAgICAgICAgICAgaWYgKCFtX2dyYXBoW25vZGUuY2hpbGQxKCldLnByZWRpY3Rpb24oKQorICAg
ICAgICAgICAgICAgIHx8ICFtX2dyYXBoW25vZGUuY2hpbGQyKCldLnNob3VsZFNwZWN1bGF0ZUlu
dGVnZXIoKQorICAgICAgICAgICAgICAgIHx8IG1fZ3JhcGhbbm9kZS5jaGlsZDEoKV0uc2hvdWxk
U3BlY3VsYXRlQXJndW1lbnRzKCkpIHsKICAgICAgICAgICAgICAgICBub2RlLnNldE9wQW5kRGVm
YXVsdEZsYWdzKE5vcCk7CiAgICAgICAgICAgICAgICAgbV9ncmFwaC5jbGVhckFuZERlcmVmQ2hp
bGQxKG5vZGUpOwogICAgICAgICAgICAgICAgIG1fZ3JhcGguY2xlYXJBbmREZXJlZkNoaWxkMihu
b2RlKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQz
Ml82NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVDMyXzY0LmNwcAkocmV2aXNpb24gMTI1NjAzKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTkxOCw3ICsxOTE4LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlJiBub2Rl
KQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBp
ZiAoaXNBcnJheVNwZWN1bGF0aW9uKHZhbHVlLm1fdHlwZSkgfHwgaXNDZWxsU3BlY3VsYXRpb24o
dmFsdWUubV90eXBlKSkgeworICAgICAgICAgICAgaWYgKGlzQ2VsbFNwZWN1bGF0aW9uKHZhbHVl
Lm1fdHlwZSkpIHsKICAgICAgICAgICAgICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMpOwog
ICAgICAgICAgICAgICAgIG1faml0LmxvYWQzMihKSVRDb21waWxlcjo6cGF5bG9hZEZvcihub2Rl
LmxvY2FsKCkpLCByZXN1bHQuZ3ByKCkpOwogCkBAIC0yMDM2LDE2ICsyMDM2LDYgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlJiBub2RlKQogICAgICAgICAgICAgICAgIHJlY29y
ZFNldExvY2FsKG5vZGUubG9jYWwoKSwgVmFsdWVTb3VyY2UoSW50MzJJblJlZ2lzdGVyRmlsZSkp
OwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYg
KGlzQXJyYXlTcGVjdWxhdGlvbihwcmVkaWN0ZWRUeXBlKSkgewotICAgICAgICAgICAgICAgIFNw
ZWN1bGF0ZUNlbGxPcGVyYW5kIGNlbGwodGhpcywgbm9kZS5jaGlsZDEoKSk7Ci0gICAgICAgICAg
ICAgICAgR1BSUmVnIGNlbGxHUFIgPSBjZWxsLmdwcigpOwotICAgICAgICAgICAgICAgIGlmICgh
aXNBcnJheVNwZWN1bGF0aW9uKG1fc3RhdGUuZm9yTm9kZShub2RlLmNoaWxkMSgpKS5tX3R5cGUp
KQotICAgICAgICAgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFsdWVT
b3VyY2U6OnVuYm94ZWRDZWxsKGNlbGxHUFIpLCBub2RlLmNoaWxkMSgpLCBtX2ppdC5icmFuY2hQ
dHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhjZWxs
R1BSLCBKU0NlbGw6OmNsYXNzSW5mb09mZnNldCgpKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJ
bW1QdHIoJkpTQXJyYXk6OnNfaW5mbykpKTsKLSAgICAgICAgICAgICAgICBtX2ppdC5zdG9yZVB0
cihjZWxsR1BSLCBKSVRDb21waWxlcjo6cGF5bG9hZEZvcihub2RlLmxvY2FsKCkpKTsKLSAgICAg
ICAgICAgICAgICBub1Jlc3VsdChtX2NvbXBpbGVJbmRleCk7Ci0gICAgICAgICAgICAgICAgcmVj
b3JkU2V0TG9jYWwobm9kZS5sb2NhbCgpLCBWYWx1ZVNvdXJjZShDZWxsSW5SZWdpc3RlckZpbGUp
KTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlm
IChpc0NlbGxTcGVjdWxhdGlvbihwcmVkaWN0ZWRUeXBlKSkgewogICAgICAgICAgICAgICAgIFNw
ZWN1bGF0ZUNlbGxPcGVyYW5kIGNlbGwodGhpcywgbm9kZS5jaGlsZDEoKSk7CiAgICAgICAgICAg
ICAgICAgR1BSUmVnIGNlbGxHUFIgPSBjZWxsLmdwcigpOwpAQCAtMjM1Niw3ICsyMzQ2LDcgQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlJiBub2RlKQogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIH0KICAgICAgICAgCi0gICAgICAgIGlmICghYXQobm9kZS5jaGlsZDIoKSku
c2hvdWxkU3BlY3VsYXRlSW50ZWdlcigpIHx8ICFpc0FjdGlvbmFibGVBcnJheVNwZWN1bGF0aW9u
KGF0KG5vZGUuY2hpbGQxKCkpLnByZWRpY3Rpb24oKSkpIHsKKyAgICAgICAgaWYgKCFhdChub2Rl
LmNoaWxkMigpKS5zaG91bGRTcGVjdWxhdGVJbnRlZ2VyKCkgfHwgKCFub2RlLmNoaWxkMygpICYm
ICFhdChub2RlLmNoaWxkMSgpKS5zaG91bGRTcGVjdWxhdGVBcmd1bWVudHMoKSkpIHsKICAgICAg
ICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGJhc2UodGhpcywgbm9kZS5jaGlsZDEoKSk7IC8v
IFNhdmUgYSByZWdpc3Rlciwgc3BlY3VsYXRlIGNlbGwuIFdlJ2xsIHByb2JhYmx5IGJlIHJpZ2h0
LgogICAgICAgICAgICAgSlNWYWx1ZU9wZXJhbmQgcHJvcGVydHkodGhpcywgbm9kZS5jaGlsZDIo
KSk7CiAgICAgICAgICAgICBHUFJSZWcgYmFzZUdQUiA9IGJhc2UuZ3ByKCk7CkBAIC0yNDQ5LDgg
KzI0MzksNiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUmIG5vZGUpCiAgICAg
ICAgICAgICBicmVhazsgICAgICAgICAgICAKICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAg
QVNTRVJUKGF0KG5vZGUuY2hpbGQxKCkpLnNob3VsZFNwZWN1bGF0ZUFycmF5KCkpOwotCiAgICAg
ICAgIFNwZWN1bGF0ZVN0cmljdEludDMyT3BlcmFuZCBwcm9wZXJ0eSh0aGlzLCBub2RlLmNoaWxk
MigpKTsKICAgICAgICAgU3RvcmFnZU9wZXJhbmQgc3RvcmFnZSh0aGlzLCBub2RlLmNoaWxkMygp
KTsKICAgICAgICAgR1BSUmVnIHByb3BlcnR5UmVnID0gcHJvcGVydHkuZ3ByKCk7CkBAIC0yNDY0
LDE3ICsyNDUyLDEzIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSYgbm9kZSkK
ICAgICAgICAgewogICAgICAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBu
b2RlLmNoaWxkMSgpKTsKICAgICAgICAgICAgIEdQUlJlZyBiYXNlUmVnID0gYmFzZS5ncHIoKTsK
LSAgICAgICAgICAgIGlmICghaXNBcnJheVNwZWN1bGF0aW9uKG1fc3RhdGUuZm9yTm9kZShub2Rl
LmNoaWxkMSgpKS5tX3R5cGUpKQotICAgICAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFk
VHlwZSwgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwoYmFzZVJlZyksIG5vZGUuY2hpbGQxKCks
IG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVy
OjpBZGRyZXNzKGJhc2VSZWcsIEpTQ2VsbDo6Y2xhc3NJbmZvT2Zmc2V0KCkpLCBNYWNyb0Fzc2Vt
Ymxlcjo6VHJ1c3RlZEltbVB0cigmSlNBcnJheTo6c19pbmZvKSkpOworICAgICAgICAgICAgLy8g
V2UndmUgYWxyZWFkeSBzcGVjdWxhdGVkIHRoYXQgaXQncyBzb21lIGtpbmQgb2YgYXJyYXksIGF0
IHRoaXMgcG9pbnQuCiAgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKFVuY291bnRhYmxlLCBK
U1ZhbHVlUmVncygpLCBOb05vZGUsIG1faml0LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpBYm92
ZU9yRXF1YWwsIHByb3BlcnR5UmVnLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlUmVnLCBK
U0FycmF5Ojp2ZWN0b3JMZW5ndGhPZmZzZXQoKSkpKTsKICAgICAgICAgfQogCiAgICAgICAgIEdQ
UlRlbXBvcmFyeSByZXN1bHRUYWcodGhpcyk7CiAgICAgICAgIEdQUlRlbXBvcmFyeSByZXN1bHRQ
YXlsb2FkKHRoaXMpOwogCi0gICAgICAgIC8vIEZJWE1FOiBJbiBjYXNlcyB3aGVyZSB0aGVyZSBh
cmUgc3Vic2VxdWVudCBieV92YWwgYWNjZXNzZXMgdG8gdGhlIHNhbWUgYmFzZSBpdCBtaWdodCBo
ZWxwIHRvIGNhY2hlCi0gICAgICAgIC8vIHRoZSBzdG9yYWdlIHBvaW50ZXIgLSBlc3BlY2lhbGx5
IGlmIHRoZXJlIGhhcHBlbnMgdG8gYmUgYW5vdGhlciByZWdpc3RlciBmcmVlIHJpZ2h0IG5vdy4g
SWYgd2UgZG8gc28sCi0gICAgICAgIC8vIHRoZW4gd2UnbGwgbmVlZCB0byBhbGxvY2F0ZSBhIG5l
dyB0ZW1wb3JhcnkgZm9yIHJlc3VsdC4KICAgICAgICAgbV9qaXQubG9hZDMyKE1hY3JvQXNzZW1i
bGVyOjpCYXNlSW5kZXgoc3RvcmFnZVJlZywgcHJvcGVydHlSZWcsIE1hY3JvQXNzZW1ibGVyOjpU
aW1lc0VpZ2h0LCBPQkpFQ1RfT0ZGU0VUT0YoQXJyYXlTdG9yYWdlLCBtX3ZlY3RvclswXSkgKyBP
QkpFQ1RfT0ZGU0VUT0YoSlNWYWx1ZSwgdS5hc0JpdHMudGFnKSksIHJlc3VsdFRhZy5ncHIoKSk7
CiAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soVW5jb3VudGFibGUsIEpTVmFsdWVSZWdzKCksIE5v
Tm9kZSwgbV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6OkVxdWFsLCByZXN1bHRUYWcuZ3By
KCksIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpFbXB0eVZhbHVlVGFnKSkpOwogICAgICAgICBtX2pp
dC5sb2FkMzIoTWFjcm9Bc3NlbWJsZXI6OkJhc2VJbmRleChzdG9yYWdlUmVnLCBwcm9wZXJ0eVJl
ZywgTWFjcm9Bc3NlbWJsZXI6OlRpbWVzRWlnaHQsIE9CSkVDVF9PRkZTRVRPRihBcnJheVN0b3Jh
Z2UsIG1fdmVjdG9yWzBdKSArIE9CSkVDVF9PRkZTRVRPRihKU1ZhbHVlLCB1LmFzQml0cy5wYXls
b2FkKSksIHJlc3VsdFBheWxvYWQuZ3ByKCkpOwpAQCAtMjQ5NSw3ICsyNDc5LDYgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlJiBub2RlKQogICAgICAgICB9CiAgICAgICAgIAog
ICAgICAgICBpZiAoIWF0KGNoaWxkMikuc2hvdWxkU3BlY3VsYXRlSW50ZWdlcigpCi0gICAgICAg
ICAgICB8fCAhaXNBY3Rpb25hYmxlTXV0YWJsZUFycmF5U3BlY3VsYXRpb24oYXQoY2hpbGQxKS5w
cmVkaWN0aW9uKCkpCiAgICAgICAgICAgICB8fCBhdChjaGlsZDEpLnNob3VsZFNwZWN1bGF0ZUFy
Z3VtZW50cygpKSB7CiAgICAgICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMs
IGNoaWxkMSk7IC8vIFNhdmUgYSByZWdpc3Rlciwgc3BlY3VsYXRlIGNlbGwuIFdlJ2xsIHByb2Jh
Ymx5IGJlIHJpZ2h0LgogICAgICAgICAgICAgSlNWYWx1ZU9wZXJhbmQgcHJvcGVydHkodGhpcywg
Y2hpbGQyKTsKQEAgLTI1NzgsMjcgKzI1NjEsMjMgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZShOb2RlJiBub2RlKQogICAgICAgICAgICAgYnJlYWs7ICAgICAgICAgICAgCiAgICAgICAg
IH0KICAgICAgICAgCi0gICAgICAgIEFTU0VSVChhdChjaGlsZDEpLnNob3VsZFNwZWN1bGF0ZUFy
cmF5KCkpOwotCiAgICAgICAgIEpTVmFsdWVPcGVyYW5kIHZhbHVlKHRoaXMsIGNoaWxkMyk7Ci0g
ICAgICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNoKHRoaXMpOwotCiAgICAgICAgIC8vIE1hcCBiYXNl
LCBwcm9wZXJ0eSAmIHZhbHVlIGludG8gcmVnaXN0ZXJzLCBhbGxvY2F0ZSBhIHNjcmF0Y2ggcmVn
aXN0ZXIuCiAgICAgICAgIEdQUlJlZyBiYXNlUmVnID0gYmFzZS5ncHIoKTsKICAgICAgICAgR1BS
UmVnIHByb3BlcnR5UmVnID0gcHJvcGVydHkuZ3ByKCk7CiAgICAgICAgIEdQUlJlZyB2YWx1ZVRh
Z1JlZyA9IHZhbHVlLnRhZ0dQUigpOwogICAgICAgICBHUFJSZWcgdmFsdWVQYXlsb2FkUmVnID0g
dmFsdWUucGF5bG9hZEdQUigpOwotICAgICAgICBHUFJSZWcgc2NyYXRjaFJlZyA9IHNjcmF0Y2gu
Z3ByKCk7CiAgICAgICAgIAogICAgICAgICBpZiAoIW1fY29tcGlsZU9rYXkpCiAgICAgICAgICAg
ICByZXR1cm47Ci0gICAgICAgIAotICAgICAgICB3cml0ZUJhcnJpZXIoYmFzZVJlZywgdmFsdWVU
YWdSZWcsIGNoaWxkMywgV3JpdGVCYXJyaWVyRm9yUHJvcGVydHlBY2Nlc3MsIHNjcmF0Y2hSZWcp
OwogCi0gICAgICAgIC8vIENoZWNrIHRoYXQgYmFzZSBpcyBhbiBhcnJheSwgYW5kIHRoYXQgcHJv
cGVydHkgaXMgY29udGFpbmVkIHdpdGhpbiBtX3ZlY3RvciAoPCBtX3ZlY3Rvckxlbmd0aCkuCi0g
ICAgICAgIC8vIElmIHdlIGhhdmUgcHJlZGljdGVkIHRoZSBiYXNlIHRvIGJlIHR5cGUgYXJyYXks
IHdlIGNhbiBza2lwIHRoZSBjaGVjay4KLSAgICAgICAgaWYgKCFpc0FycmF5U3BlY3VsYXRpb24o
bV9zdGF0ZS5mb3JOb2RlKGNoaWxkMSkubV90eXBlKSkKLSAgICAgICAgICAgIHNwZWN1bGF0aW9u
Q2hlY2soQmFkVHlwZSwgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwoYmFzZVJlZyksIGNoaWxk
MSwgbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJs
ZXI6OkFkZHJlc3MoYmFzZVJlZywgSlNDZWxsOjpjbGFzc0luZm9PZmZzZXQoKSksIE1hY3JvQXNz
ZW1ibGVyOjpUcnVzdGVkSW1tUHRyKCZKU0FycmF5OjpzX2luZm8pKSk7CisgICAgICAgIHsKKyAg
ICAgICAgICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNoKHRoaXMpOworICAgICAgICAgICAgR1BSUmVn
IHNjcmF0Y2hSZWcgPSBzY3JhdGNoLmdwcigpOworICAgICAgICAgICAgd3JpdGVCYXJyaWVyKGJh
c2VSZWcsIHZhbHVlVGFnUmVnLCBjaGlsZDMsIFdyaXRlQmFycmllckZvclByb3BlcnR5QWNjZXNz
LCBzY3JhdGNoUmVnKTsKKyAgICAgICAgfQorCisgICAgICAgIHNwZWN1bGF0ZUFycmF5KGNoaWxk
MSwgYmFzZVJlZyk7CiAKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgYmV5b25kQXJyYXlC
b3VuZHMgPSBtX2ppdC5icmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6QWJvdmVPckVxdWFsLCBwcm9w
ZXJ0eVJlZywgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZVJlZywgSlNBcnJheTo6dmVjdG9y
TGVuZ3RoT2Zmc2V0KCkpKTsKICAgICAgICAgaWYgKG5vZGUub3AoKSA9PSBQdXRCeVZhbCkKQEAg
LTI2MDksNyArMjU4OCw4IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSYgbm9k
ZSkKICAgICAgICAgdmFsdWUudXNlKCk7CiAgICAgICAgIAogICAgICAgICAvLyBHZXQgdGhlIGFy
cmF5IHN0b3JhZ2UuCi0gICAgICAgIEdQUlJlZyBzdG9yYWdlUmVnID0gc2NyYXRjaFJlZzsKKyAg
ICAgICAgR1BSVGVtcG9yYXJ5IHN0b3JhZ2UodGhpcyk7CisgICAgICAgIEdQUlJlZyBzdG9yYWdl
UmVnID0gc3RvcmFnZS5ncHIoKTsKICAgICAgICAgbV9qaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxl
cjo6QWRkcmVzcyhiYXNlUmVnLCBKU0FycmF5OjpzdG9yYWdlT2Zmc2V0KCkpLCBzdG9yYWdlUmVn
KTsKIAogICAgICAgICAvLyBDaGVjayBpZiB3ZSdyZSB3cml0aW5nIHRvIGEgaG9sZTsgaWYgc28g
aW5jcmVtZW50IG1fbnVtVmFsdWVzSW5WZWN0b3IuCkBAIC0yNzk1LDIwICsyNzc1LDIzIEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSYgbm9kZSkKICAgICBjYXNlIEFycmF5UHVz
aDogewogICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUuY2hpbGQx
KCkpOwogICAgICAgICBKU1ZhbHVlT3BlcmFuZCB2YWx1ZSh0aGlzLCBub2RlLmNoaWxkMigpKTsK
LSAgICAgICAgR1BSVGVtcG9yYXJ5IHN0b3JhZ2UodGhpcyk7CiAgICAgICAgIEdQUlRlbXBvcmFy
eSBzdG9yYWdlTGVuZ3RoKHRoaXMpOwogICAgICAgICAKICAgICAgICAgR1BSUmVnIGJhc2VHUFIg
PSBiYXNlLmdwcigpOwogICAgICAgICBHUFJSZWcgdmFsdWVUYWdHUFIgPSB2YWx1ZS50YWdHUFIo
KTsKICAgICAgICAgR1BSUmVnIHZhbHVlUGF5bG9hZEdQUiA9IHZhbHVlLnBheWxvYWRHUFIoKTsK
LSAgICAgICAgR1BSUmVnIHN0b3JhZ2VHUFIgPSBzdG9yYWdlLmdwcigpOwogICAgICAgICBHUFJS
ZWcgc3RvcmFnZUxlbmd0aEdQUiA9IHN0b3JhZ2VMZW5ndGguZ3ByKCk7CiAgICAgICAgIAotICAg
ICAgICB3cml0ZUJhcnJpZXIoYmFzZUdQUiwgdmFsdWVUYWdHUFIsIG5vZGUuY2hpbGQyKCksIFdy
aXRlQmFycmllckZvclByb3BlcnR5QWNjZXNzLCBzdG9yYWdlR1BSLCBzdG9yYWdlTGVuZ3RoR1BS
KTsKKyAgICAgICAgeworICAgICAgICAgICAgR1BSVGVtcG9yYXJ5IHNjcmF0Y2godGhpcyk7Cisg
ICAgICAgICAgICB3cml0ZUJhcnJpZXIoYmFzZUdQUiwgdmFsdWVUYWdHUFIsIG5vZGUuY2hpbGQy
KCksIFdyaXRlQmFycmllckZvclByb3BlcnR5QWNjZXNzLCBzY3JhdGNoLmdwcigpLCBzdG9yYWdl
TGVuZ3RoR1BSKTsKKyAgICAgICAgfQogCi0gICAgICAgIGlmICghaXNBcnJheVNwZWN1bGF0aW9u
KG1fc3RhdGUuZm9yTm9kZShub2RlLmNoaWxkMSgpKS5tX3R5cGUpKQotICAgICAgICAgICAgc3Bl
Y3VsYXRpb25DaGVjayhCYWRUeXBlLCBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChiYXNlR1BS
KSwgbm9kZS5jaGlsZDEoKSwgbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVh
bCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNDZWxsOjpjbGFzc0luZm9PZmZz
ZXQoKSksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKCZKU0FycmF5OjpzX2luZm8pKSk7
CisgICAgICAgIHNwZWN1bGF0ZUFycmF5KG5vZGUuY2hpbGQxKCksIGJhc2VHUFIpOwogICAgICAg
ICAKKyAgICAgICAgR1BSVGVtcG9yYXJ5IHN0b3JhZ2UodGhpcyk7CisgICAgICAgIEdQUlJlZyBz
dG9yYWdlR1BSID0gc3RvcmFnZS5ncHIoKTsKKwogICAgICAgICBtX2ppdC5sb2FkUHRyKE1hY3Jv
QXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTQXJyYXk6OnN0b3JhZ2VPZmZzZXQoKSksIHN0
b3JhZ2VHUFIpOwogICAgICAgICBtX2ppdC5sb2FkMzIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mo
c3RvcmFnZUdQUiwgT0JKRUNUX09GRlNFVE9GKEFycmF5U3RvcmFnZSwgbV9sZW5ndGgpKSwgc3Rv
cmFnZUxlbmd0aEdQUik7CiAgICAgICAgIApAQCAtMjg0NCw4ICsyODI3LDcgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlJiBub2RlKQogICAgICAgICBHUFJSZWcgc3RvcmFnZUdQ
UiA9IHN0b3JhZ2UuZ3ByKCk7CiAgICAgICAgIEdQUlJlZyBzdG9yYWdlTGVuZ3RoR1BSID0gc3Rv
cmFnZUxlbmd0aC5ncHIoKTsKICAgICAgICAgCi0gICAgICAgIGlmICghaXNBcnJheVNwZWN1bGF0
aW9uKG1fc3RhdGUuZm9yTm9kZShub2RlLmNoaWxkMSgpKS5tX3R5cGUpKQotICAgICAgICAgICAg
c3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChiYXNl
R1BSKSwgbm9kZS5jaGlsZDEoKSwgbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RF
cXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNDZWxsOjpjbGFzc0luZm9P
ZmZzZXQoKSksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKCZKU0FycmF5OjpzX2luZm8p
KSk7CisgICAgICAgIHNwZWN1bGF0ZUFycmF5KG5vZGUuY2hpbGQxKCksIGJhc2VHUFIpOwogICAg
ICAgICAKICAgICAgICAgbV9qaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNl
R1BSLCBKU0FycmF5OjpzdG9yYWdlT2Zmc2V0KCkpLCBzdG9yYWdlR1BSKTsKICAgICAgICAgbV9q
aXQubG9hZDMyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHN0b3JhZ2VHUFIsIE9CSkVDVF9PRkZT
RVRPRihBcnJheVN0b3JhZ2UsIG1fbGVuZ3RoKSksIHN0b3JhZ2VMZW5ndGhHUFIpOwpAQCAtMzM5
NSw4ICszMzc3LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlJiBub2RlKQog
ICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUuY2hpbGQxKCkpOwog
ICAgICAgICBHUFJSZWcgYmFzZUdQUiA9IGJhc2UuZ3ByKCk7CiAgICAgICAgIAotICAgICAgICBp
ZiAoIWlzQXJyYXlTcGVjdWxhdGlvbihtX3N0YXRlLmZvck5vZGUobm9kZS5jaGlsZDEoKSkubV90
eXBlKSkKLSAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1ZVNvdXJj
ZTo6dW5ib3hlZENlbGwoYmFzZUdQUiksIG5vZGUuY2hpbGQxKCksIG1faml0LmJyYW5jaFB0cihN
YWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIs
IEpTQ2VsbDo6Y2xhc3NJbmZvT2Zmc2V0KCkpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0
cigmSlNBcnJheTo6c19pbmZvKSkpOworICAgICAgICBzcGVjdWxhdGVBcnJheShub2RlLmNoaWxk
MSgpLCBiYXNlR1BSKTsKICAgICAgICAgCiAgICAgICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhp
cyk7CiAgICAgICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAJKHJl
dmlzaW9uIDEyNTYwMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQ2NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIwNzIsMTYgKzIwNzIsNiBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUmIG5vZGUpCiAgICAgICAgICAgICAgICAgcmVjb3Jk
U2V0TG9jYWwobm9kZS5sb2NhbCgpLCBWYWx1ZVNvdXJjZShJbnQzMkluUmVnaXN0ZXJGaWxlKSk7
CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAo
aXNBcnJheVNwZWN1bGF0aW9uKHByZWRpY3RlZFR5cGUpKSB7Ci0gICAgICAgICAgICAgICAgU3Bl
Y3VsYXRlQ2VsbE9wZXJhbmQgY2VsbCh0aGlzLCBub2RlLmNoaWxkMSgpKTsKLSAgICAgICAgICAg
ICAgICBHUFJSZWcgY2VsbEdQUiA9IGNlbGwuZ3ByKCk7Ci0gICAgICAgICAgICAgICAgaWYgKCFp
c0FycmF5U3BlY3VsYXRpb24obV9zdGF0ZS5mb3JOb2RlKG5vZGUuY2hpbGQxKCkpLm1fdHlwZSkp
Ci0gICAgICAgICAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1ZVJl
Z3MoY2VsbEdQUiksIG5vZGUuY2hpbGQxKCksIG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxl
cjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGNlbGxHUFIsIEpTQ2VsbDo6Y2xh
c3NJbmZvT2Zmc2V0KCkpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cigmSlNBcnJheTo6
c19pbmZvKSkpOwotICAgICAgICAgICAgICAgIG1faml0LnN0b3JlUHRyKGNlbGxHUFIsIEpJVENv
bXBpbGVyOjphZGRyZXNzRm9yKG5vZGUubG9jYWwoKSkpOwotICAgICAgICAgICAgICAgIG5vUmVz
dWx0KG1fY29tcGlsZUluZGV4KTsKLSAgICAgICAgICAgICAgICByZWNvcmRTZXRMb2NhbChub2Rl
LmxvY2FsKCksIFZhbHVlU291cmNlKENlbGxJblJlZ2lzdGVyRmlsZSkpOwotICAgICAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKGlzQ2VsbFNwZWN1bGF0
aW9uKHByZWRpY3RlZFR5cGUpKSB7CiAgICAgICAgICAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJh
bmQgY2VsbCh0aGlzLCBub2RlLmNoaWxkMSgpKTsKICAgICAgICAgICAgICAgICBHUFJSZWcgY2Vs
bEdQUiA9IGNlbGwuZ3ByKCk7CkBAIC0yMzg5LDcgKzIzNzksNyBAQCB2b2lkIFNwZWN1bGF0aXZl
SklUOjpjb21waWxlKE5vZGUmIG5vZGUpCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQog
ICAgICAgICAKLSAgICAgICAgaWYgKCFhdChub2RlLmNoaWxkMigpKS5zaG91bGRTcGVjdWxhdGVJ
bnRlZ2VyKCkgfHwgIWlzQWN0aW9uYWJsZUFycmF5U3BlY3VsYXRpb24oYXQobm9kZS5jaGlsZDEo
KSkucHJlZGljdGlvbigpKSkgeworICAgICAgICBpZiAoIWF0KG5vZGUuY2hpbGQyKCkpLnNob3Vs
ZFNwZWN1bGF0ZUludGVnZXIoKSB8fCAoIW5vZGUuY2hpbGQzKCkgJiYgIWF0KG5vZGUuY2hpbGQx
KCkpLnNob3VsZFNwZWN1bGF0ZUFyZ3VtZW50cygpKSkgewogICAgICAgICAgICAgSlNWYWx1ZU9w
ZXJhbmQgYmFzZSh0aGlzLCBub2RlLmNoaWxkMSgpKTsKICAgICAgICAgICAgIEpTVmFsdWVPcGVy
YW5kIHByb3BlcnR5KHRoaXMsIG5vZGUuY2hpbGQyKCkpOwogICAgICAgICAgICAgR1BSUmVnIGJh
c2VHUFIgPSBiYXNlLmdwcigpOwpAQCAtMjQ4MCw4ICsyNDcwLDYgQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZShOb2RlJiBub2RlKQogICAgICAgICAgICAgYnJlYWs7ICAgICAgICAgICAg
CiAgICAgICAgIH0KICAgICAgICAgCi0gICAgICAgIEFTU0VSVChhdChub2RlLmNoaWxkMSgpKS5z
aG91bGRTcGVjdWxhdGVBcnJheSgpKTsKLQogICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBi
YXNlKHRoaXMsIG5vZGUuY2hpbGQxKCkpOwogICAgICAgICBTcGVjdWxhdGVTdHJpY3RJbnQzMk9w
ZXJhbmQgcHJvcGVydHkodGhpcywgbm9kZS5jaGlsZDIoKSk7CiAgICAgICAgIFN0b3JhZ2VPcGVy
YW5kIHN0b3JhZ2UodGhpcywgbm9kZS5jaGlsZDMoKSk7CkBAIC0yNDkzLDEzICsyNDgxLDExIEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSYgbm9kZSkKICAgICAgICAgaWYgKCFt
X2NvbXBpbGVPa2F5KQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIGlmICghaXNBcnJh
eVNwZWN1bGF0aW9uKG1fc3RhdGUuZm9yTm9kZShub2RlLmNoaWxkMSgpKS5tX3R5cGUpKQotICAg
ICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCBKU1ZhbHVlUmVncyhiYXNlUmVnKSwg
bm9kZS5jaGlsZDEoKSwgbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwg
TWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZVJlZywgSlNDZWxsOjpjbGFzc0luZm9PZmZzZXQo
KSksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKCZKU0FycmF5OjpzX2luZm8pKSk7Cisg
ICAgICAgIC8vIFdlIHdpbGwgaGF2ZSBhbHJlYWR5IHNwZWN1bGF0ZWQgdGhhdCB0aGUgYmFzZSBp
cyBzb21lIGtpbmQgb2YgYXJyYXksCisgICAgICAgIC8vIGF0IHRoaXMgcG9pbnQuCisgICAgICAg
IAogICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKFVuY291bnRhYmxlLCBKU1ZhbHVlUmVncygpLCBO
b05vZGUsIG1faml0LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpBYm92ZU9yRXF1YWwsIHByb3Bl
cnR5UmVnLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlUmVnLCBKU0FycmF5Ojp2ZWN0b3JM
ZW5ndGhPZmZzZXQoKSkpKTsKIAotICAgICAgICAvLyBGSVhNRTogSW4gY2FzZXMgd2hlcmUgdGhl
cmUgYXJlIHN1YnNlcXVlbnQgYnlfdmFsIGFjY2Vzc2VzIHRvIHRoZSBzYW1lIGJhc2UgaXQgbWln
aHQgaGVscCB0byBjYWNoZQotICAgICAgICAvLyB0aGUgc3RvcmFnZSBwb2ludGVyIC0gZXNwZWNp
YWxseSBpZiB0aGVyZSBoYXBwZW5zIHRvIGJlIGFub3RoZXIgcmVnaXN0ZXIgZnJlZSByaWdodCBu
b3cuIElmIHdlIGRvIHNvLAotICAgICAgICAvLyB0aGVuIHdlJ2xsIG5lZWQgdG8gYWxsb2NhdGUg
YSBuZXcgdGVtcG9yYXJ5IGZvciByZXN1bHQuCiAgICAgICAgIEdQUlRlbXBvcmFyeSByZXN1bHQo
dGhpcyk7CiAgICAgICAgIG1faml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkJhc2VJbmRleChz
dG9yYWdlUmVnLCBwcm9wZXJ0eVJlZywgTWFjcm9Bc3NlbWJsZXI6OlNjYWxlUHRyLCBPQkpFQ1Rf
T0ZGU0VUT0YoQXJyYXlTdG9yYWdlLCBtX3ZlY3RvclswXSkpLCByZXN1bHQuZ3ByKCkpOwogICAg
ICAgICBzcGVjdWxhdGlvbkNoZWNrKFVuY291bnRhYmxlLCBKU1ZhbHVlUmVncygpLCBOb05vZGUs
IG1faml0LmJyYW5jaFRlc3RQdHIoTWFjcm9Bc3NlbWJsZXI6Olplcm8sIHJlc3VsdC5ncHIoKSkp
OwpAQCAtMjUxOSw3ICsyNTA1LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2Rl
JiBub2RlKQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgCi0gICAgICAg
IGlmICghYXQoY2hpbGQyKS5zaG91bGRTcGVjdWxhdGVJbnRlZ2VyKCkgfHwgIWlzQWN0aW9uYWJs
ZU11dGFibGVBcnJheVNwZWN1bGF0aW9uKGF0KGNoaWxkMSkucHJlZGljdGlvbigpKSkgeworICAg
ICAgICBpZiAoIWF0KGNoaWxkMikuc2hvdWxkU3BlY3VsYXRlSW50ZWdlcigpKSB7CiAgICAgICAg
ICAgICBKU1ZhbHVlT3BlcmFuZCBhcmcxKHRoaXMsIGNoaWxkMSk7CiAgICAgICAgICAgICBKU1Zh
bHVlT3BlcmFuZCBhcmcyKHRoaXMsIGNoaWxkMik7CiAgICAgICAgICAgICBKU1ZhbHVlT3BlcmFu
ZCBhcmczKHRoaXMsIGNoaWxkMyk7CkBAIC0yNTM3LDkgKzI1MjMsOCBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjpjb21waWxlKE5vZGUmIG5vZGUpCiAgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5k
IGJhc2UodGhpcywgY2hpbGQxKTsKICAgICAgICAgU3BlY3VsYXRlU3RyaWN0SW50MzJPcGVyYW5k
IHByb3BlcnR5KHRoaXMsIGNoaWxkMik7CiAgICAgICAgIGlmIChhdChjaGlsZDEpLnNob3VsZFNw
ZWN1bGF0ZUFyZ3VtZW50cygpKSB7CisgICAgICAgICAgICBkYXRhTG9nKCIgaW4gaGVyZSAiKTsK
ICAgICAgICAgICAgIEpTVmFsdWVPcGVyYW5kIHZhbHVlKHRoaXMsIGNoaWxkMyk7Ci0gICAgICAg
ICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIGNoaWxkMSk7Ci0gICAgICAgICAg
ICBTcGVjdWxhdGVTdHJpY3RJbnQzMk9wZXJhbmQgcHJvcGVydHkodGhpcywgY2hpbGQyKTsKICAg
ICAgICAgICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNoKHRoaXMpOwogICAgICAgICAgICAgR1BSVGVt
cG9yYXJ5IHNjcmF0Y2gyKHRoaXMpOwogICAgICAgICAgICAgCkBAIC0yNjU2LDggKzI2NDEsNiBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUmIG5vZGUpCiAgICAgICAgICAgICBi
cmVhazsgICAgICAgICAgICAKICAgICAgICAgfQogICAgICAgICAgICAgCi0gICAgICAgIEFTU0VS
VChhdChjaGlsZDEpLnNob3VsZFNwZWN1bGF0ZUFycmF5KCkpOwotCiAgICAgICAgIEpTVmFsdWVP
cGVyYW5kIHZhbHVlKHRoaXMsIGNoaWxkMyk7CiAgICAgICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNo
KHRoaXMpOwogCkBAIC0yNjcyLDExICsyNjU1LDggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZShOb2RlJiBub2RlKQogICAgICAgICAKICAgICAgICAgd3JpdGVCYXJyaWVyKGJhc2VSZWcs
IHZhbHVlLmdwcigpLCBjaGlsZDMsIFdyaXRlQmFycmllckZvclByb3BlcnR5QWNjZXNzLCBzY3Jh
dGNoUmVnKTsKIAotICAgICAgICAvLyBDaGVjayB0aGF0IGJhc2UgaXMgYW4gYXJyYXksIGFuZCB0
aGF0IHByb3BlcnR5IGlzIGNvbnRhaW5lZCB3aXRoaW4gbV92ZWN0b3IgKDwgbV92ZWN0b3JMZW5n
dGgpLgotICAgICAgICAvLyBJZiB3ZSBoYXZlIHByZWRpY3RlZCB0aGUgYmFzZSB0byBiZSB0eXBl
IGFycmF5LCB3ZSBjYW4gc2tpcCB0aGUgY2hlY2suCi0gICAgICAgIGlmICghaXNBcnJheVNwZWN1
bGF0aW9uKG1fc3RhdGUuZm9yTm9kZShjaGlsZDEpLm1fdHlwZSkpCi0gICAgICAgICAgICBzcGVj
dWxhdGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFsdWVSZWdzKGJhc2VSZWcpLCBjaGlsZDEsIG1faml0
LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRy
ZXNzKGJhc2VSZWcsIEpTQ2VsbDo6Y2xhc3NJbmZvT2Zmc2V0KCkpLCBNYWNyb0Fzc2VtYmxlcjo6
VHJ1c3RlZEltbVB0cigmSlNBcnJheTo6c19pbmZvKSkpOwotICAgICAgICAKKyAgICAgICAgc3Bl
Y3VsYXRlQXJyYXkoY2hpbGQxLCBiYXNlUmVnKTsKKwogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6
SnVtcCBiZXlvbmRBcnJheUJvdW5kcyA9IG1faml0LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpB
Ym92ZU9yRXF1YWwsIHByb3BlcnR5UmVnLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlUmVn
LCBKU0FycmF5Ojp2ZWN0b3JMZW5ndGhPZmZzZXQoKSkpOwogICAgICAgICBpZiAobm9kZS5vcCgp
ID09IFB1dEJ5VmFsKQogICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhPdXRPZkJvdW5kcywg
SlNWYWx1ZVJlZ3MoKSwgTm9Ob2RlLCBiZXlvbmRBcnJheUJvdW5kcyk7CkBAIC0yODc5LDkgKzI4
NTksOCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUmIG5vZGUpCiAgICAgICAg
IAogICAgICAgICB3cml0ZUJhcnJpZXIoYmFzZUdQUiwgdmFsdWVHUFIsIG5vZGUuY2hpbGQyKCks
IFdyaXRlQmFycmllckZvclByb3BlcnR5QWNjZXNzLCBzdG9yYWdlR1BSLCBzdG9yYWdlTGVuZ3Ro
R1BSKTsKIAotICAgICAgICBpZiAoIWlzQXJyYXlTcGVjdWxhdGlvbihtX3N0YXRlLmZvck5vZGUo
bm9kZS5jaGlsZDEoKSkubV90eXBlKSkKLSAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFk
VHlwZSwgSlNWYWx1ZVJlZ3MoYmFzZUdQUiksIG5vZGUuY2hpbGQxKCksIG1faml0LmJyYW5jaFB0
cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VH
UFIsIEpTQ2VsbDo6Y2xhc3NJbmZvT2Zmc2V0KCkpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZElt
bVB0cigmSlNBcnJheTo6c19pbmZvKSkpOwotICAgICAgICAKKyAgICAgICAgc3BlY3VsYXRlQXJy
YXkobm9kZS5jaGlsZDEoKSwgYmFzZUdQUik7CisKICAgICAgICAgbV9qaXQubG9hZFB0cihNYWNy
b0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU0FycmF5OjpzdG9yYWdlT2Zmc2V0KCkpLCBz
dG9yYWdlR1BSKTsKICAgICAgICAgbV9qaXQubG9hZDMyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNz
KHN0b3JhZ2VHUFIsIE9CSkVDVF9PRkZTRVRPRihBcnJheVN0b3JhZ2UsIG1fbGVuZ3RoKSksIHN0
b3JhZ2VMZW5ndGhHUFIpOwogICAgICAgICAKQEAgLTI5MTcsOSArMjg5Niw4IEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSYgbm9kZSkKICAgICAgICAgR1BSUmVnIHN0b3JhZ2VH
UFIgPSBzdG9yYWdlLmdwcigpOwogICAgICAgICBHUFJSZWcgc3RvcmFnZUxlbmd0aEdQUiA9IHN0
b3JhZ2VMZW5ndGguZ3ByKCk7CiAgICAgICAgIAotICAgICAgICBpZiAoIWlzQXJyYXlTcGVjdWxh
dGlvbihtX3N0YXRlLmZvck5vZGUobm9kZS5jaGlsZDEoKSkubV90eXBlKSkKLSAgICAgICAgICAg
IHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1ZVJlZ3MoYmFzZUdQUiksIG5vZGUuY2hp
bGQxKCksIG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNz
ZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTQ2VsbDo6Y2xhc3NJbmZvT2Zmc2V0KCkpLCBNYWNy
b0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cigmSlNBcnJheTo6c19pbmZvKSkpOwotICAgICAgICAK
KyAgICAgICAgc3BlY3VsYXRlQXJyYXkobm9kZS5jaGlsZDEoKSwgYmFzZUdQUik7CisKICAgICAg
ICAgbV9qaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU0FycmF5
OjpzdG9yYWdlT2Zmc2V0KCkpLCBzdG9yYWdlR1BSKTsKICAgICAgICAgbV9qaXQubG9hZDMyKE1h
Y3JvQXNzZW1ibGVyOjpBZGRyZXNzKHN0b3JhZ2VHUFIsIE9CSkVDVF9PRkZTRVRPRihBcnJheVN0
b3JhZ2UsIG1fbGVuZ3RoKSksIHN0b3JhZ2VMZW5ndGhHUFIpOwogICAgICAgICAKQEAgLTM0MTUs
OSArMzM5Myw4IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSYgbm9kZSkKICAg
ICAgICAgR1BSUmVnIGJhc2VHUFIgPSBiYXNlLmdwcigpOwogICAgICAgICBHUFJSZWcgcmVzdWx0
R1BSID0gcmVzdWx0LmdwcigpOwogICAgICAgICAKLSAgICAgICAgaWYgKCFpc0FycmF5U3BlY3Vs
YXRpb24obV9zdGF0ZS5mb3JOb2RlKG5vZGUuY2hpbGQxKCkpLm1fdHlwZSkpCi0gICAgICAgICAg
ICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFsdWVSZWdzKGJhc2VHUFIpLCBub2RlLmNo
aWxkMSgpLCBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fz
c2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU0NlbGw6OmNsYXNzSW5mb09mZnNldCgpKSwgTWFj
cm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoJkpTQXJyYXk6OnNfaW5mbykpKTsKLSAgICAgICAg
CisgICAgICAgIHNwZWN1bGF0ZUFycmF5KG5vZGUuY2hpbGQxKCksIGJhc2VHUFIpOworCiAgICAg
ICAgIG1faml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNBcnJh
eTo6c3RvcmFnZU9mZnNldCgpKSwgcmVzdWx0R1BSKTsKICAgICAgICAgbV9qaXQubG9hZDMyKE1h
Y3JvQXNzZW1ibGVyOjpBZGRyZXNzKHJlc3VsdEdQUiwgT0JKRUNUX09GRlNFVE9GKEFycmF5U3Rv
cmFnZSwgbV9sZW5ndGgpKSwgcmVzdWx0R1BSKTsKICAgICAgICAgCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAkocmV2aXNpb24gMTI1
NjAzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTE1NSw2ICsxNTUsMTAgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Zm9yd2FyZFNwZWN1bGF0aW9uQwogICAgIEFTU0VSVChzZXRMb2NhbC0+Y29kZU9yaWdpbiA9PSBh
dChtX2NvbXBpbGVJbmRleCkuY29kZU9yaWdpbik7CiAKICAgICBOb2RlKiBuZXh0Tm9kZSA9ICZh
dChtX2ppdC5ncmFwaCgpLm1fYmxvY2tzW21fYmxvY2tdLT5hdChzZXRMb2NhbEluZGV4SW5CbG9j
ayArIDEpKTsKKyAgICBpZiAobmV4dE5vZGUtPm9wKCkgPT0gSnVtcCAmJiBuZXh0Tm9kZS0+Y29k
ZU9yaWdpbiA9PSBhdChtX2NvbXBpbGVJbmRleCkuY29kZU9yaWdpbikgeworICAgICAgICAvLyBX
ZSdyZSBhdCBhbiBpbmxpbmVkIHJldHVybi4gVXNlIGEgYmFja3dhcmQgc3BlY3VsYXRpb24gaW5z
dGVhZC4KKyAgICAgICAgcmV0dXJuOworICAgIH0KICAgICBBU1NFUlQobmV4dE5vZGUtPmNvZGVP
cmlnaW4gIT0gYXQobV9jb21waWxlSW5kZXgpLmNvZGVPcmlnaW4pOwogICAgICAgICAKICAgICBP
U1JFeGl0JiBleGl0ID0gbV9qaXQuY29kZUJsb2NrKCktPmxhc3RPU1JFeGl0KCk7CkBAIC0yNDYs
NiArMjUwLDI0IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNsZWFyR2VuZXJhdGlvbkluZm8KICAg
ICBtX2ZwcnMgPSBSZWdpc3RlckJhbms8RlBSSW5mbz4oKTsKIH0KIAordm9pZCBTcGVjdWxhdGl2
ZUpJVDo6c3BlY3VsYXRlQXJyYXkoRWRnZSBlZGdlLCBHUFJSZWcgYmFzZVJlZykKK3sKKyAgICBB
YnN0cmFjdFZhbHVlJiBhcnJheVZhbHVlID0gbV9zdGF0ZS5mb3JOb2RlKGVkZ2UpOworICAgIGlm
IChhcnJheVZhbHVlLm1fc3RydWN0dXJlLmhhc1NpbmdsZXRvbigpCisgICAgICAgICYmIGFycmF5
VmFsdWUubV9zdHJ1Y3R1cmUuc2luZ2xldG9uKCktPmNsYXNzSW5mbygpID09ICZKU0FycmF5Ojpz
X2luZm8pCisgICAgICAgIHJldHVybjsKKyAgICAKKyAgICBHUFJUZW1wb3JhcnkgdGVtcCh0aGlz
KTsKKyAgICBtX2ppdC5sb2FkUHRyKAorICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhi
YXNlUmVnLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgdGVtcC5ncHIoKSk7CisgICAgc3Bl
Y3VsYXRpb25DaGVjaygKKyAgICAgICAgVW5jb3VudGFibGUsIEpTVmFsdWVSZWdzKCksIE5vTm9k
ZSwKKyAgICAgICAgbV9qaXQuYnJhbmNoUHRyKAorICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6
Ok5vdEVxdWFsLAorICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3ModGVtcC5ncHIo
KSwgU3RydWN0dXJlOjpjbGFzc0luZm9PZmZzZXQoKSksCisgICAgICAgICAgICBNYWNyb0Fzc2Vt
Ymxlcjo6VHJ1c3RlZEltbVB0cigmSlNBcnJheTo6c19pbmZvKSkpOworfQorCiBHUFJSZWcgU3Bl
Y3VsYXRpdmVKSVQ6OmZpbGxTdG9yYWdlKE5vZGVJbmRleCBub2RlSW5kZXgpCiB7CiAgICAgTm9k
ZSYgbm9kZSA9IG1faml0LmdyYXBoKClbbm9kZUluZGV4XTsKQEAgLTEyMjAsNyArMTI0Miw3IEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoQmFzaWNCbG9jayYKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB2YWx1ZVNvdXJjZSA9IFZhbHVlU291cmNlKERvdWJsZUluUmVnaXN0ZXJG
aWxlKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGlzSW50MzJTcGVjdWxhdGlv
bihhcmd1bWVudFBvc2l0aW9uLnByZWRpY3Rpb24oKSkpCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdmFsdWVTb3VyY2UgPSBWYWx1ZVNvdXJjZShJbnQzMkluUmVnaXN0ZXJGaWxlKTsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGlzQXJyYXlTcGVjdWxhdGlvbihhcmd1bWVu
dFBvc2l0aW9uLnByZWRpY3Rpb24oKSkgfHwgaXNDZWxsU3BlY3VsYXRpb24oYXJndW1lbnRQb3Np
dGlvbi5wcmVkaWN0aW9uKCkpKQorICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoaXND
ZWxsU3BlY3VsYXRpb24oYXJndW1lbnRQb3NpdGlvbi5wcmVkaWN0aW9uKCkpKQogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHZhbHVlU291cmNlID0gVmFsdWVTb3VyY2UoQ2VsbEluUmVnaXN0
ZXJGaWxlKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGlzQm9vbGVhblNwZWN1
bGF0aW9uKGFyZ3VtZW50UG9zaXRpb24ucHJlZGljdGlvbigpKSkKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB2YWx1ZVNvdXJjZSA9IFZhbHVlU291cmNlKEJvb2xlYW5JblJlZ2lzdGVyRmls
ZSk7CkBAIC0xMzQzLDEyICsxMzY1LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y2hlY2tBcmd1
bWVudFR5cGVzKAogI2lmIFVTRShKU1ZBTFVFNjQpCiAgICAgICAgIGlmIChpc0ludDMyU3BlY3Vs
YXRpb24ocHJlZGljdGVkVHlwZSkpCiAgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5
cGUsIHZhbHVlU291cmNlLCBub2RlSW5kZXgsIG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxl
cjo6QmVsb3csIEpJVENvbXBpbGVyOjphZGRyZXNzRm9yKHZpcnR1YWxSZWdpc3RlciksIEdQUklu
Zm86OnRhZ1R5cGVOdW1iZXJSZWdpc3RlcikpOwotICAgICAgICBlbHNlIGlmIChpc0FycmF5U3Bl
Y3VsYXRpb24ocHJlZGljdGVkVHlwZSkpIHsKLSAgICAgICAgICAgIEdQUlRlbXBvcmFyeSB0ZW1w
KHRoaXMpOwotICAgICAgICAgICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6YWRkcmVzc0Zv
cih2aXJ0dWFsUmVnaXN0ZXIpLCB0ZW1wLmdwcigpKTsKLSAgICAgICAgICAgIHNwZWN1bGF0aW9u
Q2hlY2soQmFkVHlwZSwgdmFsdWVTb3VyY2UsIG5vZGVJbmRleCwgbV9qaXQuYnJhbmNoVGVzdFB0
cihNYWNyb0Fzc2VtYmxlcjo6Tm9uWmVybywgdGVtcC5ncHIoKSwgR1BSSW5mbzo6dGFnTWFza1Jl
Z2lzdGVyKSk7Ci0gICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIHZhbHVlU291
cmNlLCBub2RlSW5kZXgsIG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWws
IE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHRlbXAuZ3ByKCksIEpTQ2VsbDo6Y2xhc3NJbmZvT2Zm
c2V0KCkpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cigmSlNBcnJheTo6c19pbmZvKSkp
OwotICAgICAgICB9IGVsc2UgaWYgKGlzQm9vbGVhblNwZWN1bGF0aW9uKHByZWRpY3RlZFR5cGUp
KSB7CisgICAgICAgIGVsc2UgaWYgKGlzQm9vbGVhblNwZWN1bGF0aW9uKHByZWRpY3RlZFR5cGUp
KSB7CiAgICAgICAgICAgICBHUFJUZW1wb3JhcnkgdGVtcCh0aGlzKTsKICAgICAgICAgICAgIG1f
aml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OmFkZHJlc3NGb3IodmlydHVhbFJlZ2lzdGVyKSwgdGVt
cC5ncHIoKSk7CiAgICAgICAgICAgICBtX2ppdC54b3JQdHIoVHJ1c3RlZEltbTMyKHN0YXRpY19j
YXN0PGludDMyX3Q+KFZhbHVlRmFsc2UpKSwgdGVtcC5ncHIoKSk7CkBAIC0xNDAzLDEzICsxNDIw
LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y2hlY2tBcmd1bWVudFR5cGVzKAogI2Vsc2UKICAg
ICAgICAgaWYgKGlzSW50MzJTcGVjdWxhdGlvbihwcmVkaWN0ZWRUeXBlKSkKICAgICAgICAgICAg
IHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgdmFsdWVTb3VyY2UsIG5vZGVJbmRleCwgbV9qaXQu
YnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBKSVRDb21waWxlcjo6dGFnRm9yKHZp
cnR1YWxSZWdpc3RlciksIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpJbnQzMlRhZykpKTsKLSAgICAg
ICAgZWxzZSBpZiAoaXNBcnJheVNwZWN1bGF0aW9uKHByZWRpY3RlZFR5cGUpKSB7Ci0gICAgICAg
ICAgICBHUFJUZW1wb3JhcnkgdGVtcCh0aGlzKTsKLSAgICAgICAgICAgIG1faml0LmxvYWQzMihK
SVRDb21waWxlcjo6dGFnRm9yKHZpcnR1YWxSZWdpc3RlciksIHRlbXAuZ3ByKCkpOwotICAgICAg
ICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCB2YWx1ZVNvdXJjZSwgbm9kZUluZGV4LCBt
X2ppdC5icmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIHRlbXAuZ3ByKCksIFRydXN0
ZWRJbW0zMihKU1ZhbHVlOjpDZWxsVGFnKSkpOwotICAgICAgICAgICAgbV9qaXQubG9hZDMyKEpJ
VENvbXBpbGVyOjpwYXlsb2FkRm9yKHZpcnR1YWxSZWdpc3RlciksIHRlbXAuZ3ByKCkpOwotICAg
ICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCB2YWx1ZVNvdXJjZSwgbm9kZUluZGV4
LCBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxl
cjo6QWRkcmVzcyh0ZW1wLmdwcigpLCBKU0NlbGw6OmNsYXNzSW5mb09mZnNldCgpKSwgTWFjcm9B
c3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoJkpTQXJyYXk6OnNfaW5mbykpKTsKLSAgICAgICAgfSBl
bHNlIGlmIChpc0Jvb2xlYW5TcGVjdWxhdGlvbihwcmVkaWN0ZWRUeXBlKSkKKyAgICAgICAgZWxz
ZSBpZiAoaXNCb29sZWFuU3BlY3VsYXRpb24ocHJlZGljdGVkVHlwZSkpCiAgICAgICAgICAgICBz
cGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIHZhbHVlU291cmNlLCBub2RlSW5kZXgsIG1faml0LmJy
YW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgSklUQ29tcGlsZXI6OnRhZ0Zvcih2aXJ0
dWFsUmVnaXN0ZXIpLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Qm9vbGVhblRhZykpKTsKICAgICAg
ICAgZWxzZSBpZiAoaXNJbnQ4QXJyYXlTcGVjdWxhdGlvbihwcmVkaWN0ZWRUeXBlKSkgewogICAg
ICAgICAgICAgR1BSVGVtcG9yYXJ5IHRlbXAodGhpcyk7CkBAIC0xNTkxLDcgKzE2MDIsNiBAQCB2
b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0QnlWYWxPblN0CiAgICAgR1BSUmVnIHN0b3Jh
Z2VSZWcgPSBzdG9yYWdlLmdwcigpOwogCiAgICAgaWYgKCFpc1N0cmluZ1NwZWN1bGF0aW9uKG1f
c3RhdGUuZm9yTm9kZShub2RlLmNoaWxkMSgpKS5tX3R5cGUpKSB7Ci0gICAgICAgIEFTU0VSVCgh
KGF0KG5vZGUuY2hpbGQxKCkpLnByZWRpY3Rpb24oKSAmIFNwZWNTdHJpbmcpKTsKICAgICAgICAg
dGVybWluYXRlU3BlY3VsYXRpdmVFeGVjdXRpb24oVW5jb3VudGFibGUsIEpTVmFsdWVSZWdzKCks
IE5vTm9kZSk7CiAgICAgICAgIG5vUmVzdWx0KG1fY29tcGlsZUluZGV4KTsKICAgICAgICAgcmV0
dXJuOwpAQCAtMzAzNywyMiArMzA0NywxMiBAQCBib29sIFNwZWN1bGF0aXZlSklUOjpjb21waWxl
U3RyaWN0RXEoTm9kCiAKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRJbmRleGVkUHJv
cGVydHlTdG9yYWdlKE5vZGUmIG5vZGUpCiB7Ci0gICAgaWYgKCFub2RlLnByZWRpY3Rpb24oKSB8
fCAhYXQobm9kZS5jaGlsZDEoKSkucHJlZGljdGlvbigpIHx8ICFhdChub2RlLmNoaWxkMigpKS5w
cmVkaWN0aW9uKCkpIHsKLSAgICAgICAgdGVybWluYXRlU3BlY3VsYXRpdmVFeGVjdXRpb24oSW5h
ZGVxdWF0ZUNvdmVyYWdlLCBKU1ZhbHVlUmVncygpLCBOb05vZGUpOwotICAgICAgICByZXR1cm47
Ci0gICAgfQorICAgIEFTU0VSVChhdChub2RlLmNoaWxkMSgpKS5wcmVkaWN0aW9uKCkpOworICAg
IEFTU0VSVChhdChub2RlLmNoaWxkMigpKS5zaG91bGRTcGVjdWxhdGVJbnRlZ2VyKCkpOwogICAg
ICAgICAKICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUuY2hpbGQxKCkp
OwogICAgIEdQUlJlZyBiYXNlUmVnID0gYmFzZS5ncHIoKTsKICAgICAKLSAgICBTcGVjdWxhdGVk
VHlwZSBiYXNlUHJlZGljdGlvbiA9IGF0KG5vZGUuY2hpbGQyKCkpLnByZWRpY3Rpb24oKTsKLSAg
ICBpZiAoIShiYXNlUHJlZGljdGlvbiAmIFNwZWNJbnQzMikgJiYgYmFzZVByZWRpY3Rpb24pIHsK
LSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHRlcm1pbmF0ZVNwZWN1bGF0
aXZlRXhlY3V0aW9uKFVuY291bnRhYmxlLCBKU1ZhbHVlUmVncygpLCBOb05vZGUpOwotICAgICAg
ICBub1Jlc3VsdChtX2NvbXBpbGVJbmRleCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAg
CiAgICAgR1BSVGVtcG9yYXJ5IHN0b3JhZ2UodGhpcyk7CiAgICAgR1BSUmVnIHN0b3JhZ2VSZWcg
PSBzdG9yYWdlLmdwcigpOwogICAgIGlmIChhdChub2RlLmNoaWxkMSgpKS5zaG91bGRTcGVjdWxh
dGVBcmd1bWVudHMoKSkgewpAQCAtMzExMyw4ICszMTEzLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZUdldEluZGV4ZWRQcgogICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRU
eXBlLCBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChiYXNlUmVnKSwgbm9kZS5jaGlsZDEoKSwg
bV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6
OkFkZHJlc3MoYmFzZVJlZywgSlNDZWxsOjpjbGFzc0luZm9PZmZzZXQoKSksIE1hY3JvQXNzZW1i
bGVyOjpUcnVzdGVkSW1tUHRyKGRlc2NyaXB0b3IubV9jbGFzc0luZm8pKSk7CiAgICAgICAgIG1f
aml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZVJlZywgZGVzY3JpcHRvci5t
X3N0b3JhZ2VPZmZzZXQpLCBzdG9yYWdlUmVnKTsKICAgICB9IGVsc2UgewotICAgICAgICBpZiAo
IWlzQXJyYXlTcGVjdWxhdGlvbihtX3N0YXRlLmZvck5vZGUobm9kZS5jaGlsZDEoKSkubV90eXBl
KSkKLSAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1ZVNvdXJjZTo6
dW5ib3hlZENlbGwoYmFzZVJlZyksIG5vZGUuY2hpbGQxKCksIG1faml0LmJyYW5jaFB0cihNYWNy
b0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VSZWcsIEpT
Q2VsbDo6Y2xhc3NJbmZvT2Zmc2V0KCkpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cigm
SlNBcnJheTo6c19pbmZvKSkpOworICAgICAgICBzcGVjdWxhdGVBcnJheShub2RlLmNoaWxkMSgp
LCBiYXNlUmVnKTsKICAgICAgICAgbV9qaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVz
cyhiYXNlUmVnLCBKU0FycmF5OjpzdG9yYWdlT2Zmc2V0KCkpLCBzdG9yYWdlUmVnKTsKICAgICB9
CiAgICAgc3RvcmFnZVJlc3VsdChzdG9yYWdlUmVnLCBtX2NvbXBpbGVJbmRleCk7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCShyZXZpc2lv
biAxMjU2MDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklU
LmgJKHdvcmtpbmcgY29weSkKQEAgLTIxOTEsNiArMjE5MSw4IEBAIHB1YmxpYzoKICAgICB2b2lk
IHRlcm1pbmF0ZVNwZWN1bGF0aXZlRXhlY3V0aW9uKEV4aXRLaW5kLCBKU1ZhbHVlUmVncywgRWRn
ZSk7CiAgICAgdm9pZCB0ZXJtaW5hdGVTcGVjdWxhdGl2ZUV4ZWN1dGlvbldpdGhDb25kaXRpb25h
bERpcmVjdGlvbihFeGl0S2luZCwgSlNWYWx1ZVJlZ3MsIE5vZGVJbmRleCwgYm9vbCBpc0Zvcndh
cmQpOwogICAgIAorICAgIHZvaWQgc3BlY3VsYXRlQXJyYXkoRWRnZSBiYXNlRWRnZSwgR1BSUmVn
IGJhc2VSZWcpOworICAgIAogICAgIHRlbXBsYXRlPGJvb2wgc3RyaWN0PgogICAgIEdQUlJlZyBm
aWxsU3BlY3VsYXRlSW50SW50ZXJuYWwoTm9kZUluZGV4LCBEYXRhRm9ybWF0JiByZXR1cm5Gb3Jt
YXQpOwogICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdHJ1Y3R1cmVD
aGVja0hvaXN0aW5nUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3RydWN0dXJlQ2hlY2tIb2lzdGluZ1BoYXNlLmNwcAkocmV2aXNpb24gMTI1NjAz
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdHJ1Y3R1cmVDaGVja0hvaXN0aW5n
UGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05NCw2ICs5NCwxMSBAQCBwdWJsaWM6CiAgICAg
ICAgICAgICAgICAgY2FzZSBBbGxvY2F0ZVByb3BlcnR5U3RvcmFnZToKICAgICAgICAgICAgICAg
ICBjYXNlIFJlYWxsb2NhdGVQcm9wZXJ0eVN0b3JhZ2U6CiAgICAgICAgICAgICAgICAgY2FzZSBH
ZXRQcm9wZXJ0eVN0b3JhZ2U6CisgICAgICAgICAgICAgICAgY2FzZSBHZXRCeVZhbDoKKyAgICAg
ICAgICAgICAgICBjYXNlIFB1dEJ5VmFsOgorICAgICAgICAgICAgICAgIGNhc2UgUHV0QnlWYWxB
bGlhczoKKyAgICAgICAgICAgICAgICBjYXNlIEdldEFycmF5TGVuZ3RoOgorICAgICAgICAgICAg
ICAgIGNhc2UgUGhhbnRvbToKICAgICAgICAgICAgICAgICAgICAgLy8gRG9uJ3QgY291bnQgdGhl
c2UgdXNlcy4KICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAg
IApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5
QWNjZXNzMzJfNjQuY3BwCShyZXZpc2lvbiAxMjU2MDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMDks
NyArMjA5LDkgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X2J5X3ZhbChJbnN0cnVjdGlvbgogICAg
IAogICAgIGFkZFNsb3dDYXNlKGJyYW5jaDMyKE5vdEVxdWFsLCByZWdUMywgVHJ1c3RlZEltbTMy
KEpTVmFsdWU6OkludDMyVGFnKSkpOwogICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChi
YXNlLCByZWdUMSk7Ci0gICAgYWRkU2xvd0Nhc2UoYnJhbmNoUHRyKE5vdEVxdWFsLCBBZGRyZXNz
KHJlZ1QwLCBKU0NlbGw6OmNsYXNzSW5mb09mZnNldCgpKSwgVHJ1c3RlZEltbVB0cigmSlNBcnJh
eTo6c19pbmZvKSkpOworICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpzdHJ1Y3R1
cmVPZmZzZXQoKSksIHJlZ1QxKTsKKyAgICBzdG9yZVB0cihyZWdUMSwgY3VycmVudEluc3RydWN0
aW9uWzRdLnUuYXJyYXlQcm9maWxlLT5hZGRyZXNzT2ZMYXN0U2VlblN0cnVjdHVyZSgpKTsKKyAg
ICBhZGRTbG93Q2FzZShicmFuY2hQdHIoTm90RXF1YWwsIEFkZHJlc3MocmVnVDEsIEpTQ2VsbDo6
Y2xhc3NJbmZvT2Zmc2V0KCkpLCBUcnVzdGVkSW1tUHRyKCZKU0FycmF5OjpzX2luZm8pKSk7CiAg
ICAgCiAgICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QwLCBKU0FycmF5OjpzdG9yYWdlT2Zmc2V0KCkp
LCByZWdUMyk7CiAgICAgYWRkU2xvd0Nhc2UoYnJhbmNoMzIoQWJvdmVPckVxdWFsLCByZWdUMiwg
QWRkcmVzcyhyZWdUMCwgSlNBcnJheTo6dmVjdG9yTGVuZ3RoT2Zmc2V0KCkpKSk7CkBAIC0yNjQs
NyArMjY2LDkgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfcHV0X2J5X3ZhbChJbnN0cnVjdGlvbgogICAg
IAogICAgIGFkZFNsb3dDYXNlKGJyYW5jaDMyKE5vdEVxdWFsLCByZWdUMywgVHJ1c3RlZEltbTMy
KEpTVmFsdWU6OkludDMyVGFnKSkpOwogICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChi
YXNlLCByZWdUMSk7Ci0gICAgYWRkU2xvd0Nhc2UoYnJhbmNoUHRyKE5vdEVxdWFsLCBBZGRyZXNz
KHJlZ1QwLCBKU0NlbGw6OmNsYXNzSW5mb09mZnNldCgpKSwgVHJ1c3RlZEltbVB0cigmSlNBcnJh
eTo6c19pbmZvKSkpOworICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpzdHJ1Y3R1
cmVPZmZzZXQoKSksIHJlZ1QxKTsKKyAgICBzdG9yZVB0cihyZWdUMSwgY3VycmVudEluc3RydWN0
aW9uWzRdLnUuYXJyYXlQcm9maWxlLT5hZGRyZXNzT2ZMYXN0U2VlblN0cnVjdHVyZSgpKTsKKyAg
ICBhZGRTbG93Q2FzZShicmFuY2hQdHIoTm90RXF1YWwsIEFkZHJlc3MocmVnVDEsIFN0cnVjdHVy
ZTo6Y2xhc3NJbmZvT2Zmc2V0KCkpLCBUcnVzdGVkSW1tUHRyKCZKU0FycmF5OjpzX2luZm8pKSk7
CiAgICAgYWRkU2xvd0Nhc2UoYnJhbmNoMzIoQWJvdmVPckVxdWFsLCByZWdUMiwgQWRkcmVzcyhy
ZWdUMCwgSlNBcnJheTo6dmVjdG9yTGVuZ3RoT2Zmc2V0KCkpKSk7CiAKICAgICBlbWl0V3JpdGVC
YXJyaWVyKHJlZ1QwLCByZWdUMSwgcmVnVDEsIHJlZ1QzLCBVbmNvbmRpdGlvbmFsV3JpdGVCYXJy
aWVyLCBXcml0ZUJhcnJpZXJGb3JQcm9wZXJ0eUFjY2Vzcyk7CkBAIC02MDgsNyArNjEyLDkgQEAg
dm9pZCBKSVQ6OnByaXZhdGVDb21waWxlUGF0Y2hHZXRBcnJheUxlbgogICAgIC8vIHJlZ1QwIGhv
bGRzIGEgSlNDZWxsKgogICAgIAogICAgIC8vIENoZWNrIGZvciBhcnJheQotICAgIEp1bXAgZmFp
bHVyZUNhc2VzMSA9IGJyYW5jaFB0cihOb3RFcXVhbCwgQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpj
bGFzc0luZm9PZmZzZXQoKSksIFRydXN0ZWRJbW1QdHIoJkpTQXJyYXk6OnNfaW5mbykpOworICAg
IGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHJlZ1Qy
KTsKKyAgICBzdG9yZVB0cihyZWdUMiwgbV9jb2RlQmxvY2stPmdldE9yQWRkQXJyYXlQcm9maWxl
KHN0dWJJbmZvLT5ieXRlY29kZUluZGV4KS0+YWRkcmVzc09mTGFzdFNlZW5TdHJ1Y3R1cmUoKSk7
CisgICAgSnVtcCBmYWlsdXJlQ2FzZXMxID0gYnJhbmNoUHRyKE5vdEVxdWFsLCBBZGRyZXNzKHJl
Z1QyLCBTdHJ1Y3R1cmU6OmNsYXNzSW5mb09mZnNldCgpKSwgVHJ1c3RlZEltbVB0cigmSlNBcnJh
eTo6c19pbmZvKSk7CiAgICAgCiAgICAgLy8gQ2hlY2tzIG91dCBva2F5ISAtIGdldCB0aGUgbGVu
Z3RoIGZyb20gdGhlIHN0b3JhZ2UKICAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDAsIEpTQXJyYXk6
OnN0b3JhZ2VPZmZzZXQoKSksIHJlZ1QyKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCShyZXZpc2lvbiAxMjU2MDMpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTEwLDcgKzExMCw5IEBAIHZvaWQgSklUOjplbWl0X29wX2dldF9ieV92YWwoSW5zdHJ1
Y3Rpb24KICAgICB6ZXJvRXh0ZW5kMzJUb1B0cihyZWdUMSwgcmVnVDEpOwogCiAgICAgZW1pdEp1
bXBTbG93Q2FzZUlmTm90SlNDZWxsKHJlZ1QwLCBiYXNlKTsKLSAgICBhZGRTbG93Q2FzZShicmFu
Y2hQdHIoTm90RXF1YWwsIEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6Y2xhc3NJbmZvT2Zmc2V0KCkp
LCBUcnVzdGVkSW1tUHRyKCZKU0FycmF5OjpzX2luZm8pKSk7CisgICAgbG9hZFB0cihBZGRyZXNz
KHJlZ1QwLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgcmVnVDIpOworICAgIHN0b3JlUHRy
KHJlZ1QyLCBjdXJyZW50SW5zdHJ1Y3Rpb25bNF0udS5hcnJheVByb2ZpbGUtPmFkZHJlc3NPZkxh
c3RTZWVuU3RydWN0dXJlKCkpOworICAgIGFkZFNsb3dDYXNlKGJyYW5jaFB0cihOb3RFcXVhbCwg
QWRkcmVzcyhyZWdUMiwgU3RydWN0dXJlOjpjbGFzc0luZm9PZmZzZXQoKSksIFRydXN0ZWRJbW1Q
dHIoJkpTQXJyYXk6OnNfaW5mbykpKTsKIAogICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgSlNB
cnJheTo6c3RvcmFnZU9mZnNldCgpKSwgcmVnVDIpOwogICAgIGFkZFNsb3dDYXNlKGJyYW5jaDMy
KEFib3ZlT3JFcXVhbCwgcmVnVDEsIEFkZHJlc3MocmVnVDAsIEpTQXJyYXk6OnZlY3Rvckxlbmd0
aE9mZnNldCgpKSkpOwpAQCAtMjMxLDcgKzIzMyw5IEBAIHZvaWQgSklUOjplbWl0X29wX3B1dF9i
eV92YWwoSW5zdHJ1Y3Rpb24KICAgICAvLyBTZWUgY29tbWVudCBpbiBvcF9nZXRfYnlfdmFsLgog
ICAgIHplcm9FeHRlbmQzMlRvUHRyKHJlZ1QxLCByZWdUMSk7CiAgICAgZW1pdEp1bXBTbG93Q2Fz
ZUlmTm90SlNDZWxsKHJlZ1QwLCBiYXNlKTsKLSAgICBhZGRTbG93Q2FzZShicmFuY2hQdHIoTm90
RXF1YWwsIEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6Y2xhc3NJbmZvT2Zmc2V0KCkpLCBUcnVzdGVk
SW1tUHRyKCZKU0FycmF5OjpzX2luZm8pKSk7CisgICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QwLCBK
U0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgcmVnVDIpOworICAgIHN0b3JlUHRyKHJlZ1QyLCBj
dXJyZW50SW5zdHJ1Y3Rpb25bNF0udS5hcnJheVByb2ZpbGUtPmFkZHJlc3NPZkxhc3RTZWVuU3Ry
dWN0dXJlKCkpOworICAgIGFkZFNsb3dDYXNlKGJyYW5jaFB0cihOb3RFcXVhbCwgQWRkcmVzcyhy
ZWdUMiwgU3RydWN0dXJlOjpjbGFzc0luZm9PZmZzZXQoKSksIFRydXN0ZWRJbW1QdHIoJkpTQXJy
YXk6OnNfaW5mbykpKTsKICAgICBhZGRTbG93Q2FzZShicmFuY2gzMihBYm92ZU9yRXF1YWwsIHJl
Z1QxLCBBZGRyZXNzKHJlZ1QwLCBKU0FycmF5Ojp2ZWN0b3JMZW5ndGhPZmZzZXQoKSkpKTsKIAog
ICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgSlNBcnJheTo6c3RvcmFnZU9mZnNldCgpKSwgcmVn
VDIpOwpAQCAtNjQ1LDcgKzY0OSw5IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZVBhdGNoR2V0
QXJyYXlMZW4KICAgICBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8gPSAmbV9jb2RlQmxvY2st
PmdldFN0dWJJbmZvKHJldHVybkFkZHJlc3MpOwogCiAgICAgLy8gQ2hlY2sgZWF4IGlzIGFuIGFy
cmF5Ci0gICAgSnVtcCBmYWlsdXJlQ2FzZXMxID0gYnJhbmNoUHRyKE5vdEVxdWFsLCBBZGRyZXNz
KHJlZ1QwLCBKU0NlbGw6OmNsYXNzSW5mb09mZnNldCgpKSwgVHJ1c3RlZEltbVB0cigmSlNBcnJh
eTo6c19pbmZvKSk7CisgICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OnN0cnVjdHVy
ZU9mZnNldCgpKSwgcmVnVDMpOworICAgIHN0b3JlUHRyKHJlZ1QzLCBtX2NvZGVCbG9jay0+Z2V0
T3JBZGRBcnJheVByb2ZpbGUoc3R1YkluZm8tPmJ5dGVjb2RlSW5kZXgpLT5hZGRyZXNzT2ZMYXN0
U2VlblN0cnVjdHVyZSgpKTsKKyAgICBKdW1wIGZhaWx1cmVDYXNlczEgPSBicmFuY2hQdHIoTm90
RXF1YWwsIEFkZHJlc3MocmVnVDMsIFN0cnVjdHVyZTo6Y2xhc3NJbmZvT2Zmc2V0KCkpLCBUcnVz
dGVkSW1tUHRyKCZKU0FycmF5OjpzX2luZm8pKTsKIAogICAgIC8vIENoZWNrcyBvdXQgb2theSEg
LSBnZXQgdGhlIGxlbmd0aCBmcm9tIHRoZSBzdG9yYWdlCiAgICAgbG9hZFB0cihBZGRyZXNzKHJl
Z1QwLCBKU0FycmF5OjpzdG9yYWdlT2Zmc2V0KCkpLCByZWdUMyk7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcAko
cmV2aXNpb24gMTI1NjAzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2Zm
c2V0c0V4dHJhY3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI1LDYgKzI1LDcgQEAKIAogI2lu
Y2x1ZGUgImNvbmZpZy5oIgogCisjaW5jbHVkZSAiQXJyYXlQcm9maWxlLmgiCiAjaW5jbHVkZSAi
Q29kZUJsb2NrLmgiCiAjaW5jbHVkZSAiRXhlY3V0YWJsZS5oIgogI2luY2x1ZGUgIkhlYXAuaCIK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJf
NjQuYXNtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZl
bEludGVycHJldGVyMzJfNjQuYXNtCShyZXZpc2lvbiAxMjU2MDMpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQkod29ya2luZyBjb3B5
KQpAQCAtMTI1NSwxNCArMTI1NSwxNyBAQCBfbGxpbnRfb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25f
bm9ybWFsX291CiAKIF9sbGludF9vcF9nZXRfYnlfdmFsOgogICAgIHRyYWNlRXhlY3V0aW9uKCkK
LSAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDEKICAgICBsb2FkaSA4W1BDXSwgdDIKICAgICBs
b2FkaSAxMltQQ10sIHQzCi0gICAgbG9hZHAgQ29kZUJsb2NrOjptX2dsb2JhbERhdGFbdDFdLCB0
MQogICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHQyLCBDZWxsVGFnLCB0MCwgLm9w
R2V0QnlWYWxTbG93KQotICAgIGxvYWRwIEpTR2xvYmFsRGF0YTo6anNBcnJheUNsYXNzSW5mb1t0
MV0sIHQyCiAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQodDMsIEludDMyVGFnLCB0
MSwgLm9wR2V0QnlWYWxTbG93KQotICAgIGJwbmVxIFt0MF0sIHQyLCAub3BHZXRCeVZhbFNsb3cK
KyAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDMKKyAgICBsb2FkcCAxNltQQ10s
IHQyCisgICAgc3RvcmVwIHQzLCBBcnJheVByb2ZpbGU6Om1fbGFzdFNlZW5TdHJ1Y3R1cmVbdDJd
CisgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHQyCisgICAgbG9hZHAgQ29kZUJsb2NrOjptX2ds
b2JhbERhdGFbdDJdLCB0MgorICAgIGxvYWRwIEpTR2xvYmFsRGF0YTo6anNBcnJheUNsYXNzSW5m
b1t0Ml0sIHQyCisgICAgYnBuZXEgU3RydWN0dXJlOjptX2NsYXNzSW5mb1t0M10sIHQyLCAub3BH
ZXRCeVZhbFNsb3cKICAgICBsb2FkcCBKU0FycmF5OjptX3N0b3JhZ2VbdDBdLCB0MwogICAgIGJp
YWVxIHQxLCBKU0FycmF5OjptX3ZlY3Rvckxlbmd0aFt0MF0sIC5vcEdldEJ5VmFsU2xvdwogICAg
IGxvYWRpIDRbUENdLCB0MApAQCAtMTI3MSwxNiArMTI3NCwxOCBAQCBfbGxpbnRfb3BfZ2V0X2J5
X3ZhbDoKICAgICBiaWVxIHQyLCBFbXB0eVZhbHVlVGFnLCAub3BHZXRCeVZhbFNsb3cKICAgICBz
dG9yZWkgdDIsIFRhZ09mZnNldFtjZnIsIHQwLCA4XQogICAgIHN0b3JlaSB0MSwgUGF5bG9hZE9m
ZnNldFtjZnIsIHQwLCA4XQotICAgIGxvYWRpIDE2W1BDXSwgdDAKKyAgICBsb2FkaSAyMFtQQ10s
IHQwCiAgICAgdmFsdWVQcm9maWxlKHQyLCB0MSwgdDApCi0gICAgZGlzcGF0Y2goNSkKKyAgICBk
aXNwYXRjaCg2KQogCiAub3BHZXRCeVZhbFNsb3c6CiAgICAgY2FsbFNsb3dQYXRoKF9sbGludF9z
bG93X3BhdGhfZ2V0X2J5X3ZhbCkKLSAgICBkaXNwYXRjaCg1KQorICAgIGRpc3BhdGNoKDYpCiAK
IAogX2xsaW50X29wX2dldF9hcmd1bWVudF9ieV92YWw6CisgICAgIyBGSVhNRTogQXQgc29tZSBw
b2ludCB3ZSBzaG91bGQgYXJyYXkgcHJvZmlsZSB0aGlzLiBSaWdodCBub3cgaXQgaXNuJ3QgbmVj
ZXNzYXJ5CisgICAgIyBzaW5jZSB0aGUgREZHIHdpbGwgbmV2ZXIgdHVybiBhIGdldF9hcmd1bWVu
dF9ieV92YWwgaW50byBhIEdldEJ5VmFsLgogICAgIHRyYWNlRXhlY3V0aW9uKCkKICAgICBsb2Fk
aSA4W1BDXSwgdDAKICAgICBsb2FkaSAxMltQQ10sIHQxCkBAIC0xMjkzLDE1ICsxMjk4LDE1IEBA
IF9sbGludF9vcF9nZXRfYXJndW1lbnRfYnlfdmFsOgogICAgIGxvYWRpIDRbUENdLCB0MwogICAg
IGxvYWRpIFRoaXNBcmd1bWVudE9mZnNldCArIFRhZ09mZnNldFtjZnIsIHQyLCA4XSwgdDAKICAg
ICBsb2FkaSBUaGlzQXJndW1lbnRPZmZzZXQgKyBQYXlsb2FkT2Zmc2V0W2NmciwgdDIsIDhdLCB0
MQotICAgIGxvYWRpIDE2W1BDXSwgdDIKKyAgICBsb2FkaSAyMFtQQ10sIHQyCiAgICAgc3RvcmVp
IHQwLCBUYWdPZmZzZXRbY2ZyLCB0MywgOF0KICAgICBzdG9yZWkgdDEsIFBheWxvYWRPZmZzZXRb
Y2ZyLCB0MywgOF0KICAgICB2YWx1ZVByb2ZpbGUodDAsIHQxLCB0MikKLSAgICBkaXNwYXRjaCg1
KQorICAgIGRpc3BhdGNoKDYpCiAKIC5vcEdldEFyZ3VtZW50QnlWYWxTbG93OgogICAgIGNhbGxT
bG93UGF0aChfbGxpbnRfc2xvd19wYXRoX2dldF9hcmd1bWVudF9ieV92YWwpCi0gICAgZGlzcGF0
Y2goNSkKKyAgICBkaXNwYXRjaCg2KQogCiAKIF9sbGludF9vcF9nZXRfYnlfcG5hbWU6CkBAIC0x
MzM4LDEwICsxMzQzLDEzIEBAIF9sbGludF9vcF9wdXRfYnlfdmFsOgogICAgIGxvYWRDb25zdGFu
dE9yVmFyaWFibGVQYXlsb2FkKHQwLCBDZWxsVGFnLCB0MSwgLm9wUHV0QnlWYWxTbG93KQogICAg
IGxvYWRpIDhbUENdLCB0MAogICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHQwLCBJ
bnQzMlRhZywgdDIsIC5vcFB1dEJ5VmFsU2xvdykKKyAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0
dXJlW3QxXSwgdDMKKyAgICBsb2FkcCAxNltQQ10sIHQwCisgICAgc3RvcmVwIHQzLCBBcnJheVBy
b2ZpbGU6Om1fbGFzdFNlZW5TdHJ1Y3R1cmVbdDBdCiAgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0s
IHQwCiAgICAgbG9hZHAgQ29kZUJsb2NrOjptX2dsb2JhbERhdGFbdDBdLCB0MAogICAgIGxvYWRw
IEpTR2xvYmFsRGF0YTo6anNBcnJheUNsYXNzSW5mb1t0MF0sIHQwCi0gICAgYnBuZXEgW3QxXSwg
dDAsIC5vcFB1dEJ5VmFsU2xvdworICAgIGJwbmVxIFN0cnVjdHVyZTo6bV9jbGFzc0luZm9bdDNd
LCB0MCwgLm9wUHV0QnlWYWxTbG93CiAgICAgYmlhZXEgdDIsIEpTQXJyYXk6Om1fdmVjdG9yTGVu
Z3RoW3QxXSwgLm9wUHV0QnlWYWxTbG93CiAgICAgbG9hZHAgSlNBcnJheTo6bV9zdG9yYWdlW3Qx
XSwgdDAKICAgICBiaWVxIEFycmF5U3RvcmFnZTo6bV92ZWN0b3IgKyBUYWdPZmZzZXRbdDAsIHQy
LCA4XSwgRW1wdHlWYWx1ZVRhZywgLm9wUHV0QnlWYWxFbXB0eQpAQCAtMTM1MSw3ICsxMzU5LDcg
QEAgX2xsaW50X29wX3B1dF9ieV92YWw6CiAgICAgd3JpdGVCYXJyaWVyKHQxLCB0MykKICAgICBz
dG9yZWkgdDEsIEFycmF5U3RvcmFnZTo6bV92ZWN0b3IgKyBUYWdPZmZzZXRbdDAsIHQyLCA4XQog
ICAgIHN0b3JlaSB0MywgQXJyYXlTdG9yYWdlOjptX3ZlY3RvciArIFBheWxvYWRPZmZzZXRbdDAs
IHQyLCA4XQotICAgIGRpc3BhdGNoKDQpCisgICAgZGlzcGF0Y2goNSkKIAogLm9wUHV0QnlWYWxF
bXB0eToKICAgICBhZGRpIDEsIEFycmF5U3RvcmFnZTo6bV9udW1WYWx1ZXNJblZlY3Rvclt0MF0K
QEAgLTEzNjIsNyArMTM3MCw3IEBAIF9sbGludF9vcF9wdXRfYnlfdmFsOgogCiAub3BQdXRCeVZh
bFNsb3c6CiAgICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfcHV0X2J5X3ZhbCkKLSAg
ICBkaXNwYXRjaCg0KQorICAgIGRpc3BhdGNoKDUpCiAKIAogX2xsaW50X29wX2xvb3A6CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnBy
ZXRlcjY0LmFzbQkocmV2aXNpb24gMTI1NjAzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20JKHdvcmtpbmcgY29weSkKQEAgLTEwOTksMzEg
KzEwOTksMzYgQEAgX2xsaW50X29wX3B1dF9ieV9pZF90cmFuc2l0aW9uX25vcm1hbF9vdQogCiBf
bGxpbnRfb3BfZ2V0X2J5X3ZhbDoKICAgICB0cmFjZUV4ZWN1dGlvbigpCi0gICAgbG9hZHAgQ29k
ZUJsb2NrW2Nmcl0sIHQxCiAgICAgbG9hZGlzIDE2W1BCLCBQQywgOF0sIHQyCiAgICAgbG9hZGlz
IDI0W1BCLCBQQywgOF0sIHQzCi0gICAgbG9hZHAgQ29kZUJsb2NrOjptX2dsb2JhbERhdGFbdDFd
LCB0MQogICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVDZWxsKHQyLCB0MCwgLm9wR2V0QnlWYWxT
bG93KQotICAgIGxvYWRwIEpTR2xvYmFsRGF0YTo6anNBcnJheUNsYXNzSW5mb1t0MV0sIHQyCiAg
ICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZUludDMyKHQzLCB0MSwgLm9wR2V0QnlWYWxTbG93KQog
ICAgIHN4aTJwIHQxLCB0MQotICAgIGJwbmVxIFt0MF0sIHQyLCAub3BHZXRCeVZhbFNsb3cKKyAg
ICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDMKKyAgICBsb2FkcCAzMltQQiwgUEMs
IDhdLCB0MgorICAgIHN0b3JlcCB0MywgQXJyYXlQcm9maWxlOjptX2xhc3RTZWVuU3RydWN0dXJl
W3QyXQorICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0MgorICAgIGxvYWRwIENvZGVCbG9jazo6
bV9nbG9iYWxEYXRhW3QyXSwgdDIKKyAgICBsb2FkcCBKU0dsb2JhbERhdGE6OmpzQXJyYXlDbGFz
c0luZm9bdDJdLCB0MgorICAgIGJwbmVxIFN0cnVjdHVyZTo6bV9jbGFzc0luZm9bdDNdLCB0Miwg
Lm9wR2V0QnlWYWxTbG93CiAgICAgbG9hZHAgSlNBcnJheTo6bV9zdG9yYWdlW3QwXSwgdDMKICAg
ICBiaWFlcSB0MSwgSlNBcnJheTo6bV92ZWN0b3JMZW5ndGhbdDBdLCAub3BHZXRCeVZhbFNsb3cK
ICAgICBsb2FkaXMgOFtQQiwgUEMsIDhdLCB0MAogICAgIGxvYWRwIEFycmF5U3RvcmFnZTo6bV92
ZWN0b3JbdDMsIHQxLCA4XSwgdDIKICAgICBidHB6IHQyLCAub3BHZXRCeVZhbFNsb3cKICAgICBz
dG9yZXAgdDIsIFtjZnIsIHQwLCA4XQotICAgIGxvYWRwIDMyW1BCLCBQQywgOF0sIHQwCisgICAg
bG9hZHAgNDBbUEIsIFBDLCA4XSwgdDAKICAgICB2YWx1ZVByb2ZpbGUodDIsIHQwKQotICAgIGRp
c3BhdGNoKDUpCisgICAgZGlzcGF0Y2goNikKIAogLm9wR2V0QnlWYWxTbG93OgogICAgIGNhbGxT
bG93UGF0aChfbGxpbnRfc2xvd19wYXRoX2dldF9ieV92YWwpCi0gICAgZGlzcGF0Y2goNSkKKyAg
ICBkaXNwYXRjaCg2KQogCiAKIF9sbGludF9vcF9nZXRfYXJndW1lbnRfYnlfdmFsOgorICAgICMg
RklYTUU6IEF0IHNvbWUgcG9pbnQgd2Ugc2hvdWxkIGFycmF5IHByb2ZpbGUgdGhpcy4gUmlnaHQg
bm93IGl0IGlzbid0IG5lY2Vzc2FyeQorICAgICMgc2luY2UgdGhlIERGRyB3aWxsIG5ldmVyIHR1
cm4gYSBnZXRfYXJndW1lbnRfYnlfdmFsIGludG8gYSBHZXRCeVZhbC4KICAgICB0cmFjZUV4ZWN1
dGlvbigpCiAgICAgbG9hZGlzIDE2W1BCLCBQQywgOF0sIHQwCiAgICAgbG9hZGlzIDI0W1BCLCBQ
QywgOF0sIHQxCkBAIC0xMTM5LDExICsxMTQ0LDExIEBAIF9sbGludF9vcF9nZXRfYXJndW1lbnRf
YnlfdmFsOgogICAgIGxvYWRwIFRoaXNBcmd1bWVudE9mZnNldFtjZnIsIHQyLCA4XSwgdDAKICAg
ICBzdG9yZXAgdDAsIFtjZnIsIHQzLCA4XQogICAgIHZhbHVlUHJvZmlsZSh0MCwgdDEpCi0gICAg
ZGlzcGF0Y2goNSkKKyAgICBkaXNwYXRjaCg2KQogCiAub3BHZXRBcmd1bWVudEJ5VmFsU2xvdzoK
ICAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9nZXRfYXJndW1lbnRfYnlfdmFsKQot
ICAgIGRpc3BhdGNoKDUpCisgICAgZGlzcGF0Y2goNikKIAogCiBfbGxpbnRfb3BfZ2V0X2J5X3Bu
YW1lOgpAQCAtMTE4MiwxMCArMTE4NywxMyBAQCBfbGxpbnRfb3BfcHV0X2J5X3ZhbDoKICAgICBs
b2FkaXMgMTZbUEIsIFBDLCA4XSwgdDAKICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlSW50MzIo
dDAsIHQyLCAub3BQdXRCeVZhbFNsb3cpCiAgICAgc3hpMnAgdDIsIHQyCisgICAgbG9hZHAgSlND
ZWxsOjptX3N0cnVjdHVyZVt0MV0sIHQzCisgICAgbG9hZHAgMzJbUEIsIFBDLCA4XSwgdDAKKyAg
ICBzdG9yZXAgdDMsIEFycmF5UHJvZmlsZTo6bV9sYXN0U2VlblN0cnVjdHVyZVt0MF0KICAgICBs
b2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDAKICAgICBsb2FkcCBDb2RlQmxvY2s6Om1fZ2xvYmFsRGF0
YVt0MF0sIHQwCiAgICAgbG9hZHAgSlNHbG9iYWxEYXRhOjpqc0FycmF5Q2xhc3NJbmZvW3QwXSwg
dDAKLSAgICBicG5lcSBbdDFdLCB0MCwgLm9wUHV0QnlWYWxTbG93CisgICAgYnBuZXEgU3RydWN0
dXJlOjptX2NsYXNzSW5mb1t0M10sIHQwLCAub3BQdXRCeVZhbFNsb3cKICAgICBiaWFlcSB0Miwg
SlNBcnJheTo6bV92ZWN0b3JMZW5ndGhbdDFdLCAub3BQdXRCeVZhbFNsb3cKICAgICBsb2FkcCBK
U0FycmF5OjptX3N0b3JhZ2VbdDFdLCB0MAogICAgIGJ0cHogQXJyYXlTdG9yYWdlOjptX3ZlY3Rv
clt0MCwgdDIsIDhdLCAub3BQdXRCeVZhbEVtcHR5CkBAIC0xMTk0LDcgKzEyMDIsNyBAQCBfbGxp
bnRfb3BfcHV0X2J5X3ZhbDoKICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQzLCB0MSkKICAg
ICB3cml0ZUJhcnJpZXIodDEpCiAgICAgc3RvcmVwIHQxLCBBcnJheVN0b3JhZ2U6Om1fdmVjdG9y
W3QwLCB0MiwgOF0KLSAgICBkaXNwYXRjaCg0KQorICAgIGRpc3BhdGNoKDUpCiAKIC5vcFB1dEJ5
VmFsRW1wdHk6CiAgICAgYWRkaSAxLCBBcnJheVN0b3JhZ2U6Om1fbnVtVmFsdWVzSW5WZWN0b3Jb
dDBdCkBAIC0xMjA1LDcgKzEyMTMsNyBAQCBfbGxpbnRfb3BfcHV0X2J5X3ZhbDoKIAogLm9wUHV0
QnlWYWxTbG93OgogICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX3B1dF9ieV92YWwp
Ci0gICAgZGlzcGF0Y2goNCkKKyAgICBkaXNwYXRjaCg1KQogCiAKIF9sbGludF9vcF9sb29wOgpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmgJKHJldmlzaW9u
IDEyNTYwMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC0zMjIsNiArMzIyLDExIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICB7CiAgICAgICAgICAgICByZXR1cm4gT0JKRUNUX09GRlNFVE9GKFN0cnVjdHVyZSwgbV90eXBl
SW5mbykgKyBUeXBlSW5mbzo6dHlwZU9mZnNldCgpOwogICAgICAgICB9CisgICAgICAgIAorICAg
ICAgICBzdGF0aWMgcHRyZGlmZl90IGNsYXNzSW5mb09mZnNldCgpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoU3RydWN0dXJlLCBtX2NsYXNzSW5mbyk7Cisg
ICAgICAgIH0KIAogICAgICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNH
bG9iYWxEYXRhJik7CiAgICAgICAgIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>