<?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>133985</bug_id>
          
          <creation_ts>2014-06-17 10:33:10 -0700</creation_ts>
          <short_desc>[ftlopt] Get rid of NodeDoesNotExit and also get rid of StoreEliminationPhase</short_desc>
          <delta_ts>2014-06-17 10:53:21 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>133918</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Filip Pizlo">fpizlo</assigned_to>
          <cc>barraclough</cc>
    
    <cc>ggaren</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mhahnenberg</cc>
    
    <cc>msaboff</cc>
    
    <cc>oliver</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1016147</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-06-17 10:33:10 -0700</bug_when>
    <thetext>Patch forthcoming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1016149</commentid>
    <comment_count>1</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-06-17 10:33:28 -0700</bug_when>
    <thetext>*** Bug 130521 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1016151</commentid>
    <comment_count>2</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-06-17 10:33:48 -0700</bug_when>
    <thetext>*** Bug 110383 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1016154</commentid>
    <comment_count>3</comment_count>
      <attachid>233243</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-06-17 10:38:47 -0700</bug_when>
    <thetext>Created attachment 233243
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1016160</commentid>
    <comment_count>4</comment_count>
      <attachid>233243</attachid>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2014-06-17 10:45:33 -0700</bug_when>
    <thetext>Comment on attachment 233243
the patch

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

r=me,  I like the read.  One typo.

&gt; Source/JavaScriptCore/ChangeLog:18
&gt; +        other optimizations that previously relied upomn NodeDoesNotExit.

*upon*</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1016166</commentid>
    <comment_count>5</comment_count>
      <attachid>233243</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2014-06-17 10:51:21 -0700</bug_when>
    <thetext>Comment on attachment 233243
the patch

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

r=me too

&gt; Source/JavaScriptCore/dfg/DFGAbstractInterpreter.h:91
&gt;      // Indicate the start of execution of the node. It resets any state in the node,

s/node,$/node</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1016168</commentid>
    <comment_count>6</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-06-17 10:53:21 -0700</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/170060</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>233243</attachid>
            <date>2014-06-17 10:38:47 -0700</date>
            <delta_ts>2014-06-17 10:51:21 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>73699</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTcwMDU3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDc1IEBA
CisyMDE0LTA2LTE3ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
W2Z0bG9wdF0gR2V0IHJpZCBvZiBOb2RlRG9lc05vdEV4aXQgYW5kIGFsc28gZ2V0IHJpZCBvZiBT
dG9yZUVsaW1pbmF0aW9uUGhhc2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTEzMzk4NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorICAgICAgICAKKyAgICAgICAgU3RvcmUgZWxpbWluYXRpb24gcGhhc2UgaGFzIG5ldmVyIGJl
ZW4gdmVyeSBwcm9maXRhYmxlLCBhbmQgbm93IHRoYXQgTExWTSBjYW4gZG8gZGVhZAorICAgICAg
ICBzdG9yZSBlbGltaW5hdGlvbiBmb3IgdXMsIHRoaXMgcGhhc2UgaXMganVzdCBjb21wbGV0ZWx5
IHBvaW50bGVzcy4KKyAgICAgICAgCisgICAgICAgIFRoaXMgcGhhc2UgaXMgYWxzbyB0aGUgcHJp
bWFyeSB1c2VyIG9mIE5vZGVEb2VzTm90RXhpdCwgd2hpY2ggaXMgYSBmbGFnIHRoYXQgdGhlIENG
QQorICAgICAgICBjb21wdXRlcy4gSXQgY29tcHV0ZXMgaXQgcG9vcmx5IGFuZCB3ZSBvZnRlbiBn
ZXQgYnVncyBpbiBpdC4gSXQncyBhbHNvIGEgbG90IG9mIGNvZGUgdG8KKyAgICAgICAgbWFpbnRh
aW4uCisgICAgICAgIAorICAgICAgICBUaGlzIHBhdGNoIGRvZXMgaW50cm9kdWNlIGEgbmV3IG1h
eUV4aXQoKSBjYWxjdWxhdG9yIHRoYXQgaXMgaW5kZXBlbmRlbnQgb2YgdGhlIENGQSBhbmQKKyAg
ICAgICAgc2hvdWxkIGJlIGVub3VnaCBmb3IgbW9zdCBvZiB0aGUgcHJldmlvdXMgTm9kZURvZXNO
b3RFeGl0IHVzZXJzLiBDdXJyZW50bHkgaXQncyBvbmx5IHVzZWQKKyAgICAgICAgZm9yIGFzc2Vy
dGlvbnMgaW4gdGhlIERGRyBiYWNrZW5kLCBidXQgd2UgY291bGQgdXNlIGl0IGlmIHdlIGV2ZXIg
YnJvdWdodCBiYWNrIGFueSBvZiB0aGUKKyAgICAgICAgb3RoZXIgb3B0aW1pemF0aW9ucyB0aGF0
IHByZXZpb3VzbHkgcmVsaWVkIHVwb21uIE5vZGVEb2VzTm90RXhpdC4KKyAgICAgICAgCisgICAg
ICAgIFRoaXMgaXMgcGVyZm9ybWFuY2UtbmV1dHJhbCwgZXhjZXB0IGZvciBTdW5TcGlkZXIsIHdo
ZXJlIGl0J3MgYSBzcGVlZC11cC4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAg
ICAqIEphdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvajoKKyAgICAg
ICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAq
IGRmZy9ERkdBYnN0cmFjdEludGVycHJldGVyLmg6CisgICAgICAgIChKU0M6OkRGRzo6QWJzdHJh
Y3RJbnRlcnByZXRlcjo6ZmlsdGVyRWRnZUJ5VXNlKToKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0
cmFjdEludGVycHJldGVyOjpmaWx0ZXJCeVR5cGUpOgorICAgICAgICAqIGRmZy9ERkdBYnN0cmFj
dEludGVycHJldGVySW5saW5lcy5oOgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0SW50ZXJw
cmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpzdGFydEV4ZWN1dGluZyk6CisgICAgICAgIChKU0M6
OkRGRzo6QWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZl
Y3RzKToKKyAgICAgICAgKiBkZmcvREZHQ1NFUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6
OkNTRVBoYXNlOjpDU0VQaGFzZSk6CisgICAgICAgIChKU0M6OkRGRzo6Q1NFUGhhc2U6OmludmFs
aWRhdGlvblBvaW50RWxpbWluYXRpb24pOgorICAgICAgICAoSlNDOjpERkc6OkNTRVBoYXNlOjpz
ZXRMb2NhbFN0b3JlRWxpbWluYXRpb24pOgorICAgICAgICAoSlNDOjpERkc6OkNTRVBoYXNlOjpw
ZXJmb3JtTm9kZUNTRSk6CisgICAgICAgIChKU0M6OkRGRzo6Q1NFUGhhc2U6OnBlcmZvcm1CbG9j
a0NTRSk6CisgICAgICAgIChKU0M6OkRGRzo6cGVyZm9ybUNTRSk6CisgICAgICAgIChKU0M6OkRG
Rzo6Q1NFUGhhc2U6Omdsb2JhbFZhclN0b3JlRWxpbWluYXRpb24pOiBEZWxldGVkLgorICAgICAg
ICAoSlNDOjpERkc6OkNTRVBoYXNlOjpzY29wZWRWYXJTdG9yZUVsaW1pbmF0aW9uKTogRGVsZXRl
ZC4KKyAgICAgICAgKEpTQzo6REZHOjpDU0VQaGFzZTo6cHV0U3RydWN0dXJlU3RvcmVFbGltaW5h
dGlvbik6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkRGRzo6Q1NFUGhhc2U6OnB1dEJ5T2Zmc2V0
U3RvcmVFbGltaW5hdGlvbik6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkRGRzo6Q1NFUGhhc2U6
OlNldExvY2FsU3RvcmVFbGltaW5hdGlvblJlc3VsdDo6U2V0TG9jYWxTdG9yZUVsaW1pbmF0aW9u
UmVzdWx0KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6REZHOjpwZXJmb3JtU3RvcmVFbGltaW5h
dGlvbik6IERlbGV0ZWQuCisgICAgICAgICogZGZnL0RGR0NTRVBoYXNlLmg6CisgICAgICAgICog
ZGZnL0RGR0ZpeHVwUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6OmZp
eHVwTm9kZSk6CisgICAgICAgICogZGZnL0RGR0dyYXBoLmNwcDoKKyAgICAgICAgKEpTQzo6REZH
OjpHcmFwaDo6cmVzZXRFeGl0U3RhdGVzKTogRGVsZXRlZC4KKyAgICAgICAgKiBkZmcvREZHR3Jh
cGguaDoKKyAgICAgICAgKiBkZmcvREZHTWF5RXhpdC5jcHA6IEFkZGVkLgorICAgICAgICAoSlND
OjpERkc6Om1heUV4aXQpOgorICAgICAgICAqIGRmZy9ERkdNYXlFeGl0Lmg6IEFkZGVkLgorICAg
ICAgICAqIGRmZy9ERkdOb2RlLmg6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6bWVyZ2VGbGFn
cyk6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6ZmlsdGVyRmxhZ3MpOgorICAgICAgICAoSlND
OjpERkc6Ok5vZGU6OnNldENhbkV4aXQpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpERkc6Ok5v
ZGU6OmNhbkV4aXQpOiBEZWxldGVkLgorICAgICAgICAqIGRmZy9ERkdOb2RlRmxhZ3MuY3BwOgor
ICAgICAgICAoSlNDOjpERkc6OmR1bXBOb2RlRmxhZ3MpOgorICAgICAgICAqIGRmZy9ERkdOb2Rl
RmxhZ3MuaDoKKyAgICAgICAgKiBkZmcvREZHTm9kZVR5cGUuaDoKKyAgICAgICAgKiBkZmcvREZH
UGxhbi5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6UGxhbjo6Y29tcGlsZUluVGhyZWFkSW1wbCk6
CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcDoKKyAgICAgICAgKEpTQzo6REZH
OjpTcGVjdWxhdGl2ZUpJVDo6dGVybWluYXRlU3BlY3VsYXRpdmVFeGVjdXRpb24pOgorICAgICAg
ICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpiYWlsKToKKyAgICAgICAgKEpTQzo6REZHOjpT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUN1cnJlbnRCbG9jayk6CisgICAgICAgICogZGZnL0RGR1Nw
ZWN1bGF0aXZlSklUMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklU
Ojpjb21waWxlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA6CisgICAg
ICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorCiAyMDE0LTA2LTE1ICBG
aWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CiAKICAgICAgICAgW2Z0bG9wdF0gUmVtb3Zl
IHRoZSBERkcgb3B0aW1pemF0aW9uIGZpeHBvaW50IGFuZCByZW1vdmUgc29tZSBvYnZpb3VzIHJl
YXNvbnMgd2h5IHdlIHByZXZpb3VzbHkgYmVuZWZpdGVkIGZyb20gaXQKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDE3MDAzNikKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMTYyLDYgKzE2Miw3
IEBAIHNldChKYXZhU2NyaXB0Q29yZV9TT1VSQ0VTCiAgICAgZGZnL0RGR0xpdmVuZXNzQW5hbHlz
aXNQaGFzZS5jcHAKICAgICBkZmcvREZHTG9uZ0xpdmVkU3RhdGUuY3BwCiAgICAgZGZnL0RGR0xv
b3BQcmVIZWFkZXJDcmVhdGlvblBoYXNlLmNwcAorICAgIGRmZy9ERkdNYXlFeGl0LmNwcAogICAg
IGRmZy9ERkdNaW5pZmllZE5vZGUuY3BwCiAgICAgZGZnL0RGR05hdHVyYWxMb29wcy5jcHAKICAg
ICBkZmcvREZHTm9kZS5jcHAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2oKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4
cHJvagkocmV2aXNpb24gMTcwMDM2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvagkod29ya2luZyBjb3B5KQpAQCAt
NDEzLDYgKzQxMyw3IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxkZmdcREZHTGl2ZW5l
c3NBbmFseXNpc1BoYXNlLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGRmZ1xE
RkdMb25nTGl2ZWRTdGF0ZS5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxkZmdc
REZHTG9vcFByZUhlYWRlckNyZWF0aW9uUGhhc2UuY3BwIiAvPgorICAgIDxDbENvbXBpbGUgSW5j
bHVkZT0iLi5cZGZnXERGR01heUV4aXQuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0i
Li5cZGZnXERGR01pbmlmaWVkTm9kZS5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIu
LlxkZmdcREZHTmF0dXJhbExvb3BzLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4u
XGRmZ1xERkdOb2RlLmNwcCIgLz4KQEAgLTk4Miw2ICs5ODMsNyBAQAogICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0iLi5cZGZnXERGR0xpdmVuZXNzQW5hbHlzaXNQaGFzZS5oIiAvPgogICAgIDxDbElu
Y2x1ZGUgSW5jbHVkZT0iLi5cZGZnXERGR0xvbmdMaXZlZFN0YXRlLmgiIC8+CiAgICAgPENsSW5j
bHVkZSBJbmNsdWRlPSIuLlxkZmdcREZHTG9vcFByZUhlYWRlckNyZWF0aW9uUGhhc2UuaCIgLz4K
KyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGRmZ1xERkdNYXlFeGl0LmgiIC8+CiAgICAgPENs
SW5jbHVkZSBJbmNsdWRlPSIuLlxkZmdcREZHTWVyZ2VNb2RlLmgiIC8+CiAgICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSIuLlxkZmdcREZHTWluaWZpZWRHcmFwaC5oIiAvPgogICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0iLi5cZGZnXERGR01pbmlmaWVkSUQuaCIgLz4KSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCShyZXZpc2lvbiAxNzAwMzYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
SmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpA
QCAtMjk0LDYgKzI5NCw4IEBACiAJCTBGNTZBMUQ1MTUwMDFDRjQwMDI5OTJCMSAvKiBFeGVjdXRp
b25Db3VudGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDBGNTZBMUQ0MTUwMDFDRjIwMDI5OTJCMSAvKiBFeGVjdXRpb25Db3VudGVyLmNwcCAqLzsg
fTsKIAkJMEY1NzJENEYxNjg3OUZERDAwRTU3RkJEIC8qIFRodW5rR2VuZXJhdG9yLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjU3MkQ0RDE2ODc5RkRC
MDBFNTdGQkQgLyogVGh1bmtHZW5lcmF0b3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjU3ODBBMjE4RkUxRTk4MDAxRTcyRDkgLyogUHVyZU5h
Ti5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY1Nzgw
QTExOEZFMUU5ODAwMUU3MkQ5IC8qIFB1cmVOYU4uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRjU4NzRFRDE5NEZFQjEyMDBBQUIyQzEgLyogREZH
TWF5RXhpdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwRjU4NzRFQjE5NEZFQjEyMDBBQUIyQzEgLyogREZHTWF5RXhpdC5jcHAgKi87IH07CisJCTBG
NTg3NEVFMTk0RkVCMTIwMEFBQjJDMSAvKiBERkdNYXlFeGl0LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjU4NzRFQzE5NEZFQjEyMDBBQUIyQzEgLyog
REZHTWF5RXhpdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTBGNUExMjczMTkyRDlGREYwMDg3NjRBMyAvKiBERkdEb2VzR0MuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY1QTEyNzExOTJEOUZERjAw
ODc2NEEzIC8qIERGR0RvZXNHQy5jcHAgKi87IH07CiAJCTBGNUExMjc0MTkyRDlGREYwMDg3NjRB
MyAvKiBERkdEb2VzR0MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDBGNUExMjcyMTkyRDlGREYwMDg3NjRBMyAvKiBERkdEb2VzR0MuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjVBNTJEMDE3QURENzE3
MDA4RUNCMkQgLyogQ29weVRva2VuLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwRjVBNTJDRjE3QURENzE3MDA4RUNCMkQgLyogQ29weVRva2VuLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTI0NTksNiAr
MjQ2MSw4IEBACiAJCTBGNTZBMUQ0MTUwMDFDRjIwMDI5OTJCMSAvKiBFeGVjdXRpb25Db3VudGVy
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEV4ZWN1dGlvbkNvdW50
ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjU3MkQ0RDE2ODc5RkRCMDBF
NTdGQkQgLyogVGh1bmtHZW5lcmF0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gVGh1bmtHZW5lcmF0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY1Nzgw
QTExOEZFMUU5ODAwMUU3MkQ5IC8qIFB1cmVOYU4uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gUHVyZU5hTi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjU4NzRF
QjE5NEZFQjEyMDBBQUIyQzEgLyogREZHTWF5RXhpdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IG5hbWUgPSBERkdNYXlFeGl0LmNwcDsgcGF0aCA9IGRmZy9ERkdNYXlFeGl0LmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY1ODc0RUMxOTRGRUIxMjAwQUFCMkMx
IC8qIERGR01heUV4aXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHTWF5
RXhpdC5oOyBwYXRoID0gZGZnL0RGR01heUV4aXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMEY1QTEyNzExOTJEOUZERjAwODc2NEEzIC8qIERGR0RvZXNHQy5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBERkdEb2VzR0MuY3BwOyBwYXRoID0gZGZnL0RG
R0RvZXNHQy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNUExMjcyMTkyRDlG
REYwMDg3NjRBMyAvKiBERkdEb2VzR0MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1l
ID0gREZHRG9lc0dDLmg7IHBhdGggPSBkZmcvREZHRG9lc0dDLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTBGNUE1MkNGMTdBREQ3MTcwMDhFQ0IyRCAvKiBDb3B5VG9rZW4uaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29weVRva2VuLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC01MTA2LDYgKzUxMTAsOCBAQAogCQkJCTBGQjRCNTFEMTZCNjI3NzIw
MDNGNjk2QiAvKiBERkdMb25nTGl2ZWRTdGF0ZS5oICovLAogCQkJCUE3NjdCNUIzMTdBMEI5NjUw
MDYzRDk0MCAvKiBERkdMb29wUHJlSGVhZGVyQ3JlYXRpb25QaGFzZS5jcHAgKi8sCiAJCQkJQTc2
N0I1QjQxN0EwQjk2NTAwNjNEOTQwIC8qIERGR0xvb3BQcmVIZWFkZXJDcmVhdGlvblBoYXNlLmgg
Ki8sCisJCQkJMEY1ODc0RUIxOTRGRUIxMjAwQUFCMkMxIC8qIERGR01heUV4aXQuY3BwICovLAor
CQkJCTBGNTg3NEVDMTk0RkVCMTIwMEFBQjJDMSAvKiBERkdNYXlFeGl0LmggKi8sCiAJCQkJQTcw
NEQ5MDIxN0EwQkFBODAwNkJBNTU0IC8qIERGR01lcmdlTW9kZS5oICovLAogCQkJCTBGMkJEQzNE
MTUyMjgwMTcwMENEODkxMCAvKiBERkdNaW5pZmllZEdyYXBoLmggKi8sCiAJCQkJMEZCNEI1MTAx
NkIzQTk2NDAwM0Y2OTZCIC8qIERGR01pbmlmaWVkSUQuaCAqLywKQEAgLTYxMzMsNiArNjEzOSw3
IEBACiAJCQkJQTcwNDQ3RUUxN0EwQkQ3MDAwRjU4OThFIC8qIER1bXBDb250ZXh0LmggaW4gSGVh
ZGVycyAqLywKIAkJCQk5OUU0NUEyNDE4QTFCMjU5MDAyNkQ4OEYgLyogRW1wdHlJbnB1dEN1cnNv
ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTlFNDVBMjYxOEExQjI1OTAwMjZEODhGIC8qIEVuY29k
ZWRWYWx1ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEY1ODc0RUUxOTRGRUIxMjAwQUFCMkMxIC8q
IERGR01heUV4aXQuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMzA0NjA3MEUxRjQ5N0YwMDMyMzJD
RiAvKiBFcnJvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMwMkU5MEQwRTE4MzlEQjAwMEY5Mjk3
IC8qIEVycm9yQ29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUZFQjU4QzE1MTg3QjhC
MTYwMDk4RUYwQiAvKiBFcnJvckhhbmRsaW5nU2NvcGUuaCBpbiBIZWFkZXJzICovLApAQCAtNzY5
Myw2ICs3NzAwLDcgQEAKIAkJCQkwRjNCM0EyQjE1NDc1MDAwMDAzRUQwRkYgLyogREZHVmFsaWRh
dGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYyQkRDNEYxNTIyOEJGMzAwQ0Q4OTEwIC8qIERG
R1ZhbHVlU291cmNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGRERCRkI1MTY2NkVFRDgwMEM1
NUZFRiAvKiBERkdWYXJpYWJsZUFjY2Vzc0RhdGFEdW1wLmNwcCBpbiBTb3VyY2VzICovLAorCQkJ
CTBGNTg3NEVEMTk0RkVCMTIwMEFBQjJDMSAvKiBERkdNYXlFeGl0LmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTBGMkJEQzUxMTUyMjhGRkQwMENEODkxMCAvKiBERkdWYXJpYWJsZUV2ZW50LmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTBGMkJEQzRBMTUyMjgwOUEwMENEODkxMCAvKiBERkdWYXJpYWJs
ZUV2ZW50U3RyZWFtLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGRkZDOTVGMTRFRjkwQkIwMEM3
MjUzMiAvKiBERkdWaXJ0dWFsUmVnaXN0ZXJBbGxvY2F0aW9uUGhhc2UuY3BwIGluIFNvdXJjZXMg
Ki8sCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0
ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0
SW50ZXJwcmV0ZXIuaAkocmV2aXNpb24gMTcwMDM2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTg5LDExICs4
OSw3IEBAIHB1YmxpYzoKICAgICBib29sIGV4ZWN1dGUoTm9kZSopOwogICAgIAogICAgIC8vIElu
ZGljYXRlIHRoZSBzdGFydCBvZiBleGVjdXRpb24gb2YgdGhlIG5vZGUuIEl0IHJlc2V0cyBhbnkg
c3RhdGUgaW4gdGhlIG5vZGUsCi0gICAgLy8gdGhhdCBpcyBwcm9ncmVzc2l2ZWx5IGJ1aWx0IHVw
IGJ5IGV4ZWN1dGVFZGdlcygpIGFuZCBleGVjdXRlRWZmZWN0cygpLiBJbgotICAgIC8vIHBhcnRp
Y3VsYXIsIHRoaXMgcmVzZXRzIGNhbkV4aXQoKSwgc28gaWYgeW91IHdhbnQgdG8gImtub3ciIGJl
dHdlZW4gY2FsbHMgb2YKLSAgICAvLyBzdGFydEV4ZWN1dGluZygpIGFuZCBleGVjdXRlRWRnZXMo
KS9FZmZlY3RzKCkgd2hldGhlciB0aGUgbGFzdCBydW4gb2YgdGhlCi0gICAgLy8gYW5hbHlzaXMg
Y29uY2x1ZGVkIHRoYXQgdGhlIG5vZGUgY2FuIGV4aXQsIHlvdSBzaG91bGQgcHJvYmFibHkgc2V0
IHRoYXQKLSAgICAvLyBpbmZvcm1hdGlvbiBhc2lkZSBwcmlvciB0byBjYWxsaW5nIHN0YXJ0RXhl
Y3V0aW5nKCkuCisgICAgLy8gdGhhdCBpcyBwcm9ncmVzc2l2ZWx5IGJ1aWx0IHVwIGJ5IGV4ZWN1
dGVFZGdlcygpIGFuZCBleGVjdXRlRWZmZWN0cygpLgogICAgIGJvb2wgc3RhcnRFeGVjdXRpbmco
Tm9kZSopOwogICAgIGJvb2wgc3RhcnRFeGVjdXRpbmcodW5zaWduZWQgaW5kZXhJbkJsb2NrKTsK
ICAgICAKQEAgLTEwMywxMCArOTksMTQgQEAgcHVibGljOgogICAgIHZvaWQgZXhlY3V0ZUVkZ2Vz
KE5vZGUqKTsKICAgICB2b2lkIGV4ZWN1dGVFZGdlcyh1bnNpZ25lZCBpbmRleEluQmxvY2spOwog
ICAgIAotICAgIEFMV0FZU19JTkxJTkUgdm9pZCBmaWx0ZXJFZGdlQnlVc2UoTm9kZSogbm9kZSwg
RWRnZSYgZWRnZSkKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgZmlsdGVyRWRnZUJ5VXNlKEVkZ2Um
IGVkZ2UpCiAgICAgewogICAgICAgICBBU1NFUlQobWF5SGF2ZVR5cGVDaGVjayhlZGdlLnVzZUtp
bmQoKSkgfHwgIW5lZWRzVHlwZUNoZWNrKGVkZ2UpKTsKLSAgICAgICAgZmlsdGVyQnlUeXBlKG5v
ZGUsIGVkZ2UsIHR5cGVGaWx0ZXJGb3IoZWRnZS51c2VLaW5kKCkpKTsKKyAgICAgICAgZmlsdGVy
QnlUeXBlKGVkZ2UsIHR5cGVGaWx0ZXJGb3IoZWRnZS51c2VLaW5kKCkpKTsKKyAgICB9CisgICAg
QUxXQVlTX0lOTElORSB2b2lkIGZpbHRlckVkZ2VCeVVzZShOb2RlKiwgRWRnZSYgZWRnZSkKKyAg
ICB7CisgICAgICAgIGZpbHRlckVkZ2VCeVVzZShlZGdlKTsKICAgICB9CiAgICAgCiAgICAgLy8g
QWJzdHJhY3RseSBleGVjdXRlIHRoZSBlZmZlY3RzIG9mIHRoZSBnaXZlbiBub2RlLiBUaGlzIGNo
YW5nZXMgdGhlIGFic3RyYWN0CkBAIC0xNzgsMTMgKzE3OCwxMiBAQCBwcml2YXRlOgogICAgICAg
ICBtX3N0YXRlLnNldEZvdW5kQ29uc3RhbnRzKHRydWUpOwogICAgIH0KICAgICAKLSAgICBBTFdB
WVNfSU5MSU5FIHZvaWQgZmlsdGVyQnlUeXBlKE5vZGUqIG5vZGUsIEVkZ2UmIGVkZ2UsIFNwZWN1
bGF0ZWRUeXBlIHR5cGUpCisgICAgQUxXQVlTX0lOTElORSB2b2lkIGZpbHRlckJ5VHlwZShFZGdl
JiBlZGdlLCBTcGVjdWxhdGVkVHlwZSB0eXBlKQogICAgIHsKICAgICAgICAgQWJzdHJhY3RWYWx1
ZSYgdmFsdWUgPSBmb3JOb2RlKGVkZ2UpOwotICAgICAgICBpZiAoIXZhbHVlLmlzVHlwZSh0eXBl
KSkgewotICAgICAgICAgICAgbm9kZS0+c2V0Q2FuRXhpdCh0cnVlKTsKKyAgICAgICAgaWYgKCF2
YWx1ZS5pc1R5cGUodHlwZSkpCiAgICAgICAgICAgICBlZGdlLnNldFByb29mU3RhdHVzKE5lZWRz
Q2hlY2spOwotICAgICAgICB9IGVsc2UKKyAgICAgICAgZWxzZQogICAgICAgICAgICAgZWRnZS5z
ZXRQcm9vZlN0YXR1cyhJc1Byb3ZlZCk7CiAgICAgICAgIAogICAgICAgICBmaWx0ZXIodmFsdWUs
IHR5cGUpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVy
cHJldGVySW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAkocmV2aXNpb24gMTcwMDM2KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCSh3
b3JraW5nIGNvcHkpCkBAIC04Nyw4ICs4Nyw2IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxB
YnN0cmFjdFN0YXRlVHkKICAgICAKICAgICBtX3N0YXRlLnNldERpZENsb2JiZXIoZmFsc2UpOwog
ICAgIAotICAgIG5vZGUtPnNldENhbkV4aXQoZmFsc2UpOwotICAgIAogICAgIHJldHVybiBub2Rl
LT5zaG91bGRHZW5lcmF0ZSgpOwogfQogCkBAIC0xNzYsMTAgKzE3NCw2IEBAIGJvb2wgQWJzdHJh
Y3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHkKICAgICBjYXNlIEdldExvY2FsOiB7CiAgICAg
ICAgIFZhcmlhYmxlQWNjZXNzRGF0YSogdmFyaWFibGVBY2Nlc3NEYXRhID0gbm9kZS0+dmFyaWFi
bGVBY2Nlc3NEYXRhKCk7CiAgICAgICAgIEFic3RyYWN0VmFsdWUgdmFsdWUgPSBtX3N0YXRlLnZh
cmlhYmxlcygpLm9wZXJhbmQodmFyaWFibGVBY2Nlc3NEYXRhLT5sb2NhbCgpLm9mZnNldCgpKTsK
LSAgICAgICAgaWYgKCF2YXJpYWJsZUFjY2Vzc0RhdGEtPmlzQ2FwdHVyZWQoKSkgewotICAgICAg
ICAgICAgaWYgKHZhbHVlLmlzQ2xlYXIoKSkKLSAgICAgICAgICAgICAgICBub2RlLT5zZXRDYW5F
eGl0KHRydWUpOwotICAgICAgICB9CiAgICAgICAgIGlmICh2YWx1ZS52YWx1ZSgpKQogICAgICAg
ICAgICAgbV9zdGF0ZS5zZXRGb3VuZENvbnN0YW50cyh0cnVlKTsKICAgICAgICAgZm9yTm9kZShu
b2RlKSA9IHZhbHVlOwpAQCAtMjcwLDcgKzI2NCw2IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRl
cjxBYnN0cmFjdFN0YXRlVHkKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICBmb3JO
b2RlKG5vZGUpLnNldFR5cGUoU3BlY0ludDMyKTsKLSAgICAgICAgbm9kZS0+c2V0Q2FuRXhpdCh0
cnVlKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgICAgICAgICAgCkBAIC0yODQsNyArMjc3
LDYgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAgICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICB9Ci0gICAgICAgIG5vZGUtPnNl
dENhbkV4aXQodHJ1ZSk7CiAgICAgICAgIGZvck5vZGUobm9kZSkuc2V0VHlwZShTcGVjSW50MzIp
OwogICAgICAgICBicmVhazsKICAgICB9CkBAIC0zNzMsOCArMzY1LDYgQEAgYm9vbCBBYnN0cmFj
dEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAgICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgIGZvck5vZGUobm9kZSkuc2V0VHlwZShTcGVjSW50MzIpOwotICAg
ICAgICAgICAgaWYgKHNob3VsZENoZWNrT3ZlcmZsb3cobm9kZS0+YXJpdGhNb2RlKCkpKQotICAg
ICAgICAgICAgICAgIG5vZGUtPnNldENhbkV4aXQodHJ1ZSk7CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgY2FzZSBJbnQ1MlJlcFVzZToKICAgICAgICAgICAgIGlmIChsZWZ0ICYmIHJpZ2h0
ICYmIGxlZnQuaXNNYWNoaW5lSW50KCkgJiYgcmlnaHQuaXNNYWNoaW5lSW50KCkpIHsKQEAgLTM4
NSw5ICszNzUsNiBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5CiAg
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICAgICAgZm9yTm9kZShub2Rl
KS5zZXRUeXBlKFNwZWNNYWNoaW5lSW50KTsKLSAgICAgICAgICAgIGlmICghZm9yTm9kZShub2Rl
LT5jaGlsZDEoKSkuaXNUeXBlKFNwZWNJbnQzMikKLSAgICAgICAgICAgICAgICB8fCAhZm9yTm9k
ZShub2RlLT5jaGlsZDIoKSkuaXNUeXBlKFNwZWNJbnQzMikpCi0gICAgICAgICAgICAgICAgbm9k
ZS0+c2V0Q2FuRXhpdCh0cnVlKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIERv
dWJsZVJlcFVzZToKICAgICAgICAgICAgIGlmIChsZWZ0ICYmIHJpZ2h0ICYmIGxlZnQuaXNOdW1i
ZXIoKSAmJiByaWdodC5pc051bWJlcigpKSB7CkBAIC00MDYsNyArMzkzLDYgQEAgYm9vbCBBYnN0
cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAgIH0KICAgICAgICAgCiAgICAgY2Fz
ZSBNYWtlUm9wZTogewotICAgICAgICBub2RlLT5zZXRDYW5FeGl0KHRydWUpOwogICAgICAgICBm
b3JOb2RlKG5vZGUpLnNldChtX2dyYXBoLCBtX2dyYXBoLm1fdm0uc3RyaW5nU3RydWN0dXJlLmdl
dCgpKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQpAQCAtNDI4LDggKzQxNCw2IEBAIGJvb2wgQWJz
dHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHkKICAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICBmb3JOb2RlKG5vZGUpLnNldFR5cGUoU3BlY0ludDMyKTsK
LSAgICAgICAgICAgIGlmIChzaG91bGRDaGVja092ZXJmbG93KG5vZGUtPmFyaXRoTW9kZSgpKSkK
LSAgICAgICAgICAgICAgICBub2RlLT5zZXRDYW5FeGl0KHRydWUpOwogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIGNhc2UgSW50NTJSZXBVc2U6CiAgICAgICAgICAgICBpZiAobGVmdCAmJiBy
aWdodCAmJiBsZWZ0LmlzTWFjaGluZUludCgpICYmIHJpZ2h0LmlzTWFjaGluZUludCgpKSB7CkBA
IC00NDAsOSArNDI0LDYgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVU
eQogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGZvck5vZGUo
bm9kZSkuc2V0VHlwZShTcGVjTWFjaGluZUludCk7Ci0gICAgICAgICAgICBpZiAoIWZvck5vZGUo
bm9kZS0+Y2hpbGQxKCkpLmlzVHlwZShTcGVjSW50MzIpCi0gICAgICAgICAgICAgICAgfHwgIWZv
ck5vZGUobm9kZS0+Y2hpbGQyKCkpLmlzVHlwZShTcGVjSW50MzIpKQotICAgICAgICAgICAgICAg
IG5vZGUtPnNldENhbkV4aXQodHJ1ZSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2Fz
ZSBEb3VibGVSZXBVc2U6CiAgICAgICAgICAgICBpZiAobGVmdCAmJiByaWdodCAmJiBsZWZ0Lmlz
TnVtYmVyKCkgJiYgcmlnaHQuaXNOdW1iZXIoKSkgewpAQCAtNDgxLDggKzQ2Miw2IEBAIGJvb2wg
QWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHkKICAgICAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICBmb3JOb2RlKG5vZGUpLnNldFR5cGUoU3BlY0ludDMy
KTsKLSAgICAgICAgICAgIGlmIChzaG91bGRDaGVja092ZXJmbG93KG5vZGUtPmFyaXRoTW9kZSgp
KSkKLSAgICAgICAgICAgICAgICBub2RlLT5zZXRDYW5FeGl0KHRydWUpOwogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIGNhc2UgSW50NTJSZXBVc2U6CiAgICAgICAgICAgICBpZiAoY2hpbGQg
JiYgY2hpbGQuaXNNYWNoaW5lSW50KCkpIHsKQEAgLTQ5OCwxMCArNDc3LDYgQEAgYm9vbCBBYnN0
cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAgICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgIGZvck5vZGUobm9kZSkuc2V0VHlwZShTcGVjTWFjaGluZUlu
dCk7Ci0gICAgICAgICAgICBpZiAobV9zdGF0ZS5mb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS5jb3Vs
ZEJlVHlwZShTcGVjSW50NTIpKQotICAgICAgICAgICAgICAgIG5vZGUtPnNldENhbkV4aXQodHJ1
ZSk7Ci0gICAgICAgICAgICBpZiAoc2hvdWxkQ2hlY2tOZWdhdGl2ZVplcm8obm9kZS0+YXJpdGhN
b2RlKCkpKQotICAgICAgICAgICAgICAgIG5vZGUtPnNldENhbkV4aXQodHJ1ZSk7CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgY2FzZSBEb3VibGVSZXBVc2U6CiAgICAgICAgICAgICBpZiAo
Y2hpbGQgJiYgY2hpbGQuaXNOdW1iZXIoKSkgewpAQCAtNTM5LDggKzUxNCw2IEBAIGJvb2wgQWJz
dHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHkKICAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICBmb3JOb2RlKG5vZGUpLnNldFR5cGUoU3BlY0ludDMyKTsK
LSAgICAgICAgICAgIGlmIChzaG91bGRDaGVja092ZXJmbG93KG5vZGUtPmFyaXRoTW9kZSgpKSkK
LSAgICAgICAgICAgICAgICBub2RlLT5zZXRDYW5FeGl0KHRydWUpOwogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIGNhc2UgSW50NTJSZXBVc2U6CiAgICAgICAgICAgICBpZiAobGVmdCAmJiBy
aWdodCAmJiBsZWZ0LmlzTWFjaGluZUludCgpICYmIHJpZ2h0LmlzTWFjaGluZUludCgpKSB7CkBA
IC01NTQsNyArNTI3LDYgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVU
eQogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGZvck5vZGUo
bm9kZSkuc2V0VHlwZShTcGVjTWFjaGluZUludCk7Ci0gICAgICAgICAgICBub2RlLT5zZXRDYW5F
eGl0KHRydWUpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgRG91YmxlUmVwVXNl
OgogICAgICAgICAgICAgaWYgKGxlZnQgJiYgcmlnaHQgJiYgbGVmdC5pc051bWJlcigpICYmIHJp
Z2h0LmlzTnVtYmVyKCkpIHsKQEAgLTU5MCw3ICs1NjIsNiBAQCBib29sIEFic3RyYWN0SW50ZXJw
cmV0ZXI8QWJzdHJhY3RTdGF0ZVR5CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQog
ICAgICAgICAgICAgZm9yTm9kZShub2RlKS5zZXRUeXBlKFNwZWNJbnQzMik7Ci0gICAgICAgICAg
ICBub2RlLT5zZXRDYW5FeGl0KHRydWUpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNh
c2UgRG91YmxlUmVwVXNlOgogICAgICAgICAgICAgaWYgKGxlZnQgJiYgcmlnaHQgJiYgbGVmdC5p
c051bWJlcigpICYmIHJpZ2h0LmlzTnVtYmVyKCkpIHsKQEAgLTYyNiw3ICs1OTcsNiBAQCBib29s
IEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5CiAgICAgICAgICAgICAgICAgfQog
ICAgICAgICAgICAgfQogICAgICAgICAgICAgZm9yTm9kZShub2RlKS5zZXRUeXBlKFNwZWNJbnQz
Mik7Ci0gICAgICAgICAgICBub2RlLT5zZXRDYW5FeGl0KHRydWUpOwogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIGNhc2UgRG91YmxlUmVwVXNlOgogICAgICAgICAgICAgaWYgKGxlZnQgJiYg
cmlnaHQgJiYgbGVmdC5pc051bWJlcigpICYmIHJpZ2h0LmlzTnVtYmVyKCkpIHsKQEAgLTY1NCw3
ICs2MjQsNiBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5CiAgICAg
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBmb3JOb2RlKG5v
ZGUpLnNldFR5cGUoU3BlY0ludDMyKTsKLSAgICAgICAgICAgIG5vZGUtPnNldENhbkV4aXQodHJ1
ZSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBEb3VibGVSZXBVc2U6CiAgICAg
ICAgICAgICBpZiAobGVmdCAmJiByaWdodCAmJiBsZWZ0LmlzTnVtYmVyKCkgJiYgcmlnaHQuaXNO
dW1iZXIoKSkgewpAQCAtNjg0LDcgKzY1Myw2IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxB
YnN0cmFjdFN0YXRlVHkKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgIGZvck5vZGUobm9kZSkuc2V0VHlwZShTcGVjSW50MzIpOwotICAgICAgICAgICAg
bm9kZS0+c2V0Q2FuRXhpdCh0cnVlKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNl
IERvdWJsZVJlcFVzZToKICAgICAgICAgICAgIGlmIChsZWZ0ICYmIHJpZ2h0ICYmIGxlZnQuaXNO
dW1iZXIoKSAmJiByaWdodC5pc051bWJlcigpKSB7CkBAIC03MTYsNyArNjg0LDYgQEAgYm9vbCBB
YnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAgICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgIGZvck5vZGUobm9kZSkuc2V0VHlwZShTcGVjSW50MzIp
OwotICAgICAgICAgICAgbm9kZS0+c2V0Q2FuRXhpdCh0cnVlKTsKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICBjYXNlIERvdWJsZVJlcFVzZToKICAgICAgICAgICAgIGlmIChjaGlsZCAmJiBj
aGlsZC5pc051bWJlcigpKSB7CkBAIC03ODEsMjAgKzc0OCw2IEBAIGJvb2wgQWJzdHJhY3RJbnRl
cnByZXRlcjxBYnN0cmFjdFN0YXRlVHkKICAgICAgICAgICAgIHNldENvbnN0YW50KG5vZGUsIGpz
Qm9vbGVhbih0cnVlKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgZGVmYXVsdDoKLSAg
ICAgICAgICAgIHN3aXRjaCAobm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpKSB7Ci0gICAgICAgICAg
ICBjYXNlIEJvb2xlYW5Vc2U6Ci0gICAgICAgICAgICBjYXNlIEludDMyVXNlOgotICAgICAgICAg
ICAgY2FzZSBEb3VibGVSZXBVc2U6Ci0gICAgICAgICAgICBjYXNlIFVudHlwZWRVc2U6Ci0gICAg
ICAgICAgICBjYXNlIFN0cmluZ1VzZToKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAg
ICAgIGNhc2UgT2JqZWN0T3JPdGhlclVzZToKLSAgICAgICAgICAgICAgICBub2RlLT5zZXRDYW5F
eGl0KHRydWUpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgZGVmYXVsdDoK
LSAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQogICAgICAgICAgICAgZm9yTm9kZShub2RlKS5z
ZXRUeXBlKFNwZWNCb29sZWFuKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CkBAIC04
MDcsOSArNzYwLDYgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQog
ICAgIGNhc2UgSXNTdHJpbmc6CiAgICAgY2FzZSBJc09iamVjdDoKICAgICBjYXNlIElzRnVuY3Rp
b246IHsKLSAgICAgICAgbm9kZS0+c2V0Q2FuRXhpdCgKLSAgICAgICAgICAgIG5vZGUtPm9wKCkg
PT0gSXNVbmRlZmluZWQKLSAgICAgICAgICAgICYmIG1fZ3JhcGgubWFzcXVlcmFkZXNBc1VuZGVm
aW5lZFdhdGNocG9pbnRJc1N0aWxsVmFsaWQobm9kZS0+b3JpZ2luLnNlbWFudGljKSk7CiAgICAg
ICAgIEpTVmFsdWUgY2hpbGQgPSBmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS52YWx1ZSgpOwogICAg
ICAgICBpZiAoY2hpbGQpIHsKICAgICAgICAgICAgIGJvb2wgY29uc3RhbnRXYXNTZXQgPSB0cnVl
OwpAQCAtODgzLDE3ICs4MzMsNiBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RT
dGF0ZVR5CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCi0gICAgICAgIHN3aXRjaCAo
bm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpKSB7Ci0gICAgICAgIGNhc2UgU3RyaW5nVXNlOgotICAg
ICAgICBjYXNlIENlbGxVc2U6Ci0gICAgICAgICAgICBub2RlLT5zZXRDYW5FeGl0KHRydWUpOwot
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgVW50eXBlZFVzZToKLSAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9U
X1JFQUNIRUQoKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9CiAgICAgICAgIGZvck5v
ZGUobm9kZSkuc2V0KG1fZ3JhcGgsIG1fZ3JhcGgubV92bS5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkp
OwogICAgICAgICBicmVhazsKICAgICB9CkBAIC05NTMsMTQgKzg5Miw2IEBAIGJvb2wgQWJzdHJh
Y3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHkKICAgICAgICAgfQogICAgICAgICAKICAgICAg
ICAgZm9yTm9kZShub2RlKS5zZXRUeXBlKFNwZWNCb29sZWFuKTsKLSAgICAgICAgCi0gICAgICAg
IC8vIFRoaXMgaXMgb3Zlcmx5IGNvbnNlcnZhdGl2ZS4gQnV0IHRoZSBvbmx5IHRoaW5nIHRoaXMg
cHJldmVudHMgaXMgc3RvcmUgZWxpbWluYXRpb24sCi0gICAgICAgIC8vIGFuZCBob3cgbGlrZWx5
IGlzIGl0LCByZWFsbHksIHRoYXQgeW91J2xsIGhhdmUgcmVkdW5kYW50IHN0b3JlcyBhY3Jvc3Mg
YSBjb21wYXJpc29uCi0gICAgICAgIC8vIG9wZXJhdGlvbj8gQ29tcGFyaXNvbiBvcGVyYXRpb25z
IGFyZSB0eXBpY2FsbHkgYXQgdGhlIGVuZCBvZiBiYXNpYyBibG9ja3MsIHNvCi0gICAgICAgIC8v
IHVubGVzcyB3ZSBoYXZlIGdsb2JhbCBzdG9yZSBlbGltaW5hdGlvbiAoc3VwZXIgdW5saWtlbHkg
Z2l2ZW4gaG93IHVucHJvZml0YWJsZSB0aGF0Ci0gICAgICAgIC8vIG9wdGltaXphdGlvbiBpcyB0
byBiZWdpbiB3aXRoKSwgeW91IGFyZW4ndCBnb2luZyB0byBiZSB3YW50aW5nIHRvIHN0b3JlIGVs
aW1pbmF0ZQotICAgICAgICAvLyBhY3Jvc3MgYW4gZXF1YWxpdHkgb3AuCi0gICAgICAgIG5vZGUt
PnNldENhbkV4aXQodHJ1ZSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICAgICAgICAgIApA
QCAtOTkzLDEyICs5MjQsMTAgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3Rh
dGVUeQogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBmb3JOb2RlKG5vZGUpLnNldFR5cGUo
U3BlY0Jvb2xlYW4pOwotICAgICAgICBub2RlLT5zZXRDYW5FeGl0KHRydWUpOyAvLyBUaGlzIGlz
IG92ZXJseSBjb25zZXJ2YXRpdmUuCiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICAgICAgCiAg
ICAgY2FzZSBTdHJpbmdDaGFyQ29kZUF0OgotICAgICAgICBub2RlLT5zZXRDYW5FeGl0KHRydWUp
OwogICAgICAgICBmb3JOb2RlKG5vZGUpLnNldFR5cGUoU3BlY0ludDMyKTsKICAgICAgICAgYnJl
YWs7CiAgICAgICAgIApAQCAtMTAwNywxMiArOTM2LDEwIEBAIGJvb2wgQWJzdHJhY3RJbnRlcnBy
ZXRlcjxBYnN0cmFjdFN0YXRlVHkKICAgICAgICAgYnJlYWs7CiAKICAgICBjYXNlIFN0cmluZ0No
YXJBdDoKLSAgICAgICAgbm9kZS0+c2V0Q2FuRXhpdCh0cnVlKTsKICAgICAgICAgZm9yTm9kZShu
b2RlKS5zZXQobV9ncmFwaCwgbV9ncmFwaC5tX3ZtLnN0cmluZ1N0cnVjdHVyZS5nZXQoKSk7CiAg
ICAgICAgIGJyZWFrOwogICAgICAgICAgICAgCiAgICAgY2FzZSBHZXRCeVZhbDogewotICAgICAg
ICBub2RlLT5zZXRDYW5FeGl0KHRydWUpOwogICAgICAgICBzd2l0Y2ggKG5vZGUtPmFycmF5TW9k
ZSgpLnR5cGUoKSkgewogICAgICAgICBjYXNlIEFycmF5OjpTZWxlY3RVc2luZ1ByZWRpY3Rpb25z
OgogICAgICAgICBjYXNlIEFycmF5OjpVbnByb2ZpbGVkOgpAQCAtMTExMSw3ICsxMDM4LDYgQEAg
Ym9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAgIGNhc2UgUHV0QnlW
YWxEaXJlY3Q6CiAgICAgY2FzZSBQdXRCeVZhbDoKICAgICBjYXNlIFB1dEJ5VmFsQWxpYXM6IHsK
LSAgICAgICAgbm9kZS0+c2V0Q2FuRXhpdCh0cnVlKTsKICAgICAgICAgc3dpdGNoIChub2RlLT5h
cnJheU1vZGUoKS5tb2RlRm9yUHV0KCkudHlwZSgpKSB7CiAgICAgICAgIGNhc2UgQXJyYXk6OkZv
cmNlRXhpdDoKICAgICAgICAgICAgIG1fc3RhdGUuc2V0SXNWYWxpZChmYWxzZSk7CkBAIC0xMTQz
LDEzICsxMDY5LDExIEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHkK
ICAgICB9CiAgICAgICAgICAgICAKICAgICBjYXNlIEFycmF5UHVzaDoKLSAgICAgICAgbm9kZS0+
c2V0Q2FuRXhpdCh0cnVlKTsKICAgICAgICAgY2xvYmJlcldvcmxkKG5vZGUtPm9yaWdpbi5zZW1h
bnRpYywgY2xvYmJlckxpbWl0KTsKICAgICAgICAgZm9yTm9kZShub2RlKS5zZXRUeXBlKFNwZWNC
eXRlY29kZU51bWJlcik7CiAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgCiAgICAgY2FzZSBB
cnJheVBvcDoKLSAgICAgICAgbm9kZS0+c2V0Q2FuRXhpdCh0cnVlKTsKICAgICAgICAgY2xvYmJl
cldvcmxkKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgY2xvYmJlckxpbWl0KTsKICAgICAgICAgZm9y
Tm9kZShub2RlKS5tYWtlSGVhcFRvcCgpOwogICAgICAgICBicmVhazsKQEAgLTExODAsNyArMTEw
NCw2IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHkKICAgICAgICAg
Ly8gY29uc3RhbnQgcHJvcGFnYXRpb24sIGJ1dCB3ZSBjYW4gZG8gYmV0dGVyOgogICAgICAgICAv
LyBXZSBjYW4gc3BlY2lhbGl6ZSB0aGUgc291cmNlIHZhcmlhYmxlJ3MgdmFsdWUgb24gZWFjaCBk
aXJlY3Rpb24gb2YKICAgICAgICAgLy8gdGhlIGJyYW5jaC4KLSAgICAgICAgbm9kZS0+c2V0Q2Fu
RXhpdCh0cnVlKTsgLy8gVGhpcyBpcyBvdmVybHkgY29uc2VydmF0aXZlLgogICAgICAgICBtX3N0
YXRlLnNldEJyYW5jaERpcmVjdGlvbihUYWtlQm90aCk7CiAgICAgICAgIGJyZWFrOwogICAgIH0K
QEAgLTExOTgsNyArMTEyMSw2IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0
YXRlVHkKICAgICBjYXNlIFRocm93OgogICAgIGNhc2UgVGhyb3dSZWZlcmVuY2VFcnJvcjoKICAg
ICAgICAgbV9zdGF0ZS5zZXRJc1ZhbGlkKGZhbHNlKTsKLSAgICAgICAgbm9kZS0+c2V0Q2FuRXhp
dCh0cnVlKTsKICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAKICAgICBjYXNlIFRvUHJpbWl0
aXZlOiB7CkBAIC0xMjM1LDEwICsxMTU3LDggQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFi
c3RyYWN0U3RhdGVUeQogICAgICAgICAgICAgZmlsdGVyKAogICAgICAgICAgICAgICAgIG5vZGUt
PmNoaWxkMSgpLAogICAgICAgICAgICAgICAgIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUt
Pm9yaWdpbi5zZW1hbnRpYyktPnN0cmluZ09iamVjdFN0cnVjdHVyZSgpKTsKLSAgICAgICAgICAg
IG5vZGUtPnNldENhbkV4aXQodHJ1ZSk7IC8vIFdlIGNvdWxkIGJlIG1vcmUgcHJlY2lzZSBidXQg
aXQncyBsaWtlbHkgbm90IHdvcnRoIGl0LgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNh
c2UgU3RyaW5nT3JTdHJpbmdPYmplY3RVc2U6Ci0gICAgICAgICAgICBub2RlLT5zZXRDYW5FeGl0
KHRydWUpOyAvLyBXZSBjb3VsZCBiZSBtb3JlIHByZWNpc2UgYnV0IGl0J3MgbGlrZWx5IG5vdCB3
b3J0aCBpdC4KICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENlbGxVc2U6CiAgICAg
ICAgIGNhc2UgVW50eXBlZFVzZToKQEAgLTEyNTksMjEgKzExNzksMTggQEAgYm9vbCBBYnN0cmFj
dEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAgIH0KICAgICAgICAgICAgIAogICAgIGNh
c2UgTmV3QXJyYXk6Ci0gICAgICAgIG5vZGUtPnNldENhbkV4aXQodHJ1ZSk7CiAgICAgICAgIGZv
ck5vZGUobm9kZSkuc2V0KAogICAgICAgICAgICAgbV9ncmFwaCwKICAgICAgICAgICAgIG1fZ3Jh
cGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyktPmFycmF5U3RydWN0dXJl
Rm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxsb2NhdGlvbihub2RlLT5pbmRleGluZ1R5cGUoKSkpOwog
ICAgICAgICBicmVhazsKICAgICAgICAgCiAgICAgY2FzZSBOZXdBcnJheUJ1ZmZlcjoKLSAgICAg
ICAgbm9kZS0+c2V0Q2FuRXhpdCh0cnVlKTsKICAgICAgICAgZm9yTm9kZShub2RlKS5zZXQoCiAg
ICAgICAgICAgICBtX2dyYXBoLAogICAgICAgICAgICAgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Io
bm9kZS0+b3JpZ2luLnNlbWFudGljKS0+YXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJp
bmdBbGxvY2F0aW9uKG5vZGUtPmluZGV4aW5nVHlwZSgpKSk7CiAgICAgICAgIGJyZWFrOwogCiAg
ICAgY2FzZSBOZXdBcnJheVdpdGhTaXplOgotICAgICAgICBub2RlLT5zZXRDYW5FeGl0KHRydWUp
OwogICAgICAgICBmb3JOb2RlKG5vZGUpLnNldFR5cGUoU3BlY0FycmF5KTsKICAgICAgICAgYnJl
YWs7CiAgICAgICAgIApAQCAtMTMxNyw3ICsxMjM0LDYgQEAgYm9vbCBBYnN0cmFjdEludGVycHJl
dGVyPEFic3RyYWN0U3RhdGVUeQogICAgIH0KICAgICAgICAgCiAgICAgY2FzZSBBbGxvY2F0aW9u
UHJvZmlsZVdhdGNocG9pbnQ6Ci0gICAgICAgIG5vZGUtPnNldENhbkV4aXQodHJ1ZSk7CiAgICAg
ICAgIGJyZWFrOwogCiAgICAgY2FzZSBOZXdPYmplY3Q6CkBAIC0xMzUwLDggKzEyNjYsNiBAQCBi
b29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5CiAgICAgICAgICAgICAgICAg
bV9zdGF0ZS52YXJpYWJsZXMoKS5vcGVyYW5kKAogICAgICAgICAgICAgICAgICAgICBtX2dyYXBo
LmFyZ3VtZW50c1JlZ2lzdGVyRm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykub2Zmc2V0KCkpLm1f
dHlwZSkpCiAgICAgICAgICAgICBtX3N0YXRlLnNldEZvdW5kQ29uc3RhbnRzKHRydWUpOwotICAg
ICAgICBlbHNlCi0gICAgICAgICAgICBub2RlLT5zZXRDYW5FeGl0KHRydWUpOwogICAgICAgICBi
cmVhazsKICAgICAgICAgCiAgICAgY2FzZSBHZXRNeUFyZ3VtZW50c0xlbmd0aDoKQEAgLTEzNjUs
MTAgKzEyNzksNiBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5CiAg
ICAgICAgICAgICBtX3N0YXRlLnNldERpZENsb2JiZXIodHJ1ZSk7IC8vIFByZXRlbmQgdGhhdCB3
ZSBjbG9iYmVyZWQgdG8gcHJldmVudCBjb25zdGFudCBmb2xkaW5nLgogICAgICAgICB9IGVsc2UK
ICAgICAgICAgICAgIGZvck5vZGUobm9kZSkuc2V0VHlwZShTcGVjSW50MzIpOwotICAgICAgICBu
b2RlLT5zZXRDYW5FeGl0KAotICAgICAgICAgICAgIWlzRW1wdHlTcGVjdWxhdGlvbigKLSAgICAg
ICAgICAgICAgICBtX3N0YXRlLnZhcmlhYmxlcygpLm9wZXJhbmQoCi0gICAgICAgICAgICAgICAg
ICAgIG1fZ3JhcGguYXJndW1lbnRzUmVnaXN0ZXJGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSku
bV90eXBlKSk7CiAgICAgICAgIGJyZWFrOwogICAgICAgICAKICAgICBjYXNlIEdldE15QXJndW1l
bnRzTGVuZ3RoU2FmZToKQEAgLTEzODEsNyArMTI5MSw2IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnBy
ZXRlcjxBYnN0cmFjdFN0YXRlVHkKICAgICAgICAgYnJlYWs7CiAgICAgICAgIAogICAgIGNhc2Ug
R2V0TXlBcmd1bWVudEJ5VmFsOiB7Ci0gICAgICAgIG5vZGUtPnNldENhbkV4aXQodHJ1ZSk7CiAg
ICAgICAgIElubGluZUNhbGxGcmFtZSogaW5saW5lQ2FsbEZyYW1lID0gbm9kZS0+b3JpZ2luLnNl
bWFudGljLmlubGluZUNhbGxGcmFtZTsKICAgICAgICAgSlNWYWx1ZSB2YWx1ZSA9IGZvck5vZGUo
bm9kZS0+Y2hpbGQxKCkpLm1fdmFsdWU7CiAgICAgICAgIGlmIChpbmxpbmVDYWxsRnJhbWUgJiYg
dmFsdWUgJiYgdmFsdWUuaXNJbnQzMigpKSB7CkBAIC0xNDAwLDcgKzEzMDksNiBAQCBib29sIEFi
c3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5CiAgICAgfQogICAgICAgICAKICAgICBj
YXNlIEdldE15QXJndW1lbnRCeVZhbFNhZmU6Ci0gICAgICAgIG5vZGUtPnNldENhbkV4aXQodHJ1
ZSk7CiAgICAgICAgIC8vIFRoaXMgcG90ZW50aWFsbHkgY2xvYmJlcnMgYWxsIHN0cnVjdHVyZXMg
aWYgdGhlIHByb3BlcnR5IHdlJ3JlIGFjY2Vzc2luZyBoYXMKICAgICAgICAgLy8gYSBnZXR0ZXIu
IFdlIGRvbid0IHNwZWN1bGF0ZSBhZ2FpbnN0IHRoaXMuCiAgICAgICAgIGNsb2JiZXJXb3JsZChu
b2RlLT5vcmlnaW4uc2VtYW50aWMsIGNsb2JiZXJMaW1pdCk7CkBAIC0xNDYzLDcgKzEzNzEsNiBA
QCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5CiAgICAgICAgICAgICAK
ICAgICBjYXNlIEdldEJ5SWQ6CiAgICAgY2FzZSBHZXRCeUlkRmx1c2g6Ci0gICAgICAgIG5vZGUt
PnNldENhbkV4aXQodHJ1ZSk7CiAgICAgICAgIGlmICghbm9kZS0+cHJlZGljdGlvbigpKSB7CiAg
ICAgICAgICAgICBtX3N0YXRlLnNldElzVmFsaWQoZmFsc2UpOwogICAgICAgICAgICAgYnJlYWs7
CkBAIC0xNTA1LDcgKzE0MTIsNiBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RT
dGF0ZVR5CiAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgCiAgICAgY2FzZSBHZXRBcnJheUxl
bmd0aDoKLSAgICAgICAgbm9kZS0+c2V0Q2FuRXhpdCh0cnVlKTsgLy8gTGllcywgYnV0IGl0J3Mg
dHJ1ZSBmb3IgdGhlIGNvbW1vbiBjYXNlIG9mIEpTQXJyYXksIHNvIGl0J3MgZ29vZCBlbm91Z2gu
CiAgICAgICAgIGZvck5vZGUobm9kZSkuc2V0VHlwZShTcGVjSW50MzIpOwogICAgICAgICBicmVh
azsKICAgICAgICAgCkBAIC0xNTE0LDcgKzE0MjAsNiBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0
ZXI8QWJzdHJhY3RTdGF0ZVR5CiAgICAgICAgIC8vIG1vcmUgdGhvcm91Z2hseS4gaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNjIwMAogICAgICAgICAvLyBGSVhNRTog
V2UgY291bGQgZWxpbWluYXRlIHRoZXNlIGVudGlyZWx5IGlmIHdlIGtub3cgdGhlIGV4YWN0IHZh
bHVlIHRoYXQgZmxvd3MgaW50byB0aGlzLgogICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA2MjAxCi0gICAgICAgIG5vZGUtPnNldENhbkV4aXQodHJ1
ZSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIApAQCAtMTUzNCw4ICsxNDM5LDYgQEAgYm9vbCBB
YnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIH0KIAotICAgICAgICBub2RlLT5zZXRDYW5FeGl0KHRydWUpOwotCiAgICAgICAgIGZp
bHRlcih2YWx1ZSwgc2V0KTsKICAgICAgICAgYnJlYWs7CiAgICAgfQpAQCAtMTU1OCw3ICsxNDYx
LDYgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAgICAgICAg
ICAgbV9zdGF0ZS5zZXRGb3VuZENvbnN0YW50cyh0cnVlKTsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICB9Ci0gICAgICAgIG5vZGUtPnNldENhbkV4aXQodHJ1ZSk7IC8vIExpZXMsIGJ1dCB0
aGlzIGlzIGZvbGxvd2VkIGJ5IG9wZXJhdGlvbnMgKGxpa2UgR2V0QnlWYWwpIHRoYXQgYWx3YXlz
IGV4aXQsIHNvIHRoZXJlIGlzIG5vIHBvaW50IGluIHVzIHRyeWluZyB0byBiZSBjbGV2ZXIgaGVy
ZS4KICAgICAgICAgc3dpdGNoIChub2RlLT5hcnJheU1vZGUoKS50eXBlKCkpIHsKICAgICAgICAg
Y2FzZSBBcnJheTo6U3RyaW5nOgogICAgICAgICAgICAgZmlsdGVyKG5vZGUtPmNoaWxkMSgpLCBT
cGVjU3RyaW5nKTsKQEAgLTE2MTMsNyArMTUxNSw2IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRl
cjxBYnN0cmFjdFN0YXRlVHkKICAgICAgICAgfQogICAgICAgICBBU1NFUlQobm9kZS0+YXJyYXlN
b2RlKCkuY29udmVyc2lvbigpID09IEFycmF5OjpDb252ZXJ0CiAgICAgICAgICAgICB8fCBub2Rl
LT5hcnJheU1vZGUoKS5jb252ZXJzaW9uKCkgPT0gQXJyYXk6OlJhZ2VDb252ZXJ0KTsKLSAgICAg
ICAgbm9kZS0+c2V0Q2FuRXhpdCh0cnVlKTsKICAgICAgICAgY2xvYmJlclN0cnVjdHVyZXMoY2xv
YmJlckxpbWl0KTsKICAgICAgICAgZmlsdGVyQXJyYXlNb2Rlcyhub2RlLT5jaGlsZDEoKSwgbm9k
ZS0+YXJyYXlNb2RlKCkuYXJyYXlNb2Rlc1RoYXRQYXNzRmlsdGVyaW5nKCkpOwogICAgICAgICBi
cmVhazsKQEAgLTE2MjIsNyArMTUyMyw2IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0
cmFjdFN0YXRlVHkKICAgICAgICAgQWJzdHJhY3RWYWx1ZSYgdmFsdWUgPSBmb3JOb2RlKG5vZGUt
PmNoaWxkMSgpKTsKICAgICAgICAgaWYgKHZhbHVlLm1fc3RydWN0dXJlLmlzU3Vic2V0T2YoU3Ry
dWN0dXJlU2V0KG5vZGUtPnN0cnVjdHVyZSgpKSkpCiAgICAgICAgICAgICBtX3N0YXRlLnNldEZv
dW5kQ29uc3RhbnRzKHRydWUpOwotICAgICAgICBub2RlLT5zZXRDYW5FeGl0KHRydWUpOwogICAg
ICAgICBjbG9iYmVyU3RydWN0dXJlcyhjbG9iYmVyTGltaXQpOwogICAgICAgICAKICAgICAgICAg
Ly8gV2UgaGF2ZSBhIGJ1bmNoIG9mIG9wdGlvbnMgb2YgaG93IHRvIGV4cHJlc3MgdGhlIGFic3Ry
YWN0IHNldCBhdCB0aGlzIHBvaW50LiBMZXQgc2V0IFMKQEAgLTE3ODAsNyArMTY4MCw2IEBAIGJv
b2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHkKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICB9CiAgICAgICAgIAotICAgICAgICBub2RlLT5zZXRDYW5FeGl0KHRydWUpOyAv
LyBMaWVzISBXZSBjYW4gZG8gYmV0dGVyLgogICAgICAgICBmaWx0ZXJCeVZhbHVlKG5vZGUtPmNo
aWxkMSgpLCAqbm9kZS0+ZnVuY3Rpb24oKSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KQEAgLTE3
OTMsMTUgKzE2OTIsMTIgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVU
eQogICAgICAgICAgICAgbV9zdGF0ZS5zZXRGb3VuZENvbnN0YW50cyh0cnVlKTsKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBub2RlLT5zZXRDYW5FeGl0
KHRydWUpOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgICAgIAogICAgIGNhc2UgUHV0QnlJ
ZDoKICAgICBjYXNlIFB1dEJ5SWRGbHVzaDoKICAgICBjYXNlIFB1dEJ5SWREaXJlY3Q6Ci0gICAg
ICAgIG5vZGUtPnNldENhbkV4aXQodHJ1ZSk7CiAgICAgICAgIC8vIFRoaXMgdXNlIG9mIG9ubHlT
dHJ1Y3R1cmUoKSBzaG91bGQgYmUgcmVwbGFjZWQgYnkgZ2l2aW5nIFB1dEJ5SWRTdGF0dXMgdGhl
IGFiaWxpdHkKICAgICAgICAgLy8gdG8gY29tcHV0ZSB0aGluZ3MgYmFzZWQgb24gYSBTdHJ1Y3R1
cmVTZXQsIGFuZCB0aGVuIHRvIGZhY3RvciBCeXRlQ29kZVBhcnNlcidzCiAgICAgICAgIC8vIGFi
aWxpdHkgdG8gZ2VuZXJhdGUgY29kZSBiYXNlZCBvbiBhIFB1dEJ5SWRTdGF0dXMgb3V0IG9mIEJ5
dGVDb2RlUGFyc2VyIHNvIHRoYXQKQEAgLTE4NDYsNyArMTc0Miw2IEBAIGJvb2wgQWJzdHJhY3RJ
bnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHkKICAgICAgICAgCiAgICAgY2FzZSBWYXJpYWJsZVdh
dGNocG9pbnQ6CiAgICAgY2FzZSBWYXJJbmplY3Rpb25XYXRjaHBvaW50OgotICAgICAgICBub2Rl
LT5zZXRDYW5FeGl0KHRydWUpOwogICAgICAgICBicmVhazsKICAgICAgICAgICAgIAogICAgIGNh
c2UgUHV0R2xvYmFsVmFyOgpAQCAtMTg1NCwxMiArMTc0OSwxMCBAQCBib29sIEFic3RyYWN0SW50
ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5CiAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgCiAg
ICAgY2FzZSBDaGVja0hhc0luc3RhbmNlOgotICAgICAgICBub2RlLT5zZXRDYW5FeGl0KHRydWUp
OwogICAgICAgICAvLyBTYWRseSwgd2UgZG9uJ3QgcHJvcGFnYXRlIHRoZSBmYWN0IHRoYXQgd2Un
dmUgZG9uZSBDaGVja0hhc0luc3RhbmNlCiAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgCiAg
ICAgY2FzZSBJbnN0YW5jZU9mOgotICAgICAgICBub2RlLT5zZXRDYW5FeGl0KHRydWUpOwogICAg
ICAgICAvLyBBZ2Fpbiwgc2FkbHksIHdlIGRvbid0IHByb3BhZ2F0ZSB0aGUgZmFjdCB0aGF0IHdl
J3ZlIGRvbmUgSW5zdGFuY2VPZgogICAgICAgICBmb3JOb2RlKG5vZGUpLnNldFR5cGUoU3BlY0Jv
b2xlYW4pOwogICAgICAgICBicmVhazsKQEAgLTE4ODMsMjQgKzE3NzYsMjAgQEAgYm9vbCBBYnN0
cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAgIGNhc2UgQ29uc3RydWN0OgogICAg
IGNhc2UgTmF0aXZlQ2FsbDoKICAgICBjYXNlIE5hdGl2ZUNvbnN0cnVjdDoKLSAgICAgICAgbm9k
ZS0+c2V0Q2FuRXhpdCh0cnVlKTsKICAgICAgICAgY2xvYmJlcldvcmxkKG5vZGUtPm9yaWdpbi5z
ZW1hbnRpYywgY2xvYmJlckxpbWl0KTsKICAgICAgICAgZm9yTm9kZShub2RlKS5tYWtlSGVhcFRv
cCgpOwogICAgICAgICBicmVhazsKIAogICAgIGNhc2UgRm9yY2VPU1JFeGl0OgotICAgICAgICBu
b2RlLT5zZXRDYW5FeGl0KHRydWUpOwogICAgICAgICBtX3N0YXRlLnNldElzVmFsaWQoZmFsc2Up
OwogICAgICAgICBicmVhazsKICAgICAgICAgCiAgICAgY2FzZSBJbnZhbGlkYXRpb25Qb2ludDoK
LSAgICAgICAgbm9kZS0+c2V0Q2FuRXhpdCh0cnVlKTsKICAgICAgICAgZm9yQWxsVmFsdWVzKGNs
b2JiZXJMaW1pdCwgQWJzdHJhY3RWYWx1ZTo6b2JzZXJ2ZUludmFsaWRhdGlvblBvaW50Rm9yKTsK
ICAgICAgICAgbV9zdGF0ZS5zZXRTdHJ1Y3R1cmVDbG9iYmVyU3RhdGUoU3RydWN0dXJlc0FyZVdh
dGNoZWQpOwogICAgICAgICBicmVhazsKIAogICAgIGNhc2UgQ2hlY2tXYXRjaGRvZ1RpbWVyOgot
ICAgICAgICBub2RlLT5zZXRDYW5FeGl0KHRydWUpOwogICAgICAgICBicmVhazsKIAogICAgIGNh
c2UgQnJlYWtwb2ludDoKQEAgLTE5MjYsNyArMTgxNSw2IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnBy
ZXRlcjxBYnN0cmFjdFN0YXRlVHkKICAgICBjYXNlIENoZWNrVGllclVwQW5kT1NSRW50ZXI6CiAg
ICAgY2FzZSBMb29wSGludDoKICAgICAgICAgLy8gV2UgcHJldGVuZCB0aGF0IGl0IGNhbiBleGl0
IGJlY2F1c2UgaXQgbWF5IHdhbnQgdG8gZ2V0IGFsbCBzdGF0ZS4KLSAgICAgICAgbm9kZS0+c2V0
Q2FuRXhpdCh0cnVlKTsKICAgICAgICAgYnJlYWs7CiAKICAgICBjYXNlIFpvbWJpZUhpbnQ6Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NTRVBoYXNlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NTRVBoYXNlLmNwcAkocmV2aXNpb24g
MTcwMDM2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDU0VQaGFzZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTM5LDEzICszOSwxMCBAQAogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNw
YWNlIERGRyB7CiAKLWVudW0gQ1NFTW9kZSB7IE5vcm1hbENTRSwgU3RvcmVFbGltaW5hdGlvbiB9
OwotCi10ZW1wbGF0ZTxDU0VNb2RlIGNzZU1vZGU+CiBjbGFzcyBDU0VQaGFzZSA6IHB1YmxpYyBQ
aGFzZSB7CiBwdWJsaWM6CiAgICAgQ1NFUGhhc2UoR3JhcGgmIGdyYXBoKQotICAgICAgICA6IFBo
YXNlKGdyYXBoLCBjc2VNb2RlID09IE5vcm1hbENTRSA/ICJjb21tb24gc3ViZXhwcmVzc2lvbiBl
bGltaW5hdGlvbiIgOiAic3RvcmUgZWxpbWluYXRpb24iKQorICAgICAgICA6IFBoYXNlKGdyYXBo
LCAiY29tbW9uIHN1YmV4cHJlc3Npb24gZWxpbWluYXRpb24iKQogICAgIHsKICAgICB9CiAgICAg
CkBAIC0yOTgsNjggKzI5NSw2IEBAIHByaXZhdGU6CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICB9CiAgICAgCi0gICAgTm9kZSogZ2xvYmFsVmFyU3RvcmVFbGltaW5hdGlvbihXcml0ZUJhcnJp
ZXI8VW5rbm93bj4qIHJlZ2lzdGVyUG9pbnRlcikKLSAgICB7Ci0gICAgICAgIGZvciAodW5zaWdu
ZWQgaSA9IG1faW5kZXhJbkJsb2NrOyBpLS07KSB7Ci0gICAgICAgICAgICBOb2RlKiBub2RlID0g
bV9jdXJyZW50QmxvY2stPmF0KGkpOwotICAgICAgICAgICAgc3dpdGNoIChub2RlLT5vcCgpKSB7
Ci0gICAgICAgICAgICBjYXNlIFB1dEdsb2JhbFZhcjoKLSAgICAgICAgICAgICAgICBpZiAobm9k
ZS0+cmVnaXN0ZXJQb2ludGVyKCkgPT0gcmVnaXN0ZXJQb2ludGVyKQotICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gbm9kZTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAg
ICAKLSAgICAgICAgICAgIGNhc2UgR2V0R2xvYmFsVmFyOgotICAgICAgICAgICAgICAgIGlmIChu
b2RlLT5yZWdpc3RlclBvaW50ZXIoKSA9PSByZWdpc3RlclBvaW50ZXIpCi0gICAgICAgICAgICAg
ICAgICAgIHJldHVybiAwOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAg
IAotICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgIGlmIChtX2dyYXBoLmNsb2JiZXJzV29ybGQobm9kZSkgfHwgbm9k
ZS0+Y2FuRXhpdCgpKQotICAgICAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICB9Ci0gICAg
ICAgIHJldHVybiAwOwotICAgIH0KLSAgICAKLSAgICBOb2RlKiBzY29wZWRWYXJTdG9yZUVsaW1p
bmF0aW9uKE5vZGUqIHNjb3BlLCBOb2RlKiByZWdpc3RlcnMsIGludCB2YXJOdW1iZXIpCi0gICAg
ewotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBtX2luZGV4SW5CbG9jazsgaS0tOykgewotICAg
ICAgICAgICAgTm9kZSogbm9kZSA9IG1fY3VycmVudEJsb2NrLT5hdChpKTsKLSAgICAgICAgICAg
IHN3aXRjaCAobm9kZS0+b3AoKSkgewotICAgICAgICAgICAgY2FzZSBQdXRDbG9zdXJlVmFyOiB7
Ci0gICAgICAgICAgICAgICAgaWYgKG5vZGUtPnZhck51bWJlcigpICE9IHZhck51bWJlcikKLSAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxk
MSgpID09IHNjb3BlICYmIG5vZGUtPmNoaWxkMigpID09IHJlZ2lzdGVycykKLSAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIG5vZGU7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAg
ICAgICB9Ci0gICAgICAgICAgICAgICAgCi0gICAgICAgICAgICBjYXNlIEdldENsb3N1cmVWYXI6
IHsKLSAgICAgICAgICAgICAgICAvLyBMZXQncyBiZSBjb25zZXJ2YXRpdmUuCi0gICAgICAgICAg
ICAgICAgaWYgKG5vZGUtPnZhck51bWJlcigpID09IHZhck51bWJlcikKLSAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIDA7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0g
ICAgICAgICAgICAgICAgCi0gICAgICAgICAgICBjYXNlIEdldExvY2FsOgotICAgICAgICAgICAg
Y2FzZSBTZXRMb2NhbDogewotICAgICAgICAgICAgICAgIFZhcmlhYmxlQWNjZXNzRGF0YSogdmFy
aWFibGVBY2Nlc3NEYXRhID0gbm9kZS0+dmFyaWFibGVBY2Nlc3NEYXRhKCk7Ci0gICAgICAgICAg
ICAgICAgaWYgKHZhcmlhYmxlQWNjZXNzRGF0YS0+aXNDYXB0dXJlZCgpCi0gICAgICAgICAgICAg
ICAgICAgICYmIHZhcmlhYmxlQWNjZXNzRGF0YS0+bG9jYWwoKSA9PSBzdGF0aWNfY2FzdDxWaXJ0
dWFsUmVnaXN0ZXI+KHZhck51bWJlcikpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiAwOwot
ICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBkZWZh
dWx0OgotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICAgICAg
aWYgKG1fZ3JhcGguY2xvYmJlcnNXb3JsZChub2RlKSB8fCBub2RlLT5jYW5FeGl0KCkpCi0gICAg
ICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIDA7Ci0gICAg
fQotICAgIAogICAgIE5vZGUqIGdldEJ5VmFsTG9hZEVsaW1pbmF0aW9uKE5vZGUqIGNoaWxkMSwg
Tm9kZSogY2hpbGQyLCBBcnJheU1vZGUgYXJyYXlNb2RlKQogICAgIHsKICAgICAgICAgZm9yICh1
bnNpZ25lZCBpID0gbV9pbmRleEluQmxvY2s7IGktLTspIHsKQEAgLTU0MSw3MyArNDc2LDYgQEAg
cHJpdmF0ZToKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICAKLSAgICBOb2RlKiBw
dXRTdHJ1Y3R1cmVTdG9yZUVsaW1pbmF0aW9uKE5vZGUqIGNoaWxkMSkKLSAgICB7Ci0gICAgICAg
IGZvciAodW5zaWduZWQgaSA9IG1faW5kZXhJbkJsb2NrOyBpLS07KSB7Ci0gICAgICAgICAgICBO
b2RlKiBub2RlID0gbV9jdXJyZW50QmxvY2stPmF0KGkpOwotICAgICAgICAgICAgaWYgKG5vZGUg
PT0gY2hpbGQxKQotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgc3dpdGNoIChu
b2RlLT5vcCgpKSB7Ci0gICAgICAgICAgICBjYXNlIENoZWNrU3RydWN0dXJlOgotICAgICAgICAg
ICAgICAgIHJldHVybiAwOwotICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgY2FzZSBQaGFu
dG9tUHV0U3RydWN0dXJlOgotICAgICAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZDEoKSA9PSBj
aGlsZDEpIC8vIE5vIG5lZWQgdG8gcmV0cmFjZSBvdXIgc3RlcHMuCi0gICAgICAgICAgICAgICAg
ICAgIHJldHVybiAwOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIAot
ICAgICAgICAgICAgY2FzZSBQdXRTdHJ1Y3R1cmU6Ci0gICAgICAgICAgICAgICAgaWYgKG5vZGUt
PmNoaWxkMSgpID09IGNoaWxkMSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5vZGU7Ci0g
ICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAvLyBQ
dXRTdHJ1Y3R1cmUgbmVlZHMgdG8gZXhlY3V0ZSBpZiB3ZSBHQy4gSGVuY2UgdGhpcyBuZWVkcyB0
bwotICAgICAgICAgICAgLy8gYmUgY2FyZWZ1bCB3aXRoIHJlc3BlY3QgdG8gbm9kZXMgdGhhdCBH
Qy4KLSAgICAgICAgICAgIGNhc2UgQ3JlYXRlQXJndW1lbnRzOgotICAgICAgICAgICAgY2FzZSBU
ZWFyT2ZmQXJndW1lbnRzOgotICAgICAgICAgICAgY2FzZSBOZXdGdW5jdGlvbk5vQ2hlY2s6Ci0g
ICAgICAgICAgICBjYXNlIE5ld0Z1bmN0aW9uOgotICAgICAgICAgICAgY2FzZSBOZXdGdW5jdGlv
bkV4cHJlc3Npb246Ci0gICAgICAgICAgICBjYXNlIENyZWF0ZUFjdGl2YXRpb246Ci0gICAgICAg
ICAgICBjYXNlIFRlYXJPZmZBY3RpdmF0aW9uOgotICAgICAgICAgICAgY2FzZSBUb1ByaW1pdGl2
ZToKLSAgICAgICAgICAgIGNhc2UgTmV3UmVnZXhwOgotICAgICAgICAgICAgY2FzZSBOZXdBcnJh
eUJ1ZmZlcjoKLSAgICAgICAgICAgIGNhc2UgTmV3QXJyYXk6Ci0gICAgICAgICAgICBjYXNlIE5l
d09iamVjdDoKLSAgICAgICAgICAgIGNhc2UgQ3JlYXRlVGhpczoKLSAgICAgICAgICAgIGNhc2Ug
QWxsb2NhdGVQcm9wZXJ0eVN0b3JhZ2U6Ci0gICAgICAgICAgICBjYXNlIFJlYWxsb2NhdGVQcm9w
ZXJ0eVN0b3JhZ2U6Ci0gICAgICAgICAgICBjYXNlIFR5cGVPZjoKLSAgICAgICAgICAgIGNhc2Ug
VG9TdHJpbmc6Ci0gICAgICAgICAgICBjYXNlIE5ld1N0cmluZ09iamVjdDoKLSAgICAgICAgICAg
IGNhc2UgTWFrZVJvcGU6Ci0gICAgICAgICAgICBjYXNlIE5ld1R5cGVkQXJyYXk6Ci0gICAgICAg
ICAgICBjYXNlIE11bHRpUHV0QnlPZmZzZXQ6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIDA7Ci0g
ICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAvLyBUaGlzIGVpdGhlciBleGl0cywgY2F1c2Vz
IGEgR0MgKGxhenkgc3RyaW5nIGFsbG9jYXRpb24pLCBvciBjbG9iYmVycwotICAgICAgICAgICAg
Ly8gdGhlIHdvcmxkLiBUaGUgY2hhbmNlcyBvZiBpdCBub3QgZG9pbmcgYW55IG9mIHRob3NlIHRo
aW5ncyBhcmUgc28KLSAgICAgICAgICAgIC8vIHNsaW0gdGhhdCB3ZSBtaWdodCBhcyB3ZWxsIG5v
dCBldmVuIHRyeSB0byByZWFzb24gYWJvdXQgaXQuCi0gICAgICAgICAgICBjYXNlIEdldEJ5VmFs
OgotICAgICAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICAgICAgICAgIAotICAgICAgICAg
ICAgY2FzZSBHZXRJbmRleGVkUHJvcGVydHlTdG9yYWdlOgotICAgICAgICAgICAgICAgIGlmIChu
b2RlLT5hcnJheU1vZGUoKS5nZXRJbmRleGVkUHJvcGVydHlTdG9yYWdlTWF5VHJpZ2dlckdDKCkp
Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChtX2dyYXBoLmNsb2JiZXJzV29y
bGQobm9kZSkgfHwgbm9kZS0+Y2FuRXhpdCgpKQotICAgICAgICAgICAgICAgIHJldHVybiAwOwot
ICAgICAgICAgICAgaWYgKGVkZ2VzVXNlU3RydWN0dXJlKG1fZ3JhcGgsIG5vZGUpKQotICAgICAg
ICAgICAgICAgIHJldHVybiAwOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0K
LSAgICAKICAgICBOb2RlKiBnZXRCeU9mZnNldExvYWRFbGltaW5hdGlvbih1bnNpZ25lZCBpZGVu
dGlmaWVyTnVtYmVyLCBOb2RlKiBiYXNlKQogICAgIHsKICAgICAgICAgZm9yICh1bnNpZ25lZCBp
ID0gbV9pbmRleEluQmxvY2s7IGktLTspIHsKQEAgLTY5OCw1NSArNTY2LDYgQEAgcHJpdmF0ZToK
ICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogICAgIAotICAgIE5vZGUqIHB1dEJ5T2Zmc2V0U3Rv
cmVFbGltaW5hdGlvbih1bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyLCBOb2RlKiBjaGlsZDEpCi0g
ICAgewotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBtX2luZGV4SW5CbG9jazsgaS0tOykgewot
ICAgICAgICAgICAgTm9kZSogbm9kZSA9IG1fY3VycmVudEJsb2NrLT5hdChpKTsKLSAgICAgICAg
ICAgIGlmIChub2RlID09IGNoaWxkMSkKLSAgICAgICAgICAgICAgICBicmVhazsKLQotICAgICAg
ICAgICAgc3dpdGNoIChub2RlLT5vcCgpKSB7Ci0gICAgICAgICAgICBjYXNlIEdldEJ5T2Zmc2V0
OgotICAgICAgICAgICAgICAgIGlmIChtX2dyYXBoLm1fc3RvcmFnZUFjY2Vzc0RhdGFbbm9kZS0+
c3RvcmFnZUFjY2Vzc0RhdGFJbmRleCgpXS5pZGVudGlmaWVyTnVtYmVyID09IGlkZW50aWZpZXJO
dW1iZXIpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgY2FzZSBQdXRCeU9mZnNldDoKLSAg
ICAgICAgICAgICAgICBpZiAobV9ncmFwaC5tX3N0b3JhZ2VBY2Nlc3NEYXRhW25vZGUtPnN0b3Jh
Z2VBY2Nlc3NEYXRhSW5kZXgoKV0uaWRlbnRpZmllck51bWJlciA9PSBpZGVudGlmaWVyTnVtYmVy
KSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZDEoKSA9PSBjaGlsZDEpIC8v
IE11c3QgYmUgc2FtZSBwcm9wZXJ0eSBzdG9yYWdlLgotICAgICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIG5vZGU7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAKLSAgICAgICAg
ICAgIGNhc2UgTXVsdGlQdXRCeU9mZnNldDoKLSAgICAgICAgICAgICAgICBpZiAobm9kZS0+bXVs
dGlQdXRCeU9mZnNldERhdGEoKS5pZGVudGlmaWVyTnVtYmVyID09IGlkZW50aWZpZXJOdW1iZXIp
Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgY2FzZSBQdXRCeVZhbERpcmVjdDoKLSAgICAg
ICAgICAgIGNhc2UgUHV0QnlWYWw6Ci0gICAgICAgICAgICBjYXNlIFB1dEJ5VmFsQWxpYXM6Ci0g
ICAgICAgICAgICBjYXNlIEdldEJ5VmFsOgotICAgICAgICAgICAgICAgIGlmIChtX2dyYXBoLmJ5
VmFsSXNQdXJlKG5vZGUpKSB7Ci0gICAgICAgICAgICAgICAgICAgIC8vIElmIFB1dEJ5VmFsIHNw
ZWN1bGF0ZXMgdGhhdCBpdCdzIGFjY2Vzc2luZyBhbiBhcnJheSB3aXRoIGFuCi0gICAgICAgICAg
ICAgICAgICAgIC8vIGludGVnZXIgaW5kZXgsIHRoZW4gaXQncyBpbXBvc3NpYmxlIGZvciBpdCB0
byBjYXVzZSBhIHN0cnVjdHVyZQotICAgICAgICAgICAgICAgICAgICAvLyBjaGFuZ2UuCi0gICAg
ICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAg
ICByZXR1cm4gMDsKLSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAg
ICAgICAgICAgICAgaWYgKG1fZ3JhcGguY2xvYmJlcnNXb3JsZChub2RlKSkKLSAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9
Ci0gICAgICAgICAgICBpZiAobm9kZS0+Y2FuRXhpdCgpKQotICAgICAgICAgICAgICAgIHJldHVy
biAwOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLSAgICAKICAgICBOb2Rl
KiBnZXRQcm9wZXJ0eVN0b3JhZ2VMb2FkRWxpbWluYXRpb24oTm9kZSogY2hpbGQxKQogICAgIHsK
ICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gbV9pbmRleEluQmxvY2s7IGktLTspIHsKQEAgLTky
OSw0OCArNzQ4LDQ0IEBAIHByaXZhdGU6CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KICAgICAK
LSAgICBzdHJ1Y3QgU2V0TG9jYWxTdG9yZUVsaW1pbmF0aW9uUmVzdWx0IHsKLSAgICAgICAgU2V0
TG9jYWxTdG9yZUVsaW1pbmF0aW9uUmVzdWx0KCkKLSAgICAgICAgICAgIDogbWF5QmVBY2Nlc3Nl
ZChmYWxzZSkKLSAgICAgICAgICAgICwgbWF5RXhpdChmYWxzZSkKLSAgICAgICAgICAgICwgbWF5
Q2xvYmJlcldvcmxkKGZhbHNlKQotICAgICAgICB7CisgICAgYm9vbCBpbnZhbGlkYXRpb25Qb2lu
dEVsaW1pbmF0aW9uKCkKKyAgICB7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IG1faW5kZXhJ
bkJsb2NrOyBpLS07KSB7CisgICAgICAgICAgICBOb2RlKiBub2RlID0gbV9jdXJyZW50QmxvY2st
PmF0KGkpOworICAgICAgICAgICAgaWYgKG5vZGUtPm9wKCkgPT0gSW52YWxpZGF0aW9uUG9pbnQp
CisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICBpZiAod3JpdGVzT3Zl
cmxhcChtX2dyYXBoLCBub2RlLCBXYXRjaHBvaW50X2ZpcmUpKQorICAgICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBib29sIG1heUJlQWNjZXNzZWQ7Ci0g
ICAgICAgIGJvb2wgbWF5RXhpdDsKLSAgICAgICAgYm9vbCBtYXlDbG9iYmVyV29ybGQ7Ci0gICAg
fTsKLSAgICBTZXRMb2NhbFN0b3JlRWxpbWluYXRpb25SZXN1bHQgc2V0TG9jYWxTdG9yZUVsaW1p
bmF0aW9uKAotICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgbG9jYWwsIE5vZGUqIGV4cGVjdGVkTm9k
ZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICAKKyAgICBOb2RlKiBzZXRMb2Nh
bFN0b3JlRWxpbWluYXRpb24oVmlydHVhbFJlZ2lzdGVyIGxvY2FsKQogICAgIHsKLSAgICAgICAg
U2V0TG9jYWxTdG9yZUVsaW1pbmF0aW9uUmVzdWx0IHJlc3VsdDsKICAgICAgICAgZm9yICh1bnNp
Z25lZCBpID0gbV9pbmRleEluQmxvY2s7IGktLTspIHsKICAgICAgICAgICAgIE5vZGUqIG5vZGUg
PSBtX2N1cnJlbnRCbG9jay0+YXQoaSk7CiAgICAgICAgICAgICBzd2l0Y2ggKG5vZGUtPm9wKCkp
IHsKICAgICAgICAgICAgIGNhc2UgR2V0TG9jYWw6CiAgICAgICAgICAgICBjYXNlIEZsdXNoOgog
ICAgICAgICAgICAgICAgIGlmIChub2RlLT5sb2NhbCgpID09IGxvY2FsKQotICAgICAgICAgICAg
ICAgICAgICByZXN1bHQubWF5QmVBY2Nlc3NlZCA9IHRydWU7CisgICAgICAgICAgICAgICAgICAg
IHJldHVybiBudWxscHRyOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAg
IAogICAgICAgICAgICAgY2FzZSBHZXRMb2NhbFVubGlua2VkOgogICAgICAgICAgICAgICAgIGlm
IChub2RlLT51bmxpbmtlZExvY2FsKCkgPT0gbG9jYWwpCi0gICAgICAgICAgICAgICAgICAgIHJl
c3VsdC5tYXlCZUFjY2Vzc2VkID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgCiAgICAgICAg
ICAgICBjYXNlIFNldExvY2FsOiB7Ci0gICAgICAgICAgICAgICAgaWYgKG5vZGUtPmxvY2FsKCkg
IT0gbG9jYWwpCi0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIGlm
IChub2RlICE9IGV4cGVjdGVkTm9kZSkKLSAgICAgICAgICAgICAgICAgICAgcmVzdWx0Lm1heUJl
QWNjZXNzZWQgPSB0cnVlOwotICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAg
ICAgICAgICAgaWYgKG5vZGUtPmxvY2FsKCkgPT0gbG9jYWwpCisgICAgICAgICAgICAgICAgICAg
IHJldHVybiBub2RlOworICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAg
ICAgICAgICAgICAgIAogICAgICAgICAgICAgY2FzZSBHZXRDbG9zdXJlVmFyOgogICAgICAgICAg
ICAgY2FzZSBQdXRDbG9zdXJlVmFyOgogICAgICAgICAgICAgICAgIGlmIChzdGF0aWNfY2FzdDxW
aXJ0dWFsUmVnaXN0ZXI+KG5vZGUtPnZhck51bWJlcigpKSA9PSBsb2NhbCkKLSAgICAgICAgICAg
ICAgICAgICAgcmVzdWx0Lm1heUJlQWNjZXNzZWQgPSB0cnVlOworICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAg
ICAKICAgICAgICAgICAgIGNhc2UgR2V0TXlTY29wZToKQEAgLTk3OCwyNSArNzkzLDI0IEBAIHBy
aXZhdGU6CiAgICAgICAgICAgICAgICAgaWYgKG5vZGUtPm9yaWdpbi5zZW1hbnRpYy5pbmxpbmVD
YWxsRnJhbWUpCiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIGlm
IChtX2dyYXBoLnVuY2hlY2tlZEFjdGl2YXRpb25SZWdpc3RlcigpID09IGxvY2FsKQotICAgICAg
ICAgICAgICAgICAgICByZXN1bHQubWF5QmVBY2Nlc3NlZCA9IHRydWU7CisgICAgICAgICAgICAg
ICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAg
ICAgICAgIAogICAgICAgICAgICAgY2FzZSBDaGVja0FyZ3VtZW50c05vdENyZWF0ZWQ6CiAgICAg
ICAgICAgICBjYXNlIEdldE15QXJndW1lbnRzTGVuZ3RoOgogICAgICAgICAgICAgY2FzZSBHZXRN
eUFyZ3VtZW50c0xlbmd0aFNhZmU6CiAgICAgICAgICAgICAgICAgaWYgKG1fZ3JhcGgudW5jaGVj
a2VkQXJndW1lbnRzUmVnaXN0ZXJGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSA9PSBsb2NhbCkK
LSAgICAgICAgICAgICAgICAgICAgcmVzdWx0Lm1heUJlQWNjZXNzZWQgPSB0cnVlOworICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgICAgICAgICAKICAgICAgICAgICAgIGNhc2UgR2V0TXlBcmd1bWVudEJ5VmFsOgogICAg
ICAgICAgICAgY2FzZSBHZXRNeUFyZ3VtZW50QnlWYWxTYWZlOgotICAgICAgICAgICAgICAgIHJl
c3VsdC5tYXlCZUFjY2Vzc2VkID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAg
IGNhc2UgR2V0QnlWYWw6CiAgICAgICAgICAgICAgICAgLy8gSWYgdGhpcyBpcyBhY2Nlc3Npbmcg
YXJndW1lbnRzIHRoZW4gaXQncyBwb3RlbnRpYWxseSBhY2Nlc3NpbmcgbG9jYWxzLgogICAgICAg
ICAgICAgICAgIGlmIChub2RlLT5hcnJheU1vZGUoKS50eXBlKCkgPT0gQXJyYXk6OkFyZ3VtZW50
cykKLSAgICAgICAgICAgICAgICAgICAgcmVzdWx0Lm1heUJlQWNjZXNzZWQgPSB0cnVlOworICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgIGNhc2UgQ3JlYXRlQXJndW1lbnRzOgpAQCAt
MTAwNiwzMyArODIwLDE3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgLy8gYXJlIGxpdmUu
IFdlIGNvdWxkIGJlIGNsZXZlciBoZXJlIGFuZCBjaGVjayBpZiB0aGUgbG9jYWwgcXVhbGlmaWVz
IGFzIGFuCiAgICAgICAgICAgICAgICAgLy8gYXJndW1lbnQgcmVnaXN0ZXIuIEJ1dCB0aGF0IHNl
ZW1zIGxpa2UgaXQgd291bGQgYnV5IHVzIHZlcnkgbGl0dGxlIHNpbmNlCiAgICAgICAgICAgICAg
ICAgLy8gYW55IGtpbmQgb2YgdGVhciBvZmZzIGFyZSByYXJlIHRvIGJlZ2luIHdpdGguCi0gICAg
ICAgICAgICAgICAgcmVzdWx0Lm1heUJlQWNjZXNzZWQgPSB0cnVlOwotICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICAgICAgICAg
IAogICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgIHJlc3VsdC5tYXlFeGl0IHw9IG5vZGUtPmNhbkV4aXQoKTsKLSAg
ICAgICAgICAgIHJlc3VsdC5tYXlDbG9iYmVyV29ybGQgfD0gbV9ncmFwaC5jbG9iYmVyc1dvcmxk
KG5vZGUpOwotICAgICAgICB9Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7
Ci0gICAgICAgIC8vIEJlIHNhZmUgaW4gcmVsZWFzZSBtb2RlLgotICAgICAgICByZXN1bHQubWF5
QmVBY2Nlc3NlZCA9IHRydWU7Ci0gICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgfQotICAgIAot
ICAgIGJvb2wgaW52YWxpZGF0aW9uUG9pbnRFbGltaW5hdGlvbigpCi0gICAgewotICAgICAgICBm
b3IgKHVuc2lnbmVkIGkgPSBtX2luZGV4SW5CbG9jazsgaS0tOykgewotICAgICAgICAgICAgTm9k
ZSogbm9kZSA9IG1fY3VycmVudEJsb2NrLT5hdChpKTsKLSAgICAgICAgICAgIGlmIChub2RlLT5v
cCgpID09IEludmFsaWRhdGlvblBvaW50KQotICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwot
ICAgICAgICAgICAgaWYgKHdyaXRlc092ZXJsYXAobV9ncmFwaCwgbm9kZSwgV2F0Y2hwb2ludF9m
aXJlKSkKLSAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGlmIChtX2dyYXBoLmNs
b2JiZXJzV29ybGQobm9kZSkpCisgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAg
ICAgIH0KLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAg
ICB9Ci0gICAgCisKICAgICB2b2lkIGVsaW1pbmF0ZUlycmVsZXZhbnRQaGFudG9tQ2hpbGRyZW4o
Tm9kZSogbm9kZSkKICAgICB7CiAgICAgICAgIEFTU0VSVChub2RlLT5vcCgpID09IFBoYW50b20p
OwpAQCAtMTA4OSwxNCArODg3LDExIEBAIHByaXZhdGU6CiAgICAgCiAgICAgdm9pZCBwZXJmb3Jt
Tm9kZUNTRShOb2RlKiBub2RlKQogICAgIHsKLSAgICAgICAgaWYgKGNzZU1vZGUgPT0gTm9ybWFs
Q1NFKQotICAgICAgICAgICAgbV9ncmFwaC5wZXJmb3JtU3Vic3RpdHV0aW9uKG5vZGUpOworICAg
ICAgICBtX2dyYXBoLnBlcmZvcm1TdWJzdGl0dXRpb24obm9kZSk7CiAgICAgICAgIAogICAgICAg
ICBzd2l0Y2ggKG5vZGUtPm9wKCkpIHsKICAgICAgICAgCiAgICAgICAgIGNhc2UgSWRlbnRpdHk6
Ci0gICAgICAgICAgICBpZiAoY3NlTW9kZSA9PSBTdG9yZUVsaW1pbmF0aW9uKQotICAgICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICAgICAgc2V0UmVwbGFjZW1lbnQobm9kZS0+Y2hpbGQxKCku
bm9kZSgpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgCkBAIC0xMTM0LDggKzky
OSw2IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgRG91YmxlUmVwOgogICAgICAgICBjYXNlIFZh
bHVlUmVwOgogICAgICAgICBjYXNlIEludDUyUmVwOgotICAgICAgICAgICAgaWYgKGNzZU1vZGUg
PT0gU3RvcmVFbGltaW5hdGlvbikKLSAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg
IHNldFJlcGxhY2VtZW50KHB1cmVDU0Uobm9kZSkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgICAgICAKQEAgLTExNDcsOCArOTQwLDYgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBBcml0
aE1vZDoKICAgICAgICAgY2FzZSBVSW50MzJUb051bWJlcjoKICAgICAgICAgY2FzZSBEb3VibGVB
c0ludDMyOiB7Ci0gICAgICAgICAgICBpZiAoY3NlTW9kZSA9PSBTdG9yZUVsaW1pbmF0aW9uKQot
ICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgTm9kZSogY2FuZGlkYXRlID0gcHVy
ZUNTRShub2RlKTsKICAgICAgICAgICAgIGlmICghY2FuZGlkYXRlKQogICAgICAgICAgICAgICAg
IGJyZWFrOwpAQCAtMTE2MiwxNCArOTUzLDEwIEBAIHByaXZhdGU6CiAgICAgICAgIH0KICAgICAg
ICAgICAgIAogICAgICAgICBjYXNlIEdldENhbGxlZToKLSAgICAgICAgICAgIGlmIChjc2VNb2Rl
ID09IFN0b3JlRWxpbWluYXRpb24pCi0gICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAg
ICBzZXRSZXBsYWNlbWVudChnZXRDYWxsZWVMb2FkRWxpbWluYXRpb24oKSk7CiAgICAgICAgICAg
ICBicmVhazsKIAogICAgICAgICBjYXNlIEdldExvY2FsOiB7Ci0gICAgICAgICAgICBpZiAoY3Nl
TW9kZSA9PSBTdG9yZUVsaW1pbmF0aW9uKQotICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICAgICAgVmFyaWFibGVBY2Nlc3NEYXRhKiB2YXJpYWJsZUFjY2Vzc0RhdGEgPSBub2RlLT52YXJp
YWJsZUFjY2Vzc0RhdGEoKTsKICAgICAgICAgICAgIGlmICghdmFyaWFibGVBY2Nlc3NEYXRhLT5p
c0NhcHR1cmVkKCkpCiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0xMTk2LDgwICs5ODMsMjgg
QEAgcHJpdmF0ZToKICAgICAgICAgfQogICAgICAgICAgICAgCiAgICAgICAgIGNhc2UgR2V0TG9j
YWxVbmxpbmtlZDogewotICAgICAgICAgICAgaWYgKGNzZU1vZGUgPT0gU3RvcmVFbGltaW5hdGlv
bikKLSAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIE5vZGUqIHJlbGV2YW50TG9j
YWxPcElnbm9yZWQ7CiAgICAgICAgICAgICBzZXRSZXBsYWNlbWVudChnZXRMb2NhbExvYWRFbGlt
aW5hdGlvbihub2RlLT51bmxpbmtlZExvY2FsKCksIHJlbGV2YW50TG9jYWxPcElnbm9yZWQsIHRy
dWUpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgICAgICAKLSAgICAg
ICAgY2FzZSBGbHVzaDogewotICAgICAgICAgICAgQVNTRVJUKG1fZ3JhcGgubV9mb3JtICE9IFNT
QSk7Ci0gICAgICAgICAgICBWYXJpYWJsZUFjY2Vzc0RhdGEqIHZhcmlhYmxlQWNjZXNzRGF0YSA9
IG5vZGUtPnZhcmlhYmxlQWNjZXNzRGF0YSgpOwotICAgICAgICAgICAgVmlydHVhbFJlZ2lzdGVy
IGxvY2FsID0gdmFyaWFibGVBY2Nlc3NEYXRhLT5sb2NhbCgpOwotICAgICAgICAgICAgaWYgKCFu
b2RlLT5jaGlsZDEoKSkgewotICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBJdCdzIHNpbGx5IHRo
YXQgd2UgcHVudCBvbiBmbHVzaC1lbGltaW5hdGluZyBoZXJlLiBXZSBkb24ndCByZWFsbHkKLSAg
ICAgICAgICAgICAgICAvLyBuZWVkIGNoaWxkMSB0byBmaWd1cmUgb3V0IHdoYXQncyBnb2luZyBv
bi4KLSAgICAgICAgICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTMwNTIxCi0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAg
ICAgICAgICBOb2RlKiByZXBsYWNlbWVudCA9IG5vZGUtPmNoaWxkMSgpLm5vZGUoKTsKLSAgICAg
ICAgICAgIGlmIChyZXBsYWNlbWVudC0+b3AoKSAhPSBTZXRMb2NhbCkKLSAgICAgICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgICAgIEFTU0VSVChyZXBsYWNlbWVudC0+dmFyaWFibGVBY2Nlc3NE
YXRhKCkgPT0gdmFyaWFibGVBY2Nlc3NEYXRhKTsKLSAgICAgICAgICAgIC8vIEZJWE1FOiBXZSBz
aG91bGQgYmUgYWJsZSB0byByZW1vdmUgU2V0TG9jYWxzIHRoYXQgY2FuIGV4aXQ7IHdlIGp1c3Qg
bmVlZAotICAgICAgICAgICAgLy8gdG8gcmVwbGFjZSB0aGVtIHdpdGggYXBwcm9wcmlhdGUgdHlw
ZSBjaGVja3MuCi0gICAgICAgICAgICBpZiAoY3NlTW9kZSA9PSBOb3JtYWxDU0UpIHsKLSAgICAg
ICAgICAgICAgICAvLyBOZWVkIHRvIGJlIGNvbnNlcnZhdGl2ZSBhdCB0aGlzIHRpbWU7IGlmIHRo
ZSBTZXRMb2NhbCBoYXMgYW55IGNoYW5jZSBvZiBwZXJmb3JtaW5nCi0gICAgICAgICAgICAgICAg
Ly8gYW55IHNwZWN1bGF0aW9ucyB0aGVuIHdlIGNhbm5vdCBkbyBhbnl0aGluZy4KLSAgICAgICAg
ICAgICAgICBGbHVzaEZvcm1hdCBmb3JtYXQgPSB2YXJpYWJsZUFjY2Vzc0RhdGEtPmZsdXNoRm9y
bWF0KCk7Ci0gICAgICAgICAgICAgICAgQVNTRVJUKGZvcm1hdCAhPSBEZWFkRmx1c2gpOwotICAg
ICAgICAgICAgICAgIGlmIChmb3JtYXQgIT0gRmx1c2hlZEpTVmFsdWUpCi0gICAgICAgICAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBpZiAo
cmVwbGFjZW1lbnQtPmNhbkV4aXQoKSkKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgICAgICBTZXRMb2NhbFN0b3JlRWxpbWluYXRpb25SZXN1bHQgcmVz
dWx0ID0KLSAgICAgICAgICAgICAgICBzZXRMb2NhbFN0b3JlRWxpbWluYXRpb24obG9jYWwsIHJl
cGxhY2VtZW50KTsKLSAgICAgICAgICAgIGlmIChyZXN1bHQubWF5QmVBY2Nlc3NlZCB8fCByZXN1
bHQubWF5Q2xvYmJlcldvcmxkKQotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAg
QVNTRVJUKHJlcGxhY2VtZW50LT5vcCgpID09IFNldExvY2FsKTsKLSAgICAgICAgICAgIC8vIEZJ
WE1FOiBJbnZlc3RpZ2F0ZSB1c2luZyBtYXlFeGl0IGFzIGEgZnVydGhlciBvcHRpbWl6YXRpb24u
Ci0gICAgICAgICAgICBub2RlLT5jb252ZXJ0VG9QaGFudG9tKCk7Ci0gICAgICAgICAgICBOb2Rl
KiBkYXRhTm9kZSA9IHJlcGxhY2VtZW50LT5jaGlsZDEoKS5ub2RlKCk7Ci0gICAgICAgICAgICBB
U1NFUlQoZGF0YU5vZGUtPmhhc1Jlc3VsdCgpKTsKLSAgICAgICAgICAgIG5vZGUtPmNoaWxkMSgp
ID0gZGF0YU5vZGUtPmRlZmF1bHRFZGdlKCk7Ci0gICAgICAgICAgICBtX2dyYXBoLmRldGhyZWFk
KCk7Ci0gICAgICAgICAgICBtX2NoYW5nZWQgPSB0cnVlOwotICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgIH0KLSAgICAgICAgICAgIAogICAgICAgICBjYXNlIEpTQ29uc3RhbnQ6CiAgICAgICAg
IGNhc2UgRG91YmxlQ29uc3RhbnQ6CiAgICAgICAgIGNhc2UgSW50NTJDb25zdGFudDoKLSAgICAg
ICAgICAgIGlmIChjc2VNb2RlID09IFN0b3JlRWxpbWluYXRpb24pCi0gICAgICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgICAgICAvLyBUaGlzIGlzIHN0cmFuZ2UsIGJ1dCBuZWNlc3NhcnkuIFNv
bWUgcGhhc2VzIHdpbGwgY29udmVydCBub2RlcyB0byBjb25zdGFudHMsCiAgICAgICAgICAgICAv
LyB3aGljaCBtYXkgcmVzdWx0IGluIGR1cGxpY2F0ZWQgY29uc3RhbnRzLiBXZSB1c2UgQ1NFIHRv
IGNsZWFuIHRoaXMgdXAuCiAgICAgICAgICAgICBzZXRSZXBsYWNlbWVudChjb25zdGFudENTRShu
b2RlKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIAogICAgICAgICBjYXNlIENv
bnN0YW50U3RvcmFnZVBvaW50ZXI6Ci0gICAgICAgICAgICBpZiAoY3NlTW9kZSA9PSBTdG9yZUVs
aW1pbmF0aW9uKQotICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgc2V0UmVwbGFj
ZW1lbnQoY29uc3RhbnRTdG9yYWdlUG9pbnRlckNTRShub2RlKSk7CiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgICAgIAogICAgICAgICBjYXNlIEdldEFycmF5TGVuZ3RoOgotICAgICAgICAg
ICAgaWYgKGNzZU1vZGUgPT0gU3RvcmVFbGltaW5hdGlvbikKLSAgICAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgICAgIHNldFJlcGxhY2VtZW50KGdldEFycmF5TGVuZ3RoRWxpbWluYXRpb24o
bm9kZS0+Y2hpbGQxKCkubm9kZSgpKSk7CiAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICBj
YXNlIEdldE15U2NvcGU6Ci0gICAgICAgICAgICBpZiAoY3NlTW9kZSA9PSBTdG9yZUVsaW1pbmF0
aW9uKQotICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgc2V0UmVwbGFjZW1lbnQo
Z2V0TXlTY29wZUxvYWRFbGltaW5hdGlvbigpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICAgICAgCkBAIC0xMjgwLDggKzEwMTUsNiBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIENvbXBh
cmVHcmVhdGVyOgogICAgICAgICBjYXNlIENvbXBhcmVHcmVhdGVyRXE6CiAgICAgICAgIGNhc2Ug
Q29tcGFyZUVxOiB7Ci0gICAgICAgICAgICBpZiAoY3NlTW9kZSA9PSBTdG9yZUVsaW1pbmF0aW9u
KQotICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgaWYgKG1fZ3JhcGguaXNQcmVk
aWN0ZWROdW1lcmljYWwobm9kZSkpIHsKICAgICAgICAgICAgICAgICBOb2RlKiByZXBsYWNlbWVu
dCA9IHB1cmVDU0Uobm9kZSk7CiAgICAgICAgICAgICAgICAgaWYgKHJlcGxhY2VtZW50ICYmIG1f
Z3JhcGguaXNQcmVkaWN0ZWROdW1lcmljYWwocmVwbGFjZW1lbnQpKQpAQCAtMTI5Myw0OSArMTAy
NiwyNiBAQCBwcml2YXRlOgogICAgICAgICAvLyBGaW5hbGx5IGhhbmRsZSBoZWFwIGFjY2Vzc2Vz
LiBUaGVzZSBhcmUgbm90IHF1aXRlIHB1cmUsIGJ1dCB3ZSBjYW4gc3RpbGwKICAgICAgICAgLy8g
b3B0aW1pemUgdGhlbSBwcm92aWRlZCB0aGF0IHNvbWUgc3VidGxlIGNvbmRpdGlvbnMgYXJlIG1l
dC4KICAgICAgICAgY2FzZSBHZXRHbG9iYWxWYXI6Ci0gICAgICAgICAgICBpZiAoY3NlTW9kZSA9
PSBTdG9yZUVsaW1pbmF0aW9uKQotICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAg
c2V0UmVwbGFjZW1lbnQoZ2xvYmFsVmFyTG9hZEVsaW1pbmF0aW9uKG5vZGUtPnJlZ2lzdGVyUG9p
bnRlcigpKSk7CiAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICBjYXNlIEdldENsb3N1cmVW
YXI6IHsKLSAgICAgICAgICAgIGlmIChjc2VNb2RlID09IFN0b3JlRWxpbWluYXRpb24pCi0gICAg
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBzZXRSZXBsYWNlbWVudChzY29wZWRWYXJM
b2FkRWxpbWluYXRpb24obm9kZS0+Y2hpbGQxKCkubm9kZSgpLCBub2RlLT52YXJOdW1iZXIoKSkp
OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIAogICAgICAgICBjYXNlIFZhckluamVj
dGlvbldhdGNocG9pbnQ6Ci0gICAgICAgICAgICBpZiAoY3NlTW9kZSA9PSBTdG9yZUVsaW1pbmF0
aW9uKQotICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgaWYgKHZhckluamVjdGlv
bldhdGNocG9pbnRFbGltaW5hdGlvbigpKQogICAgICAgICAgICAgICAgIGVsaW1pbmF0ZSgpOwog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAKLSAgICAgICAgY2FzZSBQdXRHbG9iYWxW
YXI6Ci0gICAgICAgICAgICBpZiAoY3NlTW9kZSA9PSBOb3JtYWxDU0UpCi0gICAgICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgICAgICBlbGltaW5hdGUoZ2xvYmFsVmFyU3RvcmVFbGltaW5hdGlv
bihub2RlLT5yZWdpc3RlclBvaW50ZXIoKSkpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
ICAgICAKLSAgICAgICAgY2FzZSBQdXRDbG9zdXJlVmFyOiB7Ci0gICAgICAgICAgICBpZiAoY3Nl
TW9kZSA9PSBOb3JtYWxDU0UpCi0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBl
bGltaW5hdGUoc2NvcGVkVmFyU3RvcmVFbGltaW5hdGlvbihub2RlLT5jaGlsZDEoKS5ub2RlKCks
IG5vZGUtPmNoaWxkMigpLm5vZGUoKSwgbm9kZS0+dmFyTnVtYmVyKCkpKTsKLSAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICB9Ci0KICAgICAgICAgY2FzZSBHZXRCeVZhbDoKLSAgICAgICAgICAg
IGlmIChjc2VNb2RlID09IFN0b3JlRWxpbWluYXRpb24pCi0gICAgICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgICAgICBpZiAobV9ncmFwaC5ieVZhbElzUHVyZShub2RlKSkKICAgICAgICAgICAg
ICAgICBzZXRSZXBsYWNlbWVudChnZXRCeVZhbExvYWRFbGltaW5hdGlvbihub2RlLT5jaGlsZDEo
KS5ub2RlKCksIG5vZGUtPmNoaWxkMigpLm5vZGUoKSwgbm9kZS0+YXJyYXlNb2RlKCkpKTsKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIAogICAgICAgICBjYXNlIFB1dEJ5VmFs
RGlyZWN0OgogICAgICAgICBjYXNlIFB1dEJ5VmFsOiB7Ci0gICAgICAgICAgICBpZiAoY3NlTW9k
ZSA9PSBTdG9yZUVsaW1pbmF0aW9uKQotICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAg
ICAgRWRnZSBjaGlsZDEgPSBtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDApOwogICAgICAgICAg
ICAgRWRnZSBjaGlsZDIgPSBtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDEpOwogICAgICAgICAg
ICAgaWYgKG5vZGUtPmFycmF5TW9kZSgpLmNhbkNTRVN0b3JhZ2UoKSkgewpAQCAtMTM0OCw0MiAr
MTA1OCwyNiBAQCBwcml2YXRlOgogICAgICAgICB9CiAgICAgICAgICAgICAKICAgICAgICAgY2Fz
ZSBDaGVja1N0cnVjdHVyZToKLSAgICAgICAgICAgIGlmIChjc2VNb2RlID09IFN0b3JlRWxpbWlu
YXRpb24pCi0gICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBpZiAoY2hlY2tTdHJ1
Y3R1cmVFbGltaW5hdGlvbihub2RlLT5zdHJ1Y3R1cmVTZXQoKSwgbm9kZS0+Y2hpbGQxKCkubm9k
ZSgpKSkKICAgICAgICAgICAgICAgICBlbGltaW5hdGUoKTsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICAgICAgCi0gICAgICAgIGNhc2UgUHV0U3RydWN0dXJlOgotICAgICAgICAgICAgaWYg
KGNzZU1vZGUgPT0gTm9ybWFsQ1NFKQotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAg
ICAgZWxpbWluYXRlKHB1dFN0cnVjdHVyZVN0b3JlRWxpbWluYXRpb24obm9kZS0+Y2hpbGQxKCku
bm9kZSgpKSwgUGhhbnRvbVB1dFN0cnVjdHVyZSk7Ci0gICAgICAgICAgICBicmVhazsKLQogICAg
ICAgICBjYXNlIENoZWNrRnVuY3Rpb246Ci0gICAgICAgICAgICBpZiAoY3NlTW9kZSA9PSBTdG9y
ZUVsaW1pbmF0aW9uKQotICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgaWYgKGNo
ZWNrRnVuY3Rpb25FbGltaW5hdGlvbihub2RlLT5mdW5jdGlvbigpLCBub2RlLT5jaGlsZDEoKS5u
b2RlKCkpKQogICAgICAgICAgICAgICAgIGVsaW1pbmF0ZSgpOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgICAgICAgICAgCiAgICAgICAgIGNhc2UgQ2hlY2tFeGVjdXRhYmxlOgotICAgICAg
ICAgICAgaWYgKGNzZU1vZGUgPT0gU3RvcmVFbGltaW5hdGlvbikKLSAgICAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgICAgIGlmIChjaGVja0V4ZWN1dGFibGVFbGltaW5hdGlvbihub2RlLT5l
eGVjdXRhYmxlKCksIG5vZGUtPmNoaWxkMSgpLm5vZGUoKSkpCiAgICAgICAgICAgICAgICAgZWxp
bWluYXRlKCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAKICAgICAgICAg
Y2FzZSBDaGVja0FycmF5OgotICAgICAgICAgICAgaWYgKGNzZU1vZGUgPT0gU3RvcmVFbGltaW5h
dGlvbikKLSAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGlmIChjaGVja0FycmF5
RWxpbWluYXRpb24obm9kZS0+Y2hpbGQxKCkubm9kZSgpLCBub2RlLT5hcnJheU1vZGUoKSkpCiAg
ICAgICAgICAgICAgICAgZWxpbWluYXRlKCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
ICAgIAogICAgICAgICBjYXNlIEdldEluZGV4ZWRQcm9wZXJ0eVN0b3JhZ2U6IHsKLSAgICAgICAg
ICAgIGlmIChjc2VNb2RlID09IFN0b3JlRWxpbWluYXRpb24pCi0gICAgICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgICAgICBzZXRSZXBsYWNlbWVudChnZXRJbmRleGVkUHJvcGVydHlTdG9yYWdl
TG9hZEVsaW1pbmF0aW9uKG5vZGUtPmNoaWxkMSgpLm5vZGUoKSwgbm9kZS0+YXJyYXlNb2RlKCkp
KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CkBAIC0xMzkxLDQyICsxMDg1LDI2IEBA
IHByaXZhdGU6CiAgICAgICAgIGNhc2UgR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXQ6CiAgICAgICAg
IGNhc2UgR2V0R2V0dGVyOgogICAgICAgICBjYXNlIEdldFNldHRlcjogewotICAgICAgICAgICAg
aWYgKGNzZU1vZGUgPT0gU3RvcmVFbGltaW5hdGlvbikKLSAgICAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgICAgIHNldFJlcGxhY2VtZW50KGdldEludGVybmFsRmllbGRMb2FkRWxpbWluYXRp
b24obm9kZS0+b3AoKSwgbm9kZS0+Y2hpbGQxKCkubm9kZSgpKSk7CiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgfQogCiAgICAgICAgIGNhc2UgR2V0QnV0dGVyZmx5OgotICAgICAgICAgICAg
aWYgKGNzZU1vZGUgPT0gU3RvcmVFbGltaW5hdGlvbikKLSAgICAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgICAgIHNldFJlcGxhY2VtZW50KGdldFByb3BlcnR5U3RvcmFnZUxvYWRFbGltaW5h
dGlvbihub2RlLT5jaGlsZDEoKS5ub2RlKCkpKTsKICAgICAgICAgICAgIGJyZWFrOwogCiAgICAg
ICAgIGNhc2UgR2V0QnlPZmZzZXQ6Ci0gICAgICAgICAgICBpZiAoY3NlTW9kZSA9PSBTdG9yZUVs
aW1pbmF0aW9uKQotICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgc2V0UmVwbGFj
ZW1lbnQoZ2V0QnlPZmZzZXRMb2FkRWxpbWluYXRpb24obV9ncmFwaC5tX3N0b3JhZ2VBY2Nlc3NE
YXRhW25vZGUtPnN0b3JhZ2VBY2Nlc3NEYXRhSW5kZXgoKV0uaWRlbnRpZmllck51bWJlciwgbm9k
ZS0+Y2hpbGQyKCkubm9kZSgpKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIAog
ICAgICAgICBjYXNlIEdldEdldHRlclNldHRlckJ5T2Zmc2V0OgotICAgICAgICAgICAgaWYgKGNz
ZU1vZGUgPT0gU3RvcmVFbGltaW5hdGlvbikKLSAgICAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgICAgIHNldFJlcGxhY2VtZW50KGdldEdldHRlclNldHRlckJ5T2Zmc2V0TG9hZEVsaW1pbmF0
aW9uKG1fZ3JhcGgubV9zdG9yYWdlQWNjZXNzRGF0YVtub2RlLT5zdG9yYWdlQWNjZXNzRGF0YUlu
ZGV4KCldLmlkZW50aWZpZXJOdW1iZXIsIG5vZGUtPmNoaWxkMigpLm5vZGUoKSkpOwogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgICAKICAgICAgICAgY2FzZSBNdWx0aUdldEJ5T2Zmc2V0
OgotICAgICAgICAgICAgaWYgKGNzZU1vZGUgPT0gU3RvcmVFbGltaW5hdGlvbikKLSAgICAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgICAgIHNldFJlcGxhY2VtZW50KGdldEJ5T2Zmc2V0TG9h
ZEVsaW1pbmF0aW9uKG5vZGUtPm11bHRpR2V0QnlPZmZzZXREYXRhKCkuaWRlbnRpZmllck51bWJl
ciwgbm9kZS0+Y2hpbGQxKCkubm9kZSgpKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
ICAgIAotICAgICAgICBjYXNlIFB1dEJ5T2Zmc2V0OgotICAgICAgICAgICAgaWYgKGNzZU1vZGUg
PT0gTm9ybWFsQ1NFKQotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgZWxpbWlu
YXRlKHB1dEJ5T2Zmc2V0U3RvcmVFbGltaW5hdGlvbihtX2dyYXBoLm1fc3RvcmFnZUFjY2Vzc0Rh
dGFbbm9kZS0+c3RvcmFnZUFjY2Vzc0RhdGFJbmRleCgpXS5pZGVudGlmaWVyTnVtYmVyLCBub2Rl
LT5jaGlsZDEoKS5ub2RlKCkpKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgCiAg
ICAgICAgIGNhc2UgSW52YWxpZGF0aW9uUG9pbnQ6CiAgICAgICAgICAgICBpZiAoaW52YWxpZGF0
aW9uUG9pbnRFbGltaW5hdGlvbigpKQogICAgICAgICAgICAgICAgIGVsaW1pbmF0ZSgpOwpAQCAt
MTQ0MCw2ICsxMTE4LDIzIEBAIHByaXZhdGU6CiAgICAgICAgICAgICBlbGltaW5hdGVJcnJlbGV2
YW50UGhhbnRvbUNoaWxkcmVuKG5vZGUpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAg
ICAKKyAgICAgICAgY2FzZSBGbHVzaDoKKyAgICAgICAgICAgIC8vIFRoaXMgaXMgbmVlZGVkIGZv
ciBhcmd1bWVudHMgc2ltcGxpZmljYXRpb24gdG8gd29yay4gV2UgbmVlZCB0byBlbGltaW5hdGUg
dGhlCisgICAgICAgICAgICAvLyByZWR1bmRhbmN5IGJldHdlZW4gb3BfZW50ZXIncyB1bmRlZmlu
ZWQtYWxsLXRoZS10aGluZ3MgYW5kIHRoZSBzdWJzZXF1ZW50CisgICAgICAgICAgICAvLyBvcF9p
bml0X2xhenlfcmVnLgorICAgICAgICAgICAgCisgICAgICAgICAgICBBU1NFUlQobV9ncmFwaC5t
X2Zvcm0gIT0gU1NBKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKE5vZGUqIHNldExv
Y2FsID0gc2V0TG9jYWxTdG9yZUVsaW1pbmF0aW9uKG5vZGUtPmxvY2FsKCkpKSB7CisgICAgICAg
ICAgICAgICAgbm9kZS0+Y29udmVydFRvUGhhbnRvbSgpOworICAgICAgICAgICAgICAgIE5vZGUq
IGRhdGFOb2RlID0gc2V0TG9jYWwtPmNoaWxkMSgpLm5vZGUoKTsKKyAgICAgICAgICAgICAgICBB
U1NFUlQoZGF0YU5vZGUtPmhhc1Jlc3VsdCgpKTsKKyAgICAgICAgICAgICAgICBub2RlLT5jaGls
ZDEoKSA9IGRhdGFOb2RlLT5kZWZhdWx0RWRnZSgpOworICAgICAgICAgICAgICAgIG1fZ3JhcGgu
ZGV0aHJlYWQoKTsKKyAgICAgICAgICAgICAgICBtX2NoYW5nZWQgPSB0cnVlOworICAgICAgICAg
ICAgfQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAKICAgICAgICAgZGVmYXVsdDoK
ICAgICAgICAgICAgIC8vIGRvIG5vdGhpbmcuCiAgICAgICAgICAgICBicmVhazsKQEAgLTE0NjMs
MTIgKzExNTgsNiBAQCBwcml2YXRlOgogICAgICAgICAgICAgbV9jdXJyZW50Tm9kZSA9IGJsb2Nr
LT5hdChtX2luZGV4SW5CbG9jayk7CiAgICAgICAgICAgICBwZXJmb3JtTm9kZUNTRShtX2N1cnJl
bnROb2RlKTsKICAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgaWYgKCFBU1NFUlRfRElTQUJM
RUQgJiYgY3NlTW9kZSA9PSBTdG9yZUVsaW1pbmF0aW9uKSB7Ci0gICAgICAgICAgICAvLyBOb2Jv
ZHkgc2hvdWxkIGhhdmUgcmVwbGFjZW1lbnRzIHNldC4KLSAgICAgICAgICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCBibG9jay0+c2l6ZSgpOyArK2kpCi0gICAgICAgICAgICAgICAgQVNTRVJU
KCFibG9jay0+YXQoaSktPm1pc2MucmVwbGFjZW1lbnQpOwotICAgICAgICB9CiAgICAgfQogICAg
IAogICAgIEJhc2ljQmxvY2sqIG1fY3VycmVudEJsb2NrOwpAQCAtMTQ4MSwxMyArMTE3MCw3IEBA
IHByaXZhdGU6CiBib29sIHBlcmZvcm1DU0UoR3JhcGgmIGdyYXBoKQogewogICAgIFNhbXBsaW5n
UmVnaW9uIHNhbXBsaW5nUmVnaW9uKCJERkcgQ1NFIFBoYXNlIik7Ci0gICAgcmV0dXJuIHJ1blBo
YXNlPENTRVBoYXNlPE5vcm1hbENTRT4+KGdyYXBoKTsKLX0KLQotYm9vbCBwZXJmb3JtU3RvcmVF
bGltaW5hdGlvbihHcmFwaCYgZ3JhcGgpCi17Ci0gICAgU2FtcGxpbmdSZWdpb24gc2FtcGxpbmdS
ZWdpb24oIkRGRyBTdG9yZSBFbGltaW5hdGlvbiBQaGFzZSIpOwotICAgIHJldHVybiBydW5QaGFz
ZTxDU0VQaGFzZTxTdG9yZUVsaW1pbmF0aW9uPj4oZ3JhcGgpOworICAgIHJldHVybiBydW5QaGFz
ZTxDU0VQaGFzZT4oZ3JhcGgpOwogfQogCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6REZHCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NTRVBoYXNlLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDU0VQaGFzZS5oCShyZXZpc2lvbiAxNzAwMzYp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NTRVBoYXNlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTQwLDkgKzQwLDYgQEAgY2xhc3MgR3JhcGg7CiAvLyBvbiBhIGZldyBiZW5jaG1hcmtz
LCBhbmQgaXMgcmVsYXRpdmVseSBjaGVhcCB0byBydW4uCiBib29sIHBlcmZvcm1DU0UoR3JhcGgm
KTsKIAotLy8gUGVyZm9ybSBqdXN0IGJsb2NrLWxvY2FsIHN0b3JlIGVsaW1pbmF0aW9uLgotYm9v
bCBwZXJmb3JtU3RvcmVFbGltaW5hdGlvbihHcmFwaCYpOwotCiB9IH0gLy8gbmFtZXNwYWNlIEpT
Qzo6REZHCiAKICNlbmRpZiAvLyBFTkFCTEUoREZHX0pJVCkKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAkocmV2aXNpb24gMTcwMDM2KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNzE1LDM4ICs3MTUsNiBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIGZpeEVkZ2U8SW50
MzJVc2U+KG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgICAgIGVsc2UgaWYgKG5vZGUtPmNoaWxk
MSgpLT5zaG91bGRTcGVjdWxhdGVOdW1iZXIoKSkKICAgICAgICAgICAgICAgICBmaXhFZGdlPERv
dWJsZVJlcFVzZT4obm9kZS0+Y2hpbGQxKCkpOwotCi0gICAgICAgICAgICBOb2RlKiBsb2dpY2Fs
Tm90ID0gbm9kZS0+Y2hpbGQxKCkubm9kZSgpOwotICAgICAgICAgICAgaWYgKGxvZ2ljYWxOb3Qt
Pm9wKCkgPT0gTG9naWNhbE5vdCkgewotICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAg
IC8vIE1ha2Ugc3VyZSB0aGF0IE9TUiBleGl0IGNhbid0IG9ic2VydmUgdGhlIExvZ2ljYWxOb3Qu
IElmIGl0IGNhbiwKLSAgICAgICAgICAgICAgICAvLyB0aGVuIHdlIG11c3QgY29tcHV0ZSBpdCBh
bmQgY2Fubm90IHBlZXBob2xlIGFyb3VuZCBpdC4KLSAgICAgICAgICAgICAgICBib29sIGZvdW5k
ID0gZmFsc2U7Ci0gICAgICAgICAgICAgICAgYm9vbCBvayA9IHRydWU7Ci0gICAgICAgICAgICAg
ICAgZm9yICh1bnNpZ25lZCBpID0gbV9pbmRleEluQmxvY2s7IGktLTspIHsKLSAgICAgICAgICAg
ICAgICAgICAgTm9kZSogY2FuZGlkYXRlID0gbV9ibG9jay0+YXQoaSk7Ci0gICAgICAgICAgICAg
ICAgICAgIGlmIChjYW5kaWRhdGUgPT0gbG9naWNhbE5vdCkgewotICAgICAgICAgICAgICAgICAg
ICAgICAgZm91bmQgPSB0cnVlOwotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgaWYgKGNhbmRpZGF0ZS0+Y2Fu
RXhpdCgpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBvayA9IGZhbHNlOwotICAgICAgICAg
ICAgICAgICAgICAgICAgZm91bmQgPSB0cnVlOwotICAgICAgICAgICAgICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICAgICAgQVNTRVJUX1VOVVNFRChmb3VuZCwgZm91bmQpOwotICAgICAgICAgICAgICAgIAotICAg
ICAgICAgICAgICAgIGlmIChvaykgewotICAgICAgICAgICAgICAgICAgICBFZGdlIG5ld0NoaWxk
RWRnZSA9IGxvZ2ljYWxOb3QtPmNoaWxkMSgpOwotICAgICAgICAgICAgICAgICAgICBpZiAobmV3
Q2hpbGRFZGdlLT5oYXNCb29sZWFuUmVzdWx0KCkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAg
IG5vZGUtPmNoaWxkcmVuLnNldENoaWxkMShuZXdDaGlsZEVkZ2UpOwotICAgICAgICAgICAgICAg
ICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAgICAgICBCcmFuY2hEYXRhKiBkYXRhID0gbm9k
ZS0+YnJhbmNoRGF0YSgpOwotICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjpzd2FwKGRhdGEt
PnRha2VuLCBkYXRhLT5ub3RUYWtlbik7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICB9CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQog
ICAgICAgICAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcAko
cmV2aXNpb24gMTcwMDM2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTU5OCwxNyArNTk4LDYgQEAgdm9pZCBHcmFwaDo6a2lsbFVu
cmVhY2hhYmxlQmxvY2tzKCkKICAgICB9CiB9CiAKLXZvaWQgR3JhcGg6OnJlc2V0RXhpdFN0YXRl
cygpCi17Ci0gICAgZm9yIChCbG9ja0luZGV4IGJsb2NrSW5kZXggPSAwOyBibG9ja0luZGV4IDwg
bV9ibG9ja3Muc2l6ZSgpOyArK2Jsb2NrSW5kZXgpIHsKLSAgICAgICAgQmFzaWNCbG9jayogYmxv
Y2sgPSBtX2Jsb2Nrc1tibG9ja0luZGV4XS5nZXQoKTsKLSAgICAgICAgaWYgKCFibG9jaykKLSAg
ICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBmb3IgKHVuc2lnbmVkIGluZGV4SW5CbG9jayA9
IGJsb2NrLT5zaXplKCk7IGluZGV4SW5CbG9jay0tOykKLSAgICAgICAgICAgIGJsb2NrLT5hdChp
bmRleEluQmxvY2spLT5zZXRDYW5FeGl0KHRydWUpOwotICAgIH0KLX0KLQogdm9pZCBHcmFwaDo6
aW52YWxpZGF0ZUNGRygpCiB7CiAgICAgbV9kb21pbmF0b3JzLmludmFsaWRhdGUoKTsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmgJKHJldmlzaW9uIDE3MDAzNikKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaAkod29ya2luZyBjb3B5KQpAQCAtNTU3
LDggKzU1Nyw2IEBAIHB1YmxpYzoKICAgICB2b2lkIGRldGVybWluZVJlYWNoYWJpbGl0eSgpOwog
ICAgIHZvaWQgcmVzZXRSZWFjaGFiaWxpdHkoKTsKICAgICAKLSAgICB2b2lkIHJlc2V0RXhpdFN0
YXRlcygpOwotICAgIAogICAgIHVuc2lnbmVkIHZhckFyZ051bUNoaWxkcmVuKE5vZGUqIG5vZGUp
CiAgICAgewogICAgICAgICBBU1NFUlQobm9kZS0+ZmxhZ3MoKSAmIE5vZGVIYXNWYXJBcmdzKTsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTWF5RXhpdC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdNYXlFeGl0LmNwcAkocmV2aXNpb24g
MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTWF5RXhpdC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTAsMCArMSw4NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiREZHTWF5RXhpdC5o
IgorCisjaW5jbHVkZSAiREZHR3JhcGguaCIKKyNpbmNsdWRlICJERkdOb2RlLmgiCisjaW5jbHVk
ZSAiT3BlcmF0aW9ucy5oIgorCituYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CisKK25h
bWVzcGFjZSB7CisKK2NsYXNzIEVkZ2VNYXlFeGl0IHsKK3B1YmxpYzoKKyAgICBFZGdlTWF5RXhp
dCgpCisgICAgICAgIDogbV9yZXN1bHQoZmFsc2UpCisgICAgeworICAgIH0KKyAgICAKKyAgICB2
b2lkIG9wZXJhdG9yKCkoTm9kZSosIEVkZ2UgZWRnZSkKKyAgICB7CisgICAgICAgIG1fcmVzdWx0
IHw9IGVkZ2Uud2lsbEhhdmVDaGVjaygpOworICAgIH0KKyAgICAKKyAgICBib29sIHJlc3VsdCgp
IGNvbnN0IHsgcmV0dXJuIG1fcmVzdWx0OyB9CisgICAgCitwcml2YXRlOgorICAgIGJvb2wgbV9y
ZXN1bHQ7Cit9OworCit9IC8vIGFub255bW91cyBuYW1lc3BhY2UKKworYm9vbCBtYXlFeGl0KEdy
YXBoJiBncmFwaCwgTm9kZSogbm9kZSkKK3sKKyAgICBzd2l0Y2ggKG5vZGUtPm9wKCkpIHsKKyAg
ICBjYXNlIFNldEFyZ3VtZW50OgorICAgIGNhc2UgSlNDb25zdGFudDoKKyAgICBjYXNlIERvdWJs
ZUNvbnN0YW50OgorICAgIGNhc2UgSW50NTJDb25zdGFudDoKKyAgICBjYXNlIE1vdkhpbnQ6Cisg
ICAgY2FzZSBTZXRMb2NhbDoKKyAgICBjYXNlIEZsdXNoOgorICAgIGNhc2UgUGhhbnRvbToKKyAg
ICBjYXNlIENoZWNrOgorICAgIGNhc2UgSGFyZFBoYW50b206CisgICAgY2FzZSBHZXRMb2NhbDoK
KyAgICBjYXNlIExvb3BIaW50OgorICAgIGNhc2UgUGhhbnRvbUFyZ3VtZW50czoKKyAgICAgICAg
YnJlYWs7CisgICAgICAgIAorICAgIGRlZmF1bHQ6CisgICAgICAgIC8vIElmIGluIGRvdWJ0LCBy
ZXR1cm4gdHJ1ZS4KKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgRWRnZU1heUV4
aXQgZnVuY3RvcjsKKyAgICBERkdfTk9ERV9ET19UT19DSElMRFJFTihncmFwaCwgbm9kZSwgZnVu
Y3Rvcik7CisgICAgcmV0dXJuIGZ1bmN0b3IucmVzdWx0KCk7Cit9CisKK30gfSAvLyBuYW1lc3Bh
Y2UgSlNDOjpERkcKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdNYXlFeGl0
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdNYXlFeGl0LmgJ
KHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR01heUV4aXQuaAko
d29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQ2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgREZHTWF5RXhpdF9oCisjZGVmaW5lIERGR01h
eUV4aXRfaAorCisjaWYgRU5BQkxFKERGR19KSVQpCisKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3Bh
Y2UgREZHIHsKKworY2xhc3MgR3JhcGg7CitzdHJ1Y3QgTm9kZTsKKworLy8gQSAqdmVyeSogY29u
c2VydmF0aXZlIGFwcHJveGltYXRpb24gb2Ygd2hldGhlciBvciBub3QgYSBub2RlIGNvdWxkIHBv
c3NpYmx5IGV4aXQuIFVzdWFsbHkKKy8vIHJldHVybnMgdHJ1ZSBleGNlcHQgaW4gY2FzZXMgd2hl
cmUgd2Ugb2J2aW91c2x5IGRvbid0IGV4cGVjdCBhbiBleGl0LgorCitib29sIG1heUV4aXQoR3Jh
cGgmLCBOb2RlKik7CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpERkcKKworI2VuZGlmIC8vIEVO
QUJMRShERkdfSklUKQorCisjZW5kaWYgLy8gREZHTWF5RXhpdF9oCisKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHTm9kZS5oCShyZXZpc2lvbiAxNzAwMzYpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR05vZGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzIzLDcgKzMyMyw2IEBA
IHN0cnVjdCBOb2RlIHsKICAgICAKICAgICBib29sIG1lcmdlRmxhZ3MoTm9kZUZsYWdzIGZsYWdz
KQogICAgIHsKLSAgICAgICAgQVNTRVJUKCEoZmxhZ3MgJiBOb2RlRG9lc05vdEV4aXQpKTsKICAg
ICAgICAgTm9kZUZsYWdzIG5ld0ZsYWdzID0gbV9mbGFncyB8IGZsYWdzOwogICAgICAgICBpZiAo
bmV3RmxhZ3MgPT0gbV9mbGFncykKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTMzMyw3
ICszMzIsNiBAQCBzdHJ1Y3QgTm9kZSB7CiAgICAgCiAgICAgYm9vbCBmaWx0ZXJGbGFncyhOb2Rl
RmxhZ3MgZmxhZ3MpCiAgICAgewotICAgICAgICBBU1NFUlQoZmxhZ3MgJiBOb2RlRG9lc05vdEV4
aXQpOwogICAgICAgICBOb2RlRmxhZ3MgbmV3RmxhZ3MgPSBtX2ZsYWdzICYgZmxhZ3M7CiAgICAg
ICAgIGlmIChuZXdGbGFncyA9PSBtX2ZsYWdzKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpA
QCAtMzgxLDE5ICszNzksNiBAQCBzdHJ1Y3QgTm9kZSB7CiAgICAgICAgIHJldHVybiBtX2ZsYWdz
ICYgTm9kZU11c3RHZW5lcmF0ZTsKICAgICB9CiAgICAgCi0gICAgdm9pZCBzZXRDYW5FeGl0KGJv
b2wgZXhpdHMpCi0gICAgewotICAgICAgICBpZiAoZXhpdHMpCi0gICAgICAgICAgICBtX2ZsYWdz
ICY9IH5Ob2RlRG9lc05vdEV4aXQ7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1fZmxhZ3Mg
fD0gTm9kZURvZXNOb3RFeGl0OwotICAgIH0KLSAgICAKLSAgICBib29sIGNhbkV4aXQoKQotICAg
IHsKLSAgICAgICAgcmV0dXJuICEobV9mbGFncyAmIE5vZGVEb2VzTm90RXhpdCk7Ci0gICAgfQot
ICAgIAogICAgIGJvb2wgaXNDb25zdGFudCgpCiAgICAgewogICAgICAgICBzd2l0Y2ggKG9wKCkp
IHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZUZsYWdzLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVGbGFncy5jcHAJKHJl
dmlzaW9uIDE3MDAzNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZUZsYWdz
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAzLDkgKzEwMyw2IEBAIHZvaWQgZHVtcE5vZGVGbGFn
cyhQcmludFN0cmVhbSYgYWN0dWFsT3UKICAgICBpZiAoZmxhZ3MgJiBOb2RlQnl0ZWNvZGVVc2Vz
QXNBcnJheUluZGV4KQogICAgICAgICBvdXQucHJpbnQoY29tbWEsICJSZWFsbHlXYW50c0ludCIp
OwogICAgIAotICAgIGlmICghKGZsYWdzICYgTm9kZURvZXNOb3RFeGl0KSkKLSAgICAgICAgb3V0
LnByaW50KGNvbW1hLCAiQ2FuRXhpdCIpOwotICAgIAogICAgIGlmIChmbGFncyAmIE5vZGVJc0Zs
dXNoZWQpCiAgICAgICAgIG91dC5wcmludChjb21tYSwgIklzRmx1c2hlZCIpOwogICAgIApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlRmxhZ3MuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVGbGFncy5oCShyZXZpc2lvbiAxNzAw
MzYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVGbGFncy5oCSh3b3JraW5n
IGNvcHkpCkBAIC02NCwxMSArNjQsOSBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7
CiAKICNkZWZpbmUgTm9kZUFyaXRoRmxhZ3NNYXNrICAgICAgICAgICAgICAgKE5vZGVCZWhhdmlv
ck1hc2sgfCBOb2RlQnl0ZWNvZGVCYWNrUHJvcE1hc2spCiAKLSNkZWZpbmUgTm9kZURvZXNOb3RF
eGl0ICAgICAgICAgICAgICAgICAgMHg0MDAwIC8vIFRoaXMgZmxhZyBpcyBuZWdhdGVkIHRvIG1h
a2UgaXQgbmF0dXJhbCBmb3IgdGhlIGRlZmF1bHQgdG8gYmUgdGhhdCBhIG5vZGUgZG9lcyBleGl0
LgorI2RlZmluZSBOb2RlUmVsZXZhbnRUb09TUiAgICAgICAgICAgICAgICAweDQwMDAKIAotI2Rl
ZmluZSBOb2RlUmVsZXZhbnRUb09TUiAgICAgICAgICAgICAgICAweDgwMDAKLQotI2RlZmluZSBO
b2RlSXNGbHVzaGVkICAgICAgICAgICAgICAgICAgIDB4MTAwMDAgLy8gVXNlZCBieSBHcmFwaDo6
Y29tcHV0ZUlzRmx1c2hlZCgpLCB3aWxsIHRlbGwgeW91IHdoaWNoIGxvY2FsIG5vZGVzIGFyZSBi
YWNrd2FyZHMtcmVhY2hhYmxlIGZyb20gYSBGbHVzaC4KKyNkZWZpbmUgTm9kZUlzRmx1c2hlZCAg
ICAgICAgICAgICAgICAgICAgMHg4MDAwIC8vIFVzZWQgYnkgR3JhcGg6OmNvbXB1dGVJc0ZsdXNo
ZWQoKSwgd2lsbCB0ZWxsIHlvdSB3aGljaCBsb2NhbCBub2RlcyBhcmUgYmFja3dhcmRzLXJlYWNo
YWJsZSBmcm9tIGEgRmx1c2guCiAKIHR5cGVkZWYgdWludDMyX3QgTm9kZUZsYWdzOwogCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCShyZXZpc2lvbiAxNzAwMzYp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTM1LDExICszNSwxMSBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAv
LyBUaGlzIG1hY3JvIGRlZmluZXMgYSBzZXQgb2YgaW5mb3JtYXRpb24gYWJvdXQgYWxsIGtub3du
IG5vZGUgdHlwZXMsIHVzZWQgdG8gcG9wdWxhdGUgTm9kZUlkLCBOb2RlVHlwZSBiZWxvdy4KICNk
ZWZpbmUgRk9SX0VBQ0hfREZHX09QKG1hY3JvKSBcCiAgICAgLyogQSBjb25zdGFudCBpbiB0aGUg
Q29kZUJsb2NrJ3MgY29uc3RhbnQgcG9vbC4gKi9cCi0gICAgbWFjcm8oSlNDb25zdGFudCwgTm9k
ZVJlc3VsdEpTIHwgTm9kZURvZXNOb3RFeGl0KSBcCisgICAgbWFjcm8oSlNDb25zdGFudCwgTm9k
ZVJlc3VsdEpTKSBcCiAgICAgXAogICAgIC8qIENvbnN0YW50cyB3aXRoIHNwZWNpZmljIHJlcHJl
c2VudGF0aW9ucy4gKi9cCi0gICAgbWFjcm8oRG91YmxlQ29uc3RhbnQsIE5vZGVSZXN1bHREb3Vi
bGUgfCBOb2RlRG9lc05vdEV4aXQpIFwKLSAgICBtYWNybyhJbnQ1MkNvbnN0YW50LCBOb2RlUmVz
dWx0SW50NTIgfCBOb2RlRG9lc05vdEV4aXQpIFwKKyAgICBtYWNybyhEb3VibGVDb25zdGFudCwg
Tm9kZVJlc3VsdERvdWJsZSkgXAorICAgIG1hY3JvKEludDUyQ29uc3RhbnQsIE5vZGVSZXN1bHRJ
bnQ1MikgXAogICAgIFwKICAgICAvKiBNYXJrZXIgdG8gaW5kaWNhdGUgdGhhdCBhbiBvcGVyYXRp
b24gd2FzIG9wdGltaXplZCBlbnRpcmVseSBhbmQgYWxsIHRoYXQgaXMgbGVmdCAqL1wKICAgICAv
KiBpcyB0byBtYWtlIG9uZSBub2RlIGFsaWFzIGFub3RoZXIuIENTRSB3aWxsIGxhdGVyIHVzdWFs
bHkgZWxpbWluYXRlIHRoaXMgbm9kZSwgKi9cCkBAIC01NiwxNiArNTYsMTYgQEAgbmFtZXNwYWNl
IEpTQyB7IG5hbWVzcGFjZSBERkcgewogICAgIC8qIFZhcmlhYmxlQWNjZXNzRGF0YSwgYW5kIHRo
dXMgd2lsbCBzaGFyZSBwcmVkaWN0aW9ucy4gKi9cCiAgICAgbWFjcm8oR2V0TG9jYWwsIE5vZGVS
ZXN1bHRKUykgXAogICAgIG1hY3JvKFNldExvY2FsLCAwKSBcCi0gICAgbWFjcm8oTW92SGludCwg
Tm9kZURvZXNOb3RFeGl0KSBcCi0gICAgbWFjcm8oWm9tYmllSGludCwgTm9kZURvZXNOb3RFeGl0
KSBcCisgICAgbWFjcm8oTW92SGludCwgMCkgXAorICAgIG1hY3JvKFpvbWJpZUhpbnQsIDApIFwK
ICAgICBtYWNybyhHZXRBcmd1bWVudCwgTm9kZVJlc3VsdEpTIHwgTm9kZU11c3RHZW5lcmF0ZSkg
XAogICAgIG1hY3JvKFBoYW50b20sIE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhIYXJk
UGhhbnRvbSwgTm9kZU11c3RHZW5lcmF0ZSkgLyogTGlrZSBQaGFudG9tLCBidXQgd2UgbmV2ZXIg
cmVtb3ZlIGFueSBvZiBpdHMgY2hpbGRyZW4uICovIFwKICAgICBtYWNybyhDaGVjaywgMCkgLyog
VXNlZCBpZiB3ZSB3YW50IGp1c3QgYSB0eXBlIGNoZWNrIGJ1dCBub3QgbGl2ZW5lc3MuIERDRSBl
aXRoZXJzIGtpbGxzIHRoaXMgb3IgY29udmVydHMgaXQgdG8gUGhhbnRvbS4gKi9cCi0gICAgbWFj
cm8oVXBzaWxvbiwgTm9kZURvZXNOb3RFeGl0IHwgTm9kZVJlbGV2YW50VG9PU1IpIFwKLSAgICBt
YWNybyhQaGksIE5vZGVEb2VzTm90RXhpdCB8IE5vZGVSZWxldmFudFRvT1NSKSBcCi0gICAgbWFj
cm8oRmx1c2gsIE5vZGVNdXN0R2VuZXJhdGUgfCBOb2RlRG9lc05vdEV4aXQpIFwKLSAgICBtYWNy
byhQaGFudG9tTG9jYWwsIE5vZGVNdXN0R2VuZXJhdGUgfCBOb2RlRG9lc05vdEV4aXQpIFwKKyAg
ICBtYWNybyhVcHNpbG9uLCBOb2RlUmVsZXZhbnRUb09TUikgXAorICAgIG1hY3JvKFBoaSwgTm9k
ZVJlbGV2YW50VG9PU1IpIFwKKyAgICBtYWNybyhGbHVzaCwgTm9kZU11c3RHZW5lcmF0ZSkgXAor
ICAgIG1hY3JvKFBoYW50b21Mb2NhbCwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIFwKICAgICAv
KiBIaW50IHRoYXQgdGhpcyBpcyB3aGVyZSBieXRlY29kZSB0aGlua3MgaXMgYSBnb29kIHBsYWNl
IHRvIE9TUi4gTm90ZSB0aGF0IHRoaXMgKi9cCiAgICAgLyogd2lsbCBleGlzdCBldmVuIGluIGlu
bGluZWQgbG9vcHMuIFRoaXMgaGFzIG5vIGV4ZWN1dGlvbiBzZW1hbnRpY3MgYnV0IGl0IG11c3Qg
Ki9cCkBAIC04OCw3ICs4OCw3IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKICAg
ICBtYWNybyhHZXRMb2NhbFVubGlua2VkLCBOb2RlUmVzdWx0SlMpIFwKICAgICBcCiAgICAgLyog
TWFya2VyIGZvciBhbiBhcmd1bWVudCBiZWluZyBzZXQgYXQgdGhlIHByb2xvZ3VlIG9mIGEgZnVu
Y3Rpb24uICovXAotICAgIG1hY3JvKFNldEFyZ3VtZW50LCBOb2RlRG9lc05vdEV4aXQpIFwKKyAg
ICBtYWNybyhTZXRBcmd1bWVudCwgMCkgXAogICAgIFwKICAgICAvKiBNYXJrZXIgb2YgbG9jYXRp
b24gaW4gdGhlIElSIHdoZXJlIHdlIG1heSBwb3NzaWJseSBwZXJmb3JtIGp1bXAgcmVwbGFjZW1l
bnQgdG8gKi9cCiAgICAgLyogaW52YWxpZGF0ZSB0aGlzIGNvZGUgYmxvY2suICovXApAQCAtMTUw
LDkgKzE1MCw5IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKICAgICBtYWNybyhD
aGVja1N0cnVjdHVyZSwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKENoZWNrRXhlY3V0
YWJsZSwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKFB1dFN0cnVjdHVyZSwgTm9kZU11
c3RHZW5lcmF0ZSkgXAotICAgIG1hY3JvKFBoYW50b21QdXRTdHJ1Y3R1cmUsIE5vZGVNdXN0R2Vu
ZXJhdGUgfCBOb2RlRG9lc05vdEV4aXQpIFwKLSAgICBtYWNybyhBbGxvY2F0ZVByb3BlcnR5U3Rv
cmFnZSwgTm9kZU11c3RHZW5lcmF0ZSB8IE5vZGVEb2VzTm90RXhpdCB8IE5vZGVSZXN1bHRTdG9y
YWdlKSBcCi0gICAgbWFjcm8oUmVhbGxvY2F0ZVByb3BlcnR5U3RvcmFnZSwgTm9kZU11c3RHZW5l
cmF0ZSB8IE5vZGVEb2VzTm90RXhpdCB8IE5vZGVSZXN1bHRTdG9yYWdlKSBcCisgICAgbWFjcm8o
UGhhbnRvbVB1dFN0cnVjdHVyZSwgTm9kZU11c3RHZW5lcmF0ZSkgXAorICAgIG1hY3JvKEFsbG9j
YXRlUHJvcGVydHlTdG9yYWdlLCBOb2RlTXVzdEdlbmVyYXRlIHwgTm9kZVJlc3VsdFN0b3JhZ2Up
IFwKKyAgICBtYWNybyhSZWFsbG9jYXRlUHJvcGVydHlTdG9yYWdlLCBOb2RlTXVzdEdlbmVyYXRl
IHwgTm9kZVJlc3VsdFN0b3JhZ2UpIFwKICAgICBtYWNybyhHZXRCdXR0ZXJmbHksIE5vZGVSZXN1
bHRTdG9yYWdlKSBcCiAgICAgbWFjcm8oQ2hlY2tBcnJheSwgTm9kZU11c3RHZW5lcmF0ZSkgXAog
ICAgIG1hY3JvKEFycmF5aWZ5LCBOb2RlTXVzdEdlbmVyYXRlKSBcCkBAIC0yNTEsNyArMjUxLDcg
QEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogICAgIC8qIE5vZGVzIHVzZWQgZm9y
IGFyZ3VtZW50cy4gU2ltaWxhciB0byBhY3RpdmF0aW9uIHN1cHBvcnQsIG9ubHkgaXQgbWFrZXMg
ZXZlbiBsZXNzICovXAogICAgIC8qIHNlbnNlLiAqL1wKICAgICBtYWNybyhDcmVhdGVBcmd1bWVu
dHMsIE5vZGVSZXN1bHRKUykgXAotICAgIG1hY3JvKFBoYW50b21Bcmd1bWVudHMsIE5vZGVSZXN1
bHRKUyB8IE5vZGVEb2VzTm90RXhpdCkgXAorICAgIG1hY3JvKFBoYW50b21Bcmd1bWVudHMsIE5v
ZGVSZXN1bHRKUykgXAogICAgIG1hY3JvKFRlYXJPZmZBcmd1bWVudHMsIE5vZGVNdXN0R2VuZXJh
dGUpIFwKICAgICBtYWNybyhHZXRNeUFyZ3VtZW50c0xlbmd0aCwgTm9kZVJlc3VsdEpTIHwgTm9k
ZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKEdldE15QXJndW1lbnRCeVZhbCwgTm9kZVJlc3Vs
dEpTIHwgTm9kZU11c3RHZW5lcmF0ZSkgXApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdQbGFuLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1BsYW4uY3BwCShyZXZpc2lvbiAxNzAwMzYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1BsYW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yODEsNyArMjgxLDYgQEAgUGxhbjo6Q29t
cGlsYXRpb25QYXRoIFBsYW46OmNvbXBpbGVJblRocgogICAgICAgICBwZXJmb3JtVGllclVwQ2hl
Y2tJbmplY3Rpb24oZGZnKTsKIAogICAgICAgICBwZXJmb3JtU3RvcmVCYXJyaWVyRWxpc2lvbihk
ZmcpOwotICAgICAgICBwZXJmb3JtU3RvcmVFbGltaW5hdGlvbihkZmcpOwogICAgICAgICBwZXJm
b3JtQ1BTUmV0aHJlYWRpbmcoZGZnKTsKICAgICAgICAgcGVyZm9ybURDRShkZmcpOwogICAgICAg
ICBwZXJmb3JtU3RhY2tMYXlvdXQoZGZnKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAkocmV2aXNpb24gMTcwMDM2
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTY5Niw5ICsxNjk2LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAvLyBJZiB0aGUgQ0ZBIGlzIHRyYWNraW5n
IHRoaXMgdmFyaWFibGUgYW5kIGl0IGZvdW5kIHRoYXQgdGhlIHZhcmlhYmxlCiAgICAgICAgIC8v
IGNhbm5vdCBoYXZlIGJlZW4gYXNzaWduZWQsIHRoZW4gZG9uJ3QgYXR0ZW1wdCB0byBwcm9jZWVk
LgogICAgICAgICBpZiAodmFsdWUuaXNDbGVhcigpKSB7Ci0gICAgICAgICAgICAvLyBGSVhNRTog
V2Ugc2hvdWxkIHRyYXAgaW5zdGVhZC4KLSAgICAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTAzODMKLSAgICAgICAgICAgIHRlcm1pbmF0ZVNwZWN1
bGF0aXZlRXhlY3V0aW9uKEluYWRlcXVhdGVDb3ZlcmFnZSwgSlNWYWx1ZVJlZ3MoKSwgMCk7Cisg
ICAgICAgICAgICBtX2NvbXBpbGVPa2F5ID0gZmFsc2U7CiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgfQogICAgICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Bl
Y3VsYXRpdmVKSVQ2NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAkocmV2aXNpb24gMTcwMDM2KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTc5Myw5ICsxNzkzLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBu
b2RlKQogICAgICAgICAvLyBJZiB0aGUgQ0ZBIGlzIHRyYWNraW5nIHRoaXMgdmFyaWFibGUgYW5k
IGl0IGZvdW5kIHRoYXQgdGhlIHZhcmlhYmxlCiAgICAgICAgIC8vIGNhbm5vdCBoYXZlIGJlZW4g
YXNzaWduZWQsIHRoZW4gZG9uJ3QgYXR0ZW1wdCB0byBwcm9jZWVkLgogICAgICAgICBpZiAodmFs
dWUuaXNDbGVhcigpKSB7Ci0gICAgICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIHRyYXAgaW5z
dGVhZC4KLSAgICAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMTAzODMKLSAgICAgICAgICAgIHRlcm1pbmF0ZVNwZWN1bGF0aXZlRXhlY3V0aW9uKElu
YWRlcXVhdGVDb3ZlcmFnZSwgSlNWYWx1ZVJlZ3MoKSwgMCk7CisgICAgICAgICAgICBtX2NvbXBp
bGVPa2F5ID0gZmFsc2U7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICAK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQu
Y3BwCShyZXZpc2lvbiAxNzAwMzYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nw
ZWN1bGF0aXZlSklULmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1
ZGUgIkRGR0FycmF5aWZ5U2xvd1BhdGhHZW5lcmF0b3IuaCIKICNpbmNsdWRlICJERkdCaW5hcnlT
d2l0Y2guaCIKICNpbmNsdWRlICJERkdDYWxsQXJyYXlBbGxvY2F0b3JTbG93UGF0aEdlbmVyYXRv
ci5oIgorI2luY2x1ZGUgIkRGR01heUV4aXQuaCIKICNpbmNsdWRlICJERkdTYW5lU3RyaW5nR2V0
QnlWYWxTbG93UGF0aEdlbmVyYXRvci5oIgogI2luY2x1ZGUgIkRGR1Nsb3dQYXRoR2VuZXJhdG9y
LmgiCiAjaW5jbHVkZSAiTGlua0J1ZmZlci5oIgpAQCAtMjE0LDYgKzIxNSw4IEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OnRlcm1pbmF0ZVNwZWN1bGF0aXYKICAgICAgICAgcmV0dXJuOwogICAgIHNw
ZWN1bGF0aW9uQ2hlY2soa2luZCwganNWYWx1ZVJlZ3MsIG5vZGUsIG1faml0Lmp1bXAoKSk7CiAg
ICAgbV9jb21waWxlT2theSA9IGZhbHNlOworICAgIGlmICh2ZXJib3NlQ29tcGlsYXRpb25FbmFi
bGVkKCkpCisgICAgICAgIGRhdGFMb2coIkJhaWxpbmcgY29tcGlsYXRpb24uXG4iKTsKIH0KIAog
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6dGVybWluYXRlU3BlY3VsYXRpdmVFeGVjdXRpb24oRXhpdEtp
bmQga2luZCwgSlNWYWx1ZVJlZ3MganNWYWx1ZVJlZ3MsIEVkZ2Ugbm9kZVVzZSkKQEAgLTEzMzcs
NiArMTM0MCw4IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVNb3ZIaW50KE5vZGUKIAog
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6YmFpbCgpCiB7CisgICAgaWYgKHZlcmJvc2VDb21waWxhdGlv
bkVuYWJsZWQoKSkKKyAgICAgICAgZGF0YUxvZygiQmFpbGluZyBjb21waWxhdGlvbi5cbiIpOwog
ICAgIG1fY29tcGlsZU9rYXkgPSB0cnVlOwogICAgIG1faml0LmJyZWFrcG9pbnQoKTsKICAgICBj
bGVhckdlbmVyYXRpb25JbmZvKCk7CkBAIC0xNDAwLDggKzE0MDUsMTIgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZUN1cnJlbnRCbG9jawogICAgICAgICAgICAgYmFpbCgpOwogICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICB9CisKKyAgICAgICAgaWYgKEFTU0VSVF9ESVNBQkxFRCkK
KyAgICAgICAgICAgIG1fY2FuRXhpdCA9IHRydWU7IC8vIEVzc2VudGlhbGx5IGRpc2FibGUgdGhl
IGFzc2VydGlvbnMuCisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG1fY2FuRXhpdCA9IG1heUV4
aXQobV9qaXQuZ3JhcGgoKSwgbV9jdXJyZW50Tm9kZSk7CiAgICAgICAgIAotICAgICAgICBtX2Nh
bkV4aXQgPSBtX2N1cnJlbnROb2RlLT5jYW5FeGl0KCk7CiAgICAgICAgIGJvb2wgc2hvdWxkRXhl
Y3V0ZUVmZmVjdHMgPSBtX2ludGVycHJldGVyLnN0YXJ0RXhlY3V0aW5nKG1fY3VycmVudE5vZGUp
OwogICAgICAgICBtX2ppdC5zZXRGb3JOb2RlKG1fY3VycmVudE5vZGUpOwogICAgICAgICBtX2Nv
ZGVPcmlnaW5Gb3JFeGl0VGFyZ2V0ID0gbV9jdXJyZW50Tm9kZS0+b3JpZ2luLmZvckV4aXQ7Cg==
</data>
<flag name="review"
          id="257737"
          type_id="1"
          status="+"
          setter="msaboff"
    />
          </attachment>
      

    </bug>

</bugzilla>