<?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>95316</bug_id>
          
          <creation_ts>2012-08-29 02:37:08 -0700</creation_ts>
          <short_desc>Refactoring LLInt::Data to be a singleton</short_desc>
          <delta_ts>2012-08-29 17:29:21 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Mark Lam">mark.lam</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>barraclough</cc>
    
    <cc>dglazkov</cc>
    
    <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>707240</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2012-08-29 02:37:08 -0700</bug_when>
    <thetext>Refactoring LLInt::Data to be a singleton.  There was no reason why it shouldn&apos;t be a singleton in the first place anyway.  The previous form was being used as a singleton, but instantiates LLInt::Data like an instance object.  It is now made up of only static members.

This change allows its opcodeMap to be easily queried from any function without needing to go through a GlobalData object.  It also introduces the LLInt::getCodePtr() methods that will be used by the LLInt C loop later to redefine how llint symbols (opcodes and trampoline glue labels) get resolved.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>707331</commentid>
    <comment_count>1</comment_count>
      <attachid>161189</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2012-08-29 05:02:22 -0700</bug_when>
    <thetext>Created attachment 161189
Fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>707354</commentid>
    <comment_count>2</comment_count>
      <attachid>161189</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-08-29 05:24:47 -0700</bug_when>
    <thetext>Comment on attachment 161189
Fix.

Attachment 161189 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/13687197</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>707358</commentid>
    <comment_count>3</comment_count>
      <attachid>161189</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-08-29 05:29:07 -0700</bug_when>
    <thetext>Comment on attachment 161189
Fix.

Attachment 161189 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/13688184</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>707359</commentid>
    <comment_count>4</comment_count>
      <attachid>161189</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-08-29 05:29:21 -0700</bug_when>
    <thetext>Comment on attachment 161189
Fix.

Attachment 161189 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/13686170</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>707363</commentid>
    <comment_count>5</comment_count>
      <attachid>161195</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2012-08-29 05:33:49 -0700</bug_when>
    <thetext>Created attachment 161195
Fixed typo.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>707453</commentid>
    <comment_count>6</comment_count>
      <attachid>161195</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2012-08-29 08:08:03 -0700</bug_when>
    <thetext>Comment on attachment 161195
Fixed typo.

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

Looks good to me. I have one edit I&apos;d like to see before marking this r+.

&gt; Source/JavaScriptCore/llint/LLIntData.cpp:44
&gt; +    if (!Data::s_isInitialized) {

Please remove s_isInitialized and this test of it. This test is neither necessary nor sufficient for a thread-safe singleton. It isn&apos;t necessary because you&apos;re using the initializeThreading() hook to ensure a thread-safe singleton. It isn&apos;t sufficient because this branch isn&apos;t guarded by a lock.

Side note about WebKit style: When we do use checks like this, we prefer &quot;if (!condition) { early return }&quot; style, to reduce the amount of indentation in a function.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>707490</commentid>
    <comment_count>7</comment_count>
      <attachid>161237</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2012-08-29 08:45:49 -0700</bug_when>
    <thetext>Created attachment 161237
Removed s_isInitialized and its references.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>707568</commentid>
    <comment_count>8</comment_count>
      <attachid>161237</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2012-08-29 10:04:37 -0700</bug_when>
    <thetext>Comment on attachment 161237
Removed s_isInitialized and its references.

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>707849</commentid>
    <comment_count>9</comment_count>
      <attachid>161237</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-29 14:13:08 -0700</bug_when>
    <thetext>Comment on attachment 161237
Removed s_isInitialized and its references.

Attachment 161237 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/13695333

New failing tests:
CCLayerTreeHostTestAtomicCommitWithPartialUpdate.runMultiThread</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>707861</commentid>
    <comment_count>10</comment_count>
      <attachid>161237</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2012-08-29 14:19:45 -0700</bug_when>
    <thetext>Comment on attachment 161237
Removed s_isInitialized and its references.

cq+ again because this patch did not break the cr-linux bot, it was already broken.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>708090</commentid>
    <comment_count>11</comment_count>
      <attachid>161237</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-29 17:24:26 -0700</bug_when>
    <thetext>Comment on attachment 161237
Removed s_isInitialized and its references.

Rejecting attachment 161237 from commit-queue.

New failing tests:
CCLayerTreeHostTestAtomicCommitWithPartialUpdate.runMultiThread
Full output: http://queues.webkit.org/results/13685512</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>708094</commentid>
    <comment_count>12</comment_count>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2012-08-29 17:27:47 -0700</bug_when>
    <thetext>Landed in r127068.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>708096</commentid>
    <comment_count>13</comment_count>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2012-08-29 17:29:21 -0700</bug_when>
    <thetext>This is a JSC change, so the EWS failure on chromium must be a flake.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>161189</attachid>
            <date>2012-08-29 05:02:22 -0700</date>
            <delta_ts>2012-08-29 05:29:42 -0700</delta_ts>
            <desc>Fix.</desc>
            <filename>bug-95316.patch</filename>
            <type>text/plain</type>
            <size>24652</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTI2OTg4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDY4IEBA
CisyMDEyLTA4LTI5ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBS
ZWZhY3RvcmluZyBMTEludDo6RGF0YS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTk1MzE2LgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFRoaXMgY2hhbmdlIGFsbG93cyBpdHMgb3Bjb2RlTWFwIHRvIGJlIGVh
c2lseSBxdWVyaWVkIGZyb20gYW55IGZ1bmN0aW9uCisgICAgICAgIHdpdGhvdXQgbmVlZGluZyB0
byBnbyB0aHJvdWdoIGEgR2xvYmFsRGF0YSBvYmplY3QuICBJdCBhbHNvIGludHJvZHVjZXMKKyAg
ICAgICAgdGhlIExMSW50OjpnZXRDb2RlUHRyKCkgbWV0aG9kcyB0aGF0IHdpbGwgYmUgdXNlZCBi
eSB0aGUgTExJbnQgQyBsb29wCisgICAgICAgIGxhdGVyIHRvIHJlZGVmaW5lIGhvdyBsbGludCBz
eW1ib2xzIChvcGNvZGVzIGFuZCB0cmFtcG9saW5lIGdsdWUKKyAgICAgICAgbGFiZWxzKSBnZXQg
cmVzb2x2ZWQuCisKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJDb2RlUmVmLmg6
CisgICAgICAgIChNYWNyb0Fzc2VtYmxlckNvZGVQdHIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fz
c2VtYmxlckNvZGVQdHI6OmNyZWF0ZUxMSW50Q29kZVB0cik6CisgICAgICAgIChNYWNyb0Fzc2Vt
YmxlckNvZGVSZWYpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckNvZGVSZWY6OmNyZWF0
ZUxMSW50Q29kZVJlZik6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAg
ICAgKEpTQzo6Q29kZUJsb2NrOjphZGp1c3RQQ0lmQXRDYWxsU2l0ZSk6CisgICAgICAgIChKU0M6
OkNvZGVCbG9jazo6Ynl0ZWNvZGVPZmZzZXQpOgorICAgICAgICAqIGJ5dGVjb2RlL09wY29kZS5o
OgorICAgICAgICAgICAgUmVtb3ZlIHRoZSAnY29uc3QnIHRvIHNpbXBsaWZ5IHRoaW5ncyBhbmQg
YXZvaWQgaGF2aW5nIHRvIGRvCisgICAgICAgICAgICBhZGRpdGlvbmFsIGNhc3RzIGFuZCAjaWZk
ZWZzIGluIG1hbnkgcGxhY2VzLgorICAgICAgICAqIGJ5dGVjb2RlL1Jlc29sdmVHbG9iYWxTdGF0
dXMuY3BwOgorICAgICAgICAoSlNDOjpjb21wdXRlRm9yTExJbnQpOgorICAgICAgICAqIGJ5dGVj
b21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2Vu
ZXJhdG9yOjpnZW5lcmF0ZSk6CisgICAgICAgICogaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3Bw
OgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6aW5pdGlhbGl6ZSk6CisgICAgICAgICogaW50
ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaDoKKyAgICAgICAgKEludGVycHJldGVyKToKKyAgICAgICAg
KiBqaXQvSklURXhjZXB0aW9ucy5jcHA6CisgICAgICAgIChKU0M6OmdlbmVyaWNUaHJvdyk6Cisg
ICAgICAgICogbGxpbnQvTExJbnREYXRhLmNwcDoKKyAgICAgICAgKExMSW50KToKKyAgICAgICAg
KEpTQzo6TExJbnQ6OmluaXRpYWxpemUpOgorICAgICAgICAqIGxsaW50L0xMSW50RGF0YS5oOgor
ICAgICAgICAoSlNDKToKKyAgICAgICAgKExMSW50KToKKyAgICAgICAgKERhdGEpOgorICAgICAg
ICAoSlNDOjpMTEludDo6aXNJbml0aWFsaXplZCk6CisgICAgICAgIChKU0M6OkxMSW50OjpzZXRJ
c0luaXRpYWxpemVkKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmV4Y2VwdGlvbkluc3RydWN0aW9u
cyk6CisgICAgICAgIChKU0M6OkxMSW50OjpvcGNvZGVNYXApOgorICAgICAgICAoSlNDOjpMTElu
dDo6Z2V0T3Bjb2RlKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmdldENvZGVQdHIpOgorICAgICAg
ICAoSlNDOjpMTEludDo6RGF0YTo6cGVyZm9ybUFzc2VydGlvbnMpOgorICAgICAgICAqIGxsaW50
L0xMSW50RXhjZXB0aW9ucy5jcHA6CisgICAgICAgIChKU0M6OkxMSW50OjpyZXR1cm5Ub1Rocm93
Rm9yVGhyb3duRXhjZXB0aW9uKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OnJldHVyblRvVGhyb3cp
OgorICAgICAgICAoSlNDOjpMTEludDo6Y2FsbFRvVGhyb3cpOgorICAgICAgICAqIGxsaW50L0xM
SW50U2xvd1BhdGhzLmNwcDoKKyAgICAgICAgKEpTQzo6TExJbnQ6OkxMSU5UX1NMT1dfUEFUSF9E
RUNMKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmhhbmRsZUhvc3RDYWxsKToKKyAgICAgICAgKiBy
dW50aW1lL0luaXRpYWxpemVUaHJlYWRpbmcuY3BwOgorICAgICAgICAoSlNDOjppbml0aWFsaXpl
VGhyZWFkaW5nT25jZSk6IEluaXRpYWxpemUgdGhlIHNpbmdsZXRvbiBMTEludCBkYXRhLgorICAg
ICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxEYXRhLmNwcDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxE
YXRhOjpKU0dsb2JhbERhdGEpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxEYXRhLmg6Cisg
ICAgICAgIChKU0dsb2JhbERhdGEpOiBSZW1vdmVkIHRoZSBub3cgdW5uZWVkZWQgTExJbnQ6OkRh
dGEgaW5zdGFuY2UgaW4KKyAgICAgICAgICAgIEpTR2xvYmFsRGF0YS4KKyAgICAgICAgKiBydW50
aW1lL0pTVmFsdWUuaDoKKyAgICAgICAgKEpTVmFsdWUpOgorCiAyMDEyLTA4LTI4ICBHZW9mZnJl
eSBHYXJlbiAgPGdnYXJlbkBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkZWQgSlNTY29wZTo6b2Jq
ZWN0SW5TY29wZSgpLCBhbmQgcmVmYWN0b3JlZCBjYWxsZXJzIHRvIHVzZSBpdApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckNvZGVSZWYuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVy
Q29kZVJlZi5oCShyZXZpc2lvbiAxMjY5NzUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNz
ZW1ibGVyL01hY3JvQXNzZW1ibGVyQ29kZVJlZi5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsy
OCw3IEBACiAKICNpbmNsdWRlICJEaXNhc3NlbWJsZXIuaCIKICNpbmNsdWRlICJFeGVjdXRhYmxl
QWxsb2NhdG9yLmgiCisjaW5jbHVkZSAiTExJbnREYXRhLmgiCiAjaW5jbHVkZSA8d3RmL0RhdGFM
b2cuaD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIu
aD4KQEAgLTI4OSwxMCArMjkwLDEzIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIHJlc3VsdDsK
ICAgICB9CiAKLSAgICBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIGNyZWF0ZUxMSW50Q29k
ZVB0cih2b2lkICgqZnVuY3Rpb24pKCkpCisjaWYgRU5BQkxFKExMSU5UKQorICAgIHN0YXRpYyBN
YWNyb0Fzc2VtYmxlckNvZGVQdHIgY3JlYXRlTExJbnRDb2RlUHRyKExMSW50Q29kZSBjb2RlSWQp
CiAgICAgewotICAgICAgICByZXR1cm4gY3JlYXRlRnJvbUV4ZWN1dGFibGVBZGRyZXNzKGJpdHdp
c2VfY2FzdDx2b2lkKj4oZnVuY3Rpb24pKTsKKyAgICAgICAgcmV0dXJuIGNyZWF0ZUZyb21FeGVj
dXRhYmxlQWRkcmVzcyhMTEludDo6Z2V0Q29kZVB0cihjb2RlSWQpKTsKICAgICB9CisjZW5kaWYK
KwogICAgIGV4cGxpY2l0IE1hY3JvQXNzZW1ibGVyQ29kZVB0cihSZXR1cm5BZGRyZXNzUHRyIHJh
KQogICAgICAgICA6IG1fdmFsdWUocmEudmFsdWUoKSkKICAgICB7CkBAIC0zNTMsMTIgKzM1Nywx
NCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBNYWNyb0Fzc2VtYmxlckNvZGVSZWYoY29kZVB0
cik7CiAgICAgfQogICAgIAorI2lmIEVOQUJMRShMTElOVCkKICAgICAvLyBIZWxwZXIgZm9yIGNy
ZWF0aW5nIHNlbGYtbWFuYWdlZCBjb2RlIHJlZnMgZnJvbSBMTEludC4KLSAgICBzdGF0aWMgTWFj
cm9Bc3NlbWJsZXJDb2RlUmVmIGNyZWF0ZUxMSW50Q29kZVJlZih2b2lkICgqZnVuY3Rpb24pKCkp
CisgICAgc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBjcmVhdGVMTEludENvZGVSZWYoTExJ
bnRDb2RlIGNvZGVJZCkKICAgICB7Ci0gICAgICAgIHJldHVybiBjcmVhdGVTZWxmTWFuYWdlZENv
ZGVSZWYoTWFjcm9Bc3NlbWJsZXJDb2RlUHRyOjpjcmVhdGVGcm9tRXhlY3V0YWJsZUFkZHJlc3Mo
Yml0d2lzZV9jYXN0PHZvaWQqPihmdW5jdGlvbikpKTsKKyAgICAgICAgcmV0dXJuIGNyZWF0ZVNl
bGZNYW5hZ2VkQ29kZVJlZihNYWNyb0Fzc2VtYmxlckNvZGVQdHI6OmNyZWF0ZUZyb21FeGVjdXRh
YmxlQWRkcmVzcyhMTEludDo6Z2V0Q29kZVB0cihjb2RlSWQpKSk7CiAgICAgfQotICAgIAorI2Vu
ZGlmCisKICAgICBFeGVjdXRhYmxlTWVtb3J5SGFuZGxlKiBleGVjdXRhYmxlTWVtb3J5KCkgY29u
c3QKICAgICB7CiAgICAgICAgIHJldHVybiBtX2V4ZWN1dGFibGVNZW1vcnkuZ2V0KCk7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAkocmV2aXNp
b24gMTI2OTc1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTI2MTQsNyArMjYxNCw3IEBAIEluc3RydWN0aW9uKiBDb2Rl
QmxvY2s6OmFkanVzdFBDSWZBdENhbGwKICAgICBvcGNvZGVMZW5ndGggPSBPUENPREVfTEVOR1RI
KG9wX2NhbGxfdmFyYXJncyk7CiAgICAgYWRqdXN0ZWRQQyA9IHBvdGVudGlhbFJldHVyblBDIC0g
b3Bjb2RlTGVuZ3RoOwogICAgIGlmICgocmV0dXJuUENPZmZzZXQgPj0gb3Bjb2RlTGVuZ3RoKQot
ICAgICAgICAmJiAoYWRqdXN0ZWRQQy0+dS5wb2ludGVyID09IGJpdHdpc2VfY2FzdDx2b2lkKj4o
bGxpbnRfb3BfY2FsbF92YXJhcmdzKSkpIHsKKyAgICAgICAgJiYgKGFkanVzdGVkUEMtPnUucG9p
bnRlciA9PSBMTEludDo6Z2V0Q29kZVB0cihsbGludF9vcF9jYWxsX3ZhcmFyZ3MpKSkgewogICAg
ICAgICByZXR1cm4gYWRqdXN0ZWRQQzsKICAgICB9CiAKQEAgLTI2MjIsOSArMjYyMiw5IEBAIElu
c3RydWN0aW9uKiBDb2RlQmxvY2s6OmFkanVzdFBDSWZBdENhbGwKICAgICBvcGNvZGVMZW5ndGgg
PSBPUENPREVfTEVOR1RIKG9wX2NhbGwpOwogICAgIGFkanVzdGVkUEMgPSBwb3RlbnRpYWxSZXR1
cm5QQyAtIG9wY29kZUxlbmd0aDsKICAgICBpZiAoKHJldHVyblBDT2Zmc2V0ID49IG9wY29kZUxl
bmd0aCkKLSAgICAgICAgJiYgKGFkanVzdGVkUEMtPnUucG9pbnRlciA9PSBiaXR3aXNlX2Nhc3Q8
dm9pZCo+KGxsaW50X29wX2NhbGwpCi0gICAgICAgICAgICB8fCBhZGp1c3RlZFBDLT51LnBvaW50
ZXIgPT0gYml0d2lzZV9jYXN0PHZvaWQqPihsbGludF9vcF9jb25zdHJ1Y3QpCi0gICAgICAgICAg
ICB8fCBhZGp1c3RlZFBDLT51LnBvaW50ZXIgPT0gYml0d2lzZV9jYXN0PHZvaWQqPihsbGludF9v
cF9jYWxsX2V2YWwpKSkgeworICAgICAgICAmJiAoYWRqdXN0ZWRQQy0+dS5wb2ludGVyID09IExM
SW50OjpnZXRDb2RlUHRyKGxsaW50X29wX2NhbGwpCisgICAgICAgICAgICB8fCBhZGp1c3RlZFBD
LT51LnBvaW50ZXIgPT0gTExJbnQ6OmdldENvZGVQdHIobGxpbnRfb3BfY29uc3RydWN0KQorICAg
ICAgICAgICAgfHwgYWRqdXN0ZWRQQy0+dS5wb2ludGVyID09IExMSW50OjpnZXRDb2RlUHRyKGxs
aW50X29wX2NhbGxfZXZhbCkpKSB7CiAgICAgICAgIHJldHVybiBhZGp1c3RlZFBDOwogICAgIH0K
IApAQCAtMjYzNiw4ICsyNjM2LDggQEAgSW5zdHJ1Y3Rpb24qIENvZGVCbG9jazo6YWRqdXN0UENJ
ZkF0Q2FsbAogdW5zaWduZWQgQ29kZUJsb2NrOjpieXRlY29kZU9mZnNldChFeGVjU3RhdGUqIGV4
ZWMsIFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcykKIHsKICNpZiBFTkFCTEUoTExJTlQp
Ci0gICAgaWYgKHJldHVybkFkZHJlc3MudmFsdWUoKSA+PSBiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZs
bGludF9iZWdpbikKLSAgICAgICAgJiYgcmV0dXJuQWRkcmVzcy52YWx1ZSgpIDw9IGJpdHdpc2Vf
Y2FzdDx2b2lkKj4oJmxsaW50X2VuZCkpIHsKKyAgICBpZiAocmV0dXJuQWRkcmVzcy52YWx1ZSgp
ID49IExMSW50OjpnZXRDb2RlUHRyKGxsaW50X2JlZ2luKQorICAgICAgICAmJiByZXR1cm5BZGRy
ZXNzLnZhbHVlKCkgPD0gTExJbnQ6OmdldENvZGVQdHIobGxpbnRfZW5kKSkgewogICAgICAgICBB
U1NFUlQoZXhlYy0+Y29kZUJsb2NrKCkpOwogICAgICAgICBBU1NFUlQoZXhlYy0+Y29kZUJsb2Nr
KCkgPT0gdGhpcyk7CiAgICAgICAgIEFTU0VSVChKSVRDb2RlOjppc0Jhc2VsaW5lQ29kZShnZXRK
SVRUeXBlKCkpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PcGNvZGUu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT3Bjb2RlLmgJ
KHJldmlzaW9uIDEyNjk3NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PcGNv
ZGUuaAkod29ya2luZyBjb3B5KQpAQCAtMjI2LDEyICsyMjYsOCBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAjdW5kZWYgVkVSSUZZX09QQ09ERV9JRAogCiAjaWYgRU5BQkxFKENPTVBVVEVEX0dPVE9f
Q0xBU1NJQ19JTlRFUlBSRVRFUikgfHwgRU5BQkxFKExMSU5UKQotI2lmIENPTVBJTEVSKFJWQ1Qp
IHx8IENPTVBJTEVSKElOVEVMKQogICAgIHR5cGVkZWYgdm9pZCogT3Bjb2RlOwogI2Vsc2UKLSAg
ICB0eXBlZGVmIGNvbnN0IHZvaWQqIE9wY29kZTsKLSNlbmRpZgotI2Vsc2UKICAgICB0eXBlZGVm
IE9wY29kZUlEIE9wY29kZTsKICNlbmRpZgogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvUmVzb2x2ZUdsb2JhbFN0YXR1cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Jlc29sdmVHbG9iYWxTdGF0dXMuY3BwCShyZXZpc2lvbiAx
MjY5NzUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUmVzb2x2ZUdsb2JhbFN0
YXR1cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUyLDggKzUyLDggQEAgc3RhdGljIFJlc29sdmVH
bG9iYWxTdGF0dXMgY29tcHV0ZUZvckxMSQogewogI2lmIEVOQUJMRShMTElOVCkKICAgICBJbnN0
cnVjdGlvbiogaW5zdHJ1Y3Rpb24gPSBjb2RlQmxvY2stPmluc3RydWN0aW9ucygpLmJlZ2luKCkg
KyBieXRlY29kZUluZGV4OwotICAgIAotICAgIEFTU0VSVChpbnN0cnVjdGlvblswXS51Lm9wY29k
ZSA9PSBsbGludF9vcF9yZXNvbHZlX2dsb2JhbCk7CisKKyAgICBBU1NFUlQoaW5zdHJ1Y3Rpb25b
MF0udS5vcGNvZGUgPT0gTExJbnQ6OmdldE9wY29kZShvcF9yZXNvbHZlX2dsb2JhbCkpOwogICAg
IAogICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gaW5zdHJ1Y3Rpb25bM10udS5zdHJ1Y3R1cmUu
Z2V0KCk7CiAgICAgaWYgKCFzdHJ1Y3R1cmUpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAkocmV2aXNp
b24gMTI2OTc1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29k
ZUdlbmVyYXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5Nyw3ICsxOTcsNyBAQCBKU09iamVj
dCogQnl0ZWNvZGVHZW5lcmF0b3I6OmdlbmVyYXRlKCkKICNpZiBFTkFCTEUoSklUKQogICAgICAg
ICAgICAgLAogI2lmIEVOQUJMRShMTElOVCkKLSAgICAgICAgICAgIENvZGVMb2NhdGlvbkxhYmVs
KE1hY3JvQXNzZW1ibGVyQ29kZVB0cjo6Y3JlYXRlRnJvbUV4ZWN1dGFibGVBZGRyZXNzKGJpdHdp
c2VfY2FzdDx2b2lkKj4oJmxsaW50X29wX2NhdGNoKSkpCisgICAgICAgICAgICBDb2RlTG9jYXRp
b25MYWJlbChNYWNyb0Fzc2VtYmxlckNvZGVQdHI6OmNyZWF0ZUZyb21FeGVjdXRhYmxlQWRkcmVz
cyhMTEludDo6Z2V0Q29kZVB0cihsbGludF9vcF9jYXRjaCkpKQogI2Vsc2UKICAgICAgICAgICAg
IENvZGVMb2NhdGlvbkxhYmVsKCkKICNlbmRpZgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCShyZXZpc2lvbiAxMjY5NzUpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yODQsOSArMjg0LDggQEAgSW50ZXJwcmV0ZXI6On5JbnRlcnByZXRlcigp
CiAjZW5kaWYKIH0KIAotdm9pZCBJbnRlcnByZXRlcjo6aW5pdGlhbGl6ZShMTEludDo6RGF0YSog
bGxpbnREYXRhLCBib29sIGNhblVzZUpJVCkKK3ZvaWQgSW50ZXJwcmV0ZXI6OmluaXRpYWxpemUo
Ym9vbCBjYW5Vc2VKSVQpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKGxsaW50RGF0YSk7CiAgICAgVU5V
U0VEX1BBUkFNKGNhblVzZUpJVCk7CiAKICAgICAvLyBJZiB3ZSBoYXZlIExMSW50LCB0aGVuIHdl
IHNob3VsZG4ndCBiZSBidWlsZGluZyBhbnkga2luZCBvZiBjbGFzc2ljIGludGVycHJldGVyLgpA
QCAtMjk1LDcgKzI5NCw3IEBAIHZvaWQgSW50ZXJwcmV0ZXI6OmluaXRpYWxpemUoTExJbnQ6OkRh
dGEKICNlbmRpZgogCiAjaWYgRU5BQkxFKExMSU5UKQotICAgIG1fb3Bjb2RlVGFibGUgPSBsbGlu
dERhdGEtPm9wY29kZU1hcCgpOworICAgIG1fb3Bjb2RlVGFibGUgPSBMTEludDo6b3Bjb2RlTWFw
KCk7CiAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBudW1PcGNvZGVJRHM7ICsraSkKICAgICAgICAg
bV9vcGNvZGVJRFRhYmxlLmFkZChtX29wY29kZVRhYmxlW2ldLCBzdGF0aWNfY2FzdDxPcGNvZGVJ
RD4oaSkpOwogICAgIG1fY2xhc3NpY0VuYWJsZWQgPSBmYWxzZTsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5oCShyZXZpc2lvbiAxMjY5
NzUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaAko
d29ya2luZyBjb3B5KQpAQCAtMTg3LDcgKzE4Nyw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICBJbnRlcnByZXRlcigpOwogICAgICAgICB+SW50ZXJwcmV0ZXIoKTsKICAgICAgICAgCi0gICAg
ICAgIHZvaWQgaW5pdGlhbGl6ZShMTEludDo6RGF0YSosIGJvb2wgY2FuVXNlSklUKTsKKyAgICAg
ICAgdm9pZCBpbml0aWFsaXplKGJvb2wgY2FuVXNlSklUKTsKIAogICAgICAgICBSZWdpc3RlckZp
bGUmIHJlZ2lzdGVyRmlsZSgpIHsgcmV0dXJuIG1fcmVnaXN0ZXJGaWxlOyB9CiAgICAgICAgIApJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRFeGNlcHRpb25zLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVEV4Y2VwdGlvbnMuY3BwCShyZXZp
c2lvbiAxMjY5NzUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVEV4Y2VwdGlvbnMu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MCw3ICs1MCw3IEBAIEV4Y2VwdGlvbkhhbmRsZXIgZ2Vu
ZXJpY1Rocm93KEpTR2xvYmFsRGEKICAgICAgICAgY2F0Y2hSb3V0aW5lID0gaGFuZGxlci0+bmF0
aXZlQ29kZS5leGVjdXRhYmxlQWRkcmVzcygpOwogICAgICAgICBjYXRjaFBDRm9ySW50ZXJwcmV0
ZXIgPSAmY2FsbEZyYW1lLT5jb2RlQmxvY2soKS0+aW5zdHJ1Y3Rpb25zKClbaGFuZGxlci0+dGFy
Z2V0XTsKICAgICB9IGVsc2UKLSAgICAgICAgY2F0Y2hSb3V0aW5lID0gRnVuY3Rpb25QdHIoY3Rp
T3BUaHJvd05vdENhdWdodCkudmFsdWUoKTsKKyAgICAgICAgY2F0Y2hSb3V0aW5lID0gRnVuY3Rp
b25QdHIoTExJbnQ6OmdldENvZGVQdHIoY3RpT3BUaHJvd05vdENhdWdodCkpLnZhbHVlKCk7CiAg
ICAgCiAgICAgZ2xvYmFsRGF0YS0+Y2FsbEZyYW1lRm9yVGhyb3cgPSBjYWxsRnJhbWU7CiAgICAg
Z2xvYmFsRGF0YS0+dGFyZ2V0TWFjaGluZVBDRm9yVGhyb3cgPSBjYXRjaFJvdXRpbmU7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmNwcAkocmV2aXNpb24gMTI2
OTc1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RGF0YS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTMxLDIwICszMSwyOSBAQAogI2luY2x1ZGUgIkJ5dGVjb2RlQ29udmVudGlv
bnMuaCIKICNpbmNsdWRlICJDb2RlVHlwZS5oIgogI2luY2x1ZGUgIkluc3RydWN0aW9uLmgiCi0j
aW5jbHVkZSAiTG93TGV2ZWxJbnRlcnByZXRlci5oIgogI2luY2x1ZGUgIk9wY29kZS5oIgogCiBu
YW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIExMSW50IHsKIAotRGF0YTo6RGF0YSgpCi0gICAgOiBt
X2V4Y2VwdGlvbkluc3RydWN0aW9ucyhuZXcgSW5zdHJ1Y3Rpb25bbWF4T3Bjb2RlTGVuZ3RoICsg
MV0pCi0gICAgLCBtX29wY29kZU1hcChuZXcgT3Bjb2RlW251bU9wY29kZUlEc10pCitib29sIERh
dGE6OnNfaXNJbml0aWFsaXplZCA9IGZhbHNlOworSW5zdHJ1Y3Rpb24qIERhdGE6OnNfZXhjZXB0
aW9uSW5zdHJ1Y3Rpb25zID0gMDsKK09wY29kZSogRGF0YTo6c19vcGNvZGVNYXAgPSAwOworCit2
b2lkIGluaXRpYWxpemUoKQogewotICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbWF4T3Bjb2RlTGVu
Z3RoICsgMTsgKytpKQotICAgICAgICBtX2V4Y2VwdGlvbkluc3RydWN0aW9uc1tpXS51LnBvaW50
ZXIgPSBiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF90aHJvd19mcm9tX3Nsb3dfcGF0aF90cmFt
cG9saW5lKTsKLSNkZWZpbmUgT1BDT0RFX0VOVFJZKG9wY29kZSwgbGVuZ3RoKSBtX29wY29kZU1h
cFtvcGNvZGVdID0gYml0d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRfIyNvcGNvZGUpOwotICAgIEZP
Ul9FQUNIX09QQ09ERV9JRChPUENPREVfRU5UUlkpOwotI3VuZGVmIE9QQ09ERV9FTlRSWQorICAg
IGlmICghRGF0YTo6c19pc0luaXRpYWxpemVkKSB7CisgICAgICAgIERhdGE6OnNfZXhjZXB0aW9u
SW5zdHJ1Y3Rpb25zID0gbmV3IEluc3RydWN0aW9uW21heE9wY29kZUxlbmd0aCArIDFdOworICAg
ICAgICBEYXRhOjpzX29wY29kZU1hcCA9IG5ldyBPcGNvZGVbbnVtT3Bjb2RlSURzXTsKKworICAg
ICAgICBmb3IgKGludCBpID0gMDsgaSA8IG1heE9wY29kZUxlbmd0aCArIDE7ICsraSkKKyAgICAg
ICAgICAgIERhdGE6OnNfZXhjZXB0aW9uSW5zdHJ1Y3Rpb25zW2ldLnUucG9pbnRlciA9CisgICAg
ICAgICAgICAgICAgTExJbnQ6OmdldENvZGVQdHIobGxpbnRfdGhyb3dfZnJvbV9zbG93X3BhdGhf
dHJhbXBvbGluZSk7CisgICAgICAgICNkZWZpbmUgT1BDT0RFX0VOVFJZKG9wY29kZSwgbGVuZ3Ro
KSBcCisgICAgICAgICAgICBEYXRhOjpzX29wY29kZU1hcFtvcGNvZGVdID0gTExJbnQ6OmdldENv
ZGVQdHIobGxpbnRfIyNvcGNvZGUpOworICAgICAgICBGT1JfRUFDSF9PUENPREVfSUQoT1BDT0RF
X0VOVFJZKTsKKyAgICAgICAgI3VuZGVmIE9QQ09ERV9FTlRSWQorICAgICAgICBEYXRhOjpzX2lz
SW5pdGlhbGl6ZWQgPSB0cnVlOworICAgIH0KIH0KIAogI2lmIENPTVBJTEVSKENMQU5HKQpAQCAt
MTIwLDEyICsxMjksNiBAQCB2b2lkIERhdGE6OnBlcmZvcm1Bc3NlcnRpb25zKEpTR2xvYmFsRGF0
CiAjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcG9wCiAjZW5kaWYKIAotRGF0YTo6fkRhdGEoKQot
ewotICAgIGRlbGV0ZVtdIG1fZXhjZXB0aW9uSW5zdHJ1Y3Rpb25zOwotICAgIGRlbGV0ZVtdIG1f
b3Bjb2RlTWFwOwotfQotCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6TExJbnQKIAogI2VuZGlmIC8v
IEVOQUJMRShMTElOVCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludERh
dGEuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRh
LmgJKHJldmlzaW9uIDEyNjk3NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTElu
dERhdGEuaAkod29ya2luZyBjb3B5KQpAQCAtMjYsNiArMjYsNyBAQAogI2lmbmRlZiBMTEludERh
dGFfaAogI2RlZmluZSBMTEludERhdGFfaAogCisjaW5jbHVkZSAiSlNWYWx1ZS5oIgogI2luY2x1
ZGUgIk9wY29kZS5oIgogI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgogCkBAIC0zNCwzMCArMzUs
NjggQEAgbmFtZXNwYWNlIEpTQyB7CiBjbGFzcyBKU0dsb2JhbERhdGE7CiBzdHJ1Y3QgSW5zdHJ1
Y3Rpb247CiAKK3R5cGVkZWYgdm9pZCAoKkxMSW50Q29kZSkoKTsKKwogbmFtZXNwYWNlIExMSW50
IHsKIAogI2lmIEVOQUJMRShMTElOVCkKKwogY2xhc3MgRGF0YSB7CiBwdWJsaWM6Ci0gICAgRGF0
YSgpOwotICAgIH5EYXRhKCk7Ci0gICAgCi0gICAgdm9pZCBwZXJmb3JtQXNzZXJ0aW9ucyhKU0ds
b2JhbERhdGEmKTsKLSAgICAKLSAgICBJbnN0cnVjdGlvbiogZXhjZXB0aW9uSW5zdHJ1Y3Rpb25z
KCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX2V4Y2VwdGlvbkluc3RydWN0aW9uczsKLSAgICB9
Ci0gICAgCi0gICAgT3Bjb2RlKiBvcGNvZGVNYXAoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIG1f
b3Bjb2RlTWFwOwotICAgIH0KKyAgICBzdGF0aWMgdm9pZCBwZXJmb3JtQXNzZXJ0aW9ucyhKU0ds
b2JhbERhdGEmKTsKKwogcHJpdmF0ZToKLSAgICBJbnN0cnVjdGlvbiogbV9leGNlcHRpb25JbnN0
cnVjdGlvbnM7Ci0gICAgT3Bjb2RlKiBtX29wY29kZU1hcDsKKyAgICBzdGF0aWMgYm9vbCBzX2lz
SW5pdGlhbGl6ZWQ7CisgICAgc3RhdGljIEluc3RydWN0aW9uKiBzX2V4Y2VwdGlvbkluc3RydWN0
aW9uczsKKyAgICBzdGF0aWMgT3Bjb2RlKiBzX29wY29kZU1hcDsKKworICAgIGZyaWVuZCB2b2lk
IGluaXRpYWxpemUoKTsKKyAgICBmcmllbmQgYm9vbCBpc0luaXRpYWxpemVkKCk7CisgICAgZnJp
ZW5kIHZvaWQgc2V0SXNJbml0aWFsaXplZCgpOworCisgICAgZnJpZW5kIEluc3RydWN0aW9uKiBl
eGNlcHRpb25JbnN0cnVjdGlvbnMoKTsKKyAgICBmcmllbmQgT3Bjb2RlKiBvcGNvZGVNYXAoKTsK
KyAgICBmcmllbmQgT3Bjb2RlIGdldE9wY29kZShPcGNvZGVJRCk7CisgICAgZnJpZW5kIHZvaWQq
IGdldENvZGVQdHIoT3Bjb2RlSUQpOwogfTsKLSNlbHNlIC8vIEVOQUJMRShMTElOVCkKKwordm9p
ZCBpbml0aWFsaXplKCk7CisKK2lubGluZSBib29sIGlzSW5pdGlhbGl6ZWQoKQoreworICAgIHJl
dHVybiBEYXRhOjpzX2lzSW5pdGlhbGl6ZWQ7Cit9CisKK2lubGluZSB2b2lkIHNldElzSW5pdGlh
bGl6ZWQoKQoreworICAgIERhdGE6OnNfaXNJbml0aWFsaXplZCA9IHRydWU7Cit9CisKK2lubGlu
ZSBJbnN0cnVjdGlvbiogZXhjZXB0aW9uSW5zdHJ1Y3Rpb25zKCkKK3sKKyAgICByZXR1cm4gRGF0
YTo6c19leGNlcHRpb25JbnN0cnVjdGlvbnM7Cit9CisgICAgCitpbmxpbmUgT3Bjb2RlKiBvcGNv
ZGVNYXAoKQoreworICAgIHJldHVybiBEYXRhOjpzX29wY29kZU1hcDsKK30KKworaW5saW5lIE9w
Y29kZSBnZXRPcGNvZGUoT3Bjb2RlSUQgaWQpCit7CisjaWYgSEFWRShDT01QVVRFRF9HT1RPKQor
ICAgIHJldHVybiBEYXRhOjpzX29wY29kZU1hcFtpZF07CisjZWxzZQorICAgIHJldHVybiBzdGF0
aWNfY2FzdDxPcGNvZGU+KGlkKTsKKyNlbmRpZgorfQorCitBTFdBWVNfSU5MSU5FIHZvaWQqIGdl
dENvZGVQdHIoT3Bjb2RlSUQgaWQpCit7CisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9p
ZCo+KGdldE9wY29kZShpZCkpOworfQorCisjZWxzZSAvLyAhRU5BQkxFKExMSU5UKQogCiAjaWYg
Q09NUElMRVIoQ0xBTkcpCiAjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcHVzaApAQCAtNjYsMjYg
KzEwNSwzMCBAQCBwcml2YXRlOgogCiBjbGFzcyBEYXRhIHsKIHB1YmxpYzoKLSAgICB2b2lkIHBl
cmZvcm1Bc3NlcnRpb25zKEpTR2xvYmFsRGF0YSYpIHsgfQotCi0gICAgSW5zdHJ1Y3Rpb24qIGV4
Y2VwdGlvbkluc3RydWN0aW9ucygpCi0gICAgewotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotICAgIAotICAgIE9wY29kZSogb3Bjb2RlTWFw
KCkKLSAgICB7Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm4g
MDsKLSAgICB9CisgICAgc3RhdGljIHZvaWQgcGVyZm9ybUFzc2VydGlvbnMoSlNHbG9iYWxEYXRh
JikgeyB9CiB9OwogCiAjaWYgQ09NUElMRVIoQ0xBTkcpCiAjcHJhZ21hIGNsYW5nIGRpYWdub3N0
aWMgcG9wCiAjZW5kaWYKIAotI2VuZGlmIC8vIEVOQUJMRShMTElOVCkKKyNlbmRpZiAvLyAhRU5B
QkxFKExMSU5UKQorCitBTFdBWVNfSU5MSU5FIHZvaWQqIGdldE9wY29kZSh2b2lkIGxsaW50T3Bj
b2RlKCkpCit7CisgICAgcmV0dXJuIGJpdHdpc2VfY2FzdDx2b2lkKj4obGxpbnRPcGNvZGUpOwor
fQorCitBTFdBWVNfSU5MSU5FIHZvaWQqIGdldENvZGVQdHIodm9pZCBnbHVlSGVscGVyKCkpCit7
CisgICAgcmV0dXJuIGJpdHdpc2VfY2FzdDx2b2lkKj4oZ2x1ZUhlbHBlcik7Cit9CisKK0FMV0FZ
U19JTkxJTkUgdm9pZCogZ2V0Q29kZVB0cihKU0M6OkVuY29kZWRKU1ZhbHVlIGdsdWVIZWxwZXIo
KSkKK3sKKyAgICByZXR1cm4gYml0d2lzZV9jYXN0PHZvaWQqPihnbHVlSGVscGVyKTsKK30KKwog
CiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6TExJbnQKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xMSW50RXhjZXB0aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xMSW50RXhjZXB0aW9ucy5jcHAJKHJldmlzaW9uIDEyNjk3NSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEV4Y2VwdGlvbnMuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC02MCw3ICs2MCw4IEBAIHZvaWQgaW50ZXJwcmV0ZXJUaHJvd0luQ2FsbGVyKEV4
ZWNTdGF0ZSoKIAogSW5zdHJ1Y3Rpb24qIHJldHVyblRvVGhyb3dGb3JUaHJvd25FeGNlcHRpb24o
RXhlY1N0YXRlKiBleGVjKQogewotICAgIHJldHVybiBleGVjLT5nbG9iYWxEYXRhKCkubGxpbnRE
YXRhLmV4Y2VwdGlvbkluc3RydWN0aW9ucygpOworICAgIFVOVVNFRF9QQVJBTShleGVjKTsKKyAg
ICByZXR1cm4gTExJbnQ6OmV4Y2VwdGlvbkluc3RydWN0aW9ucygpOwogfQogCiBJbnN0cnVjdGlv
biogcmV0dXJuVG9UaHJvdyhFeGVjU3RhdGUqIGV4ZWMsIEluc3RydWN0aW9uKiBwYykKQEAgLTcz
LDcgKzc0LDcgQEAgSW5zdHJ1Y3Rpb24qIHJldHVyblRvVGhyb3coRXhlY1N0YXRlKiBleAogICAg
IGZpeHVwUENmb3JFeGNlcHRpb25JZk5lZWRlZChleGVjKTsKICAgICBnZW5lcmljVGhyb3coZ2xv
YmFsRGF0YSwgZXhlYywgZ2xvYmFsRGF0YS0+ZXhjZXB0aW9uLCBwYyAtIGV4ZWMtPmNvZGVCbG9j
aygpLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpKTsKICAgICAKLSAgICByZXR1cm4gZ2xvYmFsRGF0
YS0+bGxpbnREYXRhLmV4Y2VwdGlvbkluc3RydWN0aW9ucygpOworICAgIHJldHVybiBMTEludDo6
ZXhjZXB0aW9uSW5zdHJ1Y3Rpb25zKCk7CiB9CiAKIHZvaWQqIGNhbGxUb1Rocm93KEV4ZWNTdGF0
ZSogZXhlYywgSW5zdHJ1Y3Rpb24qIHBjKQpAQCAtODUsOCArODYsOCBAQCB2b2lkKiBjYWxsVG9U
aHJvdyhFeGVjU3RhdGUqIGV4ZWMsIEluc3RyCiAjZW5kaWYKICAgICBmaXh1cFBDZm9yRXhjZXB0
aW9uSWZOZWVkZWQoZXhlYyk7CiAgICAgZ2VuZXJpY1Rocm93KGdsb2JhbERhdGEsIGV4ZWMsIGds
b2JhbERhdGEtPmV4Y2VwdGlvbiwgcGMgLSBleGVjLT5jb2RlQmxvY2soKS0+aW5zdHJ1Y3Rpb25z
KCkuYmVnaW4oKSk7Ci0gICAgCi0gICAgcmV0dXJuIGJpdHdpc2VfY2FzdDx2b2lkKj4oJmxsaW50
X3Rocm93X2R1cmluZ19jYWxsX3RyYW1wb2xpbmUpOworCisgICAgcmV0dXJuIExMSW50OjpnZXRD
b2RlUHRyKGxsaW50X3Rocm93X2R1cmluZ19jYWxsX3RyYW1wb2xpbmUpOwogfQogCiB9IH0gLy8g
bmFtZXNwYWNlIEpTQzo6TExJbnQKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
TEludFNsb3dQYXRocy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xMSW50U2xvd1BhdGhzLmNwcAkocmV2aXNpb24gMTI2OTc1KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODcw
LDEwICs4NzAsMTAgQEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2dldF9ieV9pZAog
ICAgICAgICAgICAgcGNbNF0udS5zdHJ1Y3R1cmUuc2V0KAogICAgICAgICAgICAgICAgIGdsb2Jh
bERhdGEsIGNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCksIHN0cnVjdHVyZSk7CiAgICAgICAg
ICAgICBpZiAoaXNJbmxpbmVPZmZzZXQoc2xvdC5jYWNoZWRPZmZzZXQoKSkpIHsKLSAgICAgICAg
ICAgICAgICBwY1swXS51Lm9wY29kZSA9IGJpdHdpc2VfY2FzdDx2b2lkKj4oJmxsaW50X29wX2dl
dF9ieV9pZCk7CisgICAgICAgICAgICAgICAgcGNbMF0udS5vcGNvZGUgPSBMTEludDo6Z2V0T3Bj
b2RlKGxsaW50X29wX2dldF9ieV9pZCk7CiAgICAgICAgICAgICAgICAgcGNbNV0udS5vcGVyYW5k
ID0gb2Zmc2V0SW5JbmxpbmVTdG9yYWdlKHNsb3QuY2FjaGVkT2Zmc2V0KCkpICogc2l6ZW9mKEpT
VmFsdWUpICsgSlNPYmplY3Q6Om9mZnNldE9mSW5saW5lU3RvcmFnZSgpOwogICAgICAgICAgICAg
fSBlbHNlIHsKLSAgICAgICAgICAgICAgICBwY1swXS51Lm9wY29kZSA9IGJpdHdpc2VfY2FzdDx2
b2lkKj4oJmxsaW50X29wX2dldF9ieV9pZF9vdXRfb2ZfbGluZSk7CisgICAgICAgICAgICAgICAg
cGNbMF0udS5vcGNvZGUgPSBMTEludDo6Z2V0T3Bjb2RlKGxsaW50X29wX2dldF9ieV9pZF9vdXRf
b2ZfbGluZSk7CiAgICAgICAgICAgICAgICAgcGNbNV0udS5vcGVyYW5kID0gb2Zmc2V0SW5PdXRP
ZkxpbmVTdG9yYWdlKHNsb3QuY2FjaGVkT2Zmc2V0KCkpICogc2l6ZW9mKEpTVmFsdWUpOwogICAg
ICAgICAgICAgfQogICAgICAgICB9CkBAIC05MjYsNyArOTI2LDcgQEAgTExJTlRfU0xPV19QQVRI
X0RFQ0woc2xvd19wYXRoX3B1dF9ieV9pZAogICAgICAgICAgICAgICAgICAgICAKICAgICAgICAg
ICAgICAgICAgICAgLy8gVGhpcyBpcyBuZWVkZWQgYmVjYXVzZSBzb21lIG9mIHRoZSBtZXRob2Rz
IHdlIGNhbGwKICAgICAgICAgICAgICAgICAgICAgLy8gYmVsb3cgbWF5IEdDLgotICAgICAgICAg
ICAgICAgICAgICBwY1swXS51Lm9wY29kZSA9IGJpdHdpc2VfY2FzdDx2b2lkKj4oJmxsaW50X29w
X3B1dF9ieV9pZCk7CisgICAgICAgICAgICAgICAgICAgIHBjWzBdLnUub3Bjb2RlID0gTExJbnQ6
OmdldE9wY29kZShsbGludF9vcF9wdXRfYnlfaWQpOwogCiAgICAgICAgICAgICAgICAgICAgIG5v
cm1hbGl6ZVByb3RvdHlwZUNoYWluKGV4ZWMsIGJhc2VDZWxsKTsKICAgICAgICAgICAgICAgICAg
ICAgCkBAIC05NDYsMjQgKzk0NiwyNCBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhf
cHV0X2J5X2lkCiAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICBpZiAo
cGNbOF0udS5vcGVyYW5kKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNJbmxpbmVP
ZmZzZXQoc2xvdC5jYWNoZWRPZmZzZXQoKSkpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
cGNbMF0udS5vcGNvZGUgPSBiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF9vcF9wdXRfYnlfaWRf
dHJhbnNpdGlvbl9kaXJlY3QpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBjWzBdLnUu
b3Bjb2RlID0gTExJbnQ6OmdldE9wY29kZShsbGludF9vcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9k
aXJlY3QpOwogICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHBjWzBdLnUub3Bjb2RlID0gYml0d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRfb3Bf
cHV0X2J5X2lkX3RyYW5zaXRpb25fZGlyZWN0X291dF9vZl9saW5lKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBwY1swXS51Lm9wY29kZSA9IExMSW50OjpnZXRPcGNvZGUobGxpbnRfb3Bf
cHV0X2J5X2lkX3RyYW5zaXRpb25fZGlyZWN0X291dF9vZl9saW5lKTsKICAgICAgICAgICAgICAg
ICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc0lubGluZU9mZnNl
dChzbG90LmNhY2hlZE9mZnNldCgpKSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBwY1sw
XS51Lm9wY29kZSA9IGJpdHdpc2VfY2FzdDx2b2lkKj4oJmxsaW50X29wX3B1dF9ieV9pZF90cmFu
c2l0aW9uX25vcm1hbCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGNbMF0udS5vcGNv
ZGUgPSBMTEludDo6Z2V0T3Bjb2RlKGxsaW50X29wX3B1dF9ieV9pZF90cmFuc2l0aW9uX25vcm1h
bCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcGNbMF0udS5vcGNvZGUgPSBiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF9vcF9wdXRf
YnlfaWRfdHJhbnNpdGlvbl9ub3JtYWxfb3V0X29mX2xpbmUpOworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHBjWzBdLnUub3Bjb2RlID0gTExJbnQ6OmdldE9wY29kZShsbGludF9vcF9wdXRf
YnlfaWRfdHJhbnNpdGlvbl9ub3JtYWxfb3V0X29mX2xpbmUpOwogICAgICAgICAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAg
ICAgICBwY1s0XS51LnN0cnVjdHVyZS5zZXQoCiAgICAgICAgICAgICAgICAgICAgIGdsb2JhbERh
dGEsIGNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCksIHN0cnVjdHVyZSk7CiAgICAgICAgICAg
ICAgICAgaWYgKGlzSW5saW5lT2Zmc2V0KHNsb3QuY2FjaGVkT2Zmc2V0KCkpKSB7Ci0gICAgICAg
ICAgICAgICAgICAgIHBjWzBdLnUub3Bjb2RlID0gYml0d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRf
b3BfcHV0X2J5X2lkKTsKKyAgICAgICAgICAgICAgICAgICAgcGNbMF0udS5vcGNvZGUgPSBMTElu
dDo6Z2V0T3Bjb2RlKGxsaW50X29wX3B1dF9ieV9pZCk7CiAgICAgICAgICAgICAgICAgICAgIHBj
WzVdLnUub3BlcmFuZCA9IG9mZnNldEluSW5saW5lU3RvcmFnZShzbG90LmNhY2hlZE9mZnNldCgp
KSAqIHNpemVvZihKU1ZhbHVlKSArIEpTT2JqZWN0OjpvZmZzZXRPZklubGluZVN0b3JhZ2UoKTsK
ICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICBwY1swXS51Lm9w
Y29kZSA9IGJpdHdpc2VfY2FzdDx2b2lkKj4oJmxsaW50X29wX3B1dF9ieV9pZF9vdXRfb2ZfbGlu
ZSk7CisgICAgICAgICAgICAgICAgICAgIHBjWzBdLnUub3Bjb2RlID0gTExJbnQ6OmdldE9wY29k
ZShsbGludF9vcF9wdXRfYnlfaWRfb3V0X29mX2xpbmUpOwogICAgICAgICAgICAgICAgICAgICBw
Y1s1XS51Lm9wZXJhbmQgPSBvZmZzZXRJbk91dE9mTGluZVN0b3JhZ2Uoc2xvdC5jYWNoZWRPZmZz
ZXQoKSkgKiBzaXplb2YoSlNWYWx1ZSk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg
fQpAQCAtMTI5NSw3ICsxMjk1LDcgQEAgc3RhdGljIFNsb3dQYXRoUmV0dXJuVHlwZSBoYW5kbGVI
b3N0Q2FsbAogICAgICAgICAgICAgZXhlY0NhbGxlZS0+c2V0Q2FsbGVlKGFzT2JqZWN0KGNhbGxl
ZSkpOwogICAgICAgICAgICAgZ2xvYmFsRGF0YS5ob3N0Q2FsbFJldHVyblZhbHVlID0gSlNWYWx1
ZTo6ZGVjb2RlKGNhbGxEYXRhLm5hdGl2ZS5mdW5jdGlvbihleGVjQ2FsbGVlKSk7CiAgICAgICAg
ICAgICAKLSAgICAgICAgICAgIExMSU5UX0NBTExfUkVUVVJOKGV4ZWNDYWxsZWUsIHBjLCByZWlu
dGVycHJldF9jYXN0PHZvaWQqPihnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSk7CisgICAgICAgICAg
ICBMTElOVF9DQUxMX1JFVFVSTihleGVjQ2FsbGVlLCBwYywgTExJbnQ6OmdldENvZGVQdHIoZ2V0
SG9zdENhbGxSZXR1cm5WYWx1ZSkpOwogICAgICAgICB9CiAgICAgICAgIAogI2lmIExMSU5UX1NM
T1dfUEFUSF9UUkFDSU5HCkBAIC0xMzE4LDcgKzEzMTgsNyBAQCBzdGF0aWMgU2xvd1BhdGhSZXR1
cm5UeXBlIGhhbmRsZUhvc3RDYWxsCiAgICAgICAgIGV4ZWNDYWxsZWUtPnNldENhbGxlZShhc09i
amVjdChjYWxsZWUpKTsKICAgICAgICAgZ2xvYmFsRGF0YS5ob3N0Q2FsbFJldHVyblZhbHVlID0g
SlNWYWx1ZTo6ZGVjb2RlKGNvbnN0cnVjdERhdGEubmF0aXZlLmZ1bmN0aW9uKGV4ZWNDYWxsZWUp
KTsKIAotICAgICAgICBMTElOVF9DQUxMX1JFVFVSTihleGVjQ2FsbGVlLCBwYywgcmVpbnRlcnBy
ZXRfY2FzdDx2b2lkKj4oZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkpOworICAgICAgICBMTElOVF9D
QUxMX1JFVFVSTihleGVjQ2FsbGVlLCBwYywgTExJbnQ6OmdldENvZGVQdHIoZ2V0SG9zdENhbGxS
ZXR1cm5WYWx1ZSkpOwogICAgIH0KICAgICAKICNpZiBMTElOVF9TTE9XX1BBVEhfVFJBQ0lORwpA
QCAtMTQ0MSw3ICsxNDQxLDcgQEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2NhbGxf
ZXZhbAogICAgIGV4ZWNDYWxsZWUtPnNldENhbGxlckZyYW1lKGV4ZWMpOwogICAgIGV4ZWNDYWxs
ZWUtPnVuY2hlY2tlZFIoUmVnaXN0ZXJGaWxlOjpDYWxsZWUpID0gY2FsbGVlQXNWYWx1ZTsKICAg
ICBleGVjQ2FsbGVlLT5zZXRTY29wZUNoYWluKGV4ZWMtPnNjb3BlQ2hhaW4oKSk7Ci0gICAgZXhl
Y0NhbGxlZS0+c2V0UmV0dXJuUEMoYml0d2lzZV9jYXN0PEluc3RydWN0aW9uKj4oJmxsaW50X2dl
bmVyaWNfcmV0dXJuX3BvaW50KSk7CisgICAgZXhlY0NhbGxlZS0+c2V0UmV0dXJuUEMoTExJbnQ6
OmdldENvZGVQdHIobGxpbnRfZ2VuZXJpY19yZXR1cm5fcG9pbnQpKTsKICAgICBleGVjQ2FsbGVl
LT5zZXRDb2RlQmxvY2soMCk7CiAgICAgZXhlYy0+c2V0Q3VycmVudFZQQyhwYyArIE9QQ09ERV9M
RU5HVEgob3BfY2FsbF9ldmFsKSk7CiAgICAgCkBAIC0xNDQ5LDcgKzE0NDksNyBAQCBMTElOVF9T
TE9XX1BBVEhfREVDTChzbG93X3BhdGhfY2FsbF9ldmFsCiAgICAgICAgIHJldHVybiBzZXRVcENh
bGwoZXhlY0NhbGxlZSwgcGMsIENvZGVGb3JDYWxsLCBjYWxsZWVBc1ZhbHVlKTsKICAgICAKICAg
ICBnbG9iYWxEYXRhLmhvc3RDYWxsUmV0dXJuVmFsdWUgPSBldmFsKGV4ZWNDYWxsZWUpOwotICAg
IExMSU5UX0NBTExfUkVUVVJOKGV4ZWNDYWxsZWUsIHBjLCByZWludGVycHJldF9jYXN0PHZvaWQq
PihnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSk7CisgICAgTExJTlRfQ0FMTF9SRVRVUk4oZXhlY0Nh
bGxlZSwgcGMsIExMSW50OjpnZXRDb2RlUHRyKGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpKTsKIH0K
IAogTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3RlYXJfb2ZmX2FjdGl2YXRpb24pCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Jbml0aWFsaXplVGhyZWFkaW5nLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Jbml0aWFsaXpl
VGhyZWFkaW5nLmNwcAkocmV2aXNpb24gMTI2OTc1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSW5pdGlhbGl6ZVRocmVhZGluZy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1LDYg
KzM1LDcgQEAKICNpbmNsdWRlICJJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiSlNEYXRlTWF0aC5o
IgogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCisjaW5jbHVkZSAiTExpbnREYXRhLmgiCiAj
aW5jbHVkZSAiVVN0cmluZy5oIgogI2luY2x1ZGUgIldyaXRlQmFycmllci5oIgogI2luY2x1ZGUg
PHd0Zi9kdG9hLmg+CkBAIC02MSw2ICs2Miw5IEBAIHN0YXRpYyB2b2lkIGluaXRpYWxpemVUaHJl
YWRpbmdPbmNlKCkKICAgICBFeGVjdXRhYmxlQWxsb2NhdG9yOjppbml0aWFsaXplQWxsb2NhdG9y
KCk7CiAjZW5kaWYKICAgICBSZWdpc3RlckZpbGU6OmluaXRpYWxpemVUaHJlYWRpbmcoKTsKKyNp
ZiBFTkFCTEUoTExJTlQpCisgICAgTExJbnQ6OmluaXRpYWxpemUoKTsKKyNlbmRpZgogfQogCiB2
b2lkIGluaXRpYWxpemVUaHJlYWRpbmcoKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNHbG9iYWxEYXRhLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0dsb2JhbERhdGEuY3BwCShyZXZpc2lvbiAxMjY5NzUpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0yMTIsMTMgKzIxMiwxMyBAQCBKU0dsb2JhbERhdGE6OkpTR2xvYmFsRGF0YShHbG9iYWxEYXRh
VHlwCiAgICAgaml0U3R1YnMgPSBhZG9wdFB0cihuZXcgSklUVGh1bmtzKHRoaXMpKTsKICNlbmRp
ZgogICAgIAotICAgIGludGVycHJldGVyLT5pbml0aWFsaXplKCZsbGludERhdGEsIHRoaXMtPmNh
blVzZUpJVCgpKTsKKyAgICBpbnRlcnByZXRlci0+aW5pdGlhbGl6ZSh0aGlzLT5jYW5Vc2VKSVQo
KSk7CiAgICAgCiAgICAgaW5pdGlhbGl6ZUhvc3RDYWxsUmV0dXJuVmFsdWUoKTsgLy8gVGhpcyBp
cyBuZWVkZWQgdG8gY29udmluY2UgdGhlIGxpbmtlciBub3QgdG8gZHJvcCBob3N0IGNhbGwgcmV0
dXJuIHN1cHBvcnQuCiAKICAgICBoZWFwLm5vdGlmeUlzU2FmZVRvQ29sbGVjdCgpOwogICAgIAot
ICAgIGxsaW50RGF0YS5wZXJmb3JtQXNzZXJ0aW9ucygqdGhpcyk7CisgICAgTExJbnQ6OkRhdGE6
OnBlcmZvcm1Bc3NlcnRpb25zKCp0aGlzKTsKIH0KIAogSlNHbG9iYWxEYXRhOjp+SlNHbG9iYWxE
YXRhKCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0
YS5oCShyZXZpc2lvbiAxMjY5NzUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0dsb2JhbERhdGEuaAkod29ya2luZyBjb3B5KQpAQCAtMzE4LDggKzMxOCw2IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICBjb25zdCBDbGFzc0luZm8qIGNvbnN0IGpzQXJyYXlDbGFzc0luZm87
CiAgICAgICAgIGNvbnN0IENsYXNzSW5mbyogY29uc3QganNGaW5hbE9iamVjdENsYXNzSW5mbzsK
IAotICAgICAgICBMTEludDo6RGF0YSBsbGludERhdGE7Ci0KICAgICAgICAgUmV0dXJuQWRkcmVz
c1B0ciBleGNlcHRpb25Mb2NhdGlvbjsKICAgICAgICAgSlNWYWx1ZSBob3N0Q2FsbFJldHVyblZh
bHVlOwogICAgICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZUZvclRocm93OwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNWYWx1ZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVmFsdWUuaAkocmV2aXNpb24gMTI2OTc1KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNWYWx1ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
MjEsNyArMTIxLDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBERkc6
Ok9TUkV4aXRDb21waWxlcjsKICAgICAgICAgZnJpZW5kIGNsYXNzIERGRzo6U3BlY3VsYXRpdmVK
SVQ7CiAjZW5kaWYKLSAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50OjpEYXRhOwogCiAgICAgcHVi
bGljOgogI2lmIFVTRShKU1ZBTFVFMzJfNjQpCg==
</data>
<flag name="commit-queue"
          id="171909"
          type_id="3"
          status="-"
          setter="gyuyoung.kim"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>161195</attachid>
            <date>2012-08-29 05:33:49 -0700</date>
            <delta_ts>2012-08-29 08:45:49 -0700</delta_ts>
            <desc>Fixed typo.</desc>
            <filename>bug-95316.patch</filename>
            <type>text/plain</type>
            <size>24645</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTI2OTkxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDY4IEBA
CisyMDEyLTA4LTI5ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBS
ZWZhY3RvcmluZyBMTEludDo6RGF0YS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTk1MzE2LgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFRoaXMgY2hhbmdlIGFsbG93cyBpdHMgb3Bjb2RlTWFwIHRvIGJlIGVh
c2lseSBxdWVyaWVkIGZyb20gYW55IGZ1bmN0aW9uCisgICAgICAgIHdpdGhvdXQgbmVlZGluZyB0
byBnbyB0aHJvdWdoIGEgR2xvYmFsRGF0YSBvYmplY3QuICBJdCBhbHNvIGludHJvZHVjZXMKKyAg
ICAgICAgdGhlIExMSW50OjpnZXRDb2RlUHRyKCkgbWV0aG9kcyB0aGF0IHdpbGwgYmUgdXNlZCBi
eSB0aGUgTExJbnQgQyBsb29wCisgICAgICAgIGxhdGVyIHRvIHJlZGVmaW5lIGhvdyBsbGludCBz
eW1ib2xzIChvcGNvZGVzIGFuZCB0cmFtcG9saW5lIGdsdWUKKyAgICAgICAgbGFiZWxzKSBnZXQg
cmVzb2x2ZWQuCisKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJDb2RlUmVmLmg6
CisgICAgICAgIChNYWNyb0Fzc2VtYmxlckNvZGVQdHIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fz
c2VtYmxlckNvZGVQdHI6OmNyZWF0ZUxMSW50Q29kZVB0cik6CisgICAgICAgIChNYWNyb0Fzc2Vt
YmxlckNvZGVSZWYpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckNvZGVSZWY6OmNyZWF0
ZUxMSW50Q29kZVJlZik6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAg
ICAgKEpTQzo6Q29kZUJsb2NrOjphZGp1c3RQQ0lmQXRDYWxsU2l0ZSk6CisgICAgICAgIChKU0M6
OkNvZGVCbG9jazo6Ynl0ZWNvZGVPZmZzZXQpOgorICAgICAgICAqIGJ5dGVjb2RlL09wY29kZS5o
OgorICAgICAgICAgICAgUmVtb3ZlIHRoZSAnY29uc3QnIHRvIHNpbXBsaWZ5IHRoaW5ncyBhbmQg
YXZvaWQgaGF2aW5nIHRvIGRvCisgICAgICAgICAgICBhZGRpdGlvbmFsIGNhc3RzIGFuZCAjaWZk
ZWZzIGluIG1hbnkgcGxhY2VzLgorICAgICAgICAqIGJ5dGVjb2RlL1Jlc29sdmVHbG9iYWxTdGF0
dXMuY3BwOgorICAgICAgICAoSlNDOjpjb21wdXRlRm9yTExJbnQpOgorICAgICAgICAqIGJ5dGVj
b21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2Vu
ZXJhdG9yOjpnZW5lcmF0ZSk6CisgICAgICAgICogaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3Bw
OgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6aW5pdGlhbGl6ZSk6CisgICAgICAgICogaW50
ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaDoKKyAgICAgICAgKEludGVycHJldGVyKToKKyAgICAgICAg
KiBqaXQvSklURXhjZXB0aW9ucy5jcHA6CisgICAgICAgIChKU0M6OmdlbmVyaWNUaHJvdyk6Cisg
ICAgICAgICogbGxpbnQvTExJbnREYXRhLmNwcDoKKyAgICAgICAgKExMSW50KToKKyAgICAgICAg
KEpTQzo6TExJbnQ6OmluaXRpYWxpemUpOgorICAgICAgICAqIGxsaW50L0xMSW50RGF0YS5oOgor
ICAgICAgICAoSlNDKToKKyAgICAgICAgKExMSW50KToKKyAgICAgICAgKERhdGEpOgorICAgICAg
ICAoSlNDOjpMTEludDo6aXNJbml0aWFsaXplZCk6CisgICAgICAgIChKU0M6OkxMSW50OjpzZXRJ
c0luaXRpYWxpemVkKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmV4Y2VwdGlvbkluc3RydWN0aW9u
cyk6CisgICAgICAgIChKU0M6OkxMSW50OjpvcGNvZGVNYXApOgorICAgICAgICAoSlNDOjpMTElu
dDo6Z2V0T3Bjb2RlKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmdldENvZGVQdHIpOgorICAgICAg
ICAoSlNDOjpMTEludDo6RGF0YTo6cGVyZm9ybUFzc2VydGlvbnMpOgorICAgICAgICAqIGxsaW50
L0xMSW50RXhjZXB0aW9ucy5jcHA6CisgICAgICAgIChKU0M6OkxMSW50OjpyZXR1cm5Ub1Rocm93
Rm9yVGhyb3duRXhjZXB0aW9uKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OnJldHVyblRvVGhyb3cp
OgorICAgICAgICAoSlNDOjpMTEludDo6Y2FsbFRvVGhyb3cpOgorICAgICAgICAqIGxsaW50L0xM
SW50U2xvd1BhdGhzLmNwcDoKKyAgICAgICAgKEpTQzo6TExJbnQ6OkxMSU5UX1NMT1dfUEFUSF9E
RUNMKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmhhbmRsZUhvc3RDYWxsKToKKyAgICAgICAgKiBy
dW50aW1lL0luaXRpYWxpemVUaHJlYWRpbmcuY3BwOgorICAgICAgICAoSlNDOjppbml0aWFsaXpl
VGhyZWFkaW5nT25jZSk6IEluaXRpYWxpemUgdGhlIHNpbmdsZXRvbiBMTEludCBkYXRhLgorICAg
ICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxEYXRhLmNwcDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxE
YXRhOjpKU0dsb2JhbERhdGEpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxEYXRhLmg6Cisg
ICAgICAgIChKU0dsb2JhbERhdGEpOiBSZW1vdmVkIHRoZSBub3cgdW5uZWVkZWQgTExJbnQ6OkRh
dGEgaW5zdGFuY2UgaW4KKyAgICAgICAgICAgIEpTR2xvYmFsRGF0YS4KKyAgICAgICAgKiBydW50
aW1lL0pTVmFsdWUuaDoKKyAgICAgICAgKEpTVmFsdWUpOgorCiAyMDEyLTA4LTI5ICBQYXRyaWNr
IEdhbnN0ZXJlciAgPHBhcm9nYUB3ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQuIEJ1
aWxkIGZpeCBmb3IgIUVOQUJMRShKSVQpIGFmdGVyIHIxMjY5NjIuCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQ29kZVJlZi5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJDb2RlUmVm
LmgJKHJldmlzaW9uIDEyNjk5MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIv
TWFjcm9Bc3NlbWJsZXJDb2RlUmVmLmgJKHdvcmtpbmcgY29weSkKQEAgLTI4LDYgKzI4LDcgQEAK
IAogI2luY2x1ZGUgIkRpc2Fzc2VtYmxlci5oIgogI2luY2x1ZGUgIkV4ZWN1dGFibGVBbGxvY2F0
b3IuaCIKKyNpbmNsdWRlICJMTEludERhdGEuaCIKICNpbmNsdWRlIDx3dGYvRGF0YUxvZy5oPgog
I2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgpAQCAt
Mjg5LDEwICsyOTAsMTMgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0K
IAotICAgIHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgY3JlYXRlTExJbnRDb2RlUHRyKHZv
aWQgKCpmdW5jdGlvbikoKSkKKyNpZiBFTkFCTEUoTExJTlQpCisgICAgc3RhdGljIE1hY3JvQXNz
ZW1ibGVyQ29kZVB0ciBjcmVhdGVMTEludENvZGVQdHIoTExJbnRDb2RlIGNvZGVJZCkKICAgICB7
Ci0gICAgICAgIHJldHVybiBjcmVhdGVGcm9tRXhlY3V0YWJsZUFkZHJlc3MoYml0d2lzZV9jYXN0
PHZvaWQqPihmdW5jdGlvbikpOworICAgICAgICByZXR1cm4gY3JlYXRlRnJvbUV4ZWN1dGFibGVB
ZGRyZXNzKExMSW50OjpnZXRDb2RlUHRyKGNvZGVJZCkpOwogICAgIH0KKyNlbmRpZgorCiAgICAg
ZXhwbGljaXQgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyKFJldHVybkFkZHJlc3NQdHIgcmEpCiAgICAg
ICAgIDogbV92YWx1ZShyYS52YWx1ZSgpKQogICAgIHsKQEAgLTM1MywxMiArMzU3LDE0IEBAIHB1
YmxpYzoKICAgICAgICAgcmV0dXJuIE1hY3JvQXNzZW1ibGVyQ29kZVJlZihjb2RlUHRyKTsKICAg
ICB9CiAgICAgCisjaWYgRU5BQkxFKExMSU5UKQogICAgIC8vIEhlbHBlciBmb3IgY3JlYXRpbmcg
c2VsZi1tYW5hZ2VkIGNvZGUgcmVmcyBmcm9tIExMSW50LgotICAgIHN0YXRpYyBNYWNyb0Fzc2Vt
YmxlckNvZGVSZWYgY3JlYXRlTExJbnRDb2RlUmVmKHZvaWQgKCpmdW5jdGlvbikoKSkKKyAgICBz
dGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGNyZWF0ZUxMSW50Q29kZVJlZihMTEludENvZGUg
Y29kZUlkKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGNyZWF0ZVNlbGZNYW5hZ2VkQ29kZVJlZihN
YWNyb0Fzc2VtYmxlckNvZGVQdHI6OmNyZWF0ZUZyb21FeGVjdXRhYmxlQWRkcmVzcyhiaXR3aXNl
X2Nhc3Q8dm9pZCo+KGZ1bmN0aW9uKSkpOworICAgICAgICByZXR1cm4gY3JlYXRlU2VsZk1hbmFn
ZWRDb2RlUmVmKE1hY3JvQXNzZW1ibGVyQ29kZVB0cjo6Y3JlYXRlRnJvbUV4ZWN1dGFibGVBZGRy
ZXNzKExMSW50OjpnZXRDb2RlUHRyKGNvZGVJZCkpKTsKICAgICB9Ci0gICAgCisjZW5kaWYKKwog
ICAgIEV4ZWN1dGFibGVNZW1vcnlIYW5kbGUqIGV4ZWN1dGFibGVNZW1vcnkoKSBjb25zdAogICAg
IHsKICAgICAgICAgcmV0dXJuIG1fZXhlY3V0YWJsZU1lbW9yeS5nZXQoKTsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCShyZXZpc2lvbiAxMjY5
OTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjYxNCw3ICsyNjE0LDcgQEAgSW5zdHJ1Y3Rpb24qIENvZGVCbG9jazo6
YWRqdXN0UENJZkF0Q2FsbAogICAgIG9wY29kZUxlbmd0aCA9IE9QQ09ERV9MRU5HVEgob3BfY2Fs
bF92YXJhcmdzKTsKICAgICBhZGp1c3RlZFBDID0gcG90ZW50aWFsUmV0dXJuUEMgLSBvcGNvZGVM
ZW5ndGg7CiAgICAgaWYgKChyZXR1cm5QQ09mZnNldCA+PSBvcGNvZGVMZW5ndGgpCi0gICAgICAg
ICYmIChhZGp1c3RlZFBDLT51LnBvaW50ZXIgPT0gYml0d2lzZV9jYXN0PHZvaWQqPihsbGludF9v
cF9jYWxsX3ZhcmFyZ3MpKSkgeworICAgICAgICAmJiAoYWRqdXN0ZWRQQy0+dS5wb2ludGVyID09
IExMSW50OjpnZXRDb2RlUHRyKGxsaW50X29wX2NhbGxfdmFyYXJncykpKSB7CiAgICAgICAgIHJl
dHVybiBhZGp1c3RlZFBDOwogICAgIH0KIApAQCAtMjYyMiw5ICsyNjIyLDkgQEAgSW5zdHJ1Y3Rp
b24qIENvZGVCbG9jazo6YWRqdXN0UENJZkF0Q2FsbAogICAgIG9wY29kZUxlbmd0aCA9IE9QQ09E
RV9MRU5HVEgob3BfY2FsbCk7CiAgICAgYWRqdXN0ZWRQQyA9IHBvdGVudGlhbFJldHVyblBDIC0g
b3Bjb2RlTGVuZ3RoOwogICAgIGlmICgocmV0dXJuUENPZmZzZXQgPj0gb3Bjb2RlTGVuZ3RoKQot
ICAgICAgICAmJiAoYWRqdXN0ZWRQQy0+dS5wb2ludGVyID09IGJpdHdpc2VfY2FzdDx2b2lkKj4o
bGxpbnRfb3BfY2FsbCkKLSAgICAgICAgICAgIHx8IGFkanVzdGVkUEMtPnUucG9pbnRlciA9PSBi
aXR3aXNlX2Nhc3Q8dm9pZCo+KGxsaW50X29wX2NvbnN0cnVjdCkKLSAgICAgICAgICAgIHx8IGFk
anVzdGVkUEMtPnUucG9pbnRlciA9PSBiaXR3aXNlX2Nhc3Q8dm9pZCo+KGxsaW50X29wX2NhbGxf
ZXZhbCkpKSB7CisgICAgICAgICYmIChhZGp1c3RlZFBDLT51LnBvaW50ZXIgPT0gTExJbnQ6Omdl
dENvZGVQdHIobGxpbnRfb3BfY2FsbCkKKyAgICAgICAgICAgIHx8IGFkanVzdGVkUEMtPnUucG9p
bnRlciA9PSBMTEludDo6Z2V0Q29kZVB0cihsbGludF9vcF9jb25zdHJ1Y3QpCisgICAgICAgICAg
ICB8fCBhZGp1c3RlZFBDLT51LnBvaW50ZXIgPT0gTExJbnQ6OmdldENvZGVQdHIobGxpbnRfb3Bf
Y2FsbF9ldmFsKSkpIHsKICAgICAgICAgcmV0dXJuIGFkanVzdGVkUEM7CiAgICAgfQogCkBAIC0y
NjM2LDggKzI2MzYsOCBAQCBJbnN0cnVjdGlvbiogQ29kZUJsb2NrOjphZGp1c3RQQ0lmQXRDYWxs
CiB1bnNpZ25lZCBDb2RlQmxvY2s6OmJ5dGVjb2RlT2Zmc2V0KEV4ZWNTdGF0ZSogZXhlYywgUmV0
dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRyZXNzKQogewogI2lmIEVOQUJMRShMTElOVCkKLSAgICBp
ZiAocmV0dXJuQWRkcmVzcy52YWx1ZSgpID49IGJpdHdpc2VfY2FzdDx2b2lkKj4oJmxsaW50X2Jl
Z2luKQotICAgICAgICAmJiByZXR1cm5BZGRyZXNzLnZhbHVlKCkgPD0gYml0d2lzZV9jYXN0PHZv
aWQqPigmbGxpbnRfZW5kKSkgeworICAgIGlmIChyZXR1cm5BZGRyZXNzLnZhbHVlKCkgPj0gTExJ
bnQ6OmdldENvZGVQdHIobGxpbnRfYmVnaW4pCisgICAgICAgICYmIHJldHVybkFkZHJlc3MudmFs
dWUoKSA8PSBMTEludDo6Z2V0Q29kZVB0cihsbGludF9lbmQpKSB7CiAgICAgICAgIEFTU0VSVChl
eGVjLT5jb2RlQmxvY2soKSk7CiAgICAgICAgIEFTU0VSVChleGVjLT5jb2RlQmxvY2soKSA9PSB0
aGlzKTsKICAgICAgICAgQVNTRVJUKEpJVENvZGU6OmlzQmFzZWxpbmVDb2RlKGdldEpJVFR5cGUo
KSkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09wY29kZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PcGNvZGUuaAkocmV2aXNp
b24gMTI2OTkxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09wY29kZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC0yMjYsMTIgKzIyNiw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICN1
bmRlZiBWRVJJRllfT1BDT0RFX0lECiAKICNpZiBFTkFCTEUoQ09NUFVURURfR09UT19DTEFTU0lD
X0lOVEVSUFJFVEVSKSB8fCBFTkFCTEUoTExJTlQpCi0jaWYgQ09NUElMRVIoUlZDVCkgfHwgQ09N
UElMRVIoSU5URUwpCiAgICAgdHlwZWRlZiB2b2lkKiBPcGNvZGU7CiAjZWxzZQotICAgIHR5cGVk
ZWYgY29uc3Qgdm9pZCogT3Bjb2RlOwotI2VuZGlmCi0jZWxzZQogICAgIHR5cGVkZWYgT3Bjb2Rl
SUQgT3Bjb2RlOwogI2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9SZXNvbHZlR2xvYmFsU3RhdHVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvUmVzb2x2ZUdsb2JhbFN0YXR1cy5jcHAJKHJldmlzaW9uIDEyNjk5MSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9SZXNvbHZlR2xvYmFsU3RhdHVzLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNTIsOCArNTIsOCBAQCBzdGF0aWMgUmVzb2x2ZUdsb2JhbFN0
YXR1cyBjb21wdXRlRm9yTExJCiB7CiAjaWYgRU5BQkxFKExMSU5UKQogICAgIEluc3RydWN0aW9u
KiBpbnN0cnVjdGlvbiA9IGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKSArIGJ5dGVj
b2RlSW5kZXg7Ci0gICAgCi0gICAgQVNTRVJUKGluc3RydWN0aW9uWzBdLnUub3Bjb2RlID09IGxs
aW50X29wX3Jlc29sdmVfZ2xvYmFsKTsKKworICAgIEFTU0VSVChpbnN0cnVjdGlvblswXS51Lm9w
Y29kZSA9PSBMTEludDo6Z2V0T3Bjb2RlKG9wX3Jlc29sdmVfZ2xvYmFsKSk7CiAgICAgCiAgICAg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBpbnN0cnVjdGlvblszXS51LnN0cnVjdHVyZS5nZXQoKTsK
ICAgICBpZiAoIXN0cnVjdHVyZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29t
cGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCShyZXZpc2lvbiAxMjY5
OTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJh
dG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTk3LDcgKzE5Nyw3IEBAIEpTT2JqZWN0KiBCeXRl
Y29kZUdlbmVyYXRvcjo6Z2VuZXJhdGUoKQogI2lmIEVOQUJMRShKSVQpCiAgICAgICAgICAgICAs
CiAjaWYgRU5BQkxFKExMSU5UKQotICAgICAgICAgICAgQ29kZUxvY2F0aW9uTGFiZWwoTWFjcm9B
c3NlbWJsZXJDb2RlUHRyOjpjcmVhdGVGcm9tRXhlY3V0YWJsZUFkZHJlc3MoYml0d2lzZV9jYXN0
PHZvaWQqPigmbGxpbnRfb3BfY2F0Y2gpKSkKKyAgICAgICAgICAgIENvZGVMb2NhdGlvbkxhYmVs
KE1hY3JvQXNzZW1ibGVyQ29kZVB0cjo6Y3JlYXRlRnJvbUV4ZWN1dGFibGVBZGRyZXNzKExMSW50
OjpnZXRDb2RlUHRyKGxsaW50X29wX2NhdGNoKSkpCiAjZWxzZQogICAgICAgICAgICAgQ29kZUxv
Y2F0aW9uTGFiZWwoKQogI2VuZGlmCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJw
cmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAJKHJldmlzaW9uIDEyNjk5MSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTI4NCw5ICsyODQsOCBAQCBJbnRlcnByZXRlcjo6fkludGVycHJldGVyKCkKICNlbmRp
ZgogfQogCi12b2lkIEludGVycHJldGVyOjppbml0aWFsaXplKExMSW50OjpEYXRhKiBsbGludERh
dGEsIGJvb2wgY2FuVXNlSklUKQordm9pZCBJbnRlcnByZXRlcjo6aW5pdGlhbGl6ZShib29sIGNh
blVzZUpJVCkKIHsKLSAgICBVTlVTRURfUEFSQU0obGxpbnREYXRhKTsKICAgICBVTlVTRURfUEFS
QU0oY2FuVXNlSklUKTsKIAogICAgIC8vIElmIHdlIGhhdmUgTExJbnQsIHRoZW4gd2Ugc2hvdWxk
bid0IGJlIGJ1aWxkaW5nIGFueSBraW5kIG9mIGNsYXNzaWMgaW50ZXJwcmV0ZXIuCkBAIC0yOTUs
NyArMjk0LDcgQEAgdm9pZCBJbnRlcnByZXRlcjo6aW5pdGlhbGl6ZShMTEludDo6RGF0YQogI2Vu
ZGlmCiAKICNpZiBFTkFCTEUoTExJTlQpCi0gICAgbV9vcGNvZGVUYWJsZSA9IGxsaW50RGF0YS0+
b3Bjb2RlTWFwKCk7CisgICAgbV9vcGNvZGVUYWJsZSA9IExMSW50OjpvcGNvZGVNYXAoKTsKICAg
ICBmb3IgKGludCBpID0gMDsgaSA8IG51bU9wY29kZUlEczsgKytpKQogICAgICAgICBtX29wY29k
ZUlEVGFibGUuYWRkKG1fb3Bjb2RlVGFibGVbaV0sIHN0YXRpY19jYXN0PE9wY29kZUlEPihpKSk7
CiAgICAgbV9jbGFzc2ljRW5hYmxlZCA9IGZhbHNlOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmgJKHJldmlzaW9uIDEyNjk5MSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xODcsNyArMTg3LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIEludGVy
cHJldGVyKCk7CiAgICAgICAgIH5JbnRlcnByZXRlcigpOwogICAgICAgICAKLSAgICAgICAgdm9p
ZCBpbml0aWFsaXplKExMSW50OjpEYXRhKiwgYm9vbCBjYW5Vc2VKSVQpOworICAgICAgICB2b2lk
IGluaXRpYWxpemUoYm9vbCBjYW5Vc2VKSVQpOwogCiAgICAgICAgIFJlZ2lzdGVyRmlsZSYgcmVn
aXN0ZXJGaWxlKCkgeyByZXR1cm4gbV9yZWdpc3RlckZpbGU7IH0KICAgICAgICAgCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVEV4Y2VwdGlvbnMuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklURXhjZXB0aW9ucy5jcHAJKHJldmlzaW9uIDEy
Njk5MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklURXhjZXB0aW9ucy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTUwLDcgKzUwLDcgQEAgRXhjZXB0aW9uSGFuZGxlciBnZW5lcmljVGhy
b3coSlNHbG9iYWxEYQogICAgICAgICBjYXRjaFJvdXRpbmUgPSBoYW5kbGVyLT5uYXRpdmVDb2Rl
LmV4ZWN1dGFibGVBZGRyZXNzKCk7CiAgICAgICAgIGNhdGNoUENGb3JJbnRlcnByZXRlciA9ICZj
YWxsRnJhbWUtPmNvZGVCbG9jaygpLT5pbnN0cnVjdGlvbnMoKVtoYW5kbGVyLT50YXJnZXRdOwog
ICAgIH0gZWxzZQotICAgICAgICBjYXRjaFJvdXRpbmUgPSBGdW5jdGlvblB0cihjdGlPcFRocm93
Tm90Q2F1Z2h0KS52YWx1ZSgpOworICAgICAgICBjYXRjaFJvdXRpbmUgPSBGdW5jdGlvblB0cihM
TEludDo6Z2V0Q29kZVB0cihjdGlPcFRocm93Tm90Q2F1Z2h0KSkudmFsdWUoKTsKICAgICAKICAg
ICBnbG9iYWxEYXRhLT5jYWxsRnJhbWVGb3JUaHJvdyA9IGNhbGxGcmFtZTsKICAgICBnbG9iYWxE
YXRhLT50YXJnZXRNYWNoaW5lUENGb3JUaHJvdyA9IGNhdGNoUm91dGluZTsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludERhdGEuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludERhdGEuY3BwCShyZXZpc2lvbiAxMjY5OTEpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzEsMjAgKzMxLDI5IEBACiAjaW5jbHVkZSAiQnl0ZWNvZGVDb252ZW50aW9ucy5oIgog
I2luY2x1ZGUgIkNvZGVUeXBlLmgiCiAjaW5jbHVkZSAiSW5zdHJ1Y3Rpb24uaCIKLSNpbmNsdWRl
ICJMb3dMZXZlbEludGVycHJldGVyLmgiCiAjaW5jbHVkZSAiT3Bjb2RlLmgiCiAKIG5hbWVzcGFj
ZSBKU0MgeyBuYW1lc3BhY2UgTExJbnQgewogCi1EYXRhOjpEYXRhKCkKLSAgICA6IG1fZXhjZXB0
aW9uSW5zdHJ1Y3Rpb25zKG5ldyBJbnN0cnVjdGlvblttYXhPcGNvZGVMZW5ndGggKyAxXSkKLSAg
ICAsIG1fb3Bjb2RlTWFwKG5ldyBPcGNvZGVbbnVtT3Bjb2RlSURzXSkKK2Jvb2wgRGF0YTo6c19p
c0luaXRpYWxpemVkID0gZmFsc2U7CitJbnN0cnVjdGlvbiogRGF0YTo6c19leGNlcHRpb25JbnN0
cnVjdGlvbnMgPSAwOworT3Bjb2RlKiBEYXRhOjpzX29wY29kZU1hcCA9IDA7CisKK3ZvaWQgaW5p
dGlhbGl6ZSgpCiB7Ci0gICAgZm9yIChpbnQgaSA9IDA7IGkgPCBtYXhPcGNvZGVMZW5ndGggKyAx
OyArK2kpCi0gICAgICAgIG1fZXhjZXB0aW9uSW5zdHJ1Y3Rpb25zW2ldLnUucG9pbnRlciA9IGJp
dHdpc2VfY2FzdDx2b2lkKj4oJmxsaW50X3Rocm93X2Zyb21fc2xvd19wYXRoX3RyYW1wb2xpbmUp
OwotI2RlZmluZSBPUENPREVfRU5UUlkob3Bjb2RlLCBsZW5ndGgpIG1fb3Bjb2RlTWFwW29wY29k
ZV0gPSBiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF8jI29wY29kZSk7Ci0gICAgRk9SX0VBQ0hf
T1BDT0RFX0lEKE9QQ09ERV9FTlRSWSk7Ci0jdW5kZWYgT1BDT0RFX0VOVFJZCisgICAgaWYgKCFE
YXRhOjpzX2lzSW5pdGlhbGl6ZWQpIHsKKyAgICAgICAgRGF0YTo6c19leGNlcHRpb25JbnN0cnVj
dGlvbnMgPSBuZXcgSW5zdHJ1Y3Rpb25bbWF4T3Bjb2RlTGVuZ3RoICsgMV07CisgICAgICAgIERh
dGE6OnNfb3Bjb2RlTWFwID0gbmV3IE9wY29kZVtudW1PcGNvZGVJRHNdOworCisgICAgICAgIGZv
ciAoaW50IGkgPSAwOyBpIDwgbWF4T3Bjb2RlTGVuZ3RoICsgMTsgKytpKQorICAgICAgICAgICAg
RGF0YTo6c19leGNlcHRpb25JbnN0cnVjdGlvbnNbaV0udS5wb2ludGVyID0KKyAgICAgICAgICAg
ICAgICBMTEludDo6Z2V0Q29kZVB0cihsbGludF90aHJvd19mcm9tX3Nsb3dfcGF0aF90cmFtcG9s
aW5lKTsKKyAgICAgICAgI2RlZmluZSBPUENPREVfRU5UUlkob3Bjb2RlLCBsZW5ndGgpIFwKKyAg
ICAgICAgICAgIERhdGE6OnNfb3Bjb2RlTWFwW29wY29kZV0gPSBMTEludDo6Z2V0Q29kZVB0cihs
bGludF8jI29wY29kZSk7CisgICAgICAgIEZPUl9FQUNIX09QQ09ERV9JRChPUENPREVfRU5UUlkp
OworICAgICAgICAjdW5kZWYgT1BDT0RFX0VOVFJZCisgICAgICAgIERhdGE6OnNfaXNJbml0aWFs
aXplZCA9IHRydWU7CisgICAgfQogfQogCiAjaWYgQ09NUElMRVIoQ0xBTkcpCkBAIC0xMjAsMTIg
KzEyOSw2IEBAIHZvaWQgRGF0YTo6cGVyZm9ybUFzc2VydGlvbnMoSlNHbG9iYWxEYXQKICNwcmFn
bWEgY2xhbmcgZGlhZ25vc3RpYyBwb3AKICNlbmRpZgogCi1EYXRhOjp+RGF0YSgpCi17Ci0gICAg
ZGVsZXRlW10gbV9leGNlcHRpb25JbnN0cnVjdGlvbnM7Ci0gICAgZGVsZXRlW10gbV9vcGNvZGVN
YXA7Ci19Ci0KIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpMTEludAogCiAjZW5kaWYgLy8gRU5BQkxF
KExMSU5UKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RGF0YS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludERhdGEuaAkocmV2
aXNpb24gMTI2OTkxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RGF0YS5o
CSh3b3JraW5nIGNvcHkpCkBAIC0yNiw2ICsyNiw3IEBACiAjaWZuZGVmIExMSW50RGF0YV9oCiAj
ZGVmaW5lIExMSW50RGF0YV9oCiAKKyNpbmNsdWRlICJKU1ZhbHVlLmgiCiAjaW5jbHVkZSAiT3Bj
b2RlLmgiCiAjaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+CiAKQEAgLTM0LDMwICszNSw2OCBAQCBu
YW1lc3BhY2UgSlNDIHsKIGNsYXNzIEpTR2xvYmFsRGF0YTsKIHN0cnVjdCBJbnN0cnVjdGlvbjsK
IAordHlwZWRlZiB2b2lkICgqTExJbnRDb2RlKSgpOworCiBuYW1lc3BhY2UgTExJbnQgewogCiAj
aWYgRU5BQkxFKExMSU5UKQorCiBjbGFzcyBEYXRhIHsKIHB1YmxpYzoKLSAgICBEYXRhKCk7Ci0g
ICAgfkRhdGEoKTsKLSAgICAKLSAgICB2b2lkIHBlcmZvcm1Bc3NlcnRpb25zKEpTR2xvYmFsRGF0
YSYpOwotICAgIAotICAgIEluc3RydWN0aW9uKiBleGNlcHRpb25JbnN0cnVjdGlvbnMoKQotICAg
IHsKLSAgICAgICAgcmV0dXJuIG1fZXhjZXB0aW9uSW5zdHJ1Y3Rpb25zOwotICAgIH0KLSAgICAK
LSAgICBPcGNvZGUqIG9wY29kZU1hcCgpCi0gICAgewotICAgICAgICByZXR1cm4gbV9vcGNvZGVN
YXA7Ci0gICAgfQorICAgIHN0YXRpYyB2b2lkIHBlcmZvcm1Bc3NlcnRpb25zKEpTR2xvYmFsRGF0
YSYpOworCiBwcml2YXRlOgotICAgIEluc3RydWN0aW9uKiBtX2V4Y2VwdGlvbkluc3RydWN0aW9u
czsKLSAgICBPcGNvZGUqIG1fb3Bjb2RlTWFwOworICAgIHN0YXRpYyBib29sIHNfaXNJbml0aWFs
aXplZDsKKyAgICBzdGF0aWMgSW5zdHJ1Y3Rpb24qIHNfZXhjZXB0aW9uSW5zdHJ1Y3Rpb25zOwor
ICAgIHN0YXRpYyBPcGNvZGUqIHNfb3Bjb2RlTWFwOworCisgICAgZnJpZW5kIHZvaWQgaW5pdGlh
bGl6ZSgpOworICAgIGZyaWVuZCBib29sIGlzSW5pdGlhbGl6ZWQoKTsKKyAgICBmcmllbmQgdm9p
ZCBzZXRJc0luaXRpYWxpemVkKCk7CisKKyAgICBmcmllbmQgSW5zdHJ1Y3Rpb24qIGV4Y2VwdGlv
bkluc3RydWN0aW9ucygpOworICAgIGZyaWVuZCBPcGNvZGUqIG9wY29kZU1hcCgpOworICAgIGZy
aWVuZCBPcGNvZGUgZ2V0T3Bjb2RlKE9wY29kZUlEKTsKKyAgICBmcmllbmQgdm9pZCogZ2V0Q29k
ZVB0cihPcGNvZGVJRCk7CiB9OwotI2Vsc2UgLy8gRU5BQkxFKExMSU5UKQorCit2b2lkIGluaXRp
YWxpemUoKTsKKworaW5saW5lIGJvb2wgaXNJbml0aWFsaXplZCgpCit7CisgICAgcmV0dXJuIERh
dGE6OnNfaXNJbml0aWFsaXplZDsKK30KKworaW5saW5lIHZvaWQgc2V0SXNJbml0aWFsaXplZCgp
Cit7CisgICAgRGF0YTo6c19pc0luaXRpYWxpemVkID0gdHJ1ZTsKK30KKworaW5saW5lIEluc3Ry
dWN0aW9uKiBleGNlcHRpb25JbnN0cnVjdGlvbnMoKQoreworICAgIHJldHVybiBEYXRhOjpzX2V4
Y2VwdGlvbkluc3RydWN0aW9uczsKK30KKyAgICAKK2lubGluZSBPcGNvZGUqIG9wY29kZU1hcCgp
Cit7CisgICAgcmV0dXJuIERhdGE6OnNfb3Bjb2RlTWFwOworfQorCitpbmxpbmUgT3Bjb2RlIGdl
dE9wY29kZShPcGNvZGVJRCBpZCkKK3sKKyNpZiBIQVZFKENPTVBVVEVEX0dPVE8pCisgICAgcmV0
dXJuIERhdGE6OnNfb3Bjb2RlTWFwW2lkXTsKKyNlbHNlCisgICAgcmV0dXJuIHN0YXRpY19jYXN0
PE9wY29kZT4oaWQpOworI2VuZGlmCit9CisKK0FMV0FZU19JTkxJTkUgdm9pZCogZ2V0Q29kZVB0
cihPcGNvZGVJRCBpZCkKK3sKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oZ2V0
T3Bjb2RlKGlkKSk7Cit9CisKKyNlbHNlIC8vICFFTkFCTEUoTExJTlQpCiAKICNpZiBDT01QSUxF
UihDTEFORykKICNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwdXNoCkBAIC02NiwyNiArMTA1LDMw
IEBAIHByaXZhdGU6CiAKIGNsYXNzIERhdGEgewogcHVibGljOgotICAgIHZvaWQgcGVyZm9ybUFz
c2VydGlvbnMoSlNHbG9iYWxEYXRhJikgeyB9Ci0KLSAgICBJbnN0cnVjdGlvbiogZXhjZXB0aW9u
SW5zdHJ1Y3Rpb25zKCkKLSAgICB7Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAg
ICAgICByZXR1cm4gMDsKLSAgICB9Ci0gICAgCi0gICAgT3Bjb2RlKiBvcGNvZGVNYXAoKQotICAg
IHsKLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVybiAwOwotICAg
IH0KKyAgICBzdGF0aWMgdm9pZCBwZXJmb3JtQXNzZXJ0aW9ucyhKU0dsb2JhbERhdGEmKSB7IH0K
IH07CiAKICNpZiBDT01QSUxFUihDTEFORykKICNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwb3AK
ICNlbmRpZgogCi0jZW5kaWYgLy8gRU5BQkxFKExMSU5UKQorI2VuZGlmIC8vICFFTkFCTEUoTExJ
TlQpCisKK0FMV0FZU19JTkxJTkUgdm9pZCogZ2V0T3Bjb2RlKHZvaWQgbGxpbnRPcGNvZGUoKSkK
K3sKKyAgICByZXR1cm4gYml0d2lzZV9jYXN0PHZvaWQqPihsbGludE9wY29kZSk7Cit9CisKK0FM
V0FZU19JTkxJTkUgdm9pZCogZ2V0Q29kZVB0cih2b2lkIGdsdWVIZWxwZXIoKSkKK3sKKyAgICBy
ZXR1cm4gYml0d2lzZV9jYXN0PHZvaWQqPihnbHVlSGVscGVyKTsKK30KKworQUxXQVlTX0lOTElO
RSB2b2lkKiBnZXRDb2RlUHRyKEpTQzo6RW5jb2RlZEpTVmFsdWUgZ2x1ZUhlbHBlcigpKQorewor
ICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8dm9pZCo+KGdsdWVIZWxwZXIpOworfQorCiAKIH0gfSAv
LyBuYW1lc3BhY2UgSlNDOjpMTEludAogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTExJbnRFeGNlcHRpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTExJbnRFeGNlcHRpb25zLmNwcAkocmV2aXNpb24gMTI2OTkxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RXhjZXB0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTYwLDcgKzYwLDggQEAgdm9pZCBpbnRlcnByZXRlclRocm93SW5DYWxsZXIoRXhlY1N0YXRl
KgogCiBJbnN0cnVjdGlvbiogcmV0dXJuVG9UaHJvd0ZvclRocm93bkV4Y2VwdGlvbihFeGVjU3Rh
dGUqIGV4ZWMpCiB7Ci0gICAgcmV0dXJuIGV4ZWMtPmdsb2JhbERhdGEoKS5sbGludERhdGEuZXhj
ZXB0aW9uSW5zdHJ1Y3Rpb25zKCk7CisgICAgVU5VU0VEX1BBUkFNKGV4ZWMpOworICAgIHJldHVy
biBMTEludDo6ZXhjZXB0aW9uSW5zdHJ1Y3Rpb25zKCk7CiB9CiAKIEluc3RydWN0aW9uKiByZXR1
cm5Ub1Rocm93KEV4ZWNTdGF0ZSogZXhlYywgSW5zdHJ1Y3Rpb24qIHBjKQpAQCAtNzMsNyArNzQs
NyBAQCBJbnN0cnVjdGlvbiogcmV0dXJuVG9UaHJvdyhFeGVjU3RhdGUqIGV4CiAgICAgZml4dXBQ
Q2ZvckV4Y2VwdGlvbklmTmVlZGVkKGV4ZWMpOwogICAgIGdlbmVyaWNUaHJvdyhnbG9iYWxEYXRh
LCBleGVjLCBnbG9iYWxEYXRhLT5leGNlcHRpb24sIHBjIC0gZXhlYy0+Y29kZUJsb2NrKCktPmlu
c3RydWN0aW9ucygpLmJlZ2luKCkpOwogICAgIAotICAgIHJldHVybiBnbG9iYWxEYXRhLT5sbGlu
dERhdGEuZXhjZXB0aW9uSW5zdHJ1Y3Rpb25zKCk7CisgICAgcmV0dXJuIExMSW50OjpleGNlcHRp
b25JbnN0cnVjdGlvbnMoKTsKIH0KIAogdm9pZCogY2FsbFRvVGhyb3coRXhlY1N0YXRlKiBleGVj
LCBJbnN0cnVjdGlvbiogcGMpCkBAIC04NSw4ICs4Niw4IEBAIHZvaWQqIGNhbGxUb1Rocm93KEV4
ZWNTdGF0ZSogZXhlYywgSW5zdHIKICNlbmRpZgogICAgIGZpeHVwUENmb3JFeGNlcHRpb25JZk5l
ZWRlZChleGVjKTsKICAgICBnZW5lcmljVGhyb3coZ2xvYmFsRGF0YSwgZXhlYywgZ2xvYmFsRGF0
YS0+ZXhjZXB0aW9uLCBwYyAtIGV4ZWMtPmNvZGVCbG9jaygpLT5pbnN0cnVjdGlvbnMoKS5iZWdp
bigpKTsKLSAgICAKLSAgICByZXR1cm4gYml0d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRfdGhyb3df
ZHVyaW5nX2NhbGxfdHJhbXBvbGluZSk7CisKKyAgICByZXR1cm4gTExJbnQ6OmdldENvZGVQdHIo
bGxpbnRfdGhyb3dfZHVyaW5nX2NhbGxfdHJhbXBvbGluZSk7CiB9CiAKIH0gfSAvLyBuYW1lc3Bh
Y2UgSlNDOjpMTEludApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xv
d1BhdGhzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJ
bnRTbG93UGF0aHMuY3BwCShyZXZpc2lvbiAxMjY5OTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04NzAsMTAgKzg3
MCwxMCBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfZ2V0X2J5X2lkCiAgICAgICAg
ICAgICBwY1s0XS51LnN0cnVjdHVyZS5zZXQoCiAgICAgICAgICAgICAgICAgZ2xvYmFsRGF0YSwg
Y29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKSwgc3RydWN0dXJlKTsKICAgICAgICAgICAgIGlm
IChpc0lubGluZU9mZnNldChzbG90LmNhY2hlZE9mZnNldCgpKSkgewotICAgICAgICAgICAgICAg
IHBjWzBdLnUub3Bjb2RlID0gYml0d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRfb3BfZ2V0X2J5X2lk
KTsKKyAgICAgICAgICAgICAgICBwY1swXS51Lm9wY29kZSA9IExMSW50OjpnZXRPcGNvZGUobGxp
bnRfb3BfZ2V0X2J5X2lkKTsKICAgICAgICAgICAgICAgICBwY1s1XS51Lm9wZXJhbmQgPSBvZmZz
ZXRJbklubGluZVN0b3JhZ2Uoc2xvdC5jYWNoZWRPZmZzZXQoKSkgKiBzaXplb2YoSlNWYWx1ZSkg
KyBKU09iamVjdDo6b2Zmc2V0T2ZJbmxpbmVTdG9yYWdlKCk7CiAgICAgICAgICAgICB9IGVsc2Ug
ewotICAgICAgICAgICAgICAgIHBjWzBdLnUub3Bjb2RlID0gYml0d2lzZV9jYXN0PHZvaWQqPigm
bGxpbnRfb3BfZ2V0X2J5X2lkX291dF9vZl9saW5lKTsKKyAgICAgICAgICAgICAgICBwY1swXS51
Lm9wY29kZSA9IExMSW50OjpnZXRPcGNvZGUobGxpbnRfb3BfZ2V0X2J5X2lkX291dF9vZl9saW5l
KTsKICAgICAgICAgICAgICAgICBwY1s1XS51Lm9wZXJhbmQgPSBvZmZzZXRJbk91dE9mTGluZVN0
b3JhZ2Uoc2xvdC5jYWNoZWRPZmZzZXQoKSkgKiBzaXplb2YoSlNWYWx1ZSk7CiAgICAgICAgICAg
ICB9CiAgICAgICAgIH0KQEAgLTkyNiw3ICs5MjYsNyBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChz
bG93X3BhdGhfcHV0X2J5X2lkCiAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAg
ICAgICAvLyBUaGlzIGlzIG5lZWRlZCBiZWNhdXNlIHNvbWUgb2YgdGhlIG1ldGhvZHMgd2UgY2Fs
bAogICAgICAgICAgICAgICAgICAgICAvLyBiZWxvdyBtYXkgR0MuCi0gICAgICAgICAgICAgICAg
ICAgIHBjWzBdLnUub3Bjb2RlID0gYml0d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRfb3BfcHV0X2J5
X2lkKTsKKyAgICAgICAgICAgICAgICAgICAgcGNbMF0udS5vcGNvZGUgPSBMTEludDo6Z2V0T3Bj
b2RlKGxsaW50X29wX3B1dF9ieV9pZCk7CiAKICAgICAgICAgICAgICAgICAgICAgbm9ybWFsaXpl
UHJvdG90eXBlQ2hhaW4oZXhlYywgYmFzZUNlbGwpOwogICAgICAgICAgICAgICAgICAgICAKQEAg
LTk0NiwyNCArOTQ2LDI0IEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9wdXRfYnlf
aWQKICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgIGlmIChwY1s4XS51
Lm9wZXJhbmQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc0lubGluZU9mZnNldChz
bG90LmNhY2hlZE9mZnNldCgpKSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBwY1swXS51
Lm9wY29kZSA9IGJpdHdpc2VfY2FzdDx2b2lkKj4oJmxsaW50X29wX3B1dF9ieV9pZF90cmFuc2l0
aW9uX2RpcmVjdCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGNbMF0udS5vcGNvZGUg
PSBMTEludDo6Z2V0T3Bjb2RlKGxsaW50X29wX3B1dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVjdCk7
CiAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcGNbMF0udS5vcGNvZGUgPSBiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF9vcF9wdXRfYnlf
aWRfdHJhbnNpdGlvbl9kaXJlY3Rfb3V0X29mX2xpbmUpOworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHBjWzBdLnUub3Bjb2RlID0gTExJbnQ6OmdldE9wY29kZShsbGludF9vcF9wdXRfYnlf
aWRfdHJhbnNpdGlvbl9kaXJlY3Rfb3V0X29mX2xpbmUpOwogICAgICAgICAgICAgICAgICAgICB9
IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzSW5saW5lT2Zmc2V0KHNsb3Qu
Y2FjaGVkT2Zmc2V0KCkpKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBjWzBdLnUub3Bj
b2RlID0gYml0d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRfb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25f
bm9ybWFsKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwY1swXS51Lm9wY29kZSA9IExM
SW50OjpnZXRPcGNvZGUobGxpbnRfb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFsKTsKICAg
ICAgICAgICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBw
Y1swXS51Lm9wY29kZSA9IGJpdHdpc2VfY2FzdDx2b2lkKj4oJmxsaW50X29wX3B1dF9ieV9pZF90
cmFuc2l0aW9uX25vcm1hbF9vdXRfb2ZfbGluZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcGNbMF0udS5vcGNvZGUgPSBMTEludDo6Z2V0T3Bjb2RlKGxsaW50X29wX3B1dF9ieV9pZF90
cmFuc2l0aW9uX25vcm1hbF9vdXRfb2ZfbGluZSk7CiAgICAgICAgICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIHBj
WzRdLnUuc3RydWN0dXJlLnNldCgKICAgICAgICAgICAgICAgICAgICAgZ2xvYmFsRGF0YSwgY29k
ZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKSwgc3RydWN0dXJlKTsKICAgICAgICAgICAgICAgICBp
ZiAoaXNJbmxpbmVPZmZzZXQoc2xvdC5jYWNoZWRPZmZzZXQoKSkpIHsKLSAgICAgICAgICAgICAg
ICAgICAgcGNbMF0udS5vcGNvZGUgPSBiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF9vcF9wdXRf
YnlfaWQpOworICAgICAgICAgICAgICAgICAgICBwY1swXS51Lm9wY29kZSA9IExMSW50OjpnZXRP
cGNvZGUobGxpbnRfb3BfcHV0X2J5X2lkKTsKICAgICAgICAgICAgICAgICAgICAgcGNbNV0udS5v
cGVyYW5kID0gb2Zmc2V0SW5JbmxpbmVTdG9yYWdlKHNsb3QuY2FjaGVkT2Zmc2V0KCkpICogc2l6
ZW9mKEpTVmFsdWUpICsgSlNPYmplY3Q6Om9mZnNldE9mSW5saW5lU3RvcmFnZSgpOwogICAgICAg
ICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIHBjWzBdLnUub3Bjb2RlID0g
Yml0d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRfb3BfcHV0X2J5X2lkX291dF9vZl9saW5lKTsKKyAg
ICAgICAgICAgICAgICAgICAgcGNbMF0udS5vcGNvZGUgPSBMTEludDo6Z2V0T3Bjb2RlKGxsaW50
X29wX3B1dF9ieV9pZF9vdXRfb2ZfbGluZSk7CiAgICAgICAgICAgICAgICAgICAgIHBjWzVdLnUu
b3BlcmFuZCA9IG9mZnNldEluT3V0T2ZMaW5lU3RvcmFnZShzbG90LmNhY2hlZE9mZnNldCgpKSAq
IHNpemVvZihKU1ZhbHVlKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CkBAIC0x
Mjk1LDcgKzEyOTUsNyBAQCBzdGF0aWMgU2xvd1BhdGhSZXR1cm5UeXBlIGhhbmRsZUhvc3RDYWxs
CiAgICAgICAgICAgICBleGVjQ2FsbGVlLT5zZXRDYWxsZWUoYXNPYmplY3QoY2FsbGVlKSk7CiAg
ICAgICAgICAgICBnbG9iYWxEYXRhLmhvc3RDYWxsUmV0dXJuVmFsdWUgPSBKU1ZhbHVlOjpkZWNv
ZGUoY2FsbERhdGEubmF0aXZlLmZ1bmN0aW9uKGV4ZWNDYWxsZWUpKTsKICAgICAgICAgICAgIAot
ICAgICAgICAgICAgTExJTlRfQ0FMTF9SRVRVUk4oZXhlY0NhbGxlZSwgcGMsIHJlaW50ZXJwcmV0
X2Nhc3Q8dm9pZCo+KGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpKTsKKyAgICAgICAgICAgIExMSU5U
X0NBTExfUkVUVVJOKGV4ZWNDYWxsZWUsIHBjLCBMTEludDo6Z2V0Q29kZVB0cihnZXRIb3N0Q2Fs
bFJldHVyblZhbHVlKSk7CiAgICAgICAgIH0KICAgICAgICAgCiAjaWYgTExJTlRfU0xPV19QQVRI
X1RSQUNJTkcKQEAgLTEzMTgsNyArMTMxOCw3IEBAIHN0YXRpYyBTbG93UGF0aFJldHVyblR5cGUg
aGFuZGxlSG9zdENhbGwKICAgICAgICAgZXhlY0NhbGxlZS0+c2V0Q2FsbGVlKGFzT2JqZWN0KGNh
bGxlZSkpOwogICAgICAgICBnbG9iYWxEYXRhLmhvc3RDYWxsUmV0dXJuVmFsdWUgPSBKU1ZhbHVl
OjpkZWNvZGUoY29uc3RydWN0RGF0YS5uYXRpdmUuZnVuY3Rpb24oZXhlY0NhbGxlZSkpOwogCi0g
ICAgICAgIExMSU5UX0NBTExfUkVUVVJOKGV4ZWNDYWxsZWUsIHBjLCByZWludGVycHJldF9jYXN0
PHZvaWQqPihnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSk7CisgICAgICAgIExMSU5UX0NBTExfUkVU
VVJOKGV4ZWNDYWxsZWUsIHBjLCBMTEludDo6Z2V0Q29kZVB0cihnZXRIb3N0Q2FsbFJldHVyblZh
bHVlKSk7CiAgICAgfQogICAgIAogI2lmIExMSU5UX1NMT1dfUEFUSF9UUkFDSU5HCkBAIC0xNDQx
LDcgKzE0NDEsNyBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfY2FsbF9ldmFsCiAg
ICAgZXhlY0NhbGxlZS0+c2V0Q2FsbGVyRnJhbWUoZXhlYyk7CiAgICAgZXhlY0NhbGxlZS0+dW5j
aGVja2VkUihSZWdpc3RlckZpbGU6OkNhbGxlZSkgPSBjYWxsZWVBc1ZhbHVlOwogICAgIGV4ZWND
YWxsZWUtPnNldFNjb3BlQ2hhaW4oZXhlYy0+c2NvcGVDaGFpbigpKTsKLSAgICBleGVjQ2FsbGVl
LT5zZXRSZXR1cm5QQyhiaXR3aXNlX2Nhc3Q8SW5zdHJ1Y3Rpb24qPigmbGxpbnRfZ2VuZXJpY19y
ZXR1cm5fcG9pbnQpKTsKKyAgICBleGVjQ2FsbGVlLT5zZXRSZXR1cm5QQyhMTEludDo6Z2V0Q29k
ZVB0cihsbGludF9nZW5lcmljX3JldHVybl9wb2ludCkpOwogICAgIGV4ZWNDYWxsZWUtPnNldENv
ZGVCbG9jaygwKTsKICAgICBleGVjLT5zZXRDdXJyZW50VlBDKHBjICsgT1BDT0RFX0xFTkdUSChv
cF9jYWxsX2V2YWwpKTsKICAgICAKQEAgLTE0NDksNyArMTQ0OSw3IEBAIExMSU5UX1NMT1dfUEFU
SF9ERUNMKHNsb3dfcGF0aF9jYWxsX2V2YWwKICAgICAgICAgcmV0dXJuIHNldFVwQ2FsbChleGVj
Q2FsbGVlLCBwYywgQ29kZUZvckNhbGwsIGNhbGxlZUFzVmFsdWUpOwogICAgIAogICAgIGdsb2Jh
bERhdGEuaG9zdENhbGxSZXR1cm5WYWx1ZSA9IGV2YWwoZXhlY0NhbGxlZSk7Ci0gICAgTExJTlRf
Q0FMTF9SRVRVUk4oZXhlY0NhbGxlZSwgcGMsIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KGdldEhv
c3RDYWxsUmV0dXJuVmFsdWUpKTsKKyAgICBMTElOVF9DQUxMX1JFVFVSTihleGVjQ2FsbGVlLCBw
YywgTExJbnQ6OmdldENvZGVQdHIoZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkpOwogfQogCiBMTElO
VF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfdGVhcl9vZmZfYWN0aXZhdGlvbikKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0luaXRpYWxpemVUaHJlYWRpbmcuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0luaXRpYWxpemVUaHJlYWRp
bmcuY3BwCShyZXZpc2lvbiAxMjY5OTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Jbml0aWFsaXplVGhyZWFkaW5nLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzUsNiArMzUsNyBA
QAogI2luY2x1ZGUgIklkZW50aWZpZXIuaCIKICNpbmNsdWRlICJKU0RhdGVNYXRoLmgiCiAjaW5j
bHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKKyNpbmNsdWRlICJMTEludERhdGEuaCIKICNpbmNsdWRl
ICJVU3RyaW5nLmgiCiAjaW5jbHVkZSAiV3JpdGVCYXJyaWVyLmgiCiAjaW5jbHVkZSA8d3RmL2R0
b2EuaD4KQEAgLTYxLDYgKzYyLDkgQEAgc3RhdGljIHZvaWQgaW5pdGlhbGl6ZVRocmVhZGluZ09u
Y2UoKQogICAgIEV4ZWN1dGFibGVBbGxvY2F0b3I6OmluaXRpYWxpemVBbGxvY2F0b3IoKTsKICNl
bmRpZgogICAgIFJlZ2lzdGVyRmlsZTo6aW5pdGlhbGl6ZVRocmVhZGluZygpOworI2lmIEVOQUJM
RShMTElOVCkKKyAgICBMTEludDo6aW5pdGlhbGl6ZSgpOworI2VuZGlmCiB9CiAKIHZvaWQgaW5p
dGlhbGl6ZVRocmVhZGluZygpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0dsb2JhbERhdGEuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTR2xvYmFsRGF0YS5jcHAJKHJldmlzaW9uIDEyNjk5MSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIxMiwx
MyArMjEyLDEzIEBAIEpTR2xvYmFsRGF0YTo6SlNHbG9iYWxEYXRhKEdsb2JhbERhdGFUeXAKICAg
ICBqaXRTdHVicyA9IGFkb3B0UHRyKG5ldyBKSVRUaHVua3ModGhpcykpOwogI2VuZGlmCiAgICAg
Ci0gICAgaW50ZXJwcmV0ZXItPmluaXRpYWxpemUoJmxsaW50RGF0YSwgdGhpcy0+Y2FuVXNlSklU
KCkpOworICAgIGludGVycHJldGVyLT5pbml0aWFsaXplKHRoaXMtPmNhblVzZUpJVCgpKTsKICAg
ICAKICAgICBpbml0aWFsaXplSG9zdENhbGxSZXR1cm5WYWx1ZSgpOyAvLyBUaGlzIGlzIG5lZWRl
ZCB0byBjb252aW5jZSB0aGUgbGlua2VyIG5vdCB0byBkcm9wIGhvc3QgY2FsbCByZXR1cm4gc3Vw
cG9ydC4KIAogICAgIGhlYXAubm90aWZ5SXNTYWZlVG9Db2xsZWN0KCk7CiAgICAgCi0gICAgbGxp
bnREYXRhLnBlcmZvcm1Bc3NlcnRpb25zKCp0aGlzKTsKKyAgICBMTEludDo6RGF0YTo6cGVyZm9y
bUFzc2VydGlvbnMoKnRoaXMpOwogfQogCiBKU0dsb2JhbERhdGE6On5KU0dsb2JhbERhdGEoKQpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRhLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRhLmgJKHJl
dmlzaW9uIDEyNjk5MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFs
RGF0YS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMTgsOCArMzE4LDYgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgIGNvbnN0IENsYXNzSW5mbyogY29uc3QganNBcnJheUNsYXNzSW5mbzsKICAgICAg
ICAgY29uc3QgQ2xhc3NJbmZvKiBjb25zdCBqc0ZpbmFsT2JqZWN0Q2xhc3NJbmZvOwogCi0gICAg
ICAgIExMSW50OjpEYXRhIGxsaW50RGF0YTsKLQogICAgICAgICBSZXR1cm5BZGRyZXNzUHRyIGV4
Y2VwdGlvbkxvY2F0aW9uOwogICAgICAgICBKU1ZhbHVlIGhvc3RDYWxsUmV0dXJuVmFsdWU7CiAg
ICAgICAgIENhbGxGcmFtZSogY2FsbEZyYW1lRm9yVGhyb3c7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU1ZhbHVlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNWYWx1ZS5oCShyZXZpc2lvbiAxMjY5OTEpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU1ZhbHVlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEyMSw3ICsx
MjEsNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgZnJpZW5kIGNsYXNzIERGRzo6T1NSRXhp
dENvbXBpbGVyOwogICAgICAgICBmcmllbmQgY2xhc3MgREZHOjpTcGVjdWxhdGl2ZUpJVDsKICNl
bmRpZgotICAgICAgICBmcmllbmQgY2xhc3MgTExJbnQ6OkRhdGE7CiAKICAgICBwdWJsaWM6CiAj
aWYgVVNFKEpTVkFMVUUzMl82NCkK
</data>
<flag name="review"
          id="171914"
          type_id="1"
          status="-"
          setter="ggaren"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>161237</attachid>
            <date>2012-08-29 08:45:49 -0700</date>
            <delta_ts>2012-08-29 17:24:26 -0700</delta_ts>
            <desc>Removed s_isInitialized and its references.</desc>
            <filename>bug-95316.patch</filename>
            <type>text/plain</type>
            <size>24104</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTI2OTkxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDY2IEBA
CisyMDEyLTA4LTI5ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBS
ZWZhY3RvcmluZyBMTEludDo6RGF0YS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTk1MzE2LgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFRoaXMgY2hhbmdlIGFsbG93cyBpdHMgb3Bjb2RlTWFwIHRvIGJlIGVh
c2lseSBxdWVyaWVkIGZyb20gYW55IGZ1bmN0aW9uCisgICAgICAgIHdpdGhvdXQgbmVlZGluZyB0
byBnbyB0aHJvdWdoIGEgR2xvYmFsRGF0YSBvYmplY3QuICBJdCBhbHNvIGludHJvZHVjZXMKKyAg
ICAgICAgdGhlIExMSW50OjpnZXRDb2RlUHRyKCkgbWV0aG9kcyB0aGF0IHdpbGwgYmUgdXNlZCBi
eSB0aGUgTExJbnQgQyBsb29wCisgICAgICAgIGxhdGVyIHRvIHJlZGVmaW5lIGhvdyBsbGludCBz
eW1ib2xzIChvcGNvZGVzIGFuZCB0cmFtcG9saW5lIGdsdWUKKyAgICAgICAgbGFiZWxzKSBnZXQg
cmVzb2x2ZWQuCisKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJDb2RlUmVmLmg6
CisgICAgICAgIChNYWNyb0Fzc2VtYmxlckNvZGVQdHIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fz
c2VtYmxlckNvZGVQdHI6OmNyZWF0ZUxMSW50Q29kZVB0cik6CisgICAgICAgIChNYWNyb0Fzc2Vt
YmxlckNvZGVSZWYpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckNvZGVSZWY6OmNyZWF0
ZUxMSW50Q29kZVJlZik6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAg
ICAgKEpTQzo6Q29kZUJsb2NrOjphZGp1c3RQQ0lmQXRDYWxsU2l0ZSk6CisgICAgICAgIChKU0M6
OkNvZGVCbG9jazo6Ynl0ZWNvZGVPZmZzZXQpOgorICAgICAgICAqIGJ5dGVjb2RlL09wY29kZS5o
OgorICAgICAgICAgICAgUmVtb3ZlIHRoZSAnY29uc3QnIHRvIHNpbXBsaWZ5IHRoaW5ncyBhbmQg
YXZvaWQgaGF2aW5nIHRvIGRvCisgICAgICAgICAgICBhZGRpdGlvbmFsIGNhc3RzIGFuZCAjaWZk
ZWZzIGluIG1hbnkgcGxhY2VzLgorICAgICAgICAqIGJ5dGVjb2RlL1Jlc29sdmVHbG9iYWxTdGF0
dXMuY3BwOgorICAgICAgICAoSlNDOjpjb21wdXRlRm9yTExJbnQpOgorICAgICAgICAqIGJ5dGVj
b21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2Vu
ZXJhdG9yOjpnZW5lcmF0ZSk6CisgICAgICAgICogaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3Bw
OgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6aW5pdGlhbGl6ZSk6CisgICAgICAgICogaW50
ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaDoKKyAgICAgICAgKEludGVycHJldGVyKToKKyAgICAgICAg
KiBqaXQvSklURXhjZXB0aW9ucy5jcHA6CisgICAgICAgIChKU0M6OmdlbmVyaWNUaHJvdyk6Cisg
ICAgICAgICogbGxpbnQvTExJbnREYXRhLmNwcDoKKyAgICAgICAgKExMSW50KToKKyAgICAgICAg
KEpTQzo6TExJbnQ6OmluaXRpYWxpemUpOgorICAgICAgICAqIGxsaW50L0xMSW50RGF0YS5oOgor
ICAgICAgICAoSlNDKToKKyAgICAgICAgKExMSW50KToKKyAgICAgICAgKERhdGEpOgorICAgICAg
ICAoSlNDOjpMTEludDo6ZXhjZXB0aW9uSW5zdHJ1Y3Rpb25zKToKKyAgICAgICAgKEpTQzo6TExJ
bnQ6Om9wY29kZU1hcCk6CisgICAgICAgIChKU0M6OkxMSW50OjpnZXRPcGNvZGUpOgorICAgICAg
ICAoSlNDOjpMTEludDo6Z2V0Q29kZVB0cik6CisgICAgICAgIChKU0M6OkxMSW50OjpEYXRhOjpw
ZXJmb3JtQXNzZXJ0aW9ucyk6CisgICAgICAgICogbGxpbnQvTExJbnRFeGNlcHRpb25zLmNwcDoK
KyAgICAgICAgKEpTQzo6TExJbnQ6OnJldHVyblRvVGhyb3dGb3JUaHJvd25FeGNlcHRpb24pOgor
ICAgICAgICAoSlNDOjpMTEludDo6cmV0dXJuVG9UaHJvdyk6CisgICAgICAgIChKU0M6OkxMSW50
OjpjYWxsVG9UaHJvdyk6CisgICAgICAgICogbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwOgorICAg
ICAgICAoSlNDOjpMTEludDo6TExJTlRfU0xPV19QQVRIX0RFQ0wpOgorICAgICAgICAoSlNDOjpM
TEludDo6aGFuZGxlSG9zdENhbGwpOgorICAgICAgICAqIHJ1bnRpbWUvSW5pdGlhbGl6ZVRocmVh
ZGluZy5jcHA6CisgICAgICAgIChKU0M6OmluaXRpYWxpemVUaHJlYWRpbmdPbmNlKTogSW5pdGlh
bGl6ZSB0aGUgc2luZ2xldG9uIExMSW50IGRhdGEuCisgICAgICAgICogcnVudGltZS9KU0dsb2Jh
bERhdGEuY3BwOgorICAgICAgICAoSlNDOjpKU0dsb2JhbERhdGE6OkpTR2xvYmFsRGF0YSk6Cisg
ICAgICAgICogcnVudGltZS9KU0dsb2JhbERhdGEuaDoKKyAgICAgICAgKEpTR2xvYmFsRGF0YSk6
IFJlbW92ZWQgdGhlIG5vdyB1bm5lZWRlZCBMTEludDo6RGF0YSBpbnN0YW5jZSBpbgorICAgICAg
ICAgICAgSlNHbG9iYWxEYXRhLgorICAgICAgICAqIHJ1bnRpbWUvSlNWYWx1ZS5oOgorICAgICAg
ICAoSlNWYWx1ZSk6CisKIDIwMTItMDgtMjkgIFBhdHJpY2sgR2Fuc3RlcmVyICA8cGFyb2dhQHdl
YmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZC4gQnVpbGQgZml4IGZvciAhRU5BQkxFKEpJ
VCkgYWZ0ZXIgcjEyNjk2Mi4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIv
TWFjcm9Bc3NlbWJsZXJDb2RlUmVmLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckNvZGVSZWYuaAkocmV2aXNpb24gMTI2OTkxKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckNvZGVSZWYu
aAkod29ya2luZyBjb3B5KQpAQCAtMjgsNiArMjgsNyBAQAogCiAjaW5jbHVkZSAiRGlzYXNzZW1i
bGVyLmgiCiAjaW5jbHVkZSAiRXhlY3V0YWJsZUFsbG9jYXRvci5oIgorI2luY2x1ZGUgIkxMSW50
RGF0YS5oIgogI2luY2x1ZGUgPHd0Zi9EYXRhTG9nLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQ
dHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CkBAIC0yODksMTAgKzI5MCwxMyBAQCBwdWJs
aWM6CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogCi0gICAgc3RhdGljIE1hY3JvQXNz
ZW1ibGVyQ29kZVB0ciBjcmVhdGVMTEludENvZGVQdHIodm9pZCAoKmZ1bmN0aW9uKSgpKQorI2lm
IEVOQUJMRShMTElOVCkKKyAgICBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIGNyZWF0ZUxM
SW50Q29kZVB0cihMTEludENvZGUgY29kZUlkKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGNyZWF0
ZUZyb21FeGVjdXRhYmxlQWRkcmVzcyhiaXR3aXNlX2Nhc3Q8dm9pZCo+KGZ1bmN0aW9uKSk7Cisg
ICAgICAgIHJldHVybiBjcmVhdGVGcm9tRXhlY3V0YWJsZUFkZHJlc3MoTExJbnQ6OmdldENvZGVQ
dHIoY29kZUlkKSk7CiAgICAgfQorI2VuZGlmCisKICAgICBleHBsaWNpdCBNYWNyb0Fzc2VtYmxl
ckNvZGVQdHIoUmV0dXJuQWRkcmVzc1B0ciByYSkKICAgICAgICAgOiBtX3ZhbHVlKHJhLnZhbHVl
KCkpCiAgICAgewpAQCAtMzUzLDEyICszNTcsMTQgQEAgcHVibGljOgogICAgICAgICByZXR1cm4g
TWFjcm9Bc3NlbWJsZXJDb2RlUmVmKGNvZGVQdHIpOwogICAgIH0KICAgICAKKyNpZiBFTkFCTEUo
TExJTlQpCiAgICAgLy8gSGVscGVyIGZvciBjcmVhdGluZyBzZWxmLW1hbmFnZWQgY29kZSByZWZz
IGZyb20gTExJbnQuCi0gICAgc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBjcmVhdGVMTElu
dENvZGVSZWYodm9pZCAoKmZ1bmN0aW9uKSgpKQorICAgIHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNv
ZGVSZWYgY3JlYXRlTExJbnRDb2RlUmVmKExMSW50Q29kZSBjb2RlSWQpCiAgICAgewotICAgICAg
ICByZXR1cm4gY3JlYXRlU2VsZk1hbmFnZWRDb2RlUmVmKE1hY3JvQXNzZW1ibGVyQ29kZVB0cjo6
Y3JlYXRlRnJvbUV4ZWN1dGFibGVBZGRyZXNzKGJpdHdpc2VfY2FzdDx2b2lkKj4oZnVuY3Rpb24p
KSk7CisgICAgICAgIHJldHVybiBjcmVhdGVTZWxmTWFuYWdlZENvZGVSZWYoTWFjcm9Bc3NlbWJs
ZXJDb2RlUHRyOjpjcmVhdGVGcm9tRXhlY3V0YWJsZUFkZHJlc3MoTExJbnQ6OmdldENvZGVQdHIo
Y29kZUlkKSkpOwogICAgIH0KLSAgICAKKyNlbmRpZgorCiAgICAgRXhlY3V0YWJsZU1lbW9yeUhh
bmRsZSogZXhlY3V0YWJsZU1lbW9yeSgpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4gbV9l
eGVjdXRhYmxlTWVtb3J5LmdldCgpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0NvZGVCbG9jay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0NvZGVCbG9jay5jcHAJKHJldmlzaW9uIDEyNjk5MSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNjE0LDcg
KzI2MTQsNyBAQCBJbnN0cnVjdGlvbiogQ29kZUJsb2NrOjphZGp1c3RQQ0lmQXRDYWxsCiAgICAg
b3Bjb2RlTGVuZ3RoID0gT1BDT0RFX0xFTkdUSChvcF9jYWxsX3ZhcmFyZ3MpOwogICAgIGFkanVz
dGVkUEMgPSBwb3RlbnRpYWxSZXR1cm5QQyAtIG9wY29kZUxlbmd0aDsKICAgICBpZiAoKHJldHVy
blBDT2Zmc2V0ID49IG9wY29kZUxlbmd0aCkKLSAgICAgICAgJiYgKGFkanVzdGVkUEMtPnUucG9p
bnRlciA9PSBiaXR3aXNlX2Nhc3Q8dm9pZCo+KGxsaW50X29wX2NhbGxfdmFyYXJncykpKSB7Cisg
ICAgICAgICYmIChhZGp1c3RlZFBDLT51LnBvaW50ZXIgPT0gTExJbnQ6OmdldENvZGVQdHIobGxp
bnRfb3BfY2FsbF92YXJhcmdzKSkpIHsKICAgICAgICAgcmV0dXJuIGFkanVzdGVkUEM7CiAgICAg
fQogCkBAIC0yNjIyLDkgKzI2MjIsOSBAQCBJbnN0cnVjdGlvbiogQ29kZUJsb2NrOjphZGp1c3RQ
Q0lmQXRDYWxsCiAgICAgb3Bjb2RlTGVuZ3RoID0gT1BDT0RFX0xFTkdUSChvcF9jYWxsKTsKICAg
ICBhZGp1c3RlZFBDID0gcG90ZW50aWFsUmV0dXJuUEMgLSBvcGNvZGVMZW5ndGg7CiAgICAgaWYg
KChyZXR1cm5QQ09mZnNldCA+PSBvcGNvZGVMZW5ndGgpCi0gICAgICAgICYmIChhZGp1c3RlZFBD
LT51LnBvaW50ZXIgPT0gYml0d2lzZV9jYXN0PHZvaWQqPihsbGludF9vcF9jYWxsKQotICAgICAg
ICAgICAgfHwgYWRqdXN0ZWRQQy0+dS5wb2ludGVyID09IGJpdHdpc2VfY2FzdDx2b2lkKj4obGxp
bnRfb3BfY29uc3RydWN0KQotICAgICAgICAgICAgfHwgYWRqdXN0ZWRQQy0+dS5wb2ludGVyID09
IGJpdHdpc2VfY2FzdDx2b2lkKj4obGxpbnRfb3BfY2FsbF9ldmFsKSkpIHsKKyAgICAgICAgJiYg
KGFkanVzdGVkUEMtPnUucG9pbnRlciA9PSBMTEludDo6Z2V0Q29kZVB0cihsbGludF9vcF9jYWxs
KQorICAgICAgICAgICAgfHwgYWRqdXN0ZWRQQy0+dS5wb2ludGVyID09IExMSW50OjpnZXRDb2Rl
UHRyKGxsaW50X29wX2NvbnN0cnVjdCkKKyAgICAgICAgICAgIHx8IGFkanVzdGVkUEMtPnUucG9p
bnRlciA9PSBMTEludDo6Z2V0Q29kZVB0cihsbGludF9vcF9jYWxsX2V2YWwpKSkgewogICAgICAg
ICByZXR1cm4gYWRqdXN0ZWRQQzsKICAgICB9CiAKQEAgLTI2MzYsOCArMjYzNiw4IEBAIEluc3Ry
dWN0aW9uKiBDb2RlQmxvY2s6OmFkanVzdFBDSWZBdENhbGwKIHVuc2lnbmVkIENvZGVCbG9jazo6
Ynl0ZWNvZGVPZmZzZXQoRXhlY1N0YXRlKiBleGVjLCBSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFk
ZHJlc3MpCiB7CiAjaWYgRU5BQkxFKExMSU5UKQotICAgIGlmIChyZXR1cm5BZGRyZXNzLnZhbHVl
KCkgPj0gYml0d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRfYmVnaW4pCi0gICAgICAgICYmIHJldHVy
bkFkZHJlc3MudmFsdWUoKSA8PSBiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF9lbmQpKSB7Cisg
ICAgaWYgKHJldHVybkFkZHJlc3MudmFsdWUoKSA+PSBMTEludDo6Z2V0Q29kZVB0cihsbGludF9i
ZWdpbikKKyAgICAgICAgJiYgcmV0dXJuQWRkcmVzcy52YWx1ZSgpIDw9IExMSW50OjpnZXRDb2Rl
UHRyKGxsaW50X2VuZCkpIHsKICAgICAgICAgQVNTRVJUKGV4ZWMtPmNvZGVCbG9jaygpKTsKICAg
ICAgICAgQVNTRVJUKGV4ZWMtPmNvZGVCbG9jaygpID09IHRoaXMpOwogICAgICAgICBBU1NFUlQo
SklUQ29kZTo6aXNCYXNlbGluZUNvZGUoZ2V0SklUVHlwZSgpKSk7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvT3Bjb2RlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL09wY29kZS5oCShyZXZpc2lvbiAxMjY5OTEpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT3Bjb2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTIyNiwx
MiArMjI2LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgI3VuZGVmIFZFUklGWV9PUENPREVfSUQK
IAogI2lmIEVOQUJMRShDT01QVVRFRF9HT1RPX0NMQVNTSUNfSU5URVJQUkVURVIpIHx8IEVOQUJM
RShMTElOVCkKLSNpZiBDT01QSUxFUihSVkNUKSB8fCBDT01QSUxFUihJTlRFTCkKICAgICB0eXBl
ZGVmIHZvaWQqIE9wY29kZTsKICNlbHNlCi0gICAgdHlwZWRlZiBjb25zdCB2b2lkKiBPcGNvZGU7
Ci0jZW5kaWYKLSNlbHNlCiAgICAgdHlwZWRlZiBPcGNvZGVJRCBPcGNvZGU7CiAjZW5kaWYKIApJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Jlc29sdmVHbG9iYWxTdGF0dXMu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9SZXNvbHZl
R2xvYmFsU3RhdHVzLmNwcAkocmV2aXNpb24gMTI2OTkxKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL1Jlc29sdmVHbG9iYWxTdGF0dXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01
Miw4ICs1Miw4IEBAIHN0YXRpYyBSZXNvbHZlR2xvYmFsU3RhdHVzIGNvbXB1dGVGb3JMTEkKIHsK
ICNpZiBFTkFCTEUoTExJTlQpCiAgICAgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uID0gY29kZUJs
b2NrLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpICsgYnl0ZWNvZGVJbmRleDsKLSAgICAKLSAgICBB
U1NFUlQoaW5zdHJ1Y3Rpb25bMF0udS5vcGNvZGUgPT0gbGxpbnRfb3BfcmVzb2x2ZV9nbG9iYWwp
OworCisgICAgQVNTRVJUKGluc3RydWN0aW9uWzBdLnUub3Bjb2RlID09IExMSW50OjpnZXRPcGNv
ZGUob3BfcmVzb2x2ZV9nbG9iYWwpKTsKICAgICAKICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9
IGluc3RydWN0aW9uWzNdLnUuc3RydWN0dXJlLmdldCgpOwogICAgIGlmICghc3RydWN0dXJlKQpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRv
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9C
eXRlY29kZUdlbmVyYXRvci5jcHAJKHJldmlzaW9uIDEyNjk5MSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xOTcsNyArMTk3LDcgQEAgSlNPYmplY3QqIEJ5dGVjb2RlR2VuZXJhdG9yOjpnZW5lcmF0
ZSgpCiAjaWYgRU5BQkxFKEpJVCkKICAgICAgICAgICAgICwKICNpZiBFTkFCTEUoTExJTlQpCi0g
ICAgICAgICAgICBDb2RlTG9jYXRpb25MYWJlbChNYWNyb0Fzc2VtYmxlckNvZGVQdHI6OmNyZWF0
ZUZyb21FeGVjdXRhYmxlQWRkcmVzcyhiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF9vcF9jYXRj
aCkpKQorICAgICAgICAgICAgQ29kZUxvY2F0aW9uTGFiZWwoTWFjcm9Bc3NlbWJsZXJDb2RlUHRy
OjpjcmVhdGVGcm9tRXhlY3V0YWJsZUFkZHJlc3MoTExJbnQ6OmdldENvZGVQdHIobGxpbnRfb3Bf
Y2F0Y2gpKSkKICNlbHNlCiAgICAgICAgICAgICBDb2RlTG9jYXRpb25MYWJlbCgpCiAjZW5kaWYK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJl
dGVyLmNwcAkocmV2aXNpb24gMTI2OTkxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVy
cHJldGVyL0ludGVycHJldGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjg0LDkgKzI4NCw4IEBA
IEludGVycHJldGVyOjp+SW50ZXJwcmV0ZXIoKQogI2VuZGlmCiB9CiAKLXZvaWQgSW50ZXJwcmV0
ZXI6OmluaXRpYWxpemUoTExJbnQ6OkRhdGEqIGxsaW50RGF0YSwgYm9vbCBjYW5Vc2VKSVQpCit2
b2lkIEludGVycHJldGVyOjppbml0aWFsaXplKGJvb2wgY2FuVXNlSklUKQogewotICAgIFVOVVNF
RF9QQVJBTShsbGludERhdGEpOwogICAgIFVOVVNFRF9QQVJBTShjYW5Vc2VKSVQpOwogCiAgICAg
Ly8gSWYgd2UgaGF2ZSBMTEludCwgdGhlbiB3ZSBzaG91bGRuJ3QgYmUgYnVpbGRpbmcgYW55IGtp
bmQgb2YgY2xhc3NpYyBpbnRlcnByZXRlci4KQEAgLTI5NSw3ICsyOTQsNyBAQCB2b2lkIEludGVy
cHJldGVyOjppbml0aWFsaXplKExMSW50OjpEYXRhCiAjZW5kaWYKIAogI2lmIEVOQUJMRShMTElO
VCkKLSAgICBtX29wY29kZVRhYmxlID0gbGxpbnREYXRhLT5vcGNvZGVNYXAoKTsKKyAgICBtX29w
Y29kZVRhYmxlID0gTExJbnQ6Om9wY29kZU1hcCgpOwogICAgIGZvciAoaW50IGkgPSAwOyBpIDwg
bnVtT3Bjb2RlSURzOyArK2kpCiAgICAgICAgIG1fb3Bjb2RlSURUYWJsZS5hZGQobV9vcGNvZGVU
YWJsZVtpXSwgc3RhdGljX2Nhc3Q8T3Bjb2RlSUQ+KGkpKTsKICAgICBtX2NsYXNzaWNFbmFibGVk
ID0gZmFsc2U7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJw
cmV0ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIv
SW50ZXJwcmV0ZXIuaAkocmV2aXNpb24gMTI2OTkxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ludGVycHJldGVyL0ludGVycHJldGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTE4Nyw3ICsxODcs
NyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgSW50ZXJwcmV0ZXIoKTsKICAgICAgICAgfklu
dGVycHJldGVyKCk7CiAgICAgICAgIAotICAgICAgICB2b2lkIGluaXRpYWxpemUoTExJbnQ6OkRh
dGEqLCBib29sIGNhblVzZUpJVCk7CisgICAgICAgIHZvaWQgaW5pdGlhbGl6ZShib29sIGNhblVz
ZUpJVCk7CiAKICAgICAgICAgUmVnaXN0ZXJGaWxlJiByZWdpc3RlckZpbGUoKSB7IHJldHVybiBt
X3JlZ2lzdGVyRmlsZTsgfQogICAgICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklURXhjZXB0aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRFeGNlcHRpb25zLmNwcAkocmV2aXNpb24gMTI2OTkxKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRFeGNlcHRpb25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTAsNyAr
NTAsNyBAQCBFeGNlcHRpb25IYW5kbGVyIGdlbmVyaWNUaHJvdyhKU0dsb2JhbERhCiAgICAgICAg
IGNhdGNoUm91dGluZSA9IGhhbmRsZXItPm5hdGl2ZUNvZGUuZXhlY3V0YWJsZUFkZHJlc3MoKTsK
ICAgICAgICAgY2F0Y2hQQ0ZvckludGVycHJldGVyID0gJmNhbGxGcmFtZS0+Y29kZUJsb2NrKCkt
Pmluc3RydWN0aW9ucygpW2hhbmRsZXItPnRhcmdldF07CiAgICAgfSBlbHNlCi0gICAgICAgIGNh
dGNoUm91dGluZSA9IEZ1bmN0aW9uUHRyKGN0aU9wVGhyb3dOb3RDYXVnaHQpLnZhbHVlKCk7Cisg
ICAgICAgIGNhdGNoUm91dGluZSA9IEZ1bmN0aW9uUHRyKExMSW50OjpnZXRDb2RlUHRyKGN0aU9w
VGhyb3dOb3RDYXVnaHQpKS52YWx1ZSgpOwogICAgIAogICAgIGdsb2JhbERhdGEtPmNhbGxGcmFt
ZUZvclRocm93ID0gY2FsbEZyYW1lOwogICAgIGdsb2JhbERhdGEtPnRhcmdldE1hY2hpbmVQQ0Zv
clRocm93ID0gY2F0Y2hSb3V0aW5lOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xMSW50RGF0YS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xMSW50RGF0YS5jcHAJKHJldmlzaW9uIDEyNjk5MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9MTEludERhdGEuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMSwyMCArMzEsMjUgQEAK
ICNpbmNsdWRlICJCeXRlY29kZUNvbnZlbnRpb25zLmgiCiAjaW5jbHVkZSAiQ29kZVR5cGUuaCIK
ICNpbmNsdWRlICJJbnN0cnVjdGlvbi5oIgotI2luY2x1ZGUgIkxvd0xldmVsSW50ZXJwcmV0ZXIu
aCIKICNpbmNsdWRlICJPcGNvZGUuaCIKIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBMTElu
dCB7CiAKLURhdGE6OkRhdGEoKQotICAgIDogbV9leGNlcHRpb25JbnN0cnVjdGlvbnMobmV3IElu
c3RydWN0aW9uW21heE9wY29kZUxlbmd0aCArIDFdKQotICAgICwgbV9vcGNvZGVNYXAobmV3IE9w
Y29kZVtudW1PcGNvZGVJRHNdKQorSW5zdHJ1Y3Rpb24qIERhdGE6OnNfZXhjZXB0aW9uSW5zdHJ1
Y3Rpb25zID0gMDsKK09wY29kZSogRGF0YTo6c19vcGNvZGVNYXAgPSAwOworCit2b2lkIGluaXRp
YWxpemUoKQogeworICAgIERhdGE6OnNfZXhjZXB0aW9uSW5zdHJ1Y3Rpb25zID0gbmV3IEluc3Ry
dWN0aW9uW21heE9wY29kZUxlbmd0aCArIDFdOworICAgIERhdGE6OnNfb3Bjb2RlTWFwID0gbmV3
IE9wY29kZVtudW1PcGNvZGVJRHNdOworCiAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBtYXhPcGNv
ZGVMZW5ndGggKyAxOyArK2kpCi0gICAgICAgIG1fZXhjZXB0aW9uSW5zdHJ1Y3Rpb25zW2ldLnUu
cG9pbnRlciA9IGJpdHdpc2VfY2FzdDx2b2lkKj4oJmxsaW50X3Rocm93X2Zyb21fc2xvd19wYXRo
X3RyYW1wb2xpbmUpOwotI2RlZmluZSBPUENPREVfRU5UUlkob3Bjb2RlLCBsZW5ndGgpIG1fb3Bj
b2RlTWFwW29wY29kZV0gPSBiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF8jI29wY29kZSk7Cisg
ICAgICAgIERhdGE6OnNfZXhjZXB0aW9uSW5zdHJ1Y3Rpb25zW2ldLnUucG9pbnRlciA9CisgICAg
ICAgICAgICBMTEludDo6Z2V0Q29kZVB0cihsbGludF90aHJvd19mcm9tX3Nsb3dfcGF0aF90cmFt
cG9saW5lKTsKKyAgICAjZGVmaW5lIE9QQ09ERV9FTlRSWShvcGNvZGUsIGxlbmd0aCkgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIERhdGE6OnNfb3Bjb2RlTWFw
W29wY29kZV0gPSBMTEludDo6Z2V0Q29kZVB0cihsbGludF8jI29wY29kZSk7CiAgICAgRk9SX0VB
Q0hfT1BDT0RFX0lEKE9QQ09ERV9FTlRSWSk7Ci0jdW5kZWYgT1BDT0RFX0VOVFJZCisgICAgI3Vu
ZGVmIE9QQ09ERV9FTlRSWQogfQogCiAjaWYgQ09NUElMRVIoQ0xBTkcpCkBAIC0xMjAsMTIgKzEy
NSw2IEBAIHZvaWQgRGF0YTo6cGVyZm9ybUFzc2VydGlvbnMoSlNHbG9iYWxEYXQKICNwcmFnbWEg
Y2xhbmcgZGlhZ25vc3RpYyBwb3AKICNlbmRpZgogCi1EYXRhOjp+RGF0YSgpCi17Ci0gICAgZGVs
ZXRlW10gbV9leGNlcHRpb25JbnN0cnVjdGlvbnM7Ci0gICAgZGVsZXRlW10gbV9vcGNvZGVNYXA7
Ci19Ci0KIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpMTEludAogCiAjZW5kaWYgLy8gRU5BQkxFKExM
SU5UKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RGF0YS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludERhdGEuaAkocmV2aXNp
b24gMTI2OTkxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RGF0YS5oCSh3
b3JraW5nIGNvcHkpCkBAIC0yNiw2ICsyNiw3IEBACiAjaWZuZGVmIExMSW50RGF0YV9oCiAjZGVm
aW5lIExMSW50RGF0YV9oCiAKKyNpbmNsdWRlICJKU1ZhbHVlLmgiCiAjaW5jbHVkZSAiT3Bjb2Rl
LmgiCiAjaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+CiAKQEAgLTM0LDMwICszNSw1NSBAQCBuYW1l
c3BhY2UgSlNDIHsKIGNsYXNzIEpTR2xvYmFsRGF0YTsKIHN0cnVjdCBJbnN0cnVjdGlvbjsKIAor
dHlwZWRlZiB2b2lkICgqTExJbnRDb2RlKSgpOworCiBuYW1lc3BhY2UgTExJbnQgewogCiAjaWYg
RU5BQkxFKExMSU5UKQorCiBjbGFzcyBEYXRhIHsKIHB1YmxpYzoKLSAgICBEYXRhKCk7Ci0gICAg
fkRhdGEoKTsKLSAgICAKLSAgICB2b2lkIHBlcmZvcm1Bc3NlcnRpb25zKEpTR2xvYmFsRGF0YSYp
OwotICAgIAotICAgIEluc3RydWN0aW9uKiBleGNlcHRpb25JbnN0cnVjdGlvbnMoKQotICAgIHsK
LSAgICAgICAgcmV0dXJuIG1fZXhjZXB0aW9uSW5zdHJ1Y3Rpb25zOwotICAgIH0KLSAgICAKLSAg
ICBPcGNvZGUqIG9wY29kZU1hcCgpCi0gICAgewotICAgICAgICByZXR1cm4gbV9vcGNvZGVNYXA7
Ci0gICAgfQorICAgIHN0YXRpYyB2b2lkIHBlcmZvcm1Bc3NlcnRpb25zKEpTR2xvYmFsRGF0YSYp
OworCiBwcml2YXRlOgotICAgIEluc3RydWN0aW9uKiBtX2V4Y2VwdGlvbkluc3RydWN0aW9uczsK
LSAgICBPcGNvZGUqIG1fb3Bjb2RlTWFwOworICAgIHN0YXRpYyBJbnN0cnVjdGlvbiogc19leGNl
cHRpb25JbnN0cnVjdGlvbnM7CisgICAgc3RhdGljIE9wY29kZSogc19vcGNvZGVNYXA7CisKKyAg
ICBmcmllbmQgdm9pZCBpbml0aWFsaXplKCk7CisKKyAgICBmcmllbmQgSW5zdHJ1Y3Rpb24qIGV4
Y2VwdGlvbkluc3RydWN0aW9ucygpOworICAgIGZyaWVuZCBPcGNvZGUqIG9wY29kZU1hcCgpOwor
ICAgIGZyaWVuZCBPcGNvZGUgZ2V0T3Bjb2RlKE9wY29kZUlEKTsKKyAgICBmcmllbmQgdm9pZCog
Z2V0Q29kZVB0cihPcGNvZGVJRCk7CiB9OwotI2Vsc2UgLy8gRU5BQkxFKExMSU5UKQorCit2b2lk
IGluaXRpYWxpemUoKTsKKworaW5saW5lIEluc3RydWN0aW9uKiBleGNlcHRpb25JbnN0cnVjdGlv
bnMoKQoreworICAgIHJldHVybiBEYXRhOjpzX2V4Y2VwdGlvbkluc3RydWN0aW9uczsKK30KKyAg
ICAKK2lubGluZSBPcGNvZGUqIG9wY29kZU1hcCgpCit7CisgICAgcmV0dXJuIERhdGE6OnNfb3Bj
b2RlTWFwOworfQorCitpbmxpbmUgT3Bjb2RlIGdldE9wY29kZShPcGNvZGVJRCBpZCkKK3sKKyNp
ZiBIQVZFKENPTVBVVEVEX0dPVE8pCisgICAgcmV0dXJuIERhdGE6OnNfb3Bjb2RlTWFwW2lkXTsK
KyNlbHNlCisgICAgcmV0dXJuIHN0YXRpY19jYXN0PE9wY29kZT4oaWQpOworI2VuZGlmCit9CisK
K0FMV0FZU19JTkxJTkUgdm9pZCogZ2V0Q29kZVB0cihPcGNvZGVJRCBpZCkKK3sKKyAgICByZXR1
cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oZ2V0T3Bjb2RlKGlkKSk7Cit9CisKKyNlbHNlIC8v
ICFFTkFCTEUoTExJTlQpCiAKICNpZiBDT01QSUxFUihDTEFORykKICNwcmFnbWEgY2xhbmcgZGlh
Z25vc3RpYyBwdXNoCkBAIC02NiwyNiArOTIsMzAgQEAgcHJpdmF0ZToKIAogY2xhc3MgRGF0YSB7
CiBwdWJsaWM6Ci0gICAgdm9pZCBwZXJmb3JtQXNzZXJ0aW9ucyhKU0dsb2JhbERhdGEmKSB7IH0K
LQotICAgIEluc3RydWN0aW9uKiBleGNlcHRpb25JbnN0cnVjdGlvbnMoKQotICAgIHsKLSAgICAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLSAgICAK
LSAgICBPcGNvZGUqIG9wY29kZU1hcCgpCi0gICAgewotICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQorICAgIHN0YXRpYyB2b2lkIHBlcmZvcm1B
c3NlcnRpb25zKEpTR2xvYmFsRGF0YSYpIHsgfQogfTsKIAogI2lmIENPTVBJTEVSKENMQU5HKQog
I3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHBvcAogI2VuZGlmCiAKLSNlbmRpZiAvLyBFTkFCTEUo
TExJTlQpCisjZW5kaWYgLy8gIUVOQUJMRShMTElOVCkKKworQUxXQVlTX0lOTElORSB2b2lkKiBn
ZXRPcGNvZGUodm9pZCBsbGludE9wY29kZSgpKQoreworICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8
dm9pZCo+KGxsaW50T3Bjb2RlKTsKK30KKworQUxXQVlTX0lOTElORSB2b2lkKiBnZXRDb2RlUHRy
KHZvaWQgZ2x1ZUhlbHBlcigpKQoreworICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8dm9pZCo+KGds
dWVIZWxwZXIpOworfQorCitBTFdBWVNfSU5MSU5FIHZvaWQqIGdldENvZGVQdHIoSlNDOjpFbmNv
ZGVkSlNWYWx1ZSBnbHVlSGVscGVyKCkpCit7CisgICAgcmV0dXJuIGJpdHdpc2VfY2FzdDx2b2lk
Kj4oZ2x1ZUhlbHBlcik7Cit9CisKIAogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkxMSW50CiAKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEV4Y2VwdGlvbnMuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEV4Y2VwdGlvbnMuY3Bw
CShyZXZpc2lvbiAxMjY5OTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRF
eGNlcHRpb25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjAsNyArNjAsOCBAQCB2b2lkIGludGVy
cHJldGVyVGhyb3dJbkNhbGxlcihFeGVjU3RhdGUqCiAKIEluc3RydWN0aW9uKiByZXR1cm5Ub1Ro
cm93Rm9yVGhyb3duRXhjZXB0aW9uKEV4ZWNTdGF0ZSogZXhlYykKIHsKLSAgICByZXR1cm4gZXhl
Yy0+Z2xvYmFsRGF0YSgpLmxsaW50RGF0YS5leGNlcHRpb25JbnN0cnVjdGlvbnMoKTsKKyAgICBV
TlVTRURfUEFSQU0oZXhlYyk7CisgICAgcmV0dXJuIExMSW50OjpleGNlcHRpb25JbnN0cnVjdGlv
bnMoKTsKIH0KIAogSW5zdHJ1Y3Rpb24qIHJldHVyblRvVGhyb3coRXhlY1N0YXRlKiBleGVjLCBJ
bnN0cnVjdGlvbiogcGMpCkBAIC03Myw3ICs3NCw3IEBAIEluc3RydWN0aW9uKiByZXR1cm5Ub1Ro
cm93KEV4ZWNTdGF0ZSogZXgKICAgICBmaXh1cFBDZm9yRXhjZXB0aW9uSWZOZWVkZWQoZXhlYyk7
CiAgICAgZ2VuZXJpY1Rocm93KGdsb2JhbERhdGEsIGV4ZWMsIGdsb2JhbERhdGEtPmV4Y2VwdGlv
biwgcGMgLSBleGVjLT5jb2RlQmxvY2soKS0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKSk7CiAgICAg
Ci0gICAgcmV0dXJuIGdsb2JhbERhdGEtPmxsaW50RGF0YS5leGNlcHRpb25JbnN0cnVjdGlvbnMo
KTsKKyAgICByZXR1cm4gTExJbnQ6OmV4Y2VwdGlvbkluc3RydWN0aW9ucygpOwogfQogCiB2b2lk
KiBjYWxsVG9UaHJvdyhFeGVjU3RhdGUqIGV4ZWMsIEluc3RydWN0aW9uKiBwYykKQEAgLTg1LDgg
Kzg2LDggQEAgdm9pZCogY2FsbFRvVGhyb3coRXhlY1N0YXRlKiBleGVjLCBJbnN0cgogI2VuZGlm
CiAgICAgZml4dXBQQ2ZvckV4Y2VwdGlvbklmTmVlZGVkKGV4ZWMpOwogICAgIGdlbmVyaWNUaHJv
dyhnbG9iYWxEYXRhLCBleGVjLCBnbG9iYWxEYXRhLT5leGNlcHRpb24sIHBjIC0gZXhlYy0+Y29k
ZUJsb2NrKCktPmluc3RydWN0aW9ucygpLmJlZ2luKCkpOwotICAgIAotICAgIHJldHVybiBiaXR3
aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF90aHJvd19kdXJpbmdfY2FsbF90cmFtcG9saW5lKTsKKwor
ICAgIHJldHVybiBMTEludDo6Z2V0Q29kZVB0cihsbGludF90aHJvd19kdXJpbmdfY2FsbF90cmFt
cG9saW5lKTsKIH0KIAogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkxMSW50CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAJKHJldmlzaW9uIDEy
Njk5MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTg3MCwxMCArODcwLDEwIEBAIExMSU5UX1NMT1dfUEFUSF9ERUNM
KHNsb3dfcGF0aF9nZXRfYnlfaWQKICAgICAgICAgICAgIHBjWzRdLnUuc3RydWN0dXJlLnNldCgK
ICAgICAgICAgICAgICAgICBnbG9iYWxEYXRhLCBjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgp
LCBzdHJ1Y3R1cmUpOwogICAgICAgICAgICAgaWYgKGlzSW5saW5lT2Zmc2V0KHNsb3QuY2FjaGVk
T2Zmc2V0KCkpKSB7Ci0gICAgICAgICAgICAgICAgcGNbMF0udS5vcGNvZGUgPSBiaXR3aXNlX2Nh
c3Q8dm9pZCo+KCZsbGludF9vcF9nZXRfYnlfaWQpOworICAgICAgICAgICAgICAgIHBjWzBdLnUu
b3Bjb2RlID0gTExJbnQ6OmdldE9wY29kZShsbGludF9vcF9nZXRfYnlfaWQpOwogICAgICAgICAg
ICAgICAgIHBjWzVdLnUub3BlcmFuZCA9IG9mZnNldEluSW5saW5lU3RvcmFnZShzbG90LmNhY2hl
ZE9mZnNldCgpKSAqIHNpemVvZihKU1ZhbHVlKSArIEpTT2JqZWN0OjpvZmZzZXRPZklubGluZVN0
b3JhZ2UoKTsKICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgcGNbMF0udS5v
cGNvZGUgPSBiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF9vcF9nZXRfYnlfaWRfb3V0X29mX2xp
bmUpOworICAgICAgICAgICAgICAgIHBjWzBdLnUub3Bjb2RlID0gTExJbnQ6OmdldE9wY29kZShs
bGludF9vcF9nZXRfYnlfaWRfb3V0X29mX2xpbmUpOwogICAgICAgICAgICAgICAgIHBjWzVdLnUu
b3BlcmFuZCA9IG9mZnNldEluT3V0T2ZMaW5lU3RvcmFnZShzbG90LmNhY2hlZE9mZnNldCgpKSAq
IHNpemVvZihKU1ZhbHVlKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtOTI2LDcgKzky
Niw3IEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9wdXRfYnlfaWQKICAgICAgICAg
ICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgIC8vIFRoaXMgaXMgbmVlZGVkIGJlY2F1
c2Ugc29tZSBvZiB0aGUgbWV0aG9kcyB3ZSBjYWxsCiAgICAgICAgICAgICAgICAgICAgIC8vIGJl
bG93IG1heSBHQy4KLSAgICAgICAgICAgICAgICAgICAgcGNbMF0udS5vcGNvZGUgPSBiaXR3aXNl
X2Nhc3Q8dm9pZCo+KCZsbGludF9vcF9wdXRfYnlfaWQpOworICAgICAgICAgICAgICAgICAgICBw
Y1swXS51Lm9wY29kZSA9IExMSW50OjpnZXRPcGNvZGUobGxpbnRfb3BfcHV0X2J5X2lkKTsKIAog
ICAgICAgICAgICAgICAgICAgICBub3JtYWxpemVQcm90b3R5cGVDaGFpbihleGVjLCBiYXNlQ2Vs
bCk7CiAgICAgICAgICAgICAgICAgICAgIApAQCAtOTQ2LDI0ICs5NDYsMjQgQEAgTExJTlRfU0xP
V19QQVRIX0RFQ0woc2xvd19wYXRoX3B1dF9ieV9pZAogICAgICAgICAgICAgICAgICAgICAKICAg
ICAgICAgICAgICAgICAgICAgaWYgKHBjWzhdLnUub3BlcmFuZCkgewogICAgICAgICAgICAgICAg
ICAgICAgICAgaWYgKGlzSW5saW5lT2Zmc2V0KHNsb3QuY2FjaGVkT2Zmc2V0KCkpKQotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHBjWzBdLnUub3Bjb2RlID0gYml0d2lzZV9jYXN0PHZvaWQq
PigmbGxpbnRfb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fZGlyZWN0KTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBwY1swXS51Lm9wY29kZSA9IExMSW50OjpnZXRPcGNvZGUobGxpbnRfb3Bf
cHV0X2J5X2lkX3RyYW5zaXRpb25fZGlyZWN0KTsKICAgICAgICAgICAgICAgICAgICAgICAgIGVs
c2UKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBwY1swXS51Lm9wY29kZSA9IGJpdHdpc2Vf
Y2FzdDx2b2lkKj4oJmxsaW50X29wX3B1dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVjdF9vdXRfb2Zf
bGluZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGNbMF0udS5vcGNvZGUgPSBMTElu
dDo6Z2V0T3Bjb2RlKGxsaW50X29wX3B1dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVjdF9vdXRfb2Zf
bGluZSk7CiAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAg
ICAgICBpZiAoaXNJbmxpbmVPZmZzZXQoc2xvdC5jYWNoZWRPZmZzZXQoKSkpCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcGNbMF0udS5vcGNvZGUgPSBiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZs
bGludF9vcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWwpOworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHBjWzBdLnUub3Bjb2RlID0gTExJbnQ6OmdldE9wY29kZShsbGludF9vcF9wdXRf
YnlfaWRfdHJhbnNpdGlvbl9ub3JtYWwpOwogICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBjWzBdLnUub3Bjb2RlID0gYml0d2lzZV9jYXN0
PHZvaWQqPigmbGxpbnRfb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFsX291dF9vZl9saW5l
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwY1swXS51Lm9wY29kZSA9IExMSW50Ojpn
ZXRPcGNvZGUobGxpbnRfb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFsX291dF9vZl9saW5l
KTsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg
IH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgcGNbNF0udS5zdHJ1Y3R1cmUuc2V0KAogICAgICAg
ICAgICAgICAgICAgICBnbG9iYWxEYXRhLCBjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLCBz
dHJ1Y3R1cmUpOwogICAgICAgICAgICAgICAgIGlmIChpc0lubGluZU9mZnNldChzbG90LmNhY2hl
ZE9mZnNldCgpKSkgewotICAgICAgICAgICAgICAgICAgICBwY1swXS51Lm9wY29kZSA9IGJpdHdp
c2VfY2FzdDx2b2lkKj4oJmxsaW50X29wX3B1dF9ieV9pZCk7CisgICAgICAgICAgICAgICAgICAg
IHBjWzBdLnUub3Bjb2RlID0gTExJbnQ6OmdldE9wY29kZShsbGludF9vcF9wdXRfYnlfaWQpOwog
ICAgICAgICAgICAgICAgICAgICBwY1s1XS51Lm9wZXJhbmQgPSBvZmZzZXRJbklubGluZVN0b3Jh
Z2Uoc2xvdC5jYWNoZWRPZmZzZXQoKSkgKiBzaXplb2YoSlNWYWx1ZSkgKyBKU09iamVjdDo6b2Zm
c2V0T2ZJbmxpbmVTdG9yYWdlKCk7CiAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAg
ICAgICAgICAgICAgcGNbMF0udS5vcGNvZGUgPSBiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF9v
cF9wdXRfYnlfaWRfb3V0X29mX2xpbmUpOworICAgICAgICAgICAgICAgICAgICBwY1swXS51Lm9w
Y29kZSA9IExMSW50OjpnZXRPcGNvZGUobGxpbnRfb3BfcHV0X2J5X2lkX291dF9vZl9saW5lKTsK
ICAgICAgICAgICAgICAgICAgICAgcGNbNV0udS5vcGVyYW5kID0gb2Zmc2V0SW5PdXRPZkxpbmVT
dG9yYWdlKHNsb3QuY2FjaGVkT2Zmc2V0KCkpICogc2l6ZW9mKEpTVmFsdWUpOwogICAgICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgIH0KQEAgLTEyOTUsNyArMTI5NSw3IEBAIHN0YXRpYyBTbG93
UGF0aFJldHVyblR5cGUgaGFuZGxlSG9zdENhbGwKICAgICAgICAgICAgIGV4ZWNDYWxsZWUtPnNl
dENhbGxlZShhc09iamVjdChjYWxsZWUpKTsKICAgICAgICAgICAgIGdsb2JhbERhdGEuaG9zdENh
bGxSZXR1cm5WYWx1ZSA9IEpTVmFsdWU6OmRlY29kZShjYWxsRGF0YS5uYXRpdmUuZnVuY3Rpb24o
ZXhlY0NhbGxlZSkpOwogICAgICAgICAgICAgCi0gICAgICAgICAgICBMTElOVF9DQUxMX1JFVFVS
TihleGVjQ2FsbGVlLCBwYywgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oZ2V0SG9zdENhbGxSZXR1
cm5WYWx1ZSkpOworICAgICAgICAgICAgTExJTlRfQ0FMTF9SRVRVUk4oZXhlY0NhbGxlZSwgcGMs
IExMSW50OjpnZXRDb2RlUHRyKGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpKTsKICAgICAgICAgfQog
ICAgICAgICAKICNpZiBMTElOVF9TTE9XX1BBVEhfVFJBQ0lORwpAQCAtMTMxOCw3ICsxMzE4LDcg
QEAgc3RhdGljIFNsb3dQYXRoUmV0dXJuVHlwZSBoYW5kbGVIb3N0Q2FsbAogICAgICAgICBleGVj
Q2FsbGVlLT5zZXRDYWxsZWUoYXNPYmplY3QoY2FsbGVlKSk7CiAgICAgICAgIGdsb2JhbERhdGEu
aG9zdENhbGxSZXR1cm5WYWx1ZSA9IEpTVmFsdWU6OmRlY29kZShjb25zdHJ1Y3REYXRhLm5hdGl2
ZS5mdW5jdGlvbihleGVjQ2FsbGVlKSk7CiAKLSAgICAgICAgTExJTlRfQ0FMTF9SRVRVUk4oZXhl
Y0NhbGxlZSwgcGMsIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KGdldEhvc3RDYWxsUmV0dXJuVmFs
dWUpKTsKKyAgICAgICAgTExJTlRfQ0FMTF9SRVRVUk4oZXhlY0NhbGxlZSwgcGMsIExMSW50Ojpn
ZXRDb2RlUHRyKGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpKTsKICAgICB9CiAgICAgCiAjaWYgTExJ
TlRfU0xPV19QQVRIX1RSQUNJTkcKQEAgLTE0NDEsNyArMTQ0MSw3IEBAIExMSU5UX1NMT1dfUEFU
SF9ERUNMKHNsb3dfcGF0aF9jYWxsX2V2YWwKICAgICBleGVjQ2FsbGVlLT5zZXRDYWxsZXJGcmFt
ZShleGVjKTsKICAgICBleGVjQ2FsbGVlLT51bmNoZWNrZWRSKFJlZ2lzdGVyRmlsZTo6Q2FsbGVl
KSA9IGNhbGxlZUFzVmFsdWU7CiAgICAgZXhlY0NhbGxlZS0+c2V0U2NvcGVDaGFpbihleGVjLT5z
Y29wZUNoYWluKCkpOwotICAgIGV4ZWNDYWxsZWUtPnNldFJldHVyblBDKGJpdHdpc2VfY2FzdDxJ
bnN0cnVjdGlvbio+KCZsbGludF9nZW5lcmljX3JldHVybl9wb2ludCkpOworICAgIGV4ZWNDYWxs
ZWUtPnNldFJldHVyblBDKExMSW50OjpnZXRDb2RlUHRyKGxsaW50X2dlbmVyaWNfcmV0dXJuX3Bv
aW50KSk7CiAgICAgZXhlY0NhbGxlZS0+c2V0Q29kZUJsb2NrKDApOwogICAgIGV4ZWMtPnNldEN1
cnJlbnRWUEMocGMgKyBPUENPREVfTEVOR1RIKG9wX2NhbGxfZXZhbCkpOwogICAgIApAQCAtMTQ0
OSw3ICsxNDQ5LDcgQEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2NhbGxfZXZhbAog
ICAgICAgICByZXR1cm4gc2V0VXBDYWxsKGV4ZWNDYWxsZWUsIHBjLCBDb2RlRm9yQ2FsbCwgY2Fs
bGVlQXNWYWx1ZSk7CiAgICAgCiAgICAgZ2xvYmFsRGF0YS5ob3N0Q2FsbFJldHVyblZhbHVlID0g
ZXZhbChleGVjQ2FsbGVlKTsKLSAgICBMTElOVF9DQUxMX1JFVFVSTihleGVjQ2FsbGVlLCBwYywg
cmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkpOworICAgIExM
SU5UX0NBTExfUkVUVVJOKGV4ZWNDYWxsZWUsIHBjLCBMTEludDo6Z2V0Q29kZVB0cihnZXRIb3N0
Q2FsbFJldHVyblZhbHVlKSk7CiB9CiAKIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF90
ZWFyX29mZl9hY3RpdmF0aW9uKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SW5pdGlhbGl6ZVRocmVhZGluZy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSW5pdGlhbGl6ZVRocmVhZGluZy5jcHAJKHJldmlzaW9uIDEyNjk5MSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0luaXRpYWxpemVUaHJlYWRpbmcuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVkZSAiSWRlbnRpZmllci5oIgog
I2luY2x1ZGUgIkpTRGF0ZU1hdGguaCIKICNpbmNsdWRlICJKU0dsb2JhbE9iamVjdC5oIgorI2lu
Y2x1ZGUgIkxMSW50RGF0YS5oIgogI2luY2x1ZGUgIlVTdHJpbmcuaCIKICNpbmNsdWRlICJXcml0
ZUJhcnJpZXIuaCIKICNpbmNsdWRlIDx3dGYvZHRvYS5oPgpAQCAtNjEsNiArNjIsOSBAQCBzdGF0
aWMgdm9pZCBpbml0aWFsaXplVGhyZWFkaW5nT25jZSgpCiAgICAgRXhlY3V0YWJsZUFsbG9jYXRv
cjo6aW5pdGlhbGl6ZUFsbG9jYXRvcigpOwogI2VuZGlmCiAgICAgUmVnaXN0ZXJGaWxlOjppbml0
aWFsaXplVGhyZWFkaW5nKCk7CisjaWYgRU5BQkxFKExMSU5UKQorICAgIExMSW50Ojppbml0aWFs
aXplKCk7CisjZW5kaWYKIH0KIAogdm9pZCBpbml0aWFsaXplVGhyZWFkaW5nKCkKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRhLmNwcAkocmV2aXNp
b24gMTI2OTkxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRh
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjEyLDEzICsyMTIsMTMgQEAgSlNHbG9iYWxEYXRhOjpK
U0dsb2JhbERhdGEoR2xvYmFsRGF0YVR5cAogICAgIGppdFN0dWJzID0gYWRvcHRQdHIobmV3IEpJ
VFRodW5rcyh0aGlzKSk7CiAjZW5kaWYKICAgICAKLSAgICBpbnRlcnByZXRlci0+aW5pdGlhbGl6
ZSgmbGxpbnREYXRhLCB0aGlzLT5jYW5Vc2VKSVQoKSk7CisgICAgaW50ZXJwcmV0ZXItPmluaXRp
YWxpemUodGhpcy0+Y2FuVXNlSklUKCkpOwogICAgIAogICAgIGluaXRpYWxpemVIb3N0Q2FsbFJl
dHVyblZhbHVlKCk7IC8vIFRoaXMgaXMgbmVlZGVkIHRvIGNvbnZpbmNlIHRoZSBsaW5rZXIgbm90
IHRvIGRyb3AgaG9zdCBjYWxsIHJldHVybiBzdXBwb3J0LgogCiAgICAgaGVhcC5ub3RpZnlJc1Nh
ZmVUb0NvbGxlY3QoKTsKICAgICAKLSAgICBsbGludERhdGEucGVyZm9ybUFzc2VydGlvbnMoKnRo
aXMpOworICAgIExMSW50OjpEYXRhOjpwZXJmb3JtQXNzZXJ0aW9ucygqdGhpcyk7CiB9CiAKIEpT
R2xvYmFsRGF0YTo6fkpTR2xvYmFsRGF0YSgpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0dsb2JhbERhdGEuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0dsb2JhbERhdGEuaAkocmV2aXNpb24gMTI2OTkxKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRhLmgJKHdvcmtpbmcgY29weSkKQEAgLTMx
OCw4ICszMTgsNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgY29uc3QgQ2xhc3NJbmZvKiBj
b25zdCBqc0FycmF5Q2xhc3NJbmZvOwogICAgICAgICBjb25zdCBDbGFzc0luZm8qIGNvbnN0IGpz
RmluYWxPYmplY3RDbGFzc0luZm87CiAKLSAgICAgICAgTExJbnQ6OkRhdGEgbGxpbnREYXRhOwot
CiAgICAgICAgIFJldHVybkFkZHJlc3NQdHIgZXhjZXB0aW9uTG9jYXRpb247CiAgICAgICAgIEpT
VmFsdWUgaG9zdENhbGxSZXR1cm5WYWx1ZTsKICAgICAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWVG
b3JUaHJvdzsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVmFsdWUuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1ZhbHVlLmgJKHJl
dmlzaW9uIDEyNjk5MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVmFsdWUu
aAkod29ya2luZyBjb3B5KQpAQCAtMTIxLDcgKzEyMSw2IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
ICAgICBmcmllbmQgY2xhc3MgREZHOjpPU1JFeGl0Q29tcGlsZXI7CiAgICAgICAgIGZyaWVuZCBj
bGFzcyBERkc6OlNwZWN1bGF0aXZlSklUOwogI2VuZGlmCi0gICAgICAgIGZyaWVuZCBjbGFzcyBM
TEludDo6RGF0YTsKIAogICAgIHB1YmxpYzoKICNpZiBVU0UoSlNWQUxVRTMyXzY0KQo=
</data>
<flag name="review"
          id="171968"
          type_id="1"
          status="+"
          setter="ggaren"
    />
    <flag name="commit-queue"
          id="171969"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
      

    </bug>

</bugzilla>