<?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>183857</bug_id>
          
          <creation_ts>2018-03-21 10:05:43 -0700</creation_ts>
          <short_desc>Use CodeBlock::instructions()[] and CodeBlock::bytecodeOffset() instead of doing own pointer math.</short_desc>
          <delta_ts>2018-03-21 11:24:03 -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>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Mark Lam">mark.lam</reporter>
          <assigned_to name="Mark Lam">mark.lam</assigned_to>
          <cc>ews-watchlist</cc>
    
    <cc>fpizlo</cc>
    
    <cc>jfbastien</cc>
    
    <cc>keith_miller</cc>
    
    <cc>msaboff</cc>
    
    <cc>rmorisset</cc>
    
    <cc>saam</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1408062</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2018-03-21 10:05:43 -0700</bug_when>
    <thetext>We should avoid doing pointer math with CodeBlock::instructions().begin().  Instead, we should use the operator[] that comes with CodeBlock::instructions() for computing an Instruction*, and use CodeBlock::bytecodeOffset() for computing the bytecode offset of a given Instruction*.  These methods will do assertions which helps catch bugs sooner, plus they are more descriptive of the operation we&apos;re trying to do.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1408063</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-03-21 10:06:12 -0700</bug_when>
    <thetext>&lt;rdar://problem/38712184&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1408066</commentid>
    <comment_count>2</comment_count>
      <attachid>336203</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2018-03-21 10:12:00 -0700</bug_when>
    <thetext>Created attachment 336203
proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1408068</commentid>
    <comment_count>3</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-03-21 10:14:30 -0700</bug_when>
    <thetext>Attachment 336203 did not pass style-queue:


ERROR: Source/JavaScriptCore/llint/LLIntSlowPaths.cpp:199:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
Total errors found: 1 in 18 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1408069</commentid>
    <comment_count>4</comment_count>
      <attachid>336203</attachid>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2018-03-21 10:16:10 -0700</bug_when>
    <thetext>Comment on attachment 336203
proposed patch.

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1408070</commentid>
    <comment_count>5</comment_count>
      <attachid>336203</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2018-03-21 10:16:22 -0700</bug_when>
    <thetext>Comment on attachment 336203
proposed patch.

Will fix issues.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1408072</commentid>
    <comment_count>6</comment_count>
      <attachid>336206</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2018-03-21 10:18:28 -0700</bug_when>
    <thetext>Created attachment 336206
proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1408076</commentid>
    <comment_count>7</comment_count>
      <attachid>336208</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2018-03-21 10:23:04 -0700</bug_when>
    <thetext>Created attachment 336208
proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1408077</commentid>
    <comment_count>8</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-03-21 10:26:17 -0700</bug_when>
    <thetext>Attachment 336208 did not pass style-queue:


ERROR: Source/JavaScriptCore/llint/LLIntSlowPaths.cpp:199:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
Total errors found: 1 in 18 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1408079</commentid>
    <comment_count>9</comment_count>
      <attachid>336208</attachid>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2018-03-21 10:33:44 -0700</bug_when>
    <thetext>Comment on attachment 336208
proposed patch.

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1408102</commentid>
    <comment_count>10</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2018-03-21 11:24:03 -0700</bug_when>
    <thetext>Thanks for the review.  Landed in r229815: &lt;http://trac.webkit.org/r229815&gt;.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>336203</attachid>
            <date>2018-03-21 10:12:00 -0700</date>
            <delta_ts>2018-03-21 10:18:28 -0700</delta_ts>
            <desc>proposed patch.</desc>
            <filename>bug-183857.patch</filename>
            <type>text/plain</type>
            <size>24736</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjI5ODA4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDc0IEBA
CisyMDE4LTAzLTIxICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBV
c2UgQ29kZUJsb2NrOjppbnN0cnVjdGlvbnMoKVtdIGFuZCBDb2RlQmxvY2s6OmJ5dGVjb2RlT2Zm
c2V0KCkgaW5zdGVhZCBvZiBkb2luZyBvd24gcG9pbnRlciBtYXRoLgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgzODU3CisgICAgICAgIDxyZGFyOi8v
cHJvYmxlbS8zODcxMjE4ND4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBXZSBzaG91bGQgYXZvaWQgZG9pbmcgcG9pbnRlciBtYXRoIHdpdGggQ29kZUJs
b2NrOjppbnN0cnVjdGlvbnMoKS5iZWdpbigpLgorICAgICAgICBJbnN0ZWFkLCB3ZSBzaG91bGQg
dXNlIHRoZSBvcGVyYXRvcltdIHRoYXQgY29tZXMgd2l0aCBDb2RlQmxvY2s6Omluc3RydWN0aW9u
cygpCisgICAgICAgIGZvciBjb21wdXRpbmcgYW4gSW5zdHJ1Y3Rpb24qLCBhbmQgdXNlIENvZGVC
bG9jazo6Ynl0ZWNvZGVPZmZzZXQoKSBmb3IgY29tcHV0aW5nCisgICAgICAgIHRoZSBieXRlY29k
ZSBvZmZzZXQgb2YgYSBnaXZlbiBJbnN0cnVjdGlvbiouICBUaGVzZSBtZXRob2RzIHdpbGwgZG8g
YXNzZXJ0aW9ucworICAgICAgICB3aGljaCBoZWxwcyBjYXRjaCBidWdzIHNvb25lciwgcGx1cyB0
aGV5IGFyZSBtb3JlIGRlc2NyaXB0aXZlIG9mIHRoZSBvcGVyYXRpb24KKyAgICAgICAgd2UncmUg
dHJ5aW5nIHRvIGRvLgorCisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVLaWxscy5oOgorICAg
ICAgICAoSlNDOjpCeXRlY29kZUtpbGxzOjpvcGVyYW5kSXNLaWxsZWQgY29uc3QpOgorICAgICAg
ICAoSlNDOjpCeXRlY29kZUtpbGxzOjpmb3JFYWNoT3BlcmFuZEtpbGxlZEF0IGNvbnN0KToKKyAg
ICAgICAgKiBieXRlY29kZS9DYWxsTGlua1N0YXR1cy5jcHA6CisgICAgICAgIChKU0M6OkNhbGxM
aW5rU3RhdHVzOjpjb21wdXRlRnJvbUxMSW50KToKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxv
Y2suY3BwOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmR1bXBCeXRlY29kZSk6CisgICAgICAg
IChKU0M6OkNvZGVCbG9jazo6YXJpdGhQcm9maWxlRm9yQnl0ZWNvZGVPZmZzZXQpOgorICAgICAg
ICAoSlNDOjpDb2RlQmxvY2s6OmJ5dGVjb2RlT2Zmc2V0RnJvbUNhbGxTaXRlSW5kZXgpOgorICAg
ICAgICAqIGJ5dGVjb2RlL0dldEJ5SWRTdGF0dXMuY3BwOgorICAgICAgICAoSlNDOjpHZXRCeUlk
U3RhdHVzOjpjb21wdXRlRnJvbUxMSW50KToKKyAgICAgICAgKiBieXRlY29kZS9QdXRCeUlkU3Rh
dHVzLmNwcDoKKyAgICAgICAgKEpTQzo6UHV0QnlJZFN0YXR1czo6Y29tcHV0ZUZyb21MTEludCk6
CisgICAgICAgICogZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6REZH
OjpCeXRlQ29kZVBhcnNlcjo6Z2V0UHJlZGljdGlvbldpdGhvdXRPU1JFeGl0KToKKyAgICAgICAg
KiBkZmcvREZHT1NSRXhpdC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6cmVpZnlJbmxpbmVkQ2Fs
bEZyYW1lcyk6CisgICAgICAgICogZGZnL0RGR09TUkV4aXRDb21waWxlckNvbW1vbi5jcHA6Cisg
ICAgICAgIChKU0M6OkRGRzo6cmVpZnlJbmxpbmVkQ2FsbEZyYW1lcyk6CisgICAgICAgICogaW50
ZXJwcmV0ZXIvQ2FsbEZyYW1lLmNwcDoKKyAgICAgICAgKEpTQzo6Q2FsbEZyYW1lOjpjYWxsU2l0
ZUJpdHNBc0J5dGVjb2RlT2Zmc2V0IGNvbnN0KToKKyAgICAgICAgKEpTQzo6Q2FsbEZyYW1lOjpj
dXJyZW50VlBDIGNvbnN0KToKKyAgICAgICAgKEpTQzo6Q2FsbEZyYW1lOjpzZXRDdXJyZW50VlBD
KToKKyAgICAgICAgKiBqaXQvSklUQ2FsbC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6Y29tcGls
ZU9wQ2FsbCk6CisgICAgICAgICogaml0L0pJVElubGluZXMuaDoKKyAgICAgICAgKEpTQzo6SklU
Ojp1cGRhdGVUb3BDYWxsRnJhbWUpOgorICAgICAgICAoSlNDOjpKSVQ6OmNvcGllZEluc3RydWN0
aW9uKToKKyAgICAgICAgKiBqaXQvSklUT3Bjb2Rlcy5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6
cHJpdmF0ZUNvbXBpbGVIYXNJbmRleGVkUHJvcGVydHkpOgorICAgICAgICAqIGppdC9KSVRPcGNv
ZGVzMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlSGFzSW5kZXhl
ZFByb3BlcnR5KToKKyAgICAgICAgKiBqaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwOgorICAgICAg
ICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlR2V0QnlWYWwpOgorICAgICAgICAoSlNDOjpKSVQ6
OnByaXZhdGVDb21waWxlR2V0QnlWYWxXaXRoQ2FjaGVkSWQpOgorICAgICAgICAoSlNDOjpKSVQ6
OnByaXZhdGVDb21waWxlUHV0QnlWYWwpOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21w
aWxlUHV0QnlWYWxXaXRoQ2FjaGVkSWQpOgorICAgICAgICAqIGppdC9TbG93UGF0aENhbGwuaDoK
KyAgICAgICAgKEpTQzo6SklUU2xvd1BhdGhDYWxsOjpjYWxsKToKKyAgICAgICAgKiBsbGludC9M
TEludFNsb3dQYXRocy5jcHA6CisgICAgICAgIChKU0M6OkxMSW50OjpsbGludF90cmFjZV9vcGVy
YW5kKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmxsaW50X3RyYWNlX3ZhbHVlKToKKyAgICAgICAg
KEpTQzo6TExJbnQ6OkxMSU5UX1NMT1dfUEFUSF9ERUNMKToKKyAgICAgICAgKEpTQzo6TExJbnQ6
OnNldHVwR2V0QnlJZFByb3RvdHlwZUNhY2hlKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6TExJ
bnQ6OmdldEJ5VmFsKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6TExJbnQ6OmhhbmRsZUhvc3RD
YWxsKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6TExJbnQ6OnNldFVwQ2FsbCk6IERlbGV0ZWQu
CisgICAgICAgIChKU0M6OkxMSW50OjpnZW5lcmljQ2FsbCk6IERlbGV0ZWQuCisgICAgICAgIChK
U0M6OkxMSW50Ojp2YXJhcmdzU2V0dXApOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpMTEludDo6
bGxpbnRfdGhyb3dfc3RhY2tfb3ZlcmZsb3dfZXJyb3IpOiBEZWxldGVkLgorICAgICAgICAoSlND
OjpMTEludDo6bGxpbnRfc3RhY2tfY2hlY2tfYXRfdm1fZW50cnkpOiBEZWxldGVkLgorICAgICAg
ICAoSlNDOjpMTEludDo6bGxpbnRfd3JpdGVfYmFycmllcl9zbG93KTogRGVsZXRlZC4KKyAgICAg
ICAgKEpTQzo6TExJbnQ6OmxsaW50X2NyYXNoKTogRGVsZXRlZC4KKyAgICAgICAgKiBydW50aW1l
L1NhbXBsaW5nUHJvZmlsZXIuY3BwOgorICAgICAgICAoSlNDOjp0cnlHZXRCeXRlY29kZUluZGV4
KToKKwogMjAxOC0wMy0yMSAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5j
b20+CiAKICAgICAgICAgVW5yZXZpZXdlZC4gRml4IEdUSyBhbmQgV1BFIGRlYnVnIGJ1aWxkIGFm
dGVyIHIyMjk3OTguCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNv
ZGVLaWxscy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9C
eXRlY29kZUtpbGxzLmgJKHJldmlzaW9uIDIyOTgwOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9CeXRlY29kZUtpbGxzLmgJKHdvcmtpbmcgY29weSkKQEAgLTUyLDcgKzUyLDcg
QEAgcHVibGljOgogICAgIAogICAgIGJvb2wgb3BlcmFuZElzS2lsbGVkKEluc3RydWN0aW9uKiBp
bnN0cnVjdGlvbiwgaW50IG9wZXJhbmQpIGNvbnN0CiAgICAgewotICAgICAgICByZXR1cm4gb3Bl
cmFuZElzS2lsbGVkKGluc3RydWN0aW9uIC0gbV9jb2RlQmxvY2stPmluc3RydWN0aW9ucygpLmJl
Z2luKCksIG9wZXJhbmQpOworICAgICAgICByZXR1cm4gb3BlcmFuZElzS2lsbGVkKG1fY29kZUJs
b2NrLT5ieXRlY29kZU9mZnNldChpbnN0cnVjdGlvbiksIG9wZXJhbmQpOwogICAgIH0KICAgICAK
ICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPgpAQCAtNjgsNyArNjgsNyBAQCBwdWJsaWM6
CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4KICAgICB2b2lkIGZvckVhY2hPcGVyYW5k
S2lsbGVkQXQoSW5zdHJ1Y3Rpb24qIHBjLCBjb25zdCBGdW5jdG9yJiBmdW5jdG9yKSBjb25zdAog
ICAgIHsKLSAgICAgICAgZm9yRWFjaE9wZXJhbmRLaWxsZWRBdChwYyAtIG1fY29kZUJsb2NrLT5p
bnN0cnVjdGlvbnMoKS5iZWdpbigpLCBmdW5jdG9yKTsKKyAgICAgICAgZm9yRWFjaE9wZXJhbmRL
aWxsZWRBdChtX2NvZGVCbG9jay0+Ynl0ZWNvZGVPZmZzZXQocGMpLCBmdW5jdG9yKTsKICAgICB9
CiAgICAgCiBwcml2YXRlOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Nh
bGxMaW5rU3RhdHVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQ2FsbExpbmtTdGF0dXMuY3BwCShyZXZpc2lvbiAyMjk4MDgpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtTdGF0dXMuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC02Niw3ICs2Niw3IEBAIENhbGxMaW5rU3RhdHVzIENhbGxMaW5rU3RhdHVzOjpjb21wdXRlRnIK
ICAgICB9CiAjZW5kaWYKIAotICAgIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiA9IHByb2ZpbGVk
QmxvY2stPmluc3RydWN0aW9ucygpLmJlZ2luKCkgKyBieXRlY29kZUluZGV4OworICAgIEluc3Ry
dWN0aW9uKiBpbnN0cnVjdGlvbiA9ICZwcm9maWxlZEJsb2NrLT5pbnN0cnVjdGlvbnMoKVtieXRl
Y29kZUluZGV4XTsKICAgICBPcGNvZGVJRCBvcCA9IEludGVycHJldGVyOjpnZXRPcGNvZGVJRChp
bnN0cnVjdGlvblswXS51Lm9wY29kZSk7CiAgICAgaWYgKG9wICE9IG9wX2NhbGwgJiYgb3AgIT0g
b3BfY29uc3RydWN0ICYmIG9wICE9IG9wX3RhaWxfY2FsbCkKICAgICAgICAgcmV0dXJuIENhbGxM
aW5rU3RhdHVzKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJs
b2NrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29k
ZUJsb2NrLmNwcAkocmV2aXNpb24gMjI5ODA4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0NvZGVCbG9jay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI1Myw3ICsyNTMsNyBAQCB2
b2lkIENvZGVCbG9jazo6ZHVtcEJ5dGVjb2RlKAogICAgIFByaW50U3RyZWFtJiBvdXQsIHVuc2ln
bmVkIGJ5dGVjb2RlT2Zmc2V0LAogICAgIGNvbnN0IFN0dWJJbmZvTWFwJiBzdHViSW5mb3MsIGNv
bnN0IENhbGxMaW5rSW5mb01hcCYgY2FsbExpbmtJbmZvcykKIHsKLSAgICBjb25zdCBJbnN0cnVj
dGlvbiogaXQgPSBpbnN0cnVjdGlvbnMoKS5iZWdpbigpICsgYnl0ZWNvZGVPZmZzZXQ7CisgICAg
Y29uc3QgSW5zdHJ1Y3Rpb24qIGl0ID0gJmluc3RydWN0aW9ucygpW2J5dGVjb2RlT2Zmc2V0XTsK
ICAgICBkdW1wQnl0ZWNvZGUob3V0LCBpbnN0cnVjdGlvbnMoKS5iZWdpbigpLCBpdCwgc3R1Yklu
Zm9zLCBjYWxsTGlua0luZm9zKTsKIH0KIApAQCAtMjg3NCw3ICsyODc0LDcgQEAgdW5zaWduZWQg
Q29kZUJsb2NrOjpyYXJlQ2FzZVByb2ZpbGVDb3VudAogCiBBcml0aFByb2ZpbGUqIENvZGVCbG9j
azo6YXJpdGhQcm9maWxlRm9yQnl0ZWNvZGVPZmZzZXQoaW50IGJ5dGVjb2RlT2Zmc2V0KQogewot
ICAgIHJldHVybiBhcml0aFByb2ZpbGVGb3JQQyhpbnN0cnVjdGlvbnMoKS5iZWdpbigpICsgYnl0
ZWNvZGVPZmZzZXQpOworICAgIHJldHVybiBhcml0aFByb2ZpbGVGb3JQQygmaW5zdHJ1Y3Rpb25z
KClbYnl0ZWNvZGVPZmZzZXRdKTsKIH0KIAogQXJpdGhQcm9maWxlKiBDb2RlQmxvY2s6OmFyaXRo
UHJvZmlsZUZvclBDKEluc3RydWN0aW9uKiBwYykKQEAgLTMwMjEsNyArMzAyMSw3IEBAIHN0ZDo6
b3B0aW9uYWw8dW5zaWduZWQ+IENvZGVCbG9jazo6Ynl0ZWMKICAgICAgICAgYnl0ZWNvZGVPZmZz
ZXQgPSBjYWxsU2l0ZUluZGV4LmJpdHMoKTsKICNlbHNlCiAgICAgICAgIEluc3RydWN0aW9uKiBp
bnN0cnVjdGlvbiA9IGJpdHdpc2VfY2FzdDxJbnN0cnVjdGlvbio+KGNhbGxTaXRlSW5kZXguYml0
cygpKTsKLSAgICAgICAgYnl0ZWNvZGVPZmZzZXQgPSBpbnN0cnVjdGlvbiAtIGluc3RydWN0aW9u
cygpLmJlZ2luKCk7CisgICAgICAgIGJ5dGVjb2RlT2Zmc2V0ID0gdGhpcy0+Ynl0ZWNvZGVPZmZz
ZXQoaW5zdHJ1Y3Rpb24pOwogI2VuZGlmCiAgICAgfSBlbHNlIGlmIChqaXRUeXBlID09IEpJVENv
ZGU6OkRGR0pJVCB8fCBqaXRUeXBlID09IEpJVENvZGU6OkZUTEpJVCkgewogI2lmIEVOQUJMRShE
RkdfSklUKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5SWRTdGF0
dXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRC
eUlkU3RhdHVzLmNwcAkocmV2aXNpb24gMjI5ODA4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0dldEJ5SWRTdGF0dXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04Miw3ICs4Miw3
IEBAIEdldEJ5SWRTdGF0dXMgR2V0QnlJZFN0YXR1czo6Y29tcHV0ZUZyb20KIAogICAgIFZNJiB2
bSA9ICpwcm9maWxlZEJsb2NrLT52bSgpOwogICAgIAotICAgIEluc3RydWN0aW9uKiBpbnN0cnVj
dGlvbiA9IHByb2ZpbGVkQmxvY2stPmluc3RydWN0aW9ucygpLmJlZ2luKCkgKyBieXRlY29kZUlu
ZGV4OworICAgIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiA9ICZwcm9maWxlZEJsb2NrLT5pbnN0
cnVjdGlvbnMoKVtieXRlY29kZUluZGV4XTsKIAogICAgIE9wY29kZSBvcGNvZGUgPSBpbnN0cnVj
dGlvblswXS51Lm9wY29kZTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1B1dEJ5SWRTdGF0dXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9QdXRCeUlkU3RhdHVzLmNwcAkocmV2aXNpb24gMjI5ODA4KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC03Miw3ICs3Miw3IEBAIFB1dEJ5SWRTdGF0dXMgUHV0QnlJZFN0YXR1czo6Y29tcHV0ZUZyb20K
IAogICAgIFZNJiB2bSA9ICpwcm9maWxlZEJsb2NrLT52bSgpOwogICAgIAotICAgIEluc3RydWN0
aW9uKiBpbnN0cnVjdGlvbiA9IHByb2ZpbGVkQmxvY2stPmluc3RydWN0aW9ucygpLmJlZ2luKCkg
KyBieXRlY29kZUluZGV4OworICAgIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiA9ICZwcm9maWxl
ZEJsb2NrLT5pbnN0cnVjdGlvbnMoKVtieXRlY29kZUluZGV4XTsKIAogICAgIFN0cnVjdHVyZUlE
IHN0cnVjdHVyZUlEID0gaW5zdHJ1Y3Rpb25bNF0udS5zdHJ1Y3R1cmVJRDsKICAgICBpZiAoIXN0
cnVjdHVyZUlEKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBh
cnNlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRl
Q29kZVBhcnNlci5jcHAJKHJldmlzaW9uIDIyOTgwOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04MjksNyArODI5
LDcgQEAgcHJpdmF0ZToKICAgICAgICAgLy8gY2hhaW4gYW5kIHVzZSBpdHMgcHJlZGljdGlvbi4g
SWYgd2Ugb25seSBoYXZlCiAgICAgICAgIC8vIGlubGluZWQgdGFpbCBjYWxsIGZyYW1lcywgd2Ug
dXNlIFNwZWNGdWxsVG9wCiAgICAgICAgIC8vIHRvIGF2b2lkIGEgc3B1cmlvdXMgT1NSIGV4aXQu
Ci0gICAgICAgIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiA9IG1faW5saW5lU3RhY2tUb3AtPm1f
cHJvZmlsZWRCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKSArIGJ5dGVjb2RlSW5kZXg7Cisg
ICAgICAgIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiA9ICZtX2lubGluZVN0YWNrVG9wLT5tX3By
b2ZpbGVkQmxvY2stPmluc3RydWN0aW9ucygpW2J5dGVjb2RlSW5kZXhdOwogICAgICAgICBPcGNv
ZGVJRCBvcGNvZGVJRCA9IEludGVycHJldGVyOjpnZXRPcGNvZGVJRChpbnN0cnVjdGlvbi0+dS5v
cGNvZGUpOwogCiAgICAgICAgIHN3aXRjaCAob3Bjb2RlSUQpIHsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0LmNwcAkocmV2aXNpb24gMjI5ODA4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODA3
LDcgKzgwNyw3IEBAIHN0YXRpYyB2b2lkIHJlaWZ5SW5saW5lZENhbGxGcmFtZXMoQ29udGUKICAg
ICAgICAgaWYgKCFpbmxpbmVDYWxsRnJhbWUtPmlzQ2xvc3VyZUNhbGwpCiAgICAgICAgICAgICBm
cmFtZS5zZXRPcGVyYW5kKGlubGluZUNhbGxGcmFtZS0+c3RhY2tPZmZzZXQgKyBDYWxsRnJhbWVT
bG90OjpjYWxsZWUsIEpTVmFsdWUoaW5saW5lQ2FsbEZyYW1lLT5jYWxsZWVDb25zdGFudCgpKSk7
CiAjZWxzZSAvLyBVU0UoSlNWQUxVRTY0KSAvLyBzbyB0aGlzIGlzIHRoZSAzMi1iaXQgcGFydAot
ICAgICAgICBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24gPSBiYXNlbGluZUNvZGVCbG9jay0+aW5z
dHJ1Y3Rpb25zKCkuYmVnaW4oKSArIGNvZGVPcmlnaW4tPmJ5dGVjb2RlSW5kZXg7CisgICAgICAg
IEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiA9ICZiYXNlbGluZUNvZGVCbG9jay0+aW5zdHJ1Y3Rp
b25zKClbY29kZU9yaWdpbi0+Ynl0ZWNvZGVJbmRleF07CiAgICAgICAgIHVpbnQzMl90IGxvY2F0
aW9uQml0cyA9IENhbGxTaXRlSW5kZXgoaW5zdHJ1Y3Rpb24pLmJpdHMoKTsKICAgICAgICAgZnJh
bWUuc2V0T3BlcmFuZDx1aW50MzJfdD4oaW5saW5lQ2FsbEZyYW1lLT5zdGFja09mZnNldCArIENh
bGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnQsIFRhZ09mZnNldCwgbG9jYXRpb25CaXRzKTsKICAg
ICAgICAgZnJhbWUuc2V0T3BlcmFuZDx1aW50MzJfdD4oaW5saW5lQ2FsbEZyYW1lLT5zdGFja09m
ZnNldCArIENhbGxGcmFtZVNsb3Q6OmNhbGxlZSwgVGFnT2Zmc2V0LCBzdGF0aWNfY2FzdDx1aW50
MzJfdD4oSlNWYWx1ZTo6Q2VsbFRhZykpOwpAQCAtODIxLDcgKzgyMSw3IEBAIHN0YXRpYyB2b2lk
IHJlaWZ5SW5saW5lZENhbGxGcmFtZXMoQ29udGUKICNpZiBVU0UoSlNWQUxVRTY0KQogICAgICAg
ICB1aW50MzJfdCBsb2NhdGlvbkJpdHMgPSBDYWxsU2l0ZUluZGV4KGNvZGVPcmlnaW4tPmJ5dGVj
b2RlSW5kZXgpLmJpdHMoKTsKICNlbHNlCi0gICAgICAgIEluc3RydWN0aW9uKiBpbnN0cnVjdGlv
biA9IG91dGVybW9zdEJhc2VsaW5lQ29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpICsg
Y29kZU9yaWdpbi0+Ynl0ZWNvZGVJbmRleDsKKyAgICAgICAgSW5zdHJ1Y3Rpb24qIGluc3RydWN0
aW9uID0gJm91dGVybW9zdEJhc2VsaW5lQ29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKVtjb2RlT3Jp
Z2luLT5ieXRlY29kZUluZGV4XTsKICAgICAgICAgdWludDMyX3QgbG9jYXRpb25CaXRzID0gQ2Fs
bFNpdGVJbmRleChpbnN0cnVjdGlvbikuYml0cygpOwogI2VuZGlmCiAgICAgICAgIGZyYW1lLnNl
dE9wZXJhbmQ8dWludDMyX3Q+KENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnQsIFRhZ09mZnNl
dCwgbG9jYXRpb25CaXRzKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NS
RXhpdENvbXBpbGVyQ29tbW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR09TUkV4aXRDb21waWxlckNvbW1vbi5jcHAJKHJldmlzaW9uIDIyOTgwOCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyQ29tbW9uLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjMxLDcgKzIzMSw3IEBAIHZvaWQgcmVpZnlJbmxpbmVkQ2FsbEZy
YW1lcyhDQ2FsbEhlbHBlcnMKICAgICAgICAgICAgIGppdC5zdG9yZTY0KEFzc2VtYmx5SGVscGVy
czo6VHJ1c3RlZEltbTY0KEpTVmFsdWU6OmVuY29kZShKU1ZhbHVlKGlubGluZUNhbGxGcmFtZS0+
Y2FsbGVlQ29uc3RhbnQoKSkpKSwgQXNzZW1ibHlIZWxwZXJzOjphZGRyZXNzRm9yKChWaXJ0dWFs
UmVnaXN0ZXIpKGlubGluZUNhbGxGcmFtZS0+c3RhY2tPZmZzZXQgKyBDYWxsRnJhbWVTbG90Ojpj
YWxsZWUpKSk7CiAjZWxzZSAvLyBVU0UoSlNWQUxVRTY0KSAvLyBzbyB0aGlzIGlzIHRoZSAzMi1i
aXQgcGFydAogICAgICAgICBqaXQuc3RvcmVQdHIoY2FsbGVyRnJhbWVHUFIsIEFzc2VtYmx5SGVs
cGVyczo6YWRkcmVzc0ZvckJ5dGVPZmZzZXQoaW5saW5lQ2FsbEZyYW1lLT5jYWxsZXJGcmFtZU9m
ZnNldCgpKSk7Ci0gICAgICAgIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiA9IGJhc2VsaW5lQ29k
ZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpICsgY29kZU9yaWdpbi0+Ynl0ZWNvZGVJbmRl
eDsKKyAgICAgICAgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uID0gJmJhc2VsaW5lQ29kZUJsb2Nr
LT5pbnN0cnVjdGlvbnMoKVtjb2RlT3JpZ2luLT5ieXRlY29kZUluZGV4XTsKICAgICAgICAgdWlu
dDMyX3QgbG9jYXRpb25CaXRzID0gQ2FsbFNpdGVJbmRleChpbnN0cnVjdGlvbikuYml0cygpOwog
ICAgICAgICBqaXQuc3RvcmUzMihBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW0zMihsb2NhdGlv
bkJpdHMpLCBBc3NlbWJseUhlbHBlcnM6OnRhZ0ZvcigoVmlydHVhbFJlZ2lzdGVyKShpbmxpbmVD
YWxsRnJhbWUtPnN0YWNrT2Zmc2V0ICsgQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudCkpKTsK
ICAgICAgICAgaml0LnN0b3JlMzIoQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tMzIoSlNWYWx1
ZTo6Q2VsbFRhZyksIEFzc2VtYmx5SGVscGVyczo6dGFnRm9yKChWaXJ0dWFsUmVnaXN0ZXIpKGlu
bGluZUNhbGxGcmFtZS0+c3RhY2tPZmZzZXQgKyBDYWxsRnJhbWVTbG90OjpjYWxsZWUpKSk7CkBA
IC0yNDUsNyArMjQ1LDcgQEAgdm9pZCByZWlmeUlubGluZWRDYWxsRnJhbWVzKENDYWxsSGVscGVy
cwogI2lmIFVTRShKU1ZBTFVFNjQpCiAgICAgICAgIHVpbnQzMl90IGxvY2F0aW9uQml0cyA9IENh
bGxTaXRlSW5kZXgoY29kZU9yaWdpbi0+Ynl0ZWNvZGVJbmRleCkuYml0cygpOwogI2Vsc2UKLSAg
ICAgICAgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uID0gaml0LmJhc2VsaW5lQ29kZUJsb2NrKCkt
Pmluc3RydWN0aW9ucygpLmJlZ2luKCkgKyBjb2RlT3JpZ2luLT5ieXRlY29kZUluZGV4OworICAg
ICAgICBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24gPSAmaml0LmJhc2VsaW5lQ29kZUJsb2NrKCkt
Pmluc3RydWN0aW9ucygpW2NvZGVPcmlnaW4tPmJ5dGVjb2RlSW5kZXhdOwogICAgICAgICB1aW50
MzJfdCBsb2NhdGlvbkJpdHMgPSBDYWxsU2l0ZUluZGV4KGluc3RydWN0aW9uKS5iaXRzKCk7CiAj
ZW5kaWYKICAgICAgICAgaml0LnN0b3JlMzIoQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tMzIo
bG9jYXRpb25CaXRzKSwgQXNzZW1ibHlIZWxwZXJzOjp0YWdGb3IoKFZpcnR1YWxSZWdpc3Rlciko
Q2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudCkpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnRlcnByZXRlci9DYWxsRnJhbWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnRlcnByZXRlci9DYWxsRnJhbWUuY3BwCShyZXZpc2lvbiAyMjk4MDgpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTIxLDE5ICsxMjEsMTkgQEAgdW5zaWduZWQgQ2FsbEZyYW1lOjpjYWxsU2l0
ZUJpdHNBc0J5dGVjbwogewogICAgIEFTU0VSVChjb2RlQmxvY2soKSk7CiAgICAgQVNTRVJUKGNh
bGxTaXRlQml0c0FyZUJ5dGVjb2RlT2Zmc2V0KCkpOwotICAgIHJldHVybiBjdXJyZW50VlBDKCkg
LSBjb2RlQmxvY2soKS0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKTsgICAgIAorICAgIHJldHVybiBj
b2RlQmxvY2soKS0+Ynl0ZWNvZGVPZmZzZXQoY3VycmVudFZQQygpKTsgICAgIAogfQogCiAjZWxz
ZSAvLyBVU0UoSlNWQUxVRTMyXzY0KQogSW5zdHJ1Y3Rpb24qIENhbGxGcmFtZTo6Y3VycmVudFZQ
QygpIGNvbnN0CiB7CiAgICAgQVNTRVJUKGNhbGxTaXRlQml0c0FyZUJ5dGVjb2RlT2Zmc2V0KCkp
OwotICAgIHJldHVybiBjb2RlQmxvY2soKS0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKSArIGNhbGxT
aXRlQml0c0FzQnl0ZWNvZGVPZmZzZXQoKTsKKyAgICByZXR1cm4gJmNvZGVCbG9jaygpLT5pbnN0
cnVjdGlvbnMoKVtjYWxsU2l0ZUJpdHNBc0J5dGVjb2RlT2Zmc2V0KCldOwogfQogCiB2b2lkIENh
bGxGcmFtZTo6c2V0Q3VycmVudFZQQyhJbnN0cnVjdGlvbiogdnBjKQogewotICAgIENhbGxTaXRl
SW5kZXggY2FsbFNpdGUodnBjIC0gY29kZUJsb2NrKCktPmluc3RydWN0aW9ucygpLmJlZ2luKCkp
OworICAgIENhbGxTaXRlSW5kZXggY2FsbFNpdGUoY29kZUJsb2NrKCktPmJ5dGVjb2RlT2Zmc2V0
KHZwYykpOwogICAgIHRoaXNbQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudF0udGFnKCkgPSBz
dGF0aWNfY2FzdDxpbnQzMl90PihjYWxsU2l0ZS5iaXRzKCkpOwogfQogCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUQ2FsbC5jcHAJKHJldmlzaW9uIDIyOTgwOCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3NSw3ICsx
NzUsNyBAQCB2b2lkIEpJVDo6Y29tcGlsZU9wQ2FsbChPcGNvZGVJRCBvcGNvZGVJCiAgICAgICAg
IHN0b3JlMzIoVHJ1c3RlZEltbTMyKGFyZ0NvdW50KSwgQWRkcmVzcyhzdGFja1BvaW50ZXJSZWdp
c3RlciwgQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudCAqIHN0YXRpY19jYXN0PGludD4oc2l6
ZW9mKFJlZ2lzdGVyKSkgKyBQYXlsb2FkT2Zmc2V0IC0gc2l6ZW9mKENhbGxlckZyYW1lQW5kUEMp
KSk7CiAgICAgfSAvLyBTUCBob2xkcyBuZXdDYWxsRnJhbWUgKyBzaXplb2YoQ2FsbGVyRnJhbWVB
bmRQQyksIHdpdGggQXJndW1lbnRDb3VudCBpbml0aWFsaXplZC4KICAgICAKLSAgICB1aW50MzJf
dCBieXRlY29kZU9mZnNldCA9IGluc3RydWN0aW9uIC0gbV9jb2RlQmxvY2stPmluc3RydWN0aW9u
cygpLmJlZ2luKCk7CisgICAgdWludDMyX3QgYnl0ZWNvZGVPZmZzZXQgPSBtX2NvZGVCbG9jay0+
Ynl0ZWNvZGVPZmZzZXQoaW5zdHJ1Y3Rpb24pOwogICAgIHVpbnQzMl90IGxvY2F0aW9uQml0cyA9
IENhbGxTaXRlSW5kZXgoYnl0ZWNvZGVPZmZzZXQpLmJpdHMoKTsKICAgICBzdG9yZTMyKFRydXN0
ZWRJbW0zMihsb2NhdGlvbkJpdHMpLCBBZGRyZXNzKGNhbGxGcmFtZVJlZ2lzdGVyLCBDYWxsRnJh
bWVTbG90Ojphcmd1bWVudENvdW50ICogc3RhdGljX2Nhc3Q8aW50PihzaXplb2YoUmVnaXN0ZXIp
KSArIFRhZ09mZnNldCkpOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElu
bGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGlu
ZXMuaAkocmV2aXNpb24gMjI5ODA4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJ
bmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTEzOCw3ICsxMzgsNyBAQCBBTFdBWVNfSU5MSU5F
IHZvaWQgSklUOjp1cGRhdGVUb3BDYWxsRnJhCiB7CiAgICAgQVNTRVJUKHN0YXRpY19jYXN0PGlu
dD4obV9ieXRlY29kZU9mZnNldCkgPj0gMCk7CiAjaWYgVVNFKEpTVkFMVUUzMl82NCkKLSAgICBJ
bnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24gPSBtX2NvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuYmVn
aW4oKSArIG1fYnl0ZWNvZGVPZmZzZXQ7IAorICAgIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiA9
ICZtX2NvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKClbbV9ieXRlY29kZU9mZnNldF07IAogICAgIHVp
bnQzMl90IGxvY2F0aW9uQml0cyA9IENhbGxTaXRlSW5kZXgoaW5zdHJ1Y3Rpb24pLmJpdHMoKTsK
ICNlbHNlCiAgICAgdWludDMyX3QgbG9jYXRpb25CaXRzID0gQ2FsbFNpdGVJbmRleChtX2J5dGVj
b2RlT2Zmc2V0KS5iaXRzKCk7CkBAIC03NDAsOCArNzQwLDcgQEAgQUxXQVlTX0lOTElORSB2b2lk
IEpJVDo6ZW1pdFRhZ0Jvb2woUmVnaQogCiBpbmxpbmUgSW5zdHJ1Y3Rpb24qIEpJVDo6Y29waWVk
SW5zdHJ1Y3Rpb24oSW5zdHJ1Y3Rpb24qIGluc3QpCiB7Ci0gICAgQVNTRVJUKGluc3QgPj0gbV9j
b2RlQmxvY2stPmluc3RydWN0aW9ucygpLmJlZ2luKCkgJiYgaW5zdCA8IG1fY29kZUJsb2NrLT5p
bnN0cnVjdGlvbnMoKS5lbmQoKSk7Ci0gICAgcmV0dXJuIG1faW5zdHJ1Y3Rpb25zLmJlZ2luKCkg
KyAoaW5zdCAtIG1fY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpKTsKKyAgICByZXR1
cm4gbV9pbnN0cnVjdGlvbnMuYmVnaW4oKSArIG1fY29kZUJsb2NrLT5ieXRlY29kZU9mZnNldChp
bnN0KTsKIH0KIAogI2VuZGlmIC8vIFVTRShKU1ZBTFVFMzJfNjQpCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCShyZXZpc2lvbiAyMjk4MDgp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTkxNCw3ICs5MTQsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9oYXNfc3RydWN0
dXJlX3Byb3BlcnR5CiAKIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZUhhc0luZGV4ZWRQcm9wZXJ0
eShCeVZhbEluZm8qIGJ5VmFsSW5mbywgUmV0dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRyZXNzLCBK
SVRBcnJheU1vZGUgYXJyYXlNb2RlKQogewotICAgIEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1
Y3Rpb24gPSBtX2NvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKSArIGJ5VmFsSW5mby0+
Ynl0ZWNvZGVJbmRleDsKKyAgICBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uID0gJm1f
Y29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKVtieVZhbEluZm8tPmJ5dGVjb2RlSW5kZXhdOwogICAg
IAogICAgIFBhdGNoYWJsZUp1bXAgYmFkVHlwZTsKICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcAkocmV2aXNpb24gMjI5ODA4KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA2Myw3
ICsxMDYzLDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfaGFzX3N0cnVjdHVyZV9wcm9wZXJ0eQogCiB2
b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVIYXNJbmRleGVkUHJvcGVydHkoQnlWYWxJbmZvKiBieVZh
bEluZm8sIFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcywgSklUQXJyYXlNb2RlIGFycmF5
TW9kZSkKIHsKLSAgICBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uID0gbV9jb2RlQmxv
Y2stPmluc3RydWN0aW9ucygpLmJlZ2luKCkgKyBieVZhbEluZm8tPmJ5dGVjb2RlSW5kZXg7Cisg
ICAgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiA9ICZtX2NvZGVCbG9jay0+aW5zdHJ1
Y3Rpb25zKClbYnlWYWxJbmZvLT5ieXRlY29kZUluZGV4XTsKICAgICAKICAgICBQYXRjaGFibGVK
dW1wIGJhZFR5cGU7CiAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFBy
b3BlcnR5QWNjZXNzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVFByb3BlcnR5QWNjZXNzLmNwcAkocmV2aXNpb24gMjI5ODA4KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEy
MjIsNyArMTIyMiw3IEBAIHZvaWQgSklUOjplbWl0QnlWYWxJZGVudGlmaWVyQ2hlY2soQnlWYWwK
IAogdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlR2V0QnlWYWwoQnlWYWxJbmZvKiBieVZhbEluZm8s
IFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcywgSklUQXJyYXlNb2RlIGFycmF5TW9kZSkK
IHsKLSAgICBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uID0gbV9jb2RlQmxvY2stPmlu
c3RydWN0aW9ucygpLmJlZ2luKCkgKyBieVZhbEluZm8tPmJ5dGVjb2RlSW5kZXg7CisgICAgSW5z
dHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiA9ICZtX2NvZGVCbG9jay0+aW5zdHJ1Y3Rpb25z
KClbYnlWYWxJbmZvLT5ieXRlY29kZUluZGV4XTsKICAgICAKICAgICBQYXRjaGFibGVKdW1wIGJh
ZFR5cGU7CiAgICAgSnVtcExpc3Qgc2xvd0Nhc2VzOwpAQCAtMTI3NCw3ICsxMjc0LDcgQEAgdm9p
ZCBKSVQ6OnByaXZhdGVDb21waWxlR2V0QnlWYWwoQnlWYWxJbgogCiB2b2lkIEpJVDo6cHJpdmF0
ZUNvbXBpbGVHZXRCeVZhbFdpdGhDYWNoZWRJZChCeVZhbEluZm8qIGJ5VmFsSW5mbywgUmV0dXJu
QWRkcmVzc1B0ciByZXR1cm5BZGRyZXNzLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUp
CiB7Ci0gICAgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiA9IG1fY29kZUJsb2NrLT5p
bnN0cnVjdGlvbnMoKS5iZWdpbigpICsgYnlWYWxJbmZvLT5ieXRlY29kZUluZGV4OworICAgIElu
c3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24gPSAmbV9jb2RlQmxvY2stPmluc3RydWN0aW9u
cygpW2J5VmFsSW5mby0+Ynl0ZWNvZGVJbmRleF07CiAKICAgICBKdW1wIGZhc3REb25lQ2FzZTsK
ICAgICBKdW1wIHNsb3dEb25lQ2FzZTsKQEAgLTEzMDcsNyArMTMwNyw3IEBAIHZvaWQgSklUOjpw
cml2YXRlQ29tcGlsZUdldEJ5VmFsV2l0aENhY2gKIAogdm9pZCBKSVQ6OnByaXZhdGVDb21waWxl
UHV0QnlWYWwoQnlWYWxJbmZvKiBieVZhbEluZm8sIFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRk
cmVzcywgSklUQXJyYXlNb2RlIGFycmF5TW9kZSkKIHsKLSAgICBJbnN0cnVjdGlvbiogY3VycmVu
dEluc3RydWN0aW9uID0gbV9jb2RlQmxvY2stPmluc3RydWN0aW9ucygpLmJlZ2luKCkgKyBieVZh
bEluZm8tPmJ5dGVjb2RlSW5kZXg7CisgICAgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlv
biA9ICZtX2NvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKClbYnlWYWxJbmZvLT5ieXRlY29kZUluZGV4
XTsKICAgICAKICAgICBQYXRjaGFibGVKdW1wIGJhZFR5cGU7CiAgICAgSnVtcExpc3Qgc2xvd0Nh
c2VzOwpAQCAtMTM2Niw3ICsxMzY2LDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlUHV0QnlW
YWwoQnlWYWxJbgogCiB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVQdXRCeVZhbFdpdGhDYWNoZWRJ
ZChCeVZhbEluZm8qIGJ5VmFsSW5mbywgUmV0dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRyZXNzLCBQ
dXRLaW5kIHB1dEtpbmQsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSkKIHsKLSAgICBJ
bnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uID0gbV9jb2RlQmxvY2stPmluc3RydWN0aW9u
cygpLmJlZ2luKCkgKyBieVZhbEluZm8tPmJ5dGVjb2RlSW5kZXg7CisgICAgSW5zdHJ1Y3Rpb24q
IGN1cnJlbnRJbnN0cnVjdGlvbiA9ICZtX2NvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKClbYnlWYWxJ
bmZvLT5ieXRlY29kZUluZGV4XTsKIAogICAgIEp1bXBMaXN0IGRvbmVDYXNlczsKICAgICBKdW1w
TGlzdCBzbG93Q2FzZXM7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1Nsb3dQYXRo
Q2FsbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvU2xvd1BhdGhD
YWxsLmgJKHJldmlzaW9uIDIyOTgwOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvU2xv
d1BhdGhDYWxsLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDcgKzQ2LDcgQEAgcHVibGljOgogICAg
IHsKICNpZiBFTkFCTEUoT1BDT0RFX1NBTVBMSU5HKQogICAgICAgICBpZiAobV9qaXQtPm1fYnl0
ZWNvZGVPZmZzZXQgIT0gc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpKQotICAg
ICAgICAgICAgbV9qaXQtPnNhbXBsZUluc3RydWN0aW9uKG1faml0LT5tX2NvZGVCbG9jay0+aW5z
dHJ1Y3Rpb25zKCkuYmVnaW4oKSArIG1faml0LT5tX2J5dGVjb2RlT2Zmc2V0LCB0cnVlKTsKKyAg
ICAgICAgICAgIG1faml0LT5zYW1wbGVJbnN0cnVjdGlvbigmbV9qaXQtPm1fY29kZUJsb2NrLT5p
bnN0cnVjdGlvbnMoKVttX2ppdC0+bV9ieXRlY29kZU9mZnNldF0sIHRydWUpOwogI2VuZGlmCiAg
ICAgICAgIG1faml0LT51cGRhdGVUb3BDYWxsRnJhbWUoKTsKICNpZiBDUFUoWDg2KSAmJiBVU0Uo
SlNWQUxVRTMyXzY0KQpAQCAtNzUsNyArNzUsNyBAQCBwdWJsaWM6CiAKICNpZiBFTkFCTEUoT1BD
T0RFX1NBTVBMSU5HKQogICAgICAgICBpZiAobV9qaXQtPm1fYnl0ZWNvZGVPZmZzZXQgIT0gc3Rk
OjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpKQotICAgICAgICAgICAgbV9qaXQtPnNh
bXBsZUluc3RydWN0aW9uKG1faml0LT5tX2NvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4o
KSArIG1faml0LT5tX2J5dGVjb2RlT2Zmc2V0LCBmYWxzZSk7CisgICAgICAgICAgICBtX2ppdC0+
c2FtcGxlSW5zdHJ1Y3Rpb24oJm1faml0LT5tX2NvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKClbbV9q
aXQtPm1fYnl0ZWNvZGVPZmZzZXRdLCBmYWxzZSk7CiAjZW5kaWYKICAgICAgICAgCiAgICAgICAg
IG1faml0LT5leGNlcHRpb25DaGVjaygpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xMSW50U2xvd1BhdGhzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCShyZXZpc2lvbiAyMjk4MDgpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xOTYsNyArMTk2LDcgQEAgZXh0ZXJuICJDIiBTbG93UGF0aFJldHVyblR5cGUgbGxpbnRfdHJh
YwogICAgICAgICAgICAgJlRocmVhZDo6Y3VycmVudCgpLAogICAgICAgICAgICAgZXhlYy0+Y29k
ZUJsb2NrKCksCiAgICAgICAgICAgICBleGVjLAotICAgICAgICAgICAgc3RhdGljX2Nhc3Q8aW50
cHRyX3Q+KHBjIC0gZXhlYy0+Y29kZUJsb2NrKCktPmluc3RydWN0aW9ucygpLmJlZ2luKCkpLAor
ICAgICAgICAgICAgc3RhdGljX2Nhc3Q8aW50cHRyX3Q+KGV4ZWMtPmNvZGVCbG9jaygpLT5ieXRl
Y29kZU9mZnNldChwYykpLAogICAgICAgICAgICAgSW50ZXJwcmV0ZXI6OmdldE9wY29kZUlEKHBj
WzBdLnUub3Bjb2RlKSwKICAgICAgICAgICAgIGZyb21XaGVyZSwKICAgICAgICAgICAgIG9wZXJh
bmQsCkBAIC0yMjAsNyArMjIwLDcgQEAgZXh0ZXJuICJDIiBTbG93UGF0aFJldHVyblR5cGUgbGxp
bnRfdHJhYwogICAgICAgICAmVGhyZWFkOjpjdXJyZW50KCksCiAgICAgICAgIGV4ZWMtPmNvZGVC
bG9jaygpLAogICAgICAgICBleGVjLAotICAgICAgICBzdGF0aWNfY2FzdDxpbnRwdHJfdD4ocGMg
LSBleGVjLT5jb2RlQmxvY2soKS0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKSksCisgICAgICAgIHN0
YXRpY19jYXN0PGludHB0cl90PihleGVjLT5jb2RlQmxvY2soKS0+Ynl0ZWNvZGVPZmZzZXQocGMp
KSwKICAgICAgICAgSW50ZXJwcmV0ZXI6OmdldE9wY29kZUlEKHBjWzBdLnUub3Bjb2RlKSwKICAg
ICAgICAgZnJvbVdoZXJlLAogICAgICAgICBvcGVyYW5kLApAQCAtMjgwLDcgKzI4MCw3IEBAIExM
SU5UX1NMT1dfUEFUSF9ERUNMKHRyYWNlKQogICAgICAgICAgICAgJlRocmVhZDo6Y3VycmVudCgp
LAogICAgICAgICAgICAgZXhlYy0+Y29kZUJsb2NrKCksCiAgICAgICAgICAgICBleGVjLAotICAg
ICAgICAgICAgc3RhdGljX2Nhc3Q8aW50cHRyX3Q+KHBjIC0gZXhlYy0+Y29kZUJsb2NrKCktPmlu
c3RydWN0aW9ucygpLmJlZ2luKCkpLAorICAgICAgICAgICAgc3RhdGljX2Nhc3Q8aW50cHRyX3Q+
KGV4ZWMtPmNvZGVCbG9jaygpLT5ieXRlY29kZU9mZnNldChwYykpLAogICAgICAgICAgICAgb3Bj
b2RlTmFtZXNbb3Bjb2RlSURdLCBwYyk7CiAgICAgaWYgKG9wY29kZUlEID09IG9wX2VudGVyKSB7
CiAgICAgICAgIGRhdGFMb2dGKCJGcmFtZSB3aWxsIGV2ZW50dWFsbHkgcmV0dXJuIHRvICVwXG4i
LCBleGVjLT5yZXR1cm5QQygpLnZhbHVlKCkpOwpAQCAtMjk5LDcgKzI5OSw3IEBAIExMSU5UX1NM
T1dfUEFUSF9ERUNMKHNwZWNpYWxfdHJhY2UpCiAgICAgICAgICAgICAmVGhyZWFkOjpjdXJyZW50
KCksCiAgICAgICAgICAgICBleGVjLT5jb2RlQmxvY2soKSwKICAgICAgICAgICAgIGV4ZWMsCi0g
ICAgICAgICAgICBzdGF0aWNfY2FzdDxpbnRwdHJfdD4ocGMgLSBleGVjLT5jb2RlQmxvY2soKS0+
aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKSksCisgICAgICAgICAgICBzdGF0aWNfY2FzdDxpbnRwdHJf
dD4oZXhlYy0+Y29kZUJsb2NrKCktPmJ5dGVjb2RlT2Zmc2V0KHBjKSksCiAgICAgICAgICAgICBJ
bnRlcnByZXRlcjo6Z2V0T3Bjb2RlSUQocGNbMF0udS5vcGNvZGUpLAogICAgICAgICAgICAgZXhl
Yy0+cmV0dXJuUEMoKS52YWx1ZSgpKTsKICAgICBMTElOVF9FTkRfSU1QTCgpOwpAQCAtNDI5LDcg
KzQyOSw3IEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKGxvb3Bfb3NyKQogICAgICAgICAgICAgY29k
ZUJsb2NrLT5sbGludEV4ZWN1dGVDb3VudGVyKCksICJcbiIpOwogICAgIH0KICAgICAKLSAgICB1
bnNpZ25lZCBsb29wT1NSRW50cnlCeXRlY29kZU9mZnNldCA9IHBjIC0gY29kZUJsb2NrLT5pbnN0
cnVjdGlvbnMoKS5iZWdpbigpOworICAgIHVuc2lnbmVkIGxvb3BPU1JFbnRyeUJ5dGVjb2RlT2Zm
c2V0ID0gY29kZUJsb2NrLT5ieXRlY29kZU9mZnNldChwYyk7CiAKICAgICBpZiAoIXNob3VsZEpJ
VChjb2RlQmxvY2spKSB7CiAgICAgICAgIGNvZGVCbG9jay0+ZG9udEpJVEFueXRpbWVTb29uKCk7
CkBAIC00MzksMTUgKzQzOSwxNSBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChsb29wX29zcikKICAg
ICBpZiAoIWppdENvbXBpbGVBbmRTZXRIZXVyaXN0aWNzKGNvZGVCbG9jaywgZXhlYywgbG9vcE9T
UkVudHJ5Qnl0ZWNvZGVPZmZzZXQpKQogICAgICAgICBMTElOVF9SRVRVUk5fVFdPKDAsIDApOwog
ICAgIAotICAgIENPREVCTE9DS19MT0dfRVZFTlQoY29kZUJsb2NrLCAib3NyRW50cnkiLCAoImF0
IGJjIyIsIHBjIC0gY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpKSk7CisgICAgQ09E
RUJMT0NLX0xPR19FVkVOVChjb2RlQmxvY2ssICJvc3JFbnRyeSIsICgiYXQgYmMjIiwgbG9vcE9T
UkVudHJ5Qnl0ZWNvZGVPZmZzZXQpKTsKIAogICAgIEFTU0VSVChjb2RlQmxvY2stPmppdFR5cGUo
KSA9PSBKSVRDb2RlOjpCYXNlbGluZUpJVCk7CiAgICAgCiAgICAgVmVjdG9yPEJ5dGVjb2RlQW5k
TWFjaGluZU9mZnNldD4gbWFwOwogICAgIGNvZGVCbG9jay0+aml0Q29kZU1hcCgpLT5kZWNvZGUo
bWFwKTsKLSAgICBCeXRlY29kZUFuZE1hY2hpbmVPZmZzZXQqIG1hcHBpbmcgPSBiaW5hcnlTZWFy
Y2g8Qnl0ZWNvZGVBbmRNYWNoaW5lT2Zmc2V0LCB1bnNpZ25lZD4obWFwLCBtYXAuc2l6ZSgpLCBw
YyAtIGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKSwgQnl0ZWNvZGVBbmRNYWNoaW5l
T2Zmc2V0OjpnZXRCeXRlY29kZUluZGV4KTsKKyAgICBCeXRlY29kZUFuZE1hY2hpbmVPZmZzZXQq
IG1hcHBpbmcgPSBiaW5hcnlTZWFyY2g8Qnl0ZWNvZGVBbmRNYWNoaW5lT2Zmc2V0LCB1bnNpZ25l
ZD4obWFwLCBtYXAuc2l6ZSgpLCBsb29wT1NSRW50cnlCeXRlY29kZU9mZnNldCwgQnl0ZWNvZGVB
bmRNYWNoaW5lT2Zmc2V0OjpnZXRCeXRlY29kZUluZGV4KTsKICAgICBBU1NFUlQobWFwcGluZyk7
Ci0gICAgQVNTRVJUKG1hcHBpbmctPm1fYnl0ZWNvZGVJbmRleCA9PSBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4ocGMgLSBjb2RlQmxvY2stPmluc3RydWN0aW9ucygpLmJlZ2luKCkpKTsKKyAgICBBU1NF
UlQobWFwcGluZy0+bV9ieXRlY29kZUluZGV4ID09IGxvb3BPU1JFbnRyeUJ5dGVjb2RlT2Zmc2V0
OwogICAgIAogICAgIHZvaWQqIGp1bXBUYXJnZXQgPSBjb2RlQmxvY2stPmppdENvZGUoKS0+ZXhl
Y3V0YWJsZUFkZHJlc3NBdE9mZnNldChtYXBwaW5nLT5tX21hY2hpbmVDb2RlT2Zmc2V0KTsKICAg
ICBBU1NFUlQoanVtcFRhcmdldCk7CkBAIC03MTQsNyArNzE0LDcgQEAgTExJTlRfU0xPV19QQVRI
X0RFQ0woc2xvd19wYXRoX2dldF9ieV9pZAogICAgICAgICAmJiBpc0pTQXJyYXkoYmFzZVZhbHVl
KQogICAgICAgICAmJiBpZGVudCA9PSB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgpIHsKICAgICAg
ICAgcGNbMF0udS5vcGNvZGUgPSBMTEludDo6Z2V0T3Bjb2RlKG9wX2dldF9hcnJheV9sZW5ndGgp
OwotICAgICAgICBBcnJheVByb2ZpbGUqIGFycmF5UHJvZmlsZSA9IGNvZGVCbG9jay0+Z2V0T3JB
ZGRBcnJheVByb2ZpbGUocGMgLSBjb2RlQmxvY2stPmluc3RydWN0aW9ucygpLmJlZ2luKCkpOwor
ICAgICAgICBBcnJheVByb2ZpbGUqIGFycmF5UHJvZmlsZSA9IGNvZGVCbG9jay0+Z2V0T3JBZGRB
cnJheVByb2ZpbGUoY29kZUJsb2NrLT5ieXRlY29kZU9mZnNldChwYykpOwogICAgICAgICBhcnJh
eVByb2ZpbGUtPm9ic2VydmVTdHJ1Y3R1cmUoYmFzZVZhbHVlLmFzQ2VsbCgpLT5zdHJ1Y3R1cmUo
KSk7CiAgICAgICAgIHBjWzRdLnUuYXJyYXlQcm9maWxlID0gYXJyYXlQcm9maWxlOwogCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TYW1wbGluZ1Byb2ZpbGVyLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TYW1wbGluZ1Byb2ZpbGVy
LmNwcAkocmV2aXNpb24gMjI5ODA4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
U2FtcGxpbmdQcm9maWxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQzNSwxMCArNDM1LDkgQEAg
c3RhdGljIEFMV0FZU19JTkxJTkUgdW5zaWduZWQgdHJ5R2V0Qnl0ZQogICAgIHJldHVybiAwOwog
I2Vsc2UKICAgICBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24gPSBiaXR3aXNlX2Nhc3Q8SW5zdHJ1
Y3Rpb24qPihsbGludFBDKTsKLSAgICBpZiAoaW5zdHJ1Y3Rpb24gPj0gY29kZUJsb2NrLT5pbnN0
cnVjdGlvbnMoKS5iZWdpbigpICYmIGluc3RydWN0aW9uIDwgY29kZUJsb2NrLT5pbnN0cnVjdGlv
bnMoKS5iZWdpbigpICsgY29kZUJsb2NrLT5pbnN0cnVjdGlvbkNvdW50KCkpIHsKKyAgICBpZiAo
aW5zdHJ1Y3Rpb24gPj0gY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpICYmIGluc3Ry
dWN0aW9uIDwgY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5lbmQoKSkgewogICAgICAgICBpc1Zh
bGlkID0gdHJ1ZTsKLSAgICAgICAgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCA9IGluc3RydWN0aW9u
IC0gY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpOwotICAgICAgICByZXR1cm4gYnl0
ZWNvZGVJbmRleDsKKyAgICAgICAgcmV0dXJuIGNvZGVCbG9jay0+Ynl0ZWNvZGVPZmZzZXQoaW5z
dHJ1Y3Rpb24pOwogICAgIH0KICAgICBpc1ZhbGlkID0gZmFsc2U7CiAgICAgcmV0dXJuIDA7Cg==
</data>
<flag name="review"
          id="354738"
          type_id="1"
          status="-"
          setter="mark.lam"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>336206</attachid>
            <date>2018-03-21 10:18:28 -0700</date>
            <delta_ts>2018-03-21 10:20:22 -0700</delta_ts>
            <desc>proposed patch.</desc>
            <filename>bug-183857.patch</filename>
            <type>text/plain</type>
            <size>24728</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjI5ODA4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDc0IEBA
CisyMDE4LTAzLTIxICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBV
c2UgQ29kZUJsb2NrOjppbnN0cnVjdGlvbnMoKVtdIGFuZCBDb2RlQmxvY2s6OmJ5dGVjb2RlT2Zm
c2V0KCkgaW5zdGVhZCBvZiBkb2luZyBvd24gcG9pbnRlciBtYXRoLgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgzODU3CisgICAgICAgIDxyZGFyOi8v
cHJvYmxlbS8zODcxMjE4ND4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBXZSBzaG91bGQgYXZvaWQgZG9pbmcgcG9pbnRlciBtYXRoIHdpdGggQ29kZUJs
b2NrOjppbnN0cnVjdGlvbnMoKS5iZWdpbigpLgorICAgICAgICBJbnN0ZWFkLCB3ZSBzaG91bGQg
dXNlIHRoZSBvcGVyYXRvcltdIHRoYXQgY29tZXMgd2l0aCBDb2RlQmxvY2s6Omluc3RydWN0aW9u
cygpCisgICAgICAgIGZvciBjb21wdXRpbmcgYW4gSW5zdHJ1Y3Rpb24qLCBhbmQgdXNlIENvZGVC
bG9jazo6Ynl0ZWNvZGVPZmZzZXQoKSBmb3IgY29tcHV0aW5nCisgICAgICAgIHRoZSBieXRlY29k
ZSBvZmZzZXQgb2YgYSBnaXZlbiBJbnN0cnVjdGlvbiouICBUaGVzZSBtZXRob2RzIHdpbGwgZG8g
YXNzZXJ0aW9ucworICAgICAgICB3aGljaCBoZWxwcyBjYXRjaCBidWdzIHNvb25lciwgcGx1cyB0
aGV5IGFyZSBtb3JlIGRlc2NyaXB0aXZlIG9mIHRoZSBvcGVyYXRpb24KKyAgICAgICAgd2UncmUg
dHJ5aW5nIHRvIGRvLgorCisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVLaWxscy5oOgorICAg
ICAgICAoSlNDOjpCeXRlY29kZUtpbGxzOjpvcGVyYW5kSXNLaWxsZWQgY29uc3QpOgorICAgICAg
ICAoSlNDOjpCeXRlY29kZUtpbGxzOjpmb3JFYWNoT3BlcmFuZEtpbGxlZEF0IGNvbnN0KToKKyAg
ICAgICAgKiBieXRlY29kZS9DYWxsTGlua1N0YXR1cy5jcHA6CisgICAgICAgIChKU0M6OkNhbGxM
aW5rU3RhdHVzOjpjb21wdXRlRnJvbUxMSW50KToKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxv
Y2suY3BwOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmR1bXBCeXRlY29kZSk6CisgICAgICAg
IChKU0M6OkNvZGVCbG9jazo6YXJpdGhQcm9maWxlRm9yQnl0ZWNvZGVPZmZzZXQpOgorICAgICAg
ICAoSlNDOjpDb2RlQmxvY2s6OmJ5dGVjb2RlT2Zmc2V0RnJvbUNhbGxTaXRlSW5kZXgpOgorICAg
ICAgICAqIGJ5dGVjb2RlL0dldEJ5SWRTdGF0dXMuY3BwOgorICAgICAgICAoSlNDOjpHZXRCeUlk
U3RhdHVzOjpjb21wdXRlRnJvbUxMSW50KToKKyAgICAgICAgKiBieXRlY29kZS9QdXRCeUlkU3Rh
dHVzLmNwcDoKKyAgICAgICAgKEpTQzo6UHV0QnlJZFN0YXR1czo6Y29tcHV0ZUZyb21MTEludCk6
CisgICAgICAgICogZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6REZH
OjpCeXRlQ29kZVBhcnNlcjo6Z2V0UHJlZGljdGlvbldpdGhvdXRPU1JFeGl0KToKKyAgICAgICAg
KiBkZmcvREZHT1NSRXhpdC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6cmVpZnlJbmxpbmVkQ2Fs
bEZyYW1lcyk6CisgICAgICAgICogZGZnL0RGR09TUkV4aXRDb21waWxlckNvbW1vbi5jcHA6Cisg
ICAgICAgIChKU0M6OkRGRzo6cmVpZnlJbmxpbmVkQ2FsbEZyYW1lcyk6CisgICAgICAgICogaW50
ZXJwcmV0ZXIvQ2FsbEZyYW1lLmNwcDoKKyAgICAgICAgKEpTQzo6Q2FsbEZyYW1lOjpjYWxsU2l0
ZUJpdHNBc0J5dGVjb2RlT2Zmc2V0IGNvbnN0KToKKyAgICAgICAgKEpTQzo6Q2FsbEZyYW1lOjpj
dXJyZW50VlBDIGNvbnN0KToKKyAgICAgICAgKEpTQzo6Q2FsbEZyYW1lOjpzZXRDdXJyZW50VlBD
KToKKyAgICAgICAgKiBqaXQvSklUQ2FsbC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6Y29tcGls
ZU9wQ2FsbCk6CisgICAgICAgICogaml0L0pJVElubGluZXMuaDoKKyAgICAgICAgKEpTQzo6SklU
Ojp1cGRhdGVUb3BDYWxsRnJhbWUpOgorICAgICAgICAoSlNDOjpKSVQ6OmNvcGllZEluc3RydWN0
aW9uKToKKyAgICAgICAgKiBqaXQvSklUT3Bjb2Rlcy5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6
cHJpdmF0ZUNvbXBpbGVIYXNJbmRleGVkUHJvcGVydHkpOgorICAgICAgICAqIGppdC9KSVRPcGNv
ZGVzMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlSGFzSW5kZXhl
ZFByb3BlcnR5KToKKyAgICAgICAgKiBqaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwOgorICAgICAg
ICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlR2V0QnlWYWwpOgorICAgICAgICAoSlNDOjpKSVQ6
OnByaXZhdGVDb21waWxlR2V0QnlWYWxXaXRoQ2FjaGVkSWQpOgorICAgICAgICAoSlNDOjpKSVQ6
OnByaXZhdGVDb21waWxlUHV0QnlWYWwpOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21w
aWxlUHV0QnlWYWxXaXRoQ2FjaGVkSWQpOgorICAgICAgICAqIGppdC9TbG93UGF0aENhbGwuaDoK
KyAgICAgICAgKEpTQzo6SklUU2xvd1BhdGhDYWxsOjpjYWxsKToKKyAgICAgICAgKiBsbGludC9M
TEludFNsb3dQYXRocy5jcHA6CisgICAgICAgIChKU0M6OkxMSW50OjpsbGludF90cmFjZV9vcGVy
YW5kKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmxsaW50X3RyYWNlX3ZhbHVlKToKKyAgICAgICAg
KEpTQzo6TExJbnQ6OkxMSU5UX1NMT1dfUEFUSF9ERUNMKToKKyAgICAgICAgKEpTQzo6TExJbnQ6
OnNldHVwR2V0QnlJZFByb3RvdHlwZUNhY2hlKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6TExJ
bnQ6OmdldEJ5VmFsKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6TExJbnQ6OmhhbmRsZUhvc3RD
YWxsKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6TExJbnQ6OnNldFVwQ2FsbCk6IERlbGV0ZWQu
CisgICAgICAgIChKU0M6OkxMSW50OjpnZW5lcmljQ2FsbCk6IERlbGV0ZWQuCisgICAgICAgIChK
U0M6OkxMSW50Ojp2YXJhcmdzU2V0dXApOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpMTEludDo6
bGxpbnRfdGhyb3dfc3RhY2tfb3ZlcmZsb3dfZXJyb3IpOiBEZWxldGVkLgorICAgICAgICAoSlND
OjpMTEludDo6bGxpbnRfc3RhY2tfY2hlY2tfYXRfdm1fZW50cnkpOiBEZWxldGVkLgorICAgICAg
ICAoSlNDOjpMTEludDo6bGxpbnRfd3JpdGVfYmFycmllcl9zbG93KTogRGVsZXRlZC4KKyAgICAg
ICAgKEpTQzo6TExJbnQ6OmxsaW50X2NyYXNoKTogRGVsZXRlZC4KKyAgICAgICAgKiBydW50aW1l
L1NhbXBsaW5nUHJvZmlsZXIuY3BwOgorICAgICAgICAoSlNDOjp0cnlHZXRCeXRlY29kZUluZGV4
KToKKwogMjAxOC0wMy0yMSAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5j
b20+CiAKICAgICAgICAgVW5yZXZpZXdlZC4gRml4IEdUSyBhbmQgV1BFIGRlYnVnIGJ1aWxkIGFm
dGVyIHIyMjk3OTguCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNv
ZGVLaWxscy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9C
eXRlY29kZUtpbGxzLmgJKHJldmlzaW9uIDIyOTgwOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9CeXRlY29kZUtpbGxzLmgJKHdvcmtpbmcgY29weSkKQEAgLTUyLDcgKzUyLDcg
QEAgcHVibGljOgogICAgIAogICAgIGJvb2wgb3BlcmFuZElzS2lsbGVkKEluc3RydWN0aW9uKiBp
bnN0cnVjdGlvbiwgaW50IG9wZXJhbmQpIGNvbnN0CiAgICAgewotICAgICAgICByZXR1cm4gb3Bl
cmFuZElzS2lsbGVkKGluc3RydWN0aW9uIC0gbV9jb2RlQmxvY2stPmluc3RydWN0aW9ucygpLmJl
Z2luKCksIG9wZXJhbmQpOworICAgICAgICByZXR1cm4gb3BlcmFuZElzS2lsbGVkKG1fY29kZUJs
b2NrLT5ieXRlY29kZU9mZnNldChpbnN0cnVjdGlvbiksIG9wZXJhbmQpOwogICAgIH0KICAgICAK
ICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPgpAQCAtNjgsNyArNjgsNyBAQCBwdWJsaWM6
CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4KICAgICB2b2lkIGZvckVhY2hPcGVyYW5k
S2lsbGVkQXQoSW5zdHJ1Y3Rpb24qIHBjLCBjb25zdCBGdW5jdG9yJiBmdW5jdG9yKSBjb25zdAog
ICAgIHsKLSAgICAgICAgZm9yRWFjaE9wZXJhbmRLaWxsZWRBdChwYyAtIG1fY29kZUJsb2NrLT5p
bnN0cnVjdGlvbnMoKS5iZWdpbigpLCBmdW5jdG9yKTsKKyAgICAgICAgZm9yRWFjaE9wZXJhbmRL
aWxsZWRBdChtX2NvZGVCbG9jay0+Ynl0ZWNvZGVPZmZzZXQocGMpLCBmdW5jdG9yKTsKICAgICB9
CiAgICAgCiBwcml2YXRlOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Nh
bGxMaW5rU3RhdHVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQ2FsbExpbmtTdGF0dXMuY3BwCShyZXZpc2lvbiAyMjk4MDgpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtTdGF0dXMuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC02Niw3ICs2Niw3IEBAIENhbGxMaW5rU3RhdHVzIENhbGxMaW5rU3RhdHVzOjpjb21wdXRlRnIK
ICAgICB9CiAjZW5kaWYKIAotICAgIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiA9IHByb2ZpbGVk
QmxvY2stPmluc3RydWN0aW9ucygpLmJlZ2luKCkgKyBieXRlY29kZUluZGV4OworICAgIEluc3Ry
dWN0aW9uKiBpbnN0cnVjdGlvbiA9ICZwcm9maWxlZEJsb2NrLT5pbnN0cnVjdGlvbnMoKVtieXRl
Y29kZUluZGV4XTsKICAgICBPcGNvZGVJRCBvcCA9IEludGVycHJldGVyOjpnZXRPcGNvZGVJRChp
bnN0cnVjdGlvblswXS51Lm9wY29kZSk7CiAgICAgaWYgKG9wICE9IG9wX2NhbGwgJiYgb3AgIT0g
b3BfY29uc3RydWN0ICYmIG9wICE9IG9wX3RhaWxfY2FsbCkKICAgICAgICAgcmV0dXJuIENhbGxM
aW5rU3RhdHVzKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJs
b2NrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29k
ZUJsb2NrLmNwcAkocmV2aXNpb24gMjI5ODA4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0NvZGVCbG9jay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI1Myw3ICsyNTMsNyBAQCB2
b2lkIENvZGVCbG9jazo6ZHVtcEJ5dGVjb2RlKAogICAgIFByaW50U3RyZWFtJiBvdXQsIHVuc2ln
bmVkIGJ5dGVjb2RlT2Zmc2V0LAogICAgIGNvbnN0IFN0dWJJbmZvTWFwJiBzdHViSW5mb3MsIGNv
bnN0IENhbGxMaW5rSW5mb01hcCYgY2FsbExpbmtJbmZvcykKIHsKLSAgICBjb25zdCBJbnN0cnVj
dGlvbiogaXQgPSBpbnN0cnVjdGlvbnMoKS5iZWdpbigpICsgYnl0ZWNvZGVPZmZzZXQ7CisgICAg
Y29uc3QgSW5zdHJ1Y3Rpb24qIGl0ID0gJmluc3RydWN0aW9ucygpW2J5dGVjb2RlT2Zmc2V0XTsK
ICAgICBkdW1wQnl0ZWNvZGUob3V0LCBpbnN0cnVjdGlvbnMoKS5iZWdpbigpLCBpdCwgc3R1Yklu
Zm9zLCBjYWxsTGlua0luZm9zKTsKIH0KIApAQCAtMjg3NCw3ICsyODc0LDcgQEAgdW5zaWduZWQg
Q29kZUJsb2NrOjpyYXJlQ2FzZVByb2ZpbGVDb3VudAogCiBBcml0aFByb2ZpbGUqIENvZGVCbG9j
azo6YXJpdGhQcm9maWxlRm9yQnl0ZWNvZGVPZmZzZXQoaW50IGJ5dGVjb2RlT2Zmc2V0KQogewot
ICAgIHJldHVybiBhcml0aFByb2ZpbGVGb3JQQyhpbnN0cnVjdGlvbnMoKS5iZWdpbigpICsgYnl0
ZWNvZGVPZmZzZXQpOworICAgIHJldHVybiBhcml0aFByb2ZpbGVGb3JQQygmaW5zdHJ1Y3Rpb25z
KClbYnl0ZWNvZGVPZmZzZXRdKTsKIH0KIAogQXJpdGhQcm9maWxlKiBDb2RlQmxvY2s6OmFyaXRo
UHJvZmlsZUZvclBDKEluc3RydWN0aW9uKiBwYykKQEAgLTMwMjEsNyArMzAyMSw3IEBAIHN0ZDo6
b3B0aW9uYWw8dW5zaWduZWQ+IENvZGVCbG9jazo6Ynl0ZWMKICAgICAgICAgYnl0ZWNvZGVPZmZz
ZXQgPSBjYWxsU2l0ZUluZGV4LmJpdHMoKTsKICNlbHNlCiAgICAgICAgIEluc3RydWN0aW9uKiBp
bnN0cnVjdGlvbiA9IGJpdHdpc2VfY2FzdDxJbnN0cnVjdGlvbio+KGNhbGxTaXRlSW5kZXguYml0
cygpKTsKLSAgICAgICAgYnl0ZWNvZGVPZmZzZXQgPSBpbnN0cnVjdGlvbiAtIGluc3RydWN0aW9u
cygpLmJlZ2luKCk7CisgICAgICAgIGJ5dGVjb2RlT2Zmc2V0ID0gdGhpcy0+Ynl0ZWNvZGVPZmZz
ZXQoaW5zdHJ1Y3Rpb24pOwogI2VuZGlmCiAgICAgfSBlbHNlIGlmIChqaXRUeXBlID09IEpJVENv
ZGU6OkRGR0pJVCB8fCBqaXRUeXBlID09IEpJVENvZGU6OkZUTEpJVCkgewogI2lmIEVOQUJMRShE
RkdfSklUKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5SWRTdGF0
dXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRC
eUlkU3RhdHVzLmNwcAkocmV2aXNpb24gMjI5ODA4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0dldEJ5SWRTdGF0dXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04Miw3ICs4Miw3
IEBAIEdldEJ5SWRTdGF0dXMgR2V0QnlJZFN0YXR1czo6Y29tcHV0ZUZyb20KIAogICAgIFZNJiB2
bSA9ICpwcm9maWxlZEJsb2NrLT52bSgpOwogICAgIAotICAgIEluc3RydWN0aW9uKiBpbnN0cnVj
dGlvbiA9IHByb2ZpbGVkQmxvY2stPmluc3RydWN0aW9ucygpLmJlZ2luKCkgKyBieXRlY29kZUlu
ZGV4OworICAgIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiA9ICZwcm9maWxlZEJsb2NrLT5pbnN0
cnVjdGlvbnMoKVtieXRlY29kZUluZGV4XTsKIAogICAgIE9wY29kZSBvcGNvZGUgPSBpbnN0cnVj
dGlvblswXS51Lm9wY29kZTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1B1dEJ5SWRTdGF0dXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9QdXRCeUlkU3RhdHVzLmNwcAkocmV2aXNpb24gMjI5ODA4KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC03Miw3ICs3Miw3IEBAIFB1dEJ5SWRTdGF0dXMgUHV0QnlJZFN0YXR1czo6Y29tcHV0ZUZyb20K
IAogICAgIFZNJiB2bSA9ICpwcm9maWxlZEJsb2NrLT52bSgpOwogICAgIAotICAgIEluc3RydWN0
aW9uKiBpbnN0cnVjdGlvbiA9IHByb2ZpbGVkQmxvY2stPmluc3RydWN0aW9ucygpLmJlZ2luKCkg
KyBieXRlY29kZUluZGV4OworICAgIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiA9ICZwcm9maWxl
ZEJsb2NrLT5pbnN0cnVjdGlvbnMoKVtieXRlY29kZUluZGV4XTsKIAogICAgIFN0cnVjdHVyZUlE
IHN0cnVjdHVyZUlEID0gaW5zdHJ1Y3Rpb25bNF0udS5zdHJ1Y3R1cmVJRDsKICAgICBpZiAoIXN0
cnVjdHVyZUlEKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBh
cnNlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRl
Q29kZVBhcnNlci5jcHAJKHJldmlzaW9uIDIyOTgwOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04MjksNyArODI5
LDcgQEAgcHJpdmF0ZToKICAgICAgICAgLy8gY2hhaW4gYW5kIHVzZSBpdHMgcHJlZGljdGlvbi4g
SWYgd2Ugb25seSBoYXZlCiAgICAgICAgIC8vIGlubGluZWQgdGFpbCBjYWxsIGZyYW1lcywgd2Ug
dXNlIFNwZWNGdWxsVG9wCiAgICAgICAgIC8vIHRvIGF2b2lkIGEgc3B1cmlvdXMgT1NSIGV4aXQu
Ci0gICAgICAgIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiA9IG1faW5saW5lU3RhY2tUb3AtPm1f
cHJvZmlsZWRCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKSArIGJ5dGVjb2RlSW5kZXg7Cisg
ICAgICAgIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiA9ICZtX2lubGluZVN0YWNrVG9wLT5tX3By
b2ZpbGVkQmxvY2stPmluc3RydWN0aW9ucygpW2J5dGVjb2RlSW5kZXhdOwogICAgICAgICBPcGNv
ZGVJRCBvcGNvZGVJRCA9IEludGVycHJldGVyOjpnZXRPcGNvZGVJRChpbnN0cnVjdGlvbi0+dS5v
cGNvZGUpOwogCiAgICAgICAgIHN3aXRjaCAob3Bjb2RlSUQpIHsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0LmNwcAkocmV2aXNpb24gMjI5ODA4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODA3
LDcgKzgwNyw3IEBAIHN0YXRpYyB2b2lkIHJlaWZ5SW5saW5lZENhbGxGcmFtZXMoQ29udGUKICAg
ICAgICAgaWYgKCFpbmxpbmVDYWxsRnJhbWUtPmlzQ2xvc3VyZUNhbGwpCiAgICAgICAgICAgICBm
cmFtZS5zZXRPcGVyYW5kKGlubGluZUNhbGxGcmFtZS0+c3RhY2tPZmZzZXQgKyBDYWxsRnJhbWVT
bG90OjpjYWxsZWUsIEpTVmFsdWUoaW5saW5lQ2FsbEZyYW1lLT5jYWxsZWVDb25zdGFudCgpKSk7
CiAjZWxzZSAvLyBVU0UoSlNWQUxVRTY0KSAvLyBzbyB0aGlzIGlzIHRoZSAzMi1iaXQgcGFydAot
ICAgICAgICBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24gPSBiYXNlbGluZUNvZGVCbG9jay0+aW5z
dHJ1Y3Rpb25zKCkuYmVnaW4oKSArIGNvZGVPcmlnaW4tPmJ5dGVjb2RlSW5kZXg7CisgICAgICAg
IEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiA9ICZiYXNlbGluZUNvZGVCbG9jay0+aW5zdHJ1Y3Rp
b25zKClbY29kZU9yaWdpbi0+Ynl0ZWNvZGVJbmRleF07CiAgICAgICAgIHVpbnQzMl90IGxvY2F0
aW9uQml0cyA9IENhbGxTaXRlSW5kZXgoaW5zdHJ1Y3Rpb24pLmJpdHMoKTsKICAgICAgICAgZnJh
bWUuc2V0T3BlcmFuZDx1aW50MzJfdD4oaW5saW5lQ2FsbEZyYW1lLT5zdGFja09mZnNldCArIENh
bGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnQsIFRhZ09mZnNldCwgbG9jYXRpb25CaXRzKTsKICAg
ICAgICAgZnJhbWUuc2V0T3BlcmFuZDx1aW50MzJfdD4oaW5saW5lQ2FsbEZyYW1lLT5zdGFja09m
ZnNldCArIENhbGxGcmFtZVNsb3Q6OmNhbGxlZSwgVGFnT2Zmc2V0LCBzdGF0aWNfY2FzdDx1aW50
MzJfdD4oSlNWYWx1ZTo6Q2VsbFRhZykpOwpAQCAtODIxLDcgKzgyMSw3IEBAIHN0YXRpYyB2b2lk
IHJlaWZ5SW5saW5lZENhbGxGcmFtZXMoQ29udGUKICNpZiBVU0UoSlNWQUxVRTY0KQogICAgICAg
ICB1aW50MzJfdCBsb2NhdGlvbkJpdHMgPSBDYWxsU2l0ZUluZGV4KGNvZGVPcmlnaW4tPmJ5dGVj
b2RlSW5kZXgpLmJpdHMoKTsKICNlbHNlCi0gICAgICAgIEluc3RydWN0aW9uKiBpbnN0cnVjdGlv
biA9IG91dGVybW9zdEJhc2VsaW5lQ29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpICsg
Y29kZU9yaWdpbi0+Ynl0ZWNvZGVJbmRleDsKKyAgICAgICAgSW5zdHJ1Y3Rpb24qIGluc3RydWN0
aW9uID0gJm91dGVybW9zdEJhc2VsaW5lQ29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKVtjb2RlT3Jp
Z2luLT5ieXRlY29kZUluZGV4XTsKICAgICAgICAgdWludDMyX3QgbG9jYXRpb25CaXRzID0gQ2Fs
bFNpdGVJbmRleChpbnN0cnVjdGlvbikuYml0cygpOwogI2VuZGlmCiAgICAgICAgIGZyYW1lLnNl
dE9wZXJhbmQ8dWludDMyX3Q+KENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnQsIFRhZ09mZnNl
dCwgbG9jYXRpb25CaXRzKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NS
RXhpdENvbXBpbGVyQ29tbW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR09TUkV4aXRDb21waWxlckNvbW1vbi5jcHAJKHJldmlzaW9uIDIyOTgwOCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyQ29tbW9uLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjMxLDcgKzIzMSw3IEBAIHZvaWQgcmVpZnlJbmxpbmVkQ2FsbEZy
YW1lcyhDQ2FsbEhlbHBlcnMKICAgICAgICAgICAgIGppdC5zdG9yZTY0KEFzc2VtYmx5SGVscGVy
czo6VHJ1c3RlZEltbTY0KEpTVmFsdWU6OmVuY29kZShKU1ZhbHVlKGlubGluZUNhbGxGcmFtZS0+
Y2FsbGVlQ29uc3RhbnQoKSkpKSwgQXNzZW1ibHlIZWxwZXJzOjphZGRyZXNzRm9yKChWaXJ0dWFs
UmVnaXN0ZXIpKGlubGluZUNhbGxGcmFtZS0+c3RhY2tPZmZzZXQgKyBDYWxsRnJhbWVTbG90Ojpj
YWxsZWUpKSk7CiAjZWxzZSAvLyBVU0UoSlNWQUxVRTY0KSAvLyBzbyB0aGlzIGlzIHRoZSAzMi1i
aXQgcGFydAogICAgICAgICBqaXQuc3RvcmVQdHIoY2FsbGVyRnJhbWVHUFIsIEFzc2VtYmx5SGVs
cGVyczo6YWRkcmVzc0ZvckJ5dGVPZmZzZXQoaW5saW5lQ2FsbEZyYW1lLT5jYWxsZXJGcmFtZU9m
ZnNldCgpKSk7Ci0gICAgICAgIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiA9IGJhc2VsaW5lQ29k
ZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpICsgY29kZU9yaWdpbi0+Ynl0ZWNvZGVJbmRl
eDsKKyAgICAgICAgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uID0gJmJhc2VsaW5lQ29kZUJsb2Nr
LT5pbnN0cnVjdGlvbnMoKVtjb2RlT3JpZ2luLT5ieXRlY29kZUluZGV4XTsKICAgICAgICAgdWlu
dDMyX3QgbG9jYXRpb25CaXRzID0gQ2FsbFNpdGVJbmRleChpbnN0cnVjdGlvbikuYml0cygpOwog
ICAgICAgICBqaXQuc3RvcmUzMihBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW0zMihsb2NhdGlv
bkJpdHMpLCBBc3NlbWJseUhlbHBlcnM6OnRhZ0ZvcigoVmlydHVhbFJlZ2lzdGVyKShpbmxpbmVD
YWxsRnJhbWUtPnN0YWNrT2Zmc2V0ICsgQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudCkpKTsK
ICAgICAgICAgaml0LnN0b3JlMzIoQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tMzIoSlNWYWx1
ZTo6Q2VsbFRhZyksIEFzc2VtYmx5SGVscGVyczo6dGFnRm9yKChWaXJ0dWFsUmVnaXN0ZXIpKGlu
bGluZUNhbGxGcmFtZS0+c3RhY2tPZmZzZXQgKyBDYWxsRnJhbWVTbG90OjpjYWxsZWUpKSk7CkBA
IC0yNDUsNyArMjQ1LDcgQEAgdm9pZCByZWlmeUlubGluZWRDYWxsRnJhbWVzKENDYWxsSGVscGVy
cwogI2lmIFVTRShKU1ZBTFVFNjQpCiAgICAgICAgIHVpbnQzMl90IGxvY2F0aW9uQml0cyA9IENh
bGxTaXRlSW5kZXgoY29kZU9yaWdpbi0+Ynl0ZWNvZGVJbmRleCkuYml0cygpOwogI2Vsc2UKLSAg
ICAgICAgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uID0gaml0LmJhc2VsaW5lQ29kZUJsb2NrKCkt
Pmluc3RydWN0aW9ucygpLmJlZ2luKCkgKyBjb2RlT3JpZ2luLT5ieXRlY29kZUluZGV4OworICAg
ICAgICBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24gPSAmaml0LmJhc2VsaW5lQ29kZUJsb2NrKCkt
Pmluc3RydWN0aW9ucygpW2NvZGVPcmlnaW4tPmJ5dGVjb2RlSW5kZXhdOwogICAgICAgICB1aW50
MzJfdCBsb2NhdGlvbkJpdHMgPSBDYWxsU2l0ZUluZGV4KGluc3RydWN0aW9uKS5iaXRzKCk7CiAj
ZW5kaWYKICAgICAgICAgaml0LnN0b3JlMzIoQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tMzIo
bG9jYXRpb25CaXRzKSwgQXNzZW1ibHlIZWxwZXJzOjp0YWdGb3IoKFZpcnR1YWxSZWdpc3Rlciko
Q2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudCkpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnRlcnByZXRlci9DYWxsRnJhbWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnRlcnByZXRlci9DYWxsRnJhbWUuY3BwCShyZXZpc2lvbiAyMjk4MDgpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTIxLDE5ICsxMjEsMTkgQEAgdW5zaWduZWQgQ2FsbEZyYW1lOjpjYWxsU2l0
ZUJpdHNBc0J5dGVjbwogewogICAgIEFTU0VSVChjb2RlQmxvY2soKSk7CiAgICAgQVNTRVJUKGNh
bGxTaXRlQml0c0FyZUJ5dGVjb2RlT2Zmc2V0KCkpOwotICAgIHJldHVybiBjdXJyZW50VlBDKCkg
LSBjb2RlQmxvY2soKS0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKTsgICAgIAorICAgIHJldHVybiBj
b2RlQmxvY2soKS0+Ynl0ZWNvZGVPZmZzZXQoY3VycmVudFZQQygpKTsgICAgIAogfQogCiAjZWxz
ZSAvLyBVU0UoSlNWQUxVRTMyXzY0KQogSW5zdHJ1Y3Rpb24qIENhbGxGcmFtZTo6Y3VycmVudFZQ
QygpIGNvbnN0CiB7CiAgICAgQVNTRVJUKGNhbGxTaXRlQml0c0FyZUJ5dGVjb2RlT2Zmc2V0KCkp
OwotICAgIHJldHVybiBjb2RlQmxvY2soKS0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKSArIGNhbGxT
aXRlQml0c0FzQnl0ZWNvZGVPZmZzZXQoKTsKKyAgICByZXR1cm4gJmNvZGVCbG9jaygpLT5pbnN0
cnVjdGlvbnMoKVtjYWxsU2l0ZUJpdHNBc0J5dGVjb2RlT2Zmc2V0KCldOwogfQogCiB2b2lkIENh
bGxGcmFtZTo6c2V0Q3VycmVudFZQQyhJbnN0cnVjdGlvbiogdnBjKQogewotICAgIENhbGxTaXRl
SW5kZXggY2FsbFNpdGUodnBjIC0gY29kZUJsb2NrKCktPmluc3RydWN0aW9ucygpLmJlZ2luKCkp
OworICAgIENhbGxTaXRlSW5kZXggY2FsbFNpdGUoY29kZUJsb2NrKCktPmJ5dGVjb2RlT2Zmc2V0
KHZwYykpOwogICAgIHRoaXNbQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudF0udGFnKCkgPSBz
dGF0aWNfY2FzdDxpbnQzMl90PihjYWxsU2l0ZS5iaXRzKCkpOwogfQogCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUQ2FsbC5jcHAJKHJldmlzaW9uIDIyOTgwOCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3NSw3ICsx
NzUsNyBAQCB2b2lkIEpJVDo6Y29tcGlsZU9wQ2FsbChPcGNvZGVJRCBvcGNvZGVJCiAgICAgICAg
IHN0b3JlMzIoVHJ1c3RlZEltbTMyKGFyZ0NvdW50KSwgQWRkcmVzcyhzdGFja1BvaW50ZXJSZWdp
c3RlciwgQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudCAqIHN0YXRpY19jYXN0PGludD4oc2l6
ZW9mKFJlZ2lzdGVyKSkgKyBQYXlsb2FkT2Zmc2V0IC0gc2l6ZW9mKENhbGxlckZyYW1lQW5kUEMp
KSk7CiAgICAgfSAvLyBTUCBob2xkcyBuZXdDYWxsRnJhbWUgKyBzaXplb2YoQ2FsbGVyRnJhbWVB
bmRQQyksIHdpdGggQXJndW1lbnRDb3VudCBpbml0aWFsaXplZC4KICAgICAKLSAgICB1aW50MzJf
dCBieXRlY29kZU9mZnNldCA9IGluc3RydWN0aW9uIC0gbV9jb2RlQmxvY2stPmluc3RydWN0aW9u
cygpLmJlZ2luKCk7CisgICAgdWludDMyX3QgYnl0ZWNvZGVPZmZzZXQgPSBtX2NvZGVCbG9jay0+
Ynl0ZWNvZGVPZmZzZXQoaW5zdHJ1Y3Rpb24pOwogICAgIHVpbnQzMl90IGxvY2F0aW9uQml0cyA9
IENhbGxTaXRlSW5kZXgoYnl0ZWNvZGVPZmZzZXQpLmJpdHMoKTsKICAgICBzdG9yZTMyKFRydXN0
ZWRJbW0zMihsb2NhdGlvbkJpdHMpLCBBZGRyZXNzKGNhbGxGcmFtZVJlZ2lzdGVyLCBDYWxsRnJh
bWVTbG90Ojphcmd1bWVudENvdW50ICogc3RhdGljX2Nhc3Q8aW50PihzaXplb2YoUmVnaXN0ZXIp
KSArIFRhZ09mZnNldCkpOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElu
bGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGlu
ZXMuaAkocmV2aXNpb24gMjI5ODA4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJ
bmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTEzOCw3ICsxMzgsNyBAQCBBTFdBWVNfSU5MSU5F
IHZvaWQgSklUOjp1cGRhdGVUb3BDYWxsRnJhCiB7CiAgICAgQVNTRVJUKHN0YXRpY19jYXN0PGlu
dD4obV9ieXRlY29kZU9mZnNldCkgPj0gMCk7CiAjaWYgVVNFKEpTVkFMVUUzMl82NCkKLSAgICBJ
bnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24gPSBtX2NvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuYmVn
aW4oKSArIG1fYnl0ZWNvZGVPZmZzZXQ7IAorICAgIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiA9
ICZtX2NvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKClbbV9ieXRlY29kZU9mZnNldF07IAogICAgIHVp
bnQzMl90IGxvY2F0aW9uQml0cyA9IENhbGxTaXRlSW5kZXgoaW5zdHJ1Y3Rpb24pLmJpdHMoKTsK
ICNlbHNlCiAgICAgdWludDMyX3QgbG9jYXRpb25CaXRzID0gQ2FsbFNpdGVJbmRleChtX2J5dGVj
b2RlT2Zmc2V0KS5iaXRzKCk7CkBAIC03NDAsOCArNzQwLDcgQEAgQUxXQVlTX0lOTElORSB2b2lk
IEpJVDo6ZW1pdFRhZ0Jvb2woUmVnaQogCiBpbmxpbmUgSW5zdHJ1Y3Rpb24qIEpJVDo6Y29waWVk
SW5zdHJ1Y3Rpb24oSW5zdHJ1Y3Rpb24qIGluc3QpCiB7Ci0gICAgQVNTRVJUKGluc3QgPj0gbV9j
b2RlQmxvY2stPmluc3RydWN0aW9ucygpLmJlZ2luKCkgJiYgaW5zdCA8IG1fY29kZUJsb2NrLT5p
bnN0cnVjdGlvbnMoKS5lbmQoKSk7Ci0gICAgcmV0dXJuIG1faW5zdHJ1Y3Rpb25zLmJlZ2luKCkg
KyAoaW5zdCAtIG1fY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpKTsKKyAgICByZXR1
cm4gbV9pbnN0cnVjdGlvbnNbbV9jb2RlQmxvY2stPmJ5dGVjb2RlT2Zmc2V0KGluc3QpXTsKIH0K
IAogI2VuZGlmIC8vIFVTRShKU1ZBTFVFMzJfNjQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCShyZXZpc2lvbiAyMjk4MDgpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTkxNCw3ICs5MTQsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9oYXNfc3RydWN0dXJlX3Byb3Bl
cnR5CiAKIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZUhhc0luZGV4ZWRQcm9wZXJ0eShCeVZhbElu
Zm8qIGJ5VmFsSW5mbywgUmV0dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRyZXNzLCBKSVRBcnJheU1v
ZGUgYXJyYXlNb2RlKQogewotICAgIEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24gPSBt
X2NvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKSArIGJ5VmFsSW5mby0+Ynl0ZWNvZGVJ
bmRleDsKKyAgICBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uID0gJm1fY29kZUJsb2Nr
LT5pbnN0cnVjdGlvbnMoKVtieVZhbEluZm8tPmJ5dGVjb2RlSW5kZXhdOwogICAgIAogICAgIFBh
dGNoYWJsZUp1bXAgYmFkVHlwZTsKICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUT3Bjb2Rlcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRPcGNvZGVzLmNwcAkocmV2aXNpb24gMjI5ODA4KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRPcGNvZGVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA2Myw3ICsxMDYzLDcg
QEAgdm9pZCBKSVQ6OmVtaXRfb3BfaGFzX3N0cnVjdHVyZV9wcm9wZXJ0eQogCiB2b2lkIEpJVDo6
cHJpdmF0ZUNvbXBpbGVIYXNJbmRleGVkUHJvcGVydHkoQnlWYWxJbmZvKiBieVZhbEluZm8sIFJl
dHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcywgSklUQXJyYXlNb2RlIGFycmF5TW9kZSkKIHsK
LSAgICBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uID0gbV9jb2RlQmxvY2stPmluc3Ry
dWN0aW9ucygpLmJlZ2luKCkgKyBieVZhbEluZm8tPmJ5dGVjb2RlSW5kZXg7CisgICAgSW5zdHJ1
Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiA9ICZtX2NvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKClb
YnlWYWxJbmZvLT5ieXRlY29kZUluZGV4XTsKICAgICAKICAgICBQYXRjaGFibGVKdW1wIGJhZFR5
cGU7CiAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNj
ZXNzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3Bl
cnR5QWNjZXNzLmNwcAkocmV2aXNpb24gMjI5ODA4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyMjIsNyArMTIy
Miw3IEBAIHZvaWQgSklUOjplbWl0QnlWYWxJZGVudGlmaWVyQ2hlY2soQnlWYWwKIAogdm9pZCBK
SVQ6OnByaXZhdGVDb21waWxlR2V0QnlWYWwoQnlWYWxJbmZvKiBieVZhbEluZm8sIFJldHVybkFk
ZHJlc3NQdHIgcmV0dXJuQWRkcmVzcywgSklUQXJyYXlNb2RlIGFycmF5TW9kZSkKIHsKLSAgICBJ
bnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uID0gbV9jb2RlQmxvY2stPmluc3RydWN0aW9u
cygpLmJlZ2luKCkgKyBieVZhbEluZm8tPmJ5dGVjb2RlSW5kZXg7CisgICAgSW5zdHJ1Y3Rpb24q
IGN1cnJlbnRJbnN0cnVjdGlvbiA9ICZtX2NvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKClbYnlWYWxJ
bmZvLT5ieXRlY29kZUluZGV4XTsKICAgICAKICAgICBQYXRjaGFibGVKdW1wIGJhZFR5cGU7CiAg
ICAgSnVtcExpc3Qgc2xvd0Nhc2VzOwpAQCAtMTI3NCw3ICsxMjc0LDcgQEAgdm9pZCBKSVQ6OnBy
aXZhdGVDb21waWxlR2V0QnlWYWwoQnlWYWxJbgogCiB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVH
ZXRCeVZhbFdpdGhDYWNoZWRJZChCeVZhbEluZm8qIGJ5VmFsSW5mbywgUmV0dXJuQWRkcmVzc1B0
ciByZXR1cm5BZGRyZXNzLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpCiB7Ci0gICAg
SW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiA9IG1fY29kZUJsb2NrLT5pbnN0cnVjdGlv
bnMoKS5iZWdpbigpICsgYnlWYWxJbmZvLT5ieXRlY29kZUluZGV4OworICAgIEluc3RydWN0aW9u
KiBjdXJyZW50SW5zdHJ1Y3Rpb24gPSAmbV9jb2RlQmxvY2stPmluc3RydWN0aW9ucygpW2J5VmFs
SW5mby0+Ynl0ZWNvZGVJbmRleF07CiAKICAgICBKdW1wIGZhc3REb25lQ2FzZTsKICAgICBKdW1w
IHNsb3dEb25lQ2FzZTsKQEAgLTEzMDcsNyArMTMwNyw3IEBAIHZvaWQgSklUOjpwcml2YXRlQ29t
cGlsZUdldEJ5VmFsV2l0aENhY2gKIAogdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlUHV0QnlWYWwo
QnlWYWxJbmZvKiBieVZhbEluZm8sIFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcywgSklU
QXJyYXlNb2RlIGFycmF5TW9kZSkKIHsKLSAgICBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0
aW9uID0gbV9jb2RlQmxvY2stPmluc3RydWN0aW9ucygpLmJlZ2luKCkgKyBieVZhbEluZm8tPmJ5
dGVjb2RlSW5kZXg7CisgICAgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiA9ICZtX2Nv
ZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKClbYnlWYWxJbmZvLT5ieXRlY29kZUluZGV4XTsKICAgICAK
ICAgICBQYXRjaGFibGVKdW1wIGJhZFR5cGU7CiAgICAgSnVtcExpc3Qgc2xvd0Nhc2VzOwpAQCAt
MTM2Niw3ICsxMzY2LDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlUHV0QnlWYWwoQnlWYWxJ
bgogCiB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVQdXRCeVZhbFdpdGhDYWNoZWRJZChCeVZhbElu
Zm8qIGJ5VmFsSW5mbywgUmV0dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRyZXNzLCBQdXRLaW5kIHB1
dEtpbmQsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSkKIHsKLSAgICBJbnN0cnVjdGlv
biogY3VycmVudEluc3RydWN0aW9uID0gbV9jb2RlQmxvY2stPmluc3RydWN0aW9ucygpLmJlZ2lu
KCkgKyBieVZhbEluZm8tPmJ5dGVjb2RlSW5kZXg7CisgICAgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJ
bnN0cnVjdGlvbiA9ICZtX2NvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKClbYnlWYWxJbmZvLT5ieXRl
Y29kZUluZGV4XTsKIAogICAgIEp1bXBMaXN0IGRvbmVDYXNlczsKICAgICBKdW1wTGlzdCBzbG93
Q2FzZXM7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1Nsb3dQYXRoQ2FsbC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvU2xvd1BhdGhDYWxsLmgJKHJl
dmlzaW9uIDIyOTgwOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvU2xvd1BhdGhDYWxs
LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDcgKzQ2LDcgQEAgcHVibGljOgogICAgIHsKICNpZiBF
TkFCTEUoT1BDT0RFX1NBTVBMSU5HKQogICAgICAgICBpZiAobV9qaXQtPm1fYnl0ZWNvZGVPZmZz
ZXQgIT0gc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpKQotICAgICAgICAgICAg
bV9qaXQtPnNhbXBsZUluc3RydWN0aW9uKG1faml0LT5tX2NvZGVCbG9jay0+aW5zdHJ1Y3Rpb25z
KCkuYmVnaW4oKSArIG1faml0LT5tX2J5dGVjb2RlT2Zmc2V0LCB0cnVlKTsKKyAgICAgICAgICAg
IG1faml0LT5zYW1wbGVJbnN0cnVjdGlvbigmbV9qaXQtPm1fY29kZUJsb2NrLT5pbnN0cnVjdGlv
bnMoKVttX2ppdC0+bV9ieXRlY29kZU9mZnNldF0sIHRydWUpOwogI2VuZGlmCiAgICAgICAgIG1f
aml0LT51cGRhdGVUb3BDYWxsRnJhbWUoKTsKICNpZiBDUFUoWDg2KSAmJiBVU0UoSlNWQUxVRTMy
XzY0KQpAQCAtNzUsNyArNzUsNyBAQCBwdWJsaWM6CiAKICNpZiBFTkFCTEUoT1BDT0RFX1NBTVBM
SU5HKQogICAgICAgICBpZiAobV9qaXQtPm1fYnl0ZWNvZGVPZmZzZXQgIT0gc3RkOjpudW1lcmlj
X2xpbWl0czx1bnNpZ25lZD46Om1heCgpKQotICAgICAgICAgICAgbV9qaXQtPnNhbXBsZUluc3Ry
dWN0aW9uKG1faml0LT5tX2NvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKSArIG1faml0
LT5tX2J5dGVjb2RlT2Zmc2V0LCBmYWxzZSk7CisgICAgICAgICAgICBtX2ppdC0+c2FtcGxlSW5z
dHJ1Y3Rpb24oJm1faml0LT5tX2NvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKClbbV9qaXQtPm1fYnl0
ZWNvZGVPZmZzZXRdLCBmYWxzZSk7CiAjZW5kaWYKICAgICAgICAgCiAgICAgICAgIG1faml0LT5l
eGNlcHRpb25DaGVjaygpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50
U2xvd1BhdGhzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TExJbnRTbG93UGF0aHMuY3BwCShyZXZpc2lvbiAyMjk4MDgpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xOTYsNyAr
MTk2LDcgQEAgZXh0ZXJuICJDIiBTbG93UGF0aFJldHVyblR5cGUgbGxpbnRfdHJhYwogICAgICAg
ICAgICAgJlRocmVhZDo6Y3VycmVudCgpLAogICAgICAgICAgICAgZXhlYy0+Y29kZUJsb2NrKCks
CiAgICAgICAgICAgICBleGVjLAotICAgICAgICAgICAgc3RhdGljX2Nhc3Q8aW50cHRyX3Q+KHBj
IC0gZXhlYy0+Y29kZUJsb2NrKCktPmluc3RydWN0aW9ucygpLmJlZ2luKCkpLAorICAgICAgICAg
ICAgc3RhdGljX2Nhc3Q8aW50cHRyX3Q+KGV4ZWMtPmNvZGVCbG9jaygpLT5ieXRlY29kZU9mZnNl
dChwYykpLAogICAgICAgICAgICAgSW50ZXJwcmV0ZXI6OmdldE9wY29kZUlEKHBjWzBdLnUub3Bj
b2RlKSwKICAgICAgICAgICAgIGZyb21XaGVyZSwKICAgICAgICAgICAgIG9wZXJhbmQsCkBAIC0y
MjAsNyArMjIwLDcgQEAgZXh0ZXJuICJDIiBTbG93UGF0aFJldHVyblR5cGUgbGxpbnRfdHJhYwog
ICAgICAgICAmVGhyZWFkOjpjdXJyZW50KCksCiAgICAgICAgIGV4ZWMtPmNvZGVCbG9jaygpLAog
ICAgICAgICBleGVjLAotICAgICAgICBzdGF0aWNfY2FzdDxpbnRwdHJfdD4ocGMgLSBleGVjLT5j
b2RlQmxvY2soKS0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKSksCisgICAgICAgIHN0YXRpY19jYXN0
PGludHB0cl90PihleGVjLT5jb2RlQmxvY2soKS0+Ynl0ZWNvZGVPZmZzZXQocGMpKSwKICAgICAg
ICAgSW50ZXJwcmV0ZXI6OmdldE9wY29kZUlEKHBjWzBdLnUub3Bjb2RlKSwKICAgICAgICAgZnJv
bVdoZXJlLAogICAgICAgICBvcGVyYW5kLApAQCAtMjgwLDcgKzI4MCw3IEBAIExMSU5UX1NMT1df
UEFUSF9ERUNMKHRyYWNlKQogICAgICAgICAgICAgJlRocmVhZDo6Y3VycmVudCgpLAogICAgICAg
ICAgICAgZXhlYy0+Y29kZUJsb2NrKCksCiAgICAgICAgICAgICBleGVjLAotICAgICAgICAgICAg
c3RhdGljX2Nhc3Q8aW50cHRyX3Q+KHBjIC0gZXhlYy0+Y29kZUJsb2NrKCktPmluc3RydWN0aW9u
cygpLmJlZ2luKCkpLAorICAgICAgICAgICAgc3RhdGljX2Nhc3Q8aW50cHRyX3Q+KGV4ZWMtPmNv
ZGVCbG9jaygpLT5ieXRlY29kZU9mZnNldChwYykpLAogICAgICAgICAgICAgb3Bjb2RlTmFtZXNb
b3Bjb2RlSURdLCBwYyk7CiAgICAgaWYgKG9wY29kZUlEID09IG9wX2VudGVyKSB7CiAgICAgICAg
IGRhdGFMb2dGKCJGcmFtZSB3aWxsIGV2ZW50dWFsbHkgcmV0dXJuIHRvICVwXG4iLCBleGVjLT5y
ZXR1cm5QQygpLnZhbHVlKCkpOwpAQCAtMjk5LDcgKzI5OSw3IEBAIExMSU5UX1NMT1dfUEFUSF9E
RUNMKHNwZWNpYWxfdHJhY2UpCiAgICAgICAgICAgICAmVGhyZWFkOjpjdXJyZW50KCksCiAgICAg
ICAgICAgICBleGVjLT5jb2RlQmxvY2soKSwKICAgICAgICAgICAgIGV4ZWMsCi0gICAgICAgICAg
ICBzdGF0aWNfY2FzdDxpbnRwdHJfdD4ocGMgLSBleGVjLT5jb2RlQmxvY2soKS0+aW5zdHJ1Y3Rp
b25zKCkuYmVnaW4oKSksCisgICAgICAgICAgICBzdGF0aWNfY2FzdDxpbnRwdHJfdD4oZXhlYy0+
Y29kZUJsb2NrKCktPmJ5dGVjb2RlT2Zmc2V0KHBjKSksCiAgICAgICAgICAgICBJbnRlcnByZXRl
cjo6Z2V0T3Bjb2RlSUQocGNbMF0udS5vcGNvZGUpLAogICAgICAgICAgICAgZXhlYy0+cmV0dXJu
UEMoKS52YWx1ZSgpKTsKICAgICBMTElOVF9FTkRfSU1QTCgpOwpAQCAtNDI5LDcgKzQyOSw3IEBA
IExMSU5UX1NMT1dfUEFUSF9ERUNMKGxvb3Bfb3NyKQogICAgICAgICAgICAgY29kZUJsb2NrLT5s
bGludEV4ZWN1dGVDb3VudGVyKCksICJcbiIpOwogICAgIH0KICAgICAKLSAgICB1bnNpZ25lZCBs
b29wT1NSRW50cnlCeXRlY29kZU9mZnNldCA9IHBjIC0gY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMo
KS5iZWdpbigpOworICAgIHVuc2lnbmVkIGxvb3BPU1JFbnRyeUJ5dGVjb2RlT2Zmc2V0ID0gY29k
ZUJsb2NrLT5ieXRlY29kZU9mZnNldChwYyk7CiAKICAgICBpZiAoIXNob3VsZEpJVChjb2RlQmxv
Y2spKSB7CiAgICAgICAgIGNvZGVCbG9jay0+ZG9udEpJVEFueXRpbWVTb29uKCk7CkBAIC00Mzks
MTUgKzQzOSwxNSBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChsb29wX29zcikKICAgICBpZiAoIWpp
dENvbXBpbGVBbmRTZXRIZXVyaXN0aWNzKGNvZGVCbG9jaywgZXhlYywgbG9vcE9TUkVudHJ5Qnl0
ZWNvZGVPZmZzZXQpKQogICAgICAgICBMTElOVF9SRVRVUk5fVFdPKDAsIDApOwogICAgIAotICAg
IENPREVCTE9DS19MT0dfRVZFTlQoY29kZUJsb2NrLCAib3NyRW50cnkiLCAoImF0IGJjIyIsIHBj
IC0gY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpKSk7CisgICAgQ09ERUJMT0NLX0xP
R19FVkVOVChjb2RlQmxvY2ssICJvc3JFbnRyeSIsICgiYXQgYmMjIiwgbG9vcE9TUkVudHJ5Qnl0
ZWNvZGVPZmZzZXQpKTsKIAogICAgIEFTU0VSVChjb2RlQmxvY2stPmppdFR5cGUoKSA9PSBKSVRD
b2RlOjpCYXNlbGluZUpJVCk7CiAgICAgCiAgICAgVmVjdG9yPEJ5dGVjb2RlQW5kTWFjaGluZU9m
ZnNldD4gbWFwOwogICAgIGNvZGVCbG9jay0+aml0Q29kZU1hcCgpLT5kZWNvZGUobWFwKTsKLSAg
ICBCeXRlY29kZUFuZE1hY2hpbmVPZmZzZXQqIG1hcHBpbmcgPSBiaW5hcnlTZWFyY2g8Qnl0ZWNv
ZGVBbmRNYWNoaW5lT2Zmc2V0LCB1bnNpZ25lZD4obWFwLCBtYXAuc2l6ZSgpLCBwYyAtIGNvZGVC
bG9jay0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKSwgQnl0ZWNvZGVBbmRNYWNoaW5lT2Zmc2V0Ojpn
ZXRCeXRlY29kZUluZGV4KTsKKyAgICBCeXRlY29kZUFuZE1hY2hpbmVPZmZzZXQqIG1hcHBpbmcg
PSBiaW5hcnlTZWFyY2g8Qnl0ZWNvZGVBbmRNYWNoaW5lT2Zmc2V0LCB1bnNpZ25lZD4obWFwLCBt
YXAuc2l6ZSgpLCBsb29wT1NSRW50cnlCeXRlY29kZU9mZnNldCwgQnl0ZWNvZGVBbmRNYWNoaW5l
T2Zmc2V0OjpnZXRCeXRlY29kZUluZGV4KTsKICAgICBBU1NFUlQobWFwcGluZyk7Ci0gICAgQVNT
RVJUKG1hcHBpbmctPm1fYnl0ZWNvZGVJbmRleCA9PSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4ocGMg
LSBjb2RlQmxvY2stPmluc3RydWN0aW9ucygpLmJlZ2luKCkpKTsKKyAgICBBU1NFUlQobWFwcGlu
Zy0+bV9ieXRlY29kZUluZGV4ID09IGxvb3BPU1JFbnRyeUJ5dGVjb2RlT2Zmc2V0KTsKICAgICAK
ICAgICB2b2lkKiBqdW1wVGFyZ2V0ID0gY29kZUJsb2NrLT5qaXRDb2RlKCktPmV4ZWN1dGFibGVB
ZGRyZXNzQXRPZmZzZXQobWFwcGluZy0+bV9tYWNoaW5lQ29kZU9mZnNldCk7CiAgICAgQVNTRVJU
KGp1bXBUYXJnZXQpOwpAQCAtNzE0LDcgKzcxNCw3IEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNs
b3dfcGF0aF9nZXRfYnlfaWQKICAgICAgICAgJiYgaXNKU0FycmF5KGJhc2VWYWx1ZSkKICAgICAg
ICAgJiYgaWRlbnQgPT0gdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoKSB7CiAgICAgICAgIHBjWzBd
LnUub3Bjb2RlID0gTExJbnQ6OmdldE9wY29kZShvcF9nZXRfYXJyYXlfbGVuZ3RoKTsKLSAgICAg
ICAgQXJyYXlQcm9maWxlKiBhcnJheVByb2ZpbGUgPSBjb2RlQmxvY2stPmdldE9yQWRkQXJyYXlQ
cm9maWxlKHBjIC0gY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpKTsKKyAgICAgICAg
QXJyYXlQcm9maWxlKiBhcnJheVByb2ZpbGUgPSBjb2RlQmxvY2stPmdldE9yQWRkQXJyYXlQcm9m
aWxlKGNvZGVCbG9jay0+Ynl0ZWNvZGVPZmZzZXQocGMpKTsKICAgICAgICAgYXJyYXlQcm9maWxl
LT5vYnNlcnZlU3RydWN0dXJlKGJhc2VWYWx1ZS5hc0NlbGwoKS0+c3RydWN0dXJlKCkpOwogICAg
ICAgICBwY1s0XS51LmFycmF5UHJvZmlsZSA9IGFycmF5UHJvZmlsZTsKIApJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2FtcGxpbmdQcm9maWxlci5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2FtcGxpbmdQcm9maWxlci5jcHAJKHJl
dmlzaW9uIDIyOTgwOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NhbXBsaW5n
UHJvZmlsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MzUsMTAgKzQzNSw5IEBAIHN0YXRpYyBB
TFdBWVNfSU5MSU5FIHVuc2lnbmVkIHRyeUdldEJ5dGUKICAgICByZXR1cm4gMDsKICNlbHNlCiAg
ICAgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uID0gYml0d2lzZV9jYXN0PEluc3RydWN0aW9uKj4o
bGxpbnRQQyk7Ci0gICAgaWYgKGluc3RydWN0aW9uID49IGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25z
KCkuYmVnaW4oKSAmJiBpbnN0cnVjdGlvbiA8IGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuYmVn
aW4oKSArIGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25Db3VudCgpKSB7CisgICAgaWYgKGluc3RydWN0
aW9uID49IGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKSAmJiBpbnN0cnVjdGlvbiA8
IGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuZW5kKCkpIHsKICAgICAgICAgaXNWYWxpZCA9IHRy
dWU7Ci0gICAgICAgIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXggPSBpbnN0cnVjdGlvbiAtIGNvZGVC
bG9jay0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKTsKLSAgICAgICAgcmV0dXJuIGJ5dGVjb2RlSW5k
ZXg7CisgICAgICAgIHJldHVybiBjb2RlQmxvY2stPmJ5dGVjb2RlT2Zmc2V0KGluc3RydWN0aW9u
KTsKICAgICB9CiAgICAgaXNWYWxpZCA9IGZhbHNlOwogICAgIHJldHVybiAwOwo=
</data>
<flag name="review"
          id="354739"
          type_id="1"
          status="-"
          setter="mark.lam"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>336208</attachid>
            <date>2018-03-21 10:23:04 -0700</date>
            <delta_ts>2018-03-21 10:33:44 -0700</delta_ts>
            <desc>proposed patch.</desc>
            <filename>bug-183857.patch</filename>
            <type>text/plain</type>
            <size>24729</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjI5ODA4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDc0IEBA
CisyMDE4LTAzLTIxICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBV
c2UgQ29kZUJsb2NrOjppbnN0cnVjdGlvbnMoKVtdIGFuZCBDb2RlQmxvY2s6OmJ5dGVjb2RlT2Zm
c2V0KCkgaW5zdGVhZCBvZiBkb2luZyBvd24gcG9pbnRlciBtYXRoLgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgzODU3CisgICAgICAgIDxyZGFyOi8v
cHJvYmxlbS8zODcxMjE4ND4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBXZSBzaG91bGQgYXZvaWQgZG9pbmcgcG9pbnRlciBtYXRoIHdpdGggQ29kZUJs
b2NrOjppbnN0cnVjdGlvbnMoKS5iZWdpbigpLgorICAgICAgICBJbnN0ZWFkLCB3ZSBzaG91bGQg
dXNlIHRoZSBvcGVyYXRvcltdIHRoYXQgY29tZXMgd2l0aCBDb2RlQmxvY2s6Omluc3RydWN0aW9u
cygpCisgICAgICAgIGZvciBjb21wdXRpbmcgYW4gSW5zdHJ1Y3Rpb24qLCBhbmQgdXNlIENvZGVC
bG9jazo6Ynl0ZWNvZGVPZmZzZXQoKSBmb3IgY29tcHV0aW5nCisgICAgICAgIHRoZSBieXRlY29k
ZSBvZmZzZXQgb2YgYSBnaXZlbiBJbnN0cnVjdGlvbiouICBUaGVzZSBtZXRob2RzIHdpbGwgZG8g
YXNzZXJ0aW9ucworICAgICAgICB3aGljaCBoZWxwcyBjYXRjaCBidWdzIHNvb25lciwgcGx1cyB0
aGV5IGFyZSBtb3JlIGRlc2NyaXB0aXZlIG9mIHRoZSBvcGVyYXRpb24KKyAgICAgICAgd2UncmUg
dHJ5aW5nIHRvIGRvLgorCisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVLaWxscy5oOgorICAg
ICAgICAoSlNDOjpCeXRlY29kZUtpbGxzOjpvcGVyYW5kSXNLaWxsZWQgY29uc3QpOgorICAgICAg
ICAoSlNDOjpCeXRlY29kZUtpbGxzOjpmb3JFYWNoT3BlcmFuZEtpbGxlZEF0IGNvbnN0KToKKyAg
ICAgICAgKiBieXRlY29kZS9DYWxsTGlua1N0YXR1cy5jcHA6CisgICAgICAgIChKU0M6OkNhbGxM
aW5rU3RhdHVzOjpjb21wdXRlRnJvbUxMSW50KToKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxv
Y2suY3BwOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmR1bXBCeXRlY29kZSk6CisgICAgICAg
IChKU0M6OkNvZGVCbG9jazo6YXJpdGhQcm9maWxlRm9yQnl0ZWNvZGVPZmZzZXQpOgorICAgICAg
ICAoSlNDOjpDb2RlQmxvY2s6OmJ5dGVjb2RlT2Zmc2V0RnJvbUNhbGxTaXRlSW5kZXgpOgorICAg
ICAgICAqIGJ5dGVjb2RlL0dldEJ5SWRTdGF0dXMuY3BwOgorICAgICAgICAoSlNDOjpHZXRCeUlk
U3RhdHVzOjpjb21wdXRlRnJvbUxMSW50KToKKyAgICAgICAgKiBieXRlY29kZS9QdXRCeUlkU3Rh
dHVzLmNwcDoKKyAgICAgICAgKEpTQzo6UHV0QnlJZFN0YXR1czo6Y29tcHV0ZUZyb21MTEludCk6
CisgICAgICAgICogZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6REZH
OjpCeXRlQ29kZVBhcnNlcjo6Z2V0UHJlZGljdGlvbldpdGhvdXRPU1JFeGl0KToKKyAgICAgICAg
KiBkZmcvREZHT1NSRXhpdC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6cmVpZnlJbmxpbmVkQ2Fs
bEZyYW1lcyk6CisgICAgICAgICogZGZnL0RGR09TUkV4aXRDb21waWxlckNvbW1vbi5jcHA6Cisg
ICAgICAgIChKU0M6OkRGRzo6cmVpZnlJbmxpbmVkQ2FsbEZyYW1lcyk6CisgICAgICAgICogaW50
ZXJwcmV0ZXIvQ2FsbEZyYW1lLmNwcDoKKyAgICAgICAgKEpTQzo6Q2FsbEZyYW1lOjpjYWxsU2l0
ZUJpdHNBc0J5dGVjb2RlT2Zmc2V0IGNvbnN0KToKKyAgICAgICAgKEpTQzo6Q2FsbEZyYW1lOjpj
dXJyZW50VlBDIGNvbnN0KToKKyAgICAgICAgKEpTQzo6Q2FsbEZyYW1lOjpzZXRDdXJyZW50VlBD
KToKKyAgICAgICAgKiBqaXQvSklUQ2FsbC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6Y29tcGls
ZU9wQ2FsbCk6CisgICAgICAgICogaml0L0pJVElubGluZXMuaDoKKyAgICAgICAgKEpTQzo6SklU
Ojp1cGRhdGVUb3BDYWxsRnJhbWUpOgorICAgICAgICAoSlNDOjpKSVQ6OmNvcGllZEluc3RydWN0
aW9uKToKKyAgICAgICAgKiBqaXQvSklUT3Bjb2Rlcy5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6
cHJpdmF0ZUNvbXBpbGVIYXNJbmRleGVkUHJvcGVydHkpOgorICAgICAgICAqIGppdC9KSVRPcGNv
ZGVzMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlSGFzSW5kZXhl
ZFByb3BlcnR5KToKKyAgICAgICAgKiBqaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwOgorICAgICAg
ICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlR2V0QnlWYWwpOgorICAgICAgICAoSlNDOjpKSVQ6
OnByaXZhdGVDb21waWxlR2V0QnlWYWxXaXRoQ2FjaGVkSWQpOgorICAgICAgICAoSlNDOjpKSVQ6
OnByaXZhdGVDb21waWxlUHV0QnlWYWwpOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21w
aWxlUHV0QnlWYWxXaXRoQ2FjaGVkSWQpOgorICAgICAgICAqIGppdC9TbG93UGF0aENhbGwuaDoK
KyAgICAgICAgKEpTQzo6SklUU2xvd1BhdGhDYWxsOjpjYWxsKToKKyAgICAgICAgKiBsbGludC9M
TEludFNsb3dQYXRocy5jcHA6CisgICAgICAgIChKU0M6OkxMSW50OjpsbGludF90cmFjZV9vcGVy
YW5kKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmxsaW50X3RyYWNlX3ZhbHVlKToKKyAgICAgICAg
KEpTQzo6TExJbnQ6OkxMSU5UX1NMT1dfUEFUSF9ERUNMKToKKyAgICAgICAgKEpTQzo6TExJbnQ6
OnNldHVwR2V0QnlJZFByb3RvdHlwZUNhY2hlKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6TExJ
bnQ6OmdldEJ5VmFsKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6TExJbnQ6OmhhbmRsZUhvc3RD
YWxsKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6TExJbnQ6OnNldFVwQ2FsbCk6IERlbGV0ZWQu
CisgICAgICAgIChKU0M6OkxMSW50OjpnZW5lcmljQ2FsbCk6IERlbGV0ZWQuCisgICAgICAgIChK
U0M6OkxMSW50Ojp2YXJhcmdzU2V0dXApOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpMTEludDo6
bGxpbnRfdGhyb3dfc3RhY2tfb3ZlcmZsb3dfZXJyb3IpOiBEZWxldGVkLgorICAgICAgICAoSlND
OjpMTEludDo6bGxpbnRfc3RhY2tfY2hlY2tfYXRfdm1fZW50cnkpOiBEZWxldGVkLgorICAgICAg
ICAoSlNDOjpMTEludDo6bGxpbnRfd3JpdGVfYmFycmllcl9zbG93KTogRGVsZXRlZC4KKyAgICAg
ICAgKEpTQzo6TExJbnQ6OmxsaW50X2NyYXNoKTogRGVsZXRlZC4KKyAgICAgICAgKiBydW50aW1l
L1NhbXBsaW5nUHJvZmlsZXIuY3BwOgorICAgICAgICAoSlNDOjp0cnlHZXRCeXRlY29kZUluZGV4
KToKKwogMjAxOC0wMy0yMSAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5j
b20+CiAKICAgICAgICAgVW5yZXZpZXdlZC4gRml4IEdUSyBhbmQgV1BFIGRlYnVnIGJ1aWxkIGFm
dGVyIHIyMjk3OTguCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNv
ZGVLaWxscy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9C
eXRlY29kZUtpbGxzLmgJKHJldmlzaW9uIDIyOTgwOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9CeXRlY29kZUtpbGxzLmgJKHdvcmtpbmcgY29weSkKQEAgLTUyLDcgKzUyLDcg
QEAgcHVibGljOgogICAgIAogICAgIGJvb2wgb3BlcmFuZElzS2lsbGVkKEluc3RydWN0aW9uKiBp
bnN0cnVjdGlvbiwgaW50IG9wZXJhbmQpIGNvbnN0CiAgICAgewotICAgICAgICByZXR1cm4gb3Bl
cmFuZElzS2lsbGVkKGluc3RydWN0aW9uIC0gbV9jb2RlQmxvY2stPmluc3RydWN0aW9ucygpLmJl
Z2luKCksIG9wZXJhbmQpOworICAgICAgICByZXR1cm4gb3BlcmFuZElzS2lsbGVkKG1fY29kZUJs
b2NrLT5ieXRlY29kZU9mZnNldChpbnN0cnVjdGlvbiksIG9wZXJhbmQpOwogICAgIH0KICAgICAK
ICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPgpAQCAtNjgsNyArNjgsNyBAQCBwdWJsaWM6
CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4KICAgICB2b2lkIGZvckVhY2hPcGVyYW5k
S2lsbGVkQXQoSW5zdHJ1Y3Rpb24qIHBjLCBjb25zdCBGdW5jdG9yJiBmdW5jdG9yKSBjb25zdAog
ICAgIHsKLSAgICAgICAgZm9yRWFjaE9wZXJhbmRLaWxsZWRBdChwYyAtIG1fY29kZUJsb2NrLT5p
bnN0cnVjdGlvbnMoKS5iZWdpbigpLCBmdW5jdG9yKTsKKyAgICAgICAgZm9yRWFjaE9wZXJhbmRL
aWxsZWRBdChtX2NvZGVCbG9jay0+Ynl0ZWNvZGVPZmZzZXQocGMpLCBmdW5jdG9yKTsKICAgICB9
CiAgICAgCiBwcml2YXRlOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Nh
bGxMaW5rU3RhdHVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQ2FsbExpbmtTdGF0dXMuY3BwCShyZXZpc2lvbiAyMjk4MDgpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtTdGF0dXMuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC02Niw3ICs2Niw3IEBAIENhbGxMaW5rU3RhdHVzIENhbGxMaW5rU3RhdHVzOjpjb21wdXRlRnIK
ICAgICB9CiAjZW5kaWYKIAotICAgIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiA9IHByb2ZpbGVk
QmxvY2stPmluc3RydWN0aW9ucygpLmJlZ2luKCkgKyBieXRlY29kZUluZGV4OworICAgIEluc3Ry
dWN0aW9uKiBpbnN0cnVjdGlvbiA9ICZwcm9maWxlZEJsb2NrLT5pbnN0cnVjdGlvbnMoKVtieXRl
Y29kZUluZGV4XTsKICAgICBPcGNvZGVJRCBvcCA9IEludGVycHJldGVyOjpnZXRPcGNvZGVJRChp
bnN0cnVjdGlvblswXS51Lm9wY29kZSk7CiAgICAgaWYgKG9wICE9IG9wX2NhbGwgJiYgb3AgIT0g
b3BfY29uc3RydWN0ICYmIG9wICE9IG9wX3RhaWxfY2FsbCkKICAgICAgICAgcmV0dXJuIENhbGxM
aW5rU3RhdHVzKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJs
b2NrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29k
ZUJsb2NrLmNwcAkocmV2aXNpb24gMjI5ODA4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0NvZGVCbG9jay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI1Myw3ICsyNTMsNyBAQCB2
b2lkIENvZGVCbG9jazo6ZHVtcEJ5dGVjb2RlKAogICAgIFByaW50U3RyZWFtJiBvdXQsIHVuc2ln
bmVkIGJ5dGVjb2RlT2Zmc2V0LAogICAgIGNvbnN0IFN0dWJJbmZvTWFwJiBzdHViSW5mb3MsIGNv
bnN0IENhbGxMaW5rSW5mb01hcCYgY2FsbExpbmtJbmZvcykKIHsKLSAgICBjb25zdCBJbnN0cnVj
dGlvbiogaXQgPSBpbnN0cnVjdGlvbnMoKS5iZWdpbigpICsgYnl0ZWNvZGVPZmZzZXQ7CisgICAg
Y29uc3QgSW5zdHJ1Y3Rpb24qIGl0ID0gJmluc3RydWN0aW9ucygpW2J5dGVjb2RlT2Zmc2V0XTsK
ICAgICBkdW1wQnl0ZWNvZGUob3V0LCBpbnN0cnVjdGlvbnMoKS5iZWdpbigpLCBpdCwgc3R1Yklu
Zm9zLCBjYWxsTGlua0luZm9zKTsKIH0KIApAQCAtMjg3NCw3ICsyODc0LDcgQEAgdW5zaWduZWQg
Q29kZUJsb2NrOjpyYXJlQ2FzZVByb2ZpbGVDb3VudAogCiBBcml0aFByb2ZpbGUqIENvZGVCbG9j
azo6YXJpdGhQcm9maWxlRm9yQnl0ZWNvZGVPZmZzZXQoaW50IGJ5dGVjb2RlT2Zmc2V0KQogewot
ICAgIHJldHVybiBhcml0aFByb2ZpbGVGb3JQQyhpbnN0cnVjdGlvbnMoKS5iZWdpbigpICsgYnl0
ZWNvZGVPZmZzZXQpOworICAgIHJldHVybiBhcml0aFByb2ZpbGVGb3JQQygmaW5zdHJ1Y3Rpb25z
KClbYnl0ZWNvZGVPZmZzZXRdKTsKIH0KIAogQXJpdGhQcm9maWxlKiBDb2RlQmxvY2s6OmFyaXRo
UHJvZmlsZUZvclBDKEluc3RydWN0aW9uKiBwYykKQEAgLTMwMjEsNyArMzAyMSw3IEBAIHN0ZDo6
b3B0aW9uYWw8dW5zaWduZWQ+IENvZGVCbG9jazo6Ynl0ZWMKICAgICAgICAgYnl0ZWNvZGVPZmZz
ZXQgPSBjYWxsU2l0ZUluZGV4LmJpdHMoKTsKICNlbHNlCiAgICAgICAgIEluc3RydWN0aW9uKiBp
bnN0cnVjdGlvbiA9IGJpdHdpc2VfY2FzdDxJbnN0cnVjdGlvbio+KGNhbGxTaXRlSW5kZXguYml0
cygpKTsKLSAgICAgICAgYnl0ZWNvZGVPZmZzZXQgPSBpbnN0cnVjdGlvbiAtIGluc3RydWN0aW9u
cygpLmJlZ2luKCk7CisgICAgICAgIGJ5dGVjb2RlT2Zmc2V0ID0gdGhpcy0+Ynl0ZWNvZGVPZmZz
ZXQoaW5zdHJ1Y3Rpb24pOwogI2VuZGlmCiAgICAgfSBlbHNlIGlmIChqaXRUeXBlID09IEpJVENv
ZGU6OkRGR0pJVCB8fCBqaXRUeXBlID09IEpJVENvZGU6OkZUTEpJVCkgewogI2lmIEVOQUJMRShE
RkdfSklUKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5SWRTdGF0
dXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRC
eUlkU3RhdHVzLmNwcAkocmV2aXNpb24gMjI5ODA4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0dldEJ5SWRTdGF0dXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04Miw3ICs4Miw3
IEBAIEdldEJ5SWRTdGF0dXMgR2V0QnlJZFN0YXR1czo6Y29tcHV0ZUZyb20KIAogICAgIFZNJiB2
bSA9ICpwcm9maWxlZEJsb2NrLT52bSgpOwogICAgIAotICAgIEluc3RydWN0aW9uKiBpbnN0cnVj
dGlvbiA9IHByb2ZpbGVkQmxvY2stPmluc3RydWN0aW9ucygpLmJlZ2luKCkgKyBieXRlY29kZUlu
ZGV4OworICAgIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiA9ICZwcm9maWxlZEJsb2NrLT5pbnN0
cnVjdGlvbnMoKVtieXRlY29kZUluZGV4XTsKIAogICAgIE9wY29kZSBvcGNvZGUgPSBpbnN0cnVj
dGlvblswXS51Lm9wY29kZTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1B1dEJ5SWRTdGF0dXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9QdXRCeUlkU3RhdHVzLmNwcAkocmV2aXNpb24gMjI5ODA4KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC03Miw3ICs3Miw3IEBAIFB1dEJ5SWRTdGF0dXMgUHV0QnlJZFN0YXR1czo6Y29tcHV0ZUZyb20K
IAogICAgIFZNJiB2bSA9ICpwcm9maWxlZEJsb2NrLT52bSgpOwogICAgIAotICAgIEluc3RydWN0
aW9uKiBpbnN0cnVjdGlvbiA9IHByb2ZpbGVkQmxvY2stPmluc3RydWN0aW9ucygpLmJlZ2luKCkg
KyBieXRlY29kZUluZGV4OworICAgIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiA9ICZwcm9maWxl
ZEJsb2NrLT5pbnN0cnVjdGlvbnMoKVtieXRlY29kZUluZGV4XTsKIAogICAgIFN0cnVjdHVyZUlE
IHN0cnVjdHVyZUlEID0gaW5zdHJ1Y3Rpb25bNF0udS5zdHJ1Y3R1cmVJRDsKICAgICBpZiAoIXN0
cnVjdHVyZUlEKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBh
cnNlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRl
Q29kZVBhcnNlci5jcHAJKHJldmlzaW9uIDIyOTgwOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04MjksNyArODI5
LDcgQEAgcHJpdmF0ZToKICAgICAgICAgLy8gY2hhaW4gYW5kIHVzZSBpdHMgcHJlZGljdGlvbi4g
SWYgd2Ugb25seSBoYXZlCiAgICAgICAgIC8vIGlubGluZWQgdGFpbCBjYWxsIGZyYW1lcywgd2Ug
dXNlIFNwZWNGdWxsVG9wCiAgICAgICAgIC8vIHRvIGF2b2lkIGEgc3B1cmlvdXMgT1NSIGV4aXQu
Ci0gICAgICAgIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiA9IG1faW5saW5lU3RhY2tUb3AtPm1f
cHJvZmlsZWRCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKSArIGJ5dGVjb2RlSW5kZXg7Cisg
ICAgICAgIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiA9ICZtX2lubGluZVN0YWNrVG9wLT5tX3By
b2ZpbGVkQmxvY2stPmluc3RydWN0aW9ucygpW2J5dGVjb2RlSW5kZXhdOwogICAgICAgICBPcGNv
ZGVJRCBvcGNvZGVJRCA9IEludGVycHJldGVyOjpnZXRPcGNvZGVJRChpbnN0cnVjdGlvbi0+dS5v
cGNvZGUpOwogCiAgICAgICAgIHN3aXRjaCAob3Bjb2RlSUQpIHsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0LmNwcAkocmV2aXNpb24gMjI5ODA4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODA3
LDcgKzgwNyw3IEBAIHN0YXRpYyB2b2lkIHJlaWZ5SW5saW5lZENhbGxGcmFtZXMoQ29udGUKICAg
ICAgICAgaWYgKCFpbmxpbmVDYWxsRnJhbWUtPmlzQ2xvc3VyZUNhbGwpCiAgICAgICAgICAgICBm
cmFtZS5zZXRPcGVyYW5kKGlubGluZUNhbGxGcmFtZS0+c3RhY2tPZmZzZXQgKyBDYWxsRnJhbWVT
bG90OjpjYWxsZWUsIEpTVmFsdWUoaW5saW5lQ2FsbEZyYW1lLT5jYWxsZWVDb25zdGFudCgpKSk7
CiAjZWxzZSAvLyBVU0UoSlNWQUxVRTY0KSAvLyBzbyB0aGlzIGlzIHRoZSAzMi1iaXQgcGFydAot
ICAgICAgICBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24gPSBiYXNlbGluZUNvZGVCbG9jay0+aW5z
dHJ1Y3Rpb25zKCkuYmVnaW4oKSArIGNvZGVPcmlnaW4tPmJ5dGVjb2RlSW5kZXg7CisgICAgICAg
IEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiA9ICZiYXNlbGluZUNvZGVCbG9jay0+aW5zdHJ1Y3Rp
b25zKClbY29kZU9yaWdpbi0+Ynl0ZWNvZGVJbmRleF07CiAgICAgICAgIHVpbnQzMl90IGxvY2F0
aW9uQml0cyA9IENhbGxTaXRlSW5kZXgoaW5zdHJ1Y3Rpb24pLmJpdHMoKTsKICAgICAgICAgZnJh
bWUuc2V0T3BlcmFuZDx1aW50MzJfdD4oaW5saW5lQ2FsbEZyYW1lLT5zdGFja09mZnNldCArIENh
bGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnQsIFRhZ09mZnNldCwgbG9jYXRpb25CaXRzKTsKICAg
ICAgICAgZnJhbWUuc2V0T3BlcmFuZDx1aW50MzJfdD4oaW5saW5lQ2FsbEZyYW1lLT5zdGFja09m
ZnNldCArIENhbGxGcmFtZVNsb3Q6OmNhbGxlZSwgVGFnT2Zmc2V0LCBzdGF0aWNfY2FzdDx1aW50
MzJfdD4oSlNWYWx1ZTo6Q2VsbFRhZykpOwpAQCAtODIxLDcgKzgyMSw3IEBAIHN0YXRpYyB2b2lk
IHJlaWZ5SW5saW5lZENhbGxGcmFtZXMoQ29udGUKICNpZiBVU0UoSlNWQUxVRTY0KQogICAgICAg
ICB1aW50MzJfdCBsb2NhdGlvbkJpdHMgPSBDYWxsU2l0ZUluZGV4KGNvZGVPcmlnaW4tPmJ5dGVj
b2RlSW5kZXgpLmJpdHMoKTsKICNlbHNlCi0gICAgICAgIEluc3RydWN0aW9uKiBpbnN0cnVjdGlv
biA9IG91dGVybW9zdEJhc2VsaW5lQ29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpICsg
Y29kZU9yaWdpbi0+Ynl0ZWNvZGVJbmRleDsKKyAgICAgICAgSW5zdHJ1Y3Rpb24qIGluc3RydWN0
aW9uID0gJm91dGVybW9zdEJhc2VsaW5lQ29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKVtjb2RlT3Jp
Z2luLT5ieXRlY29kZUluZGV4XTsKICAgICAgICAgdWludDMyX3QgbG9jYXRpb25CaXRzID0gQ2Fs
bFNpdGVJbmRleChpbnN0cnVjdGlvbikuYml0cygpOwogI2VuZGlmCiAgICAgICAgIGZyYW1lLnNl
dE9wZXJhbmQ8dWludDMyX3Q+KENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnQsIFRhZ09mZnNl
dCwgbG9jYXRpb25CaXRzKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NS
RXhpdENvbXBpbGVyQ29tbW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR09TUkV4aXRDb21waWxlckNvbW1vbi5jcHAJKHJldmlzaW9uIDIyOTgwOCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyQ29tbW9uLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjMxLDcgKzIzMSw3IEBAIHZvaWQgcmVpZnlJbmxpbmVkQ2FsbEZy
YW1lcyhDQ2FsbEhlbHBlcnMKICAgICAgICAgICAgIGppdC5zdG9yZTY0KEFzc2VtYmx5SGVscGVy
czo6VHJ1c3RlZEltbTY0KEpTVmFsdWU6OmVuY29kZShKU1ZhbHVlKGlubGluZUNhbGxGcmFtZS0+
Y2FsbGVlQ29uc3RhbnQoKSkpKSwgQXNzZW1ibHlIZWxwZXJzOjphZGRyZXNzRm9yKChWaXJ0dWFs
UmVnaXN0ZXIpKGlubGluZUNhbGxGcmFtZS0+c3RhY2tPZmZzZXQgKyBDYWxsRnJhbWVTbG90Ojpj
YWxsZWUpKSk7CiAjZWxzZSAvLyBVU0UoSlNWQUxVRTY0KSAvLyBzbyB0aGlzIGlzIHRoZSAzMi1i
aXQgcGFydAogICAgICAgICBqaXQuc3RvcmVQdHIoY2FsbGVyRnJhbWVHUFIsIEFzc2VtYmx5SGVs
cGVyczo6YWRkcmVzc0ZvckJ5dGVPZmZzZXQoaW5saW5lQ2FsbEZyYW1lLT5jYWxsZXJGcmFtZU9m
ZnNldCgpKSk7Ci0gICAgICAgIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiA9IGJhc2VsaW5lQ29k
ZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpICsgY29kZU9yaWdpbi0+Ynl0ZWNvZGVJbmRl
eDsKKyAgICAgICAgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uID0gJmJhc2VsaW5lQ29kZUJsb2Nr
LT5pbnN0cnVjdGlvbnMoKVtjb2RlT3JpZ2luLT5ieXRlY29kZUluZGV4XTsKICAgICAgICAgdWlu
dDMyX3QgbG9jYXRpb25CaXRzID0gQ2FsbFNpdGVJbmRleChpbnN0cnVjdGlvbikuYml0cygpOwog
ICAgICAgICBqaXQuc3RvcmUzMihBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW0zMihsb2NhdGlv
bkJpdHMpLCBBc3NlbWJseUhlbHBlcnM6OnRhZ0ZvcigoVmlydHVhbFJlZ2lzdGVyKShpbmxpbmVD
YWxsRnJhbWUtPnN0YWNrT2Zmc2V0ICsgQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudCkpKTsK
ICAgICAgICAgaml0LnN0b3JlMzIoQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tMzIoSlNWYWx1
ZTo6Q2VsbFRhZyksIEFzc2VtYmx5SGVscGVyczo6dGFnRm9yKChWaXJ0dWFsUmVnaXN0ZXIpKGlu
bGluZUNhbGxGcmFtZS0+c3RhY2tPZmZzZXQgKyBDYWxsRnJhbWVTbG90OjpjYWxsZWUpKSk7CkBA
IC0yNDUsNyArMjQ1LDcgQEAgdm9pZCByZWlmeUlubGluZWRDYWxsRnJhbWVzKENDYWxsSGVscGVy
cwogI2lmIFVTRShKU1ZBTFVFNjQpCiAgICAgICAgIHVpbnQzMl90IGxvY2F0aW9uQml0cyA9IENh
bGxTaXRlSW5kZXgoY29kZU9yaWdpbi0+Ynl0ZWNvZGVJbmRleCkuYml0cygpOwogI2Vsc2UKLSAg
ICAgICAgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uID0gaml0LmJhc2VsaW5lQ29kZUJsb2NrKCkt
Pmluc3RydWN0aW9ucygpLmJlZ2luKCkgKyBjb2RlT3JpZ2luLT5ieXRlY29kZUluZGV4OworICAg
ICAgICBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24gPSAmaml0LmJhc2VsaW5lQ29kZUJsb2NrKCkt
Pmluc3RydWN0aW9ucygpW2NvZGVPcmlnaW4tPmJ5dGVjb2RlSW5kZXhdOwogICAgICAgICB1aW50
MzJfdCBsb2NhdGlvbkJpdHMgPSBDYWxsU2l0ZUluZGV4KGluc3RydWN0aW9uKS5iaXRzKCk7CiAj
ZW5kaWYKICAgICAgICAgaml0LnN0b3JlMzIoQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tMzIo
bG9jYXRpb25CaXRzKSwgQXNzZW1ibHlIZWxwZXJzOjp0YWdGb3IoKFZpcnR1YWxSZWdpc3Rlciko
Q2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudCkpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnRlcnByZXRlci9DYWxsRnJhbWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnRlcnByZXRlci9DYWxsRnJhbWUuY3BwCShyZXZpc2lvbiAyMjk4MDgpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTIxLDE5ICsxMjEsMTkgQEAgdW5zaWduZWQgQ2FsbEZyYW1lOjpjYWxsU2l0
ZUJpdHNBc0J5dGVjbwogewogICAgIEFTU0VSVChjb2RlQmxvY2soKSk7CiAgICAgQVNTRVJUKGNh
bGxTaXRlQml0c0FyZUJ5dGVjb2RlT2Zmc2V0KCkpOwotICAgIHJldHVybiBjdXJyZW50VlBDKCkg
LSBjb2RlQmxvY2soKS0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKTsgICAgIAorICAgIHJldHVybiBj
b2RlQmxvY2soKS0+Ynl0ZWNvZGVPZmZzZXQoY3VycmVudFZQQygpKTsgICAgIAogfQogCiAjZWxz
ZSAvLyBVU0UoSlNWQUxVRTMyXzY0KQogSW5zdHJ1Y3Rpb24qIENhbGxGcmFtZTo6Y3VycmVudFZQ
QygpIGNvbnN0CiB7CiAgICAgQVNTRVJUKGNhbGxTaXRlQml0c0FyZUJ5dGVjb2RlT2Zmc2V0KCkp
OwotICAgIHJldHVybiBjb2RlQmxvY2soKS0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKSArIGNhbGxT
aXRlQml0c0FzQnl0ZWNvZGVPZmZzZXQoKTsKKyAgICByZXR1cm4gJmNvZGVCbG9jaygpLT5pbnN0
cnVjdGlvbnMoKVtjYWxsU2l0ZUJpdHNBc0J5dGVjb2RlT2Zmc2V0KCldOwogfQogCiB2b2lkIENh
bGxGcmFtZTo6c2V0Q3VycmVudFZQQyhJbnN0cnVjdGlvbiogdnBjKQogewotICAgIENhbGxTaXRl
SW5kZXggY2FsbFNpdGUodnBjIC0gY29kZUJsb2NrKCktPmluc3RydWN0aW9ucygpLmJlZ2luKCkp
OworICAgIENhbGxTaXRlSW5kZXggY2FsbFNpdGUoY29kZUJsb2NrKCktPmJ5dGVjb2RlT2Zmc2V0
KHZwYykpOwogICAgIHRoaXNbQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudF0udGFnKCkgPSBz
dGF0aWNfY2FzdDxpbnQzMl90PihjYWxsU2l0ZS5iaXRzKCkpOwogfQogCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUQ2FsbC5jcHAJKHJldmlzaW9uIDIyOTgwOCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3NSw3ICsx
NzUsNyBAQCB2b2lkIEpJVDo6Y29tcGlsZU9wQ2FsbChPcGNvZGVJRCBvcGNvZGVJCiAgICAgICAg
IHN0b3JlMzIoVHJ1c3RlZEltbTMyKGFyZ0NvdW50KSwgQWRkcmVzcyhzdGFja1BvaW50ZXJSZWdp
c3RlciwgQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudCAqIHN0YXRpY19jYXN0PGludD4oc2l6
ZW9mKFJlZ2lzdGVyKSkgKyBQYXlsb2FkT2Zmc2V0IC0gc2l6ZW9mKENhbGxlckZyYW1lQW5kUEMp
KSk7CiAgICAgfSAvLyBTUCBob2xkcyBuZXdDYWxsRnJhbWUgKyBzaXplb2YoQ2FsbGVyRnJhbWVB
bmRQQyksIHdpdGggQXJndW1lbnRDb3VudCBpbml0aWFsaXplZC4KICAgICAKLSAgICB1aW50MzJf
dCBieXRlY29kZU9mZnNldCA9IGluc3RydWN0aW9uIC0gbV9jb2RlQmxvY2stPmluc3RydWN0aW9u
cygpLmJlZ2luKCk7CisgICAgdWludDMyX3QgYnl0ZWNvZGVPZmZzZXQgPSBtX2NvZGVCbG9jay0+
Ynl0ZWNvZGVPZmZzZXQoaW5zdHJ1Y3Rpb24pOwogICAgIHVpbnQzMl90IGxvY2F0aW9uQml0cyA9
IENhbGxTaXRlSW5kZXgoYnl0ZWNvZGVPZmZzZXQpLmJpdHMoKTsKICAgICBzdG9yZTMyKFRydXN0
ZWRJbW0zMihsb2NhdGlvbkJpdHMpLCBBZGRyZXNzKGNhbGxGcmFtZVJlZ2lzdGVyLCBDYWxsRnJh
bWVTbG90Ojphcmd1bWVudENvdW50ICogc3RhdGljX2Nhc3Q8aW50PihzaXplb2YoUmVnaXN0ZXIp
KSArIFRhZ09mZnNldCkpOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElu
bGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGlu
ZXMuaAkocmV2aXNpb24gMjI5ODA4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJ
bmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTEzOCw3ICsxMzgsNyBAQCBBTFdBWVNfSU5MSU5F
IHZvaWQgSklUOjp1cGRhdGVUb3BDYWxsRnJhCiB7CiAgICAgQVNTRVJUKHN0YXRpY19jYXN0PGlu
dD4obV9ieXRlY29kZU9mZnNldCkgPj0gMCk7CiAjaWYgVVNFKEpTVkFMVUUzMl82NCkKLSAgICBJ
bnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24gPSBtX2NvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuYmVn
aW4oKSArIG1fYnl0ZWNvZGVPZmZzZXQ7IAorICAgIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiA9
ICZtX2NvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKClbbV9ieXRlY29kZU9mZnNldF07IAogICAgIHVp
bnQzMl90IGxvY2F0aW9uQml0cyA9IENhbGxTaXRlSW5kZXgoaW5zdHJ1Y3Rpb24pLmJpdHMoKTsK
ICNlbHNlCiAgICAgdWludDMyX3QgbG9jYXRpb25CaXRzID0gQ2FsbFNpdGVJbmRleChtX2J5dGVj
b2RlT2Zmc2V0KS5iaXRzKCk7CkBAIC03NDAsOCArNzQwLDcgQEAgQUxXQVlTX0lOTElORSB2b2lk
IEpJVDo6ZW1pdFRhZ0Jvb2woUmVnaQogCiBpbmxpbmUgSW5zdHJ1Y3Rpb24qIEpJVDo6Y29waWVk
SW5zdHJ1Y3Rpb24oSW5zdHJ1Y3Rpb24qIGluc3QpCiB7Ci0gICAgQVNTRVJUKGluc3QgPj0gbV9j
b2RlQmxvY2stPmluc3RydWN0aW9ucygpLmJlZ2luKCkgJiYgaW5zdCA8IG1fY29kZUJsb2NrLT5p
bnN0cnVjdGlvbnMoKS5lbmQoKSk7Ci0gICAgcmV0dXJuIG1faW5zdHJ1Y3Rpb25zLmJlZ2luKCkg
KyAoaW5zdCAtIG1fY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpKTsKKyAgICByZXR1
cm4gJm1faW5zdHJ1Y3Rpb25zW21fY29kZUJsb2NrLT5ieXRlY29kZU9mZnNldChpbnN0KV07CiB9
CiAKICNlbmRpZiAvLyBVU0UoSlNWQUxVRTMyXzY0KQpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcAkocmV2aXNpb24gMjI5ODA4KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC05MTQsNyArOTE0LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfaGFzX3N0cnVjdHVyZV9wcm9w
ZXJ0eQogCiB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVIYXNJbmRleGVkUHJvcGVydHkoQnlWYWxJ
bmZvKiBieVZhbEluZm8sIFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcywgSklUQXJyYXlN
b2RlIGFycmF5TW9kZSkKIHsKLSAgICBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uID0g
bV9jb2RlQmxvY2stPmluc3RydWN0aW9ucygpLmJlZ2luKCkgKyBieVZhbEluZm8tPmJ5dGVjb2Rl
SW5kZXg7CisgICAgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiA9ICZtX2NvZGVCbG9j
ay0+aW5zdHJ1Y3Rpb25zKClbYnlWYWxJbmZvLT5ieXRlY29kZUluZGV4XTsKICAgICAKICAgICBQ
YXRjaGFibGVKdW1wIGJhZFR5cGU7CiAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVE9wY29kZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUT3Bjb2Rlcy5jcHAJKHJldmlzaW9uIDIyOTgwOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwNjMsNyArMTA2Myw3
IEBAIHZvaWQgSklUOjplbWl0X29wX2hhc19zdHJ1Y3R1cmVfcHJvcGVydHkKIAogdm9pZCBKSVQ6
OnByaXZhdGVDb21waWxlSGFzSW5kZXhlZFByb3BlcnR5KEJ5VmFsSW5mbyogYnlWYWxJbmZvLCBS
ZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3MsIEpJVEFycmF5TW9kZSBhcnJheU1vZGUpCiB7
Ci0gICAgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiA9IG1fY29kZUJsb2NrLT5pbnN0
cnVjdGlvbnMoKS5iZWdpbigpICsgYnlWYWxJbmZvLT5ieXRlY29kZUluZGV4OworICAgIEluc3Ry
dWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24gPSAmbV9jb2RlQmxvY2stPmluc3RydWN0aW9ucygp
W2J5VmFsSW5mby0+Ynl0ZWNvZGVJbmRleF07CiAgICAgCiAgICAgUGF0Y2hhYmxlSnVtcCBiYWRU
eXBlOwogICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFj
Y2Vzcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9w
ZXJ0eUFjY2Vzcy5jcHAJKHJldmlzaW9uIDIyOTgwOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjIyLDcgKzEy
MjIsNyBAQCB2b2lkIEpJVDo6ZW1pdEJ5VmFsSWRlbnRpZmllckNoZWNrKEJ5VmFsCiAKIHZvaWQg
SklUOjpwcml2YXRlQ29tcGlsZUdldEJ5VmFsKEJ5VmFsSW5mbyogYnlWYWxJbmZvLCBSZXR1cm5B
ZGRyZXNzUHRyIHJldHVybkFkZHJlc3MsIEpJVEFycmF5TW9kZSBhcnJheU1vZGUpCiB7Ci0gICAg
SW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiA9IG1fY29kZUJsb2NrLT5pbnN0cnVjdGlv
bnMoKS5iZWdpbigpICsgYnlWYWxJbmZvLT5ieXRlY29kZUluZGV4OworICAgIEluc3RydWN0aW9u
KiBjdXJyZW50SW5zdHJ1Y3Rpb24gPSAmbV9jb2RlQmxvY2stPmluc3RydWN0aW9ucygpW2J5VmFs
SW5mby0+Ynl0ZWNvZGVJbmRleF07CiAgICAgCiAgICAgUGF0Y2hhYmxlSnVtcCBiYWRUeXBlOwog
ICAgIEp1bXBMaXN0IHNsb3dDYXNlczsKQEAgLTEyNzQsNyArMTI3NCw3IEBAIHZvaWQgSklUOjpw
cml2YXRlQ29tcGlsZUdldEJ5VmFsKEJ5VmFsSW4KIAogdm9pZCBKSVQ6OnByaXZhdGVDb21waWxl
R2V0QnlWYWxXaXRoQ2FjaGVkSWQoQnlWYWxJbmZvKiBieVZhbEluZm8sIFJldHVybkFkZHJlc3NQ
dHIgcmV0dXJuQWRkcmVzcywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKQogewotICAg
IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24gPSBtX2NvZGVCbG9jay0+aW5zdHJ1Y3Rp
b25zKCkuYmVnaW4oKSArIGJ5VmFsSW5mby0+Ynl0ZWNvZGVJbmRleDsKKyAgICBJbnN0cnVjdGlv
biogY3VycmVudEluc3RydWN0aW9uID0gJm1fY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKVtieVZh
bEluZm8tPmJ5dGVjb2RlSW5kZXhdOwogCiAgICAgSnVtcCBmYXN0RG9uZUNhc2U7CiAgICAgSnVt
cCBzbG93RG9uZUNhc2U7CkBAIC0xMzA3LDcgKzEzMDcsNyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNv
bXBpbGVHZXRCeVZhbFdpdGhDYWNoCiAKIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZVB1dEJ5VmFs
KEJ5VmFsSW5mbyogYnlWYWxJbmZvLCBSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3MsIEpJ
VEFycmF5TW9kZSBhcnJheU1vZGUpCiB7Ci0gICAgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbiA9IG1fY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpICsgYnlWYWxJbmZvLT5i
eXRlY29kZUluZGV4OworICAgIEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24gPSAmbV9j
b2RlQmxvY2stPmluc3RydWN0aW9ucygpW2J5VmFsSW5mby0+Ynl0ZWNvZGVJbmRleF07CiAgICAg
CiAgICAgUGF0Y2hhYmxlSnVtcCBiYWRUeXBlOwogICAgIEp1bXBMaXN0IHNsb3dDYXNlczsKQEAg
LTEzNjYsNyArMTM2Niw3IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZVB1dEJ5VmFsKEJ5VmFs
SW4KIAogdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlUHV0QnlWYWxXaXRoQ2FjaGVkSWQoQnlWYWxJ
bmZvKiBieVZhbEluZm8sIFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcywgUHV0S2luZCBw
dXRLaW5kLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpCiB7Ci0gICAgSW5zdHJ1Y3Rp
b24qIGN1cnJlbnRJbnN0cnVjdGlvbiA9IG1fY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5iZWdp
bigpICsgYnlWYWxJbmZvLT5ieXRlY29kZUluZGV4OworICAgIEluc3RydWN0aW9uKiBjdXJyZW50
SW5zdHJ1Y3Rpb24gPSAmbV9jb2RlQmxvY2stPmluc3RydWN0aW9ucygpW2J5VmFsSW5mby0+Ynl0
ZWNvZGVJbmRleF07CiAKICAgICBKdW1wTGlzdCBkb25lQ2FzZXM7CiAgICAgSnVtcExpc3Qgc2xv
d0Nhc2VzOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9TbG93UGF0aENhbGwuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1Nsb3dQYXRoQ2FsbC5oCShy
ZXZpc2lvbiAyMjk4MDgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1Nsb3dQYXRoQ2Fs
bC5oCSh3b3JraW5nIGNvcHkpCkBAIC00Niw3ICs0Niw3IEBAIHB1YmxpYzoKICAgICB7CiAjaWYg
RU5BQkxFKE9QQ09ERV9TQU1QTElORykKICAgICAgICAgaWYgKG1faml0LT5tX2J5dGVjb2RlT2Zm
c2V0ICE9IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSkKLSAgICAgICAgICAg
IG1faml0LT5zYW1wbGVJbnN0cnVjdGlvbihtX2ppdC0+bV9jb2RlQmxvY2stPmluc3RydWN0aW9u
cygpLmJlZ2luKCkgKyBtX2ppdC0+bV9ieXRlY29kZU9mZnNldCwgdHJ1ZSk7CisgICAgICAgICAg
ICBtX2ppdC0+c2FtcGxlSW5zdHJ1Y3Rpb24oJm1faml0LT5tX2NvZGVCbG9jay0+aW5zdHJ1Y3Rp
b25zKClbbV9qaXQtPm1fYnl0ZWNvZGVPZmZzZXRdLCB0cnVlKTsKICNlbmRpZgogICAgICAgICBt
X2ppdC0+dXBkYXRlVG9wQ2FsbEZyYW1lKCk7CiAjaWYgQ1BVKFg4NikgJiYgVVNFKEpTVkFMVUUz
Ml82NCkKQEAgLTc1LDcgKzc1LDcgQEAgcHVibGljOgogCiAjaWYgRU5BQkxFKE9QQ09ERV9TQU1Q
TElORykKICAgICAgICAgaWYgKG1faml0LT5tX2J5dGVjb2RlT2Zmc2V0ICE9IHN0ZDo6bnVtZXJp
Y19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSkKLSAgICAgICAgICAgIG1faml0LT5zYW1wbGVJbnN0
cnVjdGlvbihtX2ppdC0+bV9jb2RlQmxvY2stPmluc3RydWN0aW9ucygpLmJlZ2luKCkgKyBtX2pp
dC0+bV9ieXRlY29kZU9mZnNldCwgZmFsc2UpOworICAgICAgICAgICAgbV9qaXQtPnNhbXBsZUlu
c3RydWN0aW9uKCZtX2ppdC0+bV9jb2RlQmxvY2stPmluc3RydWN0aW9ucygpW21faml0LT5tX2J5
dGVjb2RlT2Zmc2V0XSwgZmFsc2UpOwogI2VuZGlmCiAgICAgICAgIAogICAgICAgICBtX2ppdC0+
ZXhjZXB0aW9uQ2hlY2soKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTElu
dFNsb3dQYXRocy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xMSW50U2xvd1BhdGhzLmNwcAkocmV2aXNpb24gMjI5ODA4KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTk2LDcg
KzE5Niw3IEBAIGV4dGVybiAiQyIgU2xvd1BhdGhSZXR1cm5UeXBlIGxsaW50X3RyYWMKICAgICAg
ICAgICAgICZUaHJlYWQ6OmN1cnJlbnQoKSwKICAgICAgICAgICAgIGV4ZWMtPmNvZGVCbG9jaygp
LAogICAgICAgICAgICAgZXhlYywKLSAgICAgICAgICAgIHN0YXRpY19jYXN0PGludHB0cl90Pihw
YyAtIGV4ZWMtPmNvZGVCbG9jaygpLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpKSwKKyAgICAgICAg
ICAgIHN0YXRpY19jYXN0PGludHB0cl90PihleGVjLT5jb2RlQmxvY2soKS0+Ynl0ZWNvZGVPZmZz
ZXQocGMpKSwKICAgICAgICAgICAgIEludGVycHJldGVyOjpnZXRPcGNvZGVJRChwY1swXS51Lm9w
Y29kZSksCiAgICAgICAgICAgICBmcm9tV2hlcmUsCiAgICAgICAgICAgICBvcGVyYW5kLApAQCAt
MjIwLDcgKzIyMCw3IEBAIGV4dGVybiAiQyIgU2xvd1BhdGhSZXR1cm5UeXBlIGxsaW50X3RyYWMK
ICAgICAgICAgJlRocmVhZDo6Y3VycmVudCgpLAogICAgICAgICBleGVjLT5jb2RlQmxvY2soKSwK
ICAgICAgICAgZXhlYywKLSAgICAgICAgc3RhdGljX2Nhc3Q8aW50cHRyX3Q+KHBjIC0gZXhlYy0+
Y29kZUJsb2NrKCktPmluc3RydWN0aW9ucygpLmJlZ2luKCkpLAorICAgICAgICBzdGF0aWNfY2Fz
dDxpbnRwdHJfdD4oZXhlYy0+Y29kZUJsb2NrKCktPmJ5dGVjb2RlT2Zmc2V0KHBjKSksCiAgICAg
ICAgIEludGVycHJldGVyOjpnZXRPcGNvZGVJRChwY1swXS51Lm9wY29kZSksCiAgICAgICAgIGZy
b21XaGVyZSwKICAgICAgICAgb3BlcmFuZCwKQEAgLTI4MCw3ICsyODAsNyBAQCBMTElOVF9TTE9X
X1BBVEhfREVDTCh0cmFjZSkKICAgICAgICAgICAgICZUaHJlYWQ6OmN1cnJlbnQoKSwKICAgICAg
ICAgICAgIGV4ZWMtPmNvZGVCbG9jaygpLAogICAgICAgICAgICAgZXhlYywKLSAgICAgICAgICAg
IHN0YXRpY19jYXN0PGludHB0cl90PihwYyAtIGV4ZWMtPmNvZGVCbG9jaygpLT5pbnN0cnVjdGlv
bnMoKS5iZWdpbigpKSwKKyAgICAgICAgICAgIHN0YXRpY19jYXN0PGludHB0cl90PihleGVjLT5j
b2RlQmxvY2soKS0+Ynl0ZWNvZGVPZmZzZXQocGMpKSwKICAgICAgICAgICAgIG9wY29kZU5hbWVz
W29wY29kZUlEXSwgcGMpOwogICAgIGlmIChvcGNvZGVJRCA9PSBvcF9lbnRlcikgewogICAgICAg
ICBkYXRhTG9nRigiRnJhbWUgd2lsbCBldmVudHVhbGx5IHJldHVybiB0byAlcFxuIiwgZXhlYy0+
cmV0dXJuUEMoKS52YWx1ZSgpKTsKQEAgLTI5OSw3ICsyOTksNyBAQCBMTElOVF9TTE9XX1BBVEhf
REVDTChzcGVjaWFsX3RyYWNlKQogICAgICAgICAgICAgJlRocmVhZDo6Y3VycmVudCgpLAogICAg
ICAgICAgICAgZXhlYy0+Y29kZUJsb2NrKCksCiAgICAgICAgICAgICBleGVjLAotICAgICAgICAg
ICAgc3RhdGljX2Nhc3Q8aW50cHRyX3Q+KHBjIC0gZXhlYy0+Y29kZUJsb2NrKCktPmluc3RydWN0
aW9ucygpLmJlZ2luKCkpLAorICAgICAgICAgICAgc3RhdGljX2Nhc3Q8aW50cHRyX3Q+KGV4ZWMt
PmNvZGVCbG9jaygpLT5ieXRlY29kZU9mZnNldChwYykpLAogICAgICAgICAgICAgSW50ZXJwcmV0
ZXI6OmdldE9wY29kZUlEKHBjWzBdLnUub3Bjb2RlKSwKICAgICAgICAgICAgIGV4ZWMtPnJldHVy
blBDKCkudmFsdWUoKSk7CiAgICAgTExJTlRfRU5EX0lNUEwoKTsKQEAgLTQyOSw3ICs0MjksNyBA
QCBMTElOVF9TTE9XX1BBVEhfREVDTChsb29wX29zcikKICAgICAgICAgICAgIGNvZGVCbG9jay0+
bGxpbnRFeGVjdXRlQ291bnRlcigpLCAiXG4iKTsKICAgICB9CiAgICAgCi0gICAgdW5zaWduZWQg
bG9vcE9TUkVudHJ5Qnl0ZWNvZGVPZmZzZXQgPSBwYyAtIGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25z
KCkuYmVnaW4oKTsKKyAgICB1bnNpZ25lZCBsb29wT1NSRW50cnlCeXRlY29kZU9mZnNldCA9IGNv
ZGVCbG9jay0+Ynl0ZWNvZGVPZmZzZXQocGMpOwogCiAgICAgaWYgKCFzaG91bGRKSVQoY29kZUJs
b2NrKSkgewogICAgICAgICBjb2RlQmxvY2stPmRvbnRKSVRBbnl0aW1lU29vbigpOwpAQCAtNDM5
LDE1ICs0MzksMTUgQEAgTExJTlRfU0xPV19QQVRIX0RFQ0wobG9vcF9vc3IpCiAgICAgaWYgKCFq
aXRDb21waWxlQW5kU2V0SGV1cmlzdGljcyhjb2RlQmxvY2ssIGV4ZWMsIGxvb3BPU1JFbnRyeUJ5
dGVjb2RlT2Zmc2V0KSkKICAgICAgICAgTExJTlRfUkVUVVJOX1RXTygwLCAwKTsKICAgICAKLSAg
ICBDT0RFQkxPQ0tfTE9HX0VWRU5UKGNvZGVCbG9jaywgIm9zckVudHJ5IiwgKCJhdCBiYyMiLCBw
YyAtIGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKSkpOworICAgIENPREVCTE9DS19M
T0dfRVZFTlQoY29kZUJsb2NrLCAib3NyRW50cnkiLCAoImF0IGJjIyIsIGxvb3BPU1JFbnRyeUJ5
dGVjb2RlT2Zmc2V0KSk7CiAKICAgICBBU1NFUlQoY29kZUJsb2NrLT5qaXRUeXBlKCkgPT0gSklU
Q29kZTo6QmFzZWxpbmVKSVQpOwogICAgIAogICAgIFZlY3RvcjxCeXRlY29kZUFuZE1hY2hpbmVP
ZmZzZXQ+IG1hcDsKICAgICBjb2RlQmxvY2stPmppdENvZGVNYXAoKS0+ZGVjb2RlKG1hcCk7Ci0g
ICAgQnl0ZWNvZGVBbmRNYWNoaW5lT2Zmc2V0KiBtYXBwaW5nID0gYmluYXJ5U2VhcmNoPEJ5dGVj
b2RlQW5kTWFjaGluZU9mZnNldCwgdW5zaWduZWQ+KG1hcCwgbWFwLnNpemUoKSwgcGMgLSBjb2Rl
QmxvY2stPmluc3RydWN0aW9ucygpLmJlZ2luKCksIEJ5dGVjb2RlQW5kTWFjaGluZU9mZnNldDo6
Z2V0Qnl0ZWNvZGVJbmRleCk7CisgICAgQnl0ZWNvZGVBbmRNYWNoaW5lT2Zmc2V0KiBtYXBwaW5n
ID0gYmluYXJ5U2VhcmNoPEJ5dGVjb2RlQW5kTWFjaGluZU9mZnNldCwgdW5zaWduZWQ+KG1hcCwg
bWFwLnNpemUoKSwgbG9vcE9TUkVudHJ5Qnl0ZWNvZGVPZmZzZXQsIEJ5dGVjb2RlQW5kTWFjaGlu
ZU9mZnNldDo6Z2V0Qnl0ZWNvZGVJbmRleCk7CiAgICAgQVNTRVJUKG1hcHBpbmcpOwotICAgIEFT
U0VSVChtYXBwaW5nLT5tX2J5dGVjb2RlSW5kZXggPT0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHBj
IC0gY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpKSk7CisgICAgQVNTRVJUKG1hcHBp
bmctPm1fYnl0ZWNvZGVJbmRleCA9PSBsb29wT1NSRW50cnlCeXRlY29kZU9mZnNldCk7CiAgICAg
CiAgICAgdm9pZCoganVtcFRhcmdldCA9IGNvZGVCbG9jay0+aml0Q29kZSgpLT5leGVjdXRhYmxl
QWRkcmVzc0F0T2Zmc2V0KG1hcHBpbmctPm1fbWFjaGluZUNvZGVPZmZzZXQpOwogICAgIEFTU0VS
VChqdW1wVGFyZ2V0KTsKQEAgLTcxNCw3ICs3MTQsNyBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChz
bG93X3BhdGhfZ2V0X2J5X2lkCiAgICAgICAgICYmIGlzSlNBcnJheShiYXNlVmFsdWUpCiAgICAg
ICAgICYmIGlkZW50ID09IHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCkgewogICAgICAgICBwY1sw
XS51Lm9wY29kZSA9IExMSW50OjpnZXRPcGNvZGUob3BfZ2V0X2FycmF5X2xlbmd0aCk7Ci0gICAg
ICAgIEFycmF5UHJvZmlsZSogYXJyYXlQcm9maWxlID0gY29kZUJsb2NrLT5nZXRPckFkZEFycmF5
UHJvZmlsZShwYyAtIGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKSk7CisgICAgICAg
IEFycmF5UHJvZmlsZSogYXJyYXlQcm9maWxlID0gY29kZUJsb2NrLT5nZXRPckFkZEFycmF5UHJv
ZmlsZShjb2RlQmxvY2stPmJ5dGVjb2RlT2Zmc2V0KHBjKSk7CiAgICAgICAgIGFycmF5UHJvZmls
ZS0+b2JzZXJ2ZVN0cnVjdHVyZShiYXNlVmFsdWUuYXNDZWxsKCktPnN0cnVjdHVyZSgpKTsKICAg
ICAgICAgcGNbNF0udS5hcnJheVByb2ZpbGUgPSBhcnJheVByb2ZpbGU7CiAKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NhbXBsaW5nUHJvZmlsZXIuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NhbXBsaW5nUHJvZmlsZXIuY3BwCShy
ZXZpc2lvbiAyMjk4MDgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TYW1wbGlu
Z1Byb2ZpbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDM1LDEwICs0MzUsOSBAQCBzdGF0aWMg
QUxXQVlTX0lOTElORSB1bnNpZ25lZCB0cnlHZXRCeXRlCiAgICAgcmV0dXJuIDA7CiAjZWxzZQog
ICAgIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiA9IGJpdHdpc2VfY2FzdDxJbnN0cnVjdGlvbio+
KGxsaW50UEMpOwotICAgIGlmIChpbnN0cnVjdGlvbiA+PSBjb2RlQmxvY2stPmluc3RydWN0aW9u
cygpLmJlZ2luKCkgJiYgaW5zdHJ1Y3Rpb24gPCBjb2RlQmxvY2stPmluc3RydWN0aW9ucygpLmJl
Z2luKCkgKyBjb2RlQmxvY2stPmluc3RydWN0aW9uQ291bnQoKSkgeworICAgIGlmIChpbnN0cnVj
dGlvbiA+PSBjb2RlQmxvY2stPmluc3RydWN0aW9ucygpLmJlZ2luKCkgJiYgaW5zdHJ1Y3Rpb24g
PCBjb2RlQmxvY2stPmluc3RydWN0aW9ucygpLmVuZCgpKSB7CiAgICAgICAgIGlzVmFsaWQgPSB0
cnVlOwotICAgICAgICB1bnNpZ25lZCBieXRlY29kZUluZGV4ID0gaW5zdHJ1Y3Rpb24gLSBjb2Rl
QmxvY2stPmluc3RydWN0aW9ucygpLmJlZ2luKCk7Ci0gICAgICAgIHJldHVybiBieXRlY29kZUlu
ZGV4OworICAgICAgICByZXR1cm4gY29kZUJsb2NrLT5ieXRlY29kZU9mZnNldChpbnN0cnVjdGlv
bik7CiAgICAgfQogICAgIGlzVmFsaWQgPSBmYWxzZTsKICAgICByZXR1cm4gMDsK
</data>
<flag name="review"
          id="354743"
          type_id="1"
          status="+"
          setter="jfbastien"
    />
          </attachment>
      

    </bug>

</bugzilla>