<?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>84058</bug_id>
          
          <creation_ts>2012-04-16 11:49:26 -0700</creation_ts>
          <short_desc>Move AudioDestinationChromium FIFO class to its own class.</short_desc>
          <delta_ts>2012-04-23 17:39:40 -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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Raymond Toy">rtoy</reporter>
          <assigned_to name="Raymond Toy">rtoy</assigned_to>
          <cc>eric.carlson</cc>
    
    <cc>feature-media-reviews</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>603314</commentid>
    <comment_count>0</comment_count>
    <who name="Raymond Toy">rtoy</who>
    <bug_when>2012-04-16 11:49:26 -0700</bug_when>
    <thetext>Move AudioDestinationChromium FIFO class to its own class.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>603316</commentid>
    <comment_count>1</comment_count>
      <attachid>137372</attachid>
    <who name="Raymond Toy">rtoy</who>
    <bug_when>2012-04-16 11:52:33 -0700</bug_when>
    <thetext>Created attachment 137372
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>603365</commentid>
    <comment_count>2</comment_count>
      <attachid>137372</attachid>
    <who name="Chris Rogers">crogers</who>
    <bug_when>2012-04-16 13:00:38 -0700</bug_when>
    <thetext>Comment on attachment 137372
Patch

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

&gt; Source/WebCore/WebCore.gypi:3177
&gt; +            &apos;platform/audio/AudioPullFIFO.h&apos;,

nit: alpha order

&gt; Source/WebCore/platform/audio/AudioPullFIFO.h:38
&gt; +// fulfill a request.

It&apos;s probably a good idea to update this comment to be a little more general.  I think the first part:

&quot;A FIFO (First In First Out) buffer to handle mismatches in&quot;

and the last part:
&quot;This FIFO will ask the provider for more data when necessary to fulfill a request.&quot;

Are good, but the middle part can be made more general -- and also maybe add the concept of &quot;pull&quot; in there (as opposed to push)

&gt; Source/WebKit/chromium/src/AudioDestinationChromium.h:34
&gt; +#include &quot;AudioPullFIFO.h&quot;

Can you forward declare this class in the header file, and move this #include to the .cpp?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>603406</commentid>
    <comment_count>3</comment_count>
      <attachid>137396</attachid>
    <who name="Raymond Toy">rtoy</who>
    <bug_when>2012-04-16 13:57:46 -0700</bug_when>
    <thetext>Created attachment 137396
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>603409</commentid>
    <comment_count>4</comment_count>
      <attachid>137372</attachid>
    <who name="Raymond Toy">rtoy</who>
    <bug_when>2012-04-16 13:58:52 -0700</bug_when>
    <thetext>Comment on attachment 137372
Patch

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

&gt;&gt; Source/WebCore/WebCore.gypi:3177
&gt;&gt; +            &apos;platform/audio/AudioPullFIFO.h&apos;,
&gt; 
&gt; nit: alpha order

Fixed.

&gt;&gt; Source/WebCore/platform/audio/AudioPullFIFO.h:38
&gt;&gt; +// fulfill a request.
&gt; 
&gt; It&apos;s probably a good idea to update this comment to be a little more general.  I think the first part:
&gt; 
&gt; &quot;A FIFO (First In First Out) buffer to handle mismatches in&quot;
&gt; 
&gt; and the last part:
&gt; &quot;This FIFO will ask the provider for more data when necessary to fulfill a request.&quot;
&gt; 
&gt; Are good, but the middle part can be made more general -- and also maybe add the concept of &quot;pull&quot; in there (as opposed to push)

Updated.

&gt;&gt; Source/WebKit/chromium/src/AudioDestinationChromium.h:34
&gt;&gt; +#include &quot;AudioPullFIFO.h&quot;
&gt; 
&gt; Can you forward declare this class in the header file, and move this #include to the .cpp?

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>604106</commentid>
    <comment_count>5</comment_count>
      <attachid>137554</attachid>
    <who name="Raymond Toy">rtoy</who>
    <bug_when>2012-04-17 10:09:53 -0700</bug_when>
    <thetext>Created attachment 137554
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>608205</commentid>
    <comment_count>6</comment_count>
      <attachid>137554</attachid>
    <who name="Chris Rogers">crogers</who>
    <bug_when>2012-04-23 17:02:53 -0700</bug_when>
    <thetext>Comment on attachment 137554
Patch

Thanks Ray!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>608237</commentid>
    <comment_count>7</comment_count>
      <attachid>137554</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-04-23 17:39:35 -0700</bug_when>
    <thetext>Comment on attachment 137554
Patch

Clearing flags on attachment: 137554

Committed r114970: &lt;http://trac.webkit.org/changeset/114970&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>608238</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-04-23 17:39:40 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>137372</attachid>
            <date>2012-04-16 11:52:33 -0700</date>
            <delta_ts>2012-04-16 13:58:52 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-84058-20120416115232.patch</filename>
            <type>text/plain</type>
            <size>22492</size>
            <attacher name="Raymond Toy">rtoy</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE0MjM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGM3MjE3NWFmZGEyMzkx
ZDIwMTcyMGI5ZGEzMDU4NDllMjMwNjQyOC4uZGE4NGVjZjc5YjBiZTEyZTVhNjliMTRjMDllMGI2
M2ViZDJmOTIwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDEyLTA0LTE2ICBSYXlt
b25kIFRveSAgPHJ0b3lAZ29vZ2xlLmNvbT4KKworICAgICAgICBNb3ZlIEF1ZGlvRGVzdGluYXRp
b25DaHJvbWl1bSBGSUZPIGNsYXNzIHRvIGl0cyBvd24gY2xhc3MuCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NDA1OAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEN1cnJlbnQgdGVzdHMgY292ZXIgdGhlIGNo
YW5nZXMuCisKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6IFVwZGF0ZSB3aXRoIG5ldyBmaWxlcy4K
KyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9BdWRpb1B1bGxGSUZPLmNwcDogQ29waWVkIGZyb20g
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQXVkaW9EZXN0aW5hdGlvbkNocm9taXVtLmNwcC4K
KyAgICAgICAgKFdlYkNvcmUpOiBSZW5hbWVkIG9sZCBjbGFzcyB0aGUgQXVkaW9QdWxsRklGTy4K
KyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvUHVsbEZJRk86OkF1ZGlvUHVsbEZJRk8pOgorICAgICAg
ICAoV2ViQ29yZTo6QXVkaW9QdWxsRklGTzo6Y29uc3VtZSk6CisgICAgICAgIChXZWJDb3JlOjpB
dWRpb1B1bGxGSUZPOjpmaW5kV3JhcExlbmd0aHMpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9Q
dWxsRklGTzo6ZmlsbEJ1ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vQXVkaW9QdWxs
RklGTy5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoQXVkaW9QdWxsRklG
Tyk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1B1bGxGSUZPOjp1cGRhdGVJbmRleCk6CisKIDIw
MTItMDQtMTYgIEphc29uIExpdSAgPGphc29uLmxpdUB0b3JjaG1vYmlsZS5jb20uY24+CiAKICAg
ICAgICAgW0JsYWNrQmVycnldIE1pc3NpbmcgcmVhZHlTdGF0ZSAyIHdoZW4gYSBYTUxIdHRwUmVx
dWVzdCBjYWxscyB4bWxodHRwLm9wZW4oIkhFQUQiLCJub3RFeGlzdC5odG1sIix0cnVlKS4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggMDRhYzViOWM2M2I2ZDI2MzA0ZWU1ZTM0ZWRmODJk
MTEwY2QyY2RkYy4uYmQ4M2U1MzUwMTZlYjM4Njg2MzY5YzZmMTk1YWM3OWQ2NmNmMzcxYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAxMi0wNC0xNiAgUmF5
bW9uZCBUb3kgIDxydG95QGdvb2dsZS5jb20+CisKKyAgICAgICAgTW92ZSBBdWRpb0Rlc3RpbmF0
aW9uQ2hyb21pdW0gRklGTyBjbGFzcyB0byBpdHMgb3duIGNsYXNzLgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODQwNTgKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZW1vdmUgcHJpdmF0ZSBGSUZPIGNsYXNz
IGFuZCB1c2UgbmV3IEF1ZGlvUHVsbEZJRk8gY2xhc3MuCisgICAgICAgICogc3JjL0F1ZGlvRGVz
dGluYXRpb25DaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0Rlc3RpbmF0aW9u
Q2hyb21pdW06OkF1ZGlvRGVzdGluYXRpb25DaHJvbWl1bSk6CisgICAgICAgICogc3JjL0F1ZGlv
RGVzdGluYXRpb25DaHJvbWl1bS5oOgorICAgICAgICAoQXVkaW9EZXN0aW5hdGlvbkNocm9taXVt
KToKKwogMjAxMi0wNC0xNSAgS2Vpc2hpIEhhdHRvcmkgIDxrZWlzaGlAd2Via2l0Lm9yZz4KIAog
ICAgICAgICBJbnRyb2R1Y2UgTWVudUl0ZW1JRCB0byBhdXRvZmlsbCBwb3B1cApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5n
eXBpCmluZGV4IDBkNjcwYWRhMjI1NGNlNGNhNjM1NTEzNTM2YzM2NWFmMjFlNzFjMmEuLjNmYTMx
OGZhMWZkNTQ1MjM2ODFjZDdmNTNkZTc4M2JkYTU4NjU4MDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAg
LTMxNzMsNiArMzE3Myw4IEBACiAgICAgICAgICAgICAncGxhdGZvcm0vYXVkaW8vQXVkaW9EU1BL
ZXJuZWxQcm9jZXNzb3IuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vYXVkaW8vQXVkaW9EZXN0
aW5hdGlvbi5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9hdWRpby9BdWRpb0ZpbGVSZWFkZXIu
aCcsCisgICAgICAgICAgICAncGxhdGZvcm0vYXVkaW8vQXVkaW9QdWxsRklGTy5jcHAnLAorICAg
ICAgICAgICAgJ3BsYXRmb3JtL2F1ZGlvL0F1ZGlvUHVsbEZJRk8uaCcsCiAgICAgICAgICAgICAn
cGxhdGZvcm0vYXVkaW8vQXVkaW9Qcm9jZXNzb3IuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0v
YXVkaW8vQXVkaW9SZXNhbXBsZXIuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9hdWRpby9B
dWRpb1Jlc2FtcGxlci5oJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL0F1ZGlvUHVsbEZJRk8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVk
aW9QdWxsRklGTy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDNlODlkZWJhNzYyOTk4YzZmOWQ1YzEzOTFlM2E3
ODcwN2VjYWRmNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL0F1ZGlvUHVsbEZJRk8uY3BwCkBAIC0wLDAgKzEsMTU0IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRlciwgSW5jLiAoIkFw
cGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVz
ZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRo
aXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJV
VE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorCisjaWYgRU5BQkxFKFdFQl9BVURJTykKKworI2luY2x1ZGUgIkF1ZGlvUHVsbEZJRk8u
aCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitBdWRpb1B1bGxGSUZPOjpBdWRpb1B1bGxGSUZP
KEF1ZGlvU291cmNlUHJvdmlkZXImIGF1ZGlvUHJvdmlkZXIsIHVuc2lnbmVkIG51bWJlck9mQ2hh
bm5lbHMsIHNpemVfdCBmaWZvTGVuZ3RoLCBzaXplX3QgcHJvdmlkZXJTaXplKQorICAgIDogbV9w
cm92aWRlcihhdWRpb1Byb3ZpZGVyKQorICAgICwgbV9maWZvQXVkaW9CdXMobnVtYmVyT2ZDaGFu
bmVscywgZmlmb0xlbmd0aCkKKyAgICAsIG1fZmlmb0xlbmd0aChmaWZvTGVuZ3RoKQorICAgICwg
bV9mcmFtZXNJbkZpZm8oMCkKKyAgICAsIG1fcmVhZEluZGV4KDApCisgICAgLCBtX3dyaXRlSW5k
ZXgoMCkKKyAgICAsIG1fcHJvdmlkZXJTaXplKHByb3ZpZGVyU2l6ZSkKKyAgICAsIG1fdGVtcEJ1
cyhudW1iZXJPZkNoYW5uZWxzLCBwcm92aWRlclNpemUpCit7Cit9CisKK3ZvaWQgQXVkaW9QdWxs
RklGTzo6Y29uc3VtZShBdWRpb0J1cyogZGVzdGluYXRpb24sIHNpemVfdCBmcmFtZXNUb0NvbnN1
bWUpCit7CisgICAgYm9vbCBpc0dvb2QgPSBkZXN0aW5hdGlvbiAmJiAoZnJhbWVzVG9Db25zdW1l
IDw9IG1fZmlmb0xlbmd0aCk7CisgICAgQVNTRVJUKGlzR29vZCk7CisgICAgaWYgKCFpc0dvb2Qp
CisgICAgICAgIHJldHVybjsKKworICAgIGlmIChmcmFtZXNUb0NvbnN1bWUgPiBtX2ZyYW1lc0lu
RmlmbykgeworICAgICAgICAvLyBXZSBkb24ndCBoYXZlIGVub3VnaCBkYXRhIGluIHRoZSBGSUZP
IHRvIGZ1bGZpbGwgdGhlIHJlcXVlc3QuIEFzayBmb3IgbW9yZSBkYXRhLgorICAgICAgICBmaWxs
QnVmZmVyKGZyYW1lc1RvQ29uc3VtZSAtIG1fZnJhbWVzSW5GaWZvKTsKKyAgICB9CisKKyAgICAv
LyBXZSBoYXZlIGVub3VnaCBkYXRhIG5vdy4gQ29weSB0aGUgcmVxdWVzdGVkIG51bWJlciBvZiBz
YW1wbGVzIHRvIHRoZSBkZXN0aW5hdGlvbi4KKworICAgIHNpemVfdCBwYXJ0MUxlbmd0aDsKKyAg
ICBzaXplX3QgcGFydDJMZW5ndGg7CisgICAgZmluZFdyYXBMZW5ndGhzKG1fcmVhZEluZGV4LCBm
cmFtZXNUb0NvbnN1bWUsIHBhcnQxTGVuZ3RoLCBwYXJ0Mkxlbmd0aCk7CisKKyAgICBzaXplX3Qg
bnVtYmVyT2ZDaGFubmVscyA9IG1fZmlmb0F1ZGlvQnVzLm51bWJlck9mQ2hhbm5lbHMoKTsKKwor
ICAgIGZvciAoc2l6ZV90IGNoYW5uZWxJbmRleCA9IDA7IGNoYW5uZWxJbmRleCA8IG51bWJlck9m
Q2hhbm5lbHM7ICsrY2hhbm5lbEluZGV4KSB7CisgICAgICAgIGZsb2F0KiBkZXN0aW5hdGlvbkRh
dGEgPSBkZXN0aW5hdGlvbi0+Y2hhbm5lbChjaGFubmVsSW5kZXgpLT5tdXRhYmxlRGF0YSgpOwor
ICAgICAgICBjb25zdCBmbG9hdCogc291cmNlRGF0YSA9IG1fZmlmb0F1ZGlvQnVzLmNoYW5uZWwo
Y2hhbm5lbEluZGV4KS0+ZGF0YSgpOworCisgICAgICAgIGJvb2wgaXNDb3B5R29vZCA9ICgobV9y
ZWFkSW5kZXggPCBtX2ZpZm9MZW5ndGgpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiAo
bV9yZWFkSW5kZXggKyBwYXJ0MUxlbmd0aCkgPD0gbV9maWZvTGVuZ3RoCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAmJiAocGFydDFMZW5ndGggPD0gZGVzdGluYXRpb24tPmxlbmd0aCgpKQor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgKHBhcnQxTGVuZ3RoICsgcGFydDJMZW5ndGgp
IDw9IGRlc3RpbmF0aW9uLT5sZW5ndGgoKSk7CisgICAgICAgIEFTU0VSVChpc0NvcHlHb29kKTsK
KyAgICAgICAgaWYgKCFpc0NvcHlHb29kKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAg
IG1lbWNweShkZXN0aW5hdGlvbkRhdGEsIHNvdXJjZURhdGEgKyBtX3JlYWRJbmRleCwgcGFydDFM
ZW5ndGggKiBzaXplb2YoKnNvdXJjZURhdGEpKTsKKyAgICAgICAgLy8gSGFuZGxlIHdyYXAgYXJv
dW5kIG9mIHRoZSBGSUZPLCBpZiBuZWVkZWQuCisgICAgICAgIGlmIChwYXJ0Mkxlbmd0aCA+IDAp
CisgICAgICAgICAgICBtZW1jcHkoZGVzdGluYXRpb25EYXRhICsgcGFydDFMZW5ndGgsIHNvdXJj
ZURhdGEsIHBhcnQyTGVuZ3RoICogc2l6ZW9mKCpzb3VyY2VEYXRhKSk7CisgICAgfQorICAgIG1f
cmVhZEluZGV4ID0gdXBkYXRlSW5kZXgobV9yZWFkSW5kZXgsIGZyYW1lc1RvQ29uc3VtZSk7Cisg
ICAgbV9mcmFtZXNJbkZpZm8gLT0gZnJhbWVzVG9Db25zdW1lOworICAgIEFTU0VSVChtX2ZyYW1l
c0luRmlmbyA+PSAwKTsKK30KKwordm9pZCBBdWRpb1B1bGxGSUZPOjpmaW5kV3JhcExlbmd0aHMo
c2l6ZV90IGluZGV4LCBzaXplX3Qgc2l6ZSwgc2l6ZV90JiBwYXJ0MUxlbmd0aCwgc2l6ZV90JiBw
YXJ0Mkxlbmd0aCkKK3sKKyAgICBBU1NFUlQoaW5kZXggPCBtX2ZpZm9MZW5ndGggJiYgc2l6ZSA8
PSBtX2ZpZm9MZW5ndGgpOworICAgIGlmIChpbmRleCA8IG1fZmlmb0xlbmd0aCAmJiBzaXplIDw9
IG1fZmlmb0xlbmd0aCkgeworICAgICAgICBpZiAoaW5kZXggKyBzaXplID4gbV9maWZvTGVuZ3Ro
KSB7CisgICAgICAgICAgICAvLyBOZWVkIHRvIHdyYXAuIEZpZ3VyZSBvdXQgdGhlIGxlbmd0aCBv
ZiBlYWNoIHBpZWNlLgorICAgICAgICAgICAgcGFydDFMZW5ndGggPSBtX2ZpZm9MZW5ndGggLSBp
bmRleDsKKyAgICAgICAgICAgIHBhcnQyTGVuZ3RoID0gc2l6ZSAtIHBhcnQxTGVuZ3RoOworICAg
ICAgICB9IGVsc2UgeworICAgICAgICAgICAgLy8gTm8gd3JhcCBuZWVkZWQuCisgICAgICAgICAg
ICBwYXJ0MUxlbmd0aCA9IHNpemU7CisgICAgICAgICAgICBwYXJ0Mkxlbmd0aCA9IDA7CisgICAg
ICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgICAvLyBJbnZhbGlkIHZhbHVlcyBmb3IgaW5kZXgg
b3Igc2l6ZS4gU2V0IHRoZSBwYXJ0IGxlbmd0aHMgdG8gemVybyBzbyBub3RoaW5nIGlzIGNvcGll
ZC4KKyAgICAgICAgcGFydDFMZW5ndGggPSAwOworICAgICAgICBwYXJ0Mkxlbmd0aCA9IDA7Cisg
ICAgfQorfQorCit2b2lkIEF1ZGlvUHVsbEZJRk86OmZpbGxCdWZmZXIoc2l6ZV90IG51bWJlck9m
RnJhbWVzKQoreworICAgIC8vIEtlZXAgYXNraW5nIHRoZSBwcm92aWRlciB0byBnaXZlIHVzIGRh
dGEgdW50aWwgd2UgaGF2ZSByZWNlaXZlZCBhdCBsZWFzdCB8bnVtYmVyT2ZGcmFtZXN8IG9mCisg
ICAgLy8gZGF0YS4gU3R1ZmYgdGhlIGRhdGEgaW50byB0aGUgRklGTy4KKyAgICBzaXplX3QgZnJh
bWVzUHJvdmlkZWQgPSAwOworCisgICAgd2hpbGUgKGZyYW1lc1Byb3ZpZGVkIDwgbnVtYmVyT2ZG
cmFtZXMpIHsKKyAgICAgICAgbV9wcm92aWRlci5wcm92aWRlSW5wdXQoJm1fdGVtcEJ1cywgbV9w
cm92aWRlclNpemUpOworCisgICAgICAgIHNpemVfdCBwYXJ0MUxlbmd0aDsKKyAgICAgICAgc2l6
ZV90IHBhcnQyTGVuZ3RoOworICAgICAgICBmaW5kV3JhcExlbmd0aHMobV93cml0ZUluZGV4LCBt
X3Byb3ZpZGVyU2l6ZSwgcGFydDFMZW5ndGgsIHBhcnQyTGVuZ3RoKTsKKworICAgICAgICBzaXpl
X3QgbnVtYmVyT2ZDaGFubmVscyA9IG1fZmlmb0F1ZGlvQnVzLm51bWJlck9mQ2hhbm5lbHMoKTsK
KyAgICAgICAgCisgICAgICAgIGZvciAoc2l6ZV90IGNoYW5uZWxJbmRleCA9IDA7IGNoYW5uZWxJ
bmRleCA8IG51bWJlck9mQ2hhbm5lbHM7ICsrY2hhbm5lbEluZGV4KSB7CisgICAgICAgICAgICBm
bG9hdCogZGVzdGluYXRpb24gPSBtX2ZpZm9BdWRpb0J1cy5jaGFubmVsKGNoYW5uZWxJbmRleCkt
Pm11dGFibGVEYXRhKCk7CisgICAgICAgICAgICBjb25zdCBmbG9hdCogc291cmNlID0gbV90ZW1w
QnVzLmNoYW5uZWwoY2hhbm5lbEluZGV4KS0+ZGF0YSgpOworCisgICAgICAgICAgICBib29sIGlz
Q29weUdvb2QgPSAocGFydDFMZW5ndGggPD0gbV9wcm92aWRlclNpemUKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAmJiAocGFydDFMZW5ndGggKyBwYXJ0Mkxlbmd0aCkgPD0gbV9wcm92
aWRlclNpemUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiAobV93cml0ZUluZGV4
IDwgbV9maWZvTGVuZ3RoKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmIChtX3dy
aXRlSW5kZXggKyBwYXJ0MUxlbmd0aCkgPD0gbV9maWZvTGVuZ3RoCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgJiYgcGFydDJMZW5ndGggPCBtX2ZpZm9MZW5ndGgpOworICAgICAgICAg
ICAgQVNTRVJUKGlzQ29weUdvb2QpOworICAgICAgICAgICAgaWYgKCFpc0NvcHlHb29kKQorICAg
ICAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAgICAgbWVtY3B5KGRlc3RpbmF0aW9uICsg
bV93cml0ZUluZGV4LCBzb3VyY2UsIHBhcnQxTGVuZ3RoICogc2l6ZW9mKCpkZXN0aW5hdGlvbikp
OworICAgICAgICAgICAgLy8gSGFuZGxlIHdyYXAgYXJvdW5kIG9mIHRoZSBGSUZPLCBpZiBuZWVk
ZWQuCisgICAgICAgICAgICBpZiAocGFydDJMZW5ndGggPiAwKQorICAgICAgICAgICAgICAgIG1l
bWNweShkZXN0aW5hdGlvbiwgc291cmNlICsgcGFydDFMZW5ndGgsIHBhcnQyTGVuZ3RoICogc2l6
ZW9mKCpkZXN0aW5hdGlvbikpOworICAgICAgICB9CisKKyAgICAgICAgbV9mcmFtZXNJbkZpZm8g
Kz0gbV9wcm92aWRlclNpemU7CisgICAgICAgIEFTU0VSVChtX2ZyYW1lc0luRmlmbyA8PSBtX2Zp
Zm9MZW5ndGgpOworICAgICAgICBtX3dyaXRlSW5kZXggPSB1cGRhdGVJbmRleChtX3dyaXRlSW5k
ZXgsIG1fcHJvdmlkZXJTaXplKTsKKyAgICAgICAgZnJhbWVzUHJvdmlkZWQgKz0gbV9wcm92aWRl
clNpemU7CisgICAgfQorfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBF
TkFCTEUoV0VCX0FVRElPKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vQXVkaW9QdWxsRklGTy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9Q
dWxsRklGTy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNlMmI4MjNiYTkyYWMzMGIxNzk3ODcyMDllOTIyNzY5ODBj
ZGU5YzAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9B
dWRpb1B1bGxGSUZPLmgKQEAgLTAsMCArMSw4NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICog
My4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5v
ciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVu
ZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3
YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFT
IElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgQXVkaW9QdWxsRklGT19o
CisjZGVmaW5lIEF1ZGlvUHVsbEZJRk9faAorCisjaW5jbHVkZSAiQXVkaW9CdXMuaCIKKyNpbmNs
dWRlICJBdWRpb1NvdXJjZVByb3ZpZGVyLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKy8vIEEg
RklGTyAoRmlyc3QgSW4gRmlyc3QgT3V0KSBidWZmZXIgdG8gaGFuZGxlIG1pc21hdGNoZXMgaW4g
dGhlIGF1ZGlvIGJhY2tlbmQgaGFyZHdhcmUgYnVmZmVyIHNpemUKKy8vIGFuZCB0aGUgV2ViIEF1
ZGlvIHJlbmRlciBzaXplLiBUaGlzIEZJRk8gd2lsbCBhc2sgdGhlIHByb3ZpZGVyIGZvciBtb3Jl
IGRhdGEgd2hlbiBuZWNlc3NhcnkgdG8KKy8vIGZ1bGZpbGwgYSByZXF1ZXN0LgorY2xhc3MgQXVk
aW9QdWxsRklGTyB7CitwdWJsaWM6CisgICAgLy8gQ3JlYXRlIGEgRklGTyB0aGF0IGdldHMgZGF0
YSBmcm9tIHxwcm92aWRlcnwuIFRoZSBGSUZPIHdpbGwgYmUgbGFyZ2UgZW5vdWdoIHRvIGhvbGQK
KyAgICAvLyB8Zmlmb0xlbmd0aHwgZnJhbWVzIG9mIGRhdGEgb2YgfG51bWJlck9mQ2hhbm5lbHN8
IGNoYW5uZWxzLiBUaGUgQXVkaW9Tb3VyY2VQcm92aWRlciB3aWxsIGJlCisgICAgLy8gYXNrZWQg
dG8gcHJvZHVjZSB8cHJvdmlkZXJTaXplfCBmcmFtZXMgd2hlbiB0aGUgRklGTyBuZWVkcyBtb3Jl
IGRhdGEuCisgICAgQXVkaW9QdWxsRklGTyhBdWRpb1NvdXJjZVByb3ZpZGVyJiBhdWRpb1Byb3Zp
ZGVyLCB1bnNpZ25lZCBudW1iZXJPZkNoYW5uZWxzLCBzaXplX3QgZmlmb0xlbmd0aCwgc2l6ZV90
IHByb3ZpZGVyU2l6ZSk7CisKKyAgICAvLyBSZWFkIHxmcmFtZXNUb0NvbnN1bWV8IGZyYW1lcyBm
cm9tIHRoZSBGSUZPIGludG8gdGhlIGRlc3RpbmF0aW9uLiBJZiB0aGUgRklGTyBkb2VzIG5vdCBo
YXZlCisgICAgLy8gZW5vdWdoIGRhdGEsIHdlIGFzayB0aGUgfHByb3ZpZGVyfCB0byBnZXQgbW9y
ZSBkYXRhIHRvIGZ1bGZpbGwgdGhlIHJlcXVlc3QuCisgICAgdm9pZCBjb25zdW1lKEF1ZGlvQnVz
KiBkZXN0aW5hdGlvbiwgc2l6ZV90IGZyYW1lc1RvQ29uc3VtZSk7CisKK3ByaXZhdGU6CisgICAg
Ly8gVXBkYXRlIHRoZSBGSUZPIGluZGV4IGJ5IHRoZSBzdGVwLCB3aXRoIGFwcHJvcHJpYXRlIHdy
YXBwaW5nIGFyb3VuZCB0aGUgZW5kcG9pbnQuCisgICAgaW50IHVwZGF0ZUluZGV4KGludCBpbmRl
eCwgaW50IHN0ZXApIHsgcmV0dXJuIChpbmRleCArIHN0ZXApICUgbV9maWZvTGVuZ3RoOyB9CisK
KyAgICB2b2lkIGZpbmRXcmFwTGVuZ3RocyhzaXplX3QgaW5kZXgsIHNpemVfdCBwcm92aWRlclNp
emUsIHNpemVfdCYgcGFydDFMZW5ndGgsIHNpemVfdCYgcGFydDJMZW5ndGgpOworICAgIAorICAg
IC8vIEZpbGwgdGhlIEZJRk8gYnVmZmVyIHdpdGggYXQgbGVhc3QgfG51bWJlck9mRnJhbWVzfCBt
b3JlIGRhdGEuCisgICAgdm9pZCBmaWxsQnVmZmVyKHNpemVfdCBudW1iZXJPZkZyYW1lcyk7CisK
KyAgICAvLyBUaGUgcHJvdmlkZXIgb2YgdGhlIGRhdGEgaW4gb3VyIEZJRk8uCisgICAgQXVkaW9T
b3VyY2VQcm92aWRlciYgbV9wcm92aWRlcjsKKworICAgIC8vIFRoZSBGSUZPIGl0c2VsZi4gSW4g
cmVhbGl0eSwgdGhlIEZJRk8gaXMgYSBjaXJjdWxhciBidWZmZXIuCisgICAgQXVkaW9CdXMgbV9m
aWZvQXVkaW9CdXM7CisKKyAgICAvLyBUaGUgdG90YWwgYXZhaWxhYmxlIHNwYWNlIGluIHRoZSBG
SUZPLgorICAgIHNpemVfdCBtX2ZpZm9MZW5ndGg7CisKKyAgICAvLyBUaGUgbnVtYmVyIG9mIGFj
dHVhbCBlbGVtZW50cyBpbiB0aGUgRklGTworICAgIHNpemVfdCBtX2ZyYW1lc0luRmlmbzsKKwor
ICAgIC8vIFdoZXJlIHRvIHN0YXJ0IHJlYWRpbmcgZnJvbSB0aGUgRklGTy4KKyAgICBzaXplX3Qg
bV9yZWFkSW5kZXg7CisKKyAgICAvLyBXaGVyZSB0byBzdGFydCB3cml0aW5nIHRvIHRoZSBGSUZP
LgorICAgIHNpemVfdCBtX3dyaXRlSW5kZXg7CisKKyAgICAvLyBOdW1iZXIgb2YgZnJhbWVzIG9m
IGRhdGEgdGhhdCB0aGUgcHJvdmlkZXIgd2lsbCBwcm9kdWNlIHBlciBjYWxsLgorICAgIHVuc2ln
bmVkIGludCBtX3Byb3ZpZGVyU2l6ZTsKKworICAgIC8vIFRlbXBvcmFyeSB3b3Jrc3BhY2UgdG8g
aG9sZCB0aGUgZGF0YSBmcm9tIHRoZSBwcm92aWRlci4KKyAgICBBdWRpb0J1cyBtX3RlbXBCdXM7
Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBBdWRpb1B1bGxGSUZP
LmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0F1ZGlvRGVzdGluYXRp
b25DaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9BdWRpb0Rlc3RpbmF0
aW9uQ2hyb21pdW0uY3BwCmluZGV4IDZjODIzODVjODA4Zjc0MTVlYzA4Yjk4ODNmNjQ0MGY1NGYy
MmZmYzcuLjhiZTg3NDdhYjYyNzc1NmJmYTI0YWM2MDNmYmUwMTY2Yzc1NGQzZGIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0F1ZGlvRGVzdGluYXRpb25DaHJvbWl1bS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQXVkaW9EZXN0aW5hdGlvbkNocm9t
aXVtLmNwcApAQCAtNzYsNyArNzYsNyBAQCBBdWRpb0Rlc3RpbmF0aW9uQ2hyb21pdW06OkF1ZGlv
RGVzdGluYXRpb25DaHJvbWl1bShBdWRpb1NvdXJjZVByb3ZpZGVyJiBwcm92aWRlcgogICAgIC8v
IGNvbnRhaW5zIGVub3VnaCBkYXRhLCB0aGUgZGF0YSB3aWxsIGJlIHByb3ZpZGVkIGRpcmVjdGx5
LgogICAgIC8vIE90aGVyd2lzZSwgdGhlIEZJRk8gd2lsbCBjYWxsIHRoZSBwcm92aWRlciBlbm91
Z2ggdGltZXMgdG8KICAgICAvLyBzYXRpc2Z5IHRoZSByZXF1ZXN0IGZvciBkYXRhLgotICAgIG1f
ZmlmbyA9IGFkb3B0UHRyKG5ldyBGSUZPKHByb3ZpZGVyLCBudW1iZXJPZkNoYW5uZWxzLCBmaWZv
U2l6ZSwgcmVuZGVyQnVmZmVyU2l6ZSkpOworICAgIG1fZmlmbyA9IGFkb3B0UHRyKG5ldyBBdWRp
b1B1bGxGSUZPKHByb3ZpZGVyLCBudW1iZXJPZkNoYW5uZWxzLCBmaWZvU2l6ZSwgcmVuZGVyQnVm
ZmVyU2l6ZSkpOwogfQogCiBBdWRpb0Rlc3RpbmF0aW9uQ2hyb21pdW06On5BdWRpb0Rlc3RpbmF0
aW9uQ2hyb21pdW0oKQpAQCAtMTI1LDEyNSArMTI1LDYgQEAgdm9pZCBBdWRpb0Rlc3RpbmF0aW9u
Q2hyb21pdW06OnJlbmRlcihjb25zdCBXZWJWZWN0b3I8ZmxvYXQqPiYgYXVkaW9EYXRhLCBzaXpl
X3QKICAgICBtX2ZpZm8tPmNvbnN1bWUoJm1fcmVuZGVyQnVzLCBudW1iZXJPZkZyYW1lcyk7CiB9
CiAKLUF1ZGlvRGVzdGluYXRpb25DaHJvbWl1bTo6RklGTzo6RklGTyhBdWRpb1NvdXJjZVByb3Zp
ZGVyJiBwcm92aWRlciwgdW5zaWduZWQgbnVtYmVyT2ZDaGFubmVscywgc2l6ZV90IGZpZm9MZW5n
dGgsIHNpemVfdCBwcm92aWRlclNpemUpCi0gICAgOiBtX3Byb3ZpZGVyKHByb3ZpZGVyKQotICAg
ICwgbV9maWZvQXVkaW9CdXMobnVtYmVyT2ZDaGFubmVscywgZmlmb0xlbmd0aCkKLSAgICAsIG1f
Zmlmb0xlbmd0aChmaWZvTGVuZ3RoKQotICAgICwgbV9mcmFtZXNJbkZpZm8oMCkKLSAgICAsIG1f
cmVhZEluZGV4KDApCi0gICAgLCBtX3dyaXRlSW5kZXgoMCkKLSAgICAsIG1fcHJvdmlkZXJTaXpl
KHByb3ZpZGVyU2l6ZSkKLSAgICAsIG1fdGVtcEJ1cyhudW1iZXJPZkNoYW5uZWxzLCBwcm92aWRl
clNpemUpCi17Ci19Ci0KLXZvaWQgQXVkaW9EZXN0aW5hdGlvbkNocm9taXVtOjpGSUZPOjpjb25z
dW1lKEF1ZGlvQnVzKiBkZXN0aW5hdGlvbiwgc2l6ZV90IGZyYW1lc1RvQ29uc3VtZSkKLXsKLSAg
ICBib29sIGlzR29vZCA9IGRlc3RpbmF0aW9uICYmIChmcmFtZXNUb0NvbnN1bWUgPD0gbV9maWZv
TGVuZ3RoKTsKLSAgICBBU1NFUlQoaXNHb29kKTsKLSAgICBpZiAoIWlzR29vZCkKLSAgICAgICAg
cmV0dXJuOwotCi0gICAgaWYgKGZyYW1lc1RvQ29uc3VtZSA+IG1fZnJhbWVzSW5GaWZvKSB7Ci0g
ICAgICAgIC8vIFdlIGRvbid0IGhhdmUgZW5vdWdoIGRhdGEgaW4gdGhlIEZJRk8gdG8gZnVsZmls
bCB0aGUKLSAgICAgICAgLy8gcmVxdWVzdC4gQXNrIGZvciBtb3JlIGRhdGEuCi0gICAgICAgIGZp
bGxCdWZmZXIoZnJhbWVzVG9Db25zdW1lIC0gbV9mcmFtZXNJbkZpZm8pOwotICAgIH0KLQotICAg
IC8vIFdlIGhhdmUgZW5vdWdoIGRhdGEgbm93LiBDb3B5IHRoZSByZXF1ZXN0ZWQgbnVtYmVyIG9m
IHNhbXBsZXMKLSAgICAvLyB0byB0aGUgZGVzdGluYXRpb24uCi0KLSAgICBzaXplX3QgcGFydDFM
ZW5ndGg7Ci0gICAgc2l6ZV90IHBhcnQyTGVuZ3RoOwotICAgIGZpbmRXcmFwTGVuZ3RocyhtX3Jl
YWRJbmRleCwgZnJhbWVzVG9Db25zdW1lLCBwYXJ0MUxlbmd0aCwgcGFydDJMZW5ndGgpOwotCi0g
ICAgc2l6ZV90IG51bWJlck9mQ2hhbm5lbHMgPSBtX2ZpZm9BdWRpb0J1cy5udW1iZXJPZkNoYW5u
ZWxzKCk7Ci0KLSAgICBmb3IgKHNpemVfdCBjaGFubmVsSW5kZXggPSAwOyBjaGFubmVsSW5kZXgg
PCBudW1iZXJPZkNoYW5uZWxzOyArK2NoYW5uZWxJbmRleCkgewotICAgICAgICBmbG9hdCogZGVz
dGluYXRpb25EYXRhID0gZGVzdGluYXRpb24tPmNoYW5uZWwoY2hhbm5lbEluZGV4KS0+bXV0YWJs
ZURhdGEoKTsKLSAgICAgICAgY29uc3QgZmxvYXQqIHNvdXJjZURhdGEgPSBtX2ZpZm9BdWRpb0J1
cy5jaGFubmVsKGNoYW5uZWxJbmRleCktPmRhdGEoKTsKLQotICAgICAgICBib29sIGlzQ29weUdv
b2QgPSAoKG1fcmVhZEluZGV4IDwgbV9maWZvTGVuZ3RoKQotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgJiYgKG1fcmVhZEluZGV4ICsgcGFydDFMZW5ndGgpIDw9IG1fZmlmb0xlbmd0aAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgJiYgKHBhcnQxTGVuZ3RoIDw9IGRlc3RpbmF0aW9uLT5s
ZW5ndGgoKSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICYmIChwYXJ0MUxlbmd0aCArIHBh
cnQyTGVuZ3RoKSA8PSBkZXN0aW5hdGlvbi0+bGVuZ3RoKCkpOwotICAgICAgICBBU1NFUlQoaXND
b3B5R29vZCk7Ci0gICAgICAgIGlmICghaXNDb3B5R29vZCkKLSAgICAgICAgICAgIHJldHVybjsK
LQotICAgICAgICBtZW1jcHkoZGVzdGluYXRpb25EYXRhLCBzb3VyY2VEYXRhICsgbV9yZWFkSW5k
ZXgsIHBhcnQxTGVuZ3RoICogc2l6ZW9mKCpzb3VyY2VEYXRhKSk7Ci0gICAgICAgIC8vIEhhbmRs
ZSB3cmFwIGFyb3VuZCBvZiB0aGUgRklGTywgaWYgbmVlZGVkLgotICAgICAgICBpZiAocGFydDJM
ZW5ndGggPiAwKQotICAgICAgICAgICAgbWVtY3B5KGRlc3RpbmF0aW9uRGF0YSArIHBhcnQxTGVu
Z3RoLCBzb3VyY2VEYXRhLCBwYXJ0Mkxlbmd0aCAqIHNpemVvZigqc291cmNlRGF0YSkpOwotICAg
IH0KLSAgICBtX3JlYWRJbmRleCA9IHVwZGF0ZUluZGV4KG1fcmVhZEluZGV4LCBmcmFtZXNUb0Nv
bnN1bWUpOwotICAgIG1fZnJhbWVzSW5GaWZvIC09IGZyYW1lc1RvQ29uc3VtZTsKLSAgICBBU1NF
UlQobV9mcmFtZXNJbkZpZm8gPj0gMCk7Ci19Ci0KLXZvaWQgQXVkaW9EZXN0aW5hdGlvbkNocm9t
aXVtOjpGSUZPOjpmaW5kV3JhcExlbmd0aHMoc2l6ZV90IGluZGV4LCBzaXplX3Qgc2l6ZSwgc2l6
ZV90JiBwYXJ0MUxlbmd0aCwgc2l6ZV90JiBwYXJ0Mkxlbmd0aCkKLXsKLSAgICBBU1NFUlQoaW5k
ZXggPCBtX2ZpZm9MZW5ndGggJiYgc2l6ZSA8PSBtX2ZpZm9MZW5ndGgpOwotICAgIGlmIChpbmRl
eCA8IG1fZmlmb0xlbmd0aCAmJiBzaXplIDw9IG1fZmlmb0xlbmd0aCkgewotICAgICAgICBpZiAo
aW5kZXggKyBzaXplID4gbV9maWZvTGVuZ3RoKSB7Ci0gICAgICAgICAgICAvLyBOZWVkIHRvIHdy
YXAuIEZpZ3VyZSBvdXQgdGhlIGxlbmd0aCBvZiBlYWNoIHBpZWNlLgotICAgICAgICAgICAgcGFy
dDFMZW5ndGggPSBtX2ZpZm9MZW5ndGggLSBpbmRleDsKLSAgICAgICAgICAgIHBhcnQyTGVuZ3Ro
ID0gc2l6ZSAtIHBhcnQxTGVuZ3RoOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgLy8g
Tm8gd3JhcCBuZWVkZWQuCi0gICAgICAgICAgICBwYXJ0MUxlbmd0aCA9IHNpemU7Ci0gICAgICAg
ICAgICBwYXJ0Mkxlbmd0aCA9IDA7Ci0gICAgICAgIH0KLSAgICB9IGVsc2UgewotICAgICAgICAv
LyBJbnZhbGlkIHZhbHVlcyBmb3IgaW5kZXggb3Igc2l6ZS4gU2V0IHRoZSBwYXJ0IGxlbmd0aHMg
dG8KLSAgICAgICAgLy8gemVybyBzbyBub3RoaW5nIGlzIGNvcGllZC4KLSAgICAgICAgcGFydDFM
ZW5ndGggPSAwOwotICAgICAgICBwYXJ0Mkxlbmd0aCA9IDA7Ci0gICAgfQotfQotCi12b2lkIEF1
ZGlvRGVzdGluYXRpb25DaHJvbWl1bTo6RklGTzo6ZmlsbEJ1ZmZlcihzaXplX3QgbnVtYmVyT2ZG
cmFtZXMpCi17Ci0gICAgLy8gS2VlcCBhc2tpbmcgdGhlIHByb3ZpZGVyIHRvIGdpdmUgdXMgZGF0
YSB1bnRpbCB3ZSBoYXZlIHJlY2VpdmVkCi0gICAgLy8gYXQgbGVhc3QgfG51bWJlck9mRnJhbWVz
fCBvZiBkYXRhLiBTdHVmZiB0aGUgZGF0YSBpbnRvIHRoZQotICAgIC8vIEZJRk8uCi0gICAgc2l6
ZV90IGZyYW1lc1Byb3ZpZGVkID0gMDsKLQotICAgIHdoaWxlIChmcmFtZXNQcm92aWRlZCA8IG51
bWJlck9mRnJhbWVzKSB7Ci0gICAgICAgIG1fcHJvdmlkZXIucHJvdmlkZUlucHV0KCZtX3RlbXBC
dXMsIG1fcHJvdmlkZXJTaXplKTsKLQotICAgICAgICBzaXplX3QgcGFydDFMZW5ndGg7Ci0gICAg
ICAgIHNpemVfdCBwYXJ0Mkxlbmd0aDsKLSAgICAgICAgZmluZFdyYXBMZW5ndGhzKG1fd3JpdGVJ
bmRleCwgbV9wcm92aWRlclNpemUsIHBhcnQxTGVuZ3RoLCBwYXJ0Mkxlbmd0aCk7Ci0KLSAgICAg
ICAgc2l6ZV90IG51bWJlck9mQ2hhbm5lbHMgPSBtX2ZpZm9BdWRpb0J1cy5udW1iZXJPZkNoYW5u
ZWxzKCk7Ci0gICAgICAgIAotICAgICAgICBmb3IgKHNpemVfdCBjaGFubmVsSW5kZXggPSAwOyBj
aGFubmVsSW5kZXggPCBudW1iZXJPZkNoYW5uZWxzOyArK2NoYW5uZWxJbmRleCkgewotICAgICAg
ICAgICAgZmxvYXQqIGRlc3RpbmF0aW9uID0gbV9maWZvQXVkaW9CdXMuY2hhbm5lbChjaGFubmVs
SW5kZXgpLT5tdXRhYmxlRGF0YSgpOwotICAgICAgICAgICAgY29uc3QgZmxvYXQqIHNvdXJjZSA9
IG1fdGVtcEJ1cy5jaGFubmVsKGNoYW5uZWxJbmRleCktPmRhdGEoKTsKLQotICAgICAgICAgICAg
Ym9vbCBpc0NvcHlHb29kID0gKHBhcnQxTGVuZ3RoIDw9IG1fcHJvdmlkZXJTaXplCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgJiYgKHBhcnQxTGVuZ3RoICsgcGFydDJMZW5ndGgpIDw9
IG1fcHJvdmlkZXJTaXplCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgKG1fd3Jp
dGVJbmRleCA8IG1fZmlmb0xlbmd0aCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAm
JiAobV93cml0ZUluZGV4ICsgcGFydDFMZW5ndGgpIDw9IG1fZmlmb0xlbmd0aAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICYmIHBhcnQyTGVuZ3RoIDwgbV9maWZvTGVuZ3RoKTsKLSAg
ICAgICAgICAgIEFTU0VSVChpc0NvcHlHb29kKTsKLSAgICAgICAgICAgIGlmICghaXNDb3B5R29v
ZCkKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgICAgIG1lbWNweShkZXN0aW5h
dGlvbiArIG1fd3JpdGVJbmRleCwgc291cmNlLCBwYXJ0MUxlbmd0aCAqIHNpemVvZigqZGVzdGlu
YXRpb24pKTsKLSAgICAgICAgICAgIC8vIEhhbmRsZSB3cmFwIGFyb3VuZCBvZiB0aGUgRklGTywg
aWYgbmVlZGVkLgotICAgICAgICAgICAgaWYgKHBhcnQyTGVuZ3RoID4gMCkKLSAgICAgICAgICAg
ICAgICBtZW1jcHkoZGVzdGluYXRpb24sIHNvdXJjZSArIHBhcnQxTGVuZ3RoLCBwYXJ0Mkxlbmd0
aCAqIHNpemVvZigqZGVzdGluYXRpb24pKTsKLSAgICAgICAgfQotCi0gICAgICAgIG1fZnJhbWVz
SW5GaWZvICs9IG1fcHJvdmlkZXJTaXplOwotICAgICAgICBBU1NFUlQobV9mcmFtZXNJbkZpZm8g
PD0gbV9maWZvTGVuZ3RoKTsKLSAgICAgICAgbV93cml0ZUluZGV4ID0gdXBkYXRlSW5kZXgobV93
cml0ZUluZGV4LCBtX3Byb3ZpZGVyU2l6ZSk7Ci0gICAgICAgIGZyYW1lc1Byb3ZpZGVkICs9IG1f
cHJvdmlkZXJTaXplOwotICAgIH0KLX0KLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5k
aWYgLy8gRU5BQkxFKFdFQl9BVURJTykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL0F1ZGlvRGVzdGluYXRpb25DaHJvbWl1bS5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvQXVkaW9EZXN0aW5hdGlvbkNocm9taXVtLmgKaW5kZXggM2QxYWYyYTFhNDlkMTRhYmI0
OWM1ZTc4OGVhODY5MTczMjY4NjY1MS4uNTRmYTYwZTIwMzQzYzAxOWQyM2M5YjRkMmY1ZWE4MGM0
N2U4YTNlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQXVkaW9EZXN0
aW5hdGlvbkNocm9taXVtLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQXVkaW9E
ZXN0aW5hdGlvbkNocm9taXVtLmgKQEAgLTMxLDYgKzMxLDcgQEAKIAogI2luY2x1ZGUgIkF1ZGlv
QnVzLmgiCiAjaW5jbHVkZSAiQXVkaW9EZXN0aW5hdGlvbi5oIgorI2luY2x1ZGUgIkF1ZGlvUHVs
bEZJRk8uaCIKICNpbmNsdWRlICJBdWRpb1NvdXJjZVByb3ZpZGVyLmgiCiAjaW5jbHVkZSAicGxh
dGZvcm0vV2ViQXVkaW9EZXZpY2UuaCIKICNpbmNsdWRlICJwbGF0Zm9ybS9XZWJWZWN0b3IuaCIK
QEAgLTU2LDY0ICs1NywxMyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHJlbmRlcihjb25z
dCBXZWJLaXQ6OldlYlZlY3RvcjxmbG9hdCo+JiBhdWRpb0RhdGEsIHNpemVfdCBudW1iZXJPZkZy
YW1lcyk7CiAKIHByaXZhdGU6Ci0gICAgLy8gQSBGSUZPIChGaXJzdCBJbiBGaXJzdCBPdXQpIGJ1
ZmZlciB0byBoYW5kbGUgbWlzbWF0Y2hlcyBpbiB0aGUKLSAgICAvLyBhdWRpbyBiYWNrZW5kIGhh
cmR3YXJlIGJ1ZmZlciBzaXplIGFuZCB0aGUgV2ViIEF1ZGlvIHJlbmRlciBzaXplLgotICAgIGNs
YXNzIEZJRk8gewotICAgIHB1YmxpYzoKLSAgICAgICAgLy8gQ3JlYXRlIGEgRklGTyB0aGF0IGdl
dHMgZGF0YSBmcm9tIHxwcm92aWRlcnwuIFRoZSBGSUZPIHdpbGwKLSAgICAgICAgLy8gYmUgbGFy
Z2UgZW5vdWdoIHRvIGhvbGQgfGZpZm9MZW5ndGh8IGZyYW1lcyBvZiBkYXRhIG9mCi0gICAgICAg
IC8vIHxudW1iZXJPZkNoYW5uZWxzfCBjaGFubmVscy4gVGhlIEF1ZGlvU291cmNlUHJvdmlkZXIg
d2lsbAotICAgICAgICAvLyBiZSBhc2tlZCB0byBwcm9kdWNlIHxwcm92aWRlclNpemV8IGZyYW1l
cyB3aGVuIHRoZSBGSUZPCi0gICAgICAgIC8vIG5lZWRzIG1vcmUgZGF0YS4KLSAgICAgICAgRklG
TyhBdWRpb1NvdXJjZVByb3ZpZGVyJiBwcm92aWRlciwgdW5zaWduZWQgbnVtYmVyT2ZDaGFubmVs
cywgc2l6ZV90IGZpZm9MZW5ndGgsIHNpemVfdCBwcm92aWRlclNpemUpOwotCi0gICAgICAgIC8v
IFJlYWQgfGZyYW1lc1RvQ29uc3VtZXwgZnJhbWVzIGZyb20gdGhlIEZJRk8gaW50byB0aGUKLSAg
ICAgICAgLy8gZGVzdGluYXRpb24uIElmIHRoZSBGSUZPIGRvZXMgbm90IGhhdmUgZW5vdWdoIGRh
dGEsIHdlIGFzawotICAgICAgICAvLyB0aGUgfHByb3ZpZGVyfCB0byBnZXQgbW9yZSBkYXRhIHRv
IGZ1bGZpbGwgdGhlIHJlcXVlc3QuCi0gICAgICAgIHZvaWQgY29uc3VtZShBdWRpb0J1cyogZGVz
dGluYXRpb24sIHNpemVfdCBmcmFtZXNUb0NvbnN1bWUpOwotCi0gICAgcHJpdmF0ZToKLSAgICAg
ICAgLy8gVXBkYXRlIHRoZSBGSUZPIGluZGV4IGJ5IHRoZSBzdGVwLCB3aXRoIGFwcHJvcHJpYXRl
Ci0gICAgICAgIC8vIHdyYXBwaW5nIGFyb3VuZCB0aGUgZW5kcG9pbnQuCi0gICAgICAgIGludCB1
cGRhdGVJbmRleChpbnQgaW5kZXgsIGludCBzdGVwKSB7IHJldHVybiAoaW5kZXggKyBzdGVwKSAl
IG1fZmlmb0xlbmd0aDsgfQotCi0gICAgICAgIHZvaWQgZmluZFdyYXBMZW5ndGhzKHNpemVfdCBp
bmRleCwgc2l6ZV90IHByb3ZpZGVyU2l6ZSwgc2l6ZV90JiBwYXJ0MUxlbmd0aCwgc2l6ZV90JiBw
YXJ0Mkxlbmd0aCk7Ci0gICAgICAgIAotICAgICAgICAvLyBGaWxsIHRoZSBGSUZPIGJ1ZmZlciB3
aXRoIGF0IGxlYXN0IHxudW1iZXJPZkZyYW1lc3wgbW9yZSBkYXRhLgotICAgICAgICB2b2lkIGZp
bGxCdWZmZXIoc2l6ZV90IG51bWJlck9mRnJhbWVzKTsKLQotICAgICAgICAvLyBUaGUgcHJvdmlk
ZXIgb2YgdGhlIGRhdGEgaW4gb3VyIEZJRk8uCi0gICAgICAgIEF1ZGlvU291cmNlUHJvdmlkZXIm
IG1fcHJvdmlkZXI7Ci0KLSAgICAgICAgLy8gVGhlIEZJRk8gaXRzZWxmLiBJbiByZWFsaXR5LCB0
aGUgRklGTyBpcyBhIGNpcmN1bGFyIGJ1ZmZlci4KLSAgICAgICAgQXVkaW9CdXMgbV9maWZvQXVk
aW9CdXM7Ci0KLSAgICAgICAgLy8gVGhlIHRvdGFsIGF2YWlsYWJsZSBzcGFjZSBpbiB0aGUgRklG
Ty4KLSAgICAgICAgc2l6ZV90IG1fZmlmb0xlbmd0aDsKLQotICAgICAgICAvLyBUaGUgbnVtYmVy
IG9mIGFjdHVhbCBlbGVtZW50cyBpbiB0aGUgRklGTwotICAgICAgICBzaXplX3QgbV9mcmFtZXNJ
bkZpZm87Ci0KLSAgICAgICAgLy8gV2hlcmUgdG8gc3RhcnQgcmVhZGluZyBmcm9tIHRoZSBGSUZP
LgotICAgICAgICBzaXplX3QgbV9yZWFkSW5kZXg7Ci0KLSAgICAgICAgLy8gV2hlcmUgdG8gc3Rh
cnQgd3JpdGluZyB0byB0aGUgRklGTy4KLSAgICAgICAgc2l6ZV90IG1fd3JpdGVJbmRleDsKLQot
ICAgICAgICAvLyBOdW1iZXIgb2YgZnJhbWVzIG9mIGRhdGEgdGhhdCB0aGUgcHJvdmlkZXIgd2ls
bCBwcm9kdWNlIHBlciBjYWxsLgotICAgICAgICB1bnNpZ25lZCBpbnQgbV9wcm92aWRlclNpemU7
Ci0KLSAgICAgICAgLy8gVGVtcG9yYXJ5IHdvcmtzcGFjZSB0byBob2xkIHRoZSBkYXRhIGZyb20g
dGhlIHByb3ZpZGVyLgotICAgICAgICBBdWRpb0J1cyBtX3RlbXBCdXM7Ci0gICAgfTsKLQotQXVk
aW9Tb3VyY2VQcm92aWRlciYgbV9wcm92aWRlcjsKKyAgICBBdWRpb1NvdXJjZVByb3ZpZGVyJiBt
X3Byb3ZpZGVyOwogICAgIEF1ZGlvQnVzIG1fcmVuZGVyQnVzOwogICAgIGZsb2F0IG1fc2FtcGxl
UmF0ZTsKICAgICBib29sIG1faXNQbGF5aW5nOwogICAgIE93blB0cjxXZWJLaXQ6OldlYkF1ZGlv
RGV2aWNlPiBtX2F1ZGlvRGV2aWNlOwogICAgIHNpemVfdCBtX2NhbGxiYWNrQnVmZmVyU2l6ZTsK
LSAgICBPd25QdHI8RklGTz4gbV9maWZvOworICAgIE93blB0cjxBdWRpb1B1bGxGSUZPPiBtX2Zp
Zm87CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>137396</attachid>
            <date>2012-04-16 13:57:46 -0700</date>
            <delta_ts>2012-04-17 10:09:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-84058-20120416135745.patch</filename>
            <type>text/plain</type>
            <size>23220</size>
            <attacher name="Raymond Toy">rtoy</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE0MjM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGM3MjE3NWFmZGEyMzkx
ZDIwMTcyMGI5ZGEzMDU4NDllMjMwNjQyOC4uZGE4NGVjZjc5YjBiZTEyZTVhNjliMTRjMDllMGI2
M2ViZDJmOTIwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDEyLTA0LTE2ICBSYXlt
b25kIFRveSAgPHJ0b3lAZ29vZ2xlLmNvbT4KKworICAgICAgICBNb3ZlIEF1ZGlvRGVzdGluYXRp
b25DaHJvbWl1bSBGSUZPIGNsYXNzIHRvIGl0cyBvd24gY2xhc3MuCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NDA1OAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEN1cnJlbnQgdGVzdHMgY292ZXIgdGhlIGNo
YW5nZXMuCisKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6IFVwZGF0ZSB3aXRoIG5ldyBmaWxlcy4K
KyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9BdWRpb1B1bGxGSUZPLmNwcDogQ29waWVkIGZyb20g
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQXVkaW9EZXN0aW5hdGlvbkNocm9taXVtLmNwcC4K
KyAgICAgICAgKFdlYkNvcmUpOiBSZW5hbWVkIG9sZCBjbGFzcyB0aGUgQXVkaW9QdWxsRklGTy4K
KyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvUHVsbEZJRk86OkF1ZGlvUHVsbEZJRk8pOgorICAgICAg
ICAoV2ViQ29yZTo6QXVkaW9QdWxsRklGTzo6Y29uc3VtZSk6CisgICAgICAgIChXZWJDb3JlOjpB
dWRpb1B1bGxGSUZPOjpmaW5kV3JhcExlbmd0aHMpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9Q
dWxsRklGTzo6ZmlsbEJ1ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vQXVkaW9QdWxs
RklGTy5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoQXVkaW9QdWxsRklG
Tyk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1B1bGxGSUZPOjp1cGRhdGVJbmRleCk6CisKIDIw
MTItMDQtMTYgIEphc29uIExpdSAgPGphc29uLmxpdUB0b3JjaG1vYmlsZS5jb20uY24+CiAKICAg
ICAgICAgW0JsYWNrQmVycnldIE1pc3NpbmcgcmVhZHlTdGF0ZSAyIHdoZW4gYSBYTUxIdHRwUmVx
dWVzdCBjYWxscyB4bWxodHRwLm9wZW4oIkhFQUQiLCJub3RFeGlzdC5odG1sIix0cnVlKS4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggMDRhYzViOWM2M2I2ZDI2MzA0ZWU1ZTM0ZWRmODJk
MTEwY2QyY2RkYy4uYmQ4M2U1MzUwMTZlYjM4Njg2MzY5YzZmMTk1YWM3OWQ2NmNmMzcxYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAxMi0wNC0xNiAgUmF5
bW9uZCBUb3kgIDxydG95QGdvb2dsZS5jb20+CisKKyAgICAgICAgTW92ZSBBdWRpb0Rlc3RpbmF0
aW9uQ2hyb21pdW0gRklGTyBjbGFzcyB0byBpdHMgb3duIGNsYXNzLgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODQwNTgKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZW1vdmUgcHJpdmF0ZSBGSUZPIGNsYXNz
IGFuZCB1c2UgbmV3IEF1ZGlvUHVsbEZJRk8gY2xhc3MuCisgICAgICAgICogc3JjL0F1ZGlvRGVz
dGluYXRpb25DaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0Rlc3RpbmF0aW9u
Q2hyb21pdW06OkF1ZGlvRGVzdGluYXRpb25DaHJvbWl1bSk6CisgICAgICAgICogc3JjL0F1ZGlv
RGVzdGluYXRpb25DaHJvbWl1bS5oOgorICAgICAgICAoQXVkaW9EZXN0aW5hdGlvbkNocm9taXVt
KToKKwogMjAxMi0wNC0xNSAgS2Vpc2hpIEhhdHRvcmkgIDxrZWlzaGlAd2Via2l0Lm9yZz4KIAog
ICAgICAgICBJbnRyb2R1Y2UgTWVudUl0ZW1JRCB0byBhdXRvZmlsbCBwb3B1cApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5n
eXBpCmluZGV4IDBkNjcwYWRhMjI1NGNlNGNhNjM1NTEzNTM2YzM2NWFmMjFlNzFjMmEuLjJjZTg2
YzMwMTk4MDk1MDU1OTk2ZWNiNmQ5YzQ5Y2FkNDZjM2Q5YWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAg
LTMxNzQsNiArMzE3NCw4IEBACiAgICAgICAgICAgICAncGxhdGZvcm0vYXVkaW8vQXVkaW9EZXN0
aW5hdGlvbi5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9hdWRpby9BdWRpb0ZpbGVSZWFkZXIu
aCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vYXVkaW8vQXVkaW9Qcm9jZXNzb3IuaCcsCisgICAg
ICAgICAgICAncGxhdGZvcm0vYXVkaW8vQXVkaW9QdWxsRklGTy5jcHAnLAorICAgICAgICAgICAg
J3BsYXRmb3JtL2F1ZGlvL0F1ZGlvUHVsbEZJRk8uaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0v
YXVkaW8vQXVkaW9SZXNhbXBsZXIuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9hdWRpby9B
dWRpb1Jlc2FtcGxlci5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9hdWRpby9BdWRpb1Jlc2Ft
cGxlcktlcm5lbC5jcHAnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vQXVkaW9QdWxsRklGTy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRp
b1B1bGxGSUZPLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wM2U4OWRlYmE3NjI5OThjNmY5ZDVjMTM5MWUzYTc4
NzA3ZWNhZGY1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vQXVkaW9QdWxsRklGTy5jcHAKQEAgLTAsMCArMSwxNTQgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIENvbXB1dGVyLCBJbmMuICgiQXBw
bGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNl
ZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20gdGhp
cyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVU
T1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisKKyNpZiBFTkFCTEUoV0VCX0FVRElPKQorCisjaW5jbHVkZSAiQXVkaW9QdWxsRklGTy5o
IgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0F1ZGlvUHVsbEZJRk86OkF1ZGlvUHVsbEZJRk8o
QXVkaW9Tb3VyY2VQcm92aWRlciYgYXVkaW9Qcm92aWRlciwgdW5zaWduZWQgbnVtYmVyT2ZDaGFu
bmVscywgc2l6ZV90IGZpZm9MZW5ndGgsIHNpemVfdCBwcm92aWRlclNpemUpCisgICAgOiBtX3By
b3ZpZGVyKGF1ZGlvUHJvdmlkZXIpCisgICAgLCBtX2ZpZm9BdWRpb0J1cyhudW1iZXJPZkNoYW5u
ZWxzLCBmaWZvTGVuZ3RoKQorICAgICwgbV9maWZvTGVuZ3RoKGZpZm9MZW5ndGgpCisgICAgLCBt
X2ZyYW1lc0luRmlmbygwKQorICAgICwgbV9yZWFkSW5kZXgoMCkKKyAgICAsIG1fd3JpdGVJbmRl
eCgwKQorICAgICwgbV9wcm92aWRlclNpemUocHJvdmlkZXJTaXplKQorICAgICwgbV90ZW1wQnVz
KG51bWJlck9mQ2hhbm5lbHMsIHByb3ZpZGVyU2l6ZSkKK3sKK30KKwordm9pZCBBdWRpb1B1bGxG
SUZPOjpjb25zdW1lKEF1ZGlvQnVzKiBkZXN0aW5hdGlvbiwgc2l6ZV90IGZyYW1lc1RvQ29uc3Vt
ZSkKK3sKKyAgICBib29sIGlzR29vZCA9IGRlc3RpbmF0aW9uICYmIChmcmFtZXNUb0NvbnN1bWUg
PD0gbV9maWZvTGVuZ3RoKTsKKyAgICBBU1NFUlQoaXNHb29kKTsKKyAgICBpZiAoIWlzR29vZCkK
KyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKGZyYW1lc1RvQ29uc3VtZSA+IG1fZnJhbWVzSW5G
aWZvKSB7CisgICAgICAgIC8vIFdlIGRvbid0IGhhdmUgZW5vdWdoIGRhdGEgaW4gdGhlIEZJRk8g
dG8gZnVsZmlsbCB0aGUgcmVxdWVzdC4gQXNrIGZvciBtb3JlIGRhdGEuCisgICAgICAgIGZpbGxC
dWZmZXIoZnJhbWVzVG9Db25zdW1lIC0gbV9mcmFtZXNJbkZpZm8pOworICAgIH0KKworICAgIC8v
IFdlIGhhdmUgZW5vdWdoIGRhdGEgbm93LiBDb3B5IHRoZSByZXF1ZXN0ZWQgbnVtYmVyIG9mIHNh
bXBsZXMgdG8gdGhlIGRlc3RpbmF0aW9uLgorCisgICAgc2l6ZV90IHBhcnQxTGVuZ3RoOworICAg
IHNpemVfdCBwYXJ0Mkxlbmd0aDsKKyAgICBmaW5kV3JhcExlbmd0aHMobV9yZWFkSW5kZXgsIGZy
YW1lc1RvQ29uc3VtZSwgcGFydDFMZW5ndGgsIHBhcnQyTGVuZ3RoKTsKKworICAgIHNpemVfdCBu
dW1iZXJPZkNoYW5uZWxzID0gbV9maWZvQXVkaW9CdXMubnVtYmVyT2ZDaGFubmVscygpOworCisg
ICAgZm9yIChzaXplX3QgY2hhbm5lbEluZGV4ID0gMDsgY2hhbm5lbEluZGV4IDwgbnVtYmVyT2ZD
aGFubmVsczsgKytjaGFubmVsSW5kZXgpIHsKKyAgICAgICAgZmxvYXQqIGRlc3RpbmF0aW9uRGF0
YSA9IGRlc3RpbmF0aW9uLT5jaGFubmVsKGNoYW5uZWxJbmRleCktPm11dGFibGVEYXRhKCk7Cisg
ICAgICAgIGNvbnN0IGZsb2F0KiBzb3VyY2VEYXRhID0gbV9maWZvQXVkaW9CdXMuY2hhbm5lbChj
aGFubmVsSW5kZXgpLT5kYXRhKCk7CisKKyAgICAgICAgYm9vbCBpc0NvcHlHb29kID0gKChtX3Jl
YWRJbmRleCA8IG1fZmlmb0xlbmd0aCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICYmICht
X3JlYWRJbmRleCArIHBhcnQxTGVuZ3RoKSA8PSBtX2ZpZm9MZW5ndGgKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICYmIChwYXJ0MUxlbmd0aCA8PSBkZXN0aW5hdGlvbi0+bGVuZ3RoKCkpCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAmJiAocGFydDFMZW5ndGggKyBwYXJ0Mkxlbmd0aCkg
PD0gZGVzdGluYXRpb24tPmxlbmd0aCgpKTsKKyAgICAgICAgQVNTRVJUKGlzQ29weUdvb2QpOwor
ICAgICAgICBpZiAoIWlzQ29weUdvb2QpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAg
bWVtY3B5KGRlc3RpbmF0aW9uRGF0YSwgc291cmNlRGF0YSArIG1fcmVhZEluZGV4LCBwYXJ0MUxl
bmd0aCAqIHNpemVvZigqc291cmNlRGF0YSkpOworICAgICAgICAvLyBIYW5kbGUgd3JhcCBhcm91
bmQgb2YgdGhlIEZJRk8sIGlmIG5lZWRlZC4KKyAgICAgICAgaWYgKHBhcnQyTGVuZ3RoID4gMCkK
KyAgICAgICAgICAgIG1lbWNweShkZXN0aW5hdGlvbkRhdGEgKyBwYXJ0MUxlbmd0aCwgc291cmNl
RGF0YSwgcGFydDJMZW5ndGggKiBzaXplb2YoKnNvdXJjZURhdGEpKTsKKyAgICB9CisgICAgbV9y
ZWFkSW5kZXggPSB1cGRhdGVJbmRleChtX3JlYWRJbmRleCwgZnJhbWVzVG9Db25zdW1lKTsKKyAg
ICBtX2ZyYW1lc0luRmlmbyAtPSBmcmFtZXNUb0NvbnN1bWU7CisgICAgQVNTRVJUKG1fZnJhbWVz
SW5GaWZvID49IDApOworfQorCit2b2lkIEF1ZGlvUHVsbEZJRk86OmZpbmRXcmFwTGVuZ3Rocyhz
aXplX3QgaW5kZXgsIHNpemVfdCBzaXplLCBzaXplX3QmIHBhcnQxTGVuZ3RoLCBzaXplX3QmIHBh
cnQyTGVuZ3RoKQoreworICAgIEFTU0VSVChpbmRleCA8IG1fZmlmb0xlbmd0aCAmJiBzaXplIDw9
IG1fZmlmb0xlbmd0aCk7CisgICAgaWYgKGluZGV4IDwgbV9maWZvTGVuZ3RoICYmIHNpemUgPD0g
bV9maWZvTGVuZ3RoKSB7CisgICAgICAgIGlmIChpbmRleCArIHNpemUgPiBtX2ZpZm9MZW5ndGgp
IHsKKyAgICAgICAgICAgIC8vIE5lZWQgdG8gd3JhcC4gRmlndXJlIG91dCB0aGUgbGVuZ3RoIG9m
IGVhY2ggcGllY2UuCisgICAgICAgICAgICBwYXJ0MUxlbmd0aCA9IG1fZmlmb0xlbmd0aCAtIGlu
ZGV4OworICAgICAgICAgICAgcGFydDJMZW5ndGggPSBzaXplIC0gcGFydDFMZW5ndGg7CisgICAg
ICAgIH0gZWxzZSB7CisgICAgICAgICAgICAvLyBObyB3cmFwIG5lZWRlZC4KKyAgICAgICAgICAg
IHBhcnQxTGVuZ3RoID0gc2l6ZTsKKyAgICAgICAgICAgIHBhcnQyTGVuZ3RoID0gMDsKKyAgICAg
ICAgfQorICAgIH0gZWxzZSB7CisgICAgICAgIC8vIEludmFsaWQgdmFsdWVzIGZvciBpbmRleCBv
ciBzaXplLiBTZXQgdGhlIHBhcnQgbGVuZ3RocyB0byB6ZXJvIHNvIG5vdGhpbmcgaXMgY29waWVk
LgorICAgICAgICBwYXJ0MUxlbmd0aCA9IDA7CisgICAgICAgIHBhcnQyTGVuZ3RoID0gMDsKKyAg
ICB9Cit9CisKK3ZvaWQgQXVkaW9QdWxsRklGTzo6ZmlsbEJ1ZmZlcihzaXplX3QgbnVtYmVyT2ZG
cmFtZXMpCit7CisgICAgLy8gS2VlcCBhc2tpbmcgdGhlIHByb3ZpZGVyIHRvIGdpdmUgdXMgZGF0
YSB1bnRpbCB3ZSBoYXZlIHJlY2VpdmVkIGF0IGxlYXN0IHxudW1iZXJPZkZyYW1lc3wgb2YKKyAg
ICAvLyBkYXRhLiBTdHVmZiB0aGUgZGF0YSBpbnRvIHRoZSBGSUZPLgorICAgIHNpemVfdCBmcmFt
ZXNQcm92aWRlZCA9IDA7CisKKyAgICB3aGlsZSAoZnJhbWVzUHJvdmlkZWQgPCBudW1iZXJPZkZy
YW1lcykgeworICAgICAgICBtX3Byb3ZpZGVyLnByb3ZpZGVJbnB1dCgmbV90ZW1wQnVzLCBtX3By
b3ZpZGVyU2l6ZSk7CisKKyAgICAgICAgc2l6ZV90IHBhcnQxTGVuZ3RoOworICAgICAgICBzaXpl
X3QgcGFydDJMZW5ndGg7CisgICAgICAgIGZpbmRXcmFwTGVuZ3RocyhtX3dyaXRlSW5kZXgsIG1f
cHJvdmlkZXJTaXplLCBwYXJ0MUxlbmd0aCwgcGFydDJMZW5ndGgpOworCisgICAgICAgIHNpemVf
dCBudW1iZXJPZkNoYW5uZWxzID0gbV9maWZvQXVkaW9CdXMubnVtYmVyT2ZDaGFubmVscygpOwor
ICAgICAgICAKKyAgICAgICAgZm9yIChzaXplX3QgY2hhbm5lbEluZGV4ID0gMDsgY2hhbm5lbElu
ZGV4IDwgbnVtYmVyT2ZDaGFubmVsczsgKytjaGFubmVsSW5kZXgpIHsKKyAgICAgICAgICAgIGZs
b2F0KiBkZXN0aW5hdGlvbiA9IG1fZmlmb0F1ZGlvQnVzLmNoYW5uZWwoY2hhbm5lbEluZGV4KS0+
bXV0YWJsZURhdGEoKTsKKyAgICAgICAgICAgIGNvbnN0IGZsb2F0KiBzb3VyY2UgPSBtX3RlbXBC
dXMuY2hhbm5lbChjaGFubmVsSW5kZXgpLT5kYXRhKCk7CisKKyAgICAgICAgICAgIGJvb2wgaXND
b3B5R29vZCA9IChwYXJ0MUxlbmd0aCA8PSBtX3Byb3ZpZGVyU2l6ZQorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICYmIChwYXJ0MUxlbmd0aCArIHBhcnQyTGVuZ3RoKSA8PSBtX3Byb3Zp
ZGVyU2l6ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmIChtX3dyaXRlSW5kZXgg
PCBtX2ZpZm9MZW5ndGgpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgKG1fd3Jp
dGVJbmRleCArIHBhcnQxTGVuZ3RoKSA8PSBtX2ZpZm9MZW5ndGgKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAmJiBwYXJ0Mkxlbmd0aCA8IG1fZmlmb0xlbmd0aCk7CisgICAgICAgICAg
ICBBU1NFUlQoaXNDb3B5R29vZCk7CisgICAgICAgICAgICBpZiAoIWlzQ29weUdvb2QpCisgICAg
ICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICBtZW1jcHkoZGVzdGluYXRpb24gKyBt
X3dyaXRlSW5kZXgsIHNvdXJjZSwgcGFydDFMZW5ndGggKiBzaXplb2YoKmRlc3RpbmF0aW9uKSk7
CisgICAgICAgICAgICAvLyBIYW5kbGUgd3JhcCBhcm91bmQgb2YgdGhlIEZJRk8sIGlmIG5lZWRl
ZC4KKyAgICAgICAgICAgIGlmIChwYXJ0Mkxlbmd0aCA+IDApCisgICAgICAgICAgICAgICAgbWVt
Y3B5KGRlc3RpbmF0aW9uLCBzb3VyY2UgKyBwYXJ0MUxlbmd0aCwgcGFydDJMZW5ndGggKiBzaXpl
b2YoKmRlc3RpbmF0aW9uKSk7CisgICAgICAgIH0KKworICAgICAgICBtX2ZyYW1lc0luRmlmbyAr
PSBtX3Byb3ZpZGVyU2l6ZTsKKyAgICAgICAgQVNTRVJUKG1fZnJhbWVzSW5GaWZvIDw9IG1fZmlm
b0xlbmd0aCk7CisgICAgICAgIG1fd3JpdGVJbmRleCA9IHVwZGF0ZUluZGV4KG1fd3JpdGVJbmRl
eCwgbV9wcm92aWRlclNpemUpOworICAgICAgICBmcmFtZXNQcm92aWRlZCArPSBtX3Byb3ZpZGVy
U2l6ZTsKKyAgICB9Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVO
QUJMRShXRUJfQVVESU8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRp
by9BdWRpb1B1bGxGSUZPLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb1B1
bGxGSUZPLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uZmFjMTliOWQxZjk4YTRlMDVhZjMwZmI3OWNlYWY5YWUzNjY1
YmEzMQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1
ZGlvUHVsbEZJRk8uaApAQCAtMCwwICsxLDkwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEy
IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAz
LiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRlciwgSW5jLiAoIkFwcGxlIikgbm9y
IHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5k
b3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdh
cmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMg
SVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBBdWRpb1B1bGxGSUZPX2gK
KyNkZWZpbmUgQXVkaW9QdWxsRklGT19oCisKKyNpbmNsdWRlICJBdWRpb0J1cy5oIgorI2luY2x1
ZGUgIkF1ZGlvU291cmNlUHJvdmlkZXIuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisvLyBB
IEZJRk8gKEZpcnN0IEluIEZpcnN0IE91dCkgYnVmZmVyIHRvIGhhbmRsZSBtaXNtYXRjaGVzIGlu
IGJ1ZmZlciBzaXplcyBiZXR3ZWVuIGEgcHJvdmlkZXIgYW5kCisvLyByZWNlaXZlci4gVGhlIHJl
Y2VpdmVyIHdpbGwgInB1bGwiIGRhdGEgZnJvbSB0aGlzIEZJRk8uIElmIGRhdGEgaXMgYWxyZWFk
eSBhdmFpbGFibGUgaW4gdGhlCisvLyBGSUZPLCBpdCBpcyBwcm92aWRlZCB0byB0aGUgcmVjZWl2
ZXIuIElmIGluc3VmZmljaWVudCBkYXRhIGlzIGF2YWlsYWJsZSB0byBzYXRpc2Z5IHRoZSByZXF1
ZXN0LAorLy8gdGhlIEZJRk8gd2lsbCBhc2sgdGhlIHByb3ZpZGVyIGZvciBtb3JlIGRhdGEgd2hl
biBuZWNlc3NhcnkgdG8gZnVsZmlsbCBhIHJlcXVlc3QuIENvbnRyYXN0IHRoaXMKKy8vIHdpdGgg
YSAicHVzaCIgRklGTywgd2hlcmUgdGhlIHNlbmRlciBwdXNoZXMgZGF0YSB0byB0aGUgRklGTyB3
aGljaCB3aWxsIGl0c2VsZiBwdXNoIHRoZSBkYXRhIHRvCisvLyB0aGUgcmVjZWl2ZXIgd2hlbiB0
aGUgRklGTyBpcyBmdWxsLgorY2xhc3MgQXVkaW9QdWxsRklGTyB7CitwdWJsaWM6CisgICAgLy8g
Q3JlYXRlIGEgRklGTyB0aGF0IGdldHMgZGF0YSBmcm9tIHxwcm92aWRlcnwuIFRoZSBGSUZPIHdp
bGwgYmUgbGFyZ2UgZW5vdWdoIHRvIGhvbGQKKyAgICAvLyB8Zmlmb0xlbmd0aHwgZnJhbWVzIG9m
IGRhdGEgb2YgfG51bWJlck9mQ2hhbm5lbHN8IGNoYW5uZWxzLiBUaGUgQXVkaW9Tb3VyY2VQcm92
aWRlciB3aWxsIGJlCisgICAgLy8gYXNrZWQgdG8gcHJvZHVjZSB8cHJvdmlkZXJTaXplfCBmcmFt
ZXMgd2hlbiB0aGUgRklGTyBuZWVkcyBtb3JlIGRhdGEuCisgICAgQXVkaW9QdWxsRklGTyhBdWRp
b1NvdXJjZVByb3ZpZGVyJiBhdWRpb1Byb3ZpZGVyLCB1bnNpZ25lZCBudW1iZXJPZkNoYW5uZWxz
LCBzaXplX3QgZmlmb0xlbmd0aCwgc2l6ZV90IHByb3ZpZGVyU2l6ZSk7CisKKyAgICAvLyBSZWFk
IHxmcmFtZXNUb0NvbnN1bWV8IGZyYW1lcyBmcm9tIHRoZSBGSUZPIGludG8gdGhlIGRlc3RpbmF0
aW9uLiBJZiB0aGUgRklGTyBkb2VzIG5vdCBoYXZlCisgICAgLy8gZW5vdWdoIGRhdGEsIHdlIGFz
ayB0aGUgfHByb3ZpZGVyfCB0byBnZXQgbW9yZSBkYXRhIHRvIGZ1bGZpbGwgdGhlIHJlcXVlc3Qu
CisgICAgdm9pZCBjb25zdW1lKEF1ZGlvQnVzKiBkZXN0aW5hdGlvbiwgc2l6ZV90IGZyYW1lc1Rv
Q29uc3VtZSk7CisKK3ByaXZhdGU6CisgICAgLy8gVXBkYXRlIHRoZSBGSUZPIGluZGV4IGJ5IHRo
ZSBzdGVwLCB3aXRoIGFwcHJvcHJpYXRlIHdyYXBwaW5nIGFyb3VuZCB0aGUgZW5kcG9pbnQuCisg
ICAgaW50IHVwZGF0ZUluZGV4KGludCBpbmRleCwgaW50IHN0ZXApIHsgcmV0dXJuIChpbmRleCAr
IHN0ZXApICUgbV9maWZvTGVuZ3RoOyB9CisKKyAgICB2b2lkIGZpbmRXcmFwTGVuZ3RocyhzaXpl
X3QgaW5kZXgsIHNpemVfdCBwcm92aWRlclNpemUsIHNpemVfdCYgcGFydDFMZW5ndGgsIHNpemVf
dCYgcGFydDJMZW5ndGgpOworICAgIAorICAgIC8vIEZpbGwgdGhlIEZJRk8gYnVmZmVyIHdpdGgg
YXQgbGVhc3QgfG51bWJlck9mRnJhbWVzfCBtb3JlIGRhdGEuCisgICAgdm9pZCBmaWxsQnVmZmVy
KHNpemVfdCBudW1iZXJPZkZyYW1lcyk7CisKKyAgICAvLyBUaGUgcHJvdmlkZXIgb2YgdGhlIGRh
dGEgaW4gb3VyIEZJRk8uCisgICAgQXVkaW9Tb3VyY2VQcm92aWRlciYgbV9wcm92aWRlcjsKKwor
ICAgIC8vIFRoZSBGSUZPIGl0c2VsZi4gSW4gcmVhbGl0eSwgdGhlIEZJRk8gaXMgYSBjaXJjdWxh
ciBidWZmZXIuCisgICAgQXVkaW9CdXMgbV9maWZvQXVkaW9CdXM7CisKKyAgICAvLyBUaGUgdG90
YWwgYXZhaWxhYmxlIHNwYWNlIGluIHRoZSBGSUZPLgorICAgIHNpemVfdCBtX2ZpZm9MZW5ndGg7
CisKKyAgICAvLyBUaGUgbnVtYmVyIG9mIGFjdHVhbCBlbGVtZW50cyBpbiB0aGUgRklGTworICAg
IHNpemVfdCBtX2ZyYW1lc0luRmlmbzsKKworICAgIC8vIFdoZXJlIHRvIHN0YXJ0IHJlYWRpbmcg
ZnJvbSB0aGUgRklGTy4KKyAgICBzaXplX3QgbV9yZWFkSW5kZXg7CisKKyAgICAvLyBXaGVyZSB0
byBzdGFydCB3cml0aW5nIHRvIHRoZSBGSUZPLgorICAgIHNpemVfdCBtX3dyaXRlSW5kZXg7CisK
KyAgICAvLyBOdW1iZXIgb2YgZnJhbWVzIG9mIGRhdGEgdGhhdCB0aGUgcHJvdmlkZXIgd2lsbCBw
cm9kdWNlIHBlciBjYWxsLgorICAgIHVuc2lnbmVkIGludCBtX3Byb3ZpZGVyU2l6ZTsKKworICAg
IC8vIFRlbXBvcmFyeSB3b3Jrc3BhY2UgdG8gaG9sZCB0aGUgZGF0YSBmcm9tIHRoZSBwcm92aWRl
ci4KKyAgICBBdWRpb0J1cyBtX3RlbXBCdXM7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CisKKyNlbmRpZiAvLyBBdWRpb1B1bGxGSUZPLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL0F1ZGlvRGVzdGluYXRpb25DaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9BdWRpb0Rlc3RpbmF0aW9uQ2hyb21pdW0uY3BwCmluZGV4IDZjODIzODVj
ODA4Zjc0MTVlYzA4Yjk4ODNmNjQ0MGY1NGYyMmZmYzcuLjcxMzFhNTI4N2ZiY2I0YzQ2ZjlhYzk5
OGM3OGI5NWIzZDdiOGI4NTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L0F1ZGlvRGVzdGluYXRpb25DaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvQXVkaW9EZXN0aW5hdGlvbkNocm9taXVtLmNwcApAQCAtMzIsNiArMzIsNyBAQAogCiAj
aW5jbHVkZSAiQXVkaW9EZXN0aW5hdGlvbkNocm9taXVtLmgiCiAKKyNpbmNsdWRlICJBdWRpb1B1
bGxGSUZPLmgiCiAjaW5jbHVkZSAiV2ViS2l0LmgiCiAjaW5jbHVkZSAicGxhdGZvcm0vV2ViS2l0
UGxhdGZvcm1TdXBwb3J0LmgiCiAKQEAgLTM5LDYgKzQwLDggQEAgdXNpbmcgbmFtZXNwYWNlIFdl
YktpdDsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBBdWRpb1B1bGxGSUZPOworCiAv
LyBCdWZmZXIgc2l6ZSBhdCB3aGljaCB0aGUgd2ViIGF1ZGlvIGVuZ2luZSB3aWxsIHJlbmRlci4K
IGNvbnN0IHVuc2lnbmVkIHJlbmRlckJ1ZmZlclNpemUgPSAxMjg7CiAKQEAgLTc2LDcgKzc5LDcg
QEAgQXVkaW9EZXN0aW5hdGlvbkNocm9taXVtOjpBdWRpb0Rlc3RpbmF0aW9uQ2hyb21pdW0oQXVk
aW9Tb3VyY2VQcm92aWRlciYgcHJvdmlkZXIKICAgICAvLyBjb250YWlucyBlbm91Z2ggZGF0YSwg
dGhlIGRhdGEgd2lsbCBiZSBwcm92aWRlZCBkaXJlY3RseS4KICAgICAvLyBPdGhlcndpc2UsIHRo
ZSBGSUZPIHdpbGwgY2FsbCB0aGUgcHJvdmlkZXIgZW5vdWdoIHRpbWVzIHRvCiAgICAgLy8gc2F0
aXNmeSB0aGUgcmVxdWVzdCBmb3IgZGF0YS4KLSAgICBtX2ZpZm8gPSBhZG9wdFB0cihuZXcgRklG
Tyhwcm92aWRlciwgbnVtYmVyT2ZDaGFubmVscywgZmlmb1NpemUsIHJlbmRlckJ1ZmZlclNpemUp
KTsKKyAgICBtX2ZpZm8gPSBhZG9wdFB0cihuZXcgQXVkaW9QdWxsRklGTyhwcm92aWRlciwgbnVt
YmVyT2ZDaGFubmVscywgZmlmb1NpemUsIHJlbmRlckJ1ZmZlclNpemUpKTsKIH0KIAogQXVkaW9E
ZXN0aW5hdGlvbkNocm9taXVtOjp+QXVkaW9EZXN0aW5hdGlvbkNocm9taXVtKCkKQEAgLTEyNSwx
MjUgKzEyOCw2IEBAIHZvaWQgQXVkaW9EZXN0aW5hdGlvbkNocm9taXVtOjpyZW5kZXIoY29uc3Qg
V2ViVmVjdG9yPGZsb2F0Kj4mIGF1ZGlvRGF0YSwgc2l6ZV90CiAgICAgbV9maWZvLT5jb25zdW1l
KCZtX3JlbmRlckJ1cywgbnVtYmVyT2ZGcmFtZXMpOwogfQogCi1BdWRpb0Rlc3RpbmF0aW9uQ2hy
b21pdW06OkZJRk86OkZJRk8oQXVkaW9Tb3VyY2VQcm92aWRlciYgcHJvdmlkZXIsIHVuc2lnbmVk
IG51bWJlck9mQ2hhbm5lbHMsIHNpemVfdCBmaWZvTGVuZ3RoLCBzaXplX3QgcHJvdmlkZXJTaXpl
KQotICAgIDogbV9wcm92aWRlcihwcm92aWRlcikKLSAgICAsIG1fZmlmb0F1ZGlvQnVzKG51bWJl
ck9mQ2hhbm5lbHMsIGZpZm9MZW5ndGgpCi0gICAgLCBtX2ZpZm9MZW5ndGgoZmlmb0xlbmd0aCkK
LSAgICAsIG1fZnJhbWVzSW5GaWZvKDApCi0gICAgLCBtX3JlYWRJbmRleCgwKQotICAgICwgbV93
cml0ZUluZGV4KDApCi0gICAgLCBtX3Byb3ZpZGVyU2l6ZShwcm92aWRlclNpemUpCi0gICAgLCBt
X3RlbXBCdXMobnVtYmVyT2ZDaGFubmVscywgcHJvdmlkZXJTaXplKQotewotfQotCi12b2lkIEF1
ZGlvRGVzdGluYXRpb25DaHJvbWl1bTo6RklGTzo6Y29uc3VtZShBdWRpb0J1cyogZGVzdGluYXRp
b24sIHNpemVfdCBmcmFtZXNUb0NvbnN1bWUpCi17Ci0gICAgYm9vbCBpc0dvb2QgPSBkZXN0aW5h
dGlvbiAmJiAoZnJhbWVzVG9Db25zdW1lIDw9IG1fZmlmb0xlbmd0aCk7Ci0gICAgQVNTRVJUKGlz
R29vZCk7Ci0gICAgaWYgKCFpc0dvb2QpCi0gICAgICAgIHJldHVybjsKLQotICAgIGlmIChmcmFt
ZXNUb0NvbnN1bWUgPiBtX2ZyYW1lc0luRmlmbykgewotICAgICAgICAvLyBXZSBkb24ndCBoYXZl
IGVub3VnaCBkYXRhIGluIHRoZSBGSUZPIHRvIGZ1bGZpbGwgdGhlCi0gICAgICAgIC8vIHJlcXVl
c3QuIEFzayBmb3IgbW9yZSBkYXRhLgotICAgICAgICBmaWxsQnVmZmVyKGZyYW1lc1RvQ29uc3Vt
ZSAtIG1fZnJhbWVzSW5GaWZvKTsKLSAgICB9Ci0KLSAgICAvLyBXZSBoYXZlIGVub3VnaCBkYXRh
IG5vdy4gQ29weSB0aGUgcmVxdWVzdGVkIG51bWJlciBvZiBzYW1wbGVzCi0gICAgLy8gdG8gdGhl
IGRlc3RpbmF0aW9uLgotCi0gICAgc2l6ZV90IHBhcnQxTGVuZ3RoOwotICAgIHNpemVfdCBwYXJ0
Mkxlbmd0aDsKLSAgICBmaW5kV3JhcExlbmd0aHMobV9yZWFkSW5kZXgsIGZyYW1lc1RvQ29uc3Vt
ZSwgcGFydDFMZW5ndGgsIHBhcnQyTGVuZ3RoKTsKLQotICAgIHNpemVfdCBudW1iZXJPZkNoYW5u
ZWxzID0gbV9maWZvQXVkaW9CdXMubnVtYmVyT2ZDaGFubmVscygpOwotCi0gICAgZm9yIChzaXpl
X3QgY2hhbm5lbEluZGV4ID0gMDsgY2hhbm5lbEluZGV4IDwgbnVtYmVyT2ZDaGFubmVsczsgKytj
aGFubmVsSW5kZXgpIHsKLSAgICAgICAgZmxvYXQqIGRlc3RpbmF0aW9uRGF0YSA9IGRlc3RpbmF0
aW9uLT5jaGFubmVsKGNoYW5uZWxJbmRleCktPm11dGFibGVEYXRhKCk7Ci0gICAgICAgIGNvbnN0
IGZsb2F0KiBzb3VyY2VEYXRhID0gbV9maWZvQXVkaW9CdXMuY2hhbm5lbChjaGFubmVsSW5kZXgp
LT5kYXRhKCk7Ci0KLSAgICAgICAgYm9vbCBpc0NvcHlHb29kID0gKChtX3JlYWRJbmRleCA8IG1f
Zmlmb0xlbmd0aCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICYmIChtX3JlYWRJbmRleCAr
IHBhcnQxTGVuZ3RoKSA8PSBtX2ZpZm9MZW5ndGgKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICYmIChwYXJ0MUxlbmd0aCA8PSBkZXN0aW5hdGlvbi0+bGVuZ3RoKCkpCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAmJiAocGFydDFMZW5ndGggKyBwYXJ0Mkxlbmd0aCkgPD0gZGVzdGluYXRp
b24tPmxlbmd0aCgpKTsKLSAgICAgICAgQVNTRVJUKGlzQ29weUdvb2QpOwotICAgICAgICBpZiAo
IWlzQ29weUdvb2QpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgbWVtY3B5KGRlc3Rp
bmF0aW9uRGF0YSwgc291cmNlRGF0YSArIG1fcmVhZEluZGV4LCBwYXJ0MUxlbmd0aCAqIHNpemVv
Zigqc291cmNlRGF0YSkpOwotICAgICAgICAvLyBIYW5kbGUgd3JhcCBhcm91bmQgb2YgdGhlIEZJ
Rk8sIGlmIG5lZWRlZC4KLSAgICAgICAgaWYgKHBhcnQyTGVuZ3RoID4gMCkKLSAgICAgICAgICAg
IG1lbWNweShkZXN0aW5hdGlvbkRhdGEgKyBwYXJ0MUxlbmd0aCwgc291cmNlRGF0YSwgcGFydDJM
ZW5ndGggKiBzaXplb2YoKnNvdXJjZURhdGEpKTsKLSAgICB9Ci0gICAgbV9yZWFkSW5kZXggPSB1
cGRhdGVJbmRleChtX3JlYWRJbmRleCwgZnJhbWVzVG9Db25zdW1lKTsKLSAgICBtX2ZyYW1lc0lu
RmlmbyAtPSBmcmFtZXNUb0NvbnN1bWU7Ci0gICAgQVNTRVJUKG1fZnJhbWVzSW5GaWZvID49IDAp
OwotfQotCi12b2lkIEF1ZGlvRGVzdGluYXRpb25DaHJvbWl1bTo6RklGTzo6ZmluZFdyYXBMZW5n
dGhzKHNpemVfdCBpbmRleCwgc2l6ZV90IHNpemUsIHNpemVfdCYgcGFydDFMZW5ndGgsIHNpemVf
dCYgcGFydDJMZW5ndGgpCi17Ci0gICAgQVNTRVJUKGluZGV4IDwgbV9maWZvTGVuZ3RoICYmIHNp
emUgPD0gbV9maWZvTGVuZ3RoKTsKLSAgICBpZiAoaW5kZXggPCBtX2ZpZm9MZW5ndGggJiYgc2l6
ZSA8PSBtX2ZpZm9MZW5ndGgpIHsKLSAgICAgICAgaWYgKGluZGV4ICsgc2l6ZSA+IG1fZmlmb0xl
bmd0aCkgewotICAgICAgICAgICAgLy8gTmVlZCB0byB3cmFwLiBGaWd1cmUgb3V0IHRoZSBsZW5n
dGggb2YgZWFjaCBwaWVjZS4KLSAgICAgICAgICAgIHBhcnQxTGVuZ3RoID0gbV9maWZvTGVuZ3Ro
IC0gaW5kZXg7Ci0gICAgICAgICAgICBwYXJ0Mkxlbmd0aCA9IHNpemUgLSBwYXJ0MUxlbmd0aDsK
LSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIC8vIE5vIHdyYXAgbmVlZGVkLgotICAgICAg
ICAgICAgcGFydDFMZW5ndGggPSBzaXplOwotICAgICAgICAgICAgcGFydDJMZW5ndGggPSAwOwot
ICAgICAgICB9Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgLy8gSW52YWxpZCB2YWx1ZXMgZm9yIGlu
ZGV4IG9yIHNpemUuIFNldCB0aGUgcGFydCBsZW5ndGhzIHRvCi0gICAgICAgIC8vIHplcm8gc28g
bm90aGluZyBpcyBjb3BpZWQuCi0gICAgICAgIHBhcnQxTGVuZ3RoID0gMDsKLSAgICAgICAgcGFy
dDJMZW5ndGggPSAwOwotICAgIH0KLX0KLQotdm9pZCBBdWRpb0Rlc3RpbmF0aW9uQ2hyb21pdW06
OkZJRk86OmZpbGxCdWZmZXIoc2l6ZV90IG51bWJlck9mRnJhbWVzKQotewotICAgIC8vIEtlZXAg
YXNraW5nIHRoZSBwcm92aWRlciB0byBnaXZlIHVzIGRhdGEgdW50aWwgd2UgaGF2ZSByZWNlaXZl
ZAotICAgIC8vIGF0IGxlYXN0IHxudW1iZXJPZkZyYW1lc3wgb2YgZGF0YS4gU3R1ZmYgdGhlIGRh
dGEgaW50byB0aGUKLSAgICAvLyBGSUZPLgotICAgIHNpemVfdCBmcmFtZXNQcm92aWRlZCA9IDA7
Ci0KLSAgICB3aGlsZSAoZnJhbWVzUHJvdmlkZWQgPCBudW1iZXJPZkZyYW1lcykgewotICAgICAg
ICBtX3Byb3ZpZGVyLnByb3ZpZGVJbnB1dCgmbV90ZW1wQnVzLCBtX3Byb3ZpZGVyU2l6ZSk7Ci0K
LSAgICAgICAgc2l6ZV90IHBhcnQxTGVuZ3RoOwotICAgICAgICBzaXplX3QgcGFydDJMZW5ndGg7
Ci0gICAgICAgIGZpbmRXcmFwTGVuZ3RocyhtX3dyaXRlSW5kZXgsIG1fcHJvdmlkZXJTaXplLCBw
YXJ0MUxlbmd0aCwgcGFydDJMZW5ndGgpOwotCi0gICAgICAgIHNpemVfdCBudW1iZXJPZkNoYW5u
ZWxzID0gbV9maWZvQXVkaW9CdXMubnVtYmVyT2ZDaGFubmVscygpOwotICAgICAgICAKLSAgICAg
ICAgZm9yIChzaXplX3QgY2hhbm5lbEluZGV4ID0gMDsgY2hhbm5lbEluZGV4IDwgbnVtYmVyT2ZD
aGFubmVsczsgKytjaGFubmVsSW5kZXgpIHsKLSAgICAgICAgICAgIGZsb2F0KiBkZXN0aW5hdGlv
biA9IG1fZmlmb0F1ZGlvQnVzLmNoYW5uZWwoY2hhbm5lbEluZGV4KS0+bXV0YWJsZURhdGEoKTsK
LSAgICAgICAgICAgIGNvbnN0IGZsb2F0KiBzb3VyY2UgPSBtX3RlbXBCdXMuY2hhbm5lbChjaGFu
bmVsSW5kZXgpLT5kYXRhKCk7Ci0KLSAgICAgICAgICAgIGJvb2wgaXNDb3B5R29vZCA9IChwYXJ0
MUxlbmd0aCA8PSBtX3Byb3ZpZGVyU2l6ZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICYmIChwYXJ0MUxlbmd0aCArIHBhcnQyTGVuZ3RoKSA8PSBtX3Byb3ZpZGVyU2l6ZQotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICYmIChtX3dyaXRlSW5kZXggPCBtX2ZpZm9MZW5ndGgp
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgKG1fd3JpdGVJbmRleCArIHBhcnQx
TGVuZ3RoKSA8PSBtX2ZpZm9MZW5ndGgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAm
JiBwYXJ0Mkxlbmd0aCA8IG1fZmlmb0xlbmd0aCk7Ci0gICAgICAgICAgICBBU1NFUlQoaXNDb3B5
R29vZCk7Ci0gICAgICAgICAgICBpZiAoIWlzQ29weUdvb2QpCi0gICAgICAgICAgICAgICAgcmV0
dXJuOwotCi0gICAgICAgICAgICBtZW1jcHkoZGVzdGluYXRpb24gKyBtX3dyaXRlSW5kZXgsIHNv
dXJjZSwgcGFydDFMZW5ndGggKiBzaXplb2YoKmRlc3RpbmF0aW9uKSk7Ci0gICAgICAgICAgICAv
LyBIYW5kbGUgd3JhcCBhcm91bmQgb2YgdGhlIEZJRk8sIGlmIG5lZWRlZC4KLSAgICAgICAgICAg
IGlmIChwYXJ0Mkxlbmd0aCA+IDApCi0gICAgICAgICAgICAgICAgbWVtY3B5KGRlc3RpbmF0aW9u
LCBzb3VyY2UgKyBwYXJ0MUxlbmd0aCwgcGFydDJMZW5ndGggKiBzaXplb2YoKmRlc3RpbmF0aW9u
KSk7Ci0gICAgICAgIH0KLQotICAgICAgICBtX2ZyYW1lc0luRmlmbyArPSBtX3Byb3ZpZGVyU2l6
ZTsKLSAgICAgICAgQVNTRVJUKG1fZnJhbWVzSW5GaWZvIDw9IG1fZmlmb0xlbmd0aCk7Ci0gICAg
ICAgIG1fd3JpdGVJbmRleCA9IHVwZGF0ZUluZGV4KG1fd3JpdGVJbmRleCwgbV9wcm92aWRlclNp
emUpOwotICAgICAgICBmcmFtZXNQcm92aWRlZCArPSBtX3Byb3ZpZGVyU2l6ZTsKLSAgICB9Ci19
Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShXRUJfQVVESU8p
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9BdWRpb0Rlc3RpbmF0aW9u
Q2hyb21pdW0uaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0F1ZGlvRGVzdGluYXRpb25D
aHJvbWl1bS5oCmluZGV4IDNkMWFmMmExYTQ5ZDE0YWJiNDljNWU3ODhlYTg2OTE3MzI2ODY2NTEu
LmRmZTVlYmQ3YzJiMjU4NjdjNDFiNTIyMTdhYWUwMDhmYzZiYmVhN2YgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0F1ZGlvRGVzdGluYXRpb25DaHJvbWl1bS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0F1ZGlvRGVzdGluYXRpb25DaHJvbWl1bS5oCkBA
IC0zOSw2ICszOSw4IEBAIG5hbWVzcGFjZSBXZWJLaXQgeyBjbGFzcyBXZWJBdWRpb0RldmljZTsg
fQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7IAogCitjbGFzcyBBdWRpb1B1bGxGSUZPOworCiAvLyBB
biBBdWRpb0Rlc3RpbmF0aW9uIHVzaW5nIENocm9taXVtJ3MgYXVkaW8gc3lzdGVtCiAKIGNsYXNz
IEF1ZGlvRGVzdGluYXRpb25DaHJvbWl1bSA6IHB1YmxpYyBBdWRpb0Rlc3RpbmF0aW9uLCBwdWJs
aWMgV2ViS2l0OjpXZWJBdWRpb0RldmljZTo6UmVuZGVyQ2FsbGJhY2sgewpAQCAtNTYsNjQgKzU4
LDEzIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcmVuZGVyKGNvbnN0IFdlYktpdDo6V2Vi
VmVjdG9yPGZsb2F0Kj4mIGF1ZGlvRGF0YSwgc2l6ZV90IG51bWJlck9mRnJhbWVzKTsKIAogcHJp
dmF0ZToKLSAgICAvLyBBIEZJRk8gKEZpcnN0IEluIEZpcnN0IE91dCkgYnVmZmVyIHRvIGhhbmRs
ZSBtaXNtYXRjaGVzIGluIHRoZQotICAgIC8vIGF1ZGlvIGJhY2tlbmQgaGFyZHdhcmUgYnVmZmVy
IHNpemUgYW5kIHRoZSBXZWIgQXVkaW8gcmVuZGVyIHNpemUuCi0gICAgY2xhc3MgRklGTyB7Ci0g
ICAgcHVibGljOgotICAgICAgICAvLyBDcmVhdGUgYSBGSUZPIHRoYXQgZ2V0cyBkYXRhIGZyb20g
fHByb3ZpZGVyfC4gVGhlIEZJRk8gd2lsbAotICAgICAgICAvLyBiZSBsYXJnZSBlbm91Z2ggdG8g
aG9sZCB8Zmlmb0xlbmd0aHwgZnJhbWVzIG9mIGRhdGEgb2YKLSAgICAgICAgLy8gfG51bWJlck9m
Q2hhbm5lbHN8IGNoYW5uZWxzLiBUaGUgQXVkaW9Tb3VyY2VQcm92aWRlciB3aWxsCi0gICAgICAg
IC8vIGJlIGFza2VkIHRvIHByb2R1Y2UgfHByb3ZpZGVyU2l6ZXwgZnJhbWVzIHdoZW4gdGhlIEZJ
Rk8KLSAgICAgICAgLy8gbmVlZHMgbW9yZSBkYXRhLgotICAgICAgICBGSUZPKEF1ZGlvU291cmNl
UHJvdmlkZXImIHByb3ZpZGVyLCB1bnNpZ25lZCBudW1iZXJPZkNoYW5uZWxzLCBzaXplX3QgZmlm
b0xlbmd0aCwgc2l6ZV90IHByb3ZpZGVyU2l6ZSk7Ci0KLSAgICAgICAgLy8gUmVhZCB8ZnJhbWVz
VG9Db25zdW1lfCBmcmFtZXMgZnJvbSB0aGUgRklGTyBpbnRvIHRoZQotICAgICAgICAvLyBkZXN0
aW5hdGlvbi4gSWYgdGhlIEZJRk8gZG9lcyBub3QgaGF2ZSBlbm91Z2ggZGF0YSwgd2UgYXNrCi0g
ICAgICAgIC8vIHRoZSB8cHJvdmlkZXJ8IHRvIGdldCBtb3JlIGRhdGEgdG8gZnVsZmlsbCB0aGUg
cmVxdWVzdC4KLSAgICAgICAgdm9pZCBjb25zdW1lKEF1ZGlvQnVzKiBkZXN0aW5hdGlvbiwgc2l6
ZV90IGZyYW1lc1RvQ29uc3VtZSk7Ci0KLSAgICBwcml2YXRlOgotICAgICAgICAvLyBVcGRhdGUg
dGhlIEZJRk8gaW5kZXggYnkgdGhlIHN0ZXAsIHdpdGggYXBwcm9wcmlhdGUKLSAgICAgICAgLy8g
d3JhcHBpbmcgYXJvdW5kIHRoZSBlbmRwb2ludC4KLSAgICAgICAgaW50IHVwZGF0ZUluZGV4KGlu
dCBpbmRleCwgaW50IHN0ZXApIHsgcmV0dXJuIChpbmRleCArIHN0ZXApICUgbV9maWZvTGVuZ3Ro
OyB9Ci0KLSAgICAgICAgdm9pZCBmaW5kV3JhcExlbmd0aHMoc2l6ZV90IGluZGV4LCBzaXplX3Qg
cHJvdmlkZXJTaXplLCBzaXplX3QmIHBhcnQxTGVuZ3RoLCBzaXplX3QmIHBhcnQyTGVuZ3RoKTsK
LSAgICAgICAgCi0gICAgICAgIC8vIEZpbGwgdGhlIEZJRk8gYnVmZmVyIHdpdGggYXQgbGVhc3Qg
fG51bWJlck9mRnJhbWVzfCBtb3JlIGRhdGEuCi0gICAgICAgIHZvaWQgZmlsbEJ1ZmZlcihzaXpl
X3QgbnVtYmVyT2ZGcmFtZXMpOwotCi0gICAgICAgIC8vIFRoZSBwcm92aWRlciBvZiB0aGUgZGF0
YSBpbiBvdXIgRklGTy4KLSAgICAgICAgQXVkaW9Tb3VyY2VQcm92aWRlciYgbV9wcm92aWRlcjsK
LQotICAgICAgICAvLyBUaGUgRklGTyBpdHNlbGYuIEluIHJlYWxpdHksIHRoZSBGSUZPIGlzIGEg
Y2lyY3VsYXIgYnVmZmVyLgotICAgICAgICBBdWRpb0J1cyBtX2ZpZm9BdWRpb0J1czsKLQotICAg
ICAgICAvLyBUaGUgdG90YWwgYXZhaWxhYmxlIHNwYWNlIGluIHRoZSBGSUZPLgotICAgICAgICBz
aXplX3QgbV9maWZvTGVuZ3RoOwotCi0gICAgICAgIC8vIFRoZSBudW1iZXIgb2YgYWN0dWFsIGVs
ZW1lbnRzIGluIHRoZSBGSUZPCi0gICAgICAgIHNpemVfdCBtX2ZyYW1lc0luRmlmbzsKLQotICAg
ICAgICAvLyBXaGVyZSB0byBzdGFydCByZWFkaW5nIGZyb20gdGhlIEZJRk8uCi0gICAgICAgIHNp
emVfdCBtX3JlYWRJbmRleDsKLQotICAgICAgICAvLyBXaGVyZSB0byBzdGFydCB3cml0aW5nIHRv
IHRoZSBGSUZPLgotICAgICAgICBzaXplX3QgbV93cml0ZUluZGV4OwotCi0gICAgICAgIC8vIE51
bWJlciBvZiBmcmFtZXMgb2YgZGF0YSB0aGF0IHRoZSBwcm92aWRlciB3aWxsIHByb2R1Y2UgcGVy
IGNhbGwuCi0gICAgICAgIHVuc2lnbmVkIGludCBtX3Byb3ZpZGVyU2l6ZTsKLQotICAgICAgICAv
LyBUZW1wb3Jhcnkgd29ya3NwYWNlIHRvIGhvbGQgdGhlIGRhdGEgZnJvbSB0aGUgcHJvdmlkZXIu
Ci0gICAgICAgIEF1ZGlvQnVzIG1fdGVtcEJ1czsKLSAgICB9OwotCi1BdWRpb1NvdXJjZVByb3Zp
ZGVyJiBtX3Byb3ZpZGVyOworICAgIEF1ZGlvU291cmNlUHJvdmlkZXImIG1fcHJvdmlkZXI7CiAg
ICAgQXVkaW9CdXMgbV9yZW5kZXJCdXM7CiAgICAgZmxvYXQgbV9zYW1wbGVSYXRlOwogICAgIGJv
b2wgbV9pc1BsYXlpbmc7CiAgICAgT3duUHRyPFdlYktpdDo6V2ViQXVkaW9EZXZpY2U+IG1fYXVk
aW9EZXZpY2U7CiAgICAgc2l6ZV90IG1fY2FsbGJhY2tCdWZmZXJTaXplOwotICAgIE93blB0cjxG
SUZPPiBtX2ZpZm87CisgICAgT3duUHRyPEF1ZGlvUHVsbEZJRk8+IG1fZmlmbzsKIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>137554</attachid>
            <date>2012-04-17 10:09:53 -0700</date>
            <delta_ts>2012-04-23 17:39:35 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-84058-20120417100952.patch</filename>
            <type>text/plain</type>
            <size>23028</size>
            <attacher name="Raymond Toy">rtoy</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE0MjM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGM3MjE3NWFmZGEyMzkx
ZDIwMTcyMGI5ZGEzMDU4NDllMjMwNjQyOC4uZGE4NGVjZjc5YjBiZTEyZTVhNjliMTRjMDllMGI2
M2ViZDJmOTIwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDEyLTA0LTE2ICBSYXlt
b25kIFRveSAgPHJ0b3lAZ29vZ2xlLmNvbT4KKworICAgICAgICBNb3ZlIEF1ZGlvRGVzdGluYXRp
b25DaHJvbWl1bSBGSUZPIGNsYXNzIHRvIGl0cyBvd24gY2xhc3MuCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NDA1OAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEN1cnJlbnQgdGVzdHMgY292ZXIgdGhlIGNo
YW5nZXMuCisKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6IFVwZGF0ZSB3aXRoIG5ldyBmaWxlcy4K
KyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9BdWRpb1B1bGxGSUZPLmNwcDogQ29waWVkIGZyb20g
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQXVkaW9EZXN0aW5hdGlvbkNocm9taXVtLmNwcC4K
KyAgICAgICAgKFdlYkNvcmUpOiBSZW5hbWVkIG9sZCBjbGFzcyB0aGUgQXVkaW9QdWxsRklGTy4K
KyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvUHVsbEZJRk86OkF1ZGlvUHVsbEZJRk8pOgorICAgICAg
ICAoV2ViQ29yZTo6QXVkaW9QdWxsRklGTzo6Y29uc3VtZSk6CisgICAgICAgIChXZWJDb3JlOjpB
dWRpb1B1bGxGSUZPOjpmaW5kV3JhcExlbmd0aHMpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9Q
dWxsRklGTzo6ZmlsbEJ1ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vQXVkaW9QdWxs
RklGTy5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoQXVkaW9QdWxsRklG
Tyk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1B1bGxGSUZPOjp1cGRhdGVJbmRleCk6CisKIDIw
MTItMDQtMTYgIEphc29uIExpdSAgPGphc29uLmxpdUB0b3JjaG1vYmlsZS5jb20uY24+CiAKICAg
ICAgICAgW0JsYWNrQmVycnldIE1pc3NpbmcgcmVhZHlTdGF0ZSAyIHdoZW4gYSBYTUxIdHRwUmVx
dWVzdCBjYWxscyB4bWxodHRwLm9wZW4oIkhFQUQiLCJub3RFeGlzdC5odG1sIix0cnVlKS4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggMDRhYzViOWM2M2I2ZDI2MzA0ZWU1ZTM0ZWRmODJk
MTEwY2QyY2RkYy4uYmQ4M2U1MzUwMTZlYjM4Njg2MzY5YzZmMTk1YWM3OWQ2NmNmMzcxYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAxMi0wNC0xNiAgUmF5
bW9uZCBUb3kgIDxydG95QGdvb2dsZS5jb20+CisKKyAgICAgICAgTW92ZSBBdWRpb0Rlc3RpbmF0
aW9uQ2hyb21pdW0gRklGTyBjbGFzcyB0byBpdHMgb3duIGNsYXNzLgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODQwNTgKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZW1vdmUgcHJpdmF0ZSBGSUZPIGNsYXNz
IGFuZCB1c2UgbmV3IEF1ZGlvUHVsbEZJRk8gY2xhc3MuCisgICAgICAgICogc3JjL0F1ZGlvRGVz
dGluYXRpb25DaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0Rlc3RpbmF0aW9u
Q2hyb21pdW06OkF1ZGlvRGVzdGluYXRpb25DaHJvbWl1bSk6CisgICAgICAgICogc3JjL0F1ZGlv
RGVzdGluYXRpb25DaHJvbWl1bS5oOgorICAgICAgICAoQXVkaW9EZXN0aW5hdGlvbkNocm9taXVt
KToKKwogMjAxMi0wNC0xNSAgS2Vpc2hpIEhhdHRvcmkgIDxrZWlzaGlAd2Via2l0Lm9yZz4KIAog
ICAgICAgICBJbnRyb2R1Y2UgTWVudUl0ZW1JRCB0byBhdXRvZmlsbCBwb3B1cApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5n
eXBpCmluZGV4IDBkNjcwYWRhMjI1NGNlNGNhNjM1NTEzNTM2YzM2NWFmMjFlNzFjMmEuLjJjZTg2
YzMwMTk4MDk1MDU1OTk2ZWNiNmQ5YzQ5Y2FkNDZjM2Q5YWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAg
LTMxNzQsNiArMzE3NCw4IEBACiAgICAgICAgICAgICAncGxhdGZvcm0vYXVkaW8vQXVkaW9EZXN0
aW5hdGlvbi5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9hdWRpby9BdWRpb0ZpbGVSZWFkZXIu
aCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vYXVkaW8vQXVkaW9Qcm9jZXNzb3IuaCcsCisgICAg
ICAgICAgICAncGxhdGZvcm0vYXVkaW8vQXVkaW9QdWxsRklGTy5jcHAnLAorICAgICAgICAgICAg
J3BsYXRmb3JtL2F1ZGlvL0F1ZGlvUHVsbEZJRk8uaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0v
YXVkaW8vQXVkaW9SZXNhbXBsZXIuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9hdWRpby9B
dWRpb1Jlc2FtcGxlci5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9hdWRpby9BdWRpb1Jlc2Ft
cGxlcktlcm5lbC5jcHAnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vQXVkaW9QdWxsRklGTy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRp
b1B1bGxGSUZPLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wM2U4OWRlYmE3NjI5OThjNmY5ZDVjMTM5MWUzYTc4
NzA3ZWNhZGY1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vQXVkaW9QdWxsRklGTy5jcHAKQEAgLTAsMCArMSwxNTQgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIENvbXB1dGVyLCBJbmMuICgiQXBw
bGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNl
ZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20gdGhp
cyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVU
T1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisKKyNpZiBFTkFCTEUoV0VCX0FVRElPKQorCisjaW5jbHVkZSAiQXVkaW9QdWxsRklGTy5o
IgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0F1ZGlvUHVsbEZJRk86OkF1ZGlvUHVsbEZJRk8o
QXVkaW9Tb3VyY2VQcm92aWRlciYgYXVkaW9Qcm92aWRlciwgdW5zaWduZWQgbnVtYmVyT2ZDaGFu
bmVscywgc2l6ZV90IGZpZm9MZW5ndGgsIHNpemVfdCBwcm92aWRlclNpemUpCisgICAgOiBtX3By
b3ZpZGVyKGF1ZGlvUHJvdmlkZXIpCisgICAgLCBtX2ZpZm9BdWRpb0J1cyhudW1iZXJPZkNoYW5u
ZWxzLCBmaWZvTGVuZ3RoKQorICAgICwgbV9maWZvTGVuZ3RoKGZpZm9MZW5ndGgpCisgICAgLCBt
X2ZyYW1lc0luRmlmbygwKQorICAgICwgbV9yZWFkSW5kZXgoMCkKKyAgICAsIG1fd3JpdGVJbmRl
eCgwKQorICAgICwgbV9wcm92aWRlclNpemUocHJvdmlkZXJTaXplKQorICAgICwgbV90ZW1wQnVz
KG51bWJlck9mQ2hhbm5lbHMsIHByb3ZpZGVyU2l6ZSkKK3sKK30KKwordm9pZCBBdWRpb1B1bGxG
SUZPOjpjb25zdW1lKEF1ZGlvQnVzKiBkZXN0aW5hdGlvbiwgc2l6ZV90IGZyYW1lc1RvQ29uc3Vt
ZSkKK3sKKyAgICBib29sIGlzR29vZCA9IGRlc3RpbmF0aW9uICYmIChmcmFtZXNUb0NvbnN1bWUg
PD0gbV9maWZvTGVuZ3RoKTsKKyAgICBBU1NFUlQoaXNHb29kKTsKKyAgICBpZiAoIWlzR29vZCkK
KyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKGZyYW1lc1RvQ29uc3VtZSA+IG1fZnJhbWVzSW5G
aWZvKSB7CisgICAgICAgIC8vIFdlIGRvbid0IGhhdmUgZW5vdWdoIGRhdGEgaW4gdGhlIEZJRk8g
dG8gZnVsZmlsbCB0aGUgcmVxdWVzdC4gQXNrIGZvciBtb3JlIGRhdGEuCisgICAgICAgIGZpbGxC
dWZmZXIoZnJhbWVzVG9Db25zdW1lIC0gbV9mcmFtZXNJbkZpZm8pOworICAgIH0KKworICAgIC8v
IFdlIGhhdmUgZW5vdWdoIGRhdGEgbm93LiBDb3B5IHRoZSByZXF1ZXN0ZWQgbnVtYmVyIG9mIHNh
bXBsZXMgdG8gdGhlIGRlc3RpbmF0aW9uLgorCisgICAgc2l6ZV90IHBhcnQxTGVuZ3RoOworICAg
IHNpemVfdCBwYXJ0Mkxlbmd0aDsKKyAgICBmaW5kV3JhcExlbmd0aHMobV9yZWFkSW5kZXgsIGZy
YW1lc1RvQ29uc3VtZSwgcGFydDFMZW5ndGgsIHBhcnQyTGVuZ3RoKTsKKworICAgIHNpemVfdCBu
dW1iZXJPZkNoYW5uZWxzID0gbV9maWZvQXVkaW9CdXMubnVtYmVyT2ZDaGFubmVscygpOworCisg
ICAgZm9yIChzaXplX3QgY2hhbm5lbEluZGV4ID0gMDsgY2hhbm5lbEluZGV4IDwgbnVtYmVyT2ZD
aGFubmVsczsgKytjaGFubmVsSW5kZXgpIHsKKyAgICAgICAgZmxvYXQqIGRlc3RpbmF0aW9uRGF0
YSA9IGRlc3RpbmF0aW9uLT5jaGFubmVsKGNoYW5uZWxJbmRleCktPm11dGFibGVEYXRhKCk7Cisg
ICAgICAgIGNvbnN0IGZsb2F0KiBzb3VyY2VEYXRhID0gbV9maWZvQXVkaW9CdXMuY2hhbm5lbChj
aGFubmVsSW5kZXgpLT5kYXRhKCk7CisKKyAgICAgICAgYm9vbCBpc0NvcHlHb29kID0gKChtX3Jl
YWRJbmRleCA8IG1fZmlmb0xlbmd0aCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICYmICht
X3JlYWRJbmRleCArIHBhcnQxTGVuZ3RoKSA8PSBtX2ZpZm9MZW5ndGgKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICYmIChwYXJ0MUxlbmd0aCA8PSBkZXN0aW5hdGlvbi0+bGVuZ3RoKCkpCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAmJiAocGFydDFMZW5ndGggKyBwYXJ0Mkxlbmd0aCkg
PD0gZGVzdGluYXRpb24tPmxlbmd0aCgpKTsKKyAgICAgICAgQVNTRVJUKGlzQ29weUdvb2QpOwor
ICAgICAgICBpZiAoIWlzQ29weUdvb2QpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAg
bWVtY3B5KGRlc3RpbmF0aW9uRGF0YSwgc291cmNlRGF0YSArIG1fcmVhZEluZGV4LCBwYXJ0MUxl
bmd0aCAqIHNpemVvZigqc291cmNlRGF0YSkpOworICAgICAgICAvLyBIYW5kbGUgd3JhcCBhcm91
bmQgb2YgdGhlIEZJRk8sIGlmIG5lZWRlZC4KKyAgICAgICAgaWYgKHBhcnQyTGVuZ3RoID4gMCkK
KyAgICAgICAgICAgIG1lbWNweShkZXN0aW5hdGlvbkRhdGEgKyBwYXJ0MUxlbmd0aCwgc291cmNl
RGF0YSwgcGFydDJMZW5ndGggKiBzaXplb2YoKnNvdXJjZURhdGEpKTsKKyAgICB9CisgICAgbV9y
ZWFkSW5kZXggPSB1cGRhdGVJbmRleChtX3JlYWRJbmRleCwgZnJhbWVzVG9Db25zdW1lKTsKKyAg
ICBtX2ZyYW1lc0luRmlmbyAtPSBmcmFtZXNUb0NvbnN1bWU7CisgICAgQVNTRVJUKG1fZnJhbWVz
SW5GaWZvID49IDApOworfQorCit2b2lkIEF1ZGlvUHVsbEZJRk86OmZpbmRXcmFwTGVuZ3Rocyhz
aXplX3QgaW5kZXgsIHNpemVfdCBzaXplLCBzaXplX3QmIHBhcnQxTGVuZ3RoLCBzaXplX3QmIHBh
cnQyTGVuZ3RoKQoreworICAgIEFTU0VSVChpbmRleCA8IG1fZmlmb0xlbmd0aCAmJiBzaXplIDw9
IG1fZmlmb0xlbmd0aCk7CisgICAgaWYgKGluZGV4IDwgbV9maWZvTGVuZ3RoICYmIHNpemUgPD0g
bV9maWZvTGVuZ3RoKSB7CisgICAgICAgIGlmIChpbmRleCArIHNpemUgPiBtX2ZpZm9MZW5ndGgp
IHsKKyAgICAgICAgICAgIC8vIE5lZWQgdG8gd3JhcC4gRmlndXJlIG91dCB0aGUgbGVuZ3RoIG9m
IGVhY2ggcGllY2UuCisgICAgICAgICAgICBwYXJ0MUxlbmd0aCA9IG1fZmlmb0xlbmd0aCAtIGlu
ZGV4OworICAgICAgICAgICAgcGFydDJMZW5ndGggPSBzaXplIC0gcGFydDFMZW5ndGg7CisgICAg
ICAgIH0gZWxzZSB7CisgICAgICAgICAgICAvLyBObyB3cmFwIG5lZWRlZC4KKyAgICAgICAgICAg
IHBhcnQxTGVuZ3RoID0gc2l6ZTsKKyAgICAgICAgICAgIHBhcnQyTGVuZ3RoID0gMDsKKyAgICAg
ICAgfQorICAgIH0gZWxzZSB7CisgICAgICAgIC8vIEludmFsaWQgdmFsdWVzIGZvciBpbmRleCBv
ciBzaXplLiBTZXQgdGhlIHBhcnQgbGVuZ3RocyB0byB6ZXJvIHNvIG5vdGhpbmcgaXMgY29waWVk
LgorICAgICAgICBwYXJ0MUxlbmd0aCA9IDA7CisgICAgICAgIHBhcnQyTGVuZ3RoID0gMDsKKyAg
ICB9Cit9CisKK3ZvaWQgQXVkaW9QdWxsRklGTzo6ZmlsbEJ1ZmZlcihzaXplX3QgbnVtYmVyT2ZG
cmFtZXMpCit7CisgICAgLy8gS2VlcCBhc2tpbmcgdGhlIHByb3ZpZGVyIHRvIGdpdmUgdXMgZGF0
YSB1bnRpbCB3ZSBoYXZlIHJlY2VpdmVkIGF0IGxlYXN0IHxudW1iZXJPZkZyYW1lc3wgb2YKKyAg
ICAvLyBkYXRhLiBTdHVmZiB0aGUgZGF0YSBpbnRvIHRoZSBGSUZPLgorICAgIHNpemVfdCBmcmFt
ZXNQcm92aWRlZCA9IDA7CisKKyAgICB3aGlsZSAoZnJhbWVzUHJvdmlkZWQgPCBudW1iZXJPZkZy
YW1lcykgeworICAgICAgICBtX3Byb3ZpZGVyLnByb3ZpZGVJbnB1dCgmbV90ZW1wQnVzLCBtX3By
b3ZpZGVyU2l6ZSk7CisKKyAgICAgICAgc2l6ZV90IHBhcnQxTGVuZ3RoOworICAgICAgICBzaXpl
X3QgcGFydDJMZW5ndGg7CisgICAgICAgIGZpbmRXcmFwTGVuZ3RocyhtX3dyaXRlSW5kZXgsIG1f
cHJvdmlkZXJTaXplLCBwYXJ0MUxlbmd0aCwgcGFydDJMZW5ndGgpOworCisgICAgICAgIHNpemVf
dCBudW1iZXJPZkNoYW5uZWxzID0gbV9maWZvQXVkaW9CdXMubnVtYmVyT2ZDaGFubmVscygpOwor
ICAgICAgICAKKyAgICAgICAgZm9yIChzaXplX3QgY2hhbm5lbEluZGV4ID0gMDsgY2hhbm5lbElu
ZGV4IDwgbnVtYmVyT2ZDaGFubmVsczsgKytjaGFubmVsSW5kZXgpIHsKKyAgICAgICAgICAgIGZs
b2F0KiBkZXN0aW5hdGlvbiA9IG1fZmlmb0F1ZGlvQnVzLmNoYW5uZWwoY2hhbm5lbEluZGV4KS0+
bXV0YWJsZURhdGEoKTsKKyAgICAgICAgICAgIGNvbnN0IGZsb2F0KiBzb3VyY2UgPSBtX3RlbXBC
dXMuY2hhbm5lbChjaGFubmVsSW5kZXgpLT5kYXRhKCk7CisKKyAgICAgICAgICAgIGJvb2wgaXND
b3B5R29vZCA9IChwYXJ0MUxlbmd0aCA8PSBtX3Byb3ZpZGVyU2l6ZQorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICYmIChwYXJ0MUxlbmd0aCArIHBhcnQyTGVuZ3RoKSA8PSBtX3Byb3Zp
ZGVyU2l6ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmIChtX3dyaXRlSW5kZXgg
PCBtX2ZpZm9MZW5ndGgpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgKG1fd3Jp
dGVJbmRleCArIHBhcnQxTGVuZ3RoKSA8PSBtX2ZpZm9MZW5ndGgKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAmJiBwYXJ0Mkxlbmd0aCA8IG1fZmlmb0xlbmd0aCk7CisgICAgICAgICAg
ICBBU1NFUlQoaXNDb3B5R29vZCk7CisgICAgICAgICAgICBpZiAoIWlzQ29weUdvb2QpCisgICAg
ICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICBtZW1jcHkoZGVzdGluYXRpb24gKyBt
X3dyaXRlSW5kZXgsIHNvdXJjZSwgcGFydDFMZW5ndGggKiBzaXplb2YoKmRlc3RpbmF0aW9uKSk7
CisgICAgICAgICAgICAvLyBIYW5kbGUgd3JhcCBhcm91bmQgb2YgdGhlIEZJRk8sIGlmIG5lZWRl
ZC4KKyAgICAgICAgICAgIGlmIChwYXJ0Mkxlbmd0aCA+IDApCisgICAgICAgICAgICAgICAgbWVt
Y3B5KGRlc3RpbmF0aW9uLCBzb3VyY2UgKyBwYXJ0MUxlbmd0aCwgcGFydDJMZW5ndGggKiBzaXpl
b2YoKmRlc3RpbmF0aW9uKSk7CisgICAgICAgIH0KKworICAgICAgICBtX2ZyYW1lc0luRmlmbyAr
PSBtX3Byb3ZpZGVyU2l6ZTsKKyAgICAgICAgQVNTRVJUKG1fZnJhbWVzSW5GaWZvIDw9IG1fZmlm
b0xlbmd0aCk7CisgICAgICAgIG1fd3JpdGVJbmRleCA9IHVwZGF0ZUluZGV4KG1fd3JpdGVJbmRl
eCwgbV9wcm92aWRlclNpemUpOworICAgICAgICBmcmFtZXNQcm92aWRlZCArPSBtX3Byb3ZpZGVy
U2l6ZTsKKyAgICB9Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVO
QUJMRShXRUJfQVVESU8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRp
by9BdWRpb1B1bGxGSUZPLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb1B1
bGxGSUZPLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uZmFjMTliOWQxZjk4YTRlMDVhZjMwZmI3OWNlYWY5YWUzNjY1
YmEzMQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1
ZGlvUHVsbEZJRk8uaApAQCAtMCwwICsxLDkwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEy
IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAz
LiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRlciwgSW5jLiAoIkFwcGxlIikgbm9y
IHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5k
b3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdh
cmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMg
SVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBBdWRpb1B1bGxGSUZPX2gK
KyNkZWZpbmUgQXVkaW9QdWxsRklGT19oCisKKyNpbmNsdWRlICJBdWRpb0J1cy5oIgorI2luY2x1
ZGUgIkF1ZGlvU291cmNlUHJvdmlkZXIuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisvLyBB
IEZJRk8gKEZpcnN0IEluIEZpcnN0IE91dCkgYnVmZmVyIHRvIGhhbmRsZSBtaXNtYXRjaGVzIGlu
IGJ1ZmZlciBzaXplcyBiZXR3ZWVuIGEgcHJvdmlkZXIgYW5kCisvLyByZWNlaXZlci4gVGhlIHJl
Y2VpdmVyIHdpbGwgInB1bGwiIGRhdGEgZnJvbSB0aGlzIEZJRk8uIElmIGRhdGEgaXMgYWxyZWFk
eSBhdmFpbGFibGUgaW4gdGhlCisvLyBGSUZPLCBpdCBpcyBwcm92aWRlZCB0byB0aGUgcmVjZWl2
ZXIuIElmIGluc3VmZmljaWVudCBkYXRhIGlzIGF2YWlsYWJsZSB0byBzYXRpc2Z5IHRoZSByZXF1
ZXN0LAorLy8gdGhlIEZJRk8gd2lsbCBhc2sgdGhlIHByb3ZpZGVyIGZvciBtb3JlIGRhdGEgd2hl
biBuZWNlc3NhcnkgdG8gZnVsZmlsbCBhIHJlcXVlc3QuIENvbnRyYXN0IHRoaXMKKy8vIHdpdGgg
YSAicHVzaCIgRklGTywgd2hlcmUgdGhlIHNlbmRlciBwdXNoZXMgZGF0YSB0byB0aGUgRklGTyB3
aGljaCB3aWxsIGl0c2VsZiBwdXNoIHRoZSBkYXRhIHRvCisvLyB0aGUgcmVjZWl2ZXIgd2hlbiB0
aGUgRklGTyBpcyBmdWxsLgorY2xhc3MgQXVkaW9QdWxsRklGTyB7CitwdWJsaWM6CisgICAgLy8g
Q3JlYXRlIGEgRklGTyB0aGF0IGdldHMgZGF0YSBmcm9tIHxwcm92aWRlcnwuIFRoZSBGSUZPIHdp
bGwgYmUgbGFyZ2UgZW5vdWdoIHRvIGhvbGQKKyAgICAvLyB8Zmlmb0xlbmd0aHwgZnJhbWVzIG9m
IGRhdGEgb2YgfG51bWJlck9mQ2hhbm5lbHN8IGNoYW5uZWxzLiBUaGUgQXVkaW9Tb3VyY2VQcm92
aWRlciB3aWxsIGJlCisgICAgLy8gYXNrZWQgdG8gcHJvZHVjZSB8cHJvdmlkZXJTaXplfCBmcmFt
ZXMgd2hlbiB0aGUgRklGTyBuZWVkcyBtb3JlIGRhdGEuCisgICAgQXVkaW9QdWxsRklGTyhBdWRp
b1NvdXJjZVByb3ZpZGVyJiBhdWRpb1Byb3ZpZGVyLCB1bnNpZ25lZCBudW1iZXJPZkNoYW5uZWxz
LCBzaXplX3QgZmlmb0xlbmd0aCwgc2l6ZV90IHByb3ZpZGVyU2l6ZSk7CisKKyAgICAvLyBSZWFk
IHxmcmFtZXNUb0NvbnN1bWV8IGZyYW1lcyBmcm9tIHRoZSBGSUZPIGludG8gdGhlIGRlc3RpbmF0
aW9uLiBJZiB0aGUgRklGTyBkb2VzIG5vdCBoYXZlCisgICAgLy8gZW5vdWdoIGRhdGEsIHdlIGFz
ayB0aGUgfHByb3ZpZGVyfCB0byBnZXQgbW9yZSBkYXRhIHRvIGZ1bGZpbGwgdGhlIHJlcXVlc3Qu
CisgICAgdm9pZCBjb25zdW1lKEF1ZGlvQnVzKiBkZXN0aW5hdGlvbiwgc2l6ZV90IGZyYW1lc1Rv
Q29uc3VtZSk7CisKK3ByaXZhdGU6CisgICAgLy8gVXBkYXRlIHRoZSBGSUZPIGluZGV4IGJ5IHRo
ZSBzdGVwLCB3aXRoIGFwcHJvcHJpYXRlIHdyYXBwaW5nIGFyb3VuZCB0aGUgZW5kcG9pbnQuCisg
ICAgaW50IHVwZGF0ZUluZGV4KGludCBpbmRleCwgaW50IHN0ZXApIHsgcmV0dXJuIChpbmRleCAr
IHN0ZXApICUgbV9maWZvTGVuZ3RoOyB9CisKKyAgICB2b2lkIGZpbmRXcmFwTGVuZ3RocyhzaXpl
X3QgaW5kZXgsIHNpemVfdCBwcm92aWRlclNpemUsIHNpemVfdCYgcGFydDFMZW5ndGgsIHNpemVf
dCYgcGFydDJMZW5ndGgpOworICAgIAorICAgIC8vIEZpbGwgdGhlIEZJRk8gYnVmZmVyIHdpdGgg
YXQgbGVhc3QgfG51bWJlck9mRnJhbWVzfCBtb3JlIGRhdGEuCisgICAgdm9pZCBmaWxsQnVmZmVy
KHNpemVfdCBudW1iZXJPZkZyYW1lcyk7CisKKyAgICAvLyBUaGUgcHJvdmlkZXIgb2YgdGhlIGRh
dGEgaW4gb3VyIEZJRk8uCisgICAgQXVkaW9Tb3VyY2VQcm92aWRlciYgbV9wcm92aWRlcjsKKwor
ICAgIC8vIFRoZSBGSUZPIGl0c2VsZi4gSW4gcmVhbGl0eSwgdGhlIEZJRk8gaXMgYSBjaXJjdWxh
ciBidWZmZXIuCisgICAgQXVkaW9CdXMgbV9maWZvQXVkaW9CdXM7CisKKyAgICAvLyBUaGUgdG90
YWwgYXZhaWxhYmxlIHNwYWNlIGluIHRoZSBGSUZPLgorICAgIHNpemVfdCBtX2ZpZm9MZW5ndGg7
CisKKyAgICAvLyBUaGUgbnVtYmVyIG9mIGFjdHVhbCBlbGVtZW50cyBpbiB0aGUgRklGTworICAg
IHNpemVfdCBtX2ZyYW1lc0luRmlmbzsKKworICAgIC8vIFdoZXJlIHRvIHN0YXJ0IHJlYWRpbmcg
ZnJvbSB0aGUgRklGTy4KKyAgICBzaXplX3QgbV9yZWFkSW5kZXg7CisKKyAgICAvLyBXaGVyZSB0
byBzdGFydCB3cml0aW5nIHRvIHRoZSBGSUZPLgorICAgIHNpemVfdCBtX3dyaXRlSW5kZXg7CisK
KyAgICAvLyBOdW1iZXIgb2YgZnJhbWVzIG9mIGRhdGEgdGhhdCB0aGUgcHJvdmlkZXIgd2lsbCBw
cm9kdWNlIHBlciBjYWxsLgorICAgIHVuc2lnbmVkIGludCBtX3Byb3ZpZGVyU2l6ZTsKKworICAg
IC8vIFRlbXBvcmFyeSB3b3Jrc3BhY2UgdG8gaG9sZCB0aGUgZGF0YSBmcm9tIHRoZSBwcm92aWRl
ci4KKyAgICBBdWRpb0J1cyBtX3RlbXBCdXM7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CisKKyNlbmRpZiAvLyBBdWRpb1B1bGxGSUZPLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL0F1ZGlvRGVzdGluYXRpb25DaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9BdWRpb0Rlc3RpbmF0aW9uQ2hyb21pdW0uY3BwCmluZGV4IDZjODIzODVj
ODA4Zjc0MTVlYzA4Yjk4ODNmNjQ0MGY1NGYyMmZmYzcuLmZjMGM1YWFhY2E0MzY1Zjg3MWEyMjUz
NjUxM2ViZWI2ZmY1MTBkZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L0F1ZGlvRGVzdGluYXRpb25DaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvQXVkaW9EZXN0aW5hdGlvbkNocm9taXVtLmNwcApAQCAtMzIsNiArMzIsNyBAQAogCiAj
aW5jbHVkZSAiQXVkaW9EZXN0aW5hdGlvbkNocm9taXVtLmgiCiAKKyNpbmNsdWRlICJBdWRpb1B1
bGxGSUZPLmgiCiAjaW5jbHVkZSAiV2ViS2l0LmgiCiAjaW5jbHVkZSAicGxhdGZvcm0vV2ViS2l0
UGxhdGZvcm1TdXBwb3J0LmgiCiAKQEAgLTc2LDcgKzc3LDcgQEAgQXVkaW9EZXN0aW5hdGlvbkNo
cm9taXVtOjpBdWRpb0Rlc3RpbmF0aW9uQ2hyb21pdW0oQXVkaW9Tb3VyY2VQcm92aWRlciYgcHJv
dmlkZXIKICAgICAvLyBjb250YWlucyBlbm91Z2ggZGF0YSwgdGhlIGRhdGEgd2lsbCBiZSBwcm92
aWRlZCBkaXJlY3RseS4KICAgICAvLyBPdGhlcndpc2UsIHRoZSBGSUZPIHdpbGwgY2FsbCB0aGUg
cHJvdmlkZXIgZW5vdWdoIHRpbWVzIHRvCiAgICAgLy8gc2F0aXNmeSB0aGUgcmVxdWVzdCBmb3Ig
ZGF0YS4KLSAgICBtX2ZpZm8gPSBhZG9wdFB0cihuZXcgRklGTyhwcm92aWRlciwgbnVtYmVyT2ZD
aGFubmVscywgZmlmb1NpemUsIHJlbmRlckJ1ZmZlclNpemUpKTsKKyAgICBtX2ZpZm8gPSBhZG9w
dFB0cihuZXcgQXVkaW9QdWxsRklGTyhwcm92aWRlciwgbnVtYmVyT2ZDaGFubmVscywgZmlmb1Np
emUsIHJlbmRlckJ1ZmZlclNpemUpKTsKIH0KIAogQXVkaW9EZXN0aW5hdGlvbkNocm9taXVtOjp+
QXVkaW9EZXN0aW5hdGlvbkNocm9taXVtKCkKQEAgLTEyNSwxMjUgKzEyNiw2IEBAIHZvaWQgQXVk
aW9EZXN0aW5hdGlvbkNocm9taXVtOjpyZW5kZXIoY29uc3QgV2ViVmVjdG9yPGZsb2F0Kj4mIGF1
ZGlvRGF0YSwgc2l6ZV90CiAgICAgbV9maWZvLT5jb25zdW1lKCZtX3JlbmRlckJ1cywgbnVtYmVy
T2ZGcmFtZXMpOwogfQogCi1BdWRpb0Rlc3RpbmF0aW9uQ2hyb21pdW06OkZJRk86OkZJRk8oQXVk
aW9Tb3VyY2VQcm92aWRlciYgcHJvdmlkZXIsIHVuc2lnbmVkIG51bWJlck9mQ2hhbm5lbHMsIHNp
emVfdCBmaWZvTGVuZ3RoLCBzaXplX3QgcHJvdmlkZXJTaXplKQotICAgIDogbV9wcm92aWRlcihw
cm92aWRlcikKLSAgICAsIG1fZmlmb0F1ZGlvQnVzKG51bWJlck9mQ2hhbm5lbHMsIGZpZm9MZW5n
dGgpCi0gICAgLCBtX2ZpZm9MZW5ndGgoZmlmb0xlbmd0aCkKLSAgICAsIG1fZnJhbWVzSW5GaWZv
KDApCi0gICAgLCBtX3JlYWRJbmRleCgwKQotICAgICwgbV93cml0ZUluZGV4KDApCi0gICAgLCBt
X3Byb3ZpZGVyU2l6ZShwcm92aWRlclNpemUpCi0gICAgLCBtX3RlbXBCdXMobnVtYmVyT2ZDaGFu
bmVscywgcHJvdmlkZXJTaXplKQotewotfQotCi12b2lkIEF1ZGlvRGVzdGluYXRpb25DaHJvbWl1
bTo6RklGTzo6Y29uc3VtZShBdWRpb0J1cyogZGVzdGluYXRpb24sIHNpemVfdCBmcmFtZXNUb0Nv
bnN1bWUpCi17Ci0gICAgYm9vbCBpc0dvb2QgPSBkZXN0aW5hdGlvbiAmJiAoZnJhbWVzVG9Db25z
dW1lIDw9IG1fZmlmb0xlbmd0aCk7Ci0gICAgQVNTRVJUKGlzR29vZCk7Ci0gICAgaWYgKCFpc0dv
b2QpCi0gICAgICAgIHJldHVybjsKLQotICAgIGlmIChmcmFtZXNUb0NvbnN1bWUgPiBtX2ZyYW1l
c0luRmlmbykgewotICAgICAgICAvLyBXZSBkb24ndCBoYXZlIGVub3VnaCBkYXRhIGluIHRoZSBG
SUZPIHRvIGZ1bGZpbGwgdGhlCi0gICAgICAgIC8vIHJlcXVlc3QuIEFzayBmb3IgbW9yZSBkYXRh
LgotICAgICAgICBmaWxsQnVmZmVyKGZyYW1lc1RvQ29uc3VtZSAtIG1fZnJhbWVzSW5GaWZvKTsK
LSAgICB9Ci0KLSAgICAvLyBXZSBoYXZlIGVub3VnaCBkYXRhIG5vdy4gQ29weSB0aGUgcmVxdWVz
dGVkIG51bWJlciBvZiBzYW1wbGVzCi0gICAgLy8gdG8gdGhlIGRlc3RpbmF0aW9uLgotCi0gICAg
c2l6ZV90IHBhcnQxTGVuZ3RoOwotICAgIHNpemVfdCBwYXJ0Mkxlbmd0aDsKLSAgICBmaW5kV3Jh
cExlbmd0aHMobV9yZWFkSW5kZXgsIGZyYW1lc1RvQ29uc3VtZSwgcGFydDFMZW5ndGgsIHBhcnQy
TGVuZ3RoKTsKLQotICAgIHNpemVfdCBudW1iZXJPZkNoYW5uZWxzID0gbV9maWZvQXVkaW9CdXMu
bnVtYmVyT2ZDaGFubmVscygpOwotCi0gICAgZm9yIChzaXplX3QgY2hhbm5lbEluZGV4ID0gMDsg
Y2hhbm5lbEluZGV4IDwgbnVtYmVyT2ZDaGFubmVsczsgKytjaGFubmVsSW5kZXgpIHsKLSAgICAg
ICAgZmxvYXQqIGRlc3RpbmF0aW9uRGF0YSA9IGRlc3RpbmF0aW9uLT5jaGFubmVsKGNoYW5uZWxJ
bmRleCktPm11dGFibGVEYXRhKCk7Ci0gICAgICAgIGNvbnN0IGZsb2F0KiBzb3VyY2VEYXRhID0g
bV9maWZvQXVkaW9CdXMuY2hhbm5lbChjaGFubmVsSW5kZXgpLT5kYXRhKCk7Ci0KLSAgICAgICAg
Ym9vbCBpc0NvcHlHb29kID0gKChtX3JlYWRJbmRleCA8IG1fZmlmb0xlbmd0aCkKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICYmIChtX3JlYWRJbmRleCArIHBhcnQxTGVuZ3RoKSA8PSBtX2Zp
Zm9MZW5ndGgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICYmIChwYXJ0MUxlbmd0aCA8PSBk
ZXN0aW5hdGlvbi0+bGVuZ3RoKCkpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAmJiAocGFy
dDFMZW5ndGggKyBwYXJ0Mkxlbmd0aCkgPD0gZGVzdGluYXRpb24tPmxlbmd0aCgpKTsKLSAgICAg
ICAgQVNTRVJUKGlzQ29weUdvb2QpOwotICAgICAgICBpZiAoIWlzQ29weUdvb2QpCi0gICAgICAg
ICAgICByZXR1cm47Ci0KLSAgICAgICAgbWVtY3B5KGRlc3RpbmF0aW9uRGF0YSwgc291cmNlRGF0
YSArIG1fcmVhZEluZGV4LCBwYXJ0MUxlbmd0aCAqIHNpemVvZigqc291cmNlRGF0YSkpOwotICAg
ICAgICAvLyBIYW5kbGUgd3JhcCBhcm91bmQgb2YgdGhlIEZJRk8sIGlmIG5lZWRlZC4KLSAgICAg
ICAgaWYgKHBhcnQyTGVuZ3RoID4gMCkKLSAgICAgICAgICAgIG1lbWNweShkZXN0aW5hdGlvbkRh
dGEgKyBwYXJ0MUxlbmd0aCwgc291cmNlRGF0YSwgcGFydDJMZW5ndGggKiBzaXplb2YoKnNvdXJj
ZURhdGEpKTsKLSAgICB9Ci0gICAgbV9yZWFkSW5kZXggPSB1cGRhdGVJbmRleChtX3JlYWRJbmRl
eCwgZnJhbWVzVG9Db25zdW1lKTsKLSAgICBtX2ZyYW1lc0luRmlmbyAtPSBmcmFtZXNUb0NvbnN1
bWU7Ci0gICAgQVNTRVJUKG1fZnJhbWVzSW5GaWZvID49IDApOwotfQotCi12b2lkIEF1ZGlvRGVz
dGluYXRpb25DaHJvbWl1bTo6RklGTzo6ZmluZFdyYXBMZW5ndGhzKHNpemVfdCBpbmRleCwgc2l6
ZV90IHNpemUsIHNpemVfdCYgcGFydDFMZW5ndGgsIHNpemVfdCYgcGFydDJMZW5ndGgpCi17Ci0g
ICAgQVNTRVJUKGluZGV4IDwgbV9maWZvTGVuZ3RoICYmIHNpemUgPD0gbV9maWZvTGVuZ3RoKTsK
LSAgICBpZiAoaW5kZXggPCBtX2ZpZm9MZW5ndGggJiYgc2l6ZSA8PSBtX2ZpZm9MZW5ndGgpIHsK
LSAgICAgICAgaWYgKGluZGV4ICsgc2l6ZSA+IG1fZmlmb0xlbmd0aCkgewotICAgICAgICAgICAg
Ly8gTmVlZCB0byB3cmFwLiBGaWd1cmUgb3V0IHRoZSBsZW5ndGggb2YgZWFjaCBwaWVjZS4KLSAg
ICAgICAgICAgIHBhcnQxTGVuZ3RoID0gbV9maWZvTGVuZ3RoIC0gaW5kZXg7Ci0gICAgICAgICAg
ICBwYXJ0Mkxlbmd0aCA9IHNpemUgLSBwYXJ0MUxlbmd0aDsKLSAgICAgICAgfSBlbHNlIHsKLSAg
ICAgICAgICAgIC8vIE5vIHdyYXAgbmVlZGVkLgotICAgICAgICAgICAgcGFydDFMZW5ndGggPSBz
aXplOwotICAgICAgICAgICAgcGFydDJMZW5ndGggPSAwOwotICAgICAgICB9Ci0gICAgfSBlbHNl
IHsKLSAgICAgICAgLy8gSW52YWxpZCB2YWx1ZXMgZm9yIGluZGV4IG9yIHNpemUuIFNldCB0aGUg
cGFydCBsZW5ndGhzIHRvCi0gICAgICAgIC8vIHplcm8gc28gbm90aGluZyBpcyBjb3BpZWQuCi0g
ICAgICAgIHBhcnQxTGVuZ3RoID0gMDsKLSAgICAgICAgcGFydDJMZW5ndGggPSAwOwotICAgIH0K
LX0KLQotdm9pZCBBdWRpb0Rlc3RpbmF0aW9uQ2hyb21pdW06OkZJRk86OmZpbGxCdWZmZXIoc2l6
ZV90IG51bWJlck9mRnJhbWVzKQotewotICAgIC8vIEtlZXAgYXNraW5nIHRoZSBwcm92aWRlciB0
byBnaXZlIHVzIGRhdGEgdW50aWwgd2UgaGF2ZSByZWNlaXZlZAotICAgIC8vIGF0IGxlYXN0IHxu
dW1iZXJPZkZyYW1lc3wgb2YgZGF0YS4gU3R1ZmYgdGhlIGRhdGEgaW50byB0aGUKLSAgICAvLyBG
SUZPLgotICAgIHNpemVfdCBmcmFtZXNQcm92aWRlZCA9IDA7Ci0KLSAgICB3aGlsZSAoZnJhbWVz
UHJvdmlkZWQgPCBudW1iZXJPZkZyYW1lcykgewotICAgICAgICBtX3Byb3ZpZGVyLnByb3ZpZGVJ
bnB1dCgmbV90ZW1wQnVzLCBtX3Byb3ZpZGVyU2l6ZSk7Ci0KLSAgICAgICAgc2l6ZV90IHBhcnQx
TGVuZ3RoOwotICAgICAgICBzaXplX3QgcGFydDJMZW5ndGg7Ci0gICAgICAgIGZpbmRXcmFwTGVu
Z3RocyhtX3dyaXRlSW5kZXgsIG1fcHJvdmlkZXJTaXplLCBwYXJ0MUxlbmd0aCwgcGFydDJMZW5n
dGgpOwotCi0gICAgICAgIHNpemVfdCBudW1iZXJPZkNoYW5uZWxzID0gbV9maWZvQXVkaW9CdXMu
bnVtYmVyT2ZDaGFubmVscygpOwotICAgICAgICAKLSAgICAgICAgZm9yIChzaXplX3QgY2hhbm5l
bEluZGV4ID0gMDsgY2hhbm5lbEluZGV4IDwgbnVtYmVyT2ZDaGFubmVsczsgKytjaGFubmVsSW5k
ZXgpIHsKLSAgICAgICAgICAgIGZsb2F0KiBkZXN0aW5hdGlvbiA9IG1fZmlmb0F1ZGlvQnVzLmNo
YW5uZWwoY2hhbm5lbEluZGV4KS0+bXV0YWJsZURhdGEoKTsKLSAgICAgICAgICAgIGNvbnN0IGZs
b2F0KiBzb3VyY2UgPSBtX3RlbXBCdXMuY2hhbm5lbChjaGFubmVsSW5kZXgpLT5kYXRhKCk7Ci0K
LSAgICAgICAgICAgIGJvb2wgaXNDb3B5R29vZCA9IChwYXJ0MUxlbmd0aCA8PSBtX3Byb3ZpZGVy
U2l6ZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmIChwYXJ0MUxlbmd0aCArIHBh
cnQyTGVuZ3RoKSA8PSBtX3Byb3ZpZGVyU2l6ZQotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICYmIChtX3dyaXRlSW5kZXggPCBtX2ZpZm9MZW5ndGgpCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgJiYgKG1fd3JpdGVJbmRleCArIHBhcnQxTGVuZ3RoKSA8PSBtX2ZpZm9MZW5n
dGgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiBwYXJ0Mkxlbmd0aCA8IG1fZmlm
b0xlbmd0aCk7Ci0gICAgICAgICAgICBBU1NFUlQoaXNDb3B5R29vZCk7Ci0gICAgICAgICAgICBp
ZiAoIWlzQ29weUdvb2QpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgICAgICBt
ZW1jcHkoZGVzdGluYXRpb24gKyBtX3dyaXRlSW5kZXgsIHNvdXJjZSwgcGFydDFMZW5ndGggKiBz
aXplb2YoKmRlc3RpbmF0aW9uKSk7Ci0gICAgICAgICAgICAvLyBIYW5kbGUgd3JhcCBhcm91bmQg
b2YgdGhlIEZJRk8sIGlmIG5lZWRlZC4KLSAgICAgICAgICAgIGlmIChwYXJ0Mkxlbmd0aCA+IDAp
Ci0gICAgICAgICAgICAgICAgbWVtY3B5KGRlc3RpbmF0aW9uLCBzb3VyY2UgKyBwYXJ0MUxlbmd0
aCwgcGFydDJMZW5ndGggKiBzaXplb2YoKmRlc3RpbmF0aW9uKSk7Ci0gICAgICAgIH0KLQotICAg
ICAgICBtX2ZyYW1lc0luRmlmbyArPSBtX3Byb3ZpZGVyU2l6ZTsKLSAgICAgICAgQVNTRVJUKG1f
ZnJhbWVzSW5GaWZvIDw9IG1fZmlmb0xlbmd0aCk7Ci0gICAgICAgIG1fd3JpdGVJbmRleCA9IHVw
ZGF0ZUluZGV4KG1fd3JpdGVJbmRleCwgbV9wcm92aWRlclNpemUpOwotICAgICAgICBmcmFtZXNQ
cm92aWRlZCArPSBtX3Byb3ZpZGVyU2l6ZTsKLSAgICB9Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShXRUJfQVVESU8pCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9BdWRpb0Rlc3RpbmF0aW9uQ2hyb21pdW0uaCBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL0F1ZGlvRGVzdGluYXRpb25DaHJvbWl1bS5oCmluZGV4IDNkMWFm
MmExYTQ5ZDE0YWJiNDljNWU3ODhlYTg2OTE3MzI2ODY2NTEuLmRmZTVlYmQ3YzJiMjU4NjdjNDFi
NTIyMTdhYWUwMDhmYzZiYmVhN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL0F1ZGlvRGVzdGluYXRpb25DaHJvbWl1bS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL0F1ZGlvRGVzdGluYXRpb25DaHJvbWl1bS5oCkBAIC0zOSw2ICszOSw4IEBAIG5hbWVz
cGFjZSBXZWJLaXQgeyBjbGFzcyBXZWJBdWRpb0RldmljZTsgfQogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7IAogCitjbGFzcyBBdWRpb1B1bGxGSUZPOworCiAvLyBBbiBBdWRpb0Rlc3RpbmF0aW9uIHVz
aW5nIENocm9taXVtJ3MgYXVkaW8gc3lzdGVtCiAKIGNsYXNzIEF1ZGlvRGVzdGluYXRpb25DaHJv
bWl1bSA6IHB1YmxpYyBBdWRpb0Rlc3RpbmF0aW9uLCBwdWJsaWMgV2ViS2l0OjpXZWJBdWRpb0Rl
dmljZTo6UmVuZGVyQ2FsbGJhY2sgewpAQCAtNTYsNjQgKzU4LDEzIEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIHZvaWQgcmVuZGVyKGNvbnN0IFdlYktpdDo6V2ViVmVjdG9yPGZsb2F0Kj4mIGF1ZGlv
RGF0YSwgc2l6ZV90IG51bWJlck9mRnJhbWVzKTsKIAogcHJpdmF0ZToKLSAgICAvLyBBIEZJRk8g
KEZpcnN0IEluIEZpcnN0IE91dCkgYnVmZmVyIHRvIGhhbmRsZSBtaXNtYXRjaGVzIGluIHRoZQot
ICAgIC8vIGF1ZGlvIGJhY2tlbmQgaGFyZHdhcmUgYnVmZmVyIHNpemUgYW5kIHRoZSBXZWIgQXVk
aW8gcmVuZGVyIHNpemUuCi0gICAgY2xhc3MgRklGTyB7Ci0gICAgcHVibGljOgotICAgICAgICAv
LyBDcmVhdGUgYSBGSUZPIHRoYXQgZ2V0cyBkYXRhIGZyb20gfHByb3ZpZGVyfC4gVGhlIEZJRk8g
d2lsbAotICAgICAgICAvLyBiZSBsYXJnZSBlbm91Z2ggdG8gaG9sZCB8Zmlmb0xlbmd0aHwgZnJh
bWVzIG9mIGRhdGEgb2YKLSAgICAgICAgLy8gfG51bWJlck9mQ2hhbm5lbHN8IGNoYW5uZWxzLiBU
aGUgQXVkaW9Tb3VyY2VQcm92aWRlciB3aWxsCi0gICAgICAgIC8vIGJlIGFza2VkIHRvIHByb2R1
Y2UgfHByb3ZpZGVyU2l6ZXwgZnJhbWVzIHdoZW4gdGhlIEZJRk8KLSAgICAgICAgLy8gbmVlZHMg
bW9yZSBkYXRhLgotICAgICAgICBGSUZPKEF1ZGlvU291cmNlUHJvdmlkZXImIHByb3ZpZGVyLCB1
bnNpZ25lZCBudW1iZXJPZkNoYW5uZWxzLCBzaXplX3QgZmlmb0xlbmd0aCwgc2l6ZV90IHByb3Zp
ZGVyU2l6ZSk7Ci0KLSAgICAgICAgLy8gUmVhZCB8ZnJhbWVzVG9Db25zdW1lfCBmcmFtZXMgZnJv
bSB0aGUgRklGTyBpbnRvIHRoZQotICAgICAgICAvLyBkZXN0aW5hdGlvbi4gSWYgdGhlIEZJRk8g
ZG9lcyBub3QgaGF2ZSBlbm91Z2ggZGF0YSwgd2UgYXNrCi0gICAgICAgIC8vIHRoZSB8cHJvdmlk
ZXJ8IHRvIGdldCBtb3JlIGRhdGEgdG8gZnVsZmlsbCB0aGUgcmVxdWVzdC4KLSAgICAgICAgdm9p
ZCBjb25zdW1lKEF1ZGlvQnVzKiBkZXN0aW5hdGlvbiwgc2l6ZV90IGZyYW1lc1RvQ29uc3VtZSk7
Ci0KLSAgICBwcml2YXRlOgotICAgICAgICAvLyBVcGRhdGUgdGhlIEZJRk8gaW5kZXggYnkgdGhl
IHN0ZXAsIHdpdGggYXBwcm9wcmlhdGUKLSAgICAgICAgLy8gd3JhcHBpbmcgYXJvdW5kIHRoZSBl
bmRwb2ludC4KLSAgICAgICAgaW50IHVwZGF0ZUluZGV4KGludCBpbmRleCwgaW50IHN0ZXApIHsg
cmV0dXJuIChpbmRleCArIHN0ZXApICUgbV9maWZvTGVuZ3RoOyB9Ci0KLSAgICAgICAgdm9pZCBm
aW5kV3JhcExlbmd0aHMoc2l6ZV90IGluZGV4LCBzaXplX3QgcHJvdmlkZXJTaXplLCBzaXplX3Qm
IHBhcnQxTGVuZ3RoLCBzaXplX3QmIHBhcnQyTGVuZ3RoKTsKLSAgICAgICAgCi0gICAgICAgIC8v
IEZpbGwgdGhlIEZJRk8gYnVmZmVyIHdpdGggYXQgbGVhc3QgfG51bWJlck9mRnJhbWVzfCBtb3Jl
IGRhdGEuCi0gICAgICAgIHZvaWQgZmlsbEJ1ZmZlcihzaXplX3QgbnVtYmVyT2ZGcmFtZXMpOwot
Ci0gICAgICAgIC8vIFRoZSBwcm92aWRlciBvZiB0aGUgZGF0YSBpbiBvdXIgRklGTy4KLSAgICAg
ICAgQXVkaW9Tb3VyY2VQcm92aWRlciYgbV9wcm92aWRlcjsKLQotICAgICAgICAvLyBUaGUgRklG
TyBpdHNlbGYuIEluIHJlYWxpdHksIHRoZSBGSUZPIGlzIGEgY2lyY3VsYXIgYnVmZmVyLgotICAg
ICAgICBBdWRpb0J1cyBtX2ZpZm9BdWRpb0J1czsKLQotICAgICAgICAvLyBUaGUgdG90YWwgYXZh
aWxhYmxlIHNwYWNlIGluIHRoZSBGSUZPLgotICAgICAgICBzaXplX3QgbV9maWZvTGVuZ3RoOwot
Ci0gICAgICAgIC8vIFRoZSBudW1iZXIgb2YgYWN0dWFsIGVsZW1lbnRzIGluIHRoZSBGSUZPCi0g
ICAgICAgIHNpemVfdCBtX2ZyYW1lc0luRmlmbzsKLQotICAgICAgICAvLyBXaGVyZSB0byBzdGFy
dCByZWFkaW5nIGZyb20gdGhlIEZJRk8uCi0gICAgICAgIHNpemVfdCBtX3JlYWRJbmRleDsKLQot
ICAgICAgICAvLyBXaGVyZSB0byBzdGFydCB3cml0aW5nIHRvIHRoZSBGSUZPLgotICAgICAgICBz
aXplX3QgbV93cml0ZUluZGV4OwotCi0gICAgICAgIC8vIE51bWJlciBvZiBmcmFtZXMgb2YgZGF0
YSB0aGF0IHRoZSBwcm92aWRlciB3aWxsIHByb2R1Y2UgcGVyIGNhbGwuCi0gICAgICAgIHVuc2ln
bmVkIGludCBtX3Byb3ZpZGVyU2l6ZTsKLQotICAgICAgICAvLyBUZW1wb3Jhcnkgd29ya3NwYWNl
IHRvIGhvbGQgdGhlIGRhdGEgZnJvbSB0aGUgcHJvdmlkZXIuCi0gICAgICAgIEF1ZGlvQnVzIG1f
dGVtcEJ1czsKLSAgICB9OwotCi1BdWRpb1NvdXJjZVByb3ZpZGVyJiBtX3Byb3ZpZGVyOworICAg
IEF1ZGlvU291cmNlUHJvdmlkZXImIG1fcHJvdmlkZXI7CiAgICAgQXVkaW9CdXMgbV9yZW5kZXJC
dXM7CiAgICAgZmxvYXQgbV9zYW1wbGVSYXRlOwogICAgIGJvb2wgbV9pc1BsYXlpbmc7CiAgICAg
T3duUHRyPFdlYktpdDo6V2ViQXVkaW9EZXZpY2U+IG1fYXVkaW9EZXZpY2U7CiAgICAgc2l6ZV90
IG1fY2FsbGJhY2tCdWZmZXJTaXplOwotICAgIE93blB0cjxGSUZPPiBtX2ZpZm87CisgICAgT3du
UHRyPEF1ZGlvUHVsbEZJRk8+IG1fZmlmbzsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
</data>

          </attachment>
      

    </bug>

</bugzilla>