<?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>73608</bug_id>
          
          <creation_ts>2011-12-01 17:47:42 -0800</creation_ts>
          <short_desc>Support integer typed arrays in the DFG JIT</short_desc>
          <delta_ts>2011-12-01 17:57:14 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Oliver Hunt">oliver</reporter>
          <assigned_to name="Oliver Hunt">oliver</assigned_to>
          <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>513344</commentid>
    <comment_count>0</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2011-12-01 17:47:42 -0800</bug_when>
    <thetext>Support integer typed arrays in the DFG JIT</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>513347</commentid>
    <comment_count>1</comment_count>
      <attachid>117535</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2011-12-01 17:50:21 -0800</bug_when>
    <thetext>Created attachment 117535
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>513349</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-12-01 17:52:25 -0800</bug_when>
    <thetext>Attachment 117535 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/ChangeLog&apos;, u&apos;Source...&quot; exit_code: 1

Source/JavaScriptCore/assembler/X86Assembler.h:1101:  movw_rm is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/assembler/X86Assembler.h:1440:  cvttsd2siq_rr is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/assembler/ARMv7Assembler.h:1669:  vcvt_floatingPointToUnsigned is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Total errors found: 3 in 15 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>513350</commentid>
    <comment_count>3</comment_count>
      <attachid>117535</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2011-12-01 17:53:48 -0800</bug_when>
    <thetext>Comment on attachment 117535
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>513353</commentid>
    <comment_count>4</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2011-12-01 17:57:14 -0800</bug_when>
    <thetext>Committed r101729: &lt;http://trac.webkit.org/changeset/101729&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>117535</attachid>
            <date>2011-12-01 17:50:21 -0800</date>
            <delta_ts>2011-12-01 17:53:48 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-73608-20111201175020.patch</filename>
            <type>text/plain</type>
            <size>78717</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAxNTYyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBj
OTY2OTlmMDdhYmE1OTJhMzJhZDRhNGZiNjUzOTZlYjU1ZGI1YzhkLi5lYmZmZDdlYjk0MTQ1YmVl
MzIyNDc1OTZmMGJmMDI5MDI5OGE0YWVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw3MCBAQAorMjAxMS0xMi0wMSAgT2xpdmVyIEh1bnQgIDxvbGl2ZXJAYXBwbGUuY29tPgor
CisgICAgICAgIFN1cHBvcnQgaW50ZWdlciB0eXBlZCBhcnJheXMgaW4gdGhlIERGRyBKSVQKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTczNjA4CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIHN1cHBvcnQg
Zm9yIGFsbCB0aGUgaW50ZWdyYWwgdHlwZWQgYXJyYXlzIGluIHRoZSBERkcgSklULgorICAgICAg
ICBDdXJyZW50bHkgdGhpcyBsb2FkcyB0aGUgY29udGVudHMgb2YgVWludDMyIGFycmF5cyBhcyBk
b3VibGVzLAorICAgICAgICB3aGljaCBpcyBjbGVhcmx5IG5vdCBhcyBlZmZpY2llbnQgYXMgaXQg
Y291bGQgYmUsIGJ1dCB0aGlzIGlzCisgICAgICAgIHN0aWxsIGluIHRoZSBvcmRlciBvZiAxMC0y
MHggZmFzdGVyIHRoYW4gdGhlIGV4aXN0aW5nIGJlaGF2aW91ci4KKworICAgICAgICBUaGlzIG5l
ZWRlZCB1cyB0byBhZGQgc3VwcG9ydCBmb3Igd3JpdGluZyAxNmJpdCB2YWx1ZXMgdG8gdGhlCisg
ICAgICAgIG1hY3JvYXNzZW1ibGVyLCBhbmQgYWxzbyB0byBzdXBwb3J0IGRvdWJsZTwtPnVuc2ln
bmVkIGNvbnZlcnNpb24uCisKKyAgICAgICAgKiBhc3NlbWJsZXIvQVJNdjdBc3NlbWJsZXIuaDoK
KyAgICAgICAgKEpTQzo6QVJNdjdBc3NlbWJsZXI6OnN0cmgpOgorICAgICAgICAoSlNDOjpBUk12
N0Fzc2VtYmxlcjo6dmN2dF9mbG9hdGluZ1BvaW50VG9VbnNpZ25lZCk6CisgICAgICAgICogYXNz
ZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNdjcuaDoKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJs
ZXJBUk12Nzo6c3RvcmUxNik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNdjc6OnRy
dW5jYXRlRG91YmxlVG9VaW50MzIpOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxl
clg4NkNvbW1vbi5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6c3Rv
cmUxNik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjp0cnVuY2F0ZURv
dWJsZVRvVWludDMyKToKKyAgICAgICAgKiBhc3NlbWJsZXIvWDg2QXNzZW1ibGVyLmg6CisgICAg
ICAgIChKU0M6Olg4NkFzc2VtYmxlcjo6bW92d19ybSk6CisgICAgICAgIChKU0M6Olg4NkFzc2Vt
Ymxlcjo6Y3Z0dHNkMnNpcV9ycik6CisgICAgICAgICogYnl0ZWNvZGUvUHJlZGljdGVkVHlwZS5j
cHA6CisgICAgICAgIChKU0M6OnByZWRpY3Rpb25Ub1N0cmluZyk6CisgICAgICAgIChKU0M6OnBy
ZWRpY3Rpb25Gcm9tQ2xhc3NJbmZvKToKKyAgICAgICAgKiBieXRlY29kZS9QcmVkaWN0ZWRUeXBl
Lmg6CisgICAgICAgIChKU0M6OmlzSW50OEFycmF5UHJlZGljdGlvbik6CisgICAgICAgIChKU0M6
OmlzSW50MTZBcnJheVByZWRpY3Rpb24pOgorICAgICAgICAoSlNDOjppc0ludDMyQXJyYXlQcmVk
aWN0aW9uKToKKyAgICAgICAgKEpTQzo6aXNVaW50OEFycmF5UHJlZGljdGlvbik6CisgICAgICAg
IChKU0M6OmlzVWludDE2QXJyYXlQcmVkaWN0aW9uKToKKyAgICAgICAgKEpTQzo6aXNVaW50MzJB
cnJheVByZWRpY3Rpb24pOgorICAgICAgICAoSlNDOjppc0Zsb2F0MzJBcnJheVByZWRpY3Rpb24p
OgorICAgICAgICAoSlNDOjppc0Zsb2F0NjRBcnJheVByZWRpY3Rpb24pOgorICAgICAgICAqIGRm
Zy9ERkdBYnN0cmFjdFN0YXRlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdFN0YXRl
Ojppbml0aWFsaXplKToKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdFN0YXRlOjpleGVjdXRl
KToKKyAgICAgICAgKiBkZmcvREZHTm9kZS5oOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6OnNo
b3VsZFNwZWN1bGF0ZUludDhBcnJheSk6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6c2hvdWxk
U3BlY3VsYXRlSW50MTZBcnJheSk6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6c2hvdWxkU3Bl
Y3VsYXRlSW50MzJBcnJheSk6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6c2hvdWxkU3BlY3Vs
YXRlVWludDhBcnJheSk6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6c2hvdWxkU3BlY3VsYXRl
VWludDE2QXJyYXkpOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6OnNob3VsZFNwZWN1bGF0ZVVp
bnQzMkFycmF5KToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpzaG91bGRTcGVjdWxhdGVGbG9h
dDMyQXJyYXkpOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6OnNob3VsZFNwZWN1bGF0ZUZsb2F0
NjRBcnJheSk6CisgICAgICAgICogZGZnL0RGR1Byb3BhZ2F0b3IuY3BwOgorICAgICAgICAoSlND
OjpERkc6OlByb3BhZ2F0b3I6OnByb3BhZ2F0ZU5vZGVQcmVkaWN0aW9ucyk6CisgICAgICAgIChK
U0M6OkRGRzo6UHJvcGFnYXRvcjo6Zml4dXBOb2RlKToKKyAgICAgICAgKEpTQzo6REZHOjpQcm9w
YWdhdG9yOjpwZXJmb3JtTm9kZUNTRSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklU
LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y2hlY2tBcmd1bWVudFR5
cGVzKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldFR5cGVk
QXJyYXlMZW5ndGgpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxl
R2V0QnlWYWxPbkludFR5cGVkQXJyYXkpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZl
SklUOjpjb21waWxlUHV0QnlWYWxGb3JJbnRUeXBlZEFycmF5KToKKyAgICAgICAgKiBkZmcvREZH
U3BlY3VsYXRpdmVKSVQuaDoKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5j
cHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAg
ICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbERhdGEuaDoK
KwogMjAxMS0xMS0zMCAgTWFyayBIYWhuZW5iZXJnICA8bWhhaG5lbmJlcmdAYXBwbGUuY29tPgog
CiAgICAgICAgIHRvU3RyaW5nQ2FsbGJhY2sgYW5kIHZhbHVlT2ZDYWxsYmFjayBkbyBub3QgY2hl
Y2sgdGhlIGVudGlyZSBwcm90b3R5cGUgY2hhaW4gZm9yIGNvbnZlcnRUb1R5cGUgY2FsbGJhY2sK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQVJNdjdBc3NlbWJs
ZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQVJNdjdBc3NlbWJsZXIuaApp
bmRleCAyM2M4ZDFiODE3ODM1NDY4YjE3NWM4MzRiMzE2OTk5MjRjMjVjZTAyLi4yYzdlMWY0YTYz
ZWIzNTJlODk0NDI1ZjRkODFkMGEyMDM5YzM5ZTg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYXNzZW1ibGVyL0FSTXY3QXNzZW1ibGVyLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Fzc2VtYmxlci9BUk12N0Fzc2VtYmxlci5oCkBAIC01MzQsNiArNTM0LDcgQEAgcHJp
dmF0ZToKICAgICAgICAgT1BfQkxYICAgICAgICAgICAgICA9IDB4NDcwMCwKICAgICAgICAgT1Bf
QlggICAgICAgICAgICAgICA9IDB4NDcwMCwKICAgICAgICAgT1BfU1RSX3JlZ19UMSAgICAgICA9
IDB4NTAwMCwKKyAgICAgICAgT1BfU1RSSF9yZWdfVDEgICAgICA9IDB4NTIwMCwKICAgICAgICAg
T1BfU1RSQl9yZWdfVDEgICAgICA9IDB4NTQwMCwKICAgICAgICAgT1BfTERSX3JlZ19UMSAgICAg
ICA9IDB4NTgwMCwKICAgICAgICAgT1BfTERSSF9yZWdfVDEgICAgICA9IDB4NUEwMCwKQEAgLTU0
Miw2ICs1NDMsNyBAQCBwcml2YXRlOgogICAgICAgICBPUF9MRFJfaW1tX1QxICAgICAgID0gMHg2
ODAwLAogICAgICAgICBPUF9TVFJCX2ltbV9UMSAgICAgID0gMHg3MDAwLAogICAgICAgICBPUF9M
RFJCX2ltbV9UMSAgICAgID0gMHg3ODAwLAorICAgICAgICBPUF9TVFJIX2ltbV9UMSAgICAgID0g
MHg4MDAwLAogICAgICAgICBPUF9MRFJIX2ltbV9UMSAgICAgID0gMHg4ODAwLAogICAgICAgICBP
UF9TVFJfaW1tX1QyICAgICAgID0gMHg5MDAwLAogICAgICAgICBPUF9MRFJfaW1tX1QyICAgICAg
ID0gMHg5ODAwLApAQCAtNjE0LDYgKzYxNiw4IEBAIHByaXZhdGU6CiAgICAgICAgIE9QX1NUUkJf
cmVnX1QyICA9IDB4RjgwMCwKICAgICAgICAgT1BfTERSQl9pbW1fVDMgID0gMHhGODEwLAogICAg
ICAgICBPUF9MRFJCX3JlZ19UMiAgPSAweEY4MTAsCisgICAgICAgIE9QX1NUUkhfaW1tX1QzICA9
IDB4RjgyMCwKKyAgICAgICAgT1BfU1RSSF9yZWdfVDIgID0gMHhGODIwLAogICAgICAgICBPUF9M
RFJIX3JlZ19UMiAgPSAweEY4MzAsCiAgICAgICAgIE9QX0xEUkhfaW1tX1QzICA9IDB4RjgzMCwK
ICAgICAgICAgT1BfU1RSX2ltbV9UNCAgID0gMHhGODQwLApAQCAtNjIyLDYgKzYyNiw3IEBAIHBy
aXZhdGU6CiAgICAgICAgIE9QX0xEUl9yZWdfVDIgICA9IDB4Rjg1MCwKICAgICAgICAgT1BfU1RS
Ql9pbW1fVDIgID0gMHhGODgwLAogICAgICAgICBPUF9MRFJCX2ltbV9UMiAgPSAweEY4OTAsCisg
ICAgICAgIE9QX1NUUkhfaW1tX1QyICA9IDB4RjhBMCwKICAgICAgICAgT1BfTERSSF9pbW1fVDIg
ID0gMHhGOEIwLAogICAgICAgICBPUF9TVFJfaW1tX1QzICAgPSAweEY4QzAsCiAgICAgICAgIE9Q
X0xEUl9pbW1fVDMgICA9IDB4RjhEMCwKQEAgLTE0MzksNiArMTQ0NCw2NSBAQCBwdWJsaWM6CiAg
ICAgICAgIGVsc2UKICAgICAgICAgICAgIG1fZm9ybWF0dGVyLnR3b1dvcmRPcDEyUmVnNEZvdXJG
b3VycyhPUF9TVFJCX3JlZ19UMiwgcm4sIEZvdXJGb3VycyhydCwgMCwgc2hpZnQsIHJtKSk7CiAg
ICAgfQorICAgIAorICAgIC8vIHJ0ID09IEFSTVJlZ2lzdGVyczo6cGMgb25seSBhbGxvd2VkIGlm
IGxhc3QgaW5zdHJ1Y3Rpb24gaW4gSVQgKGlmIHRoZW4pIGJsb2NrLgorICAgIEFMV0FZU19JTkxJ
TkUgdm9pZCBzdHJoKFJlZ2lzdGVySUQgcnQsIFJlZ2lzdGVySUQgcm4sIEFSTVRodW1iSW1tZWRp
YXRlIGltbSkKKyAgICB7CisgICAgICAgIEFTU0VSVChydCAhPSBBUk1SZWdpc3RlcnM6OnBjKTsK
KyAgICAgICAgQVNTRVJUKHJuICE9IEFSTVJlZ2lzdGVyczo6cGMpOworICAgICAgICBBU1NFUlQo
aW1tLmlzVUludDEyKCkpOworICAgICAgICAKKyAgICAgICAgaWYgKCEoKHJ0IHwgcm4pICYgOCkg
JiYgaW1tLmlzVUludDcoKSkKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLm9uZVdvcmRPcDVJbW01
UmVnM1JlZzMoT1BfU1RSSF9pbW1fVDEsIGltbS5nZXRVSW50NygpID4+IDIsIHJuLCBydCk7Cisg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLnR3b1dvcmRPcDEyUmVnNFJlZzRJ
bW0xMihPUF9TVFJIX2ltbV9UMiwgcm4sIHJ0LCBpbW0uZ2V0VUludDEyKCkpOworICAgIH0KKyAg
ICAKKyAgICAvLyBJZiBpbmRleCBpcyBzZXQsIHRoaXMgaXMgYSByZWd1bGFyIG9mZnNldCBvciBh
IHByZS1pbmRleGVkIHN0b3JlOworICAgIC8vIGlmIGluZGV4IGlzIG5vdCBzZXQgdGhlbiBpcyBp
cyBhIHBvc3QtaW5kZXggc3RvcmUuCisgICAgLy8KKyAgICAvLyBJZiB3YmFjayBpcyBzZXQgcm4g
aXMgdXBkYXRlZCAtIHRoaXMgaXMgYSBwcmUgb3IgcG9zdCBpbmRleCBzdG9yZSwKKyAgICAvLyBp
ZiB3YmFjayBpcyBub3Qgc2V0IHRoaXMgaXMgYSByZWd1bGFyIG9mZnNldCBtZW1vcnkgYWNjZXNz
LgorICAgIC8vCisgICAgLy8gKC0yNTUgPD0gb2Zmc2V0IDw9IDI1NSkKKyAgICAvLyBfcmVnID0g
UkVHW3JuXQorICAgIC8vIF90bXAgPSBfcmVnICsgb2Zmc2V0CisgICAgLy8gTUVNW2luZGV4ID8g
X3RtcCA6IF9yZWddID0gUkVHW3J0XQorICAgIC8vIGlmICh3YmFjaykgUkVHW3JuXSA9IF90bXAK
KyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc3RyaChSZWdpc3RlcklEIHJ0LCBSZWdpc3RlcklEIHJu
LCBpbnQgb2Zmc2V0LCBib29sIGluZGV4LCBib29sIHdiYWNrKQorICAgIHsKKyAgICAgICAgQVNT
RVJUKHJ0ICE9IEFSTVJlZ2lzdGVyczo6cGMpOworICAgICAgICBBU1NFUlQocm4gIT0gQVJNUmVn
aXN0ZXJzOjpwYyk7CisgICAgICAgIEFTU0VSVChpbmRleCB8fCB3YmFjayk7CisgICAgICAgIEFT
U0VSVCghd2JhY2sgfCAocnQgIT0gcm4pKTsKKyAgICAgICAgCisgICAgICAgIGJvb2wgYWRkID0g
dHJ1ZTsKKyAgICAgICAgaWYgKG9mZnNldCA8IDApIHsKKyAgICAgICAgICAgIGFkZCA9IGZhbHNl
OworICAgICAgICAgICAgb2Zmc2V0ID0gLW9mZnNldDsKKyAgICAgICAgfQorICAgICAgICBBU1NF
UlQoIShvZmZzZXQgJiB+MHhmZikpOworICAgICAgICAKKyAgICAgICAgb2Zmc2V0IHw9ICh3YmFj
ayA8PCA4KTsKKyAgICAgICAgb2Zmc2V0IHw9IChhZGQgICA8PCA5KTsKKyAgICAgICAgb2Zmc2V0
IHw9IChpbmRleCA8PCAxMCk7CisgICAgICAgIG9mZnNldCB8PSAoMSA8PCAxMSk7CisgICAgICAg
IAorICAgICAgICBtX2Zvcm1hdHRlci50d29Xb3JkT3AxMlJlZzRSZWc0SW1tMTIoT1BfU1RSSF9p
bW1fVDMsIHJuLCBydCwgb2Zmc2V0KTsKKyAgICB9CisgICAgCisgICAgLy8gcnQgPT0gQVJNUmVn
aXN0ZXJzOjpwYyBvbmx5IGFsbG93ZWQgaWYgbGFzdCBpbnN0cnVjdGlvbiBpbiBJVCAoaWYgdGhl
bikgYmxvY2suCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHN0cmgoUmVnaXN0ZXJJRCBydCwgUmVn
aXN0ZXJJRCBybiwgUmVnaXN0ZXJJRCBybSwgdW5zaWduZWQgc2hpZnQgPSAwKQorICAgIHsKKyAg
ICAgICAgQVNTRVJUKHJuICE9IEFSTVJlZ2lzdGVyczo6cGMpOworICAgICAgICBBU1NFUlQoIUJh
ZFJlZyhybSkpOworICAgICAgICBBU1NFUlQoc2hpZnQgPD0gMyk7CisgICAgICAgIAorICAgICAg
ICBpZiAoIXNoaWZ0ICYmICEoKHJ0IHwgcm4gfCBybSkgJiA4KSkKKyAgICAgICAgICAgIG1fZm9y
bWF0dGVyLm9uZVdvcmRPcDdSZWczUmVnM1JlZzMoT1BfU1RSSF9yZWdfVDEsIHJtLCBybiwgcnQp
OworICAgICAgICBlbHNlCisgICAgICAgICAgICBtX2Zvcm1hdHRlci50d29Xb3JkT3AxMlJlZzRG
b3VyRm91cnMoT1BfU1RSSF9yZWdfVDIsIHJuLCBGb3VyRm91cnMocnQsIDAsIHNoaWZ0LCBybSkp
OworICAgIH0KIAogICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzdWIoUmVnaXN0ZXJJRCByZCwgUmVn
aXN0ZXJJRCBybiwgQVJNVGh1bWJJbW1lZGlhdGUgaW1tKQogICAgIHsKQEAgLTE2MDEsNiArMTY2
NSwxMiBAQCBwdWJsaWM6CiAgICAgICAgIC8vIGJvb2xlYW4gdmFsdWVzIGFyZSA2NGJpdCAodG9J
bnQsIHVuc2lnbmVkLCByb3VuZFplcm8pCiAgICAgICAgIG1fZm9ybWF0dGVyLnZmcE9wKE9QX1ZD
VlRfRlBJVkZQLCBPUF9WQ1ZUX0ZQSVZGUGIsIHRydWUsIHZjdnRPcCh0cnVlLCBmYWxzZSwgdHJ1
ZSksIHJkLCBybSk7CiAgICAgfQorICAgIAorICAgIHZvaWQgdmN2dF9mbG9hdGluZ1BvaW50VG9V
bnNpZ25lZChGUFNpbmdsZVJlZ2lzdGVySUQgcmQsIEZQRG91YmxlUmVnaXN0ZXJJRCBybSkKKyAg
ICB7CisgICAgICAgIC8vIGJvb2xlYW4gdmFsdWVzIGFyZSA2NGJpdCAodG9JbnQsIHVuc2lnbmVk
LCByb3VuZFplcm8pCisgICAgICAgIG1fZm9ybWF0dGVyLnZmcE9wKE9QX1ZDVlRfRlBJVkZQLCBP
UF9WQ1ZUX0ZQSVZGUGIsIHRydWUsIHZjdnRPcCh0cnVlLCB0cnVlLCB0cnVlKSwgcmQsIHJtKTsK
KyAgICB9CiAKICAgICB2b2lkIHZkaXYoRlBEb3VibGVSZWdpc3RlcklEIHJkLCBGUERvdWJsZVJl
Z2lzdGVySUQgcm4sIEZQRG91YmxlUmVnaXN0ZXJJRCBybSkKICAgICB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNdjcuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk12Ny5oCmluZGV4
IDY3OWY2YTZhNjA3OWJkMGUwYThhOWU5OWU0ODVjYzIzMzAyM2Y2ODQuLjkyMDYwMzUwZjM5MTBl
ZGVlZTcwOTlkZDUxMmQ1NzhhZGE0ODE5YzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk12Ny5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk12Ny5oCkBAIC01NDQsNiArNTQ0LDIw
IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBtX2Fzc2VtYmxlci5zdHJiKHNyYywgYWRkcmVzcy5i
YXNlLCBhZGRyZXNzLnUub2Zmc2V0LCB0cnVlLCBmYWxzZSk7CiAgICAgICAgIH0KICAgICB9Cisg
ICAgCisgICAgdm9pZCBzdG9yZTE2KFJlZ2lzdGVySUQgc3JjLCBBcm1BZGRyZXNzIGFkZHJlc3Mp
CisgICAgeworICAgICAgICBpZiAoYWRkcmVzcy50eXBlID09IEFybUFkZHJlc3M6Okhhc0luZGV4
KQorICAgICAgICAgICAgbV9hc3NlbWJsZXIuc3RyaChzcmMsIGFkZHJlc3MuYmFzZSwgYWRkcmVz
cy51LmluZGV4LCBhZGRyZXNzLnUuc2NhbGUpOworICAgICAgICBlbHNlIGlmIChhZGRyZXNzLnUu
b2Zmc2V0ID49IDApIHsKKyAgICAgICAgICAgIEFSTVRodW1iSW1tZWRpYXRlIGFybUltbSA9IEFS
TVRodW1iSW1tZWRpYXRlOjptYWtlVUludDEyKGFkZHJlc3MudS5vZmZzZXQpOworICAgICAgICAg
ICAgQVNTRVJUKGFybUltbS5pc1ZhbGlkKCkpOworICAgICAgICAgICAgbV9hc3NlbWJsZXIuc3Ry
aChzcmMsIGFkZHJlc3MuYmFzZSwgYXJtSW1tKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgIEFTU0VSVChhZGRyZXNzLnUub2Zmc2V0ID49IC0yNTUpOworICAgICAgICAgICAgbV9hc3Nl
bWJsZXIuc3RyaChzcmMsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy51Lm9mZnNldCwgdHJ1ZSwgZmFs
c2UpOworICAgICAgICB9CisgICAgfQogCiBwdWJsaWM6CiAgICAgdm9pZCBsb2FkMzIoSW1wbGlj
aXRBZGRyZXNzIGFkZHJlc3MsIFJlZ2lzdGVySUQgZGVzdCkKQEAgLTY2OCw2ICs2ODIsMTEgQEAg
cHVibGljOgogICAgIHsKICAgICAgICAgc3RvcmU4KHNyYywgc2V0dXBBcm1BZGRyZXNzKGFkZHJl
c3MpKTsKICAgICB9CisgICAgCisgICAgdm9pZCBzdG9yZTE2KFJlZ2lzdGVySUQgc3JjLCBCYXNl
SW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIHN0b3JlMTYoc3JjLCBzZXR1cEFybUFkZHJl
c3MoYWRkcmVzcykpOworICAgIH0KIAogCiAgICAgLy8gRmxvYXRpbmctcG9pbnQgb3BlcmF0aW9u
czoKQEAgLTg3Niw2ICs4OTUsMTIgQEAgcHVibGljOgogICAgICAgICBtX2Fzc2VtYmxlci52Y3Z0
X2Zsb2F0aW5nUG9pbnRUb1NpZ25lZChmcFRlbXBSZWdpc3RlckFzU2luZ2xlKCksIHNyYyk7CiAg
ICAgICAgIG1fYXNzZW1ibGVyLnZtb3YoZGVzdCwgZnBUZW1wUmVnaXN0ZXJBc1NpbmdsZSgpKTsK
ICAgICB9CisKKyAgICB2b2lkIHRydW5jYXRlRG91YmxlVG9VaW50MzIoRlBSZWdpc3RlcklEIHNy
YywgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIudmN2dF9mbG9h
dGluZ1BvaW50VG9VbnNpZ25lZChmcFRlbXBSZWdpc3RlckFzU2luZ2xlKCksIHNyYyk7CisgICAg
ICAgIG1fYXNzZW1ibGVyLnZtb3YoZGVzdCwgZnBUZW1wUmVnaXN0ZXJBc1NpbmdsZSgpKTsKKyAg
ICB9CiAgICAgCiAgICAgLy8gQ29udmVydCAnc3JjJyB0byBhbiBpbnRlZ2VyLCBhbmQgcGxhY2Vz
IHRoZSByZXN1bHRpbmcgJ2Rlc3QnLgogICAgIC8vIElmIHRoZSByZXN1bHQgaXMgbm90IHJlcHJl
c2VudGFibGUgYXMgYSAzMiBiaXQgdmFsdWUsIGJyYW5jaC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaAppbmRl
eCBlOTdjNzE2NDY3ZmFjYWMxZmU1ZTZmOTAxNjgwMWFmMmM3MDlkMzNmLi4xYWQ0MzQ2NDc3MzRm
ODQxNTRlMmRlMDM3MzMwNWRmMjgxMTg2ZWRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5oCkBAIC01NTYs
NiArNTU2LDMzIEBAIHB1YmxpYzoKICAgICAgICAgbV9hc3NlbWJsZXIubW92Yl9ybShzcmMsIGFk
ZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgsIGFkZHJlc3Muc2NhbGUp
OwogICAgIH0KIAorICAgIHZvaWQgc3RvcmUxNihSZWdpc3RlcklEIHNyYywgQmFzZUluZGV4IGFk
ZHJlc3MpCisgICAgeworI2lmIENQVShYODYpCisgICAgICAgIC8vIE9uIDMyLWJpdCB4ODYgd2Ug
Y2FuIG9ubHkgc3RvcmUgZnJvbSB0aGUgZmlyc3QgNCByZWdpc3RlcnM7CisgICAgICAgIC8vIGVz
cC4uZWRpIGFyZSBtYXBwZWQgdG8gdGhlICdoJyByZWdpc3RlcnMhCisgICAgICAgIGlmIChzcmMg
Pj0gNCkgeworICAgICAgICAgICAgLy8gUGljayBhIHRlbXBvcmFyeSByZWdpc3Rlci4KKyAgICAg
ICAgICAgIFJlZ2lzdGVySUQgdGVtcDsKKyAgICAgICAgICAgIGlmIChhZGRyZXNzLmJhc2UgIT0g
WDg2UmVnaXN0ZXJzOjplYXggJiYgYWRkcmVzcy5pbmRleCAhPSBYODZSZWdpc3RlcnM6OmVheCkK
KyAgICAgICAgICAgICAgICB0ZW1wID0gWDg2UmVnaXN0ZXJzOjplYXg7CisgICAgICAgICAgICBl
bHNlIGlmIChhZGRyZXNzLmJhc2UgIT0gWDg2UmVnaXN0ZXJzOjplYnggJiYgYWRkcmVzcy5pbmRl
eCAhPSBYODZSZWdpc3RlcnM6OmVieCkKKyAgICAgICAgICAgICAgICB0ZW1wID0gWDg2UmVnaXN0
ZXJzOjplYng7CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBBU1NFUlQoYWRk
cmVzcy5iYXNlICE9IFg4NlJlZ2lzdGVyczo6ZWN4ICYmIGFkZHJlc3MuaW5kZXggIT0gWDg2UmVn
aXN0ZXJzOjplY3gpOworICAgICAgICAgICAgICAgIHRlbXAgPSBYODZSZWdpc3RlcnM6OmVjeDsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgLy8gU3dhcCB0byB0aGUg
dGVtcG9yYXJ5IHJlZ2lzdGVyIHRvIHBlcmZvcm0gdGhlIHN0b3JlLgorICAgICAgICAgICAgc3dh
cChzcmMsIHRlbXApOworICAgICAgICAgICAgbV9hc3NlbWJsZXIubW92d19ybSh0ZW1wLCBhZGRy
ZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBhZGRyZXNzLnNjYWxlKTsK
KyAgICAgICAgICAgIHN3YXAoc3JjLCB0ZW1wKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgfQorI2VuZGlmCisgICAgICAgIG1fYXNzZW1ibGVyLm1vdndfcm0oc3JjLCBhZGRyZXNzLm9m
ZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBhZGRyZXNzLnNjYWxlKTsKKyAgICB9
CisKIAogICAgIC8vIEZsb2F0aW5nLXBvaW50IG9wZXJhdGlvbjoKICAgICAvLwpAQCAtNzI1LDYg
Kzc1MiwyMSBAQCBwdWJsaWM6CiAgICAgICAgIG1fYXNzZW1ibGVyLmN2dHRzZDJzaV9ycihzcmMs
IGRlc3QpOwogICAgIH0KICAgICAKKyNpZiBDUFUoWDg2XzY0KQorICAgIHZvaWQgdHJ1bmNhdGVE
b3VibGVUb1VpbnQzMihGUFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QpCisgICAgewor
ICAgICAgICBBU1NFUlQoaXNTU0UyUHJlc2VudCgpKTsKKyAgICAgICAgbV9hc3NlbWJsZXIuY3Z0
dHNkMnNpcV9ycihzcmMsIGRlc3QpOworICAgIH0KKyNlbHNlCisgICAgdm9pZCB0cnVuY2F0ZURv
dWJsZVRvVWludDMyKEZQUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7Cisg
ICAgICAgIEFTU0VSVChpc1NTRTJQcmVzZW50KCkpOworICAgICAgICAvLyBGSVhNRTogR2VuZXJh
dGUgY29ycmVjdCBjb2RlIGZvciBhIGRvdWJsZSB0byB1bnNpZ25lZCBjb252ZXJzaW9uLgorICAg
ICAgICBtX2Fzc2VtYmxlci5jdnR0c2Qyc2lfcnIoc3JjLCBkZXN0KTsKKyAgICB9CisjZW5kaWYK
KyAgICAKICAgICAvLyBDb252ZXJ0ICdzcmMnIHRvIGFuIGludGVnZXIsIGFuZCBwbGFjZXMgdGhl
IHJlc3VsdGluZyAnZGVzdCcuCiAgICAgLy8gSWYgdGhlIHJlc3VsdCBpcyBub3QgcmVwcmVzZW50
YWJsZSBhcyBhIDMyIGJpdCB2YWx1ZSwgYnJhbmNoLgogICAgIC8vIE1heSBhbHNvIGJyYW5jaCBm
b3Igc29tZSB2YWx1ZXMgdGhhdCBhcmUgcmVwcmVzZW50YWJsZSBpbiAzMiBiaXRzCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1g4NkFzc2VtYmxlci5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9YODZBc3NlbWJsZXIuaAppbmRleCA3NTJkODY2
OTBmMGMzNzAwN2E1NDQxOWFkODQ2NmFhMDYwMzJlNDA4Li4wNzljMTkwZTM0MGFkNTM5OGJjZDE0
ZTEzNTRiMmMwMTI1Mjk2ZjdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNz
ZW1ibGVyL1g4NkFzc2VtYmxlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJs
ZXIvWDg2QXNzZW1ibGVyLmgKQEAgLTEwOTcsNiArMTA5NywxMiBAQCBwdWJsaWM6CiAgICAgewog
ICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A4KE9QX01PVl9FYkdiLCBzcmMsIGJhc2UsIGlu
ZGV4LCBzY2FsZSwgb2Zmc2V0KTsKICAgICB9CisgICAgCisgICAgdm9pZCBtb3Z3X3JtKFJlZ2lz
dGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgs
IGludCBzY2FsZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLnByZWZpeChQUkVfT1BFUkFO
RF9TSVpFKTsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wOChPUF9NT1ZfRXZHdiwgc3Jj
LCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgfQogCiAgICAgdm9pZCBtb3ZsX0VB
WG0oY29uc3Qgdm9pZCogYWRkcikKICAgICB7CkBAIC0xNDI5LDYgKzE0MzUsMTQgQEAgcHVibGlj
OgogICAgICAgICBtX2Zvcm1hdHRlci5wcmVmaXgoUFJFX1NTRV9GMik7CiAgICAgICAgIG1fZm9y
bWF0dGVyLnR3b0J5dGVPcChPUDJfQ1ZUVFNEMlNJX0dkV3NkLCBkc3QsIChSZWdpc3RlcklEKXNy
Yyk7CiAgICAgfQorICAgIAorI2lmIENQVShYODZfNjQpCisgICAgdm9pZCBjdnR0c2Qyc2lxX3Jy
KFhNTVJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRzdCkKKyAgICB7CisgICAgICAgIG1fZm9y
bWF0dGVyLnByZWZpeChQUkVfU1NFX0YyKTsKKyAgICAgICAgbV9mb3JtYXR0ZXIudHdvQnl0ZU9w
NjQoT1AyX0NWVFRTRDJTSV9HZFdzZCwgZHN0LCAoUmVnaXN0ZXJJRClzcmMpOworICAgIH0KKyNl
bmRpZgogCiAgICAgdm9pZCBtb3ZkX3JyKFhNTVJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRz
dCkKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJl
ZGljdGVkVHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJlZGljdGVk
VHlwZS5jcHAKaW5kZXggNWEwNzQxNTk4NTZmZjg1MmI5ODc0Zjk1YWYyMjkwOWNiOTgxZjJkYi4u
YmQ4ZjA3NGY0ZjQxYzc0ZjI2N2VmMWZjMWVmZmMzN2ExMjY5M2FjYSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ByZWRpY3RlZFR5cGUuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QcmVkaWN0ZWRUeXBlLmNwcApAQCAtNDIsNyArNDIs
NyBAQCBjb25zdCBjaGFyKiBwcmVkaWN0aW9uVG9TdHJpbmcoUHJlZGljdGVkVHlwZSB2YWx1ZSkK
ICAgICBpZiAodmFsdWUgPT0gUHJlZGljdE5vbmUpCiAgICAgICAgIHJldHVybiAiTm9uZSI7CiAg
ICAgCi0gICAgc3RhdGljIGNvbnN0IGludCBzaXplID0gOTY7CisgICAgc3RhdGljIGNvbnN0IGlu
dCBzaXplID0gMjU2OwogICAgIHN0YXRpYyBjaGFyIGRlc2NyaXB0aW9uW3NpemVdOwogICAgIEJv
dW5kc0NoZWNrZWRQb2ludGVyPGNoYXI+IHB0cihkZXNjcmlwdGlvbiwgc2l6ZSk7CiAgICAgCkBA
IC03Myw2ICs3Myw0NiBAQCBjb25zdCBjaGFyKiBwcmVkaWN0aW9uVG9TdHJpbmcoUHJlZGljdGVk
VHlwZSB2YWx1ZSkKICAgICBlbHNlCiAgICAgICAgIGlzVG9wID0gZmFsc2U7CiAgICAgCisgICAg
aWYgKHZhbHVlICYgUHJlZGljdEludDhBcnJheSkKKyAgICAgICAgcHRyLnN0cmNhdCgiSW50OGFy
cmF5Iik7CisgICAgZWxzZQorICAgICAgICBpc1RvcCA9IGZhbHNlOworICAgIAorICAgIGlmICh2
YWx1ZSAmIFByZWRpY3RJbnQxNkFycmF5KQorICAgICAgICBwdHIuc3RyY2F0KCJJbnQxNmFycmF5
Iik7CisgICAgZWxzZQorICAgICAgICBpc1RvcCA9IGZhbHNlOworICAgIAorICAgIGlmICh2YWx1
ZSAmIFByZWRpY3RJbnQzMkFycmF5KQorICAgICAgICBwdHIuc3RyY2F0KCJJbnQzMmFycmF5Iik7
CisgICAgZWxzZQorICAgICAgICBpc1RvcCA9IGZhbHNlOworICAgIAorICAgIGlmICh2YWx1ZSAm
IFByZWRpY3RVaW50OEFycmF5KQorICAgICAgICBwdHIuc3RyY2F0KCJVaW50OGFycmF5Iik7Cisg
ICAgZWxzZQorICAgICAgICBpc1RvcCA9IGZhbHNlOworICAgIAorICAgIGlmICh2YWx1ZSAmIFBy
ZWRpY3RVaW50MTZBcnJheSkKKyAgICAgICAgcHRyLnN0cmNhdCgiVWludDE2YXJyYXkiKTsKKyAg
ICBlbHNlCisgICAgICAgIGlzVG9wID0gZmFsc2U7CisgICAgCisgICAgaWYgKHZhbHVlICYgUHJl
ZGljdFVpbnQzMkFycmF5KQorICAgICAgICBwdHIuc3RyY2F0KCJVaW50MzJhcnJheSIpOworICAg
IGVsc2UKKyAgICAgICAgaXNUb3AgPSBmYWxzZTsKKyAgICAKKyAgICBpZiAodmFsdWUgJiBQcmVk
aWN0RmxvYXQzMkFycmF5KQorICAgICAgICBwdHIuc3RyY2F0KCJGbG9hdDMyYXJyYXkiKTsKKyAg
ICBlbHNlCisgICAgICAgIGlzVG9wID0gZmFsc2U7CisgICAgCisgICAgaWYgKHZhbHVlICYgUHJl
ZGljdEZsb2F0NjRBcnJheSkKKyAgICAgICAgcHRyLnN0cmNhdCgiRmxvYXQ2NGFycmF5Iik7Cisg
ICAgZWxzZQorICAgICAgICBpc1RvcCA9IGZhbHNlOworICAgIAogICAgIGlmICh2YWx1ZSAmIFBy
ZWRpY3RGdW5jdGlvbikKICAgICAgICAgcHRyLnN0cmNhdCgiRnVuY3Rpb24iKTsKICAgICBlbHNl
CkBAIC0xMjksNiArMTY5LDI5IEBAIFByZWRpY3RlZFR5cGUgcHJlZGljdGlvbkZyb21DbGFzc0lu
Zm8oY29uc3QgQ2xhc3NJbmZvKiBjbGFzc0luZm8pCiAgICAgaWYgKGNsYXNzSW5mby0+aXNTdWJD
bGFzc09mKCZKU0J5dGVBcnJheTo6c19pbmZvKSkKICAgICAgICAgcmV0dXJuIFByZWRpY3RCeXRl
QXJyYXk7CiAgICAgCisgICAgaWYgKGNsYXNzSW5mby0+dHlwZWRBcnJheVN0b3JhZ2VUeXBlICE9
IFR5cGVkQXJyYXlOb25lKSB7CisgICAgICAgIHN3aXRjaCAoY2xhc3NJbmZvLT50eXBlZEFycmF5
U3RvcmFnZVR5cGUpIHsKKyAgICAgICAgY2FzZSBUeXBlZEFycmF5SW50ODoKKyAgICAgICAgICAg
IHJldHVybiBQcmVkaWN0SW50OEFycmF5OworICAgICAgICBjYXNlIFR5cGVkQXJyYXlJbnQxNjoK
KyAgICAgICAgICAgIHJldHVybiBQcmVkaWN0SW50MTZBcnJheTsKKyAgICAgICAgY2FzZSBUeXBl
ZEFycmF5SW50MzI6CisgICAgICAgICAgICByZXR1cm4gUHJlZGljdEludDMyQXJyYXk7CisgICAg
ICAgIGNhc2UgVHlwZWRBcnJheVVpbnQ4OgorICAgICAgICAgICAgcmV0dXJuIFByZWRpY3RVaW50
OEFycmF5OworICAgICAgICBjYXNlIFR5cGVkQXJyYXlVaW50MTY6CisgICAgICAgICAgICByZXR1
cm4gUHJlZGljdFVpbnQxNkFycmF5OworICAgICAgICBjYXNlIFR5cGVkQXJyYXlVaW50MzI6Cisg
ICAgICAgICAgICByZXR1cm4gUHJlZGljdFVpbnQzMkFycmF5OworICAgICAgICBjYXNlIFR5cGVk
QXJyYXlGbG9hdDMyOgorICAgICAgICAgICAgcmV0dXJuIFByZWRpY3RGbG9hdDMyQXJyYXk7Cisg
ICAgICAgIGNhc2UgVHlwZWRBcnJheUZsb2F0NjQ6CisgICAgICAgICAgICByZXR1cm4gUHJlZGlj
dEZsb2F0NjRBcnJheTsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICB9CisgICAgfQorICAgIAogICAgIGlmIChjbGFzc0luZm8tPmlzU3ViQ2xhc3NPZigmSlNP
YmplY3Q6OnNfaW5mbykpCiAgICAgICAgIHJldHVybiBQcmVkaWN0T2JqZWN0T3RoZXI7CiAgICAg
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJlZGljdGVkVHlw
ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ByZWRpY3RlZFR5cGUuaAppbmRl
eCA0YzQwZDlmODc1MzQ5ZDJiZDJmNWE3OTZkNWJlMDJhNmY0NTU0YzVhLi41NzIwMzk4ZGI0MTVh
OWIwYWJkNGRmNzdkYmM1MDdmMzQxMDNmOWRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvUHJlZGljdGVkVHlwZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9QcmVkaWN0ZWRUeXBlLmgKQEAgLTM1LDIzICszNSwzMSBAQCBuYW1lc3BhY2Ug
SlNDIHsKIAogY2xhc3MgU3RydWN0dXJlOwogCi10eXBlZGVmIHVpbnQxNl90IFByZWRpY3RlZFR5
cGU7Ci1zdGF0aWMgY29uc3QgUHJlZGljdGVkVHlwZSBQcmVkaWN0Tm9uZSAgICAgICAgICA9IDB4
MDAwMDsgLy8gV2UgZG9uJ3Qga25vdyBhbnl0aGluZyB5ZXQuCi1zdGF0aWMgY29uc3QgUHJlZGlj
dGVkVHlwZSBQcmVkaWN0RmluYWxPYmplY3QgICA9IDB4MDAwMTsgLy8gSXQncyBkZWZpbml0ZWx5
IGEgSlNGaW5hbE9iamVjdC4KLXN0YXRpYyBjb25zdCBQcmVkaWN0ZWRUeXBlIFByZWRpY3RBcnJh
eSAgICAgICAgID0gMHgwMDAyOyAvLyBJdCdzIGRlZmluaXRlbHkgYSBKU0FycmF5Lgotc3RhdGlj
IGNvbnN0IFByZWRpY3RlZFR5cGUgUHJlZGljdEJ5dGVBcnJheSAgICAgPSAweDAwMDQ7IC8vIEl0
J3MgZGVmaW5pdGVseSBhIEpTQnl0ZUFycmF5IG9yIG9uZSBvZiBpdHMgc3ViY2xhc3Nlcy4KLXN0
YXRpYyBjb25zdCBQcmVkaWN0ZWRUeXBlIFByZWRpY3RGdW5jdGlvbiAgICAgID0gMHgwMDA4OyAv
LyBJdCdzIGRlZmluaXRlbHkgYSBKU0Z1bmN0aW9uIG9yIG9uZSBvZiBpdHMgc3ViY2xhc3Nlcy4K
LXN0YXRpYyBjb25zdCBQcmVkaWN0ZWRUeXBlIFByZWRpY3RPYmplY3RPdGhlciAgID0gMHgwMDIw
OyAvLyBJdCdzIGRlZmluaXRlbHkgYW4gb2JqZWN0IGJ1dCBub3QgSlNGaW5hbE9iamVjdCwgSlNB
cnJheSwgSlNCeXRlQXJyYXksIG9yIEpTRnVuY3Rpb24uCi1zdGF0aWMgY29uc3QgUHJlZGljdGVk
VHlwZSBQcmVkaWN0T2JqZWN0TWFzayAgICA9IDB4MDAzZjsgLy8gQml0bWFzayB1c2VkIGZvciB0
ZXN0aW5nIGZvciBhbnkga2luZCBvZiBvYmplY3QgcHJlZGljdGlvbi4KLXN0YXRpYyBjb25zdCBQ
cmVkaWN0ZWRUeXBlIFByZWRpY3RTdHJpbmcgICAgICAgID0gMHgwMDQwOyAvLyBJdCdzIGRlZmlu
aXRlbHkgYSBKU1N0cmluZy4KLXN0YXRpYyBjb25zdCBQcmVkaWN0ZWRUeXBlIFByZWRpY3RDZWxs
T3RoZXIgICAgID0gMHgwMDgwOyAvLyBJdCdzIGRlZmluaXRlbHkgYSBKU0NlbGwgYnV0IG5vdCBh
IHN1YmNsYXNzIG9mIEpTT2JqZWN0IGFuZCBkZWZpbml0ZWx5IG5vdCBhIEpTU3RyaW5nLgotc3Rh
dGljIGNvbnN0IFByZWRpY3RlZFR5cGUgUHJlZGljdENlbGwgICAgICAgICAgPSAweDAwZmY7IC8v
IEl0J3MgZGVmaW5pdGVseSBhIEpTQ2VsbC4KLXN0YXRpYyBjb25zdCBQcmVkaWN0ZWRUeXBlIFBy
ZWRpY3RJbnQzMiAgICAgICAgID0gMHgwMTAwOyAvLyBJdCdzIGRlZmluaXRlbHkgYW4gSW50MzIu
Ci1zdGF0aWMgY29uc3QgUHJlZGljdGVkVHlwZSBQcmVkaWN0RG91YmxlICAgICAgICA9IDB4MDIw
MDsgLy8gSXQncyBkZWZpbml0ZWx5IGEgRG91YmxlLgotc3RhdGljIGNvbnN0IFByZWRpY3RlZFR5
cGUgUHJlZGljdE51bWJlciAgICAgICAgPSAweDAzMDA7IC8vIEl0J3MgZWl0aGVyIGFuIEludDMy
IG9yIGEgRG91YmxlLgotc3RhdGljIGNvbnN0IFByZWRpY3RlZFR5cGUgUHJlZGljdEJvb2xlYW4g
ICAgICAgPSAweDA0MDA7IC8vIEl0J3MgZGVmaW5pdGVseSBhIEJvb2xlYW4uCi1zdGF0aWMgY29u
c3QgUHJlZGljdGVkVHlwZSBQcmVkaWN0T3RoZXIgICAgICAgICA9IDB4NDAwMDsgLy8gSXQncyBk
ZWZpbml0ZWx5IG5vbmUgb2YgdGhlIGFib3ZlLgotc3RhdGljIGNvbnN0IFByZWRpY3RlZFR5cGUg
UHJlZGljdFRvcCAgICAgICAgICAgPSAweDdmZmY7IC8vIEl0IGNhbiBiZSBhbnkgb2YgdGhlIGFi
b3ZlLgordHlwZWRlZiB1aW50MzJfdCBQcmVkaWN0ZWRUeXBlOworc3RhdGljIGNvbnN0IFByZWRp
Y3RlZFR5cGUgUHJlZGljdE5vbmUgICAgICAgICAgPSAweDAwMDAwMDAwOyAvLyBXZSBkb24ndCBr
bm93IGFueXRoaW5nIHlldC4KK3N0YXRpYyBjb25zdCBQcmVkaWN0ZWRUeXBlIFByZWRpY3RGaW5h
bE9iamVjdCAgID0gMHgwMDAwMDAwMTsgLy8gSXQncyBkZWZpbml0ZWx5IGEgSlNGaW5hbE9iamVj
dC4KK3N0YXRpYyBjb25zdCBQcmVkaWN0ZWRUeXBlIFByZWRpY3RBcnJheSAgICAgICAgID0gMHgw
MDAwMDAwMjsgLy8gSXQncyBkZWZpbml0ZWx5IGEgSlNBcnJheS4KK3N0YXRpYyBjb25zdCBQcmVk
aWN0ZWRUeXBlIFByZWRpY3RCeXRlQXJyYXkgICAgID0gMHgwMDAwMDAwNDsgLy8gSXQncyBkZWZp
bml0ZWx5IGEgSlNCeXRlQXJyYXkgb3Igb25lIG9mIGl0cyBzdWJjbGFzc2VzLgorc3RhdGljIGNv
bnN0IFByZWRpY3RlZFR5cGUgUHJlZGljdEZ1bmN0aW9uICAgICAgPSAweDAwMDAwMDA4OyAvLyBJ
dCdzIGRlZmluaXRlbHkgYSBKU0Z1bmN0aW9uIG9yIG9uZSBvZiBpdHMgc3ViY2xhc3Nlcy4KK3N0
YXRpYyBjb25zdCBQcmVkaWN0ZWRUeXBlIFByZWRpY3RJbnQ4QXJyYXkgICAgID0gMHgwMDAwMDAx
MDsgLy8gSXQncyBkZWZpbml0ZWx5IGFuIEludDhBcnJheSBvciBvbmUgb2YgaXRzIHN1YmNsYXNz
ZXMuCitzdGF0aWMgY29uc3QgUHJlZGljdGVkVHlwZSBQcmVkaWN0SW50MTZBcnJheSAgICA9IDB4
MDAwMDAwMjA7IC8vIEl0J3MgZGVmaW5pdGVseSBhbiBJbnQxNkFycmF5IG9yIG9uZSBvZiBpdHMg
c3ViY2xhc3Nlcy4KK3N0YXRpYyBjb25zdCBQcmVkaWN0ZWRUeXBlIFByZWRpY3RJbnQzMkFycmF5
ICAgID0gMHgwMDAwMDA0MDsgLy8gSXQncyBkZWZpbml0ZWx5IGFuIEludDMyQXJyYXkgb3Igb25l
IG9mIGl0cyBzdWJjbGFzc2VzLgorc3RhdGljIGNvbnN0IFByZWRpY3RlZFR5cGUgUHJlZGljdFVp
bnQ4QXJyYXkgICAgPSAweDAwMDAwMDgwOyAvLyBJdCdzIGRlZmluaXRlbHkgYW4gVWludDhBcnJh
eSBvciBvbmUgb2YgaXRzIHN1YmNsYXNzZXMuCitzdGF0aWMgY29uc3QgUHJlZGljdGVkVHlwZSBQ
cmVkaWN0VWludDE2QXJyYXkgICA9IDB4MDAwMDAxMDA7IC8vIEl0J3MgZGVmaW5pdGVseSBhbiBV
aW50MTZBcnJheSBvciBvbmUgb2YgaXRzIHN1YmNsYXNzZXMuCitzdGF0aWMgY29uc3QgUHJlZGlj
dGVkVHlwZSBQcmVkaWN0VWludDMyQXJyYXkgICA9IDB4MDAwMDAyMDA7IC8vIEl0J3MgZGVmaW5p
dGVseSBhbiBVaW50MzJBcnJheSBvciBvbmUgb2YgaXRzIHN1YmNsYXNzZXMuCitzdGF0aWMgY29u
c3QgUHJlZGljdGVkVHlwZSBQcmVkaWN0RmxvYXQzMkFycmF5ICA9IDB4MDAwMDA0MDA7IC8vIEl0
J3MgZGVmaW5pdGVseSBhbiBVaW50MTZBcnJheSBvciBvbmUgb2YgaXRzIHN1YmNsYXNzZXMuCitz
dGF0aWMgY29uc3QgUHJlZGljdGVkVHlwZSBQcmVkaWN0RmxvYXQ2NEFycmF5ICA9IDB4MDAwMDA4
MDA7IC8vIEl0J3MgZGVmaW5pdGVseSBhbiBVaW50MTZBcnJheSBvciBvbmUgb2YgaXRzIHN1YmNs
YXNzZXMuCitzdGF0aWMgY29uc3QgUHJlZGljdGVkVHlwZSBQcmVkaWN0T2JqZWN0T3RoZXIgICA9
IDB4MDAwMDEwMDA7IC8vIEl0J3MgZGVmaW5pdGVseSBhbiBvYmplY3QgYnV0IG5vdCBKU0ZpbmFs
T2JqZWN0LCBKU0FycmF5LCBKU0J5dGVBcnJheSwgb3IgSlNGdW5jdGlvbi4KK3N0YXRpYyBjb25z
dCBQcmVkaWN0ZWRUeXBlIFByZWRpY3RPYmplY3RNYXNrICAgID0gMHgwMDAwMWZmZjsgLy8gQml0
bWFzayB1c2VkIGZvciB0ZXN0aW5nIGZvciBhbnkga2luZCBvZiBvYmplY3QgcHJlZGljdGlvbi4K
K3N0YXRpYyBjb25zdCBQcmVkaWN0ZWRUeXBlIFByZWRpY3RTdHJpbmcgICAgICAgID0gMHgwMDAw
MjAwMDsgLy8gSXQncyBkZWZpbml0ZWx5IGEgSlNTdHJpbmcuCitzdGF0aWMgY29uc3QgUHJlZGlj
dGVkVHlwZSBQcmVkaWN0Q2VsbE90aGVyICAgICA9IDB4MDAwMDQwMDA7IC8vIEl0J3MgZGVmaW5p
dGVseSBhIEpTQ2VsbCBidXQgbm90IGEgc3ViY2xhc3Mgb2YgSlNPYmplY3QgYW5kIGRlZmluaXRl
bHkgbm90IGEgSlNTdHJpbmcuCitzdGF0aWMgY29uc3QgUHJlZGljdGVkVHlwZSBQcmVkaWN0Q2Vs
bCAgICAgICAgICA9IDB4MDAwMDdmZmY7IC8vIEl0J3MgZGVmaW5pdGVseSBhIEpTQ2VsbC4KK3N0
YXRpYyBjb25zdCBQcmVkaWN0ZWRUeXBlIFByZWRpY3RJbnQzMiAgICAgICAgID0gMHgwMDAwODAw
MDsgLy8gSXQncyBkZWZpbml0ZWx5IGFuIEludDMyLgorc3RhdGljIGNvbnN0IFByZWRpY3RlZFR5
cGUgUHJlZGljdERvdWJsZSAgICAgICAgPSAweDAwMDEwMDAwOyAvLyBJdCdzIGRlZmluaXRlbHkg
YSBEb3VibGUuCitzdGF0aWMgY29uc3QgUHJlZGljdGVkVHlwZSBQcmVkaWN0TnVtYmVyICAgICAg
ICA9IDB4MDAwMTgwMDA7IC8vIEl0J3MgZWl0aGVyIGFuIEludDMyIG9yIGEgRG91YmxlLgorc3Rh
dGljIGNvbnN0IFByZWRpY3RlZFR5cGUgUHJlZGljdEJvb2xlYW4gICAgICAgPSAweDAwMDIwMDAw
OyAvLyBJdCdzIGRlZmluaXRlbHkgYSBCb29sZWFuLgorc3RhdGljIGNvbnN0IFByZWRpY3RlZFR5
cGUgUHJlZGljdE90aGVyICAgICAgICAgPSAweDQwMDAwMDAwOyAvLyBJdCdzIGRlZmluaXRlbHkg
bm9uZSBvZiB0aGUgYWJvdmUuCitzdGF0aWMgY29uc3QgUHJlZGljdGVkVHlwZSBQcmVkaWN0VG9w
ICAgICAgICAgICA9IDB4N2ZmZmZmZmY7IC8vIEl0IGNhbiBiZSBhbnkgb2YgdGhlIGFib3ZlLgog
CiB0eXBlZGVmIGJvb2wgKCpQcmVkaWN0aW9uQ2hlY2tlcikoUHJlZGljdGVkVHlwZSk7CiAKQEAg
LTk1LDYgKzEwMyw0NiBAQCBpbmxpbmUgYm9vbCBpc0J5dGVBcnJheVByZWRpY3Rpb24oUHJlZGlj
dGVkVHlwZSB2YWx1ZSkKICAgICByZXR1cm4gdmFsdWUgPT0gUHJlZGljdEJ5dGVBcnJheTsKIH0K
IAoraW5saW5lIGJvb2wgaXNJbnQ4QXJyYXlQcmVkaWN0aW9uKFByZWRpY3RlZFR5cGUgdmFsdWUp
Cit7CisgICAgcmV0dXJuIHZhbHVlID09IFByZWRpY3RJbnQ4QXJyYXk7Cit9CisKK2lubGluZSBi
b29sIGlzSW50MTZBcnJheVByZWRpY3Rpb24oUHJlZGljdGVkVHlwZSB2YWx1ZSkKK3sKKyAgICBy
ZXR1cm4gdmFsdWUgPT0gUHJlZGljdEludDE2QXJyYXk7Cit9CisKK2lubGluZSBib29sIGlzSW50
MzJBcnJheVByZWRpY3Rpb24oUHJlZGljdGVkVHlwZSB2YWx1ZSkKK3sKKyAgICByZXR1cm4gdmFs
dWUgPT0gUHJlZGljdEludDMyQXJyYXk7Cit9CisKK2lubGluZSBib29sIGlzVWludDhBcnJheVBy
ZWRpY3Rpb24oUHJlZGljdGVkVHlwZSB2YWx1ZSkKK3sKKyAgICByZXR1cm4gdmFsdWUgPT0gUHJl
ZGljdFVpbnQ4QXJyYXk7Cit9CisKK2lubGluZSBib29sIGlzVWludDE2QXJyYXlQcmVkaWN0aW9u
KFByZWRpY3RlZFR5cGUgdmFsdWUpCit7CisgICAgcmV0dXJuIHZhbHVlID09IFByZWRpY3RVaW50
MTZBcnJheTsKK30KKworaW5saW5lIGJvb2wgaXNVaW50MzJBcnJheVByZWRpY3Rpb24oUHJlZGlj
dGVkVHlwZSB2YWx1ZSkKK3sKKyAgICByZXR1cm4gdmFsdWUgPT0gUHJlZGljdFVpbnQzMkFycmF5
OworfQorCitpbmxpbmUgYm9vbCBpc0Zsb2F0MzJBcnJheVByZWRpY3Rpb24oUHJlZGljdGVkVHlw
ZSB2YWx1ZSkKK3sKKyAgICByZXR1cm4gdmFsdWUgPT0gUHJlZGljdEZsb2F0MzJBcnJheTsKK30K
KworaW5saW5lIGJvb2wgaXNGbG9hdDY0QXJyYXlQcmVkaWN0aW9uKFByZWRpY3RlZFR5cGUgdmFs
dWUpCit7CisgICAgcmV0dXJuIHZhbHVlID09IFByZWRpY3RGbG9hdDY0QXJyYXk7Cit9CisKIGlu
bGluZSBib29sIGlzQXJyYXlPck90aGVyUHJlZGljdGlvbihQcmVkaWN0ZWRUeXBlIHZhbHVlKQog
ewogICAgIHJldHVybiAhISh2YWx1ZSAmIChQcmVkaWN0QXJyYXkgfCBQcmVkaWN0T3RoZXIpKSAm
JiAhKHZhbHVlICYgfihQcmVkaWN0QXJyYXkgfCBQcmVkaWN0T3RoZXIpKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RTdGF0ZS5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0U3RhdGUuY3BwCmluZGV4IGY1MTZiZWU4N2M4
NmIxZTg0NmY0N2U4ZDhmMzAyNGVhYmY3M2EwNjkuLjQxNzYxMjkyZjUwNTFlYmZiOGI1MDFhOWM3
ODdkYzE2M2JkYmE2MzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
QWJzdHJhY3RTdGF0ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0
cmFjdFN0YXRlLmNwcApAQCAtMTEzLDYgKzExMywyMiBAQCB2b2lkIEFic3RyYWN0U3RhdGU6Omlu
aXRpYWxpemUoR3JhcGgmIGdyYXBoKQogICAgICAgICAgICAgcm9vdC0+dmFsdWVzQXRIZWFkLmFy
Z3VtZW50KGkpLnNldChQcmVkaWN0Qnl0ZUFycmF5KTsKICAgICAgICAgZWxzZSBpZiAoaXNCb29s
ZWFuUHJlZGljdGlvbihwcmVkaWN0aW9uKSkKICAgICAgICAgICAgIHJvb3QtPnZhbHVlc0F0SGVh
ZC5hcmd1bWVudChpKS5zZXQoUHJlZGljdEJvb2xlYW4pOworICAgICAgICBlbHNlIGlmIChpc0lu
dDhBcnJheVByZWRpY3Rpb24ocHJlZGljdGlvbikpCisgICAgICAgICAgICByb290LT52YWx1ZXNB
dEhlYWQuYXJndW1lbnQoaSkuc2V0KFByZWRpY3RJbnQ4QXJyYXkpOworICAgICAgICBlbHNlIGlm
IChpc0ludDE2QXJyYXlQcmVkaWN0aW9uKHByZWRpY3Rpb24pKQorICAgICAgICAgICAgcm9vdC0+
dmFsdWVzQXRIZWFkLmFyZ3VtZW50KGkpLnNldChQcmVkaWN0SW50MTZBcnJheSk7CisgICAgICAg
IGVsc2UgaWYgKGlzSW50MzJBcnJheVByZWRpY3Rpb24ocHJlZGljdGlvbikpCisgICAgICAgICAg
ICByb290LT52YWx1ZXNBdEhlYWQuYXJndW1lbnQoaSkuc2V0KFByZWRpY3RJbnQzMkFycmF5KTsK
KyAgICAgICAgZWxzZSBpZiAoaXNVaW50OEFycmF5UHJlZGljdGlvbihwcmVkaWN0aW9uKSkKKyAg
ICAgICAgICAgIHJvb3QtPnZhbHVlc0F0SGVhZC5hcmd1bWVudChpKS5zZXQoUHJlZGljdFVpbnQ4
QXJyYXkpOworICAgICAgICBlbHNlIGlmIChpc1VpbnQxNkFycmF5UHJlZGljdGlvbihwcmVkaWN0
aW9uKSkKKyAgICAgICAgICAgIHJvb3QtPnZhbHVlc0F0SGVhZC5hcmd1bWVudChpKS5zZXQoUHJl
ZGljdFVpbnQxNkFycmF5KTsKKyAgICAgICAgZWxzZSBpZiAoaXNVaW50MzJBcnJheVByZWRpY3Rp
b24ocHJlZGljdGlvbikpCisgICAgICAgICAgICByb290LT52YWx1ZXNBdEhlYWQuYXJndW1lbnQo
aSkuc2V0KFByZWRpY3RVaW50MzJBcnJheSk7CisgICAgICAgIGVsc2UgaWYgKGlzRmxvYXQzMkFy
cmF5UHJlZGljdGlvbihwcmVkaWN0aW9uKSkKKyAgICAgICAgICAgIHJvb3QtPnZhbHVlc0F0SGVh
ZC5hcmd1bWVudChpKS5zZXQoUHJlZGljdEZsb2F0MzJBcnJheSk7CisgICAgICAgIGVsc2UgaWYg
KGlzRmxvYXQ2NEFycmF5UHJlZGljdGlvbihwcmVkaWN0aW9uKSkKKyAgICAgICAgICAgIHJvb3Qt
PnZhbHVlc0F0SGVhZC5hcmd1bWVudChpKS5zZXQoUHJlZGljdEZsb2F0NjRBcnJheSk7CiAgICAg
ICAgIGVsc2UKICAgICAgICAgICAgIHJvb3QtPnZhbHVlc0F0SGVhZC5hcmd1bWVudChpKS5tYWtl
VG9wKCk7CiAgICAgfQpAQCAtMTk4LDYgKzIxNCwyMiBAQCBib29sIEFic3RyYWN0U3RhdGU6OmV4
ZWN1dGUoTm9kZUluZGV4IG5vZGVJbmRleCkKICAgICAgICAgICAgIGZvck5vZGUobm9kZS5jaGls
ZDEoKSkuZmlsdGVyKFByZWRpY3RBcnJheSk7CiAgICAgICAgIGVsc2UgaWYgKGlzQnl0ZUFycmF5
UHJlZGljdGlvbihwcmVkaWN0ZWRUeXBlKSkKICAgICAgICAgICAgIGZvck5vZGUobm9kZS5jaGls
ZDEoKSkuZmlsdGVyKFByZWRpY3RCeXRlQXJyYXkpOworICAgICAgICBlbHNlIGlmIChpc0ludDhB
cnJheVByZWRpY3Rpb24ocHJlZGljdGVkVHlwZSkpCisgICAgICAgICAgICBmb3JOb2RlKG5vZGUu
Y2hpbGQxKCkpLmZpbHRlcihQcmVkaWN0SW50OEFycmF5KTsKKyAgICAgICAgZWxzZSBpZiAoaXNJ
bnQxNkFycmF5UHJlZGljdGlvbihwcmVkaWN0ZWRUeXBlKSkKKyAgICAgICAgICAgIGZvck5vZGUo
bm9kZS5jaGlsZDEoKSkuZmlsdGVyKFByZWRpY3RJbnQxNkFycmF5KTsKKyAgICAgICAgZWxzZSBp
ZiAoaXNJbnQzMkFycmF5UHJlZGljdGlvbihwcmVkaWN0ZWRUeXBlKSkKKyAgICAgICAgICAgIGZv
ck5vZGUobm9kZS5jaGlsZDEoKSkuZmlsdGVyKFByZWRpY3RJbnQzMkFycmF5KTsKKyAgICAgICAg
ZWxzZSBpZiAoaXNVaW50OEFycmF5UHJlZGljdGlvbihwcmVkaWN0ZWRUeXBlKSkKKyAgICAgICAg
ICAgIGZvck5vZGUobm9kZS5jaGlsZDEoKSkuZmlsdGVyKFByZWRpY3RVaW50OEFycmF5KTsKKyAg
ICAgICAgZWxzZSBpZiAoaXNVaW50MTZBcnJheVByZWRpY3Rpb24ocHJlZGljdGVkVHlwZSkpCisg
ICAgICAgICAgICBmb3JOb2RlKG5vZGUuY2hpbGQxKCkpLmZpbHRlcihQcmVkaWN0VWludDE2QXJy
YXkpOworICAgICAgICBlbHNlIGlmIChpc1VpbnQzMkFycmF5UHJlZGljdGlvbihwcmVkaWN0ZWRU
eXBlKSkKKyAgICAgICAgICAgIGZvck5vZGUobm9kZS5jaGlsZDEoKSkuZmlsdGVyKFByZWRpY3RV
aW50MzJBcnJheSk7CisgICAgICAgIGVsc2UgaWYgKGlzRmxvYXQzMkFycmF5UHJlZGljdGlvbihw
cmVkaWN0ZWRUeXBlKSkKKyAgICAgICAgICAgIGZvck5vZGUobm9kZS5jaGlsZDEoKSkuZmlsdGVy
KFByZWRpY3RGbG9hdDMyQXJyYXkpOworICAgICAgICBlbHNlIGlmIChpc0Zsb2F0NjRBcnJheVBy
ZWRpY3Rpb24ocHJlZGljdGVkVHlwZSkpCisgICAgICAgICAgICBmb3JOb2RlKG5vZGUuY2hpbGQx
KCkpLmZpbHRlcihQcmVkaWN0RmxvYXQ2NEFycmF5KTsKICAgICAgICAgZWxzZSBpZiAoaXNCb29s
ZWFuUHJlZGljdGlvbihwcmVkaWN0ZWRUeXBlKSkKICAgICAgICAgICAgIGZvck5vZGUobm9kZS5j
aGlsZDEoKSkuZmlsdGVyKFByZWRpY3RCb29sZWFuKTsKICAgICAgICAgCkBAIC0zOTgsNiArNDMw
LDQzIEBAIGJvb2wgQWJzdHJhY3RTdGF0ZTo6ZXhlY3V0ZShOb2RlSW5kZXggbm9kZUluZGV4KQog
ICAgICAgICAgICAgZm9yTm9kZShub2RlSW5kZXgpLnNldChQcmVkaWN0SW50MzIpOwogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGlmIChtX2dyYXBoW25v
ZGUuY2hpbGQxKCldLnNob3VsZFNwZWN1bGF0ZUludDhBcnJheSgpKSB7CisgICAgICAgICAgICBm
b3JOb2RlKG5vZGUuY2hpbGQxKCkpLmZpbHRlcihQcmVkaWN0SW50OEFycmF5KTsKKyAgICAgICAg
ICAgIGZvck5vZGUobm9kZS5jaGlsZDIoKSkuZmlsdGVyKFByZWRpY3RJbnQzMik7CisgICAgICAg
ICAgICBmb3JOb2RlKG5vZGVJbmRleCkuc2V0KFByZWRpY3RJbnQzMik7CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgfQorICAgICAgICBpZiAobV9ncmFwaFtub2RlLmNoaWxkMSgpXS5zaG91
bGRTcGVjdWxhdGVJbnQxNkFycmF5KCkpIHsKKyAgICAgICAgICAgIGZvck5vZGUobm9kZS5jaGls
ZDEoKSkuZmlsdGVyKFByZWRpY3RJbnQxNkFycmF5KTsKKyAgICAgICAgICAgIGZvck5vZGUobm9k
ZS5jaGlsZDIoKSkuZmlsdGVyKFByZWRpY3RJbnQzMik7CisgICAgICAgICAgICBmb3JOb2RlKG5v
ZGVJbmRleCkuc2V0KFByZWRpY3RJbnQzMik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
fQorICAgICAgICBpZiAobV9ncmFwaFtub2RlLmNoaWxkMSgpXS5zaG91bGRTcGVjdWxhdGVJbnQz
MkFycmF5KCkpIHsKKyAgICAgICAgICAgIGZvck5vZGUobm9kZS5jaGlsZDEoKSkuZmlsdGVyKFBy
ZWRpY3RJbnQzMkFycmF5KTsKKyAgICAgICAgICAgIGZvck5vZGUobm9kZS5jaGlsZDIoKSkuZmls
dGVyKFByZWRpY3RJbnQzMik7CisgICAgICAgICAgICBmb3JOb2RlKG5vZGVJbmRleCkuc2V0KFBy
ZWRpY3RJbnQzMik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBpZiAo
bV9ncmFwaFtub2RlLmNoaWxkMSgpXS5zaG91bGRTcGVjdWxhdGVVaW50OEFycmF5KCkpIHsKKyAg
ICAgICAgICAgIGZvck5vZGUobm9kZS5jaGlsZDEoKSkuZmlsdGVyKFByZWRpY3RVaW50OEFycmF5
KTsKKyAgICAgICAgICAgIGZvck5vZGUobm9kZS5jaGlsZDIoKSkuZmlsdGVyKFByZWRpY3RJbnQz
Mik7CisgICAgICAgICAgICBmb3JOb2RlKG5vZGVJbmRleCkuc2V0KFByZWRpY3RJbnQzMik7Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBpZiAobV9ncmFwaFtub2RlLmNo
aWxkMSgpXS5zaG91bGRTcGVjdWxhdGVVaW50MTZBcnJheSgpKSB7CisgICAgICAgICAgICBmb3JO
b2RlKG5vZGUuY2hpbGQxKCkpLmZpbHRlcihQcmVkaWN0VWludDE2QXJyYXkpOworICAgICAgICAg
ICAgZm9yTm9kZShub2RlLmNoaWxkMigpKS5maWx0ZXIoUHJlZGljdEludDMyKTsKKyAgICAgICAg
ICAgIGZvck5vZGUobm9kZUluZGV4KS5zZXQoUHJlZGljdEludDMyKTsKKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICB9CisgICAgICAgIGlmIChtX2dyYXBoW25vZGUuY2hpbGQxKCldLnNob3Vs
ZFNwZWN1bGF0ZVVpbnQzMkFycmF5KCkpIHsKKyAgICAgICAgICAgIGZvck5vZGUobm9kZS5jaGls
ZDEoKSkuZmlsdGVyKFByZWRpY3RVaW50MzJBcnJheSk7CisgICAgICAgICAgICBmb3JOb2RlKG5v
ZGUuY2hpbGQyKCkpLmZpbHRlcihQcmVkaWN0SW50MzIpOworICAgICAgICAgICAgZm9yTm9kZShu
b2RlSW5kZXgpLnNldChQcmVkaWN0RG91YmxlKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICB9CiAgICAgICAgIGZvck5vZGUobm9kZS5jaGlsZDEoKSkuZmlsdGVyKFByZWRpY3RBcnJheSk7
CiAgICAgICAgIGZvck5vZGUobm9kZS5jaGlsZDIoKSkuZmlsdGVyKFByZWRpY3RJbnQzMik7CiAg
ICAgICAgIGZvck5vZGUobm9kZUluZGV4KS5tYWtlVG9wKCk7CkBAIC00MTgsNiArNDg3LDQ0IEBA
IGJvb2wgQWJzdHJhY3RTdGF0ZTo6ZXhlY3V0ZShOb2RlSW5kZXggbm9kZUluZGV4KQogICAgICAg
ICAgICAgZm9yTm9kZShub2RlLmNoaWxkMygpKS5maWx0ZXIoUHJlZGljdE51bWJlcik7CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgaWYgKG1fZ3JhcGhb
bm9kZS5jaGlsZDEoKV0uc2hvdWxkU3BlY3VsYXRlSW50OEFycmF5KCkpIHsKKyAgICAgICAgICAg
IGZvck5vZGUobm9kZS5jaGlsZDEoKSkuZmlsdGVyKFByZWRpY3RJbnQ4QXJyYXkpOworICAgICAg
ICAgICAgZm9yTm9kZShub2RlLmNoaWxkMigpKS5maWx0ZXIoUHJlZGljdEludDMyKTsKKyAgICAg
ICAgICAgIGZvck5vZGUobm9kZS5jaGlsZDMoKSkuZmlsdGVyKFByZWRpY3ROdW1iZXIpOworICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgaWYgKG1fZ3JhcGhbbm9kZS5jaGls
ZDEoKV0uc2hvdWxkU3BlY3VsYXRlSW50MTZBcnJheSgpKSB7CisgICAgICAgICAgICBmb3JOb2Rl
KG5vZGUuY2hpbGQxKCkpLmZpbHRlcihQcmVkaWN0SW50MTZBcnJheSk7CisgICAgICAgICAgICBm
b3JOb2RlKG5vZGUuY2hpbGQyKCkpLmZpbHRlcihQcmVkaWN0SW50MzIpOworICAgICAgICAgICAg
Zm9yTm9kZShub2RlLmNoaWxkMygpKS5maWx0ZXIoUHJlZGljdE51bWJlcik7CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBpZiAobV9ncmFwaFtub2RlLmNoaWxkMSgpXS5z
aG91bGRTcGVjdWxhdGVJbnQzMkFycmF5KCkpIHsKKyAgICAgICAgICAgIGZvck5vZGUobm9kZS5j
aGlsZDEoKSkuZmlsdGVyKFByZWRpY3RJbnQzMkFycmF5KTsKKyAgICAgICAgICAgIGZvck5vZGUo
bm9kZS5jaGlsZDIoKSkuZmlsdGVyKFByZWRpY3RJbnQzMik7CisgICAgICAgICAgICBmb3JOb2Rl
KG5vZGUuY2hpbGQzKCkpLmZpbHRlcihQcmVkaWN0TnVtYmVyKTsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICB9CisgICAgICAgIGlmIChtX2dyYXBoW25vZGUuY2hpbGQxKCldLnNob3VsZFNw
ZWN1bGF0ZVVpbnQ4QXJyYXkoKSkgeworICAgICAgICAgICAgZm9yTm9kZShub2RlLmNoaWxkMSgp
KS5maWx0ZXIoUHJlZGljdFVpbnQ4QXJyYXkpOworICAgICAgICAgICAgZm9yTm9kZShub2RlLmNo
aWxkMigpKS5maWx0ZXIoUHJlZGljdEludDMyKTsKKyAgICAgICAgICAgIGZvck5vZGUobm9kZS5j
aGlsZDMoKSkuZmlsdGVyKFByZWRpY3ROdW1iZXIpOworICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIH0KKyAgICAgICAgaWYgKG1fZ3JhcGhbbm9kZS5jaGlsZDEoKV0uc2hvdWxkU3BlY3VsYXRl
VWludDE2QXJyYXkoKSkgeworICAgICAgICAgICAgZm9yTm9kZShub2RlLmNoaWxkMSgpKS5maWx0
ZXIoUHJlZGljdFVpbnQxNkFycmF5KTsKKyAgICAgICAgICAgIGZvck5vZGUobm9kZS5jaGlsZDIo
KSkuZmlsdGVyKFByZWRpY3RJbnQzMik7CisgICAgICAgICAgICBmb3JOb2RlKG5vZGUuY2hpbGQz
KCkpLmZpbHRlcihQcmVkaWN0TnVtYmVyKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9
CisgICAgICAgIGlmIChtX2dyYXBoW25vZGUuY2hpbGQxKCldLnNob3VsZFNwZWN1bGF0ZVVpbnQz
MkFycmF5KCkpIHsKKyAgICAgICAgICAgIGZvck5vZGUobm9kZS5jaGlsZDEoKSkuZmlsdGVyKFBy
ZWRpY3RVaW50MzJBcnJheSk7CisgICAgICAgICAgICBmb3JOb2RlKG5vZGUuY2hpbGQyKCkpLmZp
bHRlcihQcmVkaWN0SW50MzIpOworICAgICAgICAgICAgZm9yTm9kZShub2RlLmNoaWxkMygpKS5m
aWx0ZXIoUHJlZGljdE51bWJlcik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAg
ICAgICAgICAgCiAgICAgICAgIGZvck5vZGUobm9kZS5jaGlsZDEoKSkuZmlsdGVyKFByZWRpY3RB
cnJheSk7CiAgICAgICAgIGZvck5vZGUobm9kZS5jaGlsZDIoKSkuZmlsdGVyKFByZWRpY3RJbnQz
Mik7CiAgICAgICAgIGJyZWFrOwpAQCAtNTgzLDYgKzY5MCwzOCBAQCBib29sIEFic3RyYWN0U3Rh
dGU6OmV4ZWN1dGUoTm9kZUluZGV4IG5vZGVJbmRleCkKICAgICAgICAgZm9yTm9kZShub2RlLmNo
aWxkMSgpKS5maWx0ZXIoUHJlZGljdEJ5dGVBcnJheSk7CiAgICAgICAgIGZvck5vZGUobm9kZUlu
ZGV4KS5zZXQoUHJlZGljdEludDMyKTsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBHZXRJbnQ4
QXJyYXlMZW5ndGg6CisgICAgICAgIGZvck5vZGUobm9kZS5jaGlsZDEoKSkuZmlsdGVyKFByZWRp
Y3RJbnQ4QXJyYXkpOworICAgICAgICBmb3JOb2RlKG5vZGVJbmRleCkuc2V0KFByZWRpY3RJbnQz
Mik7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgR2V0SW50MTZBcnJheUxlbmd0aDoKKyAgICAg
ICAgZm9yTm9kZShub2RlLmNoaWxkMSgpKS5maWx0ZXIoUHJlZGljdEludDE2QXJyYXkpOworICAg
ICAgICBmb3JOb2RlKG5vZGVJbmRleCkuc2V0KFByZWRpY3RJbnQzMik7CisgICAgICAgIGJyZWFr
OworICAgIGNhc2UgR2V0SW50MzJBcnJheUxlbmd0aDoKKyAgICAgICAgZm9yTm9kZShub2RlLmNo
aWxkMSgpKS5maWx0ZXIoUHJlZGljdEludDMyQXJyYXkpOworICAgICAgICBmb3JOb2RlKG5vZGVJ
bmRleCkuc2V0KFByZWRpY3RJbnQzMik7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgR2V0VWlu
dDhBcnJheUxlbmd0aDoKKyAgICAgICAgZm9yTm9kZShub2RlLmNoaWxkMSgpKS5maWx0ZXIoUHJl
ZGljdFVpbnQ4QXJyYXkpOworICAgICAgICBmb3JOb2RlKG5vZGVJbmRleCkuc2V0KFByZWRpY3RJ
bnQzMik7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgR2V0VWludDE2QXJyYXlMZW5ndGg6Cisg
ICAgICAgIGZvck5vZGUobm9kZS5jaGlsZDEoKSkuZmlsdGVyKFByZWRpY3RVaW50MTZBcnJheSk7
CisgICAgICAgIGZvck5vZGUobm9kZUluZGV4KS5zZXQoUHJlZGljdEludDMyKTsKKyAgICAgICAg
YnJlYWs7CisgICAgY2FzZSBHZXRVaW50MzJBcnJheUxlbmd0aDoKKyAgICAgICAgZm9yTm9kZShu
b2RlLmNoaWxkMSgpKS5maWx0ZXIoUHJlZGljdFVpbnQzMkFycmF5KTsKKyAgICAgICAgZm9yTm9k
ZShub2RlSW5kZXgpLnNldChQcmVkaWN0SW50MzIpOworICAgICAgICBicmVhazsKKyAgICBjYXNl
IEdldEZsb2F0MzJBcnJheUxlbmd0aDoKKyAgICAgICAgZm9yTm9kZShub2RlLmNoaWxkMSgpKS5m
aWx0ZXIoUHJlZGljdEZsb2F0MzJBcnJheSk7CisgICAgICAgIGZvck5vZGUobm9kZUluZGV4KS5z
ZXQoUHJlZGljdEludDMyKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBHZXRGbG9hdDY0QXJy
YXlMZW5ndGg6CisgICAgICAgIGZvck5vZGUobm9kZS5jaGlsZDEoKSkuZmlsdGVyKFByZWRpY3RG
bG9hdDY0QXJyYXkpOworICAgICAgICBmb3JOb2RlKG5vZGVJbmRleCkuc2V0KFByZWRpY3RJbnQz
Mik7CisgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgCiAgICAgY2FzZSBDaGVja1N0cnVjdHVy
ZToKICAgICAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBiZSBhYmxlIHRvIHByb3BhZ2F0ZSB0aGUg
c3RydWN0dXJlIHNldHMgb2YgY29uc3RhbnRzIChpLmUuIHByb3RvdHlwZXMpLgpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR05vZGUuaAppbmRleCBjODVkMDI2M2E0N2Y0MzkwYmI4Y2Y4ZjViYzExZjQx
ZWY0MTFiN2I2Li4xZDMzYjdiNzVkOTBlMzQ2ODViYTQyYTM2YjNlNGI0NzJmZmZkNzIyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaApAQCAtMjM4LDYgKzIzOCwxNCBAQCBzdGF0aWMg
aW5saW5lIGNvbnN0IGNoYXIqIGFyaXRoTm9kZUZsYWdzQXNTdHJpbmcoQXJpdGhOb2RlRmxhZ3Mg
ZmxhZ3MpCiAgICAgbWFjcm8oR2V0QXJyYXlMZW5ndGgsIE5vZGVSZXN1bHRJbnQzMikgXAogICAg
IG1hY3JvKEdldFN0cmluZ0xlbmd0aCwgTm9kZVJlc3VsdEludDMyKSBcCiAgICAgbWFjcm8oR2V0
Qnl0ZUFycmF5TGVuZ3RoLCBOb2RlUmVzdWx0SW50MzIpIFwKKyAgICBtYWNybyhHZXRJbnQ4QXJy
YXlMZW5ndGgsIE5vZGVSZXN1bHRJbnQzMikgXAorICAgIG1hY3JvKEdldEludDE2QXJyYXlMZW5n
dGgsIE5vZGVSZXN1bHRJbnQzMikgXAorICAgIG1hY3JvKEdldEludDMyQXJyYXlMZW5ndGgsIE5v
ZGVSZXN1bHRJbnQzMikgXAorICAgIG1hY3JvKEdldFVpbnQ4QXJyYXlMZW5ndGgsIE5vZGVSZXN1
bHRJbnQzMikgXAorICAgIG1hY3JvKEdldFVpbnQxNkFycmF5TGVuZ3RoLCBOb2RlUmVzdWx0SW50
MzIpIFwKKyAgICBtYWNybyhHZXRVaW50MzJBcnJheUxlbmd0aCwgTm9kZVJlc3VsdEludDMyKSBc
CisgICAgbWFjcm8oR2V0RmxvYXQzMkFycmF5TGVuZ3RoLCBOb2RlUmVzdWx0SW50MzIpIFwKKyAg
ICBtYWNybyhHZXRGbG9hdDY0QXJyYXlMZW5ndGgsIE5vZGVSZXN1bHRJbnQzMikgXAogICAgIG1h
Y3JvKEdldFNjb3BlQ2hhaW4sIE5vZGVSZXN1bHRKUykgXAogICAgIG1hY3JvKEdldFNjb3BlZFZh
ciwgTm9kZVJlc3VsdEpTIHwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKFB1dFNjb3Bl
ZFZhciwgTm9kZU11c3RHZW5lcmF0ZSB8IE5vZGVDbG9iYmVyc1dvcmxkKSBcCkBAIC05MTQsNiAr
OTIyLDQ2IEBAIHN0cnVjdCBOb2RlIHsKICAgICAgICAgcmV0dXJuICEhKHByZWRpY3Rpb24oKSAm
IFByZWRpY3RCeXRlQXJyYXkpOwogICAgIH0KICAgICAKKyAgICBib29sIHNob3VsZFNwZWN1bGF0
ZUludDhBcnJheSgpCisgICAgeworICAgICAgICByZXR1cm4gcHJlZGljdGlvbigpID09IFByZWRp
Y3RJbnQ4QXJyYXk7CisgICAgfQorICAgIAorICAgIGJvb2wgc2hvdWxkU3BlY3VsYXRlSW50MTZB
cnJheSgpCisgICAgeworICAgICAgICByZXR1cm4gcHJlZGljdGlvbigpID09IFByZWRpY3RJbnQx
NkFycmF5OworICAgIH0KKyAgICAKKyAgICBib29sIHNob3VsZFNwZWN1bGF0ZUludDMyQXJyYXko
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIHByZWRpY3Rpb24oKSA9PSBQcmVkaWN0SW50MzJBcnJh
eTsKKyAgICB9CisgICAgCisgICAgYm9vbCBzaG91bGRTcGVjdWxhdGVVaW50OEFycmF5KCkKKyAg
ICB7CisgICAgICAgIHJldHVybiBwcmVkaWN0aW9uKCkgPT0gUHJlZGljdFVpbnQ4QXJyYXk7Cisg
ICAgfQorICAgIAorICAgIGJvb2wgc2hvdWxkU3BlY3VsYXRlVWludDE2QXJyYXkoKQorICAgIHsK
KyAgICAgICAgcmV0dXJuIHByZWRpY3Rpb24oKSA9PSBQcmVkaWN0VWludDE2QXJyYXk7CisgICAg
fQorICAgIAorICAgIGJvb2wgc2hvdWxkU3BlY3VsYXRlVWludDMyQXJyYXkoKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIHByZWRpY3Rpb24oKSA9PSBQcmVkaWN0VWludDMyQXJyYXk7CisgICAgfQor
ICAgIAorICAgIGJvb2wgc2hvdWxkU3BlY3VsYXRlRmxvYXQzMkFycmF5KCkKKyAgICB7CisgICAg
ICAgIHJldHVybiBwcmVkaWN0aW9uKCkgPT0gUHJlZGljdEZsb2F0MzJBcnJheTsKKyAgICB9Cisg
ICAgCisgICAgYm9vbCBzaG91bGRTcGVjdWxhdGVGbG9hdDY0QXJyYXkoKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIHByZWRpY3Rpb24oKSA9PSBQcmVkaWN0RmxvYXQ2NEFycmF5OworICAgIH0KKyAg
ICAKICAgICBib29sIHNob3VsZFNwZWN1bGF0ZUFycmF5T3JPdGhlcigpCiAgICAgewogICAgICAg
ICByZXR1cm4gaXNBcnJheU9yT3RoZXJQcmVkaWN0aW9uKHByZWRpY3Rpb24oKSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Byb3BhZ2F0b3IuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcm9wYWdhdG9yLmNwcAppbmRleCAzM2MwZjc4MzNiMDFm
YzRmNzAxYmYxZWYyOWFhM2UyZGM0MTNkOTk3Li45Yjc5OTllYzZlMjY4MzVkZWM3ODlmMjA4MmYw
ZWRjMDdjZDNmZDgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1By
b3BhZ2F0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJvcGFnYXRv
ci5jcHAKQEAgLTQ1MCwxNCArNDUwLDI0IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgYm9v
bCBpc0FycmF5ID0gaXNBcnJheVByZWRpY3Rpb24obV9ncmFwaFtub2RlLmNoaWxkMSgpXS5wcmVk
aWN0aW9uKCkpOwogICAgICAgICAgICAgICAgIGJvb2wgaXNTdHJpbmcgPSBpc1N0cmluZ1ByZWRp
Y3Rpb24obV9ncmFwaFtub2RlLmNoaWxkMSgpXS5wcmVkaWN0aW9uKCkpOwogICAgICAgICAgICAg
ICAgIGJvb2wgaXNCeXRlQXJyYXkgPSBtX2dyYXBoW25vZGUuY2hpbGQxKCldLnNob3VsZFNwZWN1
bGF0ZUJ5dGVBcnJheSgpOwotICAgICAgICAgICAgICAgIGlmIChpc0FycmF5IHx8IGlzU3RyaW5n
IHx8IGlzQnl0ZUFycmF5KQorICAgICAgICAgICAgICAgIGJvb2wgaXNJbnQ4QXJyYXkgPSBtX2dy
YXBoW25vZGUuY2hpbGQxKCldLnNob3VsZFNwZWN1bGF0ZUludDhBcnJheSgpOworICAgICAgICAg
ICAgICAgIGJvb2wgaXNJbnQxNkFycmF5ID0gbV9ncmFwaFtub2RlLmNoaWxkMSgpXS5zaG91bGRT
cGVjdWxhdGVJbnQxNkFycmF5KCk7CisgICAgICAgICAgICAgICAgYm9vbCBpc0ludDMyQXJyYXkg
PSBtX2dyYXBoW25vZGUuY2hpbGQxKCldLnNob3VsZFNwZWN1bGF0ZUludDMyQXJyYXkoKTsKKyAg
ICAgICAgICAgICAgICBib29sIGlzVWludDhBcnJheSA9IG1fZ3JhcGhbbm9kZS5jaGlsZDEoKV0u
c2hvdWxkU3BlY3VsYXRlVWludDhBcnJheSgpOworICAgICAgICAgICAgICAgIGJvb2wgaXNVaW50
MTZBcnJheSA9IG1fZ3JhcGhbbm9kZS5jaGlsZDEoKV0uc2hvdWxkU3BlY3VsYXRlVWludDE2QXJy
YXkoKTsKKyAgICAgICAgICAgICAgICBib29sIGlzVWludDMyQXJyYXkgPSBtX2dyYXBoW25vZGUu
Y2hpbGQxKCldLnNob3VsZFNwZWN1bGF0ZVVpbnQzMkFycmF5KCk7CisgICAgICAgICAgICAgICAg
Ym9vbCBpc0Zsb2F0MzJBcnJheSA9IG1fZ3JhcGhbbm9kZS5jaGlsZDEoKV0uc2hvdWxkU3BlY3Vs
YXRlRmxvYXQzMkFycmF5KCk7CisgICAgICAgICAgICAgICAgYm9vbCBpc0Zsb2F0NjRBcnJheSA9
IG1fZ3JhcGhbbm9kZS5jaGlsZDEoKV0uc2hvdWxkU3BlY3VsYXRlRmxvYXQ2NEFycmF5KCk7Cisg
ICAgICAgICAgICAgICAgaWYgKGlzQXJyYXkgfHwgaXNTdHJpbmcgfHwgaXNCeXRlQXJyYXkgfHwg
aXNJbnQ4QXJyYXkgfHwgaXNJbnQxNkFycmF5IHx8IGlzSW50MzJBcnJheSB8fCBpc1VpbnQ4QXJy
YXkgfHwgaXNVaW50MTZBcnJheSB8fCBpc1VpbnQzMkFycmF5IHx8IGlzRmxvYXQzMkFycmF5IHx8
IGlzRmxvYXQ2NEFycmF5KQogICAgICAgICAgICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlUHJl
ZGljdGlvbihQcmVkaWN0SW50MzIpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIH0KICAgICAgICAgICAgIAogICAgICAgICBjYXNlIEdldEJ5VmFsOiB7Ci0gICAg
ICAgICAgICBpZiAobm9kZS5nZXRIZWFwUHJlZGljdGlvbigpKQorICAgICAgICAgICAgaWYgKG1f
Z3JhcGhbbm9kZS5jaGlsZDEoKV0uc2hvdWxkU3BlY3VsYXRlVWludDMyQXJyYXkoKSkKKyAgICAg
ICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlUHJlZGljdGlvbihQcmVkaWN0RG91YmxlKTsKKyAg
ICAgICAgICAgIGVsc2UgaWYgKG5vZGUuZ2V0SGVhcFByZWRpY3Rpb24oKSkKICAgICAgICAgICAg
ICAgICBjaGFuZ2VkIHw9IG1lcmdlUHJlZGljdGlvbihub2RlLmdldEhlYXBQcmVkaWN0aW9uKCkp
OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KQEAgLTU3MSw2ICs1ODEsMTQgQEAgcHJp
dmF0ZToKICAgICAgICAgY2FzZSBWYWx1ZVRvRG91YmxlOgogICAgICAgICBjYXNlIEdldEFycmF5
TGVuZ3RoOgogICAgICAgICBjYXNlIEdldEJ5dGVBcnJheUxlbmd0aDoKKyAgICAgICAgY2FzZSBH
ZXRJbnQ4QXJyYXlMZW5ndGg6CisgICAgICAgIGNhc2UgR2V0SW50MTZBcnJheUxlbmd0aDoKKyAg
ICAgICAgY2FzZSBHZXRJbnQzMkFycmF5TGVuZ3RoOgorICAgICAgICBjYXNlIEdldFVpbnQ4QXJy
YXlMZW5ndGg6CisgICAgICAgIGNhc2UgR2V0VWludDE2QXJyYXlMZW5ndGg6CisgICAgICAgIGNh
c2UgR2V0VWludDMyQXJyYXlMZW5ndGg6CisgICAgICAgIGNhc2UgR2V0RmxvYXQzMkFycmF5TGVu
Z3RoOgorICAgICAgICBjYXNlIEdldEZsb2F0NjRBcnJheUxlbmd0aDoKICAgICAgICAgY2FzZSBH
ZXRTdHJpbmdMZW5ndGg6IHsKICAgICAgICAgICAgIC8vIFRoaXMgbm9kZSBzaG91bGQgbmV2ZXIg
YmUgdmlzaWJsZSBhdCB0aGlzIHN0YWdlIG9mIGNvbXBpbGF0aW9uLiBJdCBpcwogICAgICAgICAg
ICAgLy8gaW5zZXJ0ZWQgYnkgZml4dXAoKSwgd2hpY2ggZm9sbG93cyB0aGlzIHBoYXNlLgpAQCAt
NzQ0LDE1ICs3NjIsMjMgQEAgcHJpdmF0ZToKICAgICAgICAgfQogICAgICAgICAgICAgCiAgICAg
ICAgIGNhc2UgR2V0QnlJZDogewotICAgICAgICAgICAgYm9vbCBpc0FycmF5ID0gaXNBcnJheVBy
ZWRpY3Rpb24obV9ncmFwaFtub2RlLmNoaWxkMSgpXS5wcmVkaWN0aW9uKCkpOwotICAgICAgICAg
ICAgYm9vbCBpc1N0cmluZyA9IGlzU3RyaW5nUHJlZGljdGlvbihtX2dyYXBoW25vZGUuY2hpbGQx
KCldLnByZWRpY3Rpb24oKSk7Ci0gICAgICAgICAgICBib29sIGlzQnl0ZUFycmF5ID0gbV9ncmFw
aFtub2RlLmNoaWxkMSgpXS5zaG91bGRTcGVjdWxhdGVCeXRlQXJyYXkoKTsKICAgICAgICAgICAg
IGlmICghaXNJbnQzMlByZWRpY3Rpb24obV9ncmFwaFttX2NvbXBpbGVJbmRleF0ucHJlZGljdGlv
bigpKSkKICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGlmICghaXNBcnJheSAm
JiAhaXNTdHJpbmcgJiYgIWlzQnl0ZUFycmF5KQotICAgICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICAgICAgaWYgKG1fY29kZUJsb2NrLT5pZGVudGlmaWVyKG5vZGUuaWRlbnRpZmllck51bWJl
cigpKSAhPSBtX2dsb2JhbERhdGEucHJvcGVydHlOYW1lcy0+bGVuZ3RoKQogICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgYm9vbCBpc0FycmF5ID0gaXNBcnJheVByZWRpY3Rpb24o
bV9ncmFwaFtub2RlLmNoaWxkMSgpXS5wcmVkaWN0aW9uKCkpOworICAgICAgICAgICAgYm9vbCBp
c1N0cmluZyA9IGlzU3RyaW5nUHJlZGljdGlvbihtX2dyYXBoW25vZGUuY2hpbGQxKCldLnByZWRp
Y3Rpb24oKSk7CisgICAgICAgICAgICBib29sIGlzQnl0ZUFycmF5ID0gbV9ncmFwaFtub2RlLmNo
aWxkMSgpXS5zaG91bGRTcGVjdWxhdGVCeXRlQXJyYXkoKTsKKyAgICAgICAgICAgIGJvb2wgaXNJ
bnQ4QXJyYXkgPSBtX2dyYXBoW25vZGUuY2hpbGQxKCldLnNob3VsZFNwZWN1bGF0ZUludDhBcnJh
eSgpOworICAgICAgICAgICAgYm9vbCBpc0ludDE2QXJyYXkgPSBtX2dyYXBoW25vZGUuY2hpbGQx
KCldLnNob3VsZFNwZWN1bGF0ZUludDE2QXJyYXkoKTsKKyAgICAgICAgICAgIGJvb2wgaXNJbnQz
MkFycmF5ID0gbV9ncmFwaFtub2RlLmNoaWxkMSgpXS5zaG91bGRTcGVjdWxhdGVJbnQzMkFycmF5
KCk7CisgICAgICAgICAgICBib29sIGlzVWludDhBcnJheSA9IG1fZ3JhcGhbbm9kZS5jaGlsZDEo
KV0uc2hvdWxkU3BlY3VsYXRlVWludDhBcnJheSgpOworICAgICAgICAgICAgYm9vbCBpc1VpbnQx
NkFycmF5ID0gbV9ncmFwaFtub2RlLmNoaWxkMSgpXS5zaG91bGRTcGVjdWxhdGVVaW50MTZBcnJh
eSgpOworICAgICAgICAgICAgYm9vbCBpc1VpbnQzMkFycmF5ID0gbV9ncmFwaFtub2RlLmNoaWxk
MSgpXS5zaG91bGRTcGVjdWxhdGVVaW50MzJBcnJheSgpOworICAgICAgICAgICAgYm9vbCBpc0Zs
b2F0MzJBcnJheSA9IG1fZ3JhcGhbbm9kZS5jaGlsZDEoKV0uc2hvdWxkU3BlY3VsYXRlRmxvYXQz
MkFycmF5KCk7CisgICAgICAgICAgICBib29sIGlzRmxvYXQ2NEFycmF5ID0gbV9ncmFwaFtub2Rl
LmNoaWxkMSgpXS5zaG91bGRTcGVjdWxhdGVGbG9hdDY0QXJyYXkoKTsKKyAgICAgICAgICAgIGlm
ICghaXNBcnJheSAmJiAhaXNTdHJpbmcgJiYgIWlzQnl0ZUFycmF5ICYmICFpc0ludDhBcnJheSAm
JiAhaXNJbnQxNkFycmF5ICYmICFpc0ludDMyQXJyYXkgJiYgIWlzVWludDhBcnJheSAmJiAhaXNV
aW50MTZBcnJheSAmJiAhaXNVaW50MzJBcnJheSAmJiAhaXNGbG9hdDMyQXJyYXkgJiYgIWlzRmxv
YXQ2NEFycmF5KQorICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgCiAjaWYgREZH
X0VOQUJMRShERUJVR19QUk9QQUdBVElPTl9WRVJCT1NFKQogICAgICAgICAgICAgcHJpbnRmKCIg
IEAldSAtPiAlcyIsIG1fY29tcGlsZUluZGV4LCBpc0FycmF5ID8gIkdldEFycmF5TGVuZ3RoIiA6
ICJHZXRTdHJpbmdMZW5ndGgiKTsKQEAgLTc2Myw2ICs3ODksMjIgQEAgcHJpdmF0ZToKICAgICAg
ICAgICAgICAgICBub2RlLm9wID0gR2V0U3RyaW5nTGVuZ3RoOwogICAgICAgICAgICAgZWxzZSBp
ZiAoaXNCeXRlQXJyYXkpCiAgICAgICAgICAgICAgICAgbm9kZS5vcCA9IEdldEJ5dGVBcnJheUxl
bmd0aDsKKyAgICAgICAgICAgIGVsc2UgaWYgKGlzSW50OEFycmF5KQorICAgICAgICAgICAgICAg
IG5vZGUub3AgPSBHZXRJbnQ4QXJyYXlMZW5ndGg7CisgICAgICAgICAgICBlbHNlIGlmIChpc0lu
dDE2QXJyYXkpCisgICAgICAgICAgICAgICAgbm9kZS5vcCA9IEdldEludDE2QXJyYXlMZW5ndGg7
CisgICAgICAgICAgICBlbHNlIGlmIChpc0ludDMyQXJyYXkpCisgICAgICAgICAgICAgICAgbm9k
ZS5vcCA9IEdldEludDMyQXJyYXlMZW5ndGg7CisgICAgICAgICAgICBlbHNlIGlmIChpc1VpbnQ4
QXJyYXkpCisgICAgICAgICAgICAgICAgbm9kZS5vcCA9IEdldFVpbnQ4QXJyYXlMZW5ndGg7Cisg
ICAgICAgICAgICBlbHNlIGlmIChpc1VpbnQxNkFycmF5KQorICAgICAgICAgICAgICAgIG5vZGUu
b3AgPSBHZXRVaW50MTZBcnJheUxlbmd0aDsKKyAgICAgICAgICAgIGVsc2UgaWYgKGlzVWludDMy
QXJyYXkpCisgICAgICAgICAgICAgICAgbm9kZS5vcCA9IEdldFVpbnQzMkFycmF5TGVuZ3RoOwor
ICAgICAgICAgICAgZWxzZSBpZiAoaXNGbG9hdDMyQXJyYXkpCisgICAgICAgICAgICAgICAgbm9k
ZS5vcCA9IEdldEZsb2F0MzJBcnJheUxlbmd0aDsKKyAgICAgICAgICAgIGVsc2UgaWYgKGlzRmxv
YXQ2NEFycmF5KQorICAgICAgICAgICAgICAgIG5vZGUub3AgPSBHZXRGbG9hdDY0QXJyYXlMZW5n
dGg7CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTEyOTMsNiArMTMzNSwxNCBAQCBwcml2YXRlOgog
ICAgICAgICBjYXNlIEFyaXRoTWF4OgogICAgICAgICBjYXNlIEFyaXRoU3FydDoKICAgICAgICAg
Y2FzZSBHZXRCeXRlQXJyYXlMZW5ndGg6CisgICAgICAgIGNhc2UgR2V0SW50OEFycmF5TGVuZ3Ro
OgorICAgICAgICBjYXNlIEdldEludDE2QXJyYXlMZW5ndGg6CisgICAgICAgIGNhc2UgR2V0SW50
MzJBcnJheUxlbmd0aDoKKyAgICAgICAgY2FzZSBHZXRVaW50OEFycmF5TGVuZ3RoOgorICAgICAg
ICBjYXNlIEdldFVpbnQxNkFycmF5TGVuZ3RoOgorICAgICAgICBjYXNlIEdldFVpbnQzMkFycmF5
TGVuZ3RoOgorICAgICAgICBjYXNlIEdldEZsb2F0MzJBcnJheUxlbmd0aDoKKyAgICAgICAgY2Fz
ZSBHZXRGbG9hdDY0QXJyYXlMZW5ndGg6CiAgICAgICAgIGNhc2UgR2V0Q2FsbGVlOgogICAgICAg
ICBjYXNlIEdldFN0cmluZ0xlbmd0aDoKICAgICAgICAgY2FzZSBTdHJpbmdDaGFyQXQ6CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCmluZGV4IDEz
Y2I2ZGFmOGFhY2Y1NDEzZGRlYWMyNTJmNjUyNTEyMzIzYzc2MmQuLjhmMjIzNjAyOTkzOGZiZjYy
YmI1NWFjNTFlZTU3M2MwMGI2Yjc5MWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCkBAIC0xMDcwLDYgKzEwNzAsNDYgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y2hlY2tBcmd1bWVudFR5cGVzKCkKICAgICAgICAgICAgIG1faml0LmxvYWRQ
dHIoSklUQ29tcGlsZXI6OmFkZHJlc3NGb3IodmlydHVhbFJlZ2lzdGVyKSwgdGVtcC5ncHIoKSk7
CiAgICAgICAgICAgICBtX2ppdC54b3JQdHIoVHJ1c3RlZEltbTMyKHN0YXRpY19jYXN0PGludDMy
X3Q+KFZhbHVlRmFsc2UpKSwgdGVtcC5ncHIoKSk7CiAgICAgICAgICAgICBzcGVjdWxhdGlvbkNo
ZWNrKEpTVmFsdWVSZWdzKCksIE5vTm9kZSwgbV9qaXQuYnJhbmNoVGVzdFB0cihNYWNyb0Fzc2Vt
Ymxlcjo6Tm9uWmVybywgdGVtcC5ncHIoKSwgVHJ1c3RlZEltbTMyKHN0YXRpY19jYXN0PGludDMy
X3Q+KH4xKSkpKTsKKyAgICAgICAgfSBlbHNlIGlmIChpc0ludDhBcnJheVByZWRpY3Rpb24ocHJl
ZGljdGVkVHlwZSkpIHsKKyAgICAgICAgICAgIEdQUlRlbXBvcmFyeSB0ZW1wKHRoaXMpOworICAg
ICAgICAgICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6YWRkcmVzc0Zvcih2aXJ0dWFsUmVn
aXN0ZXIpLCB0ZW1wLmdwcigpKTsKKyAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soSlNWYWx1
ZVJlZ3MoKSwgTm9Ob2RlLCBtX2ppdC5icmFuY2hUZXN0UHRyKE1hY3JvQXNzZW1ibGVyOjpOb25a
ZXJvLCB0ZW1wLmdwcigpLCBHUFJJbmZvOjp0YWdNYXNrUmVnaXN0ZXIpKTsKKyAgICAgICAgICAg
IHNwZWN1bGF0aW9uQ2hlY2soSlNWYWx1ZVJlZ3MoKSwgTm9Ob2RlLCBtX2ppdC5icmFuY2hQdHIo
TWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyh0ZW1wLmdw
cigpKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQuZ2xvYmFsRGF0YSgpLT5p
bnQ4QXJyYXlEZXNjcmlwdG9yKCkubV92cHRyKSkpOworICAgICAgICB9IGVsc2UgaWYgKGlzSW50
MTZBcnJheVByZWRpY3Rpb24ocHJlZGljdGVkVHlwZSkpIHsKKyAgICAgICAgICAgIEdQUlRlbXBv
cmFyeSB0ZW1wKHRoaXMpOworICAgICAgICAgICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6
YWRkcmVzc0Zvcih2aXJ0dWFsUmVnaXN0ZXIpLCB0ZW1wLmdwcigpKTsKKyAgICAgICAgICAgIHNw
ZWN1bGF0aW9uQ2hlY2soSlNWYWx1ZVJlZ3MoKSwgTm9Ob2RlLCBtX2ppdC5icmFuY2hUZXN0UHRy
KE1hY3JvQXNzZW1ibGVyOjpOb25aZXJvLCB0ZW1wLmdwcigpLCBHUFJJbmZvOjp0YWdNYXNrUmVn
aXN0ZXIpKTsKKyAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soSlNWYWx1ZVJlZ3MoKSwgTm9O
b2RlLCBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2Vt
Ymxlcjo6QWRkcmVzcyh0ZW1wLmdwcigpKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIo
bV9qaXQuZ2xvYmFsRGF0YSgpLT5pbnQxNkFycmF5RGVzY3JpcHRvcigpLm1fdnB0cikpKTsKKyAg
ICAgICAgfSBlbHNlIGlmIChpc0ludDMyQXJyYXlQcmVkaWN0aW9uKHByZWRpY3RlZFR5cGUpKSB7
CisgICAgICAgICAgICBHUFJUZW1wb3JhcnkgdGVtcCh0aGlzKTsKKyAgICAgICAgICAgIG1faml0
LmxvYWRQdHIoSklUQ29tcGlsZXI6OmFkZHJlc3NGb3IodmlydHVhbFJlZ2lzdGVyKSwgdGVtcC5n
cHIoKSk7CisgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEpTVmFsdWVSZWdzKCksIE5vTm9k
ZSwgbV9qaXQuYnJhbmNoVGVzdFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm9uWmVybywgdGVtcC5ncHIo
KSwgR1BSSW5mbzo6dGFnTWFza1JlZ2lzdGVyKSk7CisgICAgICAgICAgICBzcGVjdWxhdGlvbkNo
ZWNrKEpTVmFsdWVSZWdzKCksIE5vTm9kZSwgbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVy
OjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3ModGVtcC5ncHIoKSksIE1hY3JvQXNz
ZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1faml0Lmdsb2JhbERhdGEoKS0+aW50MzJBcnJheURlc2Ny
aXB0b3IoKS5tX3ZwdHIpKSk7CisgICAgICAgIH0gZWxzZSBpZiAoaXNVaW50OEFycmF5UHJlZGlj
dGlvbihwcmVkaWN0ZWRUeXBlKSkgeworICAgICAgICAgICAgR1BSVGVtcG9yYXJ5IHRlbXAodGhp
cyk7CisgICAgICAgICAgICBtX2ppdC5sb2FkUHRyKEpJVENvbXBpbGVyOjphZGRyZXNzRm9yKHZp
cnR1YWxSZWdpc3RlciksIHRlbXAuZ3ByKCkpOworICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVj
ayhKU1ZhbHVlUmVncygpLCBOb05vZGUsIG1faml0LmJyYW5jaFRlc3RQdHIoTWFjcm9Bc3NlbWJs
ZXI6Ok5vblplcm8sIHRlbXAuZ3ByKCksIEdQUkluZm86OnRhZ01hc2tSZWdpc3RlcikpOworICAg
ICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhKU1ZhbHVlUmVncygpLCBOb05vZGUsIG1faml0LmJy
YW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNz
KHRlbXAuZ3ByKCkpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC5nbG9iYWxE
YXRhKCktPnVpbnQ4QXJyYXlEZXNjcmlwdG9yKCkubV92cHRyKSkpOworICAgICAgICB9IGVsc2Ug
aWYgKGlzVWludDE2QXJyYXlQcmVkaWN0aW9uKHByZWRpY3RlZFR5cGUpKSB7CisgICAgICAgICAg
ICBHUFJUZW1wb3JhcnkgdGVtcCh0aGlzKTsKKyAgICAgICAgICAgIG1faml0LmxvYWRQdHIoSklU
Q29tcGlsZXI6OmFkZHJlc3NGb3IodmlydHVhbFJlZ2lzdGVyKSwgdGVtcC5ncHIoKSk7CisgICAg
ICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEpTVmFsdWVSZWdzKCksIE5vTm9kZSwgbV9qaXQuYnJh
bmNoVGVzdFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm9uWmVybywgdGVtcC5ncHIoKSwgR1BSSW5mbzo6
dGFnTWFza1JlZ2lzdGVyKSk7CisgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEpTVmFsdWVS
ZWdzKCksIE5vTm9kZSwgbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwg
TWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3ModGVtcC5ncHIoKSksIE1hY3JvQXNzZW1ibGVyOjpUcnVz
dGVkSW1tUHRyKG1faml0Lmdsb2JhbERhdGEoKS0+dWludDE2QXJyYXlEZXNjcmlwdG9yKCkubV92
cHRyKSkpOworICAgICAgICB9IGVsc2UgaWYgKGlzVWludDMyQXJyYXlQcmVkaWN0aW9uKHByZWRp
Y3RlZFR5cGUpKSB7CisgICAgICAgICAgICBHUFJUZW1wb3JhcnkgdGVtcCh0aGlzKTsKKyAgICAg
ICAgICAgIG1faml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OmFkZHJlc3NGb3IodmlydHVhbFJlZ2lz
dGVyKSwgdGVtcC5ncHIoKSk7CisgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEpTVmFsdWVS
ZWdzKCksIE5vTm9kZSwgbV9qaXQuYnJhbmNoVGVzdFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm9uWmVy
bywgdGVtcC5ncHIoKSwgR1BSSW5mbzo6dGFnTWFza1JlZ2lzdGVyKSk7CisgICAgICAgICAgICBz
cGVjdWxhdGlvbkNoZWNrKEpTVmFsdWVSZWdzKCksIE5vTm9kZSwgbV9qaXQuYnJhbmNoUHRyKE1h
Y3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3ModGVtcC5ncHIo
KSksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1faml0Lmdsb2JhbERhdGEoKS0+dWlu
dDMyQXJyYXlEZXNjcmlwdG9yKCkubV92cHRyKSkpOworICAgICAgICB9IGVsc2UgaWYgKGlzRmxv
YXQzMkFycmF5UHJlZGljdGlvbihwcmVkaWN0ZWRUeXBlKSkgeworICAgICAgICAgICAgR1BSVGVt
cG9yYXJ5IHRlbXAodGhpcyk7CisgICAgICAgICAgICBtX2ppdC5sb2FkUHRyKEpJVENvbXBpbGVy
OjphZGRyZXNzRm9yKHZpcnR1YWxSZWdpc3RlciksIHRlbXAuZ3ByKCkpOworICAgICAgICAgICAg
c3BlY3VsYXRpb25DaGVjayhKU1ZhbHVlUmVncygpLCBOb05vZGUsIG1faml0LmJyYW5jaFRlc3RQ
dHIoTWFjcm9Bc3NlbWJsZXI6Ok5vblplcm8sIHRlbXAuZ3ByKCksIEdQUkluZm86OnRhZ01hc2tS
ZWdpc3RlcikpOworICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhKU1ZhbHVlUmVncygpLCBO
b05vZGUsIG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNz
ZW1ibGVyOjpBZGRyZXNzKHRlbXAuZ3ByKCkpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0
cihtX2ppdC5nbG9iYWxEYXRhKCktPmZsb2F0MzJBcnJheURlc2NyaXB0b3IoKS5tX3ZwdHIpKSk7
CisgICAgICAgIH0gZWxzZSBpZiAoaXNGbG9hdDY0QXJyYXlQcmVkaWN0aW9uKHByZWRpY3RlZFR5
cGUpKSB7CisgICAgICAgICAgICBHUFJUZW1wb3JhcnkgdGVtcCh0aGlzKTsKKyAgICAgICAgICAg
IG1faml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OmFkZHJlc3NGb3IodmlydHVhbFJlZ2lzdGVyKSwg
dGVtcC5ncHIoKSk7CisgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEpTVmFsdWVSZWdzKCks
IE5vTm9kZSwgbV9qaXQuYnJhbmNoVGVzdFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm9uWmVybywgdGVt
cC5ncHIoKSwgR1BSSW5mbzo6dGFnTWFza1JlZ2lzdGVyKSk7CisgICAgICAgICAgICBzcGVjdWxh
dGlvbkNoZWNrKEpTVmFsdWVSZWdzKCksIE5vTm9kZSwgbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNz
ZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3ModGVtcC5ncHIoKSksIE1h
Y3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1faml0Lmdsb2JhbERhdGEoKS0+ZmxvYXQ2NEFy
cmF5RGVzY3JpcHRvcigpLm1fdnB0cikpKTsKICAgICAgICAgfQogI2Vsc2UKICAgICAgICAgaWYg
KGlzSW50MzJQcmVkaWN0aW9uKHByZWRpY3RlZFR5cGUpKQpAQCAtMTA4OCw2ICsxMTI4LDU1IEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNoZWNrQXJndW1lbnRUeXBlcygpCiAgICAgICAgICAgICBz
cGVjdWxhdGlvbkNoZWNrKEpTVmFsdWVSZWdzKCksIE5vTm9kZSwgbV9qaXQuYnJhbmNoUHRyKE1h
Y3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3ModGVtcC5ncHIo
KSksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1faml0Lmdsb2JhbERhdGEoKS0+anNC
eXRlQXJyYXlWUHRyKSkpOwogICAgICAgICB9IGVsc2UgaWYgKGlzQm9vbGVhblByZWRpY3Rpb24o
cHJlZGljdGVkVHlwZSkpCiAgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEpTVmFsdWVSZWdz
KCksIE5vTm9kZSwgbV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBKSVRD
b21waWxlcjo6dGFnRm9yKHZpcnR1YWxSZWdpc3RlciksIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpC
b29sZWFuVGFnKSkpOworICAgICAgICBlbHNlIGlmIChpc0ludDhBcnJheVByZWRpY3Rpb24ocHJl
ZGljdGVkVHlwZSkpIHsKKyAgICAgICAgICAgIEdQUlRlbXBvcmFyeSB0ZW1wKHRoaXMpOworICAg
ICAgICAgICAgbV9qaXQubG9hZDMyKEpJVENvbXBpbGVyOjp0YWdGb3IodmlydHVhbFJlZ2lzdGVy
KSwgdGVtcC5ncHIoKSk7CisgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEpTVmFsdWVSZWdz
KCksIE5vTm9kZSwgbV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCB0ZW1w
LmdwcigpLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Q2VsbFRhZykpKTsKKyAgICAgICAgICAgIG1f
aml0LmxvYWQzMihKSVRDb21waWxlcjo6cGF5bG9hZEZvcih2aXJ0dWFsUmVnaXN0ZXIpLCB0ZW1w
LmdwcigpKTsKKyAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soSlNWYWx1ZVJlZ3MoKSwgTm9O
b2RlLCBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2Vt
Ymxlcjo6QWRkcmVzcyh0ZW1wLmdwcigpKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIo
bV9qaXQuZ2xvYmFsRGF0YSgpLT5pbnQ4QXJyYXlEZXNjcmlwdG9yKCkubV92cHRyKSkpOworICAg
ICAgICB9IGVsc2UgaWYgKGlzSW50MTZBcnJheVByZWRpY3Rpb24ocHJlZGljdGVkVHlwZSkpIHsK
KyAgICAgICAgICAgIEdQUlRlbXBvcmFyeSB0ZW1wKHRoaXMpOworICAgICAgICAgICAgbV9qaXQu
bG9hZDMyKEpJVENvbXBpbGVyOjp0YWdGb3IodmlydHVhbFJlZ2lzdGVyKSwgdGVtcC5ncHIoKSk7
CisgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEpTVmFsdWVSZWdzKCksIE5vTm9kZSwgbV9q
aXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCB0ZW1wLmdwcigpLCBUcnVzdGVk
SW1tMzIoSlNWYWx1ZTo6Q2VsbFRhZykpKTsKKyAgICAgICAgICAgIG1faml0LmxvYWQzMihKSVRD
b21waWxlcjo6cGF5bG9hZEZvcih2aXJ0dWFsUmVnaXN0ZXIpLCB0ZW1wLmdwcigpKTsKKyAgICAg
ICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soSlNWYWx1ZVJlZ3MoKSwgTm9Ob2RlLCBtX2ppdC5icmFu
Y2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyh0
ZW1wLmdwcigpKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQuZ2xvYmFsRGF0
YSgpLT5pbnQxNkFycmF5RGVzY3JpcHRvcigpLm1fdnB0cikpKTsKKyAgICAgICAgfSBlbHNlIGlm
IChpc0ludDMyQXJyYXlQcmVkaWN0aW9uKHByZWRpY3RlZFR5cGUpKSB7CisgICAgICAgICAgICBH
UFJUZW1wb3JhcnkgdGVtcCh0aGlzKTsKKyAgICAgICAgICAgIG1faml0LmxvYWQzMihKSVRDb21w
aWxlcjo6dGFnRm9yKHZpcnR1YWxSZWdpc3RlciksIHRlbXAuZ3ByKCkpOworICAgICAgICAgICAg
c3BlY3VsYXRpb25DaGVjayhKU1ZhbHVlUmVncygpLCBOb05vZGUsIG1faml0LmJyYW5jaDMyKE1h
Y3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgdGVtcC5ncHIoKSwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6
OkNlbGxUYWcpKSk7CisgICAgICAgICAgICBtX2ppdC5sb2FkMzIoSklUQ29tcGlsZXI6OnBheWxv
YWRGb3IodmlydHVhbFJlZ2lzdGVyKSwgdGVtcC5ncHIoKSk7CisgICAgICAgICAgICBzcGVjdWxh
dGlvbkNoZWNrKEpTVmFsdWVSZWdzKCksIE5vTm9kZSwgbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNz
ZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3ModGVtcC5ncHIoKSksIE1h
Y3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1faml0Lmdsb2JhbERhdGEoKS0+aW50MzJBcnJh
eURlc2NyaXB0b3IoKS5tX3ZwdHIpKSk7CisgICAgICAgIH0gZWxzZSBpZiAoaXNVaW50OEFycmF5
UHJlZGljdGlvbihwcmVkaWN0ZWRUeXBlKSkgeworICAgICAgICAgICAgR1BSVGVtcG9yYXJ5IHRl
bXAodGhpcyk7CisgICAgICAgICAgICBtX2ppdC5sb2FkMzIoSklUQ29tcGlsZXI6OnRhZ0Zvcih2
aXJ0dWFsUmVnaXN0ZXIpLCB0ZW1wLmdwcigpKTsKKyAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hl
Y2soSlNWYWx1ZVJlZ3MoKSwgTm9Ob2RlLCBtX2ppdC5icmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6
Tm90RXF1YWwsIHRlbXAuZ3ByKCksIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpDZWxsVGFnKSkpOwor
ICAgICAgICAgICAgbV9qaXQubG9hZDMyKEpJVENvbXBpbGVyOjpwYXlsb2FkRm9yKHZpcnR1YWxS
ZWdpc3RlciksIHRlbXAuZ3ByKCkpOworICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhKU1Zh
bHVlUmVncygpLCBOb05vZGUsIG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1
YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHRlbXAuZ3ByKCkpLCBNYWNyb0Fzc2VtYmxlcjo6
VHJ1c3RlZEltbVB0cihtX2ppdC5nbG9iYWxEYXRhKCktPnVpbnQ4QXJyYXlEZXNjcmlwdG9yKCku
bV92cHRyKSkpOworICAgICAgICB9IGVsc2UgaWYgKGlzVWludDE2QXJyYXlQcmVkaWN0aW9uKHBy
ZWRpY3RlZFR5cGUpKSB7CisgICAgICAgICAgICBHUFJUZW1wb3JhcnkgdGVtcCh0aGlzKTsKKyAg
ICAgICAgICAgIG1faml0LmxvYWQzMihKSVRDb21waWxlcjo6dGFnRm9yKHZpcnR1YWxSZWdpc3Rl
ciksIHRlbXAuZ3ByKCkpOworICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhKU1ZhbHVlUmVn
cygpLCBOb05vZGUsIG1faml0LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgdGVt
cC5ncHIoKSwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkNlbGxUYWcpKSk7CisgICAgICAgICAgICBt
X2ppdC5sb2FkMzIoSklUQ29tcGlsZXI6OnBheWxvYWRGb3IodmlydHVhbFJlZ2lzdGVyKSwgdGVt
cC5ncHIoKSk7CisgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEpTVmFsdWVSZWdzKCksIE5v
Tm9kZSwgbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3Nl
bWJsZXI6OkFkZHJlc3ModGVtcC5ncHIoKSksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRy
KG1faml0Lmdsb2JhbERhdGEoKS0+dWludDE2QXJyYXlEZXNjcmlwdG9yKCkubV92cHRyKSkpOwor
ICAgICAgICB9ICBlbHNlIGlmIChpc1VpbnQzMkFycmF5UHJlZGljdGlvbihwcmVkaWN0ZWRUeXBl
KSkgeworICAgICAgICAgICAgR1BSVGVtcG9yYXJ5IHRlbXAodGhpcyk7CisgICAgICAgICAgICBt
X2ppdC5sb2FkMzIoSklUQ29tcGlsZXI6OnRhZ0Zvcih2aXJ0dWFsUmVnaXN0ZXIpLCB0ZW1wLmdw
cigpKTsKKyAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soSlNWYWx1ZVJlZ3MoKSwgTm9Ob2Rl
LCBtX2ppdC5icmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIHRlbXAuZ3ByKCksIFRy
dXN0ZWRJbW0zMihKU1ZhbHVlOjpDZWxsVGFnKSkpOworICAgICAgICAgICAgbV9qaXQubG9hZDMy
KEpJVENvbXBpbGVyOjpwYXlsb2FkRm9yKHZpcnR1YWxSZWdpc3RlciksIHRlbXAuZ3ByKCkpOwor
ICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhKU1ZhbHVlUmVncygpLCBOb05vZGUsIG1faml0
LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRy
ZXNzKHRlbXAuZ3ByKCkpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC5nbG9i
YWxEYXRhKCktPnVpbnQzMkFycmF5RGVzY3JpcHRvcigpLm1fdnB0cikpKTsKKyAgICAgICAgfSAg
ZWxzZSBpZiAoaXNGbG9hdDMyQXJyYXlQcmVkaWN0aW9uKHByZWRpY3RlZFR5cGUpKSB7CisgICAg
ICAgICAgICBHUFJUZW1wb3JhcnkgdGVtcCh0aGlzKTsKKyAgICAgICAgICAgIG1faml0LmxvYWQz
MihKSVRDb21waWxlcjo6dGFnRm9yKHZpcnR1YWxSZWdpc3RlciksIHRlbXAuZ3ByKCkpOworICAg
ICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhKU1ZhbHVlUmVncygpLCBOb05vZGUsIG1faml0LmJy
YW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgdGVtcC5ncHIoKSwgVHJ1c3RlZEltbTMy
KEpTVmFsdWU6OkNlbGxUYWcpKSk7CisgICAgICAgICAgICBtX2ppdC5sb2FkMzIoSklUQ29tcGls
ZXI6OnBheWxvYWRGb3IodmlydHVhbFJlZ2lzdGVyKSwgdGVtcC5ncHIoKSk7CisgICAgICAgICAg
ICBzcGVjdWxhdGlvbkNoZWNrKEpTVmFsdWVSZWdzKCksIE5vTm9kZSwgbV9qaXQuYnJhbmNoUHRy
KE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3ModGVtcC5n
cHIoKSksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1faml0Lmdsb2JhbERhdGEoKS0+
ZmxvYXQzMkFycmF5RGVzY3JpcHRvcigpLm1fdnB0cikpKTsKKyAgICAgICAgfSAgIGVsc2UgaWYg
KGlzRmxvYXQ2NEFycmF5UHJlZGljdGlvbihwcmVkaWN0ZWRUeXBlKSkgeworICAgICAgICAgICAg
R1BSVGVtcG9yYXJ5IHRlbXAodGhpcyk7CisgICAgICAgICAgICBtX2ppdC5sb2FkMzIoSklUQ29t
cGlsZXI6OnRhZ0Zvcih2aXJ0dWFsUmVnaXN0ZXIpLCB0ZW1wLmdwcigpKTsKKyAgICAgICAgICAg
IHNwZWN1bGF0aW9uQ2hlY2soSlNWYWx1ZVJlZ3MoKSwgTm9Ob2RlLCBtX2ppdC5icmFuY2gzMihN
YWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIHRlbXAuZ3ByKCksIFRydXN0ZWRJbW0zMihKU1ZhbHVl
OjpDZWxsVGFnKSkpOworICAgICAgICAgICAgbV9qaXQubG9hZDMyKEpJVENvbXBpbGVyOjpwYXls
b2FkRm9yKHZpcnR1YWxSZWdpc3RlciksIHRlbXAuZ3ByKCkpOworICAgICAgICAgICAgc3BlY3Vs
YXRpb25DaGVjayhKU1ZhbHVlUmVncygpLCBOb05vZGUsIG1faml0LmJyYW5jaFB0cihNYWNyb0Fz
c2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHRlbXAuZ3ByKCkpLCBN
YWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC5nbG9iYWxEYXRhKCktPmZsb2F0NjRB
cnJheURlc2NyaXB0b3IoKS5tX3ZwdHIpKSk7CisgICAgICAgIH0gCiAjZW5kaWYKICAgICB9CiB9
CkBAIC0xNDg0LDYgKzE1NzMsMTM5IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRC
eVZhbE9uQnl0ZUFycmF5KE5vZGUmIG5vZGUpCiAgICAgaW50ZWdlclJlc3VsdChzdG9yYWdlUmVn
LCBtX2NvbXBpbGVJbmRleCk7CiB9CiAKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRU
eXBlZEFycmF5TGVuZ3RoKGNvbnN0IFR5cGVkQXJyYXlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yLCBO
b2RlJiBub2RlLCBib29sIG5lZWRzU3BlY3VsYXRpb25DaGVjaykKK3sKKyAgICBTcGVjdWxhdGVD
ZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUuY2hpbGQxKCkpOworICAgIEdQUlRlbXBvcmFyeSBy
ZXN1bHQodGhpcyk7CisgICAgCisgICAgR1BSUmVnIGJhc2VHUFIgPSBiYXNlLmdwcigpOworICAg
IEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7CisgICAgCisgICAgaWYgKG5lZWRzU3Bl
Y3VsYXRpb25DaGVjaykKKyAgICAgICAgc3BlY3VsYXRpb25DaGVjayhKU1ZhbHVlU291cmNlOjp1
bmJveGVkQ2VsbChiYXNlR1BSKSwgbm9kZS5jaGlsZDEoKSwgbV9qaXQuYnJhbmNoUHRyKE1hY3Jv
QXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiksIE1h
Y3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKGRlc2NyaXB0b3IubV92cHRyKSkpOworICAgIAor
ICAgIG1faml0LmxvYWQzMihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBkZXNjcmlw
dG9yLm1fbGVuZ3RoT2Zmc2V0KSwgcmVzdWx0R1BSKTsKKyAgICAKKyAgICBpbnRlZ2VyUmVzdWx0
KHJlc3VsdEdQUiwgbV9jb21waWxlSW5kZXgpOworfQorCit2b2lkIFNwZWN1bGF0aXZlSklUOjpj
b21waWxlR2V0QnlWYWxPbkludFR5cGVkQXJyYXkoY29uc3QgVHlwZWRBcnJheURlc2NyaXB0b3Im
IGRlc2NyaXB0b3IsIE5vZGUmIG5vZGUsIHNpemVfdCBlbGVtZW50U2l6ZSwgVHlwZWRBcnJheVNw
ZWN1bGF0aW9uUmVxdWlyZW1lbnRzIHNwZWN1bGF0aW9uUmVxdWlyZW1lbnRzLCBUeXBlZEFycmF5
U2lnbmVkbmVzcyBzaWduZWRuZXNzKQoreworICAgIEFTU0VSVChub2RlLmNoaWxkMygpID09IE5v
Tm9kZSk7CisgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBub2RlLmNoaWxkMSgp
KTsKKyAgICBTcGVjdWxhdGVTdHJpY3RJbnQzMk9wZXJhbmQgcHJvcGVydHkodGhpcywgbm9kZS5j
aGlsZDIoKSk7CisgICAgR1BSUmVnIGJhc2VSZWcgPSBiYXNlLmdwcigpOworICAgIEdQUlJlZyBw
cm9wZXJ0eVJlZyA9IHByb3BlcnR5LmdwcigpOworICAgICAgICAKKyAgICBpZiAoc3BlY3VsYXRp
b25SZXF1aXJlbWVudHMgIT0gTm9UeXBlZEFycmF5VHlwZVNwZWNDaGVjaykKKyAgICAgICAgc3Bl
Y3VsYXRpb25DaGVjayhKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChiYXNlUmVnKSwgbm9kZS5j
aGlsZDEoKSwgbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9B
c3NlbWJsZXI6OkFkZHJlc3MoYmFzZVJlZyksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRy
KGRlc2NyaXB0b3IubV92cHRyKSkpOworICAgIAorICAgIC8vIExvYWQgdGhlIGNoYXJhY3RlciBp
bnRvIHNjcmF0Y2hSZWcKKyAgICBHUFJUZW1wb3Jhcnkgc3RvcmFnZSh0aGlzKTsKKyAgICBHUFJS
ZWcgc3RvcmFnZVJlZyA9IHN0b3JhZ2UuZ3ByKCk7CisgICAgbV9qaXQubG9hZFB0cihNYWNyb0Fz
c2VtYmxlcjo6QWRkcmVzcyhiYXNlUmVnLCBkZXNjcmlwdG9yLm1fc3RvcmFnZU9mZnNldCksIHN0
b3JhZ2VSZWcpOworICAgIAorICAgIEFTU0VSVChzcGVjdWxhdGlvblJlcXVpcmVtZW50cyAhPSBO
b1R5cGVkQXJyYXlTcGVjQ2hlY2spOworICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIGluQm91bmRz
ID0gbV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6OkJlbG93LCBwcm9wZXJ0eVJlZywgTWFj
cm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZVJlZywgZGVzY3JpcHRvci5tX2xlbmd0aE9mZnNldCkp
OworICAgIG1faml0LnhvclB0cihzdG9yYWdlUmVnLCBzdG9yYWdlUmVnKTsKKyAgICBNYWNyb0Fz
c2VtYmxlcjo6SnVtcCBvdXRPZkJvdW5kcyA9IG1faml0Lmp1bXAoKTsKKyAgICBpbkJvdW5kcy5s
aW5rKCZtX2ppdCk7CisgICAgc3dpdGNoIChlbGVtZW50U2l6ZSkgeworICAgIGNhc2UgMToKKyAg
ICAgICAgbV9qaXQubG9hZDgoTWFjcm9Bc3NlbWJsZXI6OkJhc2VJbmRleChzdG9yYWdlUmVnLCBw
cm9wZXJ0eVJlZywgTWFjcm9Bc3NlbWJsZXI6OlRpbWVzT25lKSwgc3RvcmFnZVJlZyk7CisgICAg
ICAgIGJyZWFrOworICAgIGNhc2UgMjoKKyAgICAgICAgbV9qaXQubG9hZDE2KE1hY3JvQXNzZW1i
bGVyOjpCYXNlSW5kZXgoc3RvcmFnZVJlZywgcHJvcGVydHlSZWcsIE1hY3JvQXNzZW1ibGVyOjpU
aW1lc1R3byksIHN0b3JhZ2VSZWcpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIDQ6CisgICAg
ICAgIG1faml0LmxvYWQzMihNYWNyb0Fzc2VtYmxlcjo6QmFzZUluZGV4KHN0b3JhZ2VSZWcsIHBy
b3BlcnR5UmVnLCBNYWNyb0Fzc2VtYmxlcjo6VGltZXNGb3VyKSwgc3RvcmFnZVJlZyk7CisgICAg
ICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwor
ICAgIH0KKyAgICBvdXRPZkJvdW5kcy5saW5rKCZtX2ppdCk7CisgICAgaWYgKGVsZW1lbnRTaXpl
IDwgNCB8fCBzaWduZWRuZXNzID09IFNpZ25lZFR5cGVkQXJyYXkpCisgICAgICAgIGludGVnZXJS
ZXN1bHQoc3RvcmFnZVJlZywgbV9jb21waWxlSW5kZXgpOworICAgIGVsc2UgeworICAgICAgICBG
UFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMpOworICAgICAgICBtX2ppdC5jb252ZXJ0SW50MzJUb0Rv
dWJsZShzdG9yYWdlUmVnLCByZXN1bHQuZnByKCkpOworICAgICAgICBKSVRDb21waWxlcjo6SnVt
cCBwb3NpdGl2ZSA9IG1faml0LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpHcmVhdGVyVGhhbk9y
RXF1YWwsIHN0b3JhZ2VSZWcsIFRydXN0ZWRJbW0zMigwKSk7CisgICAgICAgIG1faml0LmFkZERv
dWJsZShKSVRDb21waWxlcjo6QWJzb2x1dGVBZGRyZXNzKCZ0d29Ub1RoZTMyKSwgcmVzdWx0LmZw
cigpKTsKKyAgICAgICAgcG9zaXRpdmUubGluaygmbV9qaXQpOworICAgICAgICBkb3VibGVSZXN1
bHQocmVzdWx0LmZwcigpLCBtX2NvbXBpbGVJbmRleCk7CisgICAgfQorfQorCit2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlUHV0QnlWYWxGb3JJbnRUeXBlZEFycmF5KGNvbnN0IFR5cGVkQXJy
YXlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yLCBHUFJSZWcgYmFzZSwgR1BSUmVnIHByb3BlcnR5LCBO
b2RlJiBub2RlLCBzaXplX3QgZWxlbWVudFNpemUsIFR5cGVkQXJyYXlTcGVjdWxhdGlvblJlcXVp
cmVtZW50cyBzcGVjdWxhdGlvblJlcXVpcmVtZW50cywgVHlwZWRBcnJheVNpZ25lZG5lc3Mgc2ln
bmVkbmVzcykKK3sKKyAgICBOb2RlSW5kZXggYmFzZUluZGV4ID0gbm9kZS5jaGlsZDEoKTsKKyAg
ICBOb2RlSW5kZXggdmFsdWVJbmRleCA9IG5vZGUuY2hpbGQzKCk7CisgICAgCisgICAgaWYgKHNw
ZWN1bGF0aW9uUmVxdWlyZW1lbnRzICE9IE5vVHlwZWRBcnJheVR5cGVTcGVjQ2hlY2spCisgICAg
ICAgIHNwZWN1bGF0aW9uQ2hlY2soSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwoYmFzZSksIGJh
c2VJbmRleCwgbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9B
c3NlbWJsZXI6OkFkZHJlc3MoYmFzZSksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKGRl
c2NyaXB0b3IubV92cHRyKSkpOworICAgIEdQUlRlbXBvcmFyeSB2YWx1ZTsKKyAgICBHUFJSZWcg
dmFsdWVHUFI7CisgICAgCisgICAgaWYgKGF0KHZhbHVlSW5kZXgpLmlzQ29uc3RhbnQoKSkgewor
ICAgICAgICBKU1ZhbHVlIGpzVmFsdWUgPSB2YWx1ZU9mSlNDb25zdGFudCh2YWx1ZUluZGV4KTsK
KyAgICAgICAgaWYgKCFqc1ZhbHVlLmlzTnVtYmVyKCkpIHsKKyAgICAgICAgICAgIHRlcm1pbmF0
ZVNwZWN1bGF0aXZlRXhlY3V0aW9uKEpTVmFsdWVSZWdzKCksIE5vTm9kZSk7CisgICAgICAgICAg
ICBub1Jlc3VsdChtX2NvbXBpbGVJbmRleCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAg
IH0KKyAgICAgICAgZG91YmxlIGQgPSBqc1ZhbHVlLmFzTnVtYmVyKCk7CisgICAgICAgIEdQUlRl
bXBvcmFyeSBzY3JhdGNoKHRoaXMpOworICAgICAgICBHUFJSZWcgc2NyYXRjaFJlZyA9IHNjcmF0
Y2guZ3ByKCk7CisgICAgICAgIG1faml0Lm1vdmUoSW1tMzIoKGludClkKSwgc2NyYXRjaFJlZyk7
CisgICAgICAgIHZhbHVlLmFkb3B0KHNjcmF0Y2gpOworICAgICAgICB2YWx1ZUdQUiA9IHNjcmF0
Y2hSZWc7CisgICAgfSBlbHNlIGlmICghYXQodmFsdWVJbmRleCkuc2hvdWxkTm90U3BlY3VsYXRl
SW50ZWdlcigpKSB7CisgICAgICAgIFNwZWN1bGF0ZUludGVnZXJPcGVyYW5kIHZhbHVlT3AodGhp
cywgdmFsdWVJbmRleCk7CisgICAgICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNoKHRoaXMpOworICAg
ICAgICBHUFJSZWcgc2NyYXRjaFJlZyA9IHNjcmF0Y2guZ3ByKCk7CisgICAgICAgIG1faml0Lm1v
dmUodmFsdWVPcC5ncHIoKSwgc2NyYXRjaFJlZyk7CisgICAgICAgIHZhbHVlLmFkb3B0KHNjcmF0
Y2gpOworICAgICAgICB2YWx1ZUdQUiA9IHNjcmF0Y2hSZWc7CisgICAgfSBlbHNlIHsKKyAgICAg
ICAgU3BlY3VsYXRlRG91YmxlT3BlcmFuZCB2YWx1ZU9wKHRoaXMsIHZhbHVlSW5kZXgpOworICAg
ICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMpOworICAgICAgICBGUFJSZWcgZnByID0gdmFs
dWVPcC5mcHIoKTsKKyAgICAgICAgR1BSUmVnIGdwciA9IHJlc3VsdC5ncHIoKTsKKyAgICAgICAg
aWYgKHNpZ25lZG5lc3MgPT0gU2lnbmVkVHlwZWRBcnJheSkKKyAgICAgICAgICAgIG1faml0LnRy
dW5jYXRlRG91YmxlVG9JbnQzMihmcHIsIGdwcik7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAg
IG1faml0LnRydW5jYXRlRG91YmxlVG9VaW50MzIoZnByLCBncHIpOworICAgICAgICB2YWx1ZS5h
ZG9wdChyZXN1bHQpOworICAgICAgICB2YWx1ZUdQUiA9IGdwcjsKKyAgICB9CisgICAgQVNTRVJU
X1VOVVNFRCh2YWx1ZUdQUiwgdmFsdWVHUFIgIT0gcHJvcGVydHkpOworICAgIEFTU0VSVCh2YWx1
ZUdQUiAhPSBiYXNlKTsKKyAgICBHUFJUZW1wb3Jhcnkgc3RvcmFnZSh0aGlzKTsKKyAgICBHUFJS
ZWcgc3RvcmFnZVJlZyA9IHN0b3JhZ2UuZ3ByKCk7CisgICAgQVNTRVJUKHZhbHVlR1BSICE9IHN0
b3JhZ2VSZWcpOworICAgIG1faml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFz
ZSwgZGVzY3JpcHRvci5tX3N0b3JhZ2VPZmZzZXQpLCBzdG9yYWdlUmVnKTsKKyAgICBNYWNyb0Fz
c2VtYmxlcjo6SnVtcCBvdXRPZkJvdW5kczsKKyAgICBpZiAoc3BlY3VsYXRpb25SZXF1aXJlbWVu
dHMgIT0gTm9UeXBlZEFycmF5U3BlY0NoZWNrKQorICAgICAgICBvdXRPZkJvdW5kcyA9IG1faml0
LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpBYm92ZU9yRXF1YWwsIHByb3BlcnR5LCBNYWNyb0Fz
c2VtYmxlcjo6QWRkcmVzcyhiYXNlLCBkZXNjcmlwdG9yLm1fbGVuZ3RoT2Zmc2V0KSk7CisKKyAg
ICBzd2l0Y2ggKGVsZW1lbnRTaXplKSB7CisgICAgY2FzZSAxOgorICAgICAgICBtX2ppdC5zdG9y
ZTgodmFsdWUuZ3ByKCksIE1hY3JvQXNzZW1ibGVyOjpCYXNlSW5kZXgoc3RvcmFnZVJlZywgcHJv
cGVydHksIE1hY3JvQXNzZW1ibGVyOjpUaW1lc09uZSkpOworICAgICAgICBicmVhazsKKyAgICBj
YXNlIDI6CisgICAgICAgIG1faml0LnN0b3JlMTYodmFsdWUuZ3ByKCksIE1hY3JvQXNzZW1ibGVy
OjpCYXNlSW5kZXgoc3RvcmFnZVJlZywgcHJvcGVydHksIE1hY3JvQXNzZW1ibGVyOjpUaW1lc1R3
bykpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIDQ6CisgICAgICAgIG1faml0LnN0b3JlMzIo
dmFsdWUuZ3ByKCksIE1hY3JvQXNzZW1ibGVyOjpCYXNlSW5kZXgoc3RvcmFnZVJlZywgcHJvcGVy
dHksIE1hY3JvQXNzZW1ibGVyOjpUaW1lc0ZvdXIpKTsKKyAgICAgICAgYnJlYWs7CisgICAgZGVm
YXVsdDoKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQorICAgIGlmIChzcGVj
dWxhdGlvblJlcXVpcmVtZW50cyAhPSBOb1R5cGVkQXJyYXlTcGVjQ2hlY2spCisgICAgICAgIG91
dE9mQm91bmRzLmxpbmsoJm1faml0KTsKKyAgICBub1Jlc3VsdChtX2NvbXBpbGVJbmRleCk7Cit9
CisKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVJbnN0YW5jZU9mRm9yT2JqZWN0KE5vZGUm
LCBHUFJSZWcgdmFsdWVSZWcsIEdQUlJlZyBwcm90b3R5cGVSZWcsIEdQUlJlZyBzY3JhdGNoUmVn
KQogewogICAgIC8vIENoZWNrIHRoYXQgcHJvdG90eXBlIGlzIGFuIG9iamVjdC4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAppbmRleCBhZDliMGQ1NmZm
OGIxYjNkOGFiY2U0YzRlZDczNDgwYTNiZWRmMTRkLi5kOGFmZmIzZGZiNjNhN2UyNDY2NDY5YTkz
ZWYzZTI2MDkzMmZmYjg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklULmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVC5oCkBAIC0xOTUwLDcgKzE5NTAsMTkgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNv
bXBpbGVBcml0aE11bChOb2RlJik7CiAgICAgdm9pZCBjb21waWxlQXJpdGhNb2QoTm9kZSYpOwog
ICAgIHZvaWQgY29tcGlsZVNvZnRNb2R1bG8oTm9kZSYpOwotCisgICAgdm9pZCBjb21waWxlR2V0
VHlwZWRBcnJheUxlbmd0aChjb25zdCBUeXBlZEFycmF5RGVzY3JpcHRvciYsIE5vZGUmLCBib29s
IG5lZWRzU3BlY3VsYXRpb25DaGVjayk7CisgICAgZW51bSBUeXBlZEFycmF5U3BlY3VsYXRpb25S
ZXF1aXJlbWVudHMgeworICAgICAgICBOb1R5cGVkQXJyYXlTcGVjQ2hlY2ssCisgICAgICAgIE5v
VHlwZWRBcnJheVR5cGVTcGVjQ2hlY2ssCisgICAgICAgIEFsbFR5cGVkQXJyYXlTcGVjQ2hlY2tz
CisgICAgfTsKKyAgICBlbnVtIFR5cGVkQXJyYXlTaWduZWRuZXNzIHsKKyAgICAgICAgU2lnbmVk
VHlwZWRBcnJheSwKKyAgICAgICAgVW5zaWduZWRUeXBlZEFycmF5CisgICAgfTsKKyAgICB2b2lk
IGNvbXBpbGVHZXRCeVZhbE9uSW50VHlwZWRBcnJheShjb25zdCBUeXBlZEFycmF5RGVzY3JpcHRv
ciYsIE5vZGUmLCBzaXplX3QgZWxlbWVudFNpemUsIFR5cGVkQXJyYXlTcGVjdWxhdGlvblJlcXVp
cmVtZW50cywgVHlwZWRBcnJheVNpZ25lZG5lc3MpOworICAgIHZvaWQgY29tcGlsZVB1dEJ5VmFs
Rm9ySW50VHlwZWRBcnJheShjb25zdCBUeXBlZEFycmF5RGVzY3JpcHRvciYsIEdQUlJlZyBiYXNl
LCBHUFJSZWcgcHJvcGVydHksIE5vZGUmLCBzaXplX3QgZWxlbWVudFNpemUsIFR5cGVkQXJyYXlT
cGVjdWxhdGlvblJlcXVpcmVtZW50cywgVHlwZWRBcnJheVNpZ25lZG5lc3MpOworICAgIAogICAg
IC8vIEl0IGlzIGFjY2VwdGFibGUgdG8gaGF2ZSBzdHJ1Y3R1cmUgYmUgZXF1YWwgdG8gc2NyYXRj
aCwgc28gbG9uZyBhcyB5b3UncmUgZmluZQogICAgIC8vIHdpdGggdGhlIHN0cnVjdHVyZSBHUFIg
YmVpbmcgY2xvYmJlcmVkLgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAppbmRleCAz
OGU5YjFmZDg3NDZkMGU3MzM2OGQ2OWZkNTU1YWY2MGRmNGFjZGQ5Li5kOTEzNmE2MWY3YjlkMjgx
ODczYjQzZmFlOWM5ODVkNjZmMWNlNDAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKQEAgLTI2NTIsNiArMjY1Miw0OCBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUmIG5vZGUpCiAgICAgICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICAgICAgYnJlYWs7ICAgICAgICAgICAgCiAgICAgICAgIH0KKyAg
ICAgICAgCisgICAgICAgIGlmIChhdChub2RlLmNoaWxkMSgpKS5zaG91bGRTcGVjdWxhdGVJbnQ4
QXJyYXkoKSkgeworICAgICAgICAgICAgY29tcGlsZUdldEJ5VmFsT25JbnRUeXBlZEFycmF5KG1f
aml0Lmdsb2JhbERhdGEoKS0+aW50OEFycmF5RGVzY3JpcHRvcigpLCBub2RlLCBzaXplb2YoaW50
OF90KSwgaXNJbnQ4QXJyYXlQcmVkaWN0aW9uKG1fc3RhdGUuZm9yTm9kZShub2RlLmNoaWxkMSgp
KS5tX3R5cGUpID8gTm9UeXBlZEFycmF5VHlwZVNwZWNDaGVjayA6IEFsbFR5cGVkQXJyYXlTcGVj
Q2hlY2tzLCBTaWduZWRUeXBlZEFycmF5KTsKKyAgICAgICAgICAgIGlmICghbV9jb21waWxlT2th
eSkKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICBicmVhazsgICAgICAgICAg
ICAKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgaWYgKGF0KG5vZGUuY2hpbGQxKCkpLnNo
b3VsZFNwZWN1bGF0ZUludDE2QXJyYXkoKSkgeworICAgICAgICAgICAgY29tcGlsZUdldEJ5VmFs
T25JbnRUeXBlZEFycmF5KG1faml0Lmdsb2JhbERhdGEoKS0+aW50MTZBcnJheURlc2NyaXB0b3Io
KSwgbm9kZSwgc2l6ZW9mKGludDE2X3QpLCBpc0ludDE2QXJyYXlQcmVkaWN0aW9uKG1fc3RhdGUu
Zm9yTm9kZShub2RlLmNoaWxkMSgpKS5tX3R5cGUpID8gTm9UeXBlZEFycmF5VHlwZVNwZWNDaGVj
ayA6IEFsbFR5cGVkQXJyYXlTcGVjQ2hlY2tzLCBTaWduZWRUeXBlZEFycmF5KTsKKyAgICAgICAg
ICAgIGlmICghbV9jb21waWxlT2theSkKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAg
ICAgICBicmVhazsgICAgICAgICAgICAKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgaWYg
KGF0KG5vZGUuY2hpbGQxKCkpLnNob3VsZFNwZWN1bGF0ZUludDMyQXJyYXkoKSkgeworICAgICAg
ICAgICAgY29tcGlsZUdldEJ5VmFsT25JbnRUeXBlZEFycmF5KG1faml0Lmdsb2JhbERhdGEoKS0+
aW50MzJBcnJheURlc2NyaXB0b3IoKSwgbm9kZSwgc2l6ZW9mKGludDMyX3QpLCBpc0ludDMyQXJy
YXlQcmVkaWN0aW9uKG1fc3RhdGUuZm9yTm9kZShub2RlLmNoaWxkMSgpKS5tX3R5cGUpID8gTm9U
eXBlZEFycmF5VHlwZVNwZWNDaGVjayA6IEFsbFR5cGVkQXJyYXlTcGVjQ2hlY2tzLCBTaWduZWRU
eXBlZEFycmF5KTsKKyAgICAgICAgICAgIGlmICghbV9jb21waWxlT2theSkKKyAgICAgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgICAgICBicmVhazsgICAgICAgICAgICAKKyAgICAgICAgfQor
ICAgICAgICAKKyAgICAgICAgaWYgKGF0KG5vZGUuY2hpbGQxKCkpLnNob3VsZFNwZWN1bGF0ZVVp
bnQ4QXJyYXkoKSkgeworICAgICAgICAgICAgY29tcGlsZUdldEJ5VmFsT25JbnRUeXBlZEFycmF5
KG1faml0Lmdsb2JhbERhdGEoKS0+dWludDhBcnJheURlc2NyaXB0b3IoKSwgbm9kZSwgc2l6ZW9m
KHVpbnQ4X3QpLCBpc1VpbnQ4QXJyYXlQcmVkaWN0aW9uKG1fc3RhdGUuZm9yTm9kZShub2RlLmNo
aWxkMSgpKS5tX3R5cGUpID8gTm9UeXBlZEFycmF5VHlwZVNwZWNDaGVjayA6IEFsbFR5cGVkQXJy
YXlTcGVjQ2hlY2tzLCBVbnNpZ25lZFR5cGVkQXJyYXkpOworICAgICAgICAgICAgaWYgKCFtX2Nv
bXBpbGVPa2F5KQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIGJyZWFrOyAg
ICAgICAgICAgIAorICAgICAgICB9CisgICAgICAgIAorICAgICAgICBpZiAoYXQobm9kZS5jaGls
ZDEoKSkuc2hvdWxkU3BlY3VsYXRlVWludDE2QXJyYXkoKSkgeworICAgICAgICAgICAgY29tcGls
ZUdldEJ5VmFsT25JbnRUeXBlZEFycmF5KG1faml0Lmdsb2JhbERhdGEoKS0+dWludDE2QXJyYXlE
ZXNjcmlwdG9yKCksIG5vZGUsIHNpemVvZih1aW50MTZfdCksIGlzVWludDE2QXJyYXlQcmVkaWN0
aW9uKG1fc3RhdGUuZm9yTm9kZShub2RlLmNoaWxkMSgpKS5tX3R5cGUpID8gTm9UeXBlZEFycmF5
VHlwZVNwZWNDaGVjayA6IEFsbFR5cGVkQXJyYXlTcGVjQ2hlY2tzLCBVbnNpZ25lZFR5cGVkQXJy
YXkpOworICAgICAgICAgICAgaWYgKCFtX2NvbXBpbGVPa2F5KQorICAgICAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgICAgIGJyZWFrOyAgICAgICAgICAgIAorICAgICAgICB9CisgICAgICAg
IAorICAgICAgICBpZiAoYXQobm9kZS5jaGlsZDEoKSkuc2hvdWxkU3BlY3VsYXRlVWludDMyQXJy
YXkoKSkgeworICAgICAgICAgICAgY29tcGlsZUdldEJ5VmFsT25JbnRUeXBlZEFycmF5KG1faml0
Lmdsb2JhbERhdGEoKS0+dWludDMyQXJyYXlEZXNjcmlwdG9yKCksIG5vZGUsIHNpemVvZih1aW50
MzJfdCksIGlzVWludDMyQXJyYXlQcmVkaWN0aW9uKG1fc3RhdGUuZm9yTm9kZShub2RlLmNoaWxk
MSgpKS5tX3R5cGUpID8gTm9UeXBlZEFycmF5VHlwZVNwZWNDaGVjayA6IEFsbFR5cGVkQXJyYXlT
cGVjQ2hlY2tzLCBVbnNpZ25lZFR5cGVkQXJyYXkpOworICAgICAgICAgICAgaWYgKCFtX2NvbXBp
bGVPa2F5KQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIGJyZWFrOyAgICAg
ICAgICAgIAorICAgICAgICB9CiAKICAgICAgICAgQVNTRVJUKG5vZGUuY2hpbGQzKCkgPT0gTm9O
b2RlKTsKICAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBub2RlLmNoaWxk
MSgpKTsKQEAgLTI3MTIsNiArMjc1NCw1MiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxl
KE5vZGUmIG5vZGUpCiAgICAgICAgICAgICBjb21waWxlUHV0QnlWYWxGb3JCeXRlQXJyYXkoYmFz
ZS5ncHIoKSwgcHJvcGVydHkuZ3ByKCksIG5vZGUpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIH0KKyAgICAgICAgaWYgKGF0KG5vZGUuY2hpbGQxKCkpLnNob3VsZFNwZWN1bGF0ZUJ5dGVB
cnJheSgpKSB7CisgICAgICAgICAgICBjb21waWxlUHV0QnlWYWxGb3JCeXRlQXJyYXkoYmFzZS5n
cHIoKSwgcHJvcGVydHkuZ3ByKCksIG5vZGUpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IH0KKyAgICAgICAgCisgICAgICAgIGlmIChhdChub2RlLmNoaWxkMSgpKS5zaG91bGRTcGVjdWxh
dGVJbnQ4QXJyYXkoKSkgeworICAgICAgICAgICAgY29tcGlsZVB1dEJ5VmFsRm9ySW50VHlwZWRB
cnJheShtX2ppdC5nbG9iYWxEYXRhKCktPmludDhBcnJheURlc2NyaXB0b3IoKSwgYmFzZS5ncHIo
KSwgcHJvcGVydHkuZ3ByKCksIG5vZGUsIHNpemVvZihpbnQ4X3QpLCBpc0ludDhBcnJheVByZWRp
Y3Rpb24obV9zdGF0ZS5mb3JOb2RlKG5vZGUuY2hpbGQxKCkpLm1fdHlwZSkgPyBOb1R5cGVkQXJy
YXlUeXBlU3BlY0NoZWNrIDogQWxsVHlwZWRBcnJheVNwZWNDaGVja3MsIFNpZ25lZFR5cGVkQXJy
YXkpOworICAgICAgICAgICAgaWYgKCFtX2NvbXBpbGVPa2F5KQorICAgICAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgICAgIGJyZWFrOyAgICAgICAgICAgIAorICAgICAgICB9CisgICAgICAg
IAorICAgICAgICBpZiAoYXQobm9kZS5jaGlsZDEoKSkuc2hvdWxkU3BlY3VsYXRlSW50MTZBcnJh
eSgpKSB7CisgICAgICAgICAgICBjb21waWxlUHV0QnlWYWxGb3JJbnRUeXBlZEFycmF5KG1faml0
Lmdsb2JhbERhdGEoKS0+aW50MTZBcnJheURlc2NyaXB0b3IoKSwgYmFzZS5ncHIoKSwgcHJvcGVy
dHkuZ3ByKCksIG5vZGUsIHNpemVvZihpbnQxNl90KSwgaXNJbnQxNkFycmF5UHJlZGljdGlvbiht
X3N0YXRlLmZvck5vZGUobm9kZS5jaGlsZDEoKSkubV90eXBlKSA/IE5vVHlwZWRBcnJheVR5cGVT
cGVjQ2hlY2sgOiBBbGxUeXBlZEFycmF5U3BlY0NoZWNrcywgU2lnbmVkVHlwZWRBcnJheSk7Cisg
ICAgICAgICAgICBpZiAoIW1fY29tcGlsZU9rYXkpCisgICAgICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICAgICAgYnJlYWs7ICAgICAgICAgICAgCisgICAgICAgIH0KKyAgICAgICAgCisgICAg
ICAgIGlmIChhdChub2RlLmNoaWxkMSgpKS5zaG91bGRTcGVjdWxhdGVJbnQzMkFycmF5KCkpIHsK
KyAgICAgICAgICAgIGNvbXBpbGVQdXRCeVZhbEZvckludFR5cGVkQXJyYXkobV9qaXQuZ2xvYmFs
RGF0YSgpLT5pbnQzMkFycmF5RGVzY3JpcHRvcigpLCBiYXNlLmdwcigpLCBwcm9wZXJ0eS5ncHIo
KSwgbm9kZSwgc2l6ZW9mKGludDMyX3QpLCBpc0ludDMyQXJyYXlQcmVkaWN0aW9uKG1fc3RhdGUu
Zm9yTm9kZShub2RlLmNoaWxkMSgpKS5tX3R5cGUpID8gTm9UeXBlZEFycmF5VHlwZVNwZWNDaGVj
ayA6IEFsbFR5cGVkQXJyYXlTcGVjQ2hlY2tzLCBTaWduZWRUeXBlZEFycmF5KTsKKyAgICAgICAg
ICAgIGlmICghbV9jb21waWxlT2theSkKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAg
ICAgICBicmVhazsgICAgICAgICAgICAKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgaWYg
KGF0KG5vZGUuY2hpbGQxKCkpLnNob3VsZFNwZWN1bGF0ZVVpbnQ4QXJyYXkoKSkgeworICAgICAg
ICAgICAgY29tcGlsZVB1dEJ5VmFsRm9ySW50VHlwZWRBcnJheShtX2ppdC5nbG9iYWxEYXRhKCkt
PnVpbnQ4QXJyYXlEZXNjcmlwdG9yKCksIGJhc2UuZ3ByKCksIHByb3BlcnR5LmdwcigpLCBub2Rl
LCBzaXplb2YodWludDhfdCksIGlzVWludDhBcnJheVByZWRpY3Rpb24obV9zdGF0ZS5mb3JOb2Rl
KG5vZGUuY2hpbGQxKCkpLm1fdHlwZSkgPyBOb1R5cGVkQXJyYXlUeXBlU3BlY0NoZWNrIDogQWxs
VHlwZWRBcnJheVNwZWNDaGVja3MsIFVuc2lnbmVkVHlwZWRBcnJheSk7CisgICAgICAgICAgICBp
ZiAoIW1fY29tcGlsZU9rYXkpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAg
YnJlYWs7ICAgICAgICAgICAgCisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGlmIChhdChu
b2RlLmNoaWxkMSgpKS5zaG91bGRTcGVjdWxhdGVVaW50MTZBcnJheSgpKSB7CisgICAgICAgICAg
ICBjb21waWxlUHV0QnlWYWxGb3JJbnRUeXBlZEFycmF5KG1faml0Lmdsb2JhbERhdGEoKS0+dWlu
dDE2QXJyYXlEZXNjcmlwdG9yKCksIGJhc2UuZ3ByKCksIHByb3BlcnR5LmdwcigpLCBub2RlLCBz
aXplb2YodWludDE2X3QpLCBpc1VpbnQxNkFycmF5UHJlZGljdGlvbihtX3N0YXRlLmZvck5vZGUo
bm9kZS5jaGlsZDEoKSkubV90eXBlKSA/IE5vVHlwZWRBcnJheVR5cGVTcGVjQ2hlY2sgOiBBbGxU
eXBlZEFycmF5U3BlY0NoZWNrcywgVW5zaWduZWRUeXBlZEFycmF5KTsKKyAgICAgICAgICAgIGlm
ICghbV9jb21waWxlT2theSkKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICBi
cmVhazsgICAgICAgICAgICAKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgaWYgKGF0KG5v
ZGUuY2hpbGQxKCkpLnNob3VsZFNwZWN1bGF0ZVVpbnQzMkFycmF5KCkpIHsKKyAgICAgICAgICAg
IGNvbXBpbGVQdXRCeVZhbEZvckludFR5cGVkQXJyYXkobV9qaXQuZ2xvYmFsRGF0YSgpLT51aW50
MzJBcnJheURlc2NyaXB0b3IoKSwgYmFzZS5ncHIoKSwgcHJvcGVydHkuZ3ByKCksIG5vZGUsIHNp
emVvZih1aW50MzJfdCksIGlzVWludDMyQXJyYXlQcmVkaWN0aW9uKG1fc3RhdGUuZm9yTm9kZShu
b2RlLmNoaWxkMSgpKS5tX3R5cGUpID8gTm9UeXBlZEFycmF5VHlwZVNwZWNDaGVjayA6IEFsbFR5
cGVkQXJyYXlTcGVjQ2hlY2tzLCBVbnNpZ25lZFR5cGVkQXJyYXkpOworICAgICAgICAgICAgaWYg
KCFtX2NvbXBpbGVPa2F5KQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIGJy
ZWFrOyAgICAgICAgICAgIAorICAgICAgICB9CiAKICAgICAgICAgSlNWYWx1ZU9wZXJhbmQgdmFs
dWUodGhpcywgbm9kZS5jaGlsZDMoKSk7CiAgICAgICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNoKHRo
aXMpOwpAQCAtMjc4Miw2ICsyODcwLDQ4IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUo
Tm9kZSYgbm9kZSkKICAgICAgICAgICAgIGNvbXBpbGVQdXRCeVZhbEZvckJ5dGVBcnJheShiYXNl
LmdwcigpLCBwcm9wZXJ0eS5ncHIoKSwgbm9kZSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgfQorICAgICAgICAKKyAgICAgICAgaWYgKGF0KG5vZGUuY2hpbGQxKCkpLnNob3VsZFNwZWN1
bGF0ZUludDhBcnJheSgpKSB7CisgICAgICAgICAgICBjb21waWxlUHV0QnlWYWxGb3JJbnRUeXBl
ZEFycmF5KG1faml0Lmdsb2JhbERhdGEoKS0+aW50OEFycmF5RGVzY3JpcHRvcigpLCBiYXNlLmdw
cigpLCBwcm9wZXJ0eS5ncHIoKSwgbm9kZSwgc2l6ZW9mKGludDhfdCksIE5vVHlwZWRBcnJheVNw
ZWNDaGVjaywgU2lnbmVkVHlwZWRBcnJheSk7CisgICAgICAgICAgICBpZiAoIW1fY29tcGlsZU9r
YXkpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgYnJlYWs7ICAgICAgICAg
ICAgCisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGlmIChhdChub2RlLmNoaWxkMSgpKS5z
aG91bGRTcGVjdWxhdGVJbnQxNkFycmF5KCkpIHsKKyAgICAgICAgICAgIGNvbXBpbGVQdXRCeVZh
bEZvckludFR5cGVkQXJyYXkobV9qaXQuZ2xvYmFsRGF0YSgpLT5pbnQxNkFycmF5RGVzY3JpcHRv
cigpLCBiYXNlLmdwcigpLCBwcm9wZXJ0eS5ncHIoKSwgbm9kZSwgc2l6ZW9mKGludDE2X3QpLCBO
b1R5cGVkQXJyYXlTcGVjQ2hlY2ssIFNpZ25lZFR5cGVkQXJyYXkpOworICAgICAgICAgICAgaWYg
KCFtX2NvbXBpbGVPa2F5KQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIGJy
ZWFrOyAgICAgICAgICAgIAorICAgICAgICB9CisgICAgICAgIAorICAgICAgICBpZiAoYXQobm9k
ZS5jaGlsZDEoKSkuc2hvdWxkU3BlY3VsYXRlSW50MzJBcnJheSgpKSB7CisgICAgICAgICAgICBj
b21waWxlUHV0QnlWYWxGb3JJbnRUeXBlZEFycmF5KG1faml0Lmdsb2JhbERhdGEoKS0+aW50MzJB
cnJheURlc2NyaXB0b3IoKSwgYmFzZS5ncHIoKSwgcHJvcGVydHkuZ3ByKCksIG5vZGUsIHNpemVv
ZihpbnQzMl90KSwgTm9UeXBlZEFycmF5U3BlY0NoZWNrLCBTaWduZWRUeXBlZEFycmF5KTsKKyAg
ICAgICAgICAgIGlmICghbV9jb21waWxlT2theSkKKyAgICAgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgICAgICBicmVhazsgICAgICAgICAgICAKKyAgICAgICAgfQorICAgICAgICAKKyAgICAg
ICAgaWYgKGF0KG5vZGUuY2hpbGQxKCkpLnNob3VsZFNwZWN1bGF0ZVVpbnQ4QXJyYXkoKSkgewor
ICAgICAgICAgICAgY29tcGlsZVB1dEJ5VmFsRm9ySW50VHlwZWRBcnJheShtX2ppdC5nbG9iYWxE
YXRhKCktPnVpbnQ4QXJyYXlEZXNjcmlwdG9yKCksIGJhc2UuZ3ByKCksIHByb3BlcnR5Lmdwcigp
LCBub2RlLCBzaXplb2YodWludDhfdCksIE5vVHlwZWRBcnJheVNwZWNDaGVjaywgVW5zaWduZWRU
eXBlZEFycmF5KTsKKyAgICAgICAgICAgIGlmICghbV9jb21waWxlT2theSkKKyAgICAgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgICAgICBicmVhazsgICAgICAgICAgICAKKyAgICAgICAgfQor
ICAgICAgICAKKyAgICAgICAgaWYgKGF0KG5vZGUuY2hpbGQxKCkpLnNob3VsZFNwZWN1bGF0ZVVp
bnQxNkFycmF5KCkpIHsKKyAgICAgICAgICAgIGNvbXBpbGVQdXRCeVZhbEZvckludFR5cGVkQXJy
YXkobV9qaXQuZ2xvYmFsRGF0YSgpLT51aW50MTZBcnJheURlc2NyaXB0b3IoKSwgYmFzZS5ncHIo
KSwgcHJvcGVydHkuZ3ByKCksIG5vZGUsIHNpemVvZih1aW50MTZfdCksIE5vVHlwZWRBcnJheVNw
ZWNDaGVjaywgVW5zaWduZWRUeXBlZEFycmF5KTsKKyAgICAgICAgICAgIGlmICghbV9jb21waWxl
T2theSkKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICBicmVhazsgICAgICAg
ICAgICAKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgaWYgKGF0KG5vZGUuY2hpbGQxKCkp
LnNob3VsZFNwZWN1bGF0ZVVpbnQzMkFycmF5KCkpIHsKKyAgICAgICAgICAgIGNvbXBpbGVQdXRC
eVZhbEZvckludFR5cGVkQXJyYXkobV9qaXQuZ2xvYmFsRGF0YSgpLT51aW50MzJBcnJheURlc2Ny
aXB0b3IoKSwgYmFzZS5ncHIoKSwgcHJvcGVydHkuZ3ByKCksIG5vZGUsIHNpemVvZih1aW50MzJf
dCksIE5vVHlwZWRBcnJheVNwZWNDaGVjaywgVW5zaWduZWRUeXBlZEFycmF5KTsKKyAgICAgICAg
ICAgIGlmICghbV9jb21waWxlT2theSkKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAg
ICAgICBicmVhazsgICAgICAgICAgICAKKyAgICAgICAgfQogCiAgICAgICAgIEpTVmFsdWVPcGVy
YW5kIHZhbHVlKHRoaXMsIG5vZGUuY2hpbGQzKCkpOwogICAgICAgICBHUFJUZW1wb3Jhcnkgc2Ny
YXRjaCh0aGlzLCBiYXNlKTsKQEAgLTM0MDgsNiArMzUzOCwzOCBAQCB2b2lkIFNwZWN1bGF0aXZl
SklUOjpjb21waWxlKE5vZGUmIG5vZGUpCiAgICAgICAgIGludGVnZXJSZXN1bHQocmVzdWx0R1BS
LCBtX2NvbXBpbGVJbmRleCk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KKyAgICBjYXNlIEdldElu
dDhBcnJheUxlbmd0aDogeworICAgICAgICBjb21waWxlR2V0VHlwZWRBcnJheUxlbmd0aChtX2pp
dC5nbG9iYWxEYXRhKCktPmludDhBcnJheURlc2NyaXB0b3IoKSwgbm9kZSwgIWlzSW50OEFycmF5
UHJlZGljdGlvbihtX3N0YXRlLmZvck5vZGUobm9kZS5jaGlsZDEoKSkubV90eXBlKSk7CisgICAg
ICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIEdldEludDE2QXJyYXlMZW5ndGg6IHsKKyAgICAg
ICAgY29tcGlsZUdldFR5cGVkQXJyYXlMZW5ndGgobV9qaXQuZ2xvYmFsRGF0YSgpLT5pbnQxNkFy
cmF5RGVzY3JpcHRvcigpLCBub2RlLCAhaXNJbnQxNkFycmF5UHJlZGljdGlvbihtX3N0YXRlLmZv
ck5vZGUobm9kZS5jaGlsZDEoKSkubV90eXBlKSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAg
ICBjYXNlIEdldEludDMyQXJyYXlMZW5ndGg6IHsKKyAgICAgICAgY29tcGlsZUdldFR5cGVkQXJy
YXlMZW5ndGgobV9qaXQuZ2xvYmFsRGF0YSgpLT5pbnQzMkFycmF5RGVzY3JpcHRvcigpLCBub2Rl
LCAhaXNJbnQzMkFycmF5UHJlZGljdGlvbihtX3N0YXRlLmZvck5vZGUobm9kZS5jaGlsZDEoKSku
bV90eXBlKSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIEdldFVpbnQ4QXJyYXlM
ZW5ndGg6IHsKKyAgICAgICAgY29tcGlsZUdldFR5cGVkQXJyYXlMZW5ndGgobV9qaXQuZ2xvYmFs
RGF0YSgpLT51aW50OEFycmF5RGVzY3JpcHRvcigpLCBub2RlLCAhaXNVaW50OEFycmF5UHJlZGlj
dGlvbihtX3N0YXRlLmZvck5vZGUobm9kZS5jaGlsZDEoKSkubV90eXBlKSk7CisgICAgICAgIGJy
ZWFrOworICAgIH0KKyAgICBjYXNlIEdldFVpbnQxNkFycmF5TGVuZ3RoOiB7CisgICAgICAgIGNv
bXBpbGVHZXRUeXBlZEFycmF5TGVuZ3RoKG1faml0Lmdsb2JhbERhdGEoKS0+dWludDE2QXJyYXlE
ZXNjcmlwdG9yKCksIG5vZGUsICFpc1VpbnQxNkFycmF5UHJlZGljdGlvbihtX3N0YXRlLmZvck5v
ZGUobm9kZS5jaGlsZDEoKSkubV90eXBlKSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBj
YXNlIEdldFVpbnQzMkFycmF5TGVuZ3RoOiB7CisgICAgICAgIGNvbXBpbGVHZXRUeXBlZEFycmF5
TGVuZ3RoKG1faml0Lmdsb2JhbERhdGEoKS0+dWludDMyQXJyYXlEZXNjcmlwdG9yKCksIG5vZGUs
ICFpc1VpbnQzMkFycmF5UHJlZGljdGlvbihtX3N0YXRlLmZvck5vZGUobm9kZS5jaGlsZDEoKSku
bV90eXBlKSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIEdldEZsb2F0MzJBcnJh
eUxlbmd0aDogeworICAgICAgICBjb21waWxlR2V0VHlwZWRBcnJheUxlbmd0aChtX2ppdC5nbG9i
YWxEYXRhKCktPmZsb2F0MzJBcnJheURlc2NyaXB0b3IoKSwgbm9kZSwgIWlzRmxvYXQzMkFycmF5
UHJlZGljdGlvbihtX3N0YXRlLmZvck5vZGUobm9kZS5jaGlsZDEoKSkubV90eXBlKSk7CisgICAg
ICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIEdldEZsb2F0NjRBcnJheUxlbmd0aDogeworICAg
ICAgICBjb21waWxlR2V0VHlwZWRBcnJheUxlbmd0aChtX2ppdC5nbG9iYWxEYXRhKCktPmZsb2F0
NjRBcnJheURlc2NyaXB0b3IoKSwgbm9kZSwgIWlzRmxvYXQ2NEFycmF5UHJlZGljdGlvbihtX3N0
YXRlLmZvck5vZGUobm9kZS5jaGlsZDEoKSkubV90eXBlKSk7CisgICAgICAgIGJyZWFrOworICAg
IH0KIAogICAgIGNhc2UgQ2hlY2tGdW5jdGlvbjogewogICAgICAgICBTcGVjdWxhdGVDZWxsT3Bl
cmFuZCBmdW5jdGlvbih0aGlzLCBub2RlLmNoaWxkMSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCmluZGV4IDU3YTY2OTcwYTJiZGIz
OGVkZTMzYjdmODAyMjVjZmU4NDM4ZjM3YjMuLmM4NWRhMWIyNTcwZDIxOGZhYWEyZDljZjgxY2E3
M2FhYmQ4YjVlYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Bl
Y3VsYXRpdmVKSVQ2NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVDY0LmNwcApAQCAtMjYzNCw2ICsyNjM0LDQ4IEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGUoTm9kZSYgbm9kZSkKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
ICAgICBicmVhazsgICAgICAgICAgICAKICAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgaWYg
KGF0KG5vZGUuY2hpbGQxKCkpLnNob3VsZFNwZWN1bGF0ZUludDhBcnJheSgpKSB7CisgICAgICAg
ICAgICBjb21waWxlR2V0QnlWYWxPbkludFR5cGVkQXJyYXkobV9qaXQuZ2xvYmFsRGF0YSgpLT5p
bnQ4QXJyYXlEZXNjcmlwdG9yKCksIG5vZGUsIHNpemVvZihpbnQ4X3QpLCBpc0ludDhBcnJheVBy
ZWRpY3Rpb24obV9zdGF0ZS5mb3JOb2RlKG5vZGUuY2hpbGQxKCkpLm1fdHlwZSkgPyBOb1R5cGVk
QXJyYXlUeXBlU3BlY0NoZWNrIDogQWxsVHlwZWRBcnJheVNwZWNDaGVja3MsIFNpZ25lZFR5cGVk
QXJyYXkpOworICAgICAgICAgICAgaWYgKCFtX2NvbXBpbGVPa2F5KQorICAgICAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgICAgIGJyZWFrOyAgICAgICAgICAgIAorICAgICAgICB9CisgICAg
ICAgIAorICAgICAgICBpZiAoYXQobm9kZS5jaGlsZDEoKSkuc2hvdWxkU3BlY3VsYXRlSW50MTZB
cnJheSgpKSB7CisgICAgICAgICAgICBjb21waWxlR2V0QnlWYWxPbkludFR5cGVkQXJyYXkobV9q
aXQuZ2xvYmFsRGF0YSgpLT5pbnQxNkFycmF5RGVzY3JpcHRvcigpLCBub2RlLCBzaXplb2YoaW50
MTZfdCksIGlzSW50MTZBcnJheVByZWRpY3Rpb24obV9zdGF0ZS5mb3JOb2RlKG5vZGUuY2hpbGQx
KCkpLm1fdHlwZSkgPyBOb1R5cGVkQXJyYXlUeXBlU3BlY0NoZWNrIDogQWxsVHlwZWRBcnJheVNw
ZWNDaGVja3MsIFNpZ25lZFR5cGVkQXJyYXkpOworICAgICAgICAgICAgaWYgKCFtX2NvbXBpbGVP
a2F5KQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIGJyZWFrOyAgICAgICAg
ICAgIAorICAgICAgICB9CisgICAgICAgIAorICAgICAgICBpZiAoYXQobm9kZS5jaGlsZDEoKSku
c2hvdWxkU3BlY3VsYXRlSW50MzJBcnJheSgpKSB7CisgICAgICAgICAgICBjb21waWxlR2V0QnlW
YWxPbkludFR5cGVkQXJyYXkobV9qaXQuZ2xvYmFsRGF0YSgpLT5pbnQzMkFycmF5RGVzY3JpcHRv
cigpLCBub2RlLCBzaXplb2YoaW50MzJfdCksIGlzSW50MzJBcnJheVByZWRpY3Rpb24obV9zdGF0
ZS5mb3JOb2RlKG5vZGUuY2hpbGQxKCkpLm1fdHlwZSkgPyBOb1R5cGVkQXJyYXlUeXBlU3BlY0No
ZWNrIDogQWxsVHlwZWRBcnJheVNwZWNDaGVja3MsIFNpZ25lZFR5cGVkQXJyYXkpOworICAgICAg
ICAgICAgaWYgKCFtX2NvbXBpbGVPa2F5KQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgICAgIGJyZWFrOyAgICAgICAgICAgIAorICAgICAgICB9CisKKyAgICAgICAgaWYgKGF0KG5v
ZGUuY2hpbGQxKCkpLnNob3VsZFNwZWN1bGF0ZVVpbnQ4QXJyYXkoKSkgeworICAgICAgICAgICAg
Y29tcGlsZUdldEJ5VmFsT25JbnRUeXBlZEFycmF5KG1faml0Lmdsb2JhbERhdGEoKS0+dWludDhB
cnJheURlc2NyaXB0b3IoKSwgbm9kZSwgc2l6ZW9mKHVpbnQ4X3QpLCBpc1VpbnQ4QXJyYXlQcmVk
aWN0aW9uKG1fc3RhdGUuZm9yTm9kZShub2RlLmNoaWxkMSgpKS5tX3R5cGUpID8gTm9UeXBlZEFy
cmF5VHlwZVNwZWNDaGVjayA6IEFsbFR5cGVkQXJyYXlTcGVjQ2hlY2tzLCBVbnNpZ25lZFR5cGVk
QXJyYXkpOworICAgICAgICAgICAgaWYgKCFtX2NvbXBpbGVPa2F5KQorICAgICAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgICAgIGJyZWFrOyAgICAgICAgICAgIAorICAgICAgICB9CisgICAg
ICAgIAorICAgICAgICBpZiAoYXQobm9kZS5jaGlsZDEoKSkuc2hvdWxkU3BlY3VsYXRlVWludDE2
QXJyYXkoKSkgeworICAgICAgICAgICAgY29tcGlsZUdldEJ5VmFsT25JbnRUeXBlZEFycmF5KG1f
aml0Lmdsb2JhbERhdGEoKS0+dWludDE2QXJyYXlEZXNjcmlwdG9yKCksIG5vZGUsIHNpemVvZih1
aW50MTZfdCksIGlzVWludDE2QXJyYXlQcmVkaWN0aW9uKG1fc3RhdGUuZm9yTm9kZShub2RlLmNo
aWxkMSgpKS5tX3R5cGUpID8gTm9UeXBlZEFycmF5VHlwZVNwZWNDaGVjayA6IEFsbFR5cGVkQXJy
YXlTcGVjQ2hlY2tzLCBVbnNpZ25lZFR5cGVkQXJyYXkpOworICAgICAgICAgICAgaWYgKCFtX2Nv
bXBpbGVPa2F5KQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIGJyZWFrOyAg
ICAgICAgICAgIAorICAgICAgICB9CisgICAgICAgIAorICAgICAgICBpZiAoYXQobm9kZS5jaGls
ZDEoKSkuc2hvdWxkU3BlY3VsYXRlVWludDMyQXJyYXkoKSkgeworICAgICAgICAgICAgY29tcGls
ZUdldEJ5VmFsT25JbnRUeXBlZEFycmF5KG1faml0Lmdsb2JhbERhdGEoKS0+dWludDMyQXJyYXlE
ZXNjcmlwdG9yKCksIG5vZGUsIHNpemVvZih1aW50MzJfdCksIGlzVWludDMyQXJyYXlQcmVkaWN0
aW9uKG1fc3RhdGUuZm9yTm9kZShub2RlLmNoaWxkMSgpKS5tX3R5cGUpID8gTm9UeXBlZEFycmF5
VHlwZVNwZWNDaGVjayA6IEFsbFR5cGVkQXJyYXlTcGVjQ2hlY2tzLCBVbnNpZ25lZFR5cGVkQXJy
YXkpOworICAgICAgICAgICAgaWYgKCFtX2NvbXBpbGVPa2F5KQorICAgICAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgICAgIGJyZWFrOyAgICAgICAgICAgIAorICAgICAgICB9CiAKICAgICAg
ICAgQVNTRVJUKG5vZGUuY2hpbGQzKCkgPT0gTm9Ob2RlKTsKICAgICAgICAgU3BlY3VsYXRlQ2Vs
bE9wZXJhbmQgYmFzZSh0aGlzLCBub2RlLmNoaWxkMSgpKTsKQEAgLTI2OTEsNiArMjczMyw0OCBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUmIG5vZGUpCiAgICAgICAgICAgICBj
b21waWxlUHV0QnlWYWxGb3JCeXRlQXJyYXkoYmFzZS5ncHIoKSwgcHJvcGVydHkuZ3ByKCksIG5v
ZGUpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGlm
IChhdChub2RlLmNoaWxkMSgpKS5zaG91bGRTcGVjdWxhdGVJbnQ4QXJyYXkoKSkgeworICAgICAg
ICAgICAgY29tcGlsZVB1dEJ5VmFsRm9ySW50VHlwZWRBcnJheShtX2ppdC5nbG9iYWxEYXRhKCkt
PmludDhBcnJheURlc2NyaXB0b3IoKSwgYmFzZS5ncHIoKSwgcHJvcGVydHkuZ3ByKCksIG5vZGUs
IHNpemVvZihpbnQ4X3QpLCBpc0ludDhBcnJheVByZWRpY3Rpb24obV9zdGF0ZS5mb3JOb2RlKG5v
ZGUuY2hpbGQxKCkpLm1fdHlwZSkgPyBOb1R5cGVkQXJyYXlUeXBlU3BlY0NoZWNrIDogQWxsVHlw
ZWRBcnJheVNwZWNDaGVja3MsIFNpZ25lZFR5cGVkQXJyYXkpOworICAgICAgICAgICAgaWYgKCFt
X2NvbXBpbGVPa2F5KQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIGJyZWFr
OyAgICAgICAgICAgIAorICAgICAgICB9CisgICAgICAgIAorICAgICAgICBpZiAoYXQobm9kZS5j
aGlsZDEoKSkuc2hvdWxkU3BlY3VsYXRlSW50MTZBcnJheSgpKSB7CisgICAgICAgICAgICBjb21w
aWxlUHV0QnlWYWxGb3JJbnRUeXBlZEFycmF5KG1faml0Lmdsb2JhbERhdGEoKS0+aW50MTZBcnJh
eURlc2NyaXB0b3IoKSwgYmFzZS5ncHIoKSwgcHJvcGVydHkuZ3ByKCksIG5vZGUsIHNpemVvZihp
bnQxNl90KSwgaXNJbnQxNkFycmF5UHJlZGljdGlvbihtX3N0YXRlLmZvck5vZGUobm9kZS5jaGls
ZDEoKSkubV90eXBlKSA/IE5vVHlwZWRBcnJheVR5cGVTcGVjQ2hlY2sgOiBBbGxUeXBlZEFycmF5
U3BlY0NoZWNrcywgU2lnbmVkVHlwZWRBcnJheSk7CisgICAgICAgICAgICBpZiAoIW1fY29tcGls
ZU9rYXkpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgYnJlYWs7ICAgICAg
ICAgICAgCisgICAgICAgIH0KKworICAgICAgICBpZiAoYXQobm9kZS5jaGlsZDEoKSkuc2hvdWxk
U3BlY3VsYXRlSW50MzJBcnJheSgpKSB7CisgICAgICAgICAgICBjb21waWxlUHV0QnlWYWxGb3JJ
bnRUeXBlZEFycmF5KG1faml0Lmdsb2JhbERhdGEoKS0+aW50MzJBcnJheURlc2NyaXB0b3IoKSwg
YmFzZS5ncHIoKSwgcHJvcGVydHkuZ3ByKCksIG5vZGUsIHNpemVvZihpbnQzMl90KSwgaXNJbnQz
MkFycmF5UHJlZGljdGlvbihtX3N0YXRlLmZvck5vZGUobm9kZS5jaGlsZDEoKSkubV90eXBlKSA/
IE5vVHlwZWRBcnJheVR5cGVTcGVjQ2hlY2sgOiBBbGxUeXBlZEFycmF5U3BlY0NoZWNrcywgU2ln
bmVkVHlwZWRBcnJheSk7CisgICAgICAgICAgICBpZiAoIW1fY29tcGlsZU9rYXkpCisgICAgICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgYnJlYWs7ICAgICAgICAgICAgCisgICAgICAg
IH0KKyAgICAgICAgCisgICAgICAgIGlmIChhdChub2RlLmNoaWxkMSgpKS5zaG91bGRTcGVjdWxh
dGVVaW50OEFycmF5KCkpIHsKKyAgICAgICAgICAgIGNvbXBpbGVQdXRCeVZhbEZvckludFR5cGVk
QXJyYXkobV9qaXQuZ2xvYmFsRGF0YSgpLT51aW50OEFycmF5RGVzY3JpcHRvcigpLCBiYXNlLmdw
cigpLCBwcm9wZXJ0eS5ncHIoKSwgbm9kZSwgc2l6ZW9mKHVpbnQ4X3QpLCBpc1VpbnQ4QXJyYXlQ
cmVkaWN0aW9uKG1fc3RhdGUuZm9yTm9kZShub2RlLmNoaWxkMSgpKS5tX3R5cGUpID8gTm9UeXBl
ZEFycmF5VHlwZVNwZWNDaGVjayA6IEFsbFR5cGVkQXJyYXlTcGVjQ2hlY2tzLCBVbnNpZ25lZFR5
cGVkQXJyYXkpOworICAgICAgICAgICAgaWYgKCFtX2NvbXBpbGVPa2F5KQorICAgICAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgICAgIGJyZWFrOyAgICAgICAgICAgIAorICAgICAgICB9Cisg
ICAgICAgIAorICAgICAgICBpZiAoYXQobm9kZS5jaGlsZDEoKSkuc2hvdWxkU3BlY3VsYXRlVWlu
dDE2QXJyYXkoKSkgeworICAgICAgICAgICAgY29tcGlsZVB1dEJ5VmFsRm9ySW50VHlwZWRBcnJh
eShtX2ppdC5nbG9iYWxEYXRhKCktPnVpbnQxNkFycmF5RGVzY3JpcHRvcigpLCBiYXNlLmdwcigp
LCBwcm9wZXJ0eS5ncHIoKSwgbm9kZSwgc2l6ZW9mKHVpbnQxNl90KSwgaXNVaW50MTZBcnJheVBy
ZWRpY3Rpb24obV9zdGF0ZS5mb3JOb2RlKG5vZGUuY2hpbGQxKCkpLm1fdHlwZSkgPyBOb1R5cGVk
QXJyYXlUeXBlU3BlY0NoZWNrIDogQWxsVHlwZWRBcnJheVNwZWNDaGVja3MsIFVuc2lnbmVkVHlw
ZWRBcnJheSk7CisgICAgICAgICAgICBpZiAoIW1fY29tcGlsZU9rYXkpCisgICAgICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICAgICAgYnJlYWs7ICAgICAgICAgICAgCisgICAgICAgIH0KKyAg
ICAgICAgCisgICAgICAgIGlmIChhdChub2RlLmNoaWxkMSgpKS5zaG91bGRTcGVjdWxhdGVVaW50
MzJBcnJheSgpKSB7CisgICAgICAgICAgICBjb21waWxlUHV0QnlWYWxGb3JJbnRUeXBlZEFycmF5
KG1faml0Lmdsb2JhbERhdGEoKS0+dWludDMyQXJyYXlEZXNjcmlwdG9yKCksIGJhc2UuZ3ByKCks
IHByb3BlcnR5LmdwcigpLCBub2RlLCBzaXplb2YodWludDMyX3QpLCBpc1VpbnQzMkFycmF5UHJl
ZGljdGlvbihtX3N0YXRlLmZvck5vZGUobm9kZS5jaGlsZDEoKSkubV90eXBlKSA/IE5vVHlwZWRB
cnJheVR5cGVTcGVjQ2hlY2sgOiBBbGxUeXBlZEFycmF5U3BlY0NoZWNrcywgVW5zaWduZWRUeXBl
ZEFycmF5KTsKKyAgICAgICAgICAgIGlmICghbV9jb21waWxlT2theSkKKyAgICAgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgICAgICBicmVhazsgICAgICAgICAgICAKKyAgICAgICAgfQogCiAg
ICAgICAgIEpTVmFsdWVPcGVyYW5kIHZhbHVlKHRoaXMsIG5vZGUuY2hpbGQzKCkpOwogICAgICAg
ICBHUFJUZW1wb3Jhcnkgc2NyYXRjaCh0aGlzKTsKQEAgLTI3NjIsNiArMjg0Niw0OCBAQCB2b2lk
IFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUmIG5vZGUpCiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgfQogCisgICAgICAgIGlmIChhdChub2RlLmNoaWxkMSgpKS5zaG91bGRTcGVjdWxh
dGVJbnQ4QXJyYXkoKSkgeworICAgICAgICAgICAgY29tcGlsZVB1dEJ5VmFsRm9ySW50VHlwZWRB
cnJheShtX2ppdC5nbG9iYWxEYXRhKCktPmludDhBcnJheURlc2NyaXB0b3IoKSwgYmFzZS5ncHIo
KSwgcHJvcGVydHkuZ3ByKCksIG5vZGUsIHNpemVvZihpbnQ4X3QpLCBOb1R5cGVkQXJyYXlTcGVj
Q2hlY2ssIFNpZ25lZFR5cGVkQXJyYXkpOworICAgICAgICAgICAgaWYgKCFtX2NvbXBpbGVPa2F5
KQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIGJyZWFrOyAgICAgICAgICAg
IAorICAgICAgICB9CisgICAgICAgIAorICAgICAgICBpZiAoYXQobm9kZS5jaGlsZDEoKSkuc2hv
dWxkU3BlY3VsYXRlSW50MTZBcnJheSgpKSB7CisgICAgICAgICAgICBjb21waWxlUHV0QnlWYWxG
b3JJbnRUeXBlZEFycmF5KG1faml0Lmdsb2JhbERhdGEoKS0+aW50MTZBcnJheURlc2NyaXB0b3Io
KSwgYmFzZS5ncHIoKSwgcHJvcGVydHkuZ3ByKCksIG5vZGUsIHNpemVvZihpbnQxNl90KSwgTm9U
eXBlZEFycmF5U3BlY0NoZWNrLCBTaWduZWRUeXBlZEFycmF5KTsKKyAgICAgICAgICAgIGlmICgh
bV9jb21waWxlT2theSkKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICBicmVh
azsgICAgICAgICAgICAKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgaWYgKGF0KG5vZGUu
Y2hpbGQxKCkpLnNob3VsZFNwZWN1bGF0ZUludDMyQXJyYXkoKSkgeworICAgICAgICAgICAgY29t
cGlsZVB1dEJ5VmFsRm9ySW50VHlwZWRBcnJheShtX2ppdC5nbG9iYWxEYXRhKCktPmludDMyQXJy
YXlEZXNjcmlwdG9yKCksIGJhc2UuZ3ByKCksIHByb3BlcnR5LmdwcigpLCBub2RlLCBzaXplb2Yo
aW50MzJfdCksIE5vVHlwZWRBcnJheVNwZWNDaGVjaywgU2lnbmVkVHlwZWRBcnJheSk7CisgICAg
ICAgICAgICBpZiAoIW1fY29tcGlsZU9rYXkpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICAgICAgYnJlYWs7ICAgICAgICAgICAgCisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAg
IGlmIChhdChub2RlLmNoaWxkMSgpKS5zaG91bGRTcGVjdWxhdGVVaW50OEFycmF5KCkpIHsKKyAg
ICAgICAgICAgIGNvbXBpbGVQdXRCeVZhbEZvckludFR5cGVkQXJyYXkobV9qaXQuZ2xvYmFsRGF0
YSgpLT51aW50OEFycmF5RGVzY3JpcHRvcigpLCBiYXNlLmdwcigpLCBwcm9wZXJ0eS5ncHIoKSwg
bm9kZSwgc2l6ZW9mKHVpbnQ4X3QpLCBOb1R5cGVkQXJyYXlTcGVjQ2hlY2ssIFVuc2lnbmVkVHlw
ZWRBcnJheSk7CisgICAgICAgICAgICBpZiAoIW1fY29tcGlsZU9rYXkpCisgICAgICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICAgICAgYnJlYWs7ICAgICAgICAgICAgCisgICAgICAgIH0KKyAg
ICAgICAgCisgICAgICAgIGlmIChhdChub2RlLmNoaWxkMSgpKS5zaG91bGRTcGVjdWxhdGVVaW50
MTZBcnJheSgpKSB7CisgICAgICAgICAgICBjb21waWxlUHV0QnlWYWxGb3JJbnRUeXBlZEFycmF5
KG1faml0Lmdsb2JhbERhdGEoKS0+dWludDE2QXJyYXlEZXNjcmlwdG9yKCksIGJhc2UuZ3ByKCks
IHByb3BlcnR5LmdwcigpLCBub2RlLCBzaXplb2YodWludDE2X3QpLCBOb1R5cGVkQXJyYXlTcGVj
Q2hlY2ssIFVuc2lnbmVkVHlwZWRBcnJheSk7CisgICAgICAgICAgICBpZiAoIW1fY29tcGlsZU9r
YXkpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgYnJlYWs7ICAgICAgICAg
ICAgCisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGlmIChhdChub2RlLmNoaWxkMSgpKS5z
aG91bGRTcGVjdWxhdGVVaW50MzJBcnJheSgpKSB7CisgICAgICAgICAgICBjb21waWxlUHV0QnlW
YWxGb3JJbnRUeXBlZEFycmF5KG1faml0Lmdsb2JhbERhdGEoKS0+dWludDMyQXJyYXlEZXNjcmlw
dG9yKCksIGJhc2UuZ3ByKCksIHByb3BlcnR5LmdwcigpLCBub2RlLCBzaXplb2YodWludDMyX3Qp
LCBOb1R5cGVkQXJyYXlTcGVjQ2hlY2ssIFVuc2lnbmVkVHlwZWRBcnJheSk7CisgICAgICAgICAg
ICBpZiAoIW1fY29tcGlsZU9rYXkpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAg
ICAgYnJlYWs7ICAgICAgICAgICAgCisgICAgICAgIH0KKwogICAgICAgICBKU1ZhbHVlT3BlcmFu
ZCB2YWx1ZSh0aGlzLCBub2RlLmNoaWxkMygpKTsKICAgICAgICAgR1BSVGVtcG9yYXJ5IHNjcmF0
Y2godGhpcyk7CiAgICAgICAgIApAQCAtMzM0Myw3ICszNDY5LDM4IEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGUoTm9kZSYgbm9kZSkKICAgICAgICAgaW50ZWdlclJlc3VsdChyZXN1bHRH
UFIsIG1fY29tcGlsZUluZGV4KTsKICAgICAgICAgYnJlYWs7CiAgICAgfQotCisgICAgY2FzZSBH
ZXRJbnQ4QXJyYXlMZW5ndGg6IHsKKyAgICAgICAgY29tcGlsZUdldFR5cGVkQXJyYXlMZW5ndGgo
bV9qaXQuZ2xvYmFsRGF0YSgpLT5pbnQ4QXJyYXlEZXNjcmlwdG9yKCksIG5vZGUsICFpc0ludDhB
cnJheVByZWRpY3Rpb24obV9zdGF0ZS5mb3JOb2RlKG5vZGUuY2hpbGQxKCkpLm1fdHlwZSkpOwor
ICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBHZXRJbnQxNkFycmF5TGVuZ3RoOiB7Cisg
ICAgICAgIGNvbXBpbGVHZXRUeXBlZEFycmF5TGVuZ3RoKG1faml0Lmdsb2JhbERhdGEoKS0+aW50
MTZBcnJheURlc2NyaXB0b3IoKSwgbm9kZSwgIWlzSW50MTZBcnJheVByZWRpY3Rpb24obV9zdGF0
ZS5mb3JOb2RlKG5vZGUuY2hpbGQxKCkpLm1fdHlwZSkpOworICAgICAgICBicmVhazsKKyAgICB9
CisgICAgY2FzZSBHZXRJbnQzMkFycmF5TGVuZ3RoOiB7CisgICAgICAgIGNvbXBpbGVHZXRUeXBl
ZEFycmF5TGVuZ3RoKG1faml0Lmdsb2JhbERhdGEoKS0+aW50MzJBcnJheURlc2NyaXB0b3IoKSwg
bm9kZSwgIWlzSW50MzJBcnJheVByZWRpY3Rpb24obV9zdGF0ZS5mb3JOb2RlKG5vZGUuY2hpbGQx
KCkpLm1fdHlwZSkpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBHZXRVaW50OEFy
cmF5TGVuZ3RoOiB7CisgICAgICAgIGNvbXBpbGVHZXRUeXBlZEFycmF5TGVuZ3RoKG1faml0Lmds
b2JhbERhdGEoKS0+dWludDhBcnJheURlc2NyaXB0b3IoKSwgbm9kZSwgIWlzVWludDhBcnJheVBy
ZWRpY3Rpb24obV9zdGF0ZS5mb3JOb2RlKG5vZGUuY2hpbGQxKCkpLm1fdHlwZSkpOworICAgICAg
ICBicmVhazsKKyAgICB9CisgICAgY2FzZSBHZXRVaW50MTZBcnJheUxlbmd0aDogeworICAgICAg
ICBjb21waWxlR2V0VHlwZWRBcnJheUxlbmd0aChtX2ppdC5nbG9iYWxEYXRhKCktPnVpbnQxNkFy
cmF5RGVzY3JpcHRvcigpLCBub2RlLCAhaXNVaW50MTZBcnJheVByZWRpY3Rpb24obV9zdGF0ZS5m
b3JOb2RlKG5vZGUuY2hpbGQxKCkpLm1fdHlwZSkpOworICAgICAgICBicmVhazsKKyAgICB9Cisg
ICAgY2FzZSBHZXRVaW50MzJBcnJheUxlbmd0aDogeworICAgICAgICBjb21waWxlR2V0VHlwZWRB
cnJheUxlbmd0aChtX2ppdC5nbG9iYWxEYXRhKCktPnVpbnQzMkFycmF5RGVzY3JpcHRvcigpLCBu
b2RlLCAhaXNVaW50MzJBcnJheVByZWRpY3Rpb24obV9zdGF0ZS5mb3JOb2RlKG5vZGUuY2hpbGQx
KCkpLm1fdHlwZSkpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBHZXRGbG9hdDMy
QXJyYXlMZW5ndGg6IHsKKyAgICAgICAgY29tcGlsZUdldFR5cGVkQXJyYXlMZW5ndGgobV9qaXQu
Z2xvYmFsRGF0YSgpLT5mbG9hdDMyQXJyYXlEZXNjcmlwdG9yKCksIG5vZGUsICFpc0Zsb2F0MzJB
cnJheVByZWRpY3Rpb24obV9zdGF0ZS5mb3JOb2RlKG5vZGUuY2hpbGQxKCkpLm1fdHlwZSkpOwor
ICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBHZXRGbG9hdDY0QXJyYXlMZW5ndGg6IHsK
KyAgICAgICAgY29tcGlsZUdldFR5cGVkQXJyYXlMZW5ndGgobV9qaXQuZ2xvYmFsRGF0YSgpLT5m
bG9hdDY0QXJyYXlEZXNjcmlwdG9yKCksIG5vZGUsICFpc0Zsb2F0NjRBcnJheVByZWRpY3Rpb24o
bV9zdGF0ZS5mb3JOb2RlKG5vZGUuY2hpbGQxKCkpLm1fdHlwZSkpOworICAgICAgICBicmVhazsK
KyAgICB9CiAgICAgY2FzZSBDaGVja0Z1bmN0aW9uOiB7CiAgICAgICAgIFNwZWN1bGF0ZUNlbGxP
cGVyYW5kIGZ1bmN0aW9uKHRoaXMsIG5vZGUuY2hpbGQxKCkpOwogICAgICAgICBzcGVjdWxhdGlv
bkNoZWNrKEpTVmFsdWVSZWdzKCksIE5vTm9kZSwgbV9qaXQuYnJhbmNoV2Vha1B0cihKSVRDb21w
aWxlcjo6Tm90RXF1YWwsIGZ1bmN0aW9uLmdwcigpLCBub2RlLmZ1bmN0aW9uKCkpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRhLmgKaW5kZXggM2ViMTA1YzNk
ZjYxOTAxNTZkZGExYWVkYTEyOGY2ZjczNTY5ODM3OS4uOTYxNDU2NGJlNDUzYWI1MWM0MDgwZjYw
MDdjMmNiOWY1NTFmYmI5MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNHbG9iYWxEYXRhLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNH
bG9iYWxEYXRhLmgKQEAgLTM0Miw3ICszNDIsOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAg
eyBcCiAgICAgICAgICAgICBBU1NFUlQoIW1fIyN0eXBlIyNBcnJheURlc2NyaXB0b3IubV92cHRy
IHx8IG1fIyN0eXBlIyNBcnJheURlc2NyaXB0b3IubV92cHRyID09IGRlc2NyaXB0b3IubV92cHRy
KTsgXAogICAgICAgICAgICAgbV8jI3R5cGUjI0FycmF5RGVzY3JpcHRvciA9IGRlc2NyaXB0b3I7
IFwKLSAgICAgICAgfQorICAgICAgICB9IFwKKyAgICAgICAgY29uc3QgVHlwZWRBcnJheURlc2Ny
aXB0b3ImIHR5cGUjI0FycmF5RGVzY3JpcHRvcigpIGNvbnN0IHsgcmV0dXJuIG1fIyN0eXBlIyNB
cnJheURlc2NyaXB0b3I7IH0KKwogICAgICAgICByZWdpc3RlclR5cGVkQXJyYXlGdW5jdGlvbihp
bnQ4LCBJbnQ4KTsKICAgICAgICAgcmVnaXN0ZXJUeXBlZEFycmF5RnVuY3Rpb24oaW50MTYsIElu
dDE2KTsKICAgICAgICAgcmVnaXN0ZXJUeXBlZEFycmF5RnVuY3Rpb24oaW50MzIsIEludDMyKTsK
</data>
<flag name="review"
          id="116993"
          type_id="1"
          status="+"
          setter="fpizlo"
    />
          </attachment>
      

    </bug>

</bugzilla>