<?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>67694</bug_id>
          
          <creation_ts>2011-09-06 20:38:19 -0700</creation_ts>
          <short_desc>Value profling and execution count profiling is performed even for code that cannot be optimized</short_desc>
          <delta_ts>2011-09-08 14:37:16 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>barraclough</cc>
    
    <cc>fpizlo</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>463111</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2011-09-06 20:38:19 -0700</bug_when>
    <thetext>Value profiling and execution count profiling are necessary for invoking an optimizing compiler when tiered compilation is enabled.  But some code blocks cannot be compiled with an optimizing compiler.  Currently, we still incur the overhead of profiling even though these code blocks will never be optimized.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>463112</commentid>
    <comment_count>1</comment_count>
      <attachid>106539</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2011-09-06 20:40:59 -0700</bug_when>
    <thetext>Created attachment 106539
work in progress</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>463143</commentid>
    <comment_count>2</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2011-09-06 22:07:45 -0700</bug_when>
    <thetext>This is a pure win.  Here&apos;s the comparison between ToT with tiered compilation and this patch, with tiered compilation.



Benchmark report for V8.

VMs tested:
&quot;TipOfTree&quot; at /Volumes/Data/pizlo/quinary/OpenSource/WebKitBuild/Release/jsc
&quot;LessProfile&quot; at /Volumes/Data/pizlo/quartary/OpenSource/WebKitBuild/Release/jsc

Collected 12 samples per benchmark/VM, with 4 VM invocations per benchmark. Used 1
benchmark iteration per VM invocation for warm-up. Used the jsc-specific preciseTime()
function to get microsecond-level timing. Reporting benchmark execution times with 95%
confidence intervals in milliseconds.

                     TipOfTree              LessProfile                                   

crypto            81.1727+-0.3694    ?    81.2600+-0.5533       ?
deltablue        256.3750+-0.9625    ^   251.4166+-0.8416       ^ definitely 1.0197x faster
earley-boyer     101.1767+-0.6177    ^    95.7393+-0.5327       ^ definitely 1.0568x faster
raytrace          81.3929+-0.4155    ^    76.3499+-0.7089       ^ definitely 1.0661x faster
regexp           111.0145+-1.0576    ^   108.6231+-0.4444       ^ definitely 1.0220x faster
richards         215.4840+-0.9667    ?   215.7928+-0.9476       ?
splay            102.1599+-0.4318    ^   100.9486+-0.3325       ^ definitely 1.0120x faster

&lt;arithmetic&gt;     135.5394+-0.2250    ^   132.8758+-0.2813       ^ definitely 1.0200x faster
&lt;geometric&gt;      122.7006+-0.2233    ^   119.7584+-0.2910       ^ definitely 1.0246x faster
&lt;harmonic&gt;       113.2119+-0.2301    ^   110.1033+-0.3318       ^ definitely 1.0282x faster</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>463145</commentid>
    <comment_count>3</comment_count>
      <attachid>106545</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2011-09-06 22:11:17 -0700</bug_when>
    <thetext>Created attachment 106545
the patch

Still testing, but this looks like win.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>463147</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-09-06 22:13:21 -0700</bug_when>
    <thetext>Attachment 106545 did not pass style-queue:

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

Source/JavaScriptCore/jit/JIT.cpp:48:  Alphabetical sorting problem.  [build/include_order] [4]
Source/JavaScriptCore/dfg/DFGCapabilities.cpp:48:  Non-label code inside switch statements should be indented.  [whitespace/indent] [4]
Source/JavaScriptCore/bytecode/CodeBlock.cpp:35:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 3 in 9 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>463182</commentid>
    <comment_count>5</comment_count>
      <attachid>106545</attachid>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2011-09-06 23:44:05 -0700</bug_when>
    <thetext>Comment on attachment 106545
the patch

Seems reasonable.  We could probably save the extra pass if we wanted (track at the point opcodes are added to the byte code when unsupported ones are added), but I guess this is hardly an important cost.

Looks like you need to fix windows .defs file &amp; also the alphabetical sorting issues (ascii ordering, so all caps are &lt; all lowercase).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>463504</commentid>
    <comment_count>6</comment_count>
      <attachid>106608</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2011-09-07 11:38:13 -0700</bug_when>
    <thetext>Created attachment 106608
the patch - fix style and build, hopefully

Will cq+ after bots are reasonably happy and I run a few more tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>463506</commentid>
    <comment_count>7</comment_count>
      <attachid>106610</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2011-09-07 11:39:37 -0700</bug_when>
    <thetext>Created attachment 106610
the patch - fix conflict in ChangeLog</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>463535</commentid>
    <comment_count>8</comment_count>
      <attachid>106615</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2011-09-07 11:53:44 -0700</bug_when>
    <thetext>Created attachment 106615
the patch - added a helpful assertion

Still waiting for tests (both tiering enabled and disabled).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>464250</commentid>
    <comment_count>9</comment_count>
      <attachid>106772</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2011-09-08 12:24:01 -0700</bug_when>
    <thetext>Created attachment 106772
the patch

Will watch the bots for a bit and commit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>464286</commentid>
    <comment_count>10</comment_count>
      <attachid>106772</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2011-09-08 13:22:32 -0700</bug_when>
    <thetext>Comment on attachment 106772
the patch

Looks like I&apos;ve fixed Windows.  Committting.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>464378</commentid>
    <comment_count>11</comment_count>
      <attachid>106772</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-09-08 14:37:11 -0700</bug_when>
    <thetext>Comment on attachment 106772
the patch

Clearing flags on attachment: 106772

Committed r94802: &lt;http://trac.webkit.org/changeset/94802&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>464379</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-09-08 14:37:16 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>106539</attachid>
            <date>2011-09-06 20:40:59 -0700</date>
            <delta_ts>2011-09-06 22:11:17 -0700</delta_ts>
            <desc>work in progress</desc>
            <filename>lessprofile_patch_1.diff</filename>
            <type>text/plain</type>
            <size>15270</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gOTQ2MzApCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzkgQEAK
KzIwMTEtMDktMDYgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KKworICAgICAgICBW
YWx1ZSBwcm9mbGluZyBhbmQgZXhlY3V0aW9uIGNvdW50IHByb2ZpbGluZyBpcyBwZXJmb3JtZWQg
ZXZlbiBmb3IKKyAgICAgICAgY29kZSB0aGF0IGNhbm5vdCBiZSBvcHRpbWl6ZWQKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY3Njk0CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisgICAgICAgIAorICAgICAgICBXT1JLIElOIFBS
T0dSRVNTCisKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suY3BwOgorICAgICAgICAoSlND
OjpQcm9ncmFtQ29kZUJsb2NrOjpjYW5Db21waWxlV2l0aERGRyk6CisgICAgICAgIChKU0M6OkV2
YWxDb2RlQmxvY2s6OmNhbkNvbXBpbGVXaXRoREZHKToKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25D
b2RlQmxvY2s6OmNhbkNvbXBpbGVXaXRoREZHKToKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxv
Y2suaDoKKyAgICAgICAgKiBkZmcvREZHQ2FwYWJpbGl0aWVzLmNwcDogQWRkZWQuCisgICAgICAg
IChKU0M6OkRGRzo6Y2FuQ29tcGlsZU9wY29kZXMpOgorICAgICAgICAqIGRmZy9ERkdDYXBhYmls
aXRpZXMuaDogQWRkZWQuCisgICAgICAgIChKU0M6OkRGRzo6bWlnaHRDb21waWxlRXZhbCk6Cisg
ICAgICAgIChKU0M6OkRGRzo6bWlnaHRDb21waWxlUHJvZ3JhbSk6CisgICAgICAgIChKU0M6OkRG
Rzo6bWlnaHRDb21waWxlRnVuY3Rpb25Gb3JDYWxsKToKKyAgICAgICAgKEpTQzo6REZHOjptaWdo
dENvbXBpbGVGdW5jdGlvbkZvckNvbnN0cnVjdCk6CisgICAgICAgIChKU0M6OkRGRzo6Y2FuQ29t
cGlsZU9wY29kZSk6CisgICAgICAgIChKU0M6OkRGRzo6Y2FuQ29tcGlsZUV2YWwpOgorICAgICAg
ICAoSlNDOjpERkc6OmNhbkNvbXBpbGVQcm9ncmFtKToKKyAgICAgICAgKEpTQzo6REZHOjpjYW5D
b21waWxlRnVuY3Rpb25Gb3JDYWxsKToKKyAgICAgICAgKEpTQzo6REZHOjpjYW5Db21waWxlRnVu
Y3Rpb25Gb3JDb25zdHJ1Y3QpOgorICAgICAgICAqIGppdC9KSVQuY3BwOgorICAgICAgICAoSlND
OjpKSVQ6OmVtaXRPcHRpbWl6YXRpb25DaGVjayk6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0
ZUNvbXBpbGUpOgorICAgICAgICAqIGppdC9KSVQuaDoKKyAgICAgICAgKEpTQzo6SklUOjpzaG91
bGRFbWl0UHJvZmlsaW5nKToKKyAgICAgICAgKiBqaXQvSklUSW5saW5lTWV0aG9kcy5oOgorICAg
ICAgICAoSlNDOjpKSVQ6OmVtaXRWYWx1ZVByb2ZpbGluZ1NpdGUpOgorICAgICAgICAqIHd0Zi9Q
bGF0Zm9ybS5oOgorCiAyMDExLTA5LTA2ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+
CiAKICAgICAgICAgREZHIEpJVCBkb2VzIG5vdCBvcHRpbWl6ZSBib29sZWFucwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAJKHJldmlzaW9uIDk0
NjE5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTE5MjUsNiArMTkyNSwyMyBAQCBKU09iamVjdCogRnVuY3Rpb25Db2Rl
QmxvY2s6OmNvbXBpbGVPcHRpCiAgICAgSlNPYmplY3QqIGVycm9yID0gc3RhdGljX2Nhc3Q8RnVu
Y3Rpb25FeGVjdXRhYmxlKj4ob3duZXJFeGVjdXRhYmxlKCkpLT5jb21waWxlT3B0aW1pemVkRm9y
KGV4ZWMsIHNjb3BlQ2hhaW5Ob2RlLCBtX2lzQ29uc3RydWN0b3IgPyBDb2RlRm9yQ29uc3RydWN0
IDogQ29kZUZvckNhbGwpOwogICAgIHJldHVybiBlcnJvcjsKIH0KKworQ29kZUJsb2NrKiBQcm9n
cmFtQ29kZUJsb2NrOjpjYW5Db21waWxlV2l0aERGRygpCit7CisgICAgcmV0dXJuIERGRzo6Y2Fu
Q29tcGlsZVByb2dyYW0odGhpcyk7Cit9CisKK0NvZGVCbG9jayogRXZhbENvZGVCbG9jazo6Y2Fu
Q29tcGlsZVdpdGhERkcoKQoreworICAgIHJldHVybiBERkc6OmNhbkNvbXBpbGVFdmFsKHRoaXMp
OworfQorCitDb2RlQmxvY2sqIEZ1bmN0aW9uQ29kZUJsb2NrOjpjYW5Db21waWxlV2l0aERGRygp
Cit7CisgICAgaWYgKG1faXNDb25zdHJ1Y3RvcikKKyAgICAgICAgcmV0dXJuIERGRzo6Y2FuQ29t
cGlsZUZ1bmN0aW9uRm9yQ29uc3RydWN0KHRoaXMpOworICAgIHJldHVybiBERkc6OmNhbkNvbXBp
bGVGdW5jdGlvbkZvckNhbGwodGhpcyk7Cit9CiAjZW5kaWYKIAogfSAvLyBuYW1lc3BhY2UgSlND
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCShyZXZp
c2lvbiA5NDYxOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2su
aAkod29ya2luZyBjb3B5KQpAQCAtMzI3LDYgKzMyNyw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
ICAgICBFeGVjdXRhYmxlUG9vbCogZXhlY3V0YWJsZVBvb2woKSB7IHJldHVybiBnZXRKSVRDb2Rl
KCkuZ2V0RXhlY3V0YWJsZVBvb2woKTsgfQogICAgICAgICB2aXJ0dWFsIEpTT2JqZWN0KiBjb21w
aWxlT3B0aW1pemVkKEV4ZWNTdGF0ZSosIFNjb3BlQ2hhaW5Ob2RlKikgPSAwOwogICAgICAgICB2
aXJ0dWFsIENvZGVCbG9jayogcmVwbGFjZW1lbnQoKSA9IDA7CisgICAgICAgIHZpcnR1YWwgYm9v
bCBjYW5Db21waWxlV2l0aERGRygpID0gMDsKICNlbHNlCiAgICAgICAgIEpJVENvZGU6OkpJVFR5
cGUgZ2V0SklUVHlwZSgpIHsgcmV0dXJuIEpJVENvZGU6OkJhc2VsaW5lSklUOyB9CiAjZW5kaWYK
QEAgLTMzNCw2ICszMzUsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgU2NyaXB0RXhlY3V0
YWJsZSogb3duZXJFeGVjdXRhYmxlKCkgY29uc3QgeyByZXR1cm4gbV9vd25lckV4ZWN1dGFibGUu
Z2V0KCk7IH0KIAogICAgICAgICB2b2lkIHNldEdsb2JhbERhdGEoSlNHbG9iYWxEYXRhKiBnbG9i
YWxEYXRhKSB7IG1fZ2xvYmFsRGF0YSA9IGdsb2JhbERhdGE7IH0KKyAgICAgICAgSlNHbG9iYWxE
YXRhKiBnbG9iYWxEYXRhKCkgeyByZXR1cm4gbV9nbG9iYWxEYXRhOyB9CiAKICAgICAgICAgdm9p
ZCBzZXRUaGlzUmVnaXN0ZXIoaW50IHRoaXNSZWdpc3RlcikgeyBtX3RoaXNSZWdpc3RlciA9IHRo
aXNSZWdpc3RlcjsgfQogICAgICAgICBpbnQgdGhpc1JlZ2lzdGVyKCkgY29uc3QgeyByZXR1cm4g
bV90aGlzUmVnaXN0ZXI7IH0KQEAgLTcyMyw2ICs3MjUsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICBwcm90ZWN0ZWQ6CiAgICAgICAgIHZpcnR1YWwgSlNPYmplY3QqIGNvbXBpbGVPcHRpbWl6ZWQo
RXhlY1N0YXRlKiwgU2NvcGVDaGFpbk5vZGUqKTsKICAgICAgICAgdmlydHVhbCBDb2RlQmxvY2sq
IHJlcGxhY2VtZW50KCk7CisgICAgICAgIHZpcnR1YWwgYm9vbCBjYW5Db21waWxlV2l0aERGRygp
OwogI2VuZGlmCiAgICAgfTsKIApAQCAtNzQ4LDYgKzc1MSw3IEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgIHByb3RlY3RlZDoKICAgICAgICAgdmlydHVhbCBKU09iamVjdCogY29tcGlsZU9wdGltaXpl
ZChFeGVjU3RhdGUqLCBTY29wZUNoYWluTm9kZSopOwogICAgICAgICB2aXJ0dWFsIENvZGVCbG9j
ayogcmVwbGFjZW1lbnQoKTsKKyAgICAgICAgdmlydHVhbCBib29sIGNhbkNvbXBpbGVXaXRoREZH
KCk7CiAjZW5kaWYKIAogICAgIHByaXZhdGU6CkBAIC03NzQsNiArNzc4LDcgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgcHJvdGVjdGVkOgogICAgICAgICB2aXJ0dWFsIEpTT2JqZWN0KiBjb21waWxl
T3B0aW1pemVkKEV4ZWNTdGF0ZSosIFNjb3BlQ2hhaW5Ob2RlKik7CiAgICAgICAgIHZpcnR1YWwg
Q29kZUJsb2NrKiByZXBsYWNlbWVudCgpOworICAgICAgICB2aXJ0dWFsIGJvb2wgY2FuQ29tcGls
ZVdpdGhERkcoKTsKICNlbmRpZgogICAgIH07CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsNTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkRGR0NhcGFiaWxpdGllcy5oIgorCituYW1l
c3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CisKK2Jvb2wgY2FuQ29tcGlsZU9wY29kZXMoQ29k
ZUJsb2NrKiBjb2RlQmxvY2spCit7CisgICAgSW50ZXJwcmV0ZXIqIGludGVycHJldGVyID0gY29k
ZUJsb2NrLT5nbG9iYWxEYXRhKCktPmludGVycHJldGVyOworICAgIEluc3RydWN0aW9uKiBpbnN0
cnVjdGlvbnNCZWdpbiA9IGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKTsKKyAgICB1
bnNpZ25lZCBpbnN0cnVjdGlvbkNvdW50ID0gY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5zaXpl
KCk7CisgICAgCisgICAgZm9yICh1bnNpZ25lZCBieXRlY29kZU9mZnNldCA9IDA7IGJ5dGVjb2Rl
T2Zmc2V0IDwgaW5zdHJ1Y3Rpb25Db3VudDsgKSB7CisgICAgICAgIHN3aXRjaCAoaW50ZXJwcmV0
ZXItPmdldE9wY29kZUlEKGluc3RydWN0aW9uc0JlZ2luW2J5dGVjb2RlT2Zmc2V0XS51Lm9wY29k
ZSkpIHsKKyNkZWZpbmUgREVGSU5FX09QKG9wY29kZSwgbGVuZ3RoKSAgICAgICAgICAgXAorICAg
ICAgICBjYXNlIG9wY29kZTogICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBp
ZiAoIWNhbkNvbXBpbGVPcGNvZGUob3Bjb2RlKSkgIFwKKyAgICAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7ICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgYnl0ZWNvZGVPZmZzZXQgKz0gbGVu
Z3RoOyAgICAgICBcCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgRk9SX0VBQ0hfT1BDT0RF
X0lEKERFRklORV9PUCkKKyN1bmRlZiBERUZJTkVfT1AKKyAgICAgICAgZGVmYXVsdDoKKyAgICAg
ICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IH0KKyAgICB9CisgICAgCisgICAgcmV0dXJuIHRydWU7Cit9CisKK30gfSAvLyBuYW1lc3BhY2Ug
SlNDOjpERkcKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRp
ZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxp
dGllcy5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBh
YmlsaXRpZXMuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxNTIgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBERkdDYXBhYmlsaXRpZXNf
aAorI2RlZmluZSBERkdDYXBhYmlsaXRpZXNfaAorCisjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIK
KyNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KKworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBE
RkcgeworCisjaWYgRU5BQkxFKERGR19KSVQpCisvLyBGYXN0IGNoZWNrIGZ1bmN0aW9uczsgaWYg
dGhleSByZXR1cm4gdHJ1ZSBpdCBpcyBzdGlsbCBuZWNlc3NhcnkgdG8KKy8vIGNoZWNrIG9wY29k
ZXMuCitpbmxpbmUgYm9vbCBtaWdodENvbXBpbGVFdmFsKENvZGVCbG9jayopIHsgcmV0dXJuIHRy
dWU7IH0KK2lubGluZSBib29sIG1pZ2h0Q29tcGlsZVByb2dyYW0oQ29kZUJsb2NrKikgeyByZXR1
cm4gdHJ1ZTsgfQoraW5saW5lIGJvb2wgbWlnaHRDb21waWxlRnVuY3Rpb25Gb3JDYWxsKENvZGVC
bG9jayopIHsgcmV0dXJuIHRydWU7IH0KK2lubGluZSBib29sIG1pZ2h0Q29tcGlsZUZ1bmN0aW9u
Rm9yQ29uc3RydWN0KENvZGVCbG9jayopIHsgcmV0dXJuIGZhbHNlOyB9CisKKy8vIE9wY29kZSBj
aGVja2luZy4KK2lubGluZSBib29sIGNhbkNvbXBpbGVPcGNvZGUoT3Bjb2RlSUQgb3Bjb2RlSUQp
Cit7CisgICAgc3dpdGNoIChvcGNvZGVJRCkgeworICAgIGNhc2Ugb3BfZW50ZXI6CisgICAgY2Fz
ZSBvcF9jb252ZXJ0X3RoaXM6CisgICAgY2FzZSBvcF9iaXRhbmQ6CisgICAgY2FzZSBvcF9iaXRv
cjoKKyAgICBjYXNlIG9wX2JpdHhvcjoKKyAgICBjYXNlIG9wX3JzaGlmdDoKKyAgICBjYXNlIG9w
X2xzaGlmdDoKKyAgICBjYXNlIG9wX3Vyc2hpZnQ6CisgICAgY2FzZSBvcF9wcmVfaW5jOgorICAg
IGNhc2Ugb3BfcG9zdF9pbmM6CisgICAgY2FzZSBvcF9wcmVfZGVjOgorICAgIGNhc2Ugb3BfcG9z
dF9kZWM6CisgICAgY2FzZSBvcF9hZGQ6CisgICAgY2FzZSBvcF9zdWI6CisgICAgY2FzZSBvcF9t
dWw6CisgICAgY2FzZSBvcF9tb2Q6CisgICAgY2FzZSBvcF9kaXY6CisjaWYgRU5BQkxFKERFQlVH
X1dJVEhfQlJFQUtQT0lOVCkKKyAgICBjYXNlIG9wX2RlYnVnOgorI2VuZGlmCisgICAgY2FzZSBv
cF9tb3Y6CisgICAgY2FzZSBvcF9jaGVja19oYXNfaW5zdGFuY2U6CisgICAgY2FzZSBvcF9pbnN0
YW5jZW9mOgorICAgIGNhc2Ugb3Bfbm90OgorICAgIGNhc2Ugb3BfbGVzczoKKyAgICBjYXNlIG9w
X2xlc3NlcToKKyAgICBjYXNlIG9wX2dyZWF0ZXI6CisgICAgY2FzZSBvcF9ncmVhdGVyZXE6Cisg
ICAgY2FzZSBvcF9lcToKKyAgICBjYXNlIG9wX2VxX251bGw6CisgICAgY2FzZSBvcF9zdHJpY3Rl
cToKKyAgICBjYXNlIG9wX25lcToKKyAgICBjYXNlIG9wX25lcV9udWxsOgorICAgIGNhc2Ugb3Bf
bnN0cmljdGVxOgorICAgIGNhc2Ugb3BfZ2V0X2J5X3ZhbDoKKyAgICBjYXNlIG9wX3B1dF9ieV92
YWw6CisgICAgY2FzZSBvcF9tZXRob2RfY2hlY2s6CisgICAgY2FzZSBvcF9nZXRfYnlfaWQ6Cisg
ICAgY2FzZSBvcF9wdXRfYnlfaWQ6CisgICAgY2FzZSBvcF9nZXRfZ2xvYmFsX3ZhcjoKKyAgICBj
YXNlIG9wX3B1dF9nbG9iYWxfdmFyOgorICAgIGNhc2Ugb3Bfam1wOgorICAgIGNhc2Ugb3BfbG9v
cDoKKyAgICBjYXNlIG9wX2p0cnVlOgorICAgIGNhc2Ugb3BfamZhbHNlOgorICAgIGNhc2Ugb3Bf
bG9vcF9pZl90cnVlOgorICAgIGNhc2Ugb3BfbG9vcF9pZl9mYWxzZToKKyAgICBjYXNlIG9wX2pl
cV9udWxsOgorICAgIGNhc2Ugb3Bfam5lcV9udWxsOgorICAgIGNhc2Ugb3Bfamxlc3M6CisgICAg
Y2FzZSBvcF9qbGVzc2VxOgorICAgIGNhc2Ugb3BfamdyZWF0ZXI6CisgICAgY2FzZSBvcF9qZ3Jl
YXRlcmVxOgorICAgIGNhc2Ugb3Bfam5sZXNzOgorICAgIGNhc2Ugb3Bfam5sZXNzZXE6CisgICAg
Y2FzZSBvcF9qbmdyZWF0ZXI6CisgICAgY2FzZSBvcF9qbmdyZWF0ZXJlcToKKyAgICBjYXNlIG9w
X2xvb3BfaWZfbGVzczoKKyAgICBjYXNlIG9wX2xvb3BfaWZfbGVzc2VxOgorICAgIGNhc2Ugb3Bf
bG9vcF9pZl9ncmVhdGVyOgorICAgIGNhc2Ugb3BfbG9vcF9pZl9ncmVhdGVyZXE6CisgICAgY2Fz
ZSBvcF9yZXQ6CisgICAgY2FzZSBvcF9lbmQ6CisgICAgY2FzZSBvcF9jYWxsOgorICAgIGNhc2Ug
b3BfY29uc3RydWN0OgorICAgIGNhc2Ugb3BfY2FsbF9wdXRfcmVzdWx0OgorICAgIGNhc2Ugb3Bf
cmVzb2x2ZToKKyAgICBjYXNlIG9wX3Jlc29sdmVfYmFzZToKKyAgICAgICAgcmV0dXJuIHRydWU7
CisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KK30KKyNlbHNlIC8v
IEVOQUJMRShERkdfSklUKQoraW5saW5lIGJvb2wgbWlnaHRDb21waWxlRXZhbChDb2RlQmxvY2sq
KSB7IHJldHVybiBmYWxzZTsgfQoraW5saW5lIGJvb2wgbWlnaHRDb21waWxlUHJvZ3JhbShDb2Rl
QmxvY2sqKSB7IHJldHVybiBmYWxzZTsgfQoraW5saW5lIGJvb2wgbWlnaHRDb21waWxlRnVuY3Rp
b25Gb3JDYWxsKENvZGVCbG9jayopIHsgcmV0dXJuIGZhbHNlOyB9CitpbmxpbmUgYm9vbCBtaWdo
dENvbXBpbGVGdW5jdGlvbkZvckNvbnN0cnVjdChDb2RlQmxvY2sqKSB7IHJldHVybiBmYWxzZTsg
fQoraW5saW5lIGJvb2wgY2FuQ29tcGlsZU9wY29kZShPcGNvZGVJRCkgeyByZXR1cm4gZmFsc2U7
IH0KKyNlbmRpZiAvLyBFTkFCTEUoREZHX0pJVCkKKworYm9vbCBjYW5Db21waWxlT3Bjb2RlcyhD
b2RlQmxvY2sqKTsKKworaW5saW5lIGJvb2wgY2FuQ29tcGlsZUV2YWwoQ29kZUJsb2NrKiBjb2Rl
QmxvY2spCit7CisgICAgcmV0dXJuIG1pZ2h0Q29tcGlsZUV2YWwoY29kZUJsb2NrKSAmJiBjYW5D
b21waWxlT3Bjb2Rlcyhjb2RlQmxvY2spOworfQorCitpbmxpbmUgYm9vbCBjYW5Db21waWxlUHJv
Z3JhbShDb2RlQmxvY2sqIGNvZGVCbG9jaykKK3sKKyAgICByZXR1cm4gbWlnaHRDb21waWxlUHJv
Z3JhbShjb2RlQmxvY2spICYmIGNhbkNvbXBpbGVPcGNvZGVzKGNvZGVCbG9jayk7Cit9CisKK2lu
bGluZSBib29sIGNhbkNvbXBpbGVGdW5jdGlvbkZvckNhbGwoQ29kZUJsb2NrKiBjb2RlQmxvY2sp
Cit7CisgICAgcmV0dXJuIG1pZ2h0Q29tcGlsZUZ1bmN0aW9uRm9yQ2FsbChjb2RlQmxvY2spICYm
IGNhbkNvbXBpbGVPcGNvZGVzKGNvZGVCbG9jayk7Cit9CisKK2lubGluZSBib29sIGNhbkNvbXBp
bGVGdW5jdGlvbkZvckNvbnN0cnVjdChDb2RlQmxvY2sqIGNvZGVCbG9jaykKK3sKKyAgICByZXR1
cm4gbWlnaHRDb21waWxlRnVuY3Rpb25Gb3JDb25zdHJ1Y3QoY29kZUJsb2NrKSAmJiBjYW5Db21w
aWxlT3Bjb2Rlcyhjb2RlQmxvY2spOworfQorCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6REZHCisK
KyNlbmRpZiAvLyBERkdDYXBhYmlsaXRpZXNfaAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVQuY3BwCShyZXZpc2lvbiA5NDYxOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDUsNyArNDUsOCBAQCBKU0M6Ok1hY3JvQXNzZW1ibGVy
WDg2Q29tbW9uOjpTU0UyQ2hlY2tTCiAjaW5jbHVkZSAiUmVwYXRjaEJ1ZmZlci5oIgogI2luY2x1
ZGUgIlJlc3VsdFR5cGUuaCIKICNpbmNsdWRlICJTYW1wbGluZ1Rvb2wuaCIKLSNpbmNsdWRlICJk
ZmcvREZHTm9kZS5oIiAvLyBmb3IgREZHX1NVQ0NFU1NfU1RBVFMKKyNpbmNsZHVlICJERkdDYXBh
YmlsaXRpZXMuaCIKKyNpbmNsdWRlICJERkdOb2RlLmgiIC8vIGZvciBERkdfU1VDQ0VTU19TVEFU
UwogCiB1c2luZyBuYW1lc3BhY2Ugc3RkOwogCkBAIC05Niw2ICs5Nyw5IEBAIEpJVDo6SklUKEpT
R2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgQ29kZUIKICNpZiBFTkFCTEUoVElFUkVEX0NPTVBJTEFU
SU9OKQogdm9pZCBKSVQ6OmVtaXRPcHRpbWl6YXRpb25DaGVjayhPcHRpbWl6YXRpb25DaGVja0tp
bmQga2luZCkKIHsKKyAgICBpZiAoIXNob3VsZEVtaXRQcm9maWxpbmcoKSkKKyAgICAgICAgcmV0
dXJuOworICAgIAogICAgIEp1bXAgc2tpcE9wdGltaXplID0gYnJhbmNoQWRkMzIoU2lnbmVkLCBU
cnVzdGVkSW1tMzIoa2luZCA9PSBMb29wT3B0aW1pemF0aW9uQ2hlY2sgPyAxIDogMzApLCBBYnNv
bHV0ZUFkZHJlc3MoJm1fY29kZUJsb2NrLT5tX2V4ZWN1dGVDb3VudGVyKSk7CiAgICAgSklUU3R1
YkNhbGwgc3R1YkNhbGwodGhpcywga2luZCA9PSBMb29wT3B0aW1pemF0aW9uQ2hlY2sgPyBjdGlf
b3B0aW1pemVfZnJvbV9sb29wIDogY3RpX29wdGltaXplX2Zyb21fcmV0KTsKICAgICBzdHViQ2Fs
bC5jYWxsKCk7CkBAIC00OTcsNiArNTAxLDEwIEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZVNs
b3dDYXNlcygpCiAKIEpJVENvZGUgSklUOjpwcml2YXRlQ29tcGlsZShDb2RlUHRyKiBmdW5jdGlv
bkVudHJ5QXJpdHlDaGVjaykKIHsKKyNpZiBFTkFCTEUoVElFUkVEX0NPTVBJTEFUSU9OKQorICAg
IG1fY2FuQmVPcHRpbWl6ZWQgPSBtX2NvZGVCbG9jay0+Y2FuQ29tcGlsZVdpdGhERkcoKTsKKyNl
bmRpZgorICAgIAogICAgIC8vIEp1c3QgYWRkIGEgbGl0dGxlIGJpdCBvZiByYW5kb21uZXNzIHRv
IHRoZSBjb2RlZ2VuCiAgICAgaWYgKG1fcmFuZG9tR2VuZXJhdG9yLmdldFVpbnQzMigpICYgMSkK
ICAgICAgICAgbm9wKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgJKHJldmlzaW9uIDk0
NjE5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAkod29ya2luZyBjb3B5KQpA
QCAtMTAwMyw2ICsxMDAzLDE0IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIHNhbXBs
ZUNvZGVCbG9jayhDb2RlQmxvY2sqKSB7fQogI2VuZGlmCiAKKyNpZiBFTkFCTEUoVElFUkVEX0NP
TVBJTEFUSU9OKQorICAgICAgICBib29sIHNob3VsZEVtaXRQcm9maWxpbmcoKSB7IHJldHVybiBt
X2NhbkJlT3B0aW1pemVkOyB9CisjZWxzZQorICAgICAgICAvLyBFbmFibGVzIHVzZSBvZiB2YWx1
ZSBwcm9maWxlciB3aXRoIHRpZXJlZCBjb21waWxhdGlvbiB0dXJuZWQgb2ZmLAorICAgICAgICAv
LyBpbiB3aGljaCBjYXNlIGFsbCBjb2RlIGdldHMgcHJvZmlsZWQuCisgICAgICAgIGJvb2wgc2hv
dWxkRW1pdFByb2ZpbGluZygpIHsgcmV0dXJuIHRydWU7IH0KKyNlbmRpZgorCiAgICAgICAgIElu
dGVycHJldGVyKiBtX2ludGVycHJldGVyOwogICAgICAgICBKU0dsb2JhbERhdGEqIG1fZ2xvYmFs
RGF0YTsKICAgICAgICAgQ29kZUJsb2NrKiBtX2NvZGVCbG9jazsKQEAgLTEwNDIsNiArMTA1MCwx
MCBAQCBuYW1lc3BhY2UgSlNDIHsKICNlbmRpZgogICAgICAgICBXZWFrUmFuZG9tIG1fcmFuZG9t
R2VuZXJhdG9yOwogICAgICAgICBzdGF0aWMgQ29kZVB0ciBzdHJpbmdHZXRCeVZhbFN0dWJHZW5l
cmF0b3IoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBFeGVjdXRhYmxlUG9vbCogcG9vbCk7Cisg
ICAgICAgIAorI2lmIEVOQUJMRShUSUVSRURfQ09NUElMQVRJT04pCisgICAgICAgIGJvb2wgbV9j
YW5CZU9wdGltaXplZDsKKyNlbmRpZgogICAgIH0gSklUX0NMQVNTX0FMSUdOTUVOVDsKIAogICAg
IGlubGluZSB2b2lkIEpJVDo6ZW1pdF9vcF9sb29wKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1
Y3Rpb24pCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZU1ldGhvZHMu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZU1ldGhv
ZHMuaAkocmV2aXNpb24gOTQ2MTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElu
bGluZU1ldGhvZHMuaAkod29ya2luZyBjb3B5KQpAQCAtNDM4LDYgKzQzOCw5IEBAIGlubGluZSB2
b2lkIEpJVDo6ZW1pdEFsbG9jYXRlSlNGdW5jdGlvbigKICNpZiBFTkFCTEUoVkFMVUVfUFJPRklM
RVIpCiBpbmxpbmUgdm9pZCBKSVQ6OmVtaXRWYWx1ZVByb2ZpbGluZ1NpdGUoVmFsdWVQcm9maWxp
bmdTaXRlS2luZCBzaXRlS2luZCkKIHsKKyAgICBpZiAoIXNob3VsZEVtaXRQcm9maWxpbmcoKSkK
KyAgICAgICAgcmV0dXJuOworICAgIAogICAgIGNvbnN0IFJlZ2lzdGVySUQgdmFsdWUgPSByZWdU
MDsKICAgICBjb25zdCBSZWdpc3RlcklEIHNjcmF0Y2ggPSByZWdUMzsKICAgICAKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvUGxhdGZvcm0uaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd3RmL1BsYXRmb3JtLmgJKHJldmlzaW9uIDk0NjE5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3d0Zi9QbGF0Zm9ybS5oCSh3b3JraW5nIGNvcHkpCkBAIC05NjEsNyAr
OTYxLDcgQEAKICNlbmRpZgogCiAjaWYgIWRlZmluZWQoRU5BQkxFX1RJRVJFRF9DT01QSUxBVElP
TikKLSNkZWZpbmUgRU5BQkxFX1RJRVJFRF9DT01QSUxBVElPTiAwCisjZGVmaW5lIEVOQUJMRV9U
SUVSRURfQ09NUElMQVRJT04gMQogI2VuZGlmCiAKIC8qIEN1cnJlbnRseSBvbmx5IGltcGxlbWVu
dGVkIGZvciBKU1ZBTFVFNjQsIG9ubHkgdGVzdGVkIG9uIFBMQVRGT1JNKE1BQykgKi8K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>106545</attachid>
            <date>2011-09-06 22:11:17 -0700</date>
            <delta_ts>2011-09-07 11:38:13 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>lessprofile_patch_2.diff</filename>
            <type>text/plain</type>
            <size>18841</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gOTQ2MzYpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzkgQEAK
KzIwMTEtMDktMDYgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KKworICAgICAgICBW
YWx1ZSBwcm9mbGluZyBhbmQgZXhlY3V0aW9uIGNvdW50IHByb2ZpbGluZyBpcyBwZXJmb3JtZWQg
ZXZlbiBmb3IKKyAgICAgICAgY29kZSB0aGF0IGNhbm5vdCBiZSBvcHRpbWl6ZWQKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY3Njk0CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisgICAgICAgIAorICAgICAgICBUaGlzIGlzIGEg
MiUgc3BlZWQtdXAgb24gVjggd2hlbiB0aWVyZWQgY29tcGlsYXRpb24gaXMgZW5hYmxlZC4KKwor
ICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAg
ICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6UHJvZ3JhbUNvZGVC
bG9jazo6Y2FuQ29tcGlsZVdpdGhERkcpOgorICAgICAgICAoSlNDOjpFdmFsQ29kZUJsb2NrOjpj
YW5Db21waWxlV2l0aERGRyk6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uQ29kZUJsb2NrOjpjYW5D
b21waWxlV2l0aERGRyk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmg6CisgICAgICAg
ICogZGZnL0RGR0NhcGFiaWxpdGllcy5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpERkc6OmNh
bkNvbXBpbGVPcGNvZGVzKToKKyAgICAgICAgKiBkZmcvREZHQ2FwYWJpbGl0aWVzLmg6IEFkZGVk
LgorICAgICAgICAoSlNDOjpERkc6Om1pZ2h0Q29tcGlsZUV2YWwpOgorICAgICAgICAoSlNDOjpE
Rkc6Om1pZ2h0Q29tcGlsZVByb2dyYW0pOgorICAgICAgICAoSlNDOjpERkc6Om1pZ2h0Q29tcGls
ZUZ1bmN0aW9uRm9yQ2FsbCk6CisgICAgICAgIChKU0M6OkRGRzo6bWlnaHRDb21waWxlRnVuY3Rp
b25Gb3JDb25zdHJ1Y3QpOgorICAgICAgICAoSlNDOjpERkc6OmNhbkNvbXBpbGVPcGNvZGUpOgor
ICAgICAgICAoSlNDOjpERkc6OmNhbkNvbXBpbGVFdmFsKToKKyAgICAgICAgKEpTQzo6REZHOjpj
YW5Db21waWxlUHJvZ3JhbSk6CisgICAgICAgIChKU0M6OkRGRzo6Y2FuQ29tcGlsZUZ1bmN0aW9u
Rm9yQ2FsbCk6CisgICAgICAgIChKU0M6OkRGRzo6Y2FuQ29tcGlsZUZ1bmN0aW9uRm9yQ29uc3Ry
dWN0KToKKyAgICAgICAgKiBqaXQvSklULmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0T3B0
aW1pemF0aW9uQ2hlY2spOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlKToKKyAg
ICAgICAgKiBqaXQvSklULmg6CisgICAgICAgIChKU0M6OkpJVDo6c2hvdWxkRW1pdFByb2ZpbGlu
Zyk6CisgICAgICAgICogaml0L0pJVElubGluZU1ldGhvZHMuaDoKKyAgICAgICAgKEpTQzo6SklU
OjplbWl0VmFsdWVQcm9maWxpbmdTaXRlKToKKwogMjAxMS0wOS0wNiAgTWFyayBIYWhuZW5iZXJn
ICA8bWhhaG5lbmJlcmdAYXBwbGUuY29tPgogCiAgICAgICAgIEZpeCBicm9rZW4gc25vdyBsZW9w
YXJkIGJ1aWxkCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gOTQ2
MzYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtNjAsNiArNjAsNyBAQAogCQkwRkQzQzgy
NjE0MTE1RDQwMDBGRDgxQ0IgLyogREZHRHJpdmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRDNDODIwMTQxMTVDRjgwMEZEODFDQiAvKiBERkdE
cml2ZXIuY3BwICovOyB9OwogCQkwRkQzQzgyNzE0MTE1RDRGMDBGRDgxQ0IgLyogREZHUHJvcGFn
YXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZE
M0M4MjQxNDExNUQyMjAwRkQ4MUNCIC8qIERGR1Byb3BhZ2F0b3IuaCAqLzsgfTsKIAkJMEZEM0M4
MjgxNDExNUQ0RjAwRkQ4MUNCIC8qIERGR0RyaXZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZEM0M4MjIxNDExNUQwRTAwRkQ4MUNCIC8qIERGR0Ry
aXZlci5oICovOyB9OworCQkwRkQ4MkUyMTE0MTcyQ0UzMDAxNzlDOTQgLyogREZHQ2FwYWJpbGl0
aWVzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBG
RDgyRTFFMTQxNzJDMkYwMDE3OUM5NCAvKiBERkdDYXBhYmlsaXRpZXMuY3BwICovOyB9OwogCQkx
NDAwMDY3NzEyQTZGNzgzMDA2NEQxMjMgLyogT1NBbGxvY2F0b3IuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0MDAwNjc2MTJBNkY3ODMwMDY0RDEyMyAv
KiBPU0FsbG9jYXRvci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTE0MDAwNjkzMTJBNkY5RTEwMDY0RDEyMyAvKiBPU0FsbG9jYXRvclBvc2l4LmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0MDAwNjky
MTJBNkY5RTEwMDY0RDEyMyAvKiBPU0FsbG9jYXRvclBvc2l4LmNwcCAqLzsgfTsKIAkJMTQwNTY2
QzQxMDdFQzI1NTAwNURCQzhEIC8qIEpTQVBJVmFsdWVXcmFwcGVyLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMDg5NEQ1MEZBRkJBMkQwMDAwMTg2
NSAvKiBKU0FQSVZhbHVlV3JhcHBlci5jcHAgKi87IH07CkBAIC03ODcsNiArNzg4LDggQEAKIAkJ
MEZEM0M4MjIxNDExNUQwRTAwRkQ4MUNCIC8qIERGR0RyaXZlci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IG5hbWUgPSBERkdEcml2ZXIuaDsgcGF0aCA9IGRmZy9ERkdEcml2ZXIuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZEM0M4MjMxNDExNUQxQTAwRkQ4MUNCIC8qIERG
R1Byb3BhZ2F0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gREZH
UHJvcGFnYXRvci5jcHA7IHBhdGggPSBkZmcvREZHUHJvcGFnYXRvci5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTBGRDNDODI0MTQxMTVEMjIwMEZEODFDQiAvKiBERkdQcm9wYWdh
dG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR1Byb3BhZ2F0b3IuaDsg
cGF0aCA9IGRmZy9ERkdQcm9wYWdhdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTBGRDgyRTFFMTQxNzJDMkYwMDE3OUM5NCAvKiBERkdDYXBhYmlsaXRpZXMuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gREZHQ2FwYWJpbGl0aWVzLmNwcDsgcGF0aCA9
IGRmZy9ERkdDYXBhYmlsaXRpZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkw
RkQ4MkUxRjE0MTcyQzJGMDAxNzlDOTQgLyogREZHQ2FwYWJpbGl0aWVzLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR0NhcGFiaWxpdGllcy5oOyBwYXRoID0gZGZnL0RGR0Nh
cGFiaWxpdGllcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxNDAwMDY3NjEyQTZG
NzgzMDA2NEQxMjMgLyogT1NBbGxvY2F0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gT1NBbGxvY2F0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTQwMDA2
OTIxMkE2RjlFMTAwNjREMTIzIC8qIE9TQWxsb2NhdG9yUG9zaXguY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gT1NBbGxvY2F0b3JQb3NpeC5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTE0MEQxN0Q2MEU4QUQ0QTkwMDBDRDE3RCAvKiBKU0Jhc2VQcml2
YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTQmFzZVByaXZhdGUuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIxODcsNiArMjE5MCw4IEBACiAJCTg2RUM5
REIzMTMyOERGNDQwMDJCMkFENyAvKiBkZmcgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJ
CWNoaWxkcmVuID0gKAorCQkJCTBGRDgyRTFFMTQxNzJDMkYwMDE3OUM5NCAvKiBERkdDYXBhYmls
aXRpZXMuY3BwICovLAorCQkJCTBGRDgyRTFGMTQxNzJDMkYwMDE3OUM5NCAvKiBERkdDYXBhYmls
aXRpZXMuaCAqLywKIAkJCQkwRkQzQzgyNDE0MTE1RDIyMDBGRDgxQ0IgLyogREZHUHJvcGFnYXRv
ci5oICovLAogCQkJCTBGRDNDODIzMTQxMTVEMUEwMEZEODFDQiAvKiBERkdQcm9wYWdhdG9yLmNw
cCAqLywKIAkJCQkwRkQzQzgyMjE0MTE1RDBFMDBGRDgxQ0IgLyogREZHRHJpdmVyLmggKi8sCkBA
IC0zMDQ3LDYgKzMwNTIsNyBAQAogCQkJaXNhID0gUEJYU291cmNlc0J1aWxkUGhhc2U7CiAJCQli
dWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OwogCQkJZmlsZXMgPSAoCisJCQkJMEZEODJFMjEx
NDE3MkNFMzAwMTc5Qzk0IC8qIERGR0NhcGFiaWxpdGllcy5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQkwRkQzQzgyNTE0MTE1RDQwMDBGRDgxQ0IgLyogREZHUHJvcGFnYXRvci5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkwRkQzQzgyNjE0MTE1RDQwMDBGRDgxQ0IgLyogREZHRHJpdmVyLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTBGQzgxNTE2MTQwNTExQjUwMENGQTYwMyAvKiBWVGFibGVTcGVjdHJ1
bS5jcHAgaW4gU291cmNlcyAqLywKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9Db2RlQmxvY2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9Db2RlQmxvY2suY3BwCShyZXZpc2lvbiA5NDYzNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw2ICszMiw3
IEBACiAKICNpbmNsdWRlICJCeXRlY29kZUdlbmVyYXRvci5oIgogI2luY2x1ZGUgIkRlYnVnZ2Vy
LmgiCisjaW5jbHVkZSAiREZHQ2FwYWJpbGl0aWVzLmgiCiAjaW5jbHVkZSAiSW50ZXJwcmV0ZXIu
aCIKICNpbmNsdWRlICJKSVQuaCIKICNpbmNsdWRlICJKU0FjdGl2YXRpb24uaCIKQEAgLTE5MzAs
NiArMTkzMSwyMyBAQCBKU09iamVjdCogRnVuY3Rpb25Db2RlQmxvY2s6OmNvbXBpbGVPcHRpCiAg
ICAgSlNPYmplY3QqIGVycm9yID0gc3RhdGljX2Nhc3Q8RnVuY3Rpb25FeGVjdXRhYmxlKj4ob3du
ZXJFeGVjdXRhYmxlKCkpLT5jb21waWxlT3B0aW1pemVkRm9yKGV4ZWMsIHNjb3BlQ2hhaW5Ob2Rl
LCBtX2lzQ29uc3RydWN0b3IgPyBDb2RlRm9yQ29uc3RydWN0IDogQ29kZUZvckNhbGwpOwogICAg
IHJldHVybiBlcnJvcjsKIH0KKworYm9vbCBQcm9ncmFtQ29kZUJsb2NrOjpjYW5Db21waWxlV2l0
aERGRygpCit7CisgICAgcmV0dXJuIERGRzo6Y2FuQ29tcGlsZVByb2dyYW0odGhpcyk7Cit9CisK
K2Jvb2wgRXZhbENvZGVCbG9jazo6Y2FuQ29tcGlsZVdpdGhERkcoKQoreworICAgIHJldHVybiBE
Rkc6OmNhbkNvbXBpbGVFdmFsKHRoaXMpOworfQorCitib29sIEZ1bmN0aW9uQ29kZUJsb2NrOjpj
YW5Db21waWxlV2l0aERGRygpCit7CisgICAgaWYgKG1faXNDb25zdHJ1Y3RvcikKKyAgICAgICAg
cmV0dXJuIERGRzo6Y2FuQ29tcGlsZUZ1bmN0aW9uRm9yQ29uc3RydWN0KHRoaXMpOworICAgIHJl
dHVybiBERkc6OmNhbkNvbXBpbGVGdW5jdGlvbkZvckNhbGwodGhpcyk7Cit9CiAjZW5kaWYKIAog
fSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Q29kZUJsb2NrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0NvZGVCbG9jay5oCShyZXZpc2lvbiA5NDYzNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9Db2RlQmxvY2suaAkod29ya2luZyBjb3B5KQpAQCAtMzI3LDYgKzMyNyw3IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICBFeGVjdXRhYmxlUG9vbCogZXhlY3V0YWJsZVBvb2woKSB7
IHJldHVybiBnZXRKSVRDb2RlKCkuZ2V0RXhlY3V0YWJsZVBvb2woKTsgfQogICAgICAgICB2aXJ0
dWFsIEpTT2JqZWN0KiBjb21waWxlT3B0aW1pemVkKEV4ZWNTdGF0ZSosIFNjb3BlQ2hhaW5Ob2Rl
KikgPSAwOwogICAgICAgICB2aXJ0dWFsIENvZGVCbG9jayogcmVwbGFjZW1lbnQoKSA9IDA7Cisg
ICAgICAgIHZpcnR1YWwgYm9vbCBjYW5Db21waWxlV2l0aERGRygpID0gMDsKICNlbHNlCiAgICAg
ICAgIEpJVENvZGU6OkpJVFR5cGUgZ2V0SklUVHlwZSgpIHsgcmV0dXJuIEpJVENvZGU6OkJhc2Vs
aW5lSklUOyB9CiAjZW5kaWYKQEAgLTMzNCw2ICszMzUsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgU2NyaXB0RXhlY3V0YWJsZSogb3duZXJFeGVjdXRhYmxlKCkgY29uc3QgeyByZXR1cm4g
bV9vd25lckV4ZWN1dGFibGUuZ2V0KCk7IH0KIAogICAgICAgICB2b2lkIHNldEdsb2JhbERhdGEo
SlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhKSB7IG1fZ2xvYmFsRGF0YSA9IGdsb2JhbERhdGE7IH0K
KyAgICAgICAgSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhKCkgeyByZXR1cm4gbV9nbG9iYWxEYXRh
OyB9CiAKICAgICAgICAgdm9pZCBzZXRUaGlzUmVnaXN0ZXIoaW50IHRoaXNSZWdpc3RlcikgeyBt
X3RoaXNSZWdpc3RlciA9IHRoaXNSZWdpc3RlcjsgfQogICAgICAgICBpbnQgdGhpc1JlZ2lzdGVy
KCkgY29uc3QgeyByZXR1cm4gbV90aGlzUmVnaXN0ZXI7IH0KQEAgLTcyMyw2ICs3MjUsNyBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICBwcm90ZWN0ZWQ6CiAgICAgICAgIHZpcnR1YWwgSlNPYmplY3Qq
IGNvbXBpbGVPcHRpbWl6ZWQoRXhlY1N0YXRlKiwgU2NvcGVDaGFpbk5vZGUqKTsKICAgICAgICAg
dmlydHVhbCBDb2RlQmxvY2sqIHJlcGxhY2VtZW50KCk7CisgICAgICAgIHZpcnR1YWwgYm9vbCBj
YW5Db21waWxlV2l0aERGRygpOwogI2VuZGlmCiAgICAgfTsKIApAQCAtNzQ4LDYgKzc1MSw3IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgIHByb3RlY3RlZDoKICAgICAgICAgdmlydHVhbCBKU09iamVj
dCogY29tcGlsZU9wdGltaXplZChFeGVjU3RhdGUqLCBTY29wZUNoYWluTm9kZSopOwogICAgICAg
ICB2aXJ0dWFsIENvZGVCbG9jayogcmVwbGFjZW1lbnQoKTsKKyAgICAgICAgdmlydHVhbCBib29s
IGNhbkNvbXBpbGVXaXRoREZHKCk7CiAjZW5kaWYKIAogICAgIHByaXZhdGU6CkBAIC03NzQsNiAr
Nzc4LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgcHJvdGVjdGVkOgogICAgICAgICB2aXJ0dWFs
IEpTT2JqZWN0KiBjb21waWxlT3B0aW1pemVkKEV4ZWNTdGF0ZSosIFNjb3BlQ2hhaW5Ob2RlKik7
CiAgICAgICAgIHZpcnR1YWwgQ29kZUJsb2NrKiByZXBsYWNlbWVudCgpOworICAgICAgICB2aXJ0
dWFsIGJvb2wgY2FuQ29tcGlsZVdpdGhERkcoKTsKICNlbmRpZgogICAgIH07CiAKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAJKHJldmlzaW9u
IDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAJKHJl
dmlzaW9uIDApCkBAIC0wLDAgKzEsNjAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkRGR0NhcGFi
aWxpdGllcy5oIgorCisjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCisjaW5jbHVkZSAiSW50ZXJwcmV0
ZXIuaCIKKworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgeworCitib29sIGNhbkNvbXBp
bGVPcGNvZGVzKENvZGVCbG9jayogY29kZUJsb2NrKQoreworICAgIEludGVycHJldGVyKiBpbnRl
cnByZXRlciA9IGNvZGVCbG9jay0+Z2xvYmFsRGF0YSgpLT5pbnRlcnByZXRlcjsKKyAgICBJbnN0
cnVjdGlvbiogaW5zdHJ1Y3Rpb25zQmVnaW4gPSBjb2RlQmxvY2stPmluc3RydWN0aW9ucygpLmJl
Z2luKCk7CisgICAgdW5zaWduZWQgaW5zdHJ1Y3Rpb25Db3VudCA9IGNvZGVCbG9jay0+aW5zdHJ1
Y3Rpb25zKCkuc2l6ZSgpOworICAgIAorICAgIGZvciAodW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQg
PSAwOyBieXRlY29kZU9mZnNldCA8IGluc3RydWN0aW9uQ291bnQ7ICkgeworICAgICAgICBzd2l0
Y2ggKGludGVycHJldGVyLT5nZXRPcGNvZGVJRChpbnN0cnVjdGlvbnNCZWdpbltieXRlY29kZU9m
ZnNldF0udS5vcGNvZGUpKSB7CisjZGVmaW5lIERFRklORV9PUChvcGNvZGUsIGxlbmd0aCkgICAg
ICAgICAgIFwKKyAgICAgICAgY2FzZSBvcGNvZGU6ICAgICAgICAgICAgICAgICAgICAgICAgXAor
ICAgICAgICAgICAgaWYgKCFjYW5Db21waWxlT3Bjb2RlKG9wY29kZSkpICBcCisgICAgICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOyAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIGJ5dGVjb2Rl
T2Zmc2V0ICs9IGxlbmd0aDsgICAgICAgXAorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIEZP
Ul9FQUNIX09QQ09ERV9JRChERUZJTkVfT1ApCisjdW5kZWYgREVGSU5FX09QCisgICAgICAgIGRl
ZmF1bHQ6CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICB9CisgICAgfQorICAgIAorICAgIHJldHVybiB0cnVlOworfQorCit9IH0g
Ly8gbmFtZXNwYWNlIEpTQzo6REZHCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQ2FwYWJpbGl0aWVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdDYXBhYmlsaXRpZXMuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTUyIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgREZH
Q2FwYWJpbGl0aWVzX2gKKyNkZWZpbmUgREZHQ2FwYWJpbGl0aWVzX2gKKworI2luY2x1ZGUgIklu
dGVycHJldGVyLmgiCisjaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+CisKK25hbWVzcGFjZSBKU0Mg
eyBuYW1lc3BhY2UgREZHIHsKKworI2lmIEVOQUJMRShERkdfSklUKQorLy8gRmFzdCBjaGVjayBm
dW5jdGlvbnM7IGlmIHRoZXkgcmV0dXJuIHRydWUgaXQgaXMgc3RpbGwgbmVjZXNzYXJ5IHRvCisv
LyBjaGVjayBvcGNvZGVzLgoraW5saW5lIGJvb2wgbWlnaHRDb21waWxlRXZhbChDb2RlQmxvY2sq
KSB7IHJldHVybiB0cnVlOyB9CitpbmxpbmUgYm9vbCBtaWdodENvbXBpbGVQcm9ncmFtKENvZGVC
bG9jayopIHsgcmV0dXJuIHRydWU7IH0KK2lubGluZSBib29sIG1pZ2h0Q29tcGlsZUZ1bmN0aW9u
Rm9yQ2FsbChDb2RlQmxvY2sqKSB7IHJldHVybiB0cnVlOyB9CitpbmxpbmUgYm9vbCBtaWdodENv
bXBpbGVGdW5jdGlvbkZvckNvbnN0cnVjdChDb2RlQmxvY2sqKSB7IHJldHVybiBmYWxzZTsgfQor
CisvLyBPcGNvZGUgY2hlY2tpbmcuCitpbmxpbmUgYm9vbCBjYW5Db21waWxlT3Bjb2RlKE9wY29k
ZUlEIG9wY29kZUlEKQoreworICAgIHN3aXRjaCAob3Bjb2RlSUQpIHsKKyAgICBjYXNlIG9wX2Vu
dGVyOgorICAgIGNhc2Ugb3BfY29udmVydF90aGlzOgorICAgIGNhc2Ugb3BfYml0YW5kOgorICAg
IGNhc2Ugb3BfYml0b3I6CisgICAgY2FzZSBvcF9iaXR4b3I6CisgICAgY2FzZSBvcF9yc2hpZnQ6
CisgICAgY2FzZSBvcF9sc2hpZnQ6CisgICAgY2FzZSBvcF91cnNoaWZ0OgorICAgIGNhc2Ugb3Bf
cHJlX2luYzoKKyAgICBjYXNlIG9wX3Bvc3RfaW5jOgorICAgIGNhc2Ugb3BfcHJlX2RlYzoKKyAg
ICBjYXNlIG9wX3Bvc3RfZGVjOgorICAgIGNhc2Ugb3BfYWRkOgorICAgIGNhc2Ugb3Bfc3ViOgor
ICAgIGNhc2Ugb3BfbXVsOgorICAgIGNhc2Ugb3BfbW9kOgorICAgIGNhc2Ugb3BfZGl2OgorI2lm
IEVOQUJMRShERUJVR19XSVRIX0JSRUFLUE9JTlQpCisgICAgY2FzZSBvcF9kZWJ1ZzoKKyNlbmRp
ZgorICAgIGNhc2Ugb3BfbW92OgorICAgIGNhc2Ugb3BfY2hlY2tfaGFzX2luc3RhbmNlOgorICAg
IGNhc2Ugb3BfaW5zdGFuY2VvZjoKKyAgICBjYXNlIG9wX25vdDoKKyAgICBjYXNlIG9wX2xlc3M6
CisgICAgY2FzZSBvcF9sZXNzZXE6CisgICAgY2FzZSBvcF9ncmVhdGVyOgorICAgIGNhc2Ugb3Bf
Z3JlYXRlcmVxOgorICAgIGNhc2Ugb3BfZXE6CisgICAgY2FzZSBvcF9lcV9udWxsOgorICAgIGNh
c2Ugb3Bfc3RyaWN0ZXE6CisgICAgY2FzZSBvcF9uZXE6CisgICAgY2FzZSBvcF9uZXFfbnVsbDoK
KyAgICBjYXNlIG9wX25zdHJpY3RlcToKKyAgICBjYXNlIG9wX2dldF9ieV92YWw6CisgICAgY2Fz
ZSBvcF9wdXRfYnlfdmFsOgorICAgIGNhc2Ugb3BfbWV0aG9kX2NoZWNrOgorICAgIGNhc2Ugb3Bf
Z2V0X2J5X2lkOgorICAgIGNhc2Ugb3BfcHV0X2J5X2lkOgorICAgIGNhc2Ugb3BfZ2V0X2dsb2Jh
bF92YXI6CisgICAgY2FzZSBvcF9wdXRfZ2xvYmFsX3ZhcjoKKyAgICBjYXNlIG9wX2ptcDoKKyAg
ICBjYXNlIG9wX2xvb3A6CisgICAgY2FzZSBvcF9qdHJ1ZToKKyAgICBjYXNlIG9wX2pmYWxzZToK
KyAgICBjYXNlIG9wX2xvb3BfaWZfdHJ1ZToKKyAgICBjYXNlIG9wX2xvb3BfaWZfZmFsc2U6Cisg
ICAgY2FzZSBvcF9qZXFfbnVsbDoKKyAgICBjYXNlIG9wX2puZXFfbnVsbDoKKyAgICBjYXNlIG9w
X2psZXNzOgorICAgIGNhc2Ugb3Bfamxlc3NlcToKKyAgICBjYXNlIG9wX2pncmVhdGVyOgorICAg
IGNhc2Ugb3BfamdyZWF0ZXJlcToKKyAgICBjYXNlIG9wX2pubGVzczoKKyAgICBjYXNlIG9wX2pu
bGVzc2VxOgorICAgIGNhc2Ugb3Bfam5ncmVhdGVyOgorICAgIGNhc2Ugb3Bfam5ncmVhdGVyZXE6
CisgICAgY2FzZSBvcF9sb29wX2lmX2xlc3M6CisgICAgY2FzZSBvcF9sb29wX2lmX2xlc3NlcToK
KyAgICBjYXNlIG9wX2xvb3BfaWZfZ3JlYXRlcjoKKyAgICBjYXNlIG9wX2xvb3BfaWZfZ3JlYXRl
cmVxOgorICAgIGNhc2Ugb3BfcmV0OgorICAgIGNhc2Ugb3BfZW5kOgorICAgIGNhc2Ugb3BfY2Fs
bDoKKyAgICBjYXNlIG9wX2NvbnN0cnVjdDoKKyAgICBjYXNlIG9wX2NhbGxfcHV0X3Jlc3VsdDoK
KyAgICBjYXNlIG9wX3Jlc29sdmU6CisgICAgY2FzZSBvcF9yZXNvbHZlX2Jhc2U6CisgICAgICAg
IHJldHVybiB0cnVlOworICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9
Cit9CisjZWxzZSAvLyBFTkFCTEUoREZHX0pJVCkKK2lubGluZSBib29sIG1pZ2h0Q29tcGlsZUV2
YWwoQ29kZUJsb2NrKikgeyByZXR1cm4gZmFsc2U7IH0KK2lubGluZSBib29sIG1pZ2h0Q29tcGls
ZVByb2dyYW0oQ29kZUJsb2NrKikgeyByZXR1cm4gZmFsc2U7IH0KK2lubGluZSBib29sIG1pZ2h0
Q29tcGlsZUZ1bmN0aW9uRm9yQ2FsbChDb2RlQmxvY2sqKSB7IHJldHVybiBmYWxzZTsgfQoraW5s
aW5lIGJvb2wgbWlnaHRDb21waWxlRnVuY3Rpb25Gb3JDb25zdHJ1Y3QoQ29kZUJsb2NrKikgeyBy
ZXR1cm4gZmFsc2U7IH0KK2lubGluZSBib29sIGNhbkNvbXBpbGVPcGNvZGUoT3Bjb2RlSUQpIHsg
cmV0dXJuIGZhbHNlOyB9CisjZW5kaWYgLy8gRU5BQkxFKERGR19KSVQpCisKK2Jvb2wgY2FuQ29t
cGlsZU9wY29kZXMoQ29kZUJsb2NrKik7CisKK2lubGluZSBib29sIGNhbkNvbXBpbGVFdmFsKENv
ZGVCbG9jayogY29kZUJsb2NrKQoreworICAgIHJldHVybiBtaWdodENvbXBpbGVFdmFsKGNvZGVC
bG9jaykgJiYgY2FuQ29tcGlsZU9wY29kZXMoY29kZUJsb2NrKTsKK30KKworaW5saW5lIGJvb2wg
Y2FuQ29tcGlsZVByb2dyYW0oQ29kZUJsb2NrKiBjb2RlQmxvY2spCit7CisgICAgcmV0dXJuIG1p
Z2h0Q29tcGlsZVByb2dyYW0oY29kZUJsb2NrKSAmJiBjYW5Db21waWxlT3Bjb2Rlcyhjb2RlQmxv
Y2spOworfQorCitpbmxpbmUgYm9vbCBjYW5Db21waWxlRnVuY3Rpb25Gb3JDYWxsKENvZGVCbG9j
ayogY29kZUJsb2NrKQoreworICAgIHJldHVybiBtaWdodENvbXBpbGVGdW5jdGlvbkZvckNhbGwo
Y29kZUJsb2NrKSAmJiBjYW5Db21waWxlT3Bjb2Rlcyhjb2RlQmxvY2spOworfQorCitpbmxpbmUg
Ym9vbCBjYW5Db21waWxlRnVuY3Rpb25Gb3JDb25zdHJ1Y3QoQ29kZUJsb2NrKiBjb2RlQmxvY2sp
Cit7CisgICAgcmV0dXJuIG1pZ2h0Q29tcGlsZUZ1bmN0aW9uRm9yQ29uc3RydWN0KGNvZGVCbG9j
aykgJiYgY2FuQ29tcGlsZU9wY29kZXMoY29kZUJsb2NrKTsKK30KKworfSB9IC8vIG5hbWVzcGFj
ZSBKU0M6OkRGRworCisjZW5kaWYgLy8gREZHQ2FwYWJpbGl0aWVzX2gKKwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklULmNwcAkocmV2aXNpb24gOTQ2MzYpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDcgKzQ1LDcgQEAgSlNDOjpN
YWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6U1NFMkNoZWNrUwogI2luY2x1ZGUgIlJlcGF0Y2hCdWZm
ZXIuaCIKICNpbmNsdWRlICJSZXN1bHRUeXBlLmgiCiAjaW5jbHVkZSAiU2FtcGxpbmdUb29sLmgi
Ci0jaW5jbHVkZSAiZGZnL0RGR05vZGUuaCIgLy8gZm9yIERGR19TVUNDRVNTX1NUQVRTCisjaW5j
bHVkZSAiREZHTm9kZS5oIiAvLyBmb3IgREZHX1NVQ0NFU1NfU1RBVFMKIAogdXNpbmcgbmFtZXNw
YWNlIHN0ZDsKIApAQCAtOTYsNiArOTYsOSBAQCBKSVQ6OkpJVChKU0dsb2JhbERhdGEqIGdsb2Jh
bERhdGEsIENvZGVCCiAjaWYgRU5BQkxFKFRJRVJFRF9DT01QSUxBVElPTikKIHZvaWQgSklUOjpl
bWl0T3B0aW1pemF0aW9uQ2hlY2soT3B0aW1pemF0aW9uQ2hlY2tLaW5kIGtpbmQpCiB7CisgICAg
aWYgKCFzaG91bGRFbWl0UHJvZmlsaW5nKCkpCisgICAgICAgIHJldHVybjsKKyAgICAKICAgICBK
dW1wIHNraXBPcHRpbWl6ZSA9IGJyYW5jaEFkZDMyKFNpZ25lZCwgVHJ1c3RlZEltbTMyKGtpbmQg
PT0gTG9vcE9wdGltaXphdGlvbkNoZWNrID8gMSA6IDMwKSwgQWJzb2x1dGVBZGRyZXNzKCZtX2Nv
ZGVCbG9jay0+bV9leGVjdXRlQ291bnRlcikpOwogICAgIEpJVFN0dWJDYWxsIHN0dWJDYWxsKHRo
aXMsIGtpbmQgPT0gTG9vcE9wdGltaXphdGlvbkNoZWNrID8gY3RpX29wdGltaXplX2Zyb21fbG9v
cCA6IGN0aV9vcHRpbWl6ZV9mcm9tX3JldCk7CiAgICAgc3R1YkNhbGwuY2FsbCgpOwpAQCAtNDk3
LDYgKzUwMCwxMCBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVTbG93Q2FzZXMoKQogCiBKSVRD
b2RlIEpJVDo6cHJpdmF0ZUNvbXBpbGUoQ29kZVB0ciogZnVuY3Rpb25FbnRyeUFyaXR5Q2hlY2sp
CiB7CisjaWYgRU5BQkxFKFRJRVJFRF9DT01QSUxBVElPTikKKyAgICBtX2NhbkJlT3B0aW1pemVk
ID0gbV9jb2RlQmxvY2stPmNhbkNvbXBpbGVXaXRoREZHKCk7CisjZW5kaWYKKyAgICAKICAgICAv
LyBKdXN0IGFkZCBhIGxpdHRsZSBiaXQgb2YgcmFuZG9tbmVzcyB0byB0aGUgY29kZWdlbgogICAg
IGlmIChtX3JhbmRvbUdlbmVyYXRvci5nZXRVaW50MzIoKSAmIDEpCiAgICAgICAgIG5vcCgpOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCShyZXZpc2lvbiA5NDYzNikKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklULmgJKHdvcmtpbmcgY29weSkKQEAgLTEwMDMsNiArMTAwMywx
NCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBzYW1wbGVDb2RlQmxvY2soQ29kZUJs
b2NrKikge30KICNlbmRpZgogCisjaWYgRU5BQkxFKFRJRVJFRF9DT01QSUxBVElPTikKKyAgICAg
ICAgYm9vbCBzaG91bGRFbWl0UHJvZmlsaW5nKCkgeyByZXR1cm4gbV9jYW5CZU9wdGltaXplZDsg
fQorI2Vsc2UKKyAgICAgICAgLy8gRW5hYmxlcyB1c2Ugb2YgdmFsdWUgcHJvZmlsZXIgd2l0aCB0
aWVyZWQgY29tcGlsYXRpb24gdHVybmVkIG9mZiwKKyAgICAgICAgLy8gaW4gd2hpY2ggY2FzZSBh
bGwgY29kZSBnZXRzIHByb2ZpbGVkLgorICAgICAgICBib29sIHNob3VsZEVtaXRQcm9maWxpbmco
KSB7IHJldHVybiB0cnVlOyB9CisjZW5kaWYKKwogICAgICAgICBJbnRlcnByZXRlciogbV9pbnRl
cnByZXRlcjsKICAgICAgICAgSlNHbG9iYWxEYXRhKiBtX2dsb2JhbERhdGE7CiAgICAgICAgIENv
ZGVCbG9jayogbV9jb2RlQmxvY2s7CkBAIC0xMDQyLDYgKzEwNTAsMTAgQEAgbmFtZXNwYWNlIEpT
QyB7CiAjZW5kaWYKICAgICAgICAgV2Vha1JhbmRvbSBtX3JhbmRvbUdlbmVyYXRvcjsKICAgICAg
ICAgc3RhdGljIENvZGVQdHIgc3RyaW5nR2V0QnlWYWxTdHViR2VuZXJhdG9yKEpTR2xvYmFsRGF0
YSogZ2xvYmFsRGF0YSwgRXhlY3V0YWJsZVBvb2wqIHBvb2wpOworICAgICAgICAKKyNpZiBFTkFC
TEUoVElFUkVEX0NPTVBJTEFUSU9OKQorICAgICAgICBib29sIG1fY2FuQmVPcHRpbWl6ZWQ7Cisj
ZW5kaWYKICAgICB9IEpJVF9DTEFTU19BTElHTk1FTlQ7CiAKICAgICBpbmxpbmUgdm9pZCBKSVQ6
OmVtaXRfb3BfbG9vcChJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVNZXRob2RzLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVNZXRob2RzLmgJKHJldmlzaW9uIDk0
NjM2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVNZXRob2RzLmgJKHdv
cmtpbmcgY29weSkKQEAgLTQzOCw2ICs0MzgsOSBAQCBpbmxpbmUgdm9pZCBKSVQ6OmVtaXRBbGxv
Y2F0ZUpTRnVuY3Rpb24oCiAjaWYgRU5BQkxFKFZBTFVFX1BST0ZJTEVSKQogaW5saW5lIHZvaWQg
SklUOjplbWl0VmFsdWVQcm9maWxpbmdTaXRlKFZhbHVlUHJvZmlsaW5nU2l0ZUtpbmQgc2l0ZUtp
bmQpCiB7CisgICAgaWYgKCFzaG91bGRFbWl0UHJvZmlsaW5nKCkpCisgICAgICAgIHJldHVybjsK
KyAgICAKICAgICBjb25zdCBSZWdpc3RlcklEIHZhbHVlID0gcmVnVDA7CiAgICAgY29uc3QgUmVn
aXN0ZXJJRCBzY3JhdGNoID0gcmVnVDM7CiAgICAgCg==
</data>
<flag name="review"
          id="103002"
          type_id="1"
          status="+"
          setter="barraclough"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>106608</attachid>
            <date>2011-09-07 11:38:13 -0700</date>
            <delta_ts>2011-09-07 11:39:37 -0700</delta_ts>
            <desc>the patch - fix style and build, hopefully</desc>
            <filename>lessprofile_patch_3.diff</filename>
            <type>text/plain</type>
            <size>20132</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gOTQ2OTEpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDEgQEAK
Kzw8PDw8PDwgLm1pbmUKKzIwMTEtMDktMDYgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNv
bT4KKworICAgICAgICBWYWx1ZSBwcm9mbGluZyBhbmQgZXhlY3V0aW9uIGNvdW50IHByb2ZpbGlu
ZyBpcyBwZXJmb3JtZWQgZXZlbiBmb3IKKyAgICAgICAgY29kZSB0aGF0IGNhbm5vdCBiZSBvcHRp
bWl6ZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY3
Njk0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgR2F2aW4gQmFycmFjbG91Z2guCisgICAgICAgIAor
ICAgICAgICBUaGlzIGlzIGEgMiUgc3BlZWQtdXAgb24gVjggd2hlbiB0aWVyZWQgY29tcGlsYXRp
b24gaXMgZW5hYmxlZC4KKworICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2o6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAgICAg
KEpTQzo6UHJvZ3JhbUNvZGVCbG9jazo6Y2FuQ29tcGlsZVdpdGhERkcpOgorICAgICAgICAoSlND
OjpFdmFsQ29kZUJsb2NrOjpjYW5Db21waWxlV2l0aERGRyk6CisgICAgICAgIChKU0M6OkZ1bmN0
aW9uQ29kZUJsb2NrOjpjYW5Db21waWxlV2l0aERGRyk6CisgICAgICAgICogYnl0ZWNvZGUvQ29k
ZUJsb2NrLmg6CisgICAgICAgICogZGZnL0RGR0NhcGFiaWxpdGllcy5jcHA6IEFkZGVkLgorICAg
ICAgICAoSlNDOjpERkc6OmNhbkNvbXBpbGVPcGNvZGVzKToKKyAgICAgICAgKiBkZmcvREZHQ2Fw
YWJpbGl0aWVzLmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpERkc6Om1pZ2h0Q29tcGlsZUV2YWwp
OgorICAgICAgICAoSlNDOjpERkc6Om1pZ2h0Q29tcGlsZVByb2dyYW0pOgorICAgICAgICAoSlND
OjpERkc6Om1pZ2h0Q29tcGlsZUZ1bmN0aW9uRm9yQ2FsbCk6CisgICAgICAgIChKU0M6OkRGRzo6
bWlnaHRDb21waWxlRnVuY3Rpb25Gb3JDb25zdHJ1Y3QpOgorICAgICAgICAoSlNDOjpERkc6OmNh
bkNvbXBpbGVPcGNvZGUpOgorICAgICAgICAoSlNDOjpERkc6OmNhbkNvbXBpbGVFdmFsKToKKyAg
ICAgICAgKEpTQzo6REZHOjpjYW5Db21waWxlUHJvZ3JhbSk6CisgICAgICAgIChKU0M6OkRGRzo6
Y2FuQ29tcGlsZUZ1bmN0aW9uRm9yQ2FsbCk6CisgICAgICAgIChKU0M6OkRGRzo6Y2FuQ29tcGls
ZUZ1bmN0aW9uRm9yQ29uc3RydWN0KToKKyAgICAgICAgKiBqaXQvSklULmNwcDoKKyAgICAgICAg
KEpTQzo6SklUOjplbWl0T3B0aW1pemF0aW9uQ2hlY2spOgorICAgICAgICAoSlNDOjpKSVQ6OnBy
aXZhdGVDb21waWxlKToKKyAgICAgICAgKiBqaXQvSklULmg6CisgICAgICAgIChKU0M6OkpJVDo6
c2hvdWxkRW1pdFByb2ZpbGluZyk6CisgICAgICAgICogaml0L0pJVElubGluZU1ldGhvZHMuaDoK
KyAgICAgICAgKEpTQzo6SklUOjplbWl0VmFsdWVQcm9maWxpbmdTaXRlKToKKworPT09PT09PQog
MjAxMS0wOS0wNyAgR2F2aW4gQmFycmFjbG91Z2ggIDxiYXJyYWNsb3VnaEBhcHBsZS5jb20+CiAK
ICAgICAgICAgUmVmYWN0b3IgSklUIGNoZWNrcyBmb3IgT2JqZWN0VHlwZSBpbnRvIGhlbHBlciBm
dW5jdGlvbnMuCkBAIC0xODIsNiArMjIwLDcgQEAKICAgICAgICAgKFdURjo6U3RyaW5nQnVpbGRl
cjo6b3BlcmF0b3JbXSk6CiAgICAgICAgIChXVEY6OlN0cmluZ0J1aWxkZXI6OmNoYXJhY3RlcnMp
OiBBZGRlZC4KIAorPj4+Pj4+PiAucjk0NjkxCiAyMDExLTA5LTA2ICBNYXJrIEhhaG5lbmJlcmcg
IDxtaGFobmVuYmVyZ0BhcHBsZS5jb20+CiAKICAgICAgICAgRml4IGJyb2tlbiBzbm93IGxlb3Bh
cmQgYnVpbGQKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3By
b2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZGVmCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUuZGVmCShyZXZpc2lvbiA5NDY5MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZGVm
CSh3b3JraW5nIGNvcHkpCkBAIC03Nyw2ICs3Nyw3IEBAIEVYUE9SVFMKICAgICA/Y2FsbEBKU0NA
QFlBP0FWSlNWYWx1ZUAxQFBBVkV4ZWNTdGF0ZUAxQFYyMUBXNENhbGxUeXBlQDFAQUJUQ2FsbERh
dGFAMUAxQUJWQXJnTGlzdEAxQEBaCiAgICAgP2NhbGxPbk1haW5UaHJlYWRAV1RGQEBZQVhQNkFY
UEFYQFowQFoKICAgICA/Y2FsbE9uTWFpblRocmVhZEFuZFdhaXRAV1RGQEBZQVhQNkFYUEFYQFow
QFoKKyAgICA/Y2FuQ29tcGlsZU9wY29kZXNAREZHQEpTQ0BAWUFfTlBBVkNvZGVCbG9ja0AyQEBa
CiAgICAgP2NhbmNlbENhbGxPbk1haW5UaHJlYWRAV1RGQEBZQVhQNkFYUEFYQFowQFoKICAgICA/
Y2FwYWNpdHlASGVhcEBKU0NAQFFBRUlYWgogICAgID9jaGFuZ2VQcm90b3R5cGVUcmFuc2l0aW9u
QFN0cnVjdHVyZUBKU0NAQFNBUEFWMTJAQUFWSlNHbG9iYWxEYXRhQDJAUEFWMTJAVkpTVmFsdWVA
MkBAWgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDk0NjkxKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTYwLDYgKzYwLDcgQEAKIAkJMEZEM0M4MjYxNDEx
NUQ0MDAwRkQ4MUNCIC8qIERGR0RyaXZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwRkQzQzgyMDE0MTE1Q0Y4MDBGRDgxQ0IgLyogREZHRHJpdmVy
LmNwcCAqLzsgfTsKIAkJMEZEM0M4MjcxNDExNUQ0RjAwRkQ4MUNCIC8qIERGR1Byb3BhZ2F0b3Iu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRDNDODI0
MTQxMTVEMjIwMEZEODFDQiAvKiBERkdQcm9wYWdhdG9yLmggKi87IH07CiAJCTBGRDNDODI4MTQx
MTVENEYwMEZEODFDQiAvKiBERkdEcml2ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDBGRDNDODIyMTQxMTVEMEUwMEZEODFDQiAvKiBERkdEcml2ZXIu
aCAqLzsgfTsKKwkJMEZEODJFMjExNDE3MkNFMzAwMTc5Qzk0IC8qIERGR0NhcGFiaWxpdGllcy5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkQ4MkUx
RTE0MTcyQzJGMDAxNzlDOTQgLyogREZHQ2FwYWJpbGl0aWVzLmNwcCAqLzsgfTsKIAkJMTQwMDA2
NzcxMkE2Rjc4MzAwNjREMTIzIC8qIE9TQWxsb2NhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNDAwMDY3NjEyQTZGNzgzMDA2NEQxMjMgLyogT1NB
bGxvY2F0b3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQkxNDAwMDY5MzEyQTZGOUUxMDA2NEQxMjMgLyogT1NBbGxvY2F0b3JQb3NpeC5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNDAwMDY5MjEyQTZG
OUUxMDA2NEQxMjMgLyogT1NBbGxvY2F0b3JQb3NpeC5jcHAgKi87IH07CiAJCTE0MDU2NkM0MTA3
RUMyNTUwMDVEQkM4RCAvKiBKU0FQSVZhbHVlV3JhcHBlci5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzA4OTRENTBGQUZCQTJEMDAwMDE4NjUgLyog
SlNBUElWYWx1ZVdyYXBwZXIuY3BwICovOyB9OwpAQCAtNzg3LDYgKzc4OCw4IEBACiAJCTBGRDND
ODIyMTQxMTVEMEUwMEZEODFDQiAvKiBERkdEcml2ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBuYW1lID0gREZHRHJpdmVyLmg7IHBhdGggPSBkZmcvREZHRHJpdmVyLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGRDNDODIzMTQxMTVEMUEwMEZEODFDQiAvKiBERkdQcm9w
YWdhdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERGR1Byb3Bh
Z2F0b3IuY3BwOyBwYXRoID0gZGZnL0RGR1Byb3BhZ2F0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkwRkQzQzgyNDE0MTE1RDIyMDBGRDgxQ0IgLyogREZHUHJvcGFnYXRvci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdQcm9wYWdhdG9yLmg7IHBhdGgg
PSBkZmcvREZHUHJvcGFnYXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRkQ4
MkUxRTE0MTcyQzJGMDAxNzlDOTQgLyogREZHQ2FwYWJpbGl0aWVzLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERGR0NhcGFiaWxpdGllcy5jcHA7IHBhdGggPSBkZmcv
REZHQ2FwYWJpbGl0aWVzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEZEODJF
MUYxNDE3MkMyRjAwMTc5Qzk0IC8qIERGR0NhcGFiaWxpdGllcy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IG5hbWUgPSBERkdDYXBhYmlsaXRpZXMuaDsgcGF0aCA9IGRmZy9ERkdDYXBhYmls
aXRpZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTQwMDA2NzYxMkE2Rjc4MzAw
NjREMTIzIC8qIE9TQWxsb2NhdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IE9TQWxsb2NhdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTE0MDAwNjkyMTJB
NkY5RTEwMDY0RDEyMyAvKiBPU0FsbG9jYXRvclBvc2l4LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IE9TQWxsb2NhdG9yUG9zaXguY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkxNDBEMTdENjBFOEFENEE5MDAwQ0QxN0QgLyogSlNCYXNlUHJpdmF0ZS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0Jhc2VQcml2YXRlLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMTg3LDYgKzIxOTAsOCBAQAogCQk4NkVDOURCMzEz
MjhERjQ0MDAyQjJBRDcgLyogZGZnICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGls
ZHJlbiA9ICgKKwkJCQkwRkQ4MkUxRTE0MTcyQzJGMDAxNzlDOTQgLyogREZHQ2FwYWJpbGl0aWVz
LmNwcCAqLywKKwkJCQkwRkQ4MkUxRjE0MTcyQzJGMDAxNzlDOTQgLyogREZHQ2FwYWJpbGl0aWVz
LmggKi8sCiAJCQkJMEZEM0M4MjQxNDExNUQyMjAwRkQ4MUNCIC8qIERGR1Byb3BhZ2F0b3IuaCAq
LywKIAkJCQkwRkQzQzgyMzE0MTE1RDFBMDBGRDgxQ0IgLyogREZHUHJvcGFnYXRvci5jcHAgKi8s
CiAJCQkJMEZEM0M4MjIxNDExNUQwRTAwRkQ4MUNCIC8qIERGR0RyaXZlci5oICovLApAQCAtMzA0
Nyw2ICszMDUyLDcgQEAKIAkJCWlzYSA9IFBCWFNvdXJjZXNCdWlsZFBoYXNlOwogCQkJYnVpbGRB
Y3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKIAkJCWZpbGVzID0gKAorCQkJCTBGRDgyRTIxMTQxNzJD
RTMwMDE3OUM5NCAvKiBERkdDYXBhYmlsaXRpZXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZE
M0M4MjUxNDExNUQ0MDAwRkQ4MUNCIC8qIERGR1Byb3BhZ2F0b3IuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJMEZEM0M4MjYxNDExNUQ0MDAwRkQ4MUNCIC8qIERGR0RyaXZlci5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkwRkM4MTUxNjE0MDUxMUI1MDBDRkE2MDMgLyogVlRhYmxlU3BlY3RydW0uY3Bw
IGluIFNvdXJjZXMgKi8sCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29k
ZUJsb2NrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Q29kZUJsb2NrLmNwcAkocmV2aXNpb24gOTQ2OTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQ29kZUJsb2NrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEsNiArMzEsNyBAQAog
I2luY2x1ZGUgIkNvZGVCbG9jay5oIgogCiAjaW5jbHVkZSAiQnl0ZWNvZGVHZW5lcmF0b3IuaCIK
KyNpbmNsdWRlICJERkdDYXBhYmlsaXRpZXMuaCIKICNpbmNsdWRlICJEZWJ1Z2dlci5oIgogI2lu
Y2x1ZGUgIkludGVycHJldGVyLmgiCiAjaW5jbHVkZSAiSklULmgiCkBAIC0xOTMwLDYgKzE5MzEs
MjMgQEAgSlNPYmplY3QqIEZ1bmN0aW9uQ29kZUJsb2NrOjpjb21waWxlT3B0aQogICAgIEpTT2Jq
ZWN0KiBlcnJvciA9IHN0YXRpY19jYXN0PEZ1bmN0aW9uRXhlY3V0YWJsZSo+KG93bmVyRXhlY3V0
YWJsZSgpKS0+Y29tcGlsZU9wdGltaXplZEZvcihleGVjLCBzY29wZUNoYWluTm9kZSwgbV9pc0Nv
bnN0cnVjdG9yID8gQ29kZUZvckNvbnN0cnVjdCA6IENvZGVGb3JDYWxsKTsKICAgICByZXR1cm4g
ZXJyb3I7CiB9CisKK2Jvb2wgUHJvZ3JhbUNvZGVCbG9jazo6Y2FuQ29tcGlsZVdpdGhERkcoKQor
eworICAgIHJldHVybiBERkc6OmNhbkNvbXBpbGVQcm9ncmFtKHRoaXMpOworfQorCitib29sIEV2
YWxDb2RlQmxvY2s6OmNhbkNvbXBpbGVXaXRoREZHKCkKK3sKKyAgICByZXR1cm4gREZHOjpjYW5D
b21waWxlRXZhbCh0aGlzKTsKK30KKworYm9vbCBGdW5jdGlvbkNvZGVCbG9jazo6Y2FuQ29tcGls
ZVdpdGhERkcoKQoreworICAgIGlmIChtX2lzQ29uc3RydWN0b3IpCisgICAgICAgIHJldHVybiBE
Rkc6OmNhbkNvbXBpbGVGdW5jdGlvbkZvckNvbnN0cnVjdCh0aGlzKTsKKyAgICByZXR1cm4gREZH
OjpjYW5Db21waWxlRnVuY3Rpb25Gb3JDYWxsKHRoaXMpOworfQogI2VuZGlmCiAKIH0gLy8gbmFt
ZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9j
ay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxv
Y2suaAkocmV2aXNpb24gOTQ2OTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Q29kZUJsb2NrLmgJKHdvcmtpbmcgY29weSkKQEAgLTMyNyw2ICszMjcsNyBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICAgICAgRXhlY3V0YWJsZVBvb2wqIGV4ZWN1dGFibGVQb29sKCkgeyByZXR1cm4g
Z2V0SklUQ29kZSgpLmdldEV4ZWN1dGFibGVQb29sKCk7IH0KICAgICAgICAgdmlydHVhbCBKU09i
amVjdCogY29tcGlsZU9wdGltaXplZChFeGVjU3RhdGUqLCBTY29wZUNoYWluTm9kZSopID0gMDsK
ICAgICAgICAgdmlydHVhbCBDb2RlQmxvY2sqIHJlcGxhY2VtZW50KCkgPSAwOworICAgICAgICB2
aXJ0dWFsIGJvb2wgY2FuQ29tcGlsZVdpdGhERkcoKSA9IDA7CiAjZWxzZQogICAgICAgICBKSVRD
b2RlOjpKSVRUeXBlIGdldEpJVFR5cGUoKSB7IHJldHVybiBKSVRDb2RlOjpCYXNlbGluZUpJVDsg
fQogI2VuZGlmCkBAIC0zMzQsNiArMzM1LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFNj
cmlwdEV4ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1fb3duZXJF
eGVjdXRhYmxlLmdldCgpOyB9CiAKICAgICAgICAgdm9pZCBzZXRHbG9iYWxEYXRhKEpTR2xvYmFs
RGF0YSogZ2xvYmFsRGF0YSkgeyBtX2dsb2JhbERhdGEgPSBnbG9iYWxEYXRhOyB9CisgICAgICAg
IEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSgpIHsgcmV0dXJuIG1fZ2xvYmFsRGF0YTsgfQogCiAg
ICAgICAgIHZvaWQgc2V0VGhpc1JlZ2lzdGVyKGludCB0aGlzUmVnaXN0ZXIpIHsgbV90aGlzUmVn
aXN0ZXIgPSB0aGlzUmVnaXN0ZXI7IH0KICAgICAgICAgaW50IHRoaXNSZWdpc3RlcigpIGNvbnN0
IHsgcmV0dXJuIG1fdGhpc1JlZ2lzdGVyOyB9CkBAIC03MjMsNiArNzI1LDcgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgcHJvdGVjdGVkOgogICAgICAgICB2aXJ0dWFsIEpTT2JqZWN0KiBjb21waWxl
T3B0aW1pemVkKEV4ZWNTdGF0ZSosIFNjb3BlQ2hhaW5Ob2RlKik7CiAgICAgICAgIHZpcnR1YWwg
Q29kZUJsb2NrKiByZXBsYWNlbWVudCgpOworICAgICAgICB2aXJ0dWFsIGJvb2wgY2FuQ29tcGls
ZVdpdGhERkcoKTsKICNlbmRpZgogICAgIH07CiAKQEAgLTc0OCw2ICs3NTEsNyBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICBwcm90ZWN0ZWQ6CiAgICAgICAgIHZpcnR1YWwgSlNPYmplY3QqIGNvbXBp
bGVPcHRpbWl6ZWQoRXhlY1N0YXRlKiwgU2NvcGVDaGFpbk5vZGUqKTsKICAgICAgICAgdmlydHVh
bCBDb2RlQmxvY2sqIHJlcGxhY2VtZW50KCk7CisgICAgICAgIHZpcnR1YWwgYm9vbCBjYW5Db21w
aWxlV2l0aERGRygpOwogI2VuZGlmCiAKICAgICBwcml2YXRlOgpAQCAtNzc0LDYgKzc3OCw3IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgIHByb3RlY3RlZDoKICAgICAgICAgdmlydHVhbCBKU09iamVj
dCogY29tcGlsZU9wdGltaXplZChFeGVjU3RhdGUqLCBTY29wZUNoYWluTm9kZSopOwogICAgICAg
ICB2aXJ0dWFsIENvZGVCbG9jayogcmVwbGFjZW1lbnQoKTsKKyAgICAgICAgdmlydHVhbCBib29s
IGNhbkNvbXBpbGVXaXRoREZHKCk7CiAjZW5kaWYKICAgICB9OwogCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwCShyZXZpc2lvbiAwKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwCShyZXZpc2lvbiAw
KQpAQCAtMCwwICsxLDYwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
IAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJERkdDYXBhYmlsaXRpZXMu
aCIKKworI2luY2x1ZGUgIkNvZGVCbG9jay5oIgorI2luY2x1ZGUgIkludGVycHJldGVyLmgiCisK
K25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKKworYm9vbCBjYW5Db21waWxlT3Bjb2Rl
cyhDb2RlQmxvY2sqIGNvZGVCbG9jaykKK3sKKyAgICBJbnRlcnByZXRlciogaW50ZXJwcmV0ZXIg
PSBjb2RlQmxvY2stPmdsb2JhbERhdGEoKS0+aW50ZXJwcmV0ZXI7CisgICAgSW5zdHJ1Y3Rpb24q
IGluc3RydWN0aW9uc0JlZ2luID0gY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpOwor
ICAgIHVuc2lnbmVkIGluc3RydWN0aW9uQ291bnQgPSBjb2RlQmxvY2stPmluc3RydWN0aW9ucygp
LnNpemUoKTsKKyAgICAKKyAgICBmb3IgKHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0ID0gMDsgYnl0
ZWNvZGVPZmZzZXQgPCBpbnN0cnVjdGlvbkNvdW50OyApIHsKKyAgICAgICAgc3dpdGNoIChpbnRl
cnByZXRlci0+Z2V0T3Bjb2RlSUQoaW5zdHJ1Y3Rpb25zQmVnaW5bYnl0ZWNvZGVPZmZzZXRdLnUu
b3Bjb2RlKSkgeworI2RlZmluZSBERUZJTkVfT1Aob3Bjb2RlLCBsZW5ndGgpICAgICAgICAgICBc
CisgICAgICAgIGNhc2Ugb3Bjb2RlOiAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAg
ICAgIGlmICghY2FuQ29tcGlsZU9wY29kZShvcGNvZGUpKSAgXAorICAgICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBieXRlY29kZU9mZnNldCAr
PSBsZW5ndGg7ICAgICAgIFwKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgRk9SX0VB
Q0hfT1BDT0RFX0lEKERFRklORV9PUCkKKyN1bmRlZiBERUZJTkVfT1AKKyAgICAgICAgZGVmYXVs
dDoKKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgcmV0dXJuIHRydWU7Cit9CisKK30gfSAvLyBu
YW1lc3BhY2UgSlNDOjpERkcKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdD
YXBhYmlsaXRpZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0NhcGFiaWxpdGllcy5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdDYXBhYmlsaXRpZXMuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxNTIgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBERkdDYXBh
YmlsaXRpZXNfaAorI2RlZmluZSBERkdDYXBhYmlsaXRpZXNfaAorCisjaW5jbHVkZSAiSW50ZXJw
cmV0ZXIuaCIKKyNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KKworbmFtZXNwYWNlIEpTQyB7IG5h
bWVzcGFjZSBERkcgeworCisjaWYgRU5BQkxFKERGR19KSVQpCisvLyBGYXN0IGNoZWNrIGZ1bmN0
aW9uczsgaWYgdGhleSByZXR1cm4gdHJ1ZSBpdCBpcyBzdGlsbCBuZWNlc3NhcnkgdG8KKy8vIGNo
ZWNrIG9wY29kZXMuCitpbmxpbmUgYm9vbCBtaWdodENvbXBpbGVFdmFsKENvZGVCbG9jayopIHsg
cmV0dXJuIHRydWU7IH0KK2lubGluZSBib29sIG1pZ2h0Q29tcGlsZVByb2dyYW0oQ29kZUJsb2Nr
KikgeyByZXR1cm4gdHJ1ZTsgfQoraW5saW5lIGJvb2wgbWlnaHRDb21waWxlRnVuY3Rpb25Gb3JD
YWxsKENvZGVCbG9jayopIHsgcmV0dXJuIHRydWU7IH0KK2lubGluZSBib29sIG1pZ2h0Q29tcGls
ZUZ1bmN0aW9uRm9yQ29uc3RydWN0KENvZGVCbG9jayopIHsgcmV0dXJuIGZhbHNlOyB9CisKKy8v
IE9wY29kZSBjaGVja2luZy4KK2lubGluZSBib29sIGNhbkNvbXBpbGVPcGNvZGUoT3Bjb2RlSUQg
b3Bjb2RlSUQpCit7CisgICAgc3dpdGNoIChvcGNvZGVJRCkgeworICAgIGNhc2Ugb3BfZW50ZXI6
CisgICAgY2FzZSBvcF9jb252ZXJ0X3RoaXM6CisgICAgY2FzZSBvcF9iaXRhbmQ6CisgICAgY2Fz
ZSBvcF9iaXRvcjoKKyAgICBjYXNlIG9wX2JpdHhvcjoKKyAgICBjYXNlIG9wX3JzaGlmdDoKKyAg
ICBjYXNlIG9wX2xzaGlmdDoKKyAgICBjYXNlIG9wX3Vyc2hpZnQ6CisgICAgY2FzZSBvcF9wcmVf
aW5jOgorICAgIGNhc2Ugb3BfcG9zdF9pbmM6CisgICAgY2FzZSBvcF9wcmVfZGVjOgorICAgIGNh
c2Ugb3BfcG9zdF9kZWM6CisgICAgY2FzZSBvcF9hZGQ6CisgICAgY2FzZSBvcF9zdWI6CisgICAg
Y2FzZSBvcF9tdWw6CisgICAgY2FzZSBvcF9tb2Q6CisgICAgY2FzZSBvcF9kaXY6CisjaWYgRU5B
QkxFKERFQlVHX1dJVEhfQlJFQUtQT0lOVCkKKyAgICBjYXNlIG9wX2RlYnVnOgorI2VuZGlmCisg
ICAgY2FzZSBvcF9tb3Y6CisgICAgY2FzZSBvcF9jaGVja19oYXNfaW5zdGFuY2U6CisgICAgY2Fz
ZSBvcF9pbnN0YW5jZW9mOgorICAgIGNhc2Ugb3Bfbm90OgorICAgIGNhc2Ugb3BfbGVzczoKKyAg
ICBjYXNlIG9wX2xlc3NlcToKKyAgICBjYXNlIG9wX2dyZWF0ZXI6CisgICAgY2FzZSBvcF9ncmVh
dGVyZXE6CisgICAgY2FzZSBvcF9lcToKKyAgICBjYXNlIG9wX2VxX251bGw6CisgICAgY2FzZSBv
cF9zdHJpY3RlcToKKyAgICBjYXNlIG9wX25lcToKKyAgICBjYXNlIG9wX25lcV9udWxsOgorICAg
IGNhc2Ugb3BfbnN0cmljdGVxOgorICAgIGNhc2Ugb3BfZ2V0X2J5X3ZhbDoKKyAgICBjYXNlIG9w
X3B1dF9ieV92YWw6CisgICAgY2FzZSBvcF9tZXRob2RfY2hlY2s6CisgICAgY2FzZSBvcF9nZXRf
YnlfaWQ6CisgICAgY2FzZSBvcF9wdXRfYnlfaWQ6CisgICAgY2FzZSBvcF9nZXRfZ2xvYmFsX3Zh
cjoKKyAgICBjYXNlIG9wX3B1dF9nbG9iYWxfdmFyOgorICAgIGNhc2Ugb3Bfam1wOgorICAgIGNh
c2Ugb3BfbG9vcDoKKyAgICBjYXNlIG9wX2p0cnVlOgorICAgIGNhc2Ugb3BfamZhbHNlOgorICAg
IGNhc2Ugb3BfbG9vcF9pZl90cnVlOgorICAgIGNhc2Ugb3BfbG9vcF9pZl9mYWxzZToKKyAgICBj
YXNlIG9wX2plcV9udWxsOgorICAgIGNhc2Ugb3Bfam5lcV9udWxsOgorICAgIGNhc2Ugb3Bfamxl
c3M6CisgICAgY2FzZSBvcF9qbGVzc2VxOgorICAgIGNhc2Ugb3BfamdyZWF0ZXI6CisgICAgY2Fz
ZSBvcF9qZ3JlYXRlcmVxOgorICAgIGNhc2Ugb3Bfam5sZXNzOgorICAgIGNhc2Ugb3Bfam5sZXNz
ZXE6CisgICAgY2FzZSBvcF9qbmdyZWF0ZXI6CisgICAgY2FzZSBvcF9qbmdyZWF0ZXJlcToKKyAg
ICBjYXNlIG9wX2xvb3BfaWZfbGVzczoKKyAgICBjYXNlIG9wX2xvb3BfaWZfbGVzc2VxOgorICAg
IGNhc2Ugb3BfbG9vcF9pZl9ncmVhdGVyOgorICAgIGNhc2Ugb3BfbG9vcF9pZl9ncmVhdGVyZXE6
CisgICAgY2FzZSBvcF9yZXQ6CisgICAgY2FzZSBvcF9lbmQ6CisgICAgY2FzZSBvcF9jYWxsOgor
ICAgIGNhc2Ugb3BfY29uc3RydWN0OgorICAgIGNhc2Ugb3BfY2FsbF9wdXRfcmVzdWx0OgorICAg
IGNhc2Ugb3BfcmVzb2x2ZToKKyAgICBjYXNlIG9wX3Jlc29sdmVfYmFzZToKKyAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KK30K
KyNlbHNlIC8vIEVOQUJMRShERkdfSklUKQoraW5saW5lIGJvb2wgbWlnaHRDb21waWxlRXZhbChD
b2RlQmxvY2sqKSB7IHJldHVybiBmYWxzZTsgfQoraW5saW5lIGJvb2wgbWlnaHRDb21waWxlUHJv
Z3JhbShDb2RlQmxvY2sqKSB7IHJldHVybiBmYWxzZTsgfQoraW5saW5lIGJvb2wgbWlnaHRDb21w
aWxlRnVuY3Rpb25Gb3JDYWxsKENvZGVCbG9jayopIHsgcmV0dXJuIGZhbHNlOyB9CitpbmxpbmUg
Ym9vbCBtaWdodENvbXBpbGVGdW5jdGlvbkZvckNvbnN0cnVjdChDb2RlQmxvY2sqKSB7IHJldHVy
biBmYWxzZTsgfQoraW5saW5lIGJvb2wgY2FuQ29tcGlsZU9wY29kZShPcGNvZGVJRCkgeyByZXR1
cm4gZmFsc2U7IH0KKyNlbmRpZiAvLyBFTkFCTEUoREZHX0pJVCkKKworYm9vbCBjYW5Db21waWxl
T3Bjb2RlcyhDb2RlQmxvY2sqKTsKKworaW5saW5lIGJvb2wgY2FuQ29tcGlsZUV2YWwoQ29kZUJs
b2NrKiBjb2RlQmxvY2spCit7CisgICAgcmV0dXJuIG1pZ2h0Q29tcGlsZUV2YWwoY29kZUJsb2Nr
KSAmJiBjYW5Db21waWxlT3Bjb2Rlcyhjb2RlQmxvY2spOworfQorCitpbmxpbmUgYm9vbCBjYW5D
b21waWxlUHJvZ3JhbShDb2RlQmxvY2sqIGNvZGVCbG9jaykKK3sKKyAgICByZXR1cm4gbWlnaHRD
b21waWxlUHJvZ3JhbShjb2RlQmxvY2spICYmIGNhbkNvbXBpbGVPcGNvZGVzKGNvZGVCbG9jayk7
Cit9CisKK2lubGluZSBib29sIGNhbkNvbXBpbGVGdW5jdGlvbkZvckNhbGwoQ29kZUJsb2NrKiBj
b2RlQmxvY2spCit7CisgICAgcmV0dXJuIG1pZ2h0Q29tcGlsZUZ1bmN0aW9uRm9yQ2FsbChjb2Rl
QmxvY2spICYmIGNhbkNvbXBpbGVPcGNvZGVzKGNvZGVCbG9jayk7Cit9CisKK2lubGluZSBib29s
IGNhbkNvbXBpbGVGdW5jdGlvbkZvckNvbnN0cnVjdChDb2RlQmxvY2sqIGNvZGVCbG9jaykKK3sK
KyAgICByZXR1cm4gbWlnaHRDb21waWxlRnVuY3Rpb25Gb3JDb25zdHJ1Y3QoY29kZUJsb2NrKSAm
JiBjYW5Db21waWxlT3Bjb2Rlcyhjb2RlQmxvY2spOworfQorCit9IH0gLy8gbmFtZXNwYWNlIEpT
Qzo6REZHCisKKyNlbmRpZiAvLyBERkdDYXBhYmlsaXRpZXNfaAorCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVQuY3BwCShyZXZpc2lvbiA5NDY5MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklULmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzYsNiArMzYsNyBAQCBKU0M6Ok1hY3Jv
QXNzZW1ibGVyWDg2Q29tbW9uOjpTU0UyQ2hlY2tTCiAKICNpbmNsdWRlICJDb2RlQmxvY2suaCIK
ICNpbmNsdWRlICJDcnlwdG9ncmFwaGljYWxseVJhbmRvbU51bWJlci5oIgorI2luY2x1ZGUgIkRG
R05vZGUuaCIgLy8gZm9yIERGR19TVUNDRVNTX1NUQVRTCiAjaW5jbHVkZSAiSW50ZXJwcmV0ZXIu
aCIKICNpbmNsdWRlICJKSVRJbmxpbmVNZXRob2RzLmgiCiAjaW5jbHVkZSAiSklUU3R1YkNhbGwu
aCIKQEAgLTQ1LDcgKzQ2LDYgQEAgSlNDOjpNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6U1NFMkNo
ZWNrUwogI2luY2x1ZGUgIlJlcGF0Y2hCdWZmZXIuaCIKICNpbmNsdWRlICJSZXN1bHRUeXBlLmgi
CiAjaW5jbHVkZSAiU2FtcGxpbmdUb29sLmgiCi0jaW5jbHVkZSAiZGZnL0RGR05vZGUuaCIgLy8g
Zm9yIERGR19TVUNDRVNTX1NUQVRTCiAKIHVzaW5nIG5hbWVzcGFjZSBzdGQ7CiAKQEAgLTk2LDYg
Kzk2LDkgQEAgSklUOjpKSVQoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBDb2RlQgogI2lmIEVO
QUJMRShUSUVSRURfQ09NUElMQVRJT04pCiB2b2lkIEpJVDo6ZW1pdE9wdGltaXphdGlvbkNoZWNr
KE9wdGltaXphdGlvbkNoZWNrS2luZCBraW5kKQogeworICAgIGlmICghc2hvdWxkRW1pdFByb2Zp
bGluZygpKQorICAgICAgICByZXR1cm47CisgICAgCiAgICAgSnVtcCBza2lwT3B0aW1pemUgPSBi
cmFuY2hBZGQzMihTaWduZWQsIFRydXN0ZWRJbW0zMihraW5kID09IExvb3BPcHRpbWl6YXRpb25D
aGVjayA/IDEgOiAzMCksIEFic29sdXRlQWRkcmVzcygmbV9jb2RlQmxvY2stPm1fZXhlY3V0ZUNv
dW50ZXIpKTsKICAgICBKSVRTdHViQ2FsbCBzdHViQ2FsbCh0aGlzLCBraW5kID09IExvb3BPcHRp
bWl6YXRpb25DaGVjayA/IGN0aV9vcHRpbWl6ZV9mcm9tX2xvb3AgOiBjdGlfb3B0aW1pemVfZnJv
bV9yZXQpOwogICAgIHN0dWJDYWxsLmNhbGwoKTsKQEAgLTQ5Nyw2ICs1MDAsMTAgQEAgdm9pZCBK
SVQ6OnByaXZhdGVDb21waWxlU2xvd0Nhc2VzKCkKIAogSklUQ29kZSBKSVQ6OnByaXZhdGVDb21w
aWxlKENvZGVQdHIqIGZ1bmN0aW9uRW50cnlBcml0eUNoZWNrKQogeworI2lmIEVOQUJMRShUSUVS
RURfQ09NUElMQVRJT04pCisgICAgbV9jYW5CZU9wdGltaXplZCA9IG1fY29kZUJsb2NrLT5jYW5D
b21waWxlV2l0aERGRygpOworI2VuZGlmCisgICAgCiAgICAgLy8gSnVzdCBhZGQgYSBsaXR0bGUg
Yml0IG9mIHJhbmRvbW5lc3MgdG8gdGhlIGNvZGVnZW4KICAgICBpZiAobV9yYW5kb21HZW5lcmF0
b3IuZ2V0VWludDMyKCkgJiAxKQogICAgICAgICBub3AoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklULmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVQuaAkocmV2aXNpb24gOTQ2OTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDA0LDYgKzEwMDQsMTQgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgIHZvaWQgc2FtcGxlQ29kZUJsb2NrKENvZGVCbG9jayopIHt9CiAjZW5kaWYKIAor
I2lmIEVOQUJMRShUSUVSRURfQ09NUElMQVRJT04pCisgICAgICAgIGJvb2wgc2hvdWxkRW1pdFBy
b2ZpbGluZygpIHsgcmV0dXJuIG1fY2FuQmVPcHRpbWl6ZWQ7IH0KKyNlbHNlCisgICAgICAgIC8v
IEVuYWJsZXMgdXNlIG9mIHZhbHVlIHByb2ZpbGVyIHdpdGggdGllcmVkIGNvbXBpbGF0aW9uIHR1
cm5lZCBvZmYsCisgICAgICAgIC8vIGluIHdoaWNoIGNhc2UgYWxsIGNvZGUgZ2V0cyBwcm9maWxl
ZC4KKyAgICAgICAgYm9vbCBzaG91bGRFbWl0UHJvZmlsaW5nKCkgeyByZXR1cm4gdHJ1ZTsgfQor
I2VuZGlmCisKICAgICAgICAgSW50ZXJwcmV0ZXIqIG1faW50ZXJwcmV0ZXI7CiAgICAgICAgIEpT
R2xvYmFsRGF0YSogbV9nbG9iYWxEYXRhOwogICAgICAgICBDb2RlQmxvY2sqIG1fY29kZUJsb2Nr
OwpAQCAtMTA0Myw2ICsxMDUxLDEwIEBAIG5hbWVzcGFjZSBKU0MgewogI2VuZGlmCiAgICAgICAg
IFdlYWtSYW5kb20gbV9yYW5kb21HZW5lcmF0b3I7CiAgICAgICAgIHN0YXRpYyBDb2RlUHRyIHN0
cmluZ0dldEJ5VmFsU3R1YkdlbmVyYXRvcihKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIEV4ZWN1
dGFibGVQb29sKiBwb29sKTsKKyAgICAgICAgCisjaWYgRU5BQkxFKFRJRVJFRF9DT01QSUxBVElP
TikKKyAgICAgICAgYm9vbCBtX2NhbkJlT3B0aW1pemVkOworI2VuZGlmCiAgICAgfSBKSVRfQ0xB
U1NfQUxJR05NRU5UOwogCiAgICAgaW5saW5lIHZvaWQgSklUOjplbWl0X29wX2xvb3AoSW5zdHJ1
Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUSW5saW5lTWV0aG9kcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUSW5saW5lTWV0aG9kcy5oCShyZXZpc2lvbiA5NDY5MSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUSW5saW5lTWV0aG9kcy5oCSh3b3JraW5nIGNvcHkpCkBAIC00NDMs
NiArNDQzLDkgQEAgaW5saW5lIHZvaWQgSklUOjplbWl0QWxsb2NhdGVKU0Z1bmN0aW9uKAogI2lm
IEVOQUJMRShWQUxVRV9QUk9GSUxFUikKIGlubGluZSB2b2lkIEpJVDo6ZW1pdFZhbHVlUHJvZmls
aW5nU2l0ZShWYWx1ZVByb2ZpbGluZ1NpdGVLaW5kIHNpdGVLaW5kKQogeworICAgIGlmICghc2hv
dWxkRW1pdFByb2ZpbGluZygpKQorICAgICAgICByZXR1cm47CisgICAgCiAgICAgY29uc3QgUmVn
aXN0ZXJJRCB2YWx1ZSA9IHJlZ1QwOwogICAgIGNvbnN0IFJlZ2lzdGVySUQgc2NyYXRjaCA9IHJl
Z1QzOwogICAgIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>106610</attachid>
            <date>2011-09-07 11:39:37 -0700</date>
            <delta_ts>2011-09-07 11:53:44 -0700</delta_ts>
            <desc>the patch - fix conflict in ChangeLog</desc>
            <filename>lessprofile_patch_4.diff</filename>
            <type>text/plain</type>
            <size>19881</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gOTQ2OTEpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzkgQEAK
KzIwMTEtMDktMDYgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KKworICAgICAgICBW
YWx1ZSBwcm9mbGluZyBhbmQgZXhlY3V0aW9uIGNvdW50IHByb2ZpbGluZyBpcyBwZXJmb3JtZWQg
ZXZlbiBmb3IKKyAgICAgICAgY29kZSB0aGF0IGNhbm5vdCBiZSBvcHRpbWl6ZWQKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY3Njk0CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgR2F2aW4gQmFycmFjbG91Z2guCisgICAgICAgIAorICAgICAgICBUaGlzIGlz
IGEgMiUgc3BlZWQtdXAgb24gVjggd2hlbiB0aWVyZWQgY29tcGlsYXRpb24gaXMgZW5hYmxlZC4K
KworICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6Cisg
ICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6UHJvZ3JhbUNv
ZGVCbG9jazo6Y2FuQ29tcGlsZVdpdGhERkcpOgorICAgICAgICAoSlNDOjpFdmFsQ29kZUJsb2Nr
OjpjYW5Db21waWxlV2l0aERGRyk6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uQ29kZUJsb2NrOjpj
YW5Db21waWxlV2l0aERGRyk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmg6CisgICAg
ICAgICogZGZnL0RGR0NhcGFiaWxpdGllcy5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpERkc6
OmNhbkNvbXBpbGVPcGNvZGVzKToKKyAgICAgICAgKiBkZmcvREZHQ2FwYWJpbGl0aWVzLmg6IEFk
ZGVkLgorICAgICAgICAoSlNDOjpERkc6Om1pZ2h0Q29tcGlsZUV2YWwpOgorICAgICAgICAoSlND
OjpERkc6Om1pZ2h0Q29tcGlsZVByb2dyYW0pOgorICAgICAgICAoSlNDOjpERkc6Om1pZ2h0Q29t
cGlsZUZ1bmN0aW9uRm9yQ2FsbCk6CisgICAgICAgIChKU0M6OkRGRzo6bWlnaHRDb21waWxlRnVu
Y3Rpb25Gb3JDb25zdHJ1Y3QpOgorICAgICAgICAoSlNDOjpERkc6OmNhbkNvbXBpbGVPcGNvZGUp
OgorICAgICAgICAoSlNDOjpERkc6OmNhbkNvbXBpbGVFdmFsKToKKyAgICAgICAgKEpTQzo6REZH
OjpjYW5Db21waWxlUHJvZ3JhbSk6CisgICAgICAgIChKU0M6OkRGRzo6Y2FuQ29tcGlsZUZ1bmN0
aW9uRm9yQ2FsbCk6CisgICAgICAgIChKU0M6OkRGRzo6Y2FuQ29tcGlsZUZ1bmN0aW9uRm9yQ29u
c3RydWN0KToKKyAgICAgICAgKiBqaXQvSklULmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0
T3B0aW1pemF0aW9uQ2hlY2spOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlKToK
KyAgICAgICAgKiBqaXQvSklULmg6CisgICAgICAgIChKU0M6OkpJVDo6c2hvdWxkRW1pdFByb2Zp
bGluZyk6CisgICAgICAgICogaml0L0pJVElubGluZU1ldGhvZHMuaDoKKyAgICAgICAgKEpTQzo6
SklUOjplbWl0VmFsdWVQcm9maWxpbmdTaXRlKToKKwogMjAxMS0wOS0wNyAgR2F2aW4gQmFycmFj
bG91Z2ggIDxiYXJyYWNsb3VnaEBhcHBsZS5jb20+CiAKICAgICAgICAgUmVmYWN0b3IgSklUIGNo
ZWNrcyBmb3IgT2JqZWN0VHlwZSBpbnRvIGhlbHBlciBmdW5jdGlvbnMuCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlLmRlZgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNj
cmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmRlZgkocmV2aXNp
b24gOTQ2OTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9q
L0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmRlZgkod29ya2luZyBjb3B5KQpAQCAtNzcs
NiArNzcsNyBAQCBFWFBPUlRTCiAgICAgP2NhbGxASlNDQEBZQT9BVkpTVmFsdWVAMUBQQVZFeGVj
U3RhdGVAMUBWMjFAVzRDYWxsVHlwZUAxQEFCVENhbGxEYXRhQDFAMUFCVkFyZ0xpc3RAMUBAWgog
ICAgID9jYWxsT25NYWluVGhyZWFkQFdURkBAWUFYUDZBWFBBWEBaMEBaCiAgICAgP2NhbGxPbk1h
aW5UaHJlYWRBbmRXYWl0QFdURkBAWUFYUDZBWFBBWEBaMEBaCisgICAgP2NhbkNvbXBpbGVPcGNv
ZGVzQERGR0BKU0NAQFlBX05QQVZDb2RlQmxvY2tAMkBAWgogICAgID9jYW5jZWxDYWxsT25NYWlu
VGhyZWFkQFdURkBAWUFYUDZBWFBBWEBaMEBaCiAgICAgP2NhcGFjaXR5QEhlYXBASlNDQEBRQUVJ
WFoKICAgICA/Y2hhbmdlUHJvdG90eXBlVHJhbnNpdGlvbkBTdHJ1Y3R1cmVASlNDQEBTQVBBVjEy
QEFBVkpTR2xvYmFsRGF0YUAyQFBBVjEyQFZKU1ZhbHVlQDJAQFoKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiA5NDY5MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkp
CkBAIC02MCw2ICs2MCw3IEBACiAJCTBGRDNDODI2MTQxMTVENDAwMEZEODFDQiAvKiBERkdEcml2
ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZE
M0M4MjAxNDExNUNGODAwRkQ4MUNCIC8qIERGR0RyaXZlci5jcHAgKi87IH07CiAJCTBGRDNDODI3
MTQxMTVENEYwMEZEODFDQiAvKiBERkdQcm9wYWdhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkQzQzgyNDE0MTE1RDIyMDBGRDgxQ0IgLyogREZH
UHJvcGFnYXRvci5oICovOyB9OwogCQkwRkQzQzgyODE0MTE1RDRGMDBGRDgxQ0IgLyogREZHRHJp
dmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkQz
QzgyMjE0MTE1RDBFMDBGRDgxQ0IgLyogREZHRHJpdmVyLmggKi87IH07CisJCTBGRDgyRTIxMTQx
NzJDRTMwMDE3OUM5NCAvKiBERkdDYXBhYmlsaXRpZXMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZEODJFMUUxNDE3MkMyRjAwMTc5Qzk0IC8qIERG
R0NhcGFiaWxpdGllcy5jcHAgKi87IH07CiAJCTE0MDAwNjc3MTJBNkY3ODMwMDY0RDEyMyAvKiBP
U0FsbG9jYXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMTQwMDA2NzYxMkE2Rjc4MzAwNjREMTIzIC8qIE9TQWxsb2NhdG9yLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMTQwMDA2OTMxMkE2RjlFMTAw
NjREMTIzIC8qIE9TQWxsb2NhdG9yUG9zaXguY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMTQwMDA2OTIxMkE2RjlFMTAwNjREMTIzIC8qIE9TQWxsb2Nh
dG9yUG9zaXguY3BwICovOyB9OwogCQkxNDA1NjZDNDEwN0VDMjU1MDA1REJDOEQgLyogSlNBUElW
YWx1ZVdyYXBwZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQkMwODk0RDUwRkFGQkEyRDAwMDAxODY1IC8qIEpTQVBJVmFsdWVXcmFwcGVyLmNwcCAq
LzsgfTsKQEAgLTc4Nyw2ICs3ODgsOCBAQAogCQkwRkQzQzgyMjE0MTE1RDBFMDBGRDgxQ0IgLyog
REZHRHJpdmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR0RyaXZlci5o
OyBwYXRoID0gZGZnL0RGR0RyaXZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkw
RkQzQzgyMzE0MTE1RDFBMDBGRDgxQ0IgLyogREZHUHJvcGFnYXRvci5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBERkdQcm9wYWdhdG9yLmNwcDsgcGF0aCA9IGRmZy9E
RkdQcm9wYWdhdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZEM0M4MjQx
NDExNUQyMjAwRkQ4MUNCIC8qIERGR1Byb3BhZ2F0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBuYW1lID0gREZHUHJvcGFnYXRvci5oOyBwYXRoID0gZGZnL0RGR1Byb3BhZ2F0b3IuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEZEODJFMUUxNDE3MkMyRjAwMTc5Qzk0IC8q
IERGR0NhcGFiaWxpdGllcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUg
PSBERkdDYXBhYmlsaXRpZXMuY3BwOyBwYXRoID0gZGZnL0RGR0NhcGFiaWxpdGllcy5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGRDgyRTFGMTQxNzJDMkYwMDE3OUM5NCAvKiBE
RkdDYXBhYmlsaXRpZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHQ2Fw
YWJpbGl0aWVzLmg7IHBhdGggPSBkZmcvREZHQ2FwYWJpbGl0aWVzLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTE0MDAwNjc2MTJBNkY3ODMwMDY0RDEyMyAvKiBPU0FsbG9jYXRvci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBPU0FsbG9jYXRvci5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkxNDAwMDY5MjEyQTZGOUUxMDA2NEQxMjMgLyogT1NBbGxv
Y2F0b3JQb3NpeC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBPU0Fs
bG9jYXRvclBvc2l4LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTQwRDE3RDYw
RThBRDRBOTAwMENEMTdEIC8qIEpTQmFzZVByaXZhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gSlNCYXNlUHJpdmF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtMjE4Nyw2ICsyMTkwLDggQEAKIAkJODZFQzlEQjMxMzI4REY0NDAwMkIyQUQ3IC8qIGRmZyAq
LyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJMEZEODJFMUUx
NDE3MkMyRjAwMTc5Qzk0IC8qIERGR0NhcGFiaWxpdGllcy5jcHAgKi8sCisJCQkJMEZEODJFMUYx
NDE3MkMyRjAwMTc5Qzk0IC8qIERGR0NhcGFiaWxpdGllcy5oICovLAogCQkJCTBGRDNDODI0MTQx
MTVEMjIwMEZEODFDQiAvKiBERkdQcm9wYWdhdG9yLmggKi8sCiAJCQkJMEZEM0M4MjMxNDExNUQx
QTAwRkQ4MUNCIC8qIERGR1Byb3BhZ2F0b3IuY3BwICovLAogCQkJCTBGRDNDODIyMTQxMTVEMEUw
MEZEODFDQiAvKiBERkdEcml2ZXIuaCAqLywKQEAgLTMwNDcsNiArMzA1Miw3IEBACiAJCQlpc2Eg
PSBQQlhTb3VyY2VzQnVpbGRQaGFzZTsKIAkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7
CiAJCQlmaWxlcyA9ICgKKwkJCQkwRkQ4MkUyMTE0MTcyQ0UzMDAxNzlDOTQgLyogREZHQ2FwYWJp
bGl0aWVzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGRDNDODI1MTQxMTVENDAwMEZEODFDQiAv
KiBERkdQcm9wYWdhdG9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGRDNDODI2MTQxMTVENDAw
MEZEODFDQiAvKiBERkdEcml2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZDODE1MTYxNDA1
MTFCNTAwQ0ZBNjAzIC8qIFZUYWJsZVNwZWN0cnVtLmNwcCBpbiBTb3VyY2VzICovLApJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAJKHJldmlzaW9u
IDk0NjkxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJDb2RlQmxvY2suaCIK
IAogI2luY2x1ZGUgIkJ5dGVjb2RlR2VuZXJhdG9yLmgiCisjaW5jbHVkZSAiREZHQ2FwYWJpbGl0
aWVzLmgiCiAjaW5jbHVkZSAiRGVidWdnZXIuaCIKICNpbmNsdWRlICJJbnRlcnByZXRlci5oIgog
I2luY2x1ZGUgIkpJVC5oIgpAQCAtMTkzMCw2ICsxOTMxLDIzIEBAIEpTT2JqZWN0KiBGdW5jdGlv
bkNvZGVCbG9jazo6Y29tcGlsZU9wdGkKICAgICBKU09iamVjdCogZXJyb3IgPSBzdGF0aWNfY2Fz
dDxGdW5jdGlvbkV4ZWN1dGFibGUqPihvd25lckV4ZWN1dGFibGUoKSktPmNvbXBpbGVPcHRpbWl6
ZWRGb3IoZXhlYywgc2NvcGVDaGFpbk5vZGUsIG1faXNDb25zdHJ1Y3RvciA/IENvZGVGb3JDb25z
dHJ1Y3QgOiBDb2RlRm9yQ2FsbCk7CiAgICAgcmV0dXJuIGVycm9yOwogfQorCitib29sIFByb2dy
YW1Db2RlQmxvY2s6OmNhbkNvbXBpbGVXaXRoREZHKCkKK3sKKyAgICByZXR1cm4gREZHOjpjYW5D
b21waWxlUHJvZ3JhbSh0aGlzKTsKK30KKworYm9vbCBFdmFsQ29kZUJsb2NrOjpjYW5Db21waWxl
V2l0aERGRygpCit7CisgICAgcmV0dXJuIERGRzo6Y2FuQ29tcGlsZUV2YWwodGhpcyk7Cit9CisK
K2Jvb2wgRnVuY3Rpb25Db2RlQmxvY2s6OmNhbkNvbXBpbGVXaXRoREZHKCkKK3sKKyAgICBpZiAo
bV9pc0NvbnN0cnVjdG9yKQorICAgICAgICByZXR1cm4gREZHOjpjYW5Db21waWxlRnVuY3Rpb25G
b3JDb25zdHJ1Y3QodGhpcyk7CisgICAgcmV0dXJuIERGRzo6Y2FuQ29tcGlsZUZ1bmN0aW9uRm9y
Q2FsbCh0aGlzKTsKK30KICNlbmRpZgogCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgJKHJldmlzaW9uIDk0NjkxKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCSh3b3JraW5nIGNv
cHkpCkBAIC0zMjcsNiArMzI3LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIEV4ZWN1dGFi
bGVQb29sKiBleGVjdXRhYmxlUG9vbCgpIHsgcmV0dXJuIGdldEpJVENvZGUoKS5nZXRFeGVjdXRh
YmxlUG9vbCgpOyB9CiAgICAgICAgIHZpcnR1YWwgSlNPYmplY3QqIGNvbXBpbGVPcHRpbWl6ZWQo
RXhlY1N0YXRlKiwgU2NvcGVDaGFpbk5vZGUqKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgQ29kZUJs
b2NrKiByZXBsYWNlbWVudCgpID0gMDsKKyAgICAgICAgdmlydHVhbCBib29sIGNhbkNvbXBpbGVX
aXRoREZHKCkgPSAwOwogI2Vsc2UKICAgICAgICAgSklUQ29kZTo6SklUVHlwZSBnZXRKSVRUeXBl
KCkgeyByZXR1cm4gSklUQ29kZTo6QmFzZWxpbmVKSVQ7IH0KICNlbmRpZgpAQCAtMzM0LDYgKzMz
NSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBTY3JpcHRFeGVjdXRhYmxlKiBvd25lckV4
ZWN1dGFibGUoKSBjb25zdCB7IHJldHVybiBtX293bmVyRXhlY3V0YWJsZS5nZXQoKTsgfQogCiAg
ICAgICAgIHZvaWQgc2V0R2xvYmFsRGF0YShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEpIHsgbV9n
bG9iYWxEYXRhID0gZ2xvYmFsRGF0YTsgfQorICAgICAgICBKU0dsb2JhbERhdGEqIGdsb2JhbERh
dGEoKSB7IHJldHVybiBtX2dsb2JhbERhdGE7IH0KIAogICAgICAgICB2b2lkIHNldFRoaXNSZWdp
c3RlcihpbnQgdGhpc1JlZ2lzdGVyKSB7IG1fdGhpc1JlZ2lzdGVyID0gdGhpc1JlZ2lzdGVyOyB9
CiAgICAgICAgIGludCB0aGlzUmVnaXN0ZXIoKSBjb25zdCB7IHJldHVybiBtX3RoaXNSZWdpc3Rl
cjsgfQpAQCAtNzIzLDYgKzcyNSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHByb3RlY3RlZDoK
ICAgICAgICAgdmlydHVhbCBKU09iamVjdCogY29tcGlsZU9wdGltaXplZChFeGVjU3RhdGUqLCBT
Y29wZUNoYWluTm9kZSopOwogICAgICAgICB2aXJ0dWFsIENvZGVCbG9jayogcmVwbGFjZW1lbnQo
KTsKKyAgICAgICAgdmlydHVhbCBib29sIGNhbkNvbXBpbGVXaXRoREZHKCk7CiAjZW5kaWYKICAg
ICB9OwogCkBAIC03NDgsNiArNzUxLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgcHJvdGVjdGVk
OgogICAgICAgICB2aXJ0dWFsIEpTT2JqZWN0KiBjb21waWxlT3B0aW1pemVkKEV4ZWNTdGF0ZSos
IFNjb3BlQ2hhaW5Ob2RlKik7CiAgICAgICAgIHZpcnR1YWwgQ29kZUJsb2NrKiByZXBsYWNlbWVu
dCgpOworICAgICAgICB2aXJ0dWFsIGJvb2wgY2FuQ29tcGlsZVdpdGhERkcoKTsKICNlbmRpZgog
CiAgICAgcHJpdmF0ZToKQEAgLTc3NCw2ICs3NzgsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBw
cm90ZWN0ZWQ6CiAgICAgICAgIHZpcnR1YWwgSlNPYmplY3QqIGNvbXBpbGVPcHRpbWl6ZWQoRXhl
Y1N0YXRlKiwgU2NvcGVDaGFpbk5vZGUqKTsKICAgICAgICAgdmlydHVhbCBDb2RlQmxvY2sqIHJl
cGxhY2VtZW50KCk7CisgICAgICAgIHZpcnR1YWwgYm9vbCBjYW5Db21waWxlV2l0aERGRygpOwog
I2VuZGlmCiAgICAgfTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBh
YmlsaXRpZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Q2FwYWJpbGl0aWVzLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQ2FwYWJpbGl0aWVzLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2MCBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiREZHQ2FwYWJpbGl0aWVzLmgiCisKKyNpbmNsdWRlICJDb2RlQmxv
Y2suaCIKKyNpbmNsdWRlICJJbnRlcnByZXRlci5oIgorCituYW1lc3BhY2UgSlNDIHsgbmFtZXNw
YWNlIERGRyB7CisKK2Jvb2wgY2FuQ29tcGlsZU9wY29kZXMoQ29kZUJsb2NrKiBjb2RlQmxvY2sp
Cit7CisgICAgSW50ZXJwcmV0ZXIqIGludGVycHJldGVyID0gY29kZUJsb2NrLT5nbG9iYWxEYXRh
KCktPmludGVycHJldGVyOworICAgIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbnNCZWdpbiA9IGNv
ZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKTsKKyAgICB1bnNpZ25lZCBpbnN0cnVjdGlv
bkNvdW50ID0gY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5zaXplKCk7CisgICAgCisgICAgZm9y
ICh1bnNpZ25lZCBieXRlY29kZU9mZnNldCA9IDA7IGJ5dGVjb2RlT2Zmc2V0IDwgaW5zdHJ1Y3Rp
b25Db3VudDsgKSB7CisgICAgICAgIHN3aXRjaCAoaW50ZXJwcmV0ZXItPmdldE9wY29kZUlEKGlu
c3RydWN0aW9uc0JlZ2luW2J5dGVjb2RlT2Zmc2V0XS51Lm9wY29kZSkpIHsKKyNkZWZpbmUgREVG
SU5FX09QKG9wY29kZSwgbGVuZ3RoKSAgICAgICAgICAgXAorICAgICAgICBjYXNlIG9wY29kZTog
ICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBpZiAoIWNhbkNvbXBpbGVPcGNv
ZGUob3Bjb2RlKSkgIFwKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7ICAgICAgICAgICAg
ICAgXAorICAgICAgICAgICAgYnl0ZWNvZGVPZmZzZXQgKz0gbGVuZ3RoOyAgICAgICBcCisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgIEZPUl9FQUNIX09QQ09ERV9JRChERUZJTkVfT1Ap
CisjdW5kZWYgREVGSU5FX09QCisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorICAg
IAorICAgIHJldHVybiB0cnVlOworfQorCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6REZHCisKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuaAkocmV2aXNp
b24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmgJKHJl
dmlzaW9uIDApCkBAIC0wLDAgKzEsMTUyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgREZHQ2FwYWJpbGl0aWVzX2gKKyNkZWZpbmUgREZH
Q2FwYWJpbGl0aWVzX2gKKworI2luY2x1ZGUgIkludGVycHJldGVyLmgiCisjaW5jbHVkZSA8d3Rm
L1BsYXRmb3JtLmg+CisKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKKworI2lmIEVO
QUJMRShERkdfSklUKQorLy8gRmFzdCBjaGVjayBmdW5jdGlvbnM7IGlmIHRoZXkgcmV0dXJuIHRy
dWUgaXQgaXMgc3RpbGwgbmVjZXNzYXJ5IHRvCisvLyBjaGVjayBvcGNvZGVzLgoraW5saW5lIGJv
b2wgbWlnaHRDb21waWxlRXZhbChDb2RlQmxvY2sqKSB7IHJldHVybiB0cnVlOyB9CitpbmxpbmUg
Ym9vbCBtaWdodENvbXBpbGVQcm9ncmFtKENvZGVCbG9jayopIHsgcmV0dXJuIHRydWU7IH0KK2lu
bGluZSBib29sIG1pZ2h0Q29tcGlsZUZ1bmN0aW9uRm9yQ2FsbChDb2RlQmxvY2sqKSB7IHJldHVy
biB0cnVlOyB9CitpbmxpbmUgYm9vbCBtaWdodENvbXBpbGVGdW5jdGlvbkZvckNvbnN0cnVjdChD
b2RlQmxvY2sqKSB7IHJldHVybiBmYWxzZTsgfQorCisvLyBPcGNvZGUgY2hlY2tpbmcuCitpbmxp
bmUgYm9vbCBjYW5Db21waWxlT3Bjb2RlKE9wY29kZUlEIG9wY29kZUlEKQoreworICAgIHN3aXRj
aCAob3Bjb2RlSUQpIHsKKyAgICBjYXNlIG9wX2VudGVyOgorICAgIGNhc2Ugb3BfY29udmVydF90
aGlzOgorICAgIGNhc2Ugb3BfYml0YW5kOgorICAgIGNhc2Ugb3BfYml0b3I6CisgICAgY2FzZSBv
cF9iaXR4b3I6CisgICAgY2FzZSBvcF9yc2hpZnQ6CisgICAgY2FzZSBvcF9sc2hpZnQ6CisgICAg
Y2FzZSBvcF91cnNoaWZ0OgorICAgIGNhc2Ugb3BfcHJlX2luYzoKKyAgICBjYXNlIG9wX3Bvc3Rf
aW5jOgorICAgIGNhc2Ugb3BfcHJlX2RlYzoKKyAgICBjYXNlIG9wX3Bvc3RfZGVjOgorICAgIGNh
c2Ugb3BfYWRkOgorICAgIGNhc2Ugb3Bfc3ViOgorICAgIGNhc2Ugb3BfbXVsOgorICAgIGNhc2Ug
b3BfbW9kOgorICAgIGNhc2Ugb3BfZGl2OgorI2lmIEVOQUJMRShERUJVR19XSVRIX0JSRUFLUE9J
TlQpCisgICAgY2FzZSBvcF9kZWJ1ZzoKKyNlbmRpZgorICAgIGNhc2Ugb3BfbW92OgorICAgIGNh
c2Ugb3BfY2hlY2tfaGFzX2luc3RhbmNlOgorICAgIGNhc2Ugb3BfaW5zdGFuY2VvZjoKKyAgICBj
YXNlIG9wX25vdDoKKyAgICBjYXNlIG9wX2xlc3M6CisgICAgY2FzZSBvcF9sZXNzZXE6CisgICAg
Y2FzZSBvcF9ncmVhdGVyOgorICAgIGNhc2Ugb3BfZ3JlYXRlcmVxOgorICAgIGNhc2Ugb3BfZXE6
CisgICAgY2FzZSBvcF9lcV9udWxsOgorICAgIGNhc2Ugb3Bfc3RyaWN0ZXE6CisgICAgY2FzZSBv
cF9uZXE6CisgICAgY2FzZSBvcF9uZXFfbnVsbDoKKyAgICBjYXNlIG9wX25zdHJpY3RlcToKKyAg
ICBjYXNlIG9wX2dldF9ieV92YWw6CisgICAgY2FzZSBvcF9wdXRfYnlfdmFsOgorICAgIGNhc2Ug
b3BfbWV0aG9kX2NoZWNrOgorICAgIGNhc2Ugb3BfZ2V0X2J5X2lkOgorICAgIGNhc2Ugb3BfcHV0
X2J5X2lkOgorICAgIGNhc2Ugb3BfZ2V0X2dsb2JhbF92YXI6CisgICAgY2FzZSBvcF9wdXRfZ2xv
YmFsX3ZhcjoKKyAgICBjYXNlIG9wX2ptcDoKKyAgICBjYXNlIG9wX2xvb3A6CisgICAgY2FzZSBv
cF9qdHJ1ZToKKyAgICBjYXNlIG9wX2pmYWxzZToKKyAgICBjYXNlIG9wX2xvb3BfaWZfdHJ1ZToK
KyAgICBjYXNlIG9wX2xvb3BfaWZfZmFsc2U6CisgICAgY2FzZSBvcF9qZXFfbnVsbDoKKyAgICBj
YXNlIG9wX2puZXFfbnVsbDoKKyAgICBjYXNlIG9wX2psZXNzOgorICAgIGNhc2Ugb3Bfamxlc3Nl
cToKKyAgICBjYXNlIG9wX2pncmVhdGVyOgorICAgIGNhc2Ugb3BfamdyZWF0ZXJlcToKKyAgICBj
YXNlIG9wX2pubGVzczoKKyAgICBjYXNlIG9wX2pubGVzc2VxOgorICAgIGNhc2Ugb3Bfam5ncmVh
dGVyOgorICAgIGNhc2Ugb3Bfam5ncmVhdGVyZXE6CisgICAgY2FzZSBvcF9sb29wX2lmX2xlc3M6
CisgICAgY2FzZSBvcF9sb29wX2lmX2xlc3NlcToKKyAgICBjYXNlIG9wX2xvb3BfaWZfZ3JlYXRl
cjoKKyAgICBjYXNlIG9wX2xvb3BfaWZfZ3JlYXRlcmVxOgorICAgIGNhc2Ugb3BfcmV0OgorICAg
IGNhc2Ugb3BfZW5kOgorICAgIGNhc2Ugb3BfY2FsbDoKKyAgICBjYXNlIG9wX2NvbnN0cnVjdDoK
KyAgICBjYXNlIG9wX2NhbGxfcHV0X3Jlc3VsdDoKKyAgICBjYXNlIG9wX3Jlc29sdmU6CisgICAg
Y2FzZSBvcF9yZXNvbHZlX2Jhc2U6CisgICAgICAgIHJldHVybiB0cnVlOworICAgIGRlZmF1bHQ6
CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9Cit9CisjZWxzZSAvLyBFTkFCTEUoREZHX0pJ
VCkKK2lubGluZSBib29sIG1pZ2h0Q29tcGlsZUV2YWwoQ29kZUJsb2NrKikgeyByZXR1cm4gZmFs
c2U7IH0KK2lubGluZSBib29sIG1pZ2h0Q29tcGlsZVByb2dyYW0oQ29kZUJsb2NrKikgeyByZXR1
cm4gZmFsc2U7IH0KK2lubGluZSBib29sIG1pZ2h0Q29tcGlsZUZ1bmN0aW9uRm9yQ2FsbChDb2Rl
QmxvY2sqKSB7IHJldHVybiBmYWxzZTsgfQoraW5saW5lIGJvb2wgbWlnaHRDb21waWxlRnVuY3Rp
b25Gb3JDb25zdHJ1Y3QoQ29kZUJsb2NrKikgeyByZXR1cm4gZmFsc2U7IH0KK2lubGluZSBib29s
IGNhbkNvbXBpbGVPcGNvZGUoT3Bjb2RlSUQpIHsgcmV0dXJuIGZhbHNlOyB9CisjZW5kaWYgLy8g
RU5BQkxFKERGR19KSVQpCisKK2Jvb2wgY2FuQ29tcGlsZU9wY29kZXMoQ29kZUJsb2NrKik7CisK
K2lubGluZSBib29sIGNhbkNvbXBpbGVFdmFsKENvZGVCbG9jayogY29kZUJsb2NrKQoreworICAg
IHJldHVybiBtaWdodENvbXBpbGVFdmFsKGNvZGVCbG9jaykgJiYgY2FuQ29tcGlsZU9wY29kZXMo
Y29kZUJsb2NrKTsKK30KKworaW5saW5lIGJvb2wgY2FuQ29tcGlsZVByb2dyYW0oQ29kZUJsb2Nr
KiBjb2RlQmxvY2spCit7CisgICAgcmV0dXJuIG1pZ2h0Q29tcGlsZVByb2dyYW0oY29kZUJsb2Nr
KSAmJiBjYW5Db21waWxlT3Bjb2Rlcyhjb2RlQmxvY2spOworfQorCitpbmxpbmUgYm9vbCBjYW5D
b21waWxlRnVuY3Rpb25Gb3JDYWxsKENvZGVCbG9jayogY29kZUJsb2NrKQoreworICAgIHJldHVy
biBtaWdodENvbXBpbGVGdW5jdGlvbkZvckNhbGwoY29kZUJsb2NrKSAmJiBjYW5Db21waWxlT3Bj
b2Rlcyhjb2RlQmxvY2spOworfQorCitpbmxpbmUgYm9vbCBjYW5Db21waWxlRnVuY3Rpb25Gb3JD
b25zdHJ1Y3QoQ29kZUJsb2NrKiBjb2RlQmxvY2spCit7CisgICAgcmV0dXJuIG1pZ2h0Q29tcGls
ZUZ1bmN0aW9uRm9yQ29uc3RydWN0KGNvZGVCbG9jaykgJiYgY2FuQ29tcGlsZU9wY29kZXMoY29k
ZUJsb2NrKTsKK30KKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkRGRworCisjZW5kaWYgLy8gREZH
Q2FwYWJpbGl0aWVzX2gKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAkocmV2aXNp
b24gOTQ2OTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTM2LDYgKzM2LDcgQEAgSlNDOjpNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6U1NF
MkNoZWNrUwogCiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCiAjaW5jbHVkZSAiQ3J5cHRvZ3JhcGhp
Y2FsbHlSYW5kb21OdW1iZXIuaCIKKyNpbmNsdWRlICJERkdOb2RlLmgiIC8vIGZvciBERkdfU1VD
Q0VTU19TVEFUUwogI2luY2x1ZGUgIkludGVycHJldGVyLmgiCiAjaW5jbHVkZSAiSklUSW5saW5l
TWV0aG9kcy5oIgogI2luY2x1ZGUgIkpJVFN0dWJDYWxsLmgiCkBAIC00NSw3ICs0Niw2IEBAIEpT
Qzo6TWFjcm9Bc3NlbWJsZXJYODZDb21tb246OlNTRTJDaGVja1MKICNpbmNsdWRlICJSZXBhdGNo
QnVmZmVyLmgiCiAjaW5jbHVkZSAiUmVzdWx0VHlwZS5oIgogI2luY2x1ZGUgIlNhbXBsaW5nVG9v
bC5oIgotI2luY2x1ZGUgImRmZy9ERkdOb2RlLmgiIC8vIGZvciBERkdfU1VDQ0VTU19TVEFUUwog
CiB1c2luZyBuYW1lc3BhY2Ugc3RkOwogCkBAIC05Niw2ICs5Niw5IEBAIEpJVDo6SklUKEpTR2xv
YmFsRGF0YSogZ2xvYmFsRGF0YSwgQ29kZUIKICNpZiBFTkFCTEUoVElFUkVEX0NPTVBJTEFUSU9O
KQogdm9pZCBKSVQ6OmVtaXRPcHRpbWl6YXRpb25DaGVjayhPcHRpbWl6YXRpb25DaGVja0tpbmQg
a2luZCkKIHsKKyAgICBpZiAoIXNob3VsZEVtaXRQcm9maWxpbmcoKSkKKyAgICAgICAgcmV0dXJu
OworICAgIAogICAgIEp1bXAgc2tpcE9wdGltaXplID0gYnJhbmNoQWRkMzIoU2lnbmVkLCBUcnVz
dGVkSW1tMzIoa2luZCA9PSBMb29wT3B0aW1pemF0aW9uQ2hlY2sgPyAxIDogMzApLCBBYnNvbHV0
ZUFkZHJlc3MoJm1fY29kZUJsb2NrLT5tX2V4ZWN1dGVDb3VudGVyKSk7CiAgICAgSklUU3R1YkNh
bGwgc3R1YkNhbGwodGhpcywga2luZCA9PSBMb29wT3B0aW1pemF0aW9uQ2hlY2sgPyBjdGlfb3B0
aW1pemVfZnJvbV9sb29wIDogY3RpX29wdGltaXplX2Zyb21fcmV0KTsKICAgICBzdHViQ2FsbC5j
YWxsKCk7CkBAIC00OTcsNiArNTAwLDEwIEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZVNsb3dD
YXNlcygpCiAKIEpJVENvZGUgSklUOjpwcml2YXRlQ29tcGlsZShDb2RlUHRyKiBmdW5jdGlvbkVu
dHJ5QXJpdHlDaGVjaykKIHsKKyNpZiBFTkFCTEUoVElFUkVEX0NPTVBJTEFUSU9OKQorICAgIG1f
Y2FuQmVPcHRpbWl6ZWQgPSBtX2NvZGVCbG9jay0+Y2FuQ29tcGlsZVdpdGhERkcoKTsKKyNlbmRp
ZgorICAgIAogICAgIC8vIEp1c3QgYWRkIGEgbGl0dGxlIGJpdCBvZiByYW5kb21uZXNzIHRvIHRo
ZSBjb2RlZ2VuCiAgICAgaWYgKG1fcmFuZG9tR2VuZXJhdG9yLmdldFVpbnQzMigpICYgMSkKICAg
ICAgICAgbm9wKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgJKHJldmlzaW9uIDk0Njkx
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAkod29ya2luZyBjb3B5KQpAQCAt
MTAwNCw2ICsxMDA0LDE0IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIHNhbXBsZUNv
ZGVCbG9jayhDb2RlQmxvY2sqKSB7fQogI2VuZGlmCiAKKyNpZiBFTkFCTEUoVElFUkVEX0NPTVBJ
TEFUSU9OKQorICAgICAgICBib29sIHNob3VsZEVtaXRQcm9maWxpbmcoKSB7IHJldHVybiBtX2Nh
bkJlT3B0aW1pemVkOyB9CisjZWxzZQorICAgICAgICAvLyBFbmFibGVzIHVzZSBvZiB2YWx1ZSBw
cm9maWxlciB3aXRoIHRpZXJlZCBjb21waWxhdGlvbiB0dXJuZWQgb2ZmLAorICAgICAgICAvLyBp
biB3aGljaCBjYXNlIGFsbCBjb2RlIGdldHMgcHJvZmlsZWQuCisgICAgICAgIGJvb2wgc2hvdWxk
RW1pdFByb2ZpbGluZygpIHsgcmV0dXJuIHRydWU7IH0KKyNlbmRpZgorCiAgICAgICAgIEludGVy
cHJldGVyKiBtX2ludGVycHJldGVyOwogICAgICAgICBKU0dsb2JhbERhdGEqIG1fZ2xvYmFsRGF0
YTsKICAgICAgICAgQ29kZUJsb2NrKiBtX2NvZGVCbG9jazsKQEAgLTEwNDMsNiArMTA1MSwxMCBA
QCBuYW1lc3BhY2UgSlNDIHsKICNlbmRpZgogICAgICAgICBXZWFrUmFuZG9tIG1fcmFuZG9tR2Vu
ZXJhdG9yOwogICAgICAgICBzdGF0aWMgQ29kZVB0ciBzdHJpbmdHZXRCeVZhbFN0dWJHZW5lcmF0
b3IoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBFeGVjdXRhYmxlUG9vbCogcG9vbCk7CisgICAg
ICAgIAorI2lmIEVOQUJMRShUSUVSRURfQ09NUElMQVRJT04pCisgICAgICAgIGJvb2wgbV9jYW5C
ZU9wdGltaXplZDsKKyNlbmRpZgogICAgIH0gSklUX0NMQVNTX0FMSUdOTUVOVDsKIAogICAgIGlu
bGluZSB2b2lkIEpJVDo6ZW1pdF9vcF9sb29wKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rp
b24pCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZU1ldGhvZHMuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZU1ldGhvZHMu
aAkocmV2aXNpb24gOTQ2OTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGlu
ZU1ldGhvZHMuaAkod29ya2luZyBjb3B5KQpAQCAtNDQzLDYgKzQ0Myw5IEBAIGlubGluZSB2b2lk
IEpJVDo6ZW1pdEFsbG9jYXRlSlNGdW5jdGlvbigKICNpZiBFTkFCTEUoVkFMVUVfUFJPRklMRVIp
CiBpbmxpbmUgdm9pZCBKSVQ6OmVtaXRWYWx1ZVByb2ZpbGluZ1NpdGUoVmFsdWVQcm9maWxpbmdT
aXRlS2luZCBzaXRlS2luZCkKIHsKKyAgICBpZiAoIXNob3VsZEVtaXRQcm9maWxpbmcoKSkKKyAg
ICAgICAgcmV0dXJuOworICAgIAogICAgIGNvbnN0IFJlZ2lzdGVySUQgdmFsdWUgPSByZWdUMDsK
ICAgICBjb25zdCBSZWdpc3RlcklEIHNjcmF0Y2ggPSByZWdUMzsKICAgICAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>106615</attachid>
            <date>2011-09-07 11:53:44 -0700</date>
            <delta_ts>2011-09-08 12:24:01 -0700</delta_ts>
            <desc>the patch - added a helpful assertion</desc>
            <filename>lessprofile_patch_5.diff</filename>
            <type>text/plain</type>
            <size>21001</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gOTQ2OTEpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzkgQEAK
KzIwMTEtMDktMDYgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KKworICAgICAgICBW
YWx1ZSBwcm9mbGluZyBhbmQgZXhlY3V0aW9uIGNvdW50IHByb2ZpbGluZyBpcyBwZXJmb3JtZWQg
ZXZlbiBmb3IKKyAgICAgICAgY29kZSB0aGF0IGNhbm5vdCBiZSBvcHRpbWl6ZWQKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY3Njk0CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgR2F2aW4gQmFycmFjbG91Z2guCisgICAgICAgIAorICAgICAgICBUaGlzIGlz
IGEgMiUgc3BlZWQtdXAgb24gVjggd2hlbiB0aWVyZWQgY29tcGlsYXRpb24gaXMgZW5hYmxlZC4K
KworICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6Cisg
ICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6UHJvZ3JhbUNv
ZGVCbG9jazo6Y2FuQ29tcGlsZVdpdGhERkcpOgorICAgICAgICAoSlNDOjpFdmFsQ29kZUJsb2Nr
OjpjYW5Db21waWxlV2l0aERGRyk6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uQ29kZUJsb2NrOjpj
YW5Db21waWxlV2l0aERGRyk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmg6CisgICAg
ICAgICogZGZnL0RGR0NhcGFiaWxpdGllcy5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpERkc6
OmNhbkNvbXBpbGVPcGNvZGVzKToKKyAgICAgICAgKiBkZmcvREZHQ2FwYWJpbGl0aWVzLmg6IEFk
ZGVkLgorICAgICAgICAoSlNDOjpERkc6Om1pZ2h0Q29tcGlsZUV2YWwpOgorICAgICAgICAoSlND
OjpERkc6Om1pZ2h0Q29tcGlsZVByb2dyYW0pOgorICAgICAgICAoSlNDOjpERkc6Om1pZ2h0Q29t
cGlsZUZ1bmN0aW9uRm9yQ2FsbCk6CisgICAgICAgIChKU0M6OkRGRzo6bWlnaHRDb21waWxlRnVu
Y3Rpb25Gb3JDb25zdHJ1Y3QpOgorICAgICAgICAoSlNDOjpERkc6OmNhbkNvbXBpbGVPcGNvZGUp
OgorICAgICAgICAoSlNDOjpERkc6OmNhbkNvbXBpbGVFdmFsKToKKyAgICAgICAgKEpTQzo6REZH
OjpjYW5Db21waWxlUHJvZ3JhbSk6CisgICAgICAgIChKU0M6OkRGRzo6Y2FuQ29tcGlsZUZ1bmN0
aW9uRm9yQ2FsbCk6CisgICAgICAgIChKU0M6OkRGRzo6Y2FuQ29tcGlsZUZ1bmN0aW9uRm9yQ29u
c3RydWN0KToKKyAgICAgICAgKiBqaXQvSklULmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0
T3B0aW1pemF0aW9uQ2hlY2spOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlKToK
KyAgICAgICAgKiBqaXQvSklULmg6CisgICAgICAgIChKU0M6OkpJVDo6c2hvdWxkRW1pdFByb2Zp
bGluZyk6CisgICAgICAgICogaml0L0pJVElubGluZU1ldGhvZHMuaDoKKyAgICAgICAgKEpTQzo6
SklUOjplbWl0VmFsdWVQcm9maWxpbmdTaXRlKToKKwogMjAxMS0wOS0wNyAgR2F2aW4gQmFycmFj
bG91Z2ggIDxiYXJyYWNsb3VnaEBhcHBsZS5jb20+CiAKICAgICAgICAgUmVmYWN0b3IgSklUIGNo
ZWNrcyBmb3IgT2JqZWN0VHlwZSBpbnRvIGhlbHBlciBmdW5jdGlvbnMuCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlLmRlZgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNj
cmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmRlZgkocmV2aXNp
b24gOTQ2OTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9q
L0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmRlZgkod29ya2luZyBjb3B5KQpAQCAtNzcs
NiArNzcsNyBAQCBFWFBPUlRTCiAgICAgP2NhbGxASlNDQEBZQT9BVkpTVmFsdWVAMUBQQVZFeGVj
U3RhdGVAMUBWMjFAVzRDYWxsVHlwZUAxQEFCVENhbGxEYXRhQDFAMUFCVkFyZ0xpc3RAMUBAWgog
ICAgID9jYWxsT25NYWluVGhyZWFkQFdURkBAWUFYUDZBWFBBWEBaMEBaCiAgICAgP2NhbGxPbk1h
aW5UaHJlYWRBbmRXYWl0QFdURkBAWUFYUDZBWFBBWEBaMEBaCisgICAgP2NhbkNvbXBpbGVPcGNv
ZGVzQERGR0BKU0NAQFlBX05QQVZDb2RlQmxvY2tAMkBAWgogICAgID9jYW5jZWxDYWxsT25NYWlu
VGhyZWFkQFdURkBAWUFYUDZBWFBBWEBaMEBaCiAgICAgP2NhcGFjaXR5QEhlYXBASlNDQEBRQUVJ
WFoKICAgICA/Y2hhbmdlUHJvdG90eXBlVHJhbnNpdGlvbkBTdHJ1Y3R1cmVASlNDQEBTQVBBVjEy
QEFBVkpTR2xvYmFsRGF0YUAyQFBBVjEyQFZKU1ZhbHVlQDJAQFoKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiA5NDY5MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkp
CkBAIC02MCw2ICs2MCw3IEBACiAJCTBGRDNDODI2MTQxMTVENDAwMEZEODFDQiAvKiBERkdEcml2
ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZE
M0M4MjAxNDExNUNGODAwRkQ4MUNCIC8qIERGR0RyaXZlci5jcHAgKi87IH07CiAJCTBGRDNDODI3
MTQxMTVENEYwMEZEODFDQiAvKiBERkdQcm9wYWdhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkQzQzgyNDE0MTE1RDIyMDBGRDgxQ0IgLyogREZH
UHJvcGFnYXRvci5oICovOyB9OwogCQkwRkQzQzgyODE0MTE1RDRGMDBGRDgxQ0IgLyogREZHRHJp
dmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkQz
QzgyMjE0MTE1RDBFMDBGRDgxQ0IgLyogREZHRHJpdmVyLmggKi87IH07CisJCTBGRDgyRTIxMTQx
NzJDRTMwMDE3OUM5NCAvKiBERkdDYXBhYmlsaXRpZXMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZEODJFMUUxNDE3MkMyRjAwMTc5Qzk0IC8qIERG
R0NhcGFiaWxpdGllcy5jcHAgKi87IH07CiAJCTE0MDAwNjc3MTJBNkY3ODMwMDY0RDEyMyAvKiBP
U0FsbG9jYXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMTQwMDA2NzYxMkE2Rjc4MzAwNjREMTIzIC8qIE9TQWxsb2NhdG9yLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMTQwMDA2OTMxMkE2RjlFMTAw
NjREMTIzIC8qIE9TQWxsb2NhdG9yUG9zaXguY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMTQwMDA2OTIxMkE2RjlFMTAwNjREMTIzIC8qIE9TQWxsb2Nh
dG9yUG9zaXguY3BwICovOyB9OwogCQkxNDA1NjZDNDEwN0VDMjU1MDA1REJDOEQgLyogSlNBUElW
YWx1ZVdyYXBwZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQkMwODk0RDUwRkFGQkEyRDAwMDAxODY1IC8qIEpTQVBJVmFsdWVXcmFwcGVyLmNwcCAq
LzsgfTsKQEAgLTc4Nyw2ICs3ODgsOCBAQAogCQkwRkQzQzgyMjE0MTE1RDBFMDBGRDgxQ0IgLyog
REZHRHJpdmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR0RyaXZlci5o
OyBwYXRoID0gZGZnL0RGR0RyaXZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkw
RkQzQzgyMzE0MTE1RDFBMDBGRDgxQ0IgLyogREZHUHJvcGFnYXRvci5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBERkdQcm9wYWdhdG9yLmNwcDsgcGF0aCA9IGRmZy9E
RkdQcm9wYWdhdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZEM0M4MjQx
NDExNUQyMjAwRkQ4MUNCIC8qIERGR1Byb3BhZ2F0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBuYW1lID0gREZHUHJvcGFnYXRvci5oOyBwYXRoID0gZGZnL0RGR1Byb3BhZ2F0b3IuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEZEODJFMUUxNDE3MkMyRjAwMTc5Qzk0IC8q
IERGR0NhcGFiaWxpdGllcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUg
PSBERkdDYXBhYmlsaXRpZXMuY3BwOyBwYXRoID0gZGZnL0RGR0NhcGFiaWxpdGllcy5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGRDgyRTFGMTQxNzJDMkYwMDE3OUM5NCAvKiBE
RkdDYXBhYmlsaXRpZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHQ2Fw
YWJpbGl0aWVzLmg7IHBhdGggPSBkZmcvREZHQ2FwYWJpbGl0aWVzLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTE0MDAwNjc2MTJBNkY3ODMwMDY0RDEyMyAvKiBPU0FsbG9jYXRvci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBPU0FsbG9jYXRvci5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkxNDAwMDY5MjEyQTZGOUUxMDA2NEQxMjMgLyogT1NBbGxv
Y2F0b3JQb3NpeC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBPU0Fs
bG9jYXRvclBvc2l4LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTQwRDE3RDYw
RThBRDRBOTAwMENEMTdEIC8qIEpTQmFzZVByaXZhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gSlNCYXNlUHJpdmF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtMjE4Nyw2ICsyMTkwLDggQEAKIAkJODZFQzlEQjMxMzI4REY0NDAwMkIyQUQ3IC8qIGRmZyAq
LyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJMEZEODJFMUUx
NDE3MkMyRjAwMTc5Qzk0IC8qIERGR0NhcGFiaWxpdGllcy5jcHAgKi8sCisJCQkJMEZEODJFMUYx
NDE3MkMyRjAwMTc5Qzk0IC8qIERGR0NhcGFiaWxpdGllcy5oICovLAogCQkJCTBGRDNDODI0MTQx
MTVEMjIwMEZEODFDQiAvKiBERkdQcm9wYWdhdG9yLmggKi8sCiAJCQkJMEZEM0M4MjMxNDExNUQx
QTAwRkQ4MUNCIC8qIERGR1Byb3BhZ2F0b3IuY3BwICovLAogCQkJCTBGRDNDODIyMTQxMTVEMEUw
MEZEODFDQiAvKiBERkdEcml2ZXIuaCAqLywKQEAgLTMwNDcsNiArMzA1Miw3IEBACiAJCQlpc2Eg
PSBQQlhTb3VyY2VzQnVpbGRQaGFzZTsKIAkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7
CiAJCQlmaWxlcyA9ICgKKwkJCQkwRkQ4MkUyMTE0MTcyQ0UzMDAxNzlDOTQgLyogREZHQ2FwYWJp
bGl0aWVzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGRDNDODI1MTQxMTVENDAwMEZEODFDQiAv
KiBERkdQcm9wYWdhdG9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGRDNDODI2MTQxMTVENDAw
MEZEODFDQiAvKiBERkdEcml2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZDODE1MTYxNDA1
MTFCNTAwQ0ZBNjAzIC8qIFZUYWJsZVNwZWN0cnVtLmNwcCBpbiBTb3VyY2VzICovLApJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAJKHJldmlzaW9u
IDk0NjkxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJDb2RlQmxvY2suaCIK
IAogI2luY2x1ZGUgIkJ5dGVjb2RlR2VuZXJhdG9yLmgiCisjaW5jbHVkZSAiREZHQ2FwYWJpbGl0
aWVzLmgiCiAjaW5jbHVkZSAiRGVidWdnZXIuaCIKICNpbmNsdWRlICJJbnRlcnByZXRlci5oIgog
I2luY2x1ZGUgIkpJVC5oIgpAQCAtMTkzMCw2ICsxOTMxLDIzIEBAIEpTT2JqZWN0KiBGdW5jdGlv
bkNvZGVCbG9jazo6Y29tcGlsZU9wdGkKICAgICBKU09iamVjdCogZXJyb3IgPSBzdGF0aWNfY2Fz
dDxGdW5jdGlvbkV4ZWN1dGFibGUqPihvd25lckV4ZWN1dGFibGUoKSktPmNvbXBpbGVPcHRpbWl6
ZWRGb3IoZXhlYywgc2NvcGVDaGFpbk5vZGUsIG1faXNDb25zdHJ1Y3RvciA/IENvZGVGb3JDb25z
dHJ1Y3QgOiBDb2RlRm9yQ2FsbCk7CiAgICAgcmV0dXJuIGVycm9yOwogfQorCitib29sIFByb2dy
YW1Db2RlQmxvY2s6OmNhbkNvbXBpbGVXaXRoREZHKCkKK3sKKyAgICByZXR1cm4gREZHOjpjYW5D
b21waWxlUHJvZ3JhbSh0aGlzKTsKK30KKworYm9vbCBFdmFsQ29kZUJsb2NrOjpjYW5Db21waWxl
V2l0aERGRygpCit7CisgICAgcmV0dXJuIERGRzo6Y2FuQ29tcGlsZUV2YWwodGhpcyk7Cit9CisK
K2Jvb2wgRnVuY3Rpb25Db2RlQmxvY2s6OmNhbkNvbXBpbGVXaXRoREZHKCkKK3sKKyAgICBpZiAo
bV9pc0NvbnN0cnVjdG9yKQorICAgICAgICByZXR1cm4gREZHOjpjYW5Db21waWxlRnVuY3Rpb25G
b3JDb25zdHJ1Y3QodGhpcyk7CisgICAgcmV0dXJuIERGRzo6Y2FuQ29tcGlsZUZ1bmN0aW9uRm9y
Q2FsbCh0aGlzKTsKK30KICNlbmRpZgogCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgJKHJldmlzaW9uIDk0NjkxKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCSh3b3JraW5nIGNv
cHkpCkBAIC0zMjcsNiArMzI3LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIEV4ZWN1dGFi
bGVQb29sKiBleGVjdXRhYmxlUG9vbCgpIHsgcmV0dXJuIGdldEpJVENvZGUoKS5nZXRFeGVjdXRh
YmxlUG9vbCgpOyB9CiAgICAgICAgIHZpcnR1YWwgSlNPYmplY3QqIGNvbXBpbGVPcHRpbWl6ZWQo
RXhlY1N0YXRlKiwgU2NvcGVDaGFpbk5vZGUqKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgQ29kZUJs
b2NrKiByZXBsYWNlbWVudCgpID0gMDsKKyAgICAgICAgdmlydHVhbCBib29sIGNhbkNvbXBpbGVX
aXRoREZHKCkgPSAwOwogI2Vsc2UKICAgICAgICAgSklUQ29kZTo6SklUVHlwZSBnZXRKSVRUeXBl
KCkgeyByZXR1cm4gSklUQ29kZTo6QmFzZWxpbmVKSVQ7IH0KICNlbmRpZgpAQCAtMzM0LDYgKzMz
NSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBTY3JpcHRFeGVjdXRhYmxlKiBvd25lckV4
ZWN1dGFibGUoKSBjb25zdCB7IHJldHVybiBtX293bmVyRXhlY3V0YWJsZS5nZXQoKTsgfQogCiAg
ICAgICAgIHZvaWQgc2V0R2xvYmFsRGF0YShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEpIHsgbV9n
bG9iYWxEYXRhID0gZ2xvYmFsRGF0YTsgfQorICAgICAgICBKU0dsb2JhbERhdGEqIGdsb2JhbERh
dGEoKSB7IHJldHVybiBtX2dsb2JhbERhdGE7IH0KIAogICAgICAgICB2b2lkIHNldFRoaXNSZWdp
c3RlcihpbnQgdGhpc1JlZ2lzdGVyKSB7IG1fdGhpc1JlZ2lzdGVyID0gdGhpc1JlZ2lzdGVyOyB9
CiAgICAgICAgIGludCB0aGlzUmVnaXN0ZXIoKSBjb25zdCB7IHJldHVybiBtX3RoaXNSZWdpc3Rl
cjsgfQpAQCAtNzIzLDYgKzcyNSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHByb3RlY3RlZDoK
ICAgICAgICAgdmlydHVhbCBKU09iamVjdCogY29tcGlsZU9wdGltaXplZChFeGVjU3RhdGUqLCBT
Y29wZUNoYWluTm9kZSopOwogICAgICAgICB2aXJ0dWFsIENvZGVCbG9jayogcmVwbGFjZW1lbnQo
KTsKKyAgICAgICAgdmlydHVhbCBib29sIGNhbkNvbXBpbGVXaXRoREZHKCk7CiAjZW5kaWYKICAg
ICB9OwogCkBAIC03NDgsNiArNzUxLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgcHJvdGVjdGVk
OgogICAgICAgICB2aXJ0dWFsIEpTT2JqZWN0KiBjb21waWxlT3B0aW1pemVkKEV4ZWNTdGF0ZSos
IFNjb3BlQ2hhaW5Ob2RlKik7CiAgICAgICAgIHZpcnR1YWwgQ29kZUJsb2NrKiByZXBsYWNlbWVu
dCgpOworICAgICAgICB2aXJ0dWFsIGJvb2wgY2FuQ29tcGlsZVdpdGhERkcoKTsKICNlbmRpZgog
CiAgICAgcHJpdmF0ZToKQEAgLTc3NCw2ICs3NzgsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBw
cm90ZWN0ZWQ6CiAgICAgICAgIHZpcnR1YWwgSlNPYmplY3QqIGNvbXBpbGVPcHRpbWl6ZWQoRXhl
Y1N0YXRlKiwgU2NvcGVDaGFpbk5vZGUqKTsKICAgICAgICAgdmlydHVhbCBDb2RlQmxvY2sqIHJl
cGxhY2VtZW50KCk7CisgICAgICAgIHZpcnR1YWwgYm9vbCBjYW5Db21waWxlV2l0aERGRygpOwog
I2VuZGlmCiAgICAgfTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRl
Q29kZVBhcnNlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdCeXRlQ29kZVBhcnNlci5jcHAJKHJldmlzaW9uIDk0NjkxKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5LDYg
KzI5LDcgQEAKICNpZiBFTkFCTEUoREZHX0pJVCkKIAogI2luY2x1ZGUgIkRGR0FsaWFzVHJhY2tl
ci5oIgorI2luY2x1ZGUgIkRGR0NhcGFiaWxpdGllcy5oIgogI2luY2x1ZGUgIkRGR1Njb3JlQm9h
cmQuaCIKICNpbmNsdWRlICJDb2RlQmxvY2suaCIKIApAQCAtNTk4LDcgKzU5OSw4IEBAIGJvb2wg
Qnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQKICAgICAgICAgCiAgICAgICAgIC8v
IFN3aXRjaCBvbiB0aGUgY3VycmVudCBieXRlY29kZSBvcGNvZGUuCiAgICAgICAgIEluc3RydWN0
aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24gPSBpbnN0cnVjdGlvbnNCZWdpbiArIG1fY3VycmVudElu
ZGV4OwotICAgICAgICBzd2l0Y2ggKGludGVycHJldGVyLT5nZXRPcGNvZGVJRChjdXJyZW50SW5z
dHJ1Y3Rpb24tPnUub3Bjb2RlKSkgeworICAgICAgICBPcGNvZGVJRCBvcGNvZGVJRCA9IGludGVy
cHJldGVyLT5nZXRPcGNvZGVJRChjdXJyZW50SW5zdHJ1Y3Rpb24tPnUub3Bjb2RlKTsKKyAgICAg
ICAgc3dpdGNoIChvcGNvZGVJRCkgewogCiAgICAgICAgIC8vID09PSBGdW5jdGlvbiBlbnRyeSBv
cGNvZGVzID09PQogCkBAIC0xMjA4LDggKzEyMTAsMTEgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6
cGFyc2VCbG9jayh1bnNpZ25lZAogCiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAvLyBQ
YXJzZSBmYWlsZWQhCisgICAgICAgICAgICBBU1NFUlQoIWNhbkNvbXBpbGVPcGNvZGUob3Bjb2Rl
SUQpKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQorICAgICAgICAKKyAg
ICAgICAgQVNTRVJUKGNhbkNvbXBpbGVPcGNvZGUob3Bjb2RlSUQpKTsKICAgICB9CiB9CiAKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAJKHJl
dmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5j
cHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkRG
R0NhcGFiaWxpdGllcy5oIgorCisjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCisjaW5jbHVkZSAiSW50
ZXJwcmV0ZXIuaCIKKworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgeworCitib29sIGNh
bkNvbXBpbGVPcGNvZGVzKENvZGVCbG9jayogY29kZUJsb2NrKQoreworICAgIEludGVycHJldGVy
KiBpbnRlcnByZXRlciA9IGNvZGVCbG9jay0+Z2xvYmFsRGF0YSgpLT5pbnRlcnByZXRlcjsKKyAg
ICBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb25zQmVnaW4gPSBjb2RlQmxvY2stPmluc3RydWN0aW9u
cygpLmJlZ2luKCk7CisgICAgdW5zaWduZWQgaW5zdHJ1Y3Rpb25Db3VudCA9IGNvZGVCbG9jay0+
aW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpOworICAgIAorICAgIGZvciAodW5zaWduZWQgYnl0ZWNvZGVP
ZmZzZXQgPSAwOyBieXRlY29kZU9mZnNldCA8IGluc3RydWN0aW9uQ291bnQ7ICkgeworICAgICAg
ICBzd2l0Y2ggKGludGVycHJldGVyLT5nZXRPcGNvZGVJRChpbnN0cnVjdGlvbnNCZWdpbltieXRl
Y29kZU9mZnNldF0udS5vcGNvZGUpKSB7CisjZGVmaW5lIERFRklORV9PUChvcGNvZGUsIGxlbmd0
aCkgICAgICAgICAgIFwKKyAgICAgICAgY2FzZSBvcGNvZGU6ICAgICAgICAgICAgICAgICAgICAg
ICAgXAorICAgICAgICAgICAgaWYgKCFjYW5Db21waWxlT3Bjb2RlKG9wY29kZSkpICBcCisgICAg
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOyAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIGJ5
dGVjb2RlT2Zmc2V0ICs9IGxlbmd0aDsgICAgICAgXAorICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICBGT1JfRUFDSF9PUENPREVfSUQoREVGSU5FX09QKQorI3VuZGVmIERFRklORV9PUAor
ICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICByZXR1cm4gdHJ1ZTsK
K30KKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkRGRworCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDE1MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisj
aWZuZGVmIERGR0NhcGFiaWxpdGllc19oCisjZGVmaW5lIERGR0NhcGFiaWxpdGllc19oCisKKyNp
bmNsdWRlICJJbnRlcnByZXRlci5oIgorI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgorCituYW1l
c3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CisKKyNpZiBFTkFCTEUoREZHX0pJVCkKKy8vIEZh
c3QgY2hlY2sgZnVuY3Rpb25zOyBpZiB0aGV5IHJldHVybiB0cnVlIGl0IGlzIHN0aWxsIG5lY2Vz
c2FyeSB0bworLy8gY2hlY2sgb3Bjb2Rlcy4KK2lubGluZSBib29sIG1pZ2h0Q29tcGlsZUV2YWwo
Q29kZUJsb2NrKikgeyByZXR1cm4gdHJ1ZTsgfQoraW5saW5lIGJvb2wgbWlnaHRDb21waWxlUHJv
Z3JhbShDb2RlQmxvY2sqKSB7IHJldHVybiB0cnVlOyB9CitpbmxpbmUgYm9vbCBtaWdodENvbXBp
bGVGdW5jdGlvbkZvckNhbGwoQ29kZUJsb2NrKikgeyByZXR1cm4gdHJ1ZTsgfQoraW5saW5lIGJv
b2wgbWlnaHRDb21waWxlRnVuY3Rpb25Gb3JDb25zdHJ1Y3QoQ29kZUJsb2NrKikgeyByZXR1cm4g
ZmFsc2U7IH0KKworLy8gT3Bjb2RlIGNoZWNraW5nLgoraW5saW5lIGJvb2wgY2FuQ29tcGlsZU9w
Y29kZShPcGNvZGVJRCBvcGNvZGVJRCkKK3sKKyAgICBzd2l0Y2ggKG9wY29kZUlEKSB7CisgICAg
Y2FzZSBvcF9lbnRlcjoKKyAgICBjYXNlIG9wX2NvbnZlcnRfdGhpczoKKyAgICBjYXNlIG9wX2Jp
dGFuZDoKKyAgICBjYXNlIG9wX2JpdG9yOgorICAgIGNhc2Ugb3BfYml0eG9yOgorICAgIGNhc2Ug
b3BfcnNoaWZ0OgorICAgIGNhc2Ugb3BfbHNoaWZ0OgorICAgIGNhc2Ugb3BfdXJzaGlmdDoKKyAg
ICBjYXNlIG9wX3ByZV9pbmM6CisgICAgY2FzZSBvcF9wb3N0X2luYzoKKyAgICBjYXNlIG9wX3By
ZV9kZWM6CisgICAgY2FzZSBvcF9wb3N0X2RlYzoKKyAgICBjYXNlIG9wX2FkZDoKKyAgICBjYXNl
IG9wX3N1YjoKKyAgICBjYXNlIG9wX211bDoKKyAgICBjYXNlIG9wX21vZDoKKyAgICBjYXNlIG9w
X2RpdjoKKyNpZiBFTkFCTEUoREVCVUdfV0lUSF9CUkVBS1BPSU5UKQorICAgIGNhc2Ugb3BfZGVi
dWc6CisjZW5kaWYKKyAgICBjYXNlIG9wX21vdjoKKyAgICBjYXNlIG9wX2NoZWNrX2hhc19pbnN0
YW5jZToKKyAgICBjYXNlIG9wX2luc3RhbmNlb2Y6CisgICAgY2FzZSBvcF9ub3Q6CisgICAgY2Fz
ZSBvcF9sZXNzOgorICAgIGNhc2Ugb3BfbGVzc2VxOgorICAgIGNhc2Ugb3BfZ3JlYXRlcjoKKyAg
ICBjYXNlIG9wX2dyZWF0ZXJlcToKKyAgICBjYXNlIG9wX2VxOgorICAgIGNhc2Ugb3BfZXFfbnVs
bDoKKyAgICBjYXNlIG9wX3N0cmljdGVxOgorICAgIGNhc2Ugb3BfbmVxOgorICAgIGNhc2Ugb3Bf
bmVxX251bGw6CisgICAgY2FzZSBvcF9uc3RyaWN0ZXE6CisgICAgY2FzZSBvcF9nZXRfYnlfdmFs
OgorICAgIGNhc2Ugb3BfcHV0X2J5X3ZhbDoKKyAgICBjYXNlIG9wX21ldGhvZF9jaGVjazoKKyAg
ICBjYXNlIG9wX2dldF9ieV9pZDoKKyAgICBjYXNlIG9wX3B1dF9ieV9pZDoKKyAgICBjYXNlIG9w
X2dldF9nbG9iYWxfdmFyOgorICAgIGNhc2Ugb3BfcHV0X2dsb2JhbF92YXI6CisgICAgY2FzZSBv
cF9qbXA6CisgICAgY2FzZSBvcF9sb29wOgorICAgIGNhc2Ugb3BfanRydWU6CisgICAgY2FzZSBv
cF9qZmFsc2U6CisgICAgY2FzZSBvcF9sb29wX2lmX3RydWU6CisgICAgY2FzZSBvcF9sb29wX2lm
X2ZhbHNlOgorICAgIGNhc2Ugb3BfamVxX251bGw6CisgICAgY2FzZSBvcF9qbmVxX251bGw6Cisg
ICAgY2FzZSBvcF9qbGVzczoKKyAgICBjYXNlIG9wX2psZXNzZXE6CisgICAgY2FzZSBvcF9qZ3Jl
YXRlcjoKKyAgICBjYXNlIG9wX2pncmVhdGVyZXE6CisgICAgY2FzZSBvcF9qbmxlc3M6CisgICAg
Y2FzZSBvcF9qbmxlc3NlcToKKyAgICBjYXNlIG9wX2puZ3JlYXRlcjoKKyAgICBjYXNlIG9wX2pu
Z3JlYXRlcmVxOgorICAgIGNhc2Ugb3BfbG9vcF9pZl9sZXNzOgorICAgIGNhc2Ugb3BfbG9vcF9p
Zl9sZXNzZXE6CisgICAgY2FzZSBvcF9sb29wX2lmX2dyZWF0ZXI6CisgICAgY2FzZSBvcF9sb29w
X2lmX2dyZWF0ZXJlcToKKyAgICBjYXNlIG9wX3JldDoKKyAgICBjYXNlIG9wX2VuZDoKKyAgICBj
YXNlIG9wX2NhbGw6CisgICAgY2FzZSBvcF9jb25zdHJ1Y3Q6CisgICAgY2FzZSBvcF9jYWxsX3B1
dF9yZXN1bHQ6CisgICAgY2FzZSBvcF9yZXNvbHZlOgorICAgIGNhc2Ugb3BfcmVzb2x2ZV9iYXNl
OgorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgfQorfQorI2Vsc2UgLy8gRU5BQkxFKERGR19KSVQpCitpbmxpbmUgYm9vbCBtaWdo
dENvbXBpbGVFdmFsKENvZGVCbG9jayopIHsgcmV0dXJuIGZhbHNlOyB9CitpbmxpbmUgYm9vbCBt
aWdodENvbXBpbGVQcm9ncmFtKENvZGVCbG9jayopIHsgcmV0dXJuIGZhbHNlOyB9CitpbmxpbmUg
Ym9vbCBtaWdodENvbXBpbGVGdW5jdGlvbkZvckNhbGwoQ29kZUJsb2NrKikgeyByZXR1cm4gZmFs
c2U7IH0KK2lubGluZSBib29sIG1pZ2h0Q29tcGlsZUZ1bmN0aW9uRm9yQ29uc3RydWN0KENvZGVC
bG9jayopIHsgcmV0dXJuIGZhbHNlOyB9CitpbmxpbmUgYm9vbCBjYW5Db21waWxlT3Bjb2RlKE9w
Y29kZUlEKSB7IHJldHVybiBmYWxzZTsgfQorI2VuZGlmIC8vIEVOQUJMRShERkdfSklUKQorCiti
b29sIGNhbkNvbXBpbGVPcGNvZGVzKENvZGVCbG9jayopOworCitpbmxpbmUgYm9vbCBjYW5Db21w
aWxlRXZhbChDb2RlQmxvY2sqIGNvZGVCbG9jaykKK3sKKyAgICByZXR1cm4gbWlnaHRDb21waWxl
RXZhbChjb2RlQmxvY2spICYmIGNhbkNvbXBpbGVPcGNvZGVzKGNvZGVCbG9jayk7Cit9CisKK2lu
bGluZSBib29sIGNhbkNvbXBpbGVQcm9ncmFtKENvZGVCbG9jayogY29kZUJsb2NrKQoreworICAg
IHJldHVybiBtaWdodENvbXBpbGVQcm9ncmFtKGNvZGVCbG9jaykgJiYgY2FuQ29tcGlsZU9wY29k
ZXMoY29kZUJsb2NrKTsKK30KKworaW5saW5lIGJvb2wgY2FuQ29tcGlsZUZ1bmN0aW9uRm9yQ2Fs
bChDb2RlQmxvY2sqIGNvZGVCbG9jaykKK3sKKyAgICByZXR1cm4gbWlnaHRDb21waWxlRnVuY3Rp
b25Gb3JDYWxsKGNvZGVCbG9jaykgJiYgY2FuQ29tcGlsZU9wY29kZXMoY29kZUJsb2NrKTsKK30K
KworaW5saW5lIGJvb2wgY2FuQ29tcGlsZUZ1bmN0aW9uRm9yQ29uc3RydWN0KENvZGVCbG9jayog
Y29kZUJsb2NrKQoreworICAgIHJldHVybiBtaWdodENvbXBpbGVGdW5jdGlvbkZvckNvbnN0cnVj
dChjb2RlQmxvY2spICYmIGNhbkNvbXBpbGVPcGNvZGVzKGNvZGVCbG9jayk7Cit9CisKK30gfSAv
LyBuYW1lc3BhY2UgSlNDOjpERkcKKworI2VuZGlmIC8vIERGR0NhcGFiaWxpdGllc19oCisKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAJKHJldmlzaW9uIDk0NjkxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw2ICszNiw3
IEBAIEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZDb21tb246OlNTRTJDaGVja1MKIAogI2luY2x1ZGUg
IkNvZGVCbG9jay5oIgogI2luY2x1ZGUgIkNyeXB0b2dyYXBoaWNhbGx5UmFuZG9tTnVtYmVyLmgi
CisjaW5jbHVkZSAiREZHTm9kZS5oIiAvLyBmb3IgREZHX1NVQ0NFU1NfU1RBVFMKICNpbmNsdWRl
ICJJbnRlcnByZXRlci5oIgogI2luY2x1ZGUgIkpJVElubGluZU1ldGhvZHMuaCIKICNpbmNsdWRl
ICJKSVRTdHViQ2FsbC5oIgpAQCAtNDUsNyArNDYsNiBAQCBKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2
Q29tbW9uOjpTU0UyQ2hlY2tTCiAjaW5jbHVkZSAiUmVwYXRjaEJ1ZmZlci5oIgogI2luY2x1ZGUg
IlJlc3VsdFR5cGUuaCIKICNpbmNsdWRlICJTYW1wbGluZ1Rvb2wuaCIKLSNpbmNsdWRlICJkZmcv
REZHTm9kZS5oIiAvLyBmb3IgREZHX1NVQ0NFU1NfU1RBVFMKIAogdXNpbmcgbmFtZXNwYWNlIHN0
ZDsKIApAQCAtOTYsNiArOTYsOSBAQCBKSVQ6OkpJVChKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEs
IENvZGVCCiAjaWYgRU5BQkxFKFRJRVJFRF9DT01QSUxBVElPTikKIHZvaWQgSklUOjplbWl0T3B0
aW1pemF0aW9uQ2hlY2soT3B0aW1pemF0aW9uQ2hlY2tLaW5kIGtpbmQpCiB7CisgICAgaWYgKCFz
aG91bGRFbWl0UHJvZmlsaW5nKCkpCisgICAgICAgIHJldHVybjsKKyAgICAKICAgICBKdW1wIHNr
aXBPcHRpbWl6ZSA9IGJyYW5jaEFkZDMyKFNpZ25lZCwgVHJ1c3RlZEltbTMyKGtpbmQgPT0gTG9v
cE9wdGltaXphdGlvbkNoZWNrID8gMSA6IDMwKSwgQWJzb2x1dGVBZGRyZXNzKCZtX2NvZGVCbG9j
ay0+bV9leGVjdXRlQ291bnRlcikpOwogICAgIEpJVFN0dWJDYWxsIHN0dWJDYWxsKHRoaXMsIGtp
bmQgPT0gTG9vcE9wdGltaXphdGlvbkNoZWNrID8gY3RpX29wdGltaXplX2Zyb21fbG9vcCA6IGN0
aV9vcHRpbWl6ZV9mcm9tX3JldCk7CiAgICAgc3R1YkNhbGwuY2FsbCgpOwpAQCAtNDk3LDYgKzUw
MCwxMCBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVTbG93Q2FzZXMoKQogCiBKSVRDb2RlIEpJ
VDo6cHJpdmF0ZUNvbXBpbGUoQ29kZVB0ciogZnVuY3Rpb25FbnRyeUFyaXR5Q2hlY2spCiB7Cisj
aWYgRU5BQkxFKFRJRVJFRF9DT01QSUxBVElPTikKKyAgICBtX2NhbkJlT3B0aW1pemVkID0gbV9j
b2RlQmxvY2stPmNhbkNvbXBpbGVXaXRoREZHKCk7CisjZW5kaWYKKyAgICAKICAgICAvLyBKdXN0
IGFkZCBhIGxpdHRsZSBiaXQgb2YgcmFuZG9tbmVzcyB0byB0aGUgY29kZWdlbgogICAgIGlmICht
X3JhbmRvbUdlbmVyYXRvci5nZXRVaW50MzIoKSAmIDEpCiAgICAgICAgIG5vcCgpOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVC5oCShyZXZpc2lvbiA5NDY5MSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklULmgJKHdvcmtpbmcgY29weSkKQEAgLTEwMDQsNiArMTAwNCwxNCBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBzYW1wbGVDb2RlQmxvY2soQ29kZUJsb2NrKikg
e30KICNlbmRpZgogCisjaWYgRU5BQkxFKFRJRVJFRF9DT01QSUxBVElPTikKKyAgICAgICAgYm9v
bCBzaG91bGRFbWl0UHJvZmlsaW5nKCkgeyByZXR1cm4gbV9jYW5CZU9wdGltaXplZDsgfQorI2Vs
c2UKKyAgICAgICAgLy8gRW5hYmxlcyB1c2Ugb2YgdmFsdWUgcHJvZmlsZXIgd2l0aCB0aWVyZWQg
Y29tcGlsYXRpb24gdHVybmVkIG9mZiwKKyAgICAgICAgLy8gaW4gd2hpY2ggY2FzZSBhbGwgY29k
ZSBnZXRzIHByb2ZpbGVkLgorICAgICAgICBib29sIHNob3VsZEVtaXRQcm9maWxpbmcoKSB7IHJl
dHVybiB0cnVlOyB9CisjZW5kaWYKKwogICAgICAgICBJbnRlcnByZXRlciogbV9pbnRlcnByZXRl
cjsKICAgICAgICAgSlNHbG9iYWxEYXRhKiBtX2dsb2JhbERhdGE7CiAgICAgICAgIENvZGVCbG9j
ayogbV9jb2RlQmxvY2s7CkBAIC0xMDQzLDYgKzEwNTEsMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAj
ZW5kaWYKICAgICAgICAgV2Vha1JhbmRvbSBtX3JhbmRvbUdlbmVyYXRvcjsKICAgICAgICAgc3Rh
dGljIENvZGVQdHIgc3RyaW5nR2V0QnlWYWxTdHViR2VuZXJhdG9yKEpTR2xvYmFsRGF0YSogZ2xv
YmFsRGF0YSwgRXhlY3V0YWJsZVBvb2wqIHBvb2wpOworICAgICAgICAKKyNpZiBFTkFCTEUoVElF
UkVEX0NPTVBJTEFUSU9OKQorICAgICAgICBib29sIG1fY2FuQmVPcHRpbWl6ZWQ7CisjZW5kaWYK
ICAgICB9IEpJVF9DTEFTU19BTElHTk1FTlQ7CiAKICAgICBpbmxpbmUgdm9pZCBKSVQ6OmVtaXRf
b3BfbG9vcChJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVNZXRob2RzLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVNZXRob2RzLmgJKHJldmlzaW9uIDk0NjkxKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVNZXRob2RzLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTQ0Myw2ICs0NDMsOSBAQCBpbmxpbmUgdm9pZCBKSVQ6OmVtaXRBbGxvY2F0ZUpT
RnVuY3Rpb24oCiAjaWYgRU5BQkxFKFZBTFVFX1BST0ZJTEVSKQogaW5saW5lIHZvaWQgSklUOjpl
bWl0VmFsdWVQcm9maWxpbmdTaXRlKFZhbHVlUHJvZmlsaW5nU2l0ZUtpbmQgc2l0ZUtpbmQpCiB7
CisgICAgaWYgKCFzaG91bGRFbWl0UHJvZmlsaW5nKCkpCisgICAgICAgIHJldHVybjsKKyAgICAK
ICAgICBjb25zdCBSZWdpc3RlcklEIHZhbHVlID0gcmVnVDA7CiAgICAgY29uc3QgUmVnaXN0ZXJJ
RCBzY3JhdGNoID0gcmVnVDM7CiAgICAgCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>106772</attachid>
            <date>2011-09-08 12:24:01 -0700</date>
            <delta_ts>2011-09-08 14:37:11 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>lessprofile_patch_6.diff</filename>
            <type>text/plain</type>
            <size>20237</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gOTQ3NzcpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzkgQEAK
KzIwMTEtMDktMDYgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KKworICAgICAgICBW
YWx1ZSBwcm9mbGluZyBhbmQgZXhlY3V0aW9uIGNvdW50IHByb2ZpbGluZyBpcyBwZXJmb3JtZWQg
ZXZlbiBmb3IKKyAgICAgICAgY29kZSB0aGF0IGNhbm5vdCBiZSBvcHRpbWl6ZWQKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY3Njk0CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgR2F2aW4gQmFycmFjbG91Z2guCisgICAgICAgIAorICAgICAgICBUaGlzIGlz
IGEgMiUgc3BlZWQtdXAgb24gVjggd2hlbiB0aWVyZWQgY29tcGlsYXRpb24gaXMgZW5hYmxlZC4K
KworICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6Cisg
ICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6UHJvZ3JhbUNv
ZGVCbG9jazo6Y2FuQ29tcGlsZVdpdGhERkcpOgorICAgICAgICAoSlNDOjpFdmFsQ29kZUJsb2Nr
OjpjYW5Db21waWxlV2l0aERGRyk6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uQ29kZUJsb2NrOjpj
YW5Db21waWxlV2l0aERGRyk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmg6CisgICAg
ICAgICogZGZnL0RGR0NhcGFiaWxpdGllcy5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpERkc6
OmNhbkNvbXBpbGVPcGNvZGVzKToKKyAgICAgICAgKiBkZmcvREZHQ2FwYWJpbGl0aWVzLmg6IEFk
ZGVkLgorICAgICAgICAoSlNDOjpERkc6Om1pZ2h0Q29tcGlsZUV2YWwpOgorICAgICAgICAoSlND
OjpERkc6Om1pZ2h0Q29tcGlsZVByb2dyYW0pOgorICAgICAgICAoSlNDOjpERkc6Om1pZ2h0Q29t
cGlsZUZ1bmN0aW9uRm9yQ2FsbCk6CisgICAgICAgIChKU0M6OkRGRzo6bWlnaHRDb21waWxlRnVu
Y3Rpb25Gb3JDb25zdHJ1Y3QpOgorICAgICAgICAoSlNDOjpERkc6OmNhbkNvbXBpbGVPcGNvZGUp
OgorICAgICAgICAoSlNDOjpERkc6OmNhbkNvbXBpbGVFdmFsKToKKyAgICAgICAgKEpTQzo6REZH
OjpjYW5Db21waWxlUHJvZ3JhbSk6CisgICAgICAgIChKU0M6OkRGRzo6Y2FuQ29tcGlsZUZ1bmN0
aW9uRm9yQ2FsbCk6CisgICAgICAgIChKU0M6OkRGRzo6Y2FuQ29tcGlsZUZ1bmN0aW9uRm9yQ29u
c3RydWN0KToKKyAgICAgICAgKiBqaXQvSklULmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0
T3B0aW1pemF0aW9uQ2hlY2spOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlKToK
KyAgICAgICAgKiBqaXQvSklULmg6CisgICAgICAgIChKU0M6OkpJVDo6c2hvdWxkRW1pdFByb2Zp
bGluZyk6CisgICAgICAgICogaml0L0pJVElubGluZU1ldGhvZHMuaDoKKyAgICAgICAgKEpTQzo6
SklUOjplbWl0VmFsdWVQcm9maWxpbmdTaXRlKToKKwogMjAxMS0wOS0wOCAgTWFyayBIYWhuZW5i
ZXJnICA8bWhhaG5lbmJlcmdAYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSBnZXRVSW50MzIg
ZnJvbSBKU0NlbGwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiA5
NDc3NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC02MCw2ICs2MCw3IEBACiAJCTBGRDND
ODI2MTQxMTVENDAwMEZEODFDQiAvKiBERkdEcml2ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZEM0M4MjAxNDExNUNGODAwRkQ4MUNCIC8qIERG
R0RyaXZlci5jcHAgKi87IH07CiAJCTBGRDNDODI3MTQxMTVENEYwMEZEODFDQiAvKiBERkdQcm9w
YWdhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
RkQzQzgyNDE0MTE1RDIyMDBGRDgxQ0IgLyogREZHUHJvcGFnYXRvci5oICovOyB9OwogCQkwRkQz
QzgyODE0MTE1RDRGMDBGRDgxQ0IgLyogREZHRHJpdmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkQzQzgyMjE0MTE1RDBFMDBGRDgxQ0IgLyogREZH
RHJpdmVyLmggKi87IH07CisJCTBGRDgyRTIxMTQxNzJDRTMwMDE3OUM5NCAvKiBERkdDYXBhYmls
aXRpZXMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MEZEODJFMUUxNDE3MkMyRjAwMTc5Qzk0IC8qIERGR0NhcGFiaWxpdGllcy5jcHAgKi87IH07CiAJ
CTE0MDAwNjc3MTJBNkY3ODMwMDY0RDEyMyAvKiBPU0FsbG9jYXRvci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTQwMDA2NzYxMkE2Rjc4MzAwNjREMTIz
IC8qIE9TQWxsb2NhdG9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJMTQwMDA2OTMxMkE2RjlFMTAwNjREMTIzIC8qIE9TQWxsb2NhdG9yUG9zaXgu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTQwMDA2
OTIxMkE2RjlFMTAwNjREMTIzIC8qIE9TQWxsb2NhdG9yUG9zaXguY3BwICovOyB9OwogCQkxNDA1
NjZDNDEwN0VDMjU1MDA1REJDOEQgLyogSlNBUElWYWx1ZVdyYXBwZXIuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMwODk0RDUwRkFGQkEyRDAwMDAx
ODY1IC8qIEpTQVBJVmFsdWVXcmFwcGVyLmNwcCAqLzsgfTsKQEAgLTc4NSw2ICs3ODYsOCBAQAog
CQkwRkQzQzgyMjE0MTE1RDBFMDBGRDgxQ0IgLyogREZHRHJpdmVyLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgbmFtZSA9IERGR0RyaXZlci5oOyBwYXRoID0gZGZnL0RGR0RyaXZlci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkQzQzgyMzE0MTE1RDFBMDBGRDgxQ0IgLyog
REZHUHJvcGFnYXRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBE
RkdQcm9wYWdhdG9yLmNwcDsgcGF0aCA9IGRmZy9ERkdQcm9wYWdhdG9yLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZEM0M4MjQxNDExNUQyMjAwRkQ4MUNCIC8qIERGR1Byb3Bh
Z2F0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHUHJvcGFnYXRvci5o
OyBwYXRoID0gZGZnL0RGR1Byb3BhZ2F0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMEZEODJFMUUxNDE3MkMyRjAwMTc5Qzk0IC8qIERGR0NhcGFiaWxpdGllcy5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBERkdDYXBhYmlsaXRpZXMuY3BwOyBwYXRo
ID0gZGZnL0RGR0NhcGFiaWxpdGllcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTBGRDgyRTFGMTQxNzJDMkYwMDE3OUM5NCAvKiBERkdDYXBhYmlsaXRpZXMuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHQ2FwYWJpbGl0aWVzLmg7IHBhdGggPSBkZmcvREZH
Q2FwYWJpbGl0aWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTE0MDAwNjc2MTJB
NkY3ODMwMDY0RDEyMyAvKiBPU0FsbG9jYXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBPU0FsbG9jYXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxNDAw
MDY5MjEyQTZGOUUxMDA2NEQxMjMgLyogT1NBbGxvY2F0b3JQb3NpeC5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBPU0FsbG9jYXRvclBvc2l4LmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTQwRDE3RDYwRThBRDRBOTAwMENEMTdEIC8qIEpTQmFzZVBy
aXZhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNCYXNlUHJpdmF0ZS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjE4MSw2ICsyMTg0LDggQEAKIAkJODZF
QzlEQjMxMzI4REY0NDAwMkIyQUQ3IC8qIGRmZyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwog
CQkJY2hpbGRyZW4gPSAoCisJCQkJMEZEODJFMUUxNDE3MkMyRjAwMTc5Qzk0IC8qIERGR0NhcGFi
aWxpdGllcy5jcHAgKi8sCisJCQkJMEZEODJFMUYxNDE3MkMyRjAwMTc5Qzk0IC8qIERGR0NhcGFi
aWxpdGllcy5oICovLAogCQkJCTBGRDNDODI0MTQxMTVEMjIwMEZEODFDQiAvKiBERkdQcm9wYWdh
dG9yLmggKi8sCiAJCQkJMEZEM0M4MjMxNDExNUQxQTAwRkQ4MUNCIC8qIERGR1Byb3BhZ2F0b3Iu
Y3BwICovLAogCQkJCTBGRDNDODIyMTQxMTVEMEUwMEZEODFDQiAvKiBERkdEcml2ZXIuaCAqLywK
QEAgLTMwNDAsNiArMzA0NSw3IEBACiAJCQlpc2EgPSBQQlhTb3VyY2VzQnVpbGRQaGFzZTsKIAkJ
CWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CiAJCQlmaWxlcyA9ICgKKwkJCQkwRkQ4MkUy
MTE0MTcyQ0UzMDAxNzlDOTQgLyogREZHQ2FwYWJpbGl0aWVzLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTBGRDNDODI1MTQxMTVENDAwMEZEODFDQiAvKiBERkdQcm9wYWdhdG9yLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTBGRDNDODI2MTQxMTVENDAwMEZEODFDQiAvKiBERkdEcml2ZXIuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMEZDODE1MTYxNDA1MTFCNTAwQ0ZBNjAzIC8qIFZUYWJsZVNwZWN0
cnVtLmNwcCBpbiBTb3VyY2VzICovLApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0NvZGVCbG9jay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0NvZGVCbG9jay5jcHAJKHJldmlzaW9uIDk0Nzc3KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxLDYgKzMx
LDcgQEAKICNpbmNsdWRlICJDb2RlQmxvY2suaCIKIAogI2luY2x1ZGUgIkJ5dGVjb2RlR2VuZXJh
dG9yLmgiCisjaW5jbHVkZSAiREZHQ2FwYWJpbGl0aWVzLmgiCiAjaW5jbHVkZSAiRGVidWdnZXIu
aCIKICNpbmNsdWRlICJJbnRlcnByZXRlci5oIgogI2luY2x1ZGUgIkpJVC5oIgpAQCAtMTkzMCw2
ICsxOTMxLDIzIEBAIEpTT2JqZWN0KiBGdW5jdGlvbkNvZGVCbG9jazo6Y29tcGlsZU9wdGkKICAg
ICBKU09iamVjdCogZXJyb3IgPSBzdGF0aWNfY2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPihvd25l
ckV4ZWN1dGFibGUoKSktPmNvbXBpbGVPcHRpbWl6ZWRGb3IoZXhlYywgc2NvcGVDaGFpbk5vZGUs
IG1faXNDb25zdHJ1Y3RvciA/IENvZGVGb3JDb25zdHJ1Y3QgOiBDb2RlRm9yQ2FsbCk7CiAgICAg
cmV0dXJuIGVycm9yOwogfQorCitib29sIFByb2dyYW1Db2RlQmxvY2s6OmNhbkNvbXBpbGVXaXRo
REZHKCkKK3sKKyAgICByZXR1cm4gREZHOjpjYW5Db21waWxlUHJvZ3JhbSh0aGlzKTsKK30KKwor
Ym9vbCBFdmFsQ29kZUJsb2NrOjpjYW5Db21waWxlV2l0aERGRygpCit7CisgICAgcmV0dXJuIERG
Rzo6Y2FuQ29tcGlsZUV2YWwodGhpcyk7Cit9CisKK2Jvb2wgRnVuY3Rpb25Db2RlQmxvY2s6OmNh
bkNvbXBpbGVXaXRoREZHKCkKK3sKKyAgICBpZiAobV9pc0NvbnN0cnVjdG9yKQorICAgICAgICBy
ZXR1cm4gREZHOjpjYW5Db21waWxlRnVuY3Rpb25Gb3JDb25zdHJ1Y3QodGhpcyk7CisgICAgcmV0
dXJuIERGRzo6Y2FuQ29tcGlsZUZ1bmN0aW9uRm9yQ2FsbCh0aGlzKTsKK30KICNlbmRpZgogCiB9
IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9D
b2RlQmxvY2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Q29kZUJsb2NrLmgJKHJldmlzaW9uIDk0Nzc3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0NvZGVCbG9jay5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMjcsNiArMzI3LDcgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgIEV4ZWN1dGFibGVQb29sKiBleGVjdXRhYmxlUG9vbCgpIHsg
cmV0dXJuIGdldEpJVENvZGUoKS5nZXRFeGVjdXRhYmxlUG9vbCgpOyB9CiAgICAgICAgIHZpcnR1
YWwgSlNPYmplY3QqIGNvbXBpbGVPcHRpbWl6ZWQoRXhlY1N0YXRlKiwgU2NvcGVDaGFpbk5vZGUq
KSA9IDA7CiAgICAgICAgIHZpcnR1YWwgQ29kZUJsb2NrKiByZXBsYWNlbWVudCgpID0gMDsKKyAg
ICAgICAgdmlydHVhbCBib29sIGNhbkNvbXBpbGVXaXRoREZHKCkgPSAwOwogI2Vsc2UKICAgICAg
ICAgSklUQ29kZTo6SklUVHlwZSBnZXRKSVRUeXBlKCkgeyByZXR1cm4gSklUQ29kZTo6QmFzZWxp
bmVKSVQ7IH0KICNlbmRpZgpAQCAtMzM0LDYgKzMzNSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
ICAgICBTY3JpcHRFeGVjdXRhYmxlKiBvd25lckV4ZWN1dGFibGUoKSBjb25zdCB7IHJldHVybiBt
X293bmVyRXhlY3V0YWJsZS5nZXQoKTsgfQogCiAgICAgICAgIHZvaWQgc2V0R2xvYmFsRGF0YShK
U0dsb2JhbERhdGEqIGdsb2JhbERhdGEpIHsgbV9nbG9iYWxEYXRhID0gZ2xvYmFsRGF0YTsgfQor
ICAgICAgICBKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEoKSB7IHJldHVybiBtX2dsb2JhbERhdGE7
IH0KIAogICAgICAgICB2b2lkIHNldFRoaXNSZWdpc3RlcihpbnQgdGhpc1JlZ2lzdGVyKSB7IG1f
dGhpc1JlZ2lzdGVyID0gdGhpc1JlZ2lzdGVyOyB9CiAgICAgICAgIGludCB0aGlzUmVnaXN0ZXIo
KSBjb25zdCB7IHJldHVybiBtX3RoaXNSZWdpc3RlcjsgfQpAQCAtNzIzLDYgKzcyNSw3IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgIHByb3RlY3RlZDoKICAgICAgICAgdmlydHVhbCBKU09iamVjdCog
Y29tcGlsZU9wdGltaXplZChFeGVjU3RhdGUqLCBTY29wZUNoYWluTm9kZSopOwogICAgICAgICB2
aXJ0dWFsIENvZGVCbG9jayogcmVwbGFjZW1lbnQoKTsKKyAgICAgICAgdmlydHVhbCBib29sIGNh
bkNvbXBpbGVXaXRoREZHKCk7CiAjZW5kaWYKICAgICB9OwogCkBAIC03NDgsNiArNzUxLDcgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgcHJvdGVjdGVkOgogICAgICAgICB2aXJ0dWFsIEpTT2JqZWN0
KiBjb21waWxlT3B0aW1pemVkKEV4ZWNTdGF0ZSosIFNjb3BlQ2hhaW5Ob2RlKik7CiAgICAgICAg
IHZpcnR1YWwgQ29kZUJsb2NrKiByZXBsYWNlbWVudCgpOworICAgICAgICB2aXJ0dWFsIGJvb2wg
Y2FuQ29tcGlsZVdpdGhERkcoKTsKICNlbmRpZgogCiAgICAgcHJpdmF0ZToKQEAgLTc3NCw2ICs3
NzgsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBwcm90ZWN0ZWQ6CiAgICAgICAgIHZpcnR1YWwg
SlNPYmplY3QqIGNvbXBpbGVPcHRpbWl6ZWQoRXhlY1N0YXRlKiwgU2NvcGVDaGFpbk5vZGUqKTsK
ICAgICAgICAgdmlydHVhbCBDb2RlQmxvY2sqIHJlcGxhY2VtZW50KCk7CisgICAgICAgIHZpcnR1
YWwgYm9vbCBjYW5Db21waWxlV2l0aERGRygpOwogI2VuZGlmCiAgICAgfTsKIApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAJKHJldmlz
aW9uIDk0Nzc3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNl
ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5LDYgKzI5LDcgQEAKICNpZiBFTkFCTEUoREZHX0pJ
VCkKIAogI2luY2x1ZGUgIkRGR0FsaWFzVHJhY2tlci5oIgorI2luY2x1ZGUgIkRGR0NhcGFiaWxp
dGllcy5oIgogI2luY2x1ZGUgIkRGR1Njb3JlQm9hcmQuaCIKICNpbmNsdWRlICJDb2RlQmxvY2su
aCIKIApAQCAtNTk4LDcgKzU5OSw4IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2so
dW5zaWduZWQKICAgICAgICAgCiAgICAgICAgIC8vIFN3aXRjaCBvbiB0aGUgY3VycmVudCBieXRl
Y29kZSBvcGNvZGUuCiAgICAgICAgIEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24gPSBp
bnN0cnVjdGlvbnNCZWdpbiArIG1fY3VycmVudEluZGV4OwotICAgICAgICBzd2l0Y2ggKGludGVy
cHJldGVyLT5nZXRPcGNvZGVJRChjdXJyZW50SW5zdHJ1Y3Rpb24tPnUub3Bjb2RlKSkgeworICAg
ICAgICBPcGNvZGVJRCBvcGNvZGVJRCA9IGludGVycHJldGVyLT5nZXRPcGNvZGVJRChjdXJyZW50
SW5zdHJ1Y3Rpb24tPnUub3Bjb2RlKTsKKyAgICAgICAgc3dpdGNoIChvcGNvZGVJRCkgewogCiAg
ICAgICAgIC8vID09PSBGdW5jdGlvbiBlbnRyeSBvcGNvZGVzID09PQogCkBAIC0xMjA4LDggKzEy
MTAsMTEgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZAogCiAgICAg
ICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAvLyBQYXJzZSBmYWlsZWQhCisgICAgICAgICAgICBB
U1NFUlQoIWNhbkNvbXBpbGVPcGNvZGUob3Bjb2RlSUQpKTsKICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgQVNTRVJUKGNhbkNvbXBpbGVPcGNv
ZGUob3Bjb2RlSUQpKTsKICAgICB9CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQ2FwYWJpbGl0aWVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEs
NjAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IK
KyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkRGR0NhcGFiaWxpdGllcy5oIgorCisjaW5jbHVk
ZSAiQ29kZUJsb2NrLmgiCisjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKKworbmFtZXNwYWNlIEpT
QyB7IG5hbWVzcGFjZSBERkcgeworCitib29sIGNhbkNvbXBpbGVPcGNvZGVzKENvZGVCbG9jayog
Y29kZUJsb2NrKQoreworICAgIEludGVycHJldGVyKiBpbnRlcnByZXRlciA9IGNvZGVCbG9jay0+
Z2xvYmFsRGF0YSgpLT5pbnRlcnByZXRlcjsKKyAgICBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb25z
QmVnaW4gPSBjb2RlQmxvY2stPmluc3RydWN0aW9ucygpLmJlZ2luKCk7CisgICAgdW5zaWduZWQg
aW5zdHJ1Y3Rpb25Db3VudCA9IGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpOworICAg
IAorICAgIGZvciAodW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQgPSAwOyBieXRlY29kZU9mZnNldCA8
IGluc3RydWN0aW9uQ291bnQ7ICkgeworICAgICAgICBzd2l0Y2ggKGludGVycHJldGVyLT5nZXRP
cGNvZGVJRChpbnN0cnVjdGlvbnNCZWdpbltieXRlY29kZU9mZnNldF0udS5vcGNvZGUpKSB7Cisj
ZGVmaW5lIERFRklORV9PUChvcGNvZGUsIGxlbmd0aCkgICAgICAgICAgIFwKKyAgICAgICAgY2Fz
ZSBvcGNvZGU6ICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgaWYgKCFjYW5D
b21waWxlT3Bjb2RlKG9wY29kZSkpICBcCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOyAg
ICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIGJ5dGVjb2RlT2Zmc2V0ICs9IGxlbmd0aDsgICAg
ICAgXAorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBGT1JfRUFDSF9PUENPREVfSUQo
REVGSU5FX09QKQorI3VuZGVmIERFRklORV9PUAorICAgICAgICBkZWZhdWx0OgorICAgICAgICAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQor
ICAgIH0KKyAgICAKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6
OkRGRworCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVz
LmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxp
dGllcy5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE1MyBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIERGR0NhcGFiaWxpdGllc19oCisj
ZGVmaW5lIERGR0NhcGFiaWxpdGllc19oCisKKyNpbmNsdWRlICJJbnRlcnByZXRlci5oIgorI2lu
Y2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgorCituYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7
CisKKyNpZiBFTkFCTEUoREZHX0pJVCkKKy8vIEZhc3QgY2hlY2sgZnVuY3Rpb25zOyBpZiB0aGV5
IHJldHVybiB0cnVlIGl0IGlzIHN0aWxsIG5lY2Vzc2FyeSB0bworLy8gY2hlY2sgb3Bjb2Rlcy4K
K2lubGluZSBib29sIG1pZ2h0Q29tcGlsZUV2YWwoQ29kZUJsb2NrKikgeyByZXR1cm4gdHJ1ZTsg
fQoraW5saW5lIGJvb2wgbWlnaHRDb21waWxlUHJvZ3JhbShDb2RlQmxvY2sqKSB7IHJldHVybiB0
cnVlOyB9CitpbmxpbmUgYm9vbCBtaWdodENvbXBpbGVGdW5jdGlvbkZvckNhbGwoQ29kZUJsb2Nr
KikgeyByZXR1cm4gdHJ1ZTsgfQoraW5saW5lIGJvb2wgbWlnaHRDb21waWxlRnVuY3Rpb25Gb3JD
b25zdHJ1Y3QoQ29kZUJsb2NrKikgeyByZXR1cm4gZmFsc2U7IH0KKworLy8gT3Bjb2RlIGNoZWNr
aW5nLgoraW5saW5lIGJvb2wgY2FuQ29tcGlsZU9wY29kZShPcGNvZGVJRCBvcGNvZGVJRCkKK3sK
KyAgICBzd2l0Y2ggKG9wY29kZUlEKSB7CisgICAgY2FzZSBvcF9lbnRlcjoKKyAgICBjYXNlIG9w
X2NvbnZlcnRfdGhpczoKKyAgICBjYXNlIG9wX2JpdGFuZDoKKyAgICBjYXNlIG9wX2JpdG9yOgor
ICAgIGNhc2Ugb3BfYml0eG9yOgorICAgIGNhc2Ugb3BfcnNoaWZ0OgorICAgIGNhc2Ugb3BfbHNo
aWZ0OgorICAgIGNhc2Ugb3BfdXJzaGlmdDoKKyAgICBjYXNlIG9wX3ByZV9pbmM6CisgICAgY2Fz
ZSBvcF9wb3N0X2luYzoKKyAgICBjYXNlIG9wX3ByZV9kZWM6CisgICAgY2FzZSBvcF9wb3N0X2Rl
YzoKKyAgICBjYXNlIG9wX2FkZDoKKyAgICBjYXNlIG9wX3N1YjoKKyAgICBjYXNlIG9wX211bDoK
KyAgICBjYXNlIG9wX21vZDoKKyAgICBjYXNlIG9wX2RpdjoKKyNpZiBFTkFCTEUoREVCVUdfV0lU
SF9CUkVBS1BPSU5UKQorICAgIGNhc2Ugb3BfZGVidWc6CisjZW5kaWYKKyAgICBjYXNlIG9wX21v
djoKKyAgICBjYXNlIG9wX2NoZWNrX2hhc19pbnN0YW5jZToKKyAgICBjYXNlIG9wX2luc3RhbmNl
b2Y6CisgICAgY2FzZSBvcF9ub3Q6CisgICAgY2FzZSBvcF9sZXNzOgorICAgIGNhc2Ugb3BfbGVz
c2VxOgorICAgIGNhc2Ugb3BfZ3JlYXRlcjoKKyAgICBjYXNlIG9wX2dyZWF0ZXJlcToKKyAgICBj
YXNlIG9wX2VxOgorICAgIGNhc2Ugb3BfZXFfbnVsbDoKKyAgICBjYXNlIG9wX3N0cmljdGVxOgor
ICAgIGNhc2Ugb3BfbmVxOgorICAgIGNhc2Ugb3BfbmVxX251bGw6CisgICAgY2FzZSBvcF9uc3Ry
aWN0ZXE6CisgICAgY2FzZSBvcF9nZXRfYnlfdmFsOgorICAgIGNhc2Ugb3BfcHV0X2J5X3ZhbDoK
KyAgICBjYXNlIG9wX21ldGhvZF9jaGVjazoKKyAgICBjYXNlIG9wX2dldF9ieV9pZDoKKyAgICBj
YXNlIG9wX3B1dF9ieV9pZDoKKyAgICBjYXNlIG9wX2dldF9nbG9iYWxfdmFyOgorICAgIGNhc2Ug
b3BfcHV0X2dsb2JhbF92YXI6CisgICAgY2FzZSBvcF9qbXA6CisgICAgY2FzZSBvcF9sb29wOgor
ICAgIGNhc2Ugb3BfanRydWU6CisgICAgY2FzZSBvcF9qZmFsc2U6CisgICAgY2FzZSBvcF9sb29w
X2lmX3RydWU6CisgICAgY2FzZSBvcF9sb29wX2lmX2ZhbHNlOgorICAgIGNhc2Ugb3BfamVxX251
bGw6CisgICAgY2FzZSBvcF9qbmVxX251bGw6CisgICAgY2FzZSBvcF9qbGVzczoKKyAgICBjYXNl
IG9wX2psZXNzZXE6CisgICAgY2FzZSBvcF9qZ3JlYXRlcjoKKyAgICBjYXNlIG9wX2pncmVhdGVy
ZXE6CisgICAgY2FzZSBvcF9qbmxlc3M6CisgICAgY2FzZSBvcF9qbmxlc3NlcToKKyAgICBjYXNl
IG9wX2puZ3JlYXRlcjoKKyAgICBjYXNlIG9wX2puZ3JlYXRlcmVxOgorICAgIGNhc2Ugb3BfbG9v
cF9pZl9sZXNzOgorICAgIGNhc2Ugb3BfbG9vcF9pZl9sZXNzZXE6CisgICAgY2FzZSBvcF9sb29w
X2lmX2dyZWF0ZXI6CisgICAgY2FzZSBvcF9sb29wX2lmX2dyZWF0ZXJlcToKKyAgICBjYXNlIG9w
X3JldDoKKyAgICBjYXNlIG9wX2VuZDoKKyAgICBjYXNlIG9wX2NhbGw6CisgICAgY2FzZSBvcF9j
b25zdHJ1Y3Q6CisgICAgY2FzZSBvcF9jYWxsX3B1dF9yZXN1bHQ6CisgICAgY2FzZSBvcF9yZXNv
bHZlOgorICAgIGNhc2Ugb3BfcmVzb2x2ZV9iYXNlOgorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorfQorCitib29sIGNhbkNv
bXBpbGVPcGNvZGVzKENvZGVCbG9jayopOworI2Vsc2UgLy8gRU5BQkxFKERGR19KSVQpCitpbmxp
bmUgYm9vbCBtaWdodENvbXBpbGVFdmFsKENvZGVCbG9jayopIHsgcmV0dXJuIGZhbHNlOyB9Citp
bmxpbmUgYm9vbCBtaWdodENvbXBpbGVQcm9ncmFtKENvZGVCbG9jayopIHsgcmV0dXJuIGZhbHNl
OyB9CitpbmxpbmUgYm9vbCBtaWdodENvbXBpbGVGdW5jdGlvbkZvckNhbGwoQ29kZUJsb2NrKikg
eyByZXR1cm4gZmFsc2U7IH0KK2lubGluZSBib29sIG1pZ2h0Q29tcGlsZUZ1bmN0aW9uRm9yQ29u
c3RydWN0KENvZGVCbG9jayopIHsgcmV0dXJuIGZhbHNlOyB9CitpbmxpbmUgYm9vbCBjYW5Db21w
aWxlT3Bjb2RlKE9wY29kZUlEKSB7IHJldHVybiBmYWxzZTsgfQoraW5saW5lIGJvb2wgY2FuQ29t
cGlsZU9wY29kZXMoQ29kZUJsb2NrKikgeyByZXR1cm4gZmFsc2U7IH0KKyNlbmRpZiAvLyBFTkFC
TEUoREZHX0pJVCkKKworaW5saW5lIGJvb2wgY2FuQ29tcGlsZUV2YWwoQ29kZUJsb2NrKiBjb2Rl
QmxvY2spCit7CisgICAgcmV0dXJuIG1pZ2h0Q29tcGlsZUV2YWwoY29kZUJsb2NrKSAmJiBjYW5D
b21waWxlT3Bjb2Rlcyhjb2RlQmxvY2spOworfQorCitpbmxpbmUgYm9vbCBjYW5Db21waWxlUHJv
Z3JhbShDb2RlQmxvY2sqIGNvZGVCbG9jaykKK3sKKyAgICByZXR1cm4gbWlnaHRDb21waWxlUHJv
Z3JhbShjb2RlQmxvY2spICYmIGNhbkNvbXBpbGVPcGNvZGVzKGNvZGVCbG9jayk7Cit9CisKK2lu
bGluZSBib29sIGNhbkNvbXBpbGVGdW5jdGlvbkZvckNhbGwoQ29kZUJsb2NrKiBjb2RlQmxvY2sp
Cit7CisgICAgcmV0dXJuIG1pZ2h0Q29tcGlsZUZ1bmN0aW9uRm9yQ2FsbChjb2RlQmxvY2spICYm
IGNhbkNvbXBpbGVPcGNvZGVzKGNvZGVCbG9jayk7Cit9CisKK2lubGluZSBib29sIGNhbkNvbXBp
bGVGdW5jdGlvbkZvckNvbnN0cnVjdChDb2RlQmxvY2sqIGNvZGVCbG9jaykKK3sKKyAgICByZXR1
cm4gbWlnaHRDb21waWxlRnVuY3Rpb25Gb3JDb25zdHJ1Y3QoY29kZUJsb2NrKSAmJiBjYW5Db21w
aWxlT3Bjb2Rlcyhjb2RlQmxvY2spOworfQorCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6REZHCisK
KyNlbmRpZiAvLyBERkdDYXBhYmlsaXRpZXNfaAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVQuY3BwCShyZXZpc2lvbiA5NDc3NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzYsNiArMzYsNyBAQCBKU0M6Ok1hY3JvQXNzZW1ibGVy
WDg2Q29tbW9uOjpTU0UyQ2hlY2tTCiAKICNpbmNsdWRlICJDb2RlQmxvY2suaCIKICNpbmNsdWRl
ICJDcnlwdG9ncmFwaGljYWxseVJhbmRvbU51bWJlci5oIgorI2luY2x1ZGUgIkRGR05vZGUuaCIg
Ly8gZm9yIERGR19TVUNDRVNTX1NUQVRTCiAjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKICNpbmNs
dWRlICJKSVRJbmxpbmVNZXRob2RzLmgiCiAjaW5jbHVkZSAiSklUU3R1YkNhbGwuaCIKQEAgLTQ1
LDcgKzQ2LDYgQEAgSlNDOjpNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6U1NFMkNoZWNrUwogI2lu
Y2x1ZGUgIlJlcGF0Y2hCdWZmZXIuaCIKICNpbmNsdWRlICJSZXN1bHRUeXBlLmgiCiAjaW5jbHVk
ZSAiU2FtcGxpbmdUb29sLmgiCi0jaW5jbHVkZSAiZGZnL0RGR05vZGUuaCIgLy8gZm9yIERGR19T
VUNDRVNTX1NUQVRTCiAKIHVzaW5nIG5hbWVzcGFjZSBzdGQ7CiAKQEAgLTk2LDYgKzk2LDkgQEAg
SklUOjpKSVQoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBDb2RlQgogI2lmIEVOQUJMRShUSUVS
RURfQ09NUElMQVRJT04pCiB2b2lkIEpJVDo6ZW1pdE9wdGltaXphdGlvbkNoZWNrKE9wdGltaXph
dGlvbkNoZWNrS2luZCBraW5kKQogeworICAgIGlmICghc2hvdWxkRW1pdFByb2ZpbGluZygpKQor
ICAgICAgICByZXR1cm47CisgICAgCiAgICAgSnVtcCBza2lwT3B0aW1pemUgPSBicmFuY2hBZGQz
MihTaWduZWQsIFRydXN0ZWRJbW0zMihraW5kID09IExvb3BPcHRpbWl6YXRpb25DaGVjayA/IDEg
OiAzMCksIEFic29sdXRlQWRkcmVzcygmbV9jb2RlQmxvY2stPm1fZXhlY3V0ZUNvdW50ZXIpKTsK
ICAgICBKSVRTdHViQ2FsbCBzdHViQ2FsbCh0aGlzLCBraW5kID09IExvb3BPcHRpbWl6YXRpb25D
aGVjayA/IGN0aV9vcHRpbWl6ZV9mcm9tX2xvb3AgOiBjdGlfb3B0aW1pemVfZnJvbV9yZXQpOwog
ICAgIHN0dWJDYWxsLmNhbGwoKTsKQEAgLTQ5Nyw2ICs1MDAsMTAgQEAgdm9pZCBKSVQ6OnByaXZh
dGVDb21waWxlU2xvd0Nhc2VzKCkKIAogSklUQ29kZSBKSVQ6OnByaXZhdGVDb21waWxlKENvZGVQ
dHIqIGZ1bmN0aW9uRW50cnlBcml0eUNoZWNrKQogeworI2lmIEVOQUJMRShUSUVSRURfQ09NUElM
QVRJT04pCisgICAgbV9jYW5CZU9wdGltaXplZCA9IG1fY29kZUJsb2NrLT5jYW5Db21waWxlV2l0
aERGRygpOworI2VuZGlmCisgICAgCiAgICAgLy8gSnVzdCBhZGQgYSBsaXR0bGUgYml0IG9mIHJh
bmRvbW5lc3MgdG8gdGhlIGNvZGVnZW4KICAgICBpZiAobV9yYW5kb21HZW5lcmF0b3IuZ2V0VWlu
dDMyKCkgJiAxKQogICAgICAgICBub3AoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklULmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAko
cmV2aXNpb24gOTQ3NzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMDA0LDYgKzEwMDQsMTQgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
IHZvaWQgc2FtcGxlQ29kZUJsb2NrKENvZGVCbG9jayopIHt9CiAjZW5kaWYKIAorI2lmIEVOQUJM
RShUSUVSRURfQ09NUElMQVRJT04pCisgICAgICAgIGJvb2wgc2hvdWxkRW1pdFByb2ZpbGluZygp
IHsgcmV0dXJuIG1fY2FuQmVPcHRpbWl6ZWQ7IH0KKyNlbHNlCisgICAgICAgIC8vIEVuYWJsZXMg
dXNlIG9mIHZhbHVlIHByb2ZpbGVyIHdpdGggdGllcmVkIGNvbXBpbGF0aW9uIHR1cm5lZCBvZmYs
CisgICAgICAgIC8vIGluIHdoaWNoIGNhc2UgYWxsIGNvZGUgZ2V0cyBwcm9maWxlZC4KKyAgICAg
ICAgYm9vbCBzaG91bGRFbWl0UHJvZmlsaW5nKCkgeyByZXR1cm4gdHJ1ZTsgfQorI2VuZGlmCisK
ICAgICAgICAgSW50ZXJwcmV0ZXIqIG1faW50ZXJwcmV0ZXI7CiAgICAgICAgIEpTR2xvYmFsRGF0
YSogbV9nbG9iYWxEYXRhOwogICAgICAgICBDb2RlQmxvY2sqIG1fY29kZUJsb2NrOwpAQCAtMTA0
Myw2ICsxMDUxLDEwIEBAIG5hbWVzcGFjZSBKU0MgewogI2VuZGlmCiAgICAgICAgIFdlYWtSYW5k
b20gbV9yYW5kb21HZW5lcmF0b3I7CiAgICAgICAgIHN0YXRpYyBDb2RlUHRyIHN0cmluZ0dldEJ5
VmFsU3R1YkdlbmVyYXRvcihKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIEV4ZWN1dGFibGVQb29s
KiBwb29sKTsKKyAgICAgICAgCisjaWYgRU5BQkxFKFRJRVJFRF9DT01QSUxBVElPTikKKyAgICAg
ICAgYm9vbCBtX2NhbkJlT3B0aW1pemVkOworI2VuZGlmCiAgICAgfSBKSVRfQ0xBU1NfQUxJR05N
RU5UOwogCiAgICAgaW5saW5lIHZvaWQgSklUOjplbWl0X29wX2xvb3AoSW5zdHJ1Y3Rpb24qIGN1
cnJlbnRJbnN0cnVjdGlvbikKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5s
aW5lTWV0aG9kcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
SW5saW5lTWV0aG9kcy5oCShyZXZpc2lvbiA5NDc3NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUSW5saW5lTWV0aG9kcy5oCSh3b3JraW5nIGNvcHkpCkBAIC00MzUsNiArNDM1LDkg
QEAgaW5saW5lIHZvaWQgSklUOjplbWl0QWxsb2NhdGVKU0Z1bmN0aW9uKAogI2lmIEVOQUJMRShW
QUxVRV9QUk9GSUxFUikKIGlubGluZSB2b2lkIEpJVDo6ZW1pdFZhbHVlUHJvZmlsaW5nU2l0ZShW
YWx1ZVByb2ZpbGluZ1NpdGVLaW5kIHNpdGVLaW5kKQogeworICAgIGlmICghc2hvdWxkRW1pdFBy
b2ZpbGluZygpKQorICAgICAgICByZXR1cm47CisgICAgCiAgICAgY29uc3QgUmVnaXN0ZXJJRCB2
YWx1ZSA9IHJlZ1QwOwogICAgIGNvbnN0IFJlZ2lzdGVySUQgc2NyYXRjaCA9IHJlZ1QzOwogICAg
IAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>