SUMMARY : script for determining free space

From: <matthew.hannigan_at_nl.abnamro.com>
Date: Wed Oct 17 2001 - 04:57:10 EDT
--0__=C1256AE800305D048f9e8a93df938690918cC1256AE800305D04
Content-Type: text/plain; 
 charset=us-ascii
Content-Transfer-Encoding: 7bit


One excellent answer from Andrew Caines who supplied me with
this perl script:

(See attached file: plfs)

Every other response asked me some variation of "why don't I use df?"

Partly my fault.   I should have emphasised that I was looking for
unallocated space; not "free space" in the usual meaning.
I had hoped that my references to swap -l and format might have
helped.  Oh well.

Below is the output of the above script on my system just so it's clear.

Regards
     -Matt


root@dqa-re01 # ./plfs
   ----------------------------------------------------------------
       plfs-1.1.patch4  dqa-re01        Wed Oct 17 08:47:11 2001
   ----------------------------------------------------------------
Warning: Current Disk has mounted partitions.
Warning: Current Disk has mounted partitions.
--------------
file systems :
--------------

** file system /          /dev/dsk/c1t0d0s0    3099287 (28%)

** file system /var       /dev/dsk/c1t0d0s3    2056211 ( 4%)

** file system /opt       /dev/dsk/c1t0d0s6    9136141 ( 8%)

** file system /export/home /dev/dsk/c1t0d0s5    1018191 ( 1%)



-------
disks :
-------

disk 0:

Part      Tag   Flag      Cylinders        Size      Mount Directory  Partition
  0       root   wm         0 - 1335     3.00GB                    /   c1t0d0s0
  1       swap   wu      1336 - 2226     2.00GB                 Swap   c1t0d0s1
  2     backup   wm         0 - 7505    16.86GB           N/A backup   c1t0d0s2
  3        var   wm      2227 - 3117     2.00GB                 /var   c1t0d0s3
  4 unassigned   wm                0          0                 Null   c1t0d0s4
  5       home   wm      3118 - 3563     1.00GB         /export/home   c1t0d0s5
  6 unassigned   wm      3564 - 7502     8.85GB                 /opt   c1t0d0s6
  7 unassigned   wm      7503 - 7505     6.90MB           ** FREE **   c1t0d0s7




-----------------
free partitions :
-----------------

disk 0 :

   7 unassigned   wm      7503 - 7505     6.90MB        (3/0/0) 14136



---------
summary :
---------


 Total size of unassigned cylinders on all disks : 0.00 MB
 Total free space in unassigned partitions : 6.90 MB
 Total number of disks :  1
 Total number of local file-systems :   4
 Total number of mirrored file-systems :  0

---------------------------------------------------------------------------
This  message  (including  any  attachments)  is  confidential  and  may be
privileged.  If you have received it by mistake please notify the sender by
return  e-mail  and  delete this message from your system. Any unauthorised
use  or  dissemination  of  this  message  in  whole or in part is strictly
prohibited.  Please  note  that e-mails are susceptible to change. ABN AMRO
Bank  N.V.  (including  its  group  companies)  shall not be liable for the
improper  or  incomplete  transmission of the information contained in this
communication  nor  for  any delay in its receipt or damage to your system.
ABN  AMRO  Bank  N.V.  (or its group companies) does not guarantee that the
integrity   of  this  communication  has  been  maintained  nor  that  this
communication is free of viruses, interceptions or interference.
---------------------------------------------------------------------------
--0__=C1256AE800305D048f9e8a93df938690918cC1256AE800305D04
Content-Type: application/octet-stream; 
 name=plfs
Content-Disposition: attachment; 
 filename=plfs
Content-Transfer-Encoding: base64

IyEgL3Vzci9iaW4vcGVybAojCiMgcGxmcy5wbCx2IDEuMTMuMi40IDE5OTkvMTAvMDUgMDc6Mjg6
MDcgbWFyY2hhbmQgRXhwCiMKIyBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiBy
ZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdAojIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUg
R05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CiMgdGhlIEZyZWUgU29m
dHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKQoj
IGFueSBsYXRlciB2ZXJzaW9uLgojCiMgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBo
b3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dAojIFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3
aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKIyBNRVJDSEFOVEFCSUxJVFkgb3Ig
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQojIEdlbmVyYWwg
UHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIwojIFlvdSBzaG91bGQgaGF2ZSByZWNl
aXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiMgYWxvbmcgd2l0
aCBpdDsgc2VlIHRoZSBmaWxlIENPUFlJTkcuICBJZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlCiMg
U29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBC
b3N0b24sIE1BCiMgMDIxMTEtMTMwNywgVVNBLgojCgp1c2UgU3lzOjpIb3N0bmFtZTsKdXNlIEdl
dG9wdDo6TG9uZzsKCm15ICRob3N0PWhvc3RuYW1lOwpteSAkdGltZXN0cj1sb2NhbHRpbWU7Cgok
ZGZjbWQ9Ii91c3IvYmluL2RmIC1rRnVmcyI7CiRtZXRhc3RhdGNtZD0iIjsKJG1ldGFkYmNtZD0i
IjsKJGZvcm1hdGluaXRjb209IjBcbnFcbiI7CiRmb3JtYXRpbml0Y21kPSJlY2hvIFwiJGZvcm1h
dGluaXRjb21cIiB8IC91c3Ivc2Jpbi9mb3JtYXQiOwokZm9ybWF0Y29tPSJwXG5wXG5xXG5xXG4i
OwokZm9ybWF0Y21kPSJlY2hvIFwiJGZvcm1hdGNvbVwiIHwgL3Vzci9zYmluL2Zvcm1hdCAtZCI7
CiRzd2FwY21kPSIvdXNyL3NiaW4vc3dhcCAtbCI7CiRkaXNrc3VpdGU9MDsKCiMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIwojICAgICAgWU9VIFNIT1VMRCBOT1QgSEFWRSBUTyBDSEFOR0UgQU5ZVEhJTkcgQkVMT1cg
VEhJUyBMSU5FCiMKIyBwbGZzLnBsLHYKIyBSZXZpc2lvbiAxLjEzLjIuNCAgMTk5OS8xMC8wNSAw
NzoyODowNyAgbWFyY2hhbmQKIwojIC0gZmlsZSBzeXN0ZW1zIGFyZSBzb3J0ZWQgYWNjb3JkaW5n
IHRvIHZmc3RhYiBvcmRlcgojIC0gZGlza3MgYXJlIHNvcnRlZCBhY2NvcmRpbmcgdG8gZm9ybWF0
IG91dHB1dCBvcmRlcgojIC0gZml4ZWQgYnVnIHdoZW4gdXNpbmcgLWYgb3B0aW9uIHdpdGhvdXQg
U0RTCiMKIyBSZXZpc2lvbiAxLjEzLjIuMyAgMTk5OS8wOC8wMiAxNjozNTowMiAgbWFyY2hhbmQK
IwojIC0gZml4ZWQgYnVnIG9mIC0tZGlzayBvcHRpb24KIyAtIGZpeGVkIGJ1ZyBvZiAtLW1ldGFk
ZXZpY2Ugb3B0aW9uCiMKIyBSZXZpc2lvbiAxLjEzLjIuMiAgMTk5OS8wOC8wMiAxMjowNDowMSAg
bWFyY2hhbmQKIwojIC0gd2FybmluZyB3aGVuIG5vcm1hbCBzd2FwIGZzIGFyZSB1c2VkIHdoaWxl
IHVzaW5nIFNEUwojCiMgUmV2aXNpb24gMS4xMy4yLjEgIDE5OTkvMDcvMzAgMTQ6MDQ6MzUgIG1h
cmNoYW5kCiMKIyAtIGZpeGVkIGJ1ZyB3aGVuIGEgc2luZ2xlIHN0cmlwZSBpcyBkaXZpZGVkIGlu
IHNldmVyYWwgc2xpY2VzCiMKIyBSZXZpc2lvbiAxLjEzICAxOTk5LzA3LzI5IDA4OjM1OjQ3ICBt
YXJjaGFuZAojCiMgLSBuYW1lcyBhZGRlZCB3aGVuIGxpc3RpbmcgZGlza3MKIwojIFJldmlzaW9u
IDEuMTIgIDE5OTkvMDcvMjcgMTc6MzY6MTAgIG1hcmNoYW5kCiMKIyAtIG1lc3NhZ2UgaW1wcm92
ZWQgZm9yIG5vbi1vayBtZXRhLWRldmljZXMKIwojIFJldmlzaW9uIDEuMTEgIDE5OTkvMDcvMjcg
MTY6MTU6NTEgIG1hcmNoYW5kCiMKIyAtIC0td2FybmluZ3MgKC13KSBvcHRpb24gYWRkZWQKIwoj
IFJldmlzaW9uIDEuMTAgIDE5OTkvMDcvMTkgMTc6MzU6MzQgIG1hcmNoYW5kCiMKIyAtIHdhcm5p
bmcgaWYgYSBtaXJyb3JlZCBmcyBoYXMgb25seSBvbmUgKG9yIHplcm8pIHN1Ym1pcnJvci4KIyAt
IHdhcm5pbmcgaWYgbm9ybWFsIGZpbGVzeXN0ZW1zIGFyZSBmb3VuZCB3aGlsZSBkaXNrc3VpdGUg
aXMgdXNlZAojCiMgUmV2aXNpb24gMS45ICAxOTk5LzA3LzE5IDExOjQxOjUzICBhbGdhcm90dAoj
IChSZSlBZGRlZCBzaG9ydCBvcHRpb25zCiMKIyBSZXZpc2lvbiAxLjggIDE5OTkvMDcvMTUgMTY6
NTg6MDcgIG1hcmNoYW5kCiMKIyAtIHN1bW1hcnkgYWRkZWQKIwojIFJldmlzaW9uIDEuNyAgMTk5
OS8wNy8xMyAxNToxMTo1OCAgbWFyY2hhbmQKIwojIC0gYWxsb3cgdXNlIHdpdGhvdXQgZGlza3N1
aXRlCiMKIyBSZXZpc2lvbiAxLjYgIDE5OTkvMDcvMDggMTU6MjE6MjYgIG1hcmNoYW5kCiMKIyAt
IGNvcnJlY3Rpb24gb2YgZnNsaXN0IHdoZW4gLS1tZXRhZGV2aWNlIG9wdGlvbiBpcyB1c2VkCiMK
IyBSZXZpc2lvbiAxLjUgIDE5OTkvMDcvMDggMTQ6NDU6MjAgIG1hcmNoYW5kCiMKIyAtIFVzZSBv
ZiBsb25nIG9wdGlvbnMKIyAtIG9wdGlvbnMgLS1saXN0KiBhZGRlZAojCiMgUmV2aXNpb24gMS40
ICAxOTk5LzA3LzA1IDE2OjIzOjIzICBtYXJjaGFuZAojCiMgLSBlcnJvciBtZXNzYWdlcyBtb2Rp
ZmllZAojCiMgUmV2aXNpb24gMS4zICAxOTk5LzA3LzAyIDE2OjA2OjI1ICBtYXJjaGFuZAojCiMg
LSBvcHRpb25zIC1kLCAtZiBhbmQgLW0gYWRkZWQKIyAtIHZlcnNpb24gbnVtYmVyIGFwcGVhcnMg
aW4gaGVhZGVyCiMKIyBSZXZpc2lvbiAxLjIgIDE5OTkvMDYvMjggMTU6MjI6MTIgIG1hcmNoYW5k
CiMKIyAtIGNoZWNrIGhvc3Qgc3lzdGVtIHR5cGUgKFNvbGFyaXMgMi41IG9yIG5ld2VyIHJlcXVp
cmVkKQojCiMgUmV2aXNpb24gMS4xICAxOTk5LzA2LzI1IDEzOjM5OjI5ICBtYXJjaGFuZAojIC0g
cmVwbGFjZSBmb3JtZXIgcGxmcyBmb3IgZGlzdHJpYnV0aW9uIHB1cnBvc2VzCiMKIyBSZXZpc2lv
biAxLjEuMS4xICAxOTk5LzA2LzI0IDEyOjQyOjE5ICBtYXJjaGFuZAojIGltcG9ydCB2ZXJzaW9u
IGluaXRpYWxlCiMKIwokdmVyc2lvbj0iMS4xLnBhdGNoNCI7CgpteSAkdXNhZ2U9Igp1c2FnZSA6
ICQwIFtvcHRpb25zXQoKTGlzdCBvZiBhdmFpbGFibGUgb3B0aW9ucyAoYWJicmV2aWF0aW9ucyBh
cmUgYWxsb3dlZCBpZiBub3QgYW1iaWd1b3VzKToKCi1rIC0tZGlzaz1kaXNrMSAgICAgIDogcHJp
bnQgb25seSBpbmZvcm1hdGlvbnMgYWJvdXQgZGlzazEKLWYgLS1maWxlLXN5c3RlbT1mczEgOiBw
cmludCBvbmx5IGluZm9ybWF0aW9ucyBhYm91dCBmaWxlc3lzdGVtIGZzMQotbSAtLW1ldGFkZXZp
Y2U9bWQxICA6IHByaW50IG9ubHkgaW5mb3JtYXRpb25zIGFib3V0IG1ldGFkZXZpY2UgbWQxCgpP
bmx5IG9uZSBvZiB0aGVzZSB0aHJlZSBvcHRpb25zIGlzIGFsbG93ZWQsIGJ1dCBpdCBjYW4gYXBw
ZWFyIHNldmVyYWwgdGltZXMKZS5nLiAkMCAtLWRpc2s9MCAtLWRpc2s9MQoKLUsgLS1saXN0LWRp
c2sgICAgICAgIDogcHJpbnQgdGhlIGxpc3Qgb2YgZGlza3MKLU0gLS1saXN0LW1ldGFkZXZpY2Ug
IDogcHJpbnQgdGhlIGxpc3Qgb2YgbWV0YWR2aWNlcwotRiAtLWxpc3QtZmlsZS1zeXN0ZW0gOiBw
cmludCB0aGUgbGlzdCBvZiBsb2NhbCBmaWxlLXN5c3RlbXMKLWgsIC0taGVscCAgICAgICAgIDog
cHJpbnQgdGhpcyBtZXNzYWdlIGFuZCBleGl0Ci1WLCAtLXZlcnNpb24gICAgICA6IHByaW50IHZl
cnNpb24gbnVtYmVyIGFuZCBleGl0Ci13LCAtLXdhcm5pbmdzICAgICA6IGp1c3QgcHJpbnQgd2Fy
bmluZ3MgYWJvdXQgbWV0YWRldmljZXMgb3IgZmlsZS1zeXN0ZW1zCiAgICAgICAgICAgICAgICAg
ICAgIG5lZWRpbmcgYXR0ZW50aW9uCiI7CgpteSAkc3VzYWdlPSIKLUQsIC0tZGVidWcgICAgICAg
OiBwcmludCBhZGRpdGlvbm5hbCBpbmZvcm1hdGlvbiBmb3IgZGVidWdnaW5nIHB1cnBvc2VzCi1I
LCAtLWhpZGRlbi1oZWxwIDogcHJpbnQgdGhpcyBtZXNzYWdlIGFuZCBleGl0Ci1ULCAtLXRyeSAg
ICAgICAgIDogZG8gbm90IHJlYWxseSBydW4gZm9ybWF0IGNvbW1hbmQsIHVzZSBjb250ZW50IG9m
CiAgICAgICAgICAgICAgICAgICAgZmlsZXMgZm9ybWF0aW5pdCwgZm9ybWF0PGRpc2tuYW1lPiBp
bnN0ZWFkLgogICAgICAgICAgICAgICAgICAgIFRoaXMgaXMgaW50ZW5kZWQgdG8gYWxsb3cgdGVz
dHMgd2l0aG91dCBydW5uaW5nIGFzCiAgICAgICAgICAgICAgICAgICAgcm9vdAoiOwoKCiMgcGFy
c2luZyBzd2l0Y2hlcwoKR2V0b3B0OjpMb25nOjpjb25maWcoImF1dG9fYWJicmV2IiwiYnVuZGxp
bmciKTsKI2dldG9wdHMoJ2Q6RGY6aEhtOlRWJyxcJW9wdHMpIHx8IGRpZSAiJHVzYWdlIjsgCkdl
dE9wdGlvbnMoCiJrPWkiICAgICAgICAgICAgICA9PiBcQGRza2wsCiJkaXNrPWkiICAgICAgICAg
ICA9PiBcQGRza2wsCiJEIiAgICAgICAgICAgICAgICA9PiBcJGRlYnVnLAoiZGVidWciICAgICAg
ICAgICAgPT4gXCRkZWJ1ZywKIksiICAgICAgICAgICAgICAgID0+IFwkbGRpc2ssCiJsaXN0LWRp
c2siICAgICAgICA9PiBcJGxkaXNrLAoiRiIgICAgICAgICAgICAgICAgPT4gXCRsZnMsCiJsaXN0
LWZpbGUtc3lzdGVtIiA9PiBcJGxmcywKIk0iICAgICAgICAgICAgICAgID0+IFwkbG1kLAoibGlz
dC1tZXRhZGV2aWNlIiAgPT4gXCRsbWQsCiJmPXMiICAgICAgICAgICAgICA9PiBcQGZzLAoiZmls
ZS1zeXN0ZW09cyIgICAgPT4gXEBmcywKImgiICAgICAgICAgICAgICAgID0+IFwkaGVscCwKImhl
bHAiICAgICAgICAgICAgID0+IFwkaGVscCwKIkgiICAgICAgICAgICAgICAgID0+IFwkSGhlbHAs
CiJoaWRkZW4taGVscCIgICAgICA9PiBcJEhoZWxwLAoibT1zIiAgICAgICAgICAgICAgPT4gXEBt
ZGwsCiJtZXRhZGV2aWNlPXMiICAgICA9PiBcQG1kbCwKIlQiICAgICAgICAgICAgICAgID0+IFwk
dHJ5LAoidHJ5IiAgICAgICAgICAgICAgPT4gXCR0cnksCiJWIiAgICAgICAgICAgICAgICA9PiBc
JHZlcnMsCiJ2ZXJzaW9uIiAgICAgICAgICA9PiBcJHZlcnMsCiJ3IiAgICAgICAgICAgICAgICA9
PiBcJHdhcm5pbmdzLAoid2FybmluZ3MiICAgICAgICAgPT4gXCR3YXJuaW5ncykgfHwgZGllICIk
dXNhZ2VcbiI7CgppZiAoJCNBUkdWID49IDAgfHwgJGhlbHApCiAgewogICAgcHJpbnQgU1RERVJS
ICIkdXNhZ2UiOwogICAgZXhpdCAwOwogIH0KCmlmICgkSGhlbHApCiAgewogICAgcHJpbnQgU1RE
RVJSICIkc3VzYWdlIjsKICAgIGV4aXQgMDsKICB9CgppZiAoJHZlcnMpCiAgewogICAgcHJpbnQg
InBsZnMgdmVyc2lvbiAkdmVyc2lvblxuIjsKICAgIGV4aXQgMDsKICB9CgppZiAoKCQjZHNrbCA+
PSAwICYmICgkI21kbCA+PSAwIHx8ICQjZnMgPj0gMCkpIHx8ICgkI21kbCA+PSAwICYmICQjZnMg
Pj0gMCkpCiAgewogICAgZGllICJPbmx5IG9uZSBvZiB0aGUgZm9sbG93aW5nIG9wdGlvbnMgaXMg
YWNjZXB0ZWQgOiAtLWRpc2ssIC0tZmlsZS1zeXN0ZW0gb3IgLS1tZXRhZGV2aWNlXG4iOwogIH0K
CmRpZSAiTm90IFN1cGVyLVVzZXJcbiIgaWYgKCQ+ICE9IDAgJiYgISAkdHJ5KTsKCiMgcHJpbnRp
bmcgaGVhZGVyCgpwcmludCAiICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuIjsKcHJpbnQgIiAgICAgICBwbGZzLSR2ZXJz
aW9uXHQkaG9zdFx0JHRpbWVzdHJcbiI7CnByaW50ICIgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4iOwoKCiMgc3VicwoK
c3ViIHNwbGl0ZGYKICB7CiAgICBteSAkd2FybmVkPTA7CiAgICBteSAkbnVtYmVyPTE7CgogICAg
b3BlbihERiwiJGRmY21kIHwiKSB8fCBkaWUgIkNhbm5vdCBmb3JrIHRvIGRmIDogJCEiOwogICAg
d2hpbGUgKDxERj4pCiAgICAgIHsKCUBsaW5lID1zcGxpdCgiICIpOwoJaWYgKCAkZGlza3N1aXRl
ICkgewoJICBpZiAoICRsaW5lWzBdID1+IG0vXlwvZGV2XC8vICkKCSAgICB7CgkgICAgICBpZiAo
JGxpbmVbMF0gPX4gbacvZGV2L2Rza6cgJiYgISAkd2FybmVkKSB7IAoJCXdhcm4gIlxhQ0FVVElP
TiA6IGFsdGhvdWdoIHlvdSBhcmUgdXNpbmcgZGlza3N1aXRlLCBub3JtYWwgZmlsZSBzeXN0ZW1z
IGhhdmUgYmVlbiBmb3VuZC5cblRoaXMgY2FuIGxlYWQgdG8gZmFsc2UgcmVzdWx0cy5cbiI7CgkJ
JHdhcm5lZD0xOwoJICAgICAgfQoJICAgICAgbXkgJGZzID0gJGxpbmVbNV07CgkgICAgICAKCSAg
ICAgICRudW1mc3skZnN9PSRudW1iZXIrKzsKCSAgICAgIHByaW50ICIkZnMgJG51bWZzeyRmc31c
biIgaWYgKCRkZWJ1Zyk7CgkgICAgICAkbWRmc3skZnN9PSRsaW5lWzBdOwoJICAgICAgJG1kZnN7
JGZzfT1+IHOnL2Rldi9tZC9kc2svp6c7CgkgICAgICAkZnVsbG1keyRtZGZzeyRmc319PSRsaW5l
WzBdOwoJICAgICAgCgkgICAgICAkc2l6ZXskZnN9PSRsaW5lWzFdOwoJICAgICAgJHVzZWR7JGZz
fT0kbGluZVs0XTsKCSAgICB9Cgl9CgllbHNlIHsKCSAgaWYgKCAkbGluZVswXSA9fiBtL15cL2Rl
dlwvLyApCgkgICAgewoJICAgICAgbXkgJGZzID0gJGxpbmVbNV07CgkgICAgICAKCSAgICAgICRu
dW1mc3skZnN9PSRudW1iZXIrKzsKCSAgICAgICRkaXNrZnN7JGZzfT0kbGluZVswXTsKCSAgICAg
ICRkaXNrZnN7JGZzfT1+IHOnL2Rldi9kc2svp6c7CgkgICAgICAkZnVsbGRpc2t7JGRpc2tmc3sk
ZnN9fT0kbGluZVswXTsKCSAgICAgIAoJICAgICAgJHNpemV7JGZzfT0kbGluZVsxXTsKCSAgICAg
ICR1c2VkeyRmc309JGxpbmVbNF07CgkgICAgICAkbW91bnRkaXJ7JGRpc2tmc3skZnN9fT0kZnM7
CgkgICAgfQoJfQogICAgICB9CiAgICBjbG9zZSBERiB8fCBkaWUgJCEgPyAiRXJyb3IgY2xvc2lu
ZyBkZiBwaXBlIDogJCEiCiAgICAgICAgICAgICAgICAgICAgICAgICAgIDogIkVycm9yIHJ1bm5p
bmcgZGYgOiBleGl0IHN0YXR1cyAkPyI7CiAgfQoKc3ViIHNwbGl0c3dhcAogIHsKICAgIG9wZW4o
U1dBUCwiJHN3YXBjbWQgfCIpIHx8IGRpZSAiQ2Fubm90IGZvcmsgdG8gc3dhcCA6ICQhIjsKICAg
IHdoaWxlICg8U1dBUD4pCiAgICAgIHsKCUBsaW5lID1zcGxpdCgiICIpOwoJaWYgKCAkZGlza3N1
aXRlICkgewoJICBpZiAoJGxpbmVbMF0gPX4gbacvZGV2L2Rza6cgJiYgISAkd2FybmVkKSB7IAoJ
ICAgIHdhcm4gIlxhQ0FVVElPTiA6IGFsdGhvdWdoIHlvdSBhcmUgdXNpbmcgZGlza3N1aXRlLCBu
b3JtYWwgc3dhcCBmaWxlIHN5c3RlbXMgaGF2ZSBiZWVuIGZvdW5kLlxuVGhpcyBjYW4gbGVhZCB0
byBmYWxzZSByZXN1bHRzLlxuIjsKCSAgICAkd2FybmVkPTE7CgkgIH0KCgkgIGlmICggJGxpbmVb
MF0gPX4gbadeL2Rldi9tZC9kc2svKGRbMC05XSsppyApCgkgICAgewoJICAgICAgbXkgJG1kID0g
JCs7CgkgICAgICBpZiAoICQjJG1kID49IDAgKQoJCXsKCQkgIGZvcmVhY2ggbXkgJHN1Ym1pciAo
QCRtZCkKCQkgICAgewoJCSAgICAgIGZvcmVhY2ggbXkgJHN0cmlwZSAoMC4uJCN7JHNsaWNleyRz
dWJtaXJ9fSkKCQkJewoJCQkgICRkZWJ1ZyAmJiBwcmludCAiJHN0cmlwZVxuIjsKCQkJICBmb3Jl
YWNoIG15ICRzbGMgKEB7JHNsaWNleyRzdWJtaXJ9WyRzdHJpcGVdfSkgewoJCQkgICAgJG1vdW50
ZGlyeyRzbGN9PSJTd2FwIjsKCQkJICB9CgkJCX0KCQkgICAgfQoJCX0KCSAgICAgIGVsc2UKCQl7
CgkJICBmb3JlYWNoIG15ICRzdHJpcGUgKDAuLiQjeyRzbGljZXskbWR9fSkKCQkgICAgewoJCSAg
ICAgIGZvcmVhY2ggbXkgJHNsYyAoQHskc2xpY2V7JG1kfVskc3RyaXBlXX0pIHsKCQkJJG1vdW50
ZGlyeyRzbGN9PSJTd2FwIjsKCQkgICAgICB9CgkJICAgIH0KCQl9IAoJICAgIH0KCX0KCWVsc2Ug
ewoJICBpZiAoICRsaW5lWzBdID1+IG2nXi9kZXYvZHNrLyhjXGQrdFxkK2RcZCtzXGQrKacgKQoJ
ICAgIHsKCSAgICAgIG15ICRkZXYgPSAkKzsKCSAgICAgICRtb3VudGRpcnskZGV2fT0iU3dhcCI7
CgkgICAgfQoJfSAKICAgICAgfQogICAgY2xvc2UgU1dBUCB8fCBkaWUgJCEgPyAiRXJyb3IgY2xv
c2luZyBzd2FwIHBpcGUgOiAkISIKICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAiRXJyb3Ig
cnVubmluZyBzd2FwIDogZXhpdCBzdGF0dXMgJD8iOwogIH0KCnN1YiBzcGxpdG1ldGEKICB7CiAg
ICBteSAkbWQ7CiAgICBvcGVuKE1FVEEsIiRtZXRhc3RhdGNtZCB8IikgfHwgZGllICJDYW5ub3Qg
Zm9yayB0byBtZXRhc3RhdCA6ICQhIjsKICAgICAgd2hpbGUgKDxNRVRBPikKCXsKCSAgQGxpbmU9
c3BsaXQoIiAiKTsKCSAgbmV4dCB1bmxlc3MgKCQjbGluZSA+PSAwKTsKCgkgIGlmICggJGxpbmVb
MF0gPX4gbS9eKGRbMC05XSspOiQvICkKCSAgICB7CgkgICAgICAkc3VibWlyPSQrOwoJICAgICAg
aWYgKCAkbGluZVsxXSAhfiBtL15TdWJtaXJyb3IkLyApCgkJewoJCSAgJG1kID0gJHN1Ym1pcjsK
CQkgICR0eXBlbWR7JG1kfT0kbGluZVsxXTsKCQl9CgkgICAgICBlbHNlCgkJewoJCSAgKCAiJGxp
bmVbM10iIGVxICIkbWQiICkgfHwgd2FybiAic3VibWlycm9yICRzdWJtaXIgb2YgbWV0YWRldmlj
ZSAkbGluZVszXSBvdXQgb2Ygb3JkZXIiOwoJCSAgcHVzaCAoQCRtZCwgJHN1Ym1pcik7CgkJICAk
bWFpbm1keyRzdWJtaXJ9PSRtZDsKCQl9CgkgICAgfQoJICBlbHNpZiAoICIkbGluZVswXSIgZXEg
IlN0YXRlOiIpCgkgICAgeyAKCSAgICAgIHNoaWZ0IEBsaW5lOwoJICAgICAgJHN0YXRlbWR7JHN1
Ym1pcn09IkBsaW5lIjsKCSAgICAgIHdhcm4gIk1ldGFkZXZpY2UgJHN1Ym1pciA6ICRzdGF0ZW1k
eyRzdWJtaXJ9XG4iIHVubGVzcyAoJGxpbmVbMF0gZXEgIk9rYXkiKSB8fCAoIiRtZCIgZXEgIiRz
dWJtaXIiKSA7CgkgICAgfQoJICBlbHNpZiAoICIkbGluZVswXSIgZXEgIlNpemU6IikKCSAgICB7
CgkgICAgICAkc2l6ZW1keyRzdWJtaXJ9PSRsaW5lWzFdOwoJICAgIH0KCSAgZWxzaWYgKCAkbGlu
ZVswXSA9fiBtL15jWzAtOV0rdFswLTldK2RbMC05XStzWzAtOV0rJC8pCgkgICAgewoJICAgICAg
cHVzaCAoIEB7JHNsaWNleyRzdWJtaXJ9WyRzdHJpcGVdfSwgJGxpbmVbMF0pOwoJICAgIH0KCSAg
ZWxzaWYgKCAiJGxpbmVbMF0iIGVxICJTdHJpcGUiICkKCSAgICB7CgkgICAgICAkc3RyaXBlPSRs
aW5lWzFdOwoJICAgICAgJHN0cmlwZSA9fiBzLzokLy87CgkgICAgfQoJICAgIAoJfQogICAgY2xv
c2UgTUVUQSB8fCBkaWUgJCEgPyAiRXJyb3IgY2xvc2luZyBtZXRhc3RhdCBwaXBlIDogJCEiCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDogIkVycm9yIHJ1bm5pbmcgbWV0YXN0YXQgOiBleGl0
IHN0YXR1cyAkPyI7CgogICAgZm9yZWFjaCBteSAkZnMgKGtleXMgJW1kZnMpCiAgICAgIHsKICAg
ICAgICAkbWQ9JG1kZnN7JGZzfTsKCSR0eXBlZnN7JGZzfT0kdHlwZW1keyRtZH07CglpZiAoICQj
JG1kID49IDAgKQoJICB7CgkgICAgaWYgKCQjJG1kID09IDApIHsKCSAgICAgIHdhcm4gIlxhV2Fy
bmluZyA6IGZpbGVzeXN0ZW0gJGZzIGhhcyBvbmx5IDEgc3VibWlycm9yXG4iOwoJICAgIH0KCSAg
ICBmb3JlYWNoIG15ICRzdWJtaXIgKEAkbWQpCgkgICAgICB7CgkJZm9yZWFjaCBteSAkc3RyaXBl
ICgwLi4kI3skc2xpY2V7JHN1Ym1pcn19KQoJCSAgewoJCSAgICBmb3JlYWNoIG15ICRzbGMgKEB7
JHNsaWNleyRzdWJtaXJ9WyRzdHJpcGVdfSkgeyAgIAoJCSAgICAgICRtb3VudGRpcnskc2xjfT0k
ZnM7CgkJICAgIH0KCQkgIH0KCSAgICAgIH0KCSAgfQoJZWxzZQoJICB7CgkgICAgaWYgKCR0eXBl
bWR7JG1kfSBlcSAiTWlycm9yIikgewoJICAgICAgd2FybiAiXGFXYXJuaW5nIDogZmlsc3lzdGVt
ICRmcyBoYXMgdHlwZSBNaXJyb3IgYW5kIG5vIHN1Ym1pcnJvclxuIjsKCSAgICB9CgkgICAgICAK
CSAgICAkZGVidWcgJiYgcHJpbnQgIiRtZCA6ICQjeyRzbGljZXskbWR9fSArIDEgc2xpY2VzXG4i
OwoJICAgIGZvcmVhY2ggbXkgJHN0cmlwZSAoMC4uJCN7JHNsaWNleyRtZH19KQoJICAgICAgewoJ
CWZvcmVhY2ggbXkgJHNsYyAoQHskc2xpY2V7JG1kfVskc3RyaXBlXX0pIHsKCQkgICRkZWJ1ZyAm
JiBwcmludCAiICAkc2xjXG4iOwoJCSAgJG1vdW50ZGlyeyRzbGN9PSRmczsKCQl9CgkgICAgICB9
CgkgIH0gCiAgICAgIH0KCQkJICAgICAgCiAgfQoKc3ViIHNwbGl0Zm9ybWF0CiAgewogICAgbXkg
JGNvbXB0ZXVyPTA7CgogICAgZm9yZWFjaCBteSAkc2QgKCBrZXlzICVkaXNraGFzaCkKICAgICAg
ewoJJGRldj0kZGlza2hhc2h7JHNkfTsKCWlmICgkdHJ5KQoJICB7CgkgICAgJG9wZW5jbWQ9Ijwg
cmVzZm9ybWF0JGRldiI7CgkgIH0KCWVsc2UKCSAgewoJICAgICRvcGVuY21kPSIkZm9ybWF0Y21k
ICRkZXYgfCI7CgkgIH0KCW9wZW4gKEZPUk0sICRvcGVuY21kKSB8fCBkaWUgIkNhbm5vdCBmb3Jr
IHRvIGZvcm1hdCA6ICQhIjsKCXdoaWxlICg8Rk9STT4pCgkgIHsKCSAgICBteSBAbGluZT1zcGxp
dCgiICIpOwoJICAgIGlmICggKCQjbGluZSA9PSA4IHx8ICQjbGluZSA9PSA2KSAmJiAkbGluZVsw
XSA9fiBtL15bMC03XSQvICkKCSAgICAgIHsKCQlteSAkZGV2aWNlPSIke2Rldn1zJGxpbmVbMF0i
OwoJCSRkaXNrcGh5eyRkZXZpY2V9PSRzZDsKCQkkcGFydHskZGV2aWNlfT0kbGluZVswXTsKCQkk
dGFneyRkZXZpY2V9PSRsaW5lWzFdOwoJCSRmbGFneyRkZXZpY2V9PSRsaW5lWzJdOwoJCWlmICgk
I2xpbmUgPT0gOCkgCgkJICB7CgkJICAgICRjeWx7JGRldmljZX09IiRsaW5lWzNdICRsaW5lWzRd
ICRsaW5lWzVdIjsKCQkgICAgJHNpemV7JGRldmljZX09JGxpbmVbNl07CgkJICAgICRibG9ja3N7
JGRldmljZX09IiRsaW5lWzddICRsaW5lWzhdIjsKCQkgIH0KCQllbHNlCgkJICB7CgkJICAgICRj
eWx7JGRldmljZX09JGxpbmVbM107CgkJICAgICRzaXpleyRkZXZpY2V9PSRsaW5lWzRdOwoJCSAg
ICAkYmxvY2tzeyRkZXZpY2V9PSIkbGluZVs1XSAkbGluZVs2XSI7CgkJICB9CgkJaWYgKCAhICRt
b3VudGRpcnskZGV2aWNlfSkKCQkgIHsKCQkgICAgaWYgKCAkcGFydHskZGV2aWNlfSA9PSAyICkK
CQkgICAgICB7CgkJCSRtb3VudGRpcnskZGV2aWNlfT0iTi9BIGJhY2t1cCI7CgkJICAgICAgfQoJ
CSAgICBlbHNpZiAoIiRzaXpleyRkZXZpY2V9IiBlcSAiMCIpCgkJICAgICAgewoJCQkkbW91bnRk
aXJ7JGRldmljZX09Ik51bGwiOwoJCSAgICAgIH0KCQkgICAgZWxzZQoJCSAgICAgIHsKCQkJJG1v
dW50ZGlyeyRkZXZpY2V9PSIqKiBGUkVFICoqIjsKCQkgICAgICB9CgkJICB9CQkKCSAgICAgIH0K
CSAgfQoJY2xvc2UgRk9STSB8fCBkaWUgJCEgPyAiRXJyb3IgY2xvc2luZyBmb3JtYXQgcGlwZSA6
ICQhIgogICAgICAgICAgICAgICAgICAgICAgICAgICA6ICJFcnJvciBydW5uaW5nIGZvcm1hdCA6
IGV4aXQgc3RhdHVzICQ/IjsKICAgICAgfQogIH0KCnN1YiBzcGxpdGZvcm1hdGluaXQKICB7CiAg
ICBpZiAoJHRyeSkKICAgICAgewoJJG9wZW5jbWQ9IjwgcmVzZm9ybWF0aW5pdCI7CiAgICAgIH0K
ICAgIGVsc2UKICAgICAgewoJJG9wZW5jbWQ9IiRmb3JtYXRpbml0Y21kIHwiOwogICAgICB9CiAg
ICBteSAkbnVtYmVyPTE7CiAgICBvcGVuIChGT1JNQVQsICRvcGVuY21kKSB8fCBkaWUgIkNhbm5v
dCBmb3JrIHRvIGZvcm1hdCI7CiAgICB3aGlsZSAoPEZPUk1BVD4pCiAgICAgIHsKCW15IEBsaW5l
ID0gc3BsaXQgIiAiOwoJCgluZXh0IGlmICgkI2xpbmUgPCAwKTsKCWlmICgkbGluZVswXSA9fiBt
L14oWzAtOV0rKVwuJC8pCgkgIHsKCSAgICAkbnVtZGlza3skK309JG51bWJlcisrOwoJICAgIGlm
ICggJGRpc2tzdWl0ZSApIHsgCgkgICAgICAoJGRpc2toYXNoeyQrfT0kbGluZVsxXSkgPX4gcywv
ZGV2L3Jkc2svKGNcZCt0XGQrZFxkKylzXGQrLCQxLCA7CgkgICAgfQoJICAgIGVsc2UgewoJICAg
ICAgJGRpc2toYXNoeyQrfT0kbGluZVsxXTsKCSAgICB9CgkgIH0KICAgICAgfQogICAgY2xvc2Ug
Rk9STUFUIHx8IGRpZSAkISA/ICJFcnJvciBjbG9zaW5nIGZvcm1hdCBwaXBlIDogJCEiCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDogIkVycm9yIHJ1bm5pbmcgZm9ybWF0IDogZXhpdCBzdGF0
dXMgJD8iOwogIH0KCnN1YiBzcGxpdG1ldGFkYgogIHsKICAgIG9wZW4gKE1EQiwgIiRtZXRhZGJj
bWQgfCIpIHx8IGRpZSAiQ2Fubm90IGZvcmsgdG8gbWV0YWRiIjsKICAgIHdoaWxlICg8TURCPikK
ICAgICAgewoJbXkgQGxpbmUgPSBzcGxpdCgiICIpOwoJCglpZiAoJGxpbmVbJCNsaW5lXSA9fiBt
p14vZGV2L2Rzay8oY1xkK3RcZCtkXGQrc1xkKymnKSAKCSAgeyAkbW91bnRkaXJ7JCt9PSJNZXRh
REIiOyB9CiAgICAgIH0KICAgIGNsb3NlIE1EQiB8fCBkaWUgJCEgPyAiRXJyb3IgY2xvc2luZyBt
ZXRhZGIgcGlwZSA6ICQhIgogICAgICAgICAgICAgICAgICAgICAgICAgICA6ICJFcnJvciBydW5u
aW5nIG1ldGFkYiA6IGV4aXQgc3RhdHVzICQ/IjsKICB9CgpzdWIgcGxmcyAKICB7CiAgICBteSAk
ZnNwb2ludGVyPXNoaWZ0OwogICAgcmV0dXJuIGlmICgkIyRmc3BvaW50ZXIgPCAwKTsKCiAgICBw
cmludCAiLS0tLS0tLS0tLS0tLS1cbiI7CiAgICBwcmludCAiZmlsZSBzeXN0ZW1zIDpcbiI7CiAg
ICBwcmludCAiLS0tLS0tLS0tLS0tLS1cbiI7CgogICAgZm9yZWFjaCBteSAkZnMgKHNvcnQgeyRu
dW1mc3skYX0gPD0+ICRudW1mc3skYn19IEAkZnNwb2ludGVyKQogICAgICB7CglpZiAoICRkaXNr
c3VpdGUgKSB7CgkgIG15ICRtZD0kbWRmc3skZnN9OwoJICBwcmludGYgIlxuXG4qKiBmaWxlIHN5
c3RlbSAlLTEwcyAlLTIwcyAlLTE2cyAlLTZzICglM3MpXG4iLCAkZnMsICR0eXBlZnN7JGZzfSwg
JGZ1bGxtZHskbWR9LCAkc2l6ZXskZnN9LCAkdXNlZHskZnN9OwoJICBpZiAoICQjJG1kID49IDAg
KQoJICAgIHsKCSAgICAgIGZvcmVhY2ggbXkgJHN1Ym1pciAoQCRtZCkKCQl7CgkJICBwcmludGYi
XG4gICAlNHM6IFN1Ym1pcnJvciBvZiAlLTNzIFN0YXRlIDogJS0xMHMgU2l6ZSA6ICUxMGQgYmxv
Y2tzXG4iLCAkc3VibWlyLCAkbWQsICRzdGF0ZW1keyRzdWJtaXJ9LCAkc2l6ZW1keyRzdWJtaXJ9
OwoJCSAgZm9yZWFjaCBteSAkc3RyaXBlICgwLi4kI3skc2xpY2V7JHN1Ym1pcn19KQoJCSAgICB7
CgkJICAgICAgZm9yZWFjaCBteSAkc2xjIChAeyRzbGljZXskc3VibWlyfVskc3RyaXBlXX0pIHsK
CQkJcHJpbnRmICIgICAgICBTdHJpcGUgJTJkOiAlLTEwcyAoZGlzayAlMmQpXG4iLCAkc3RyaXBl
LCAkc2xjLCAkZGlza3BoeXskc2xjfTsKCQkgICAgICB9CgkJICAgIH0KCQl9CgkgICAgfQoJICBl
bHNlCgkgICAgewoJICAgICAgcHJpbnRmICJcbiAgICU0czogU2l6ZTogJTEwZCBibG9ja3NcbiIs
ICRtZCwgJHNpemVtZHskbWR9OwoJICAgICAgZm9yZWFjaCBteSAkc3RyaXBlICgwLi4kI3skc2xp
Y2V7JG1kfX0pCgkJewoJCSAgZm9yZWFjaCBteSAkc2xjIChAeyRzbGljZXskbWR9WyRzdHJpcGVd
fSkgewoJCSAgICBwcmludGYgIiAgICAgIFN0cmlwZSAlMmQ6ICUtMTBzIChkaXNrICUyZClcbiIs
ICRzdHJpcGUsICRzbGMsICRkaXNrcGh5eyRzbGN9OwoJCSAgfQoJCX0KCSAgICB9Cgl9CgllbHNl
IHsKCSAgbXkgJGRzaz0kZGlza2ZzeyRmc307CgkgIHByaW50ZiAiXG4qKiBmaWxlIHN5c3RlbSAl
LTEwcyAlLTIwcyAlLTZzICglM3MpXG4iLCAkZnMsICRmdWxsZGlza3skZHNrfSwgJHNpemV7JGZz
fSwgJHVzZWR7JGZzfTsKCX0KICAgICAgfQogICAgcHJpbnQgIlxuXG5cbiI7CiAgfQoKc3ViIHBs
ZGlza3MKICB7CiAgICBteSAkZGlza3BvaW50ZXI9c2hpZnQ7CiAgICByZXR1cm4gaWYgKCQjJGRp
c2twb2ludGVyIDwgMCk7CgogICAgcHJpbnQgIi0tLS0tLS1cbiI7CiAgICBwcmludCAiZGlza3Mg
OlxuIjsKICAgIHByaW50ICItLS0tLS0tXG4iOwoKICAgICRzaXplZnJlZWN5bHM9MDsKICAgIGZv
cmVhY2ggbXkgJHNkIChzb3J0IHskbnVtZGlza3skYX0gPD0+ICRudW1kaXNreyRifX0gQCRkaXNr
cG9pbnRlcikKICAgICAgewoJcHJpbnQgIlxuZGlzayAkc2Q6XG4iOwoJcHJpbnQgIlxuUGFydCAg
ICAgIFRhZyAgIEZsYWcgICAgICBDeWxpbmRlcnMgICAgICAgIFNpemUgICAgICBNb3VudCBEaXJl
Y3RvcnkgIFBhcnRpdGlvblxuIjsKCQoJJGRldj0kZGlza2hhc2h7JHNkfTsKCglteSAkcGFydGl0
aW9uPTA7Cgl3aGlsZSAoJHBhcnRpdGlvbiA8IDgpCgkgIHsKCSAgICBteSAkZGV2aWNlPSIke2Rl
dn1zJHBhcnRpdGlvbiI7CgkgICAgcHJpbnRmICIlM2QgJTEwcyAlNHMgJTE2cyAlMTBzICUyMHMg
JTEwc1xuIiwkcGFydGl0aW9uKyssICR0YWd7JGRldmljZX0sICRmbGFneyRkZXZpY2V9LCAkY3ls
eyRkZXZpY2V9LCAkc2l6ZXskZGV2aWNlfSwgJG1vdW50ZGlyeyRkZXZpY2V9LCAkZGV2aWNlOwoJ
ICB9CgoJcHJpbnQgIlxuIjsKIyBsb29raW5nIGZvciB1bmFzc2lnbmVkIGN5bGluZGVycwoJbXkg
KCRmaXJzdGN5bCwgJGF1eCwgJGxhc3RjeWwpID0gc3BsaXQgKCIgIiwgJGN5bHsiJHtkZXZ9czIi
fSk7CglteSAkZmFjdG9yPSgmbWJzaXplKCRzaXpleyIke2Rldn1zMiJ9KS8oJGxhc3RjeWwtJGZp
cnN0Y3lsKzEpKTsKCSRwYXJ0aXRpb249LTE7CgkkbmV4dGN5bD0kZmlyc3RjeWw7Cgl3aGlsZSAo
KyskcGFydGl0aW9uIDwgOCkKCSAgewoJICAgIGlmICgkcGFydGl0aW9uID09IDIpIHsgJGN5bHBh
cnRbJHBhcnRpdGlvbl09WzAsMF07IG5leHQgfQoJICAgICRkZXZpY2U9IiR7ZGV2fXMkcGFydGl0
aW9uIjsKCSAgICBAYXV4PXNwbGl0ICgiICIsICRjeWx7JGRldmljZX0pOwoJICAgIGlmICgkI2F1
eCA8IDIpIHskY3lscGFydFskcGFydGl0aW9uXT1bMCwwXTsgbmV4dH0KCSAgICAkY3lscGFydFsk
cGFydGl0aW9uXT1bJGF1eFswXSwkYXV4WzJdXTsKCSAgfQogCUBzb3J0ZWRwYXJ0ID0gQGN5bHBh
cnRbc29ydCB7ICRjeWxwYXJ0WyRhXVswXSA8PT4gJGN5bHBhcnRbJGJdWzBdfSAwLi4kI2N5bHBh
cnRdOwogCSRwYXJ0aXRpb249LTE7CiAJd2hpbGUgKCsrJHBhcnRpdGlvbiA8IDgpCiAJICB7CiAJ
ICAgIG5leHQgdW5sZXNzICgkc29ydGVkcGFydFskcGFydGl0aW9uXVsxXSA+IDApOwogCSAgICBp
ZiAoICRuZXh0Y3lsID4gJHNvcnRlZHBhcnRbJHBhcnRpdGlvbl1bMF0gKQogCSAgICAgIHsKCQlp
ZiAoJG5leHRjeWwgPD0gICRzb3J0ZWRwYXJ0WyRwYXJ0aXRpb25dWzFdICkKCQkgIHsKCQkgICAg
JGM9JG5leHRjeWwtMQoJCSAgfQoJCWVsc2UKCQkgIHsKCQkgICAgJGM9JHNvcnRlZHBhcnRbJHBh
cnRpdGlvbl1bMV07CgkJICB9CiAJCXByaW50ZiAiIE9WRVJMQVkgZnJvbSBjeWxpbmRlciAlZCB0
byBjeWxpbmRlciAlZFxuIiwkc29ydGVkcGFydFskcGFydGl0aW9uXVswXSwkYyAgOwogCSAgICAg
IH0KIAkgICAgZWxzaWYoICRuZXh0Y3lsIDwgJHNvcnRlZHBhcnRbJHBhcnRpdGlvbl1bMF0gKQog
CSAgICAgIHsKCQlteSAkZnJlZT0oJHNvcnRlZHBhcnRbJHBhcnRpdGlvbl1bMF0tJG5leHRjeWwp
KiRmYWN0b3I7CgkJJHNpemVmcmVlY3lscyArPSAkZnJlZTsKCQlteSAkdW5pdDsKCQlpZiAoJGZy
ZWUgPj0gMTAyNCkKCQkgIHsKCQkgICAgJGZyZWUgLz0gMTAyNDsKCQkgICAgJHVuaXQgPSAiR0Ii
OwoJCSAgfQoJCWVsc2UKCQkgIHsKCQkgICAgJHVuaXQgPSAiTUIiOwoJCSAgfQogCQlwcmludGYg
IiBVTkFTU0lHTkVEIGN5bGluZGVycyBmcm9tICU0ZCB0byAlNGQgOiAlNC4yZiAlcyBmcmVlXG4i
LCRuZXh0Y3lsLCRzb3J0ZWRwYXJ0WyRwYXJ0aXRpb25dWzBdLTEsICRmcmVlLCAkdW5pdDsKIAkg
ICAgICB9CiAJICAgICRuZXh0Y3lsPSRzb3J0ZWRwYXJ0WyRwYXJ0aXRpb25dWzFdKzEgaWYgKCRu
ZXh0Y3lsIDw9ICRzb3J0ZWRwYXJ0WyRwYXJ0aXRpb25dWzFdKTsKIAkgIH0KCWlmICggJG5leHRj
eWwgPD0gJGxhc3RjeWwpCgkgIHsKCSAgICBteSAkZnJlZT0oJGxhc3RjeWwtJG5leHRjeWwrMSkq
JGZhY3RvcjsKCSAgICAkc2l6ZWZyZWVjeWxzICs9ICRmcmVlOwoJICAgIG15ICR1bml0OwoJICAg
IGlmICgkZnJlZSA+PSAxMDI0KQoJICAgICAgewoJCSRmcmVlIC89IDEwMjQ7CgkJJHVuaXQgPSAi
R0IiOwoJICAgICAgfQoJICAgIGVsc2UKCSAgICAgIHsKCQkkdW5pdCA9ICJNQiI7CgkgICAgICB9
CgkgICAgcHJpbnRmICIgVU5BU1NJR05FRCBjeWxpbmRlcnMgZnJvbSAlNGQgdG8gJTRkIDogJTQu
MmYgJXMgZnJlZVxuIiwkbmV4dGN5bCwkbGFzdGN5bCwgJGZyZWUsICR1bml0OwoJICB9CiAgICAg
IH0KICAgIG15ICR1bml0OwogICAgaWYgKCRzaXplZnJlZWN5bHMgPj0gMTAyNCkKICAgICAgewoJ
JHNpemVmcmVlY3lscyAvPSAxMDI0OwoJJGN1bml0ID0gIkdCIjsKICAgICAgfQogICAgZWxzZQog
ICAgICB7CgkkY3VuaXQ9Ik1CIjsKICAgICAgfQogICAgcHJpbnQgIlxuXG5cbiI7CiAgfQoKc3Vi
IHBsZnBhcnQKICB7CiAgICBwcmludCAiLS0tLS0tLS0tLS0tLS0tLS1cbiI7CiAgICBwcmludCAi
ZnJlZSBwYXJ0aXRpb25zIDpcbiI7CiAgICBwcmludCAiLS0tLS0tLS0tLS0tLS0tLS1cbiI7Cgog
ICAgJGZyZWVwc3VtPTA7CgogICAgZm9yZWFjaCBteSAkc2QgKGtleXMgJWRpc2toYXNoKQogICAg
ICB7CglteSAkZGV2PSRkaXNraGFzaHskc2R9OwoJJGZyZWU9Im5vIjsKCW15ICRwYXJ0aXRpb24g
PSAwOwoJd2hpbGUgKCAkcGFydGl0aW9uIDwgOCkKCSAgewoJICAgIG15ICRkZXZpY2U9IiR7ZGV2
fXMkcGFydGl0aW9uIjsKCgkgICAgbXkgJG1vdW50PSRtb3VudGRpcnskZGV2aWNlfTsKCgkgICAg
aWYgKCIkbW91bnQiIGVxICIqKiBGUkVFICoqIikKCSAgICAgIHsKCQlpZiAoICIkZnJlZSIgZXEg
Im5vIikKCQkgIHsKCQkgICAgcHJpbnQgIlxuZGlzayAkc2QgOlxuXG4iOwoJCSAgICAkZnJlZSA9
ICJ5ZXMiOwoJCSAgfQoJCXByaW50ZiAiICUzZCAlMTBzICU0cyAlMTZzICUxMHMgJTIwc1xuIiwg
JHBhcnRpdGlvbiwgJHRhZ3skZGV2aWNlfSwgJGZsYWd7JGRldmljZX0sICRjeWx7JGRldmljZX0s
ICRzaXpleyRkZXZpY2V9LCAkYmxvY2tzeyRkZXZpY2V9OwoKCQkkZnJlZXBzdW0gKz0gJm1ic2l6
ZSgkc2l6ZXskZGV2aWNlfSk7CgkgICAgICB9CgkgICAgJHBhcnRpdGlvbisrOwoJICB9CiAgICAg
IH0KCiAgICBpZiAoICRmcmVlcHN1bSA+PSAxMDI0KQogICAgICB7CgkkZnJlZXBzdW0gLz0gMTAy
NDsKCSRwdW5pdD0iR0IiOwogICAgICB9CiAgICBlbHNlCiAgICAgIHsKCSRwdW5pdD0iTUIiOwog
ICAgICB9CiAgICBwcmludCAiXG5cblxuIjsKICB9CgpzdWIgcGxzdW1tYXJ5CiAgewogICAgcHJp
bnQgIi0tLS0tLS0tLVxuIjsKICAgIHByaW50ICJzdW1tYXJ5IDpcbiI7CiAgICBwcmludCAiLS0t
LS0tLS0tXG5cblxuIjsKCiAgICBwcmludGYgIiBUb3RhbCBzaXplIG9mIHVuYXNzaWduZWQgY3ls
aW5kZXJzIG9uIGFsbCBkaXNrcyA6ICUuMmYgJGN1bml0XG4iLCAkc2l6ZWZyZWVjeWxzOwogICAg
cHJpbnRmICIgVG90YWwgZnJlZSBzcGFjZSBpbiB1bmFzc2lnbmVkIHBhcnRpdGlvbnMgOiAlLjJm
ICRwdW5pdFxuIiwgJGZyZWVwc3VtOwogICAgcHJpbnRmICIgVG90YWwgbnVtYmVyIG9mIGRpc2tz
IDogJTJkXG4iLCAkI2Rpc2tsaXN0KzE7CiAgICBwcmludGYgIiBUb3RhbCBudW1iZXIgb2YgbG9j
YWwgZmlsZS1zeXN0ZW1zIDogJTNkXG4iLCAkI2ZzbGlzdCsxOwogICAgJG5ibWlyZnM9MDsKICAg
ICBpZiAoJGRpc2tzdWl0ZSkgewogICAgICAgZm9yZWFjaCBteSAkZnMgKEBmc2xpc3QpIHsKIAkg
aWYgKCR0eXBlZnN7JGZzfSA9fiBtL15NaXJyb3IkLykgewogCSAgJG5ibWlyZnMgKz0gMTsKIAl9
CiAgICAgIH0KICAgICB9CgogICAgcHJpbnRmICIgVG90YWwgbnVtYmVyIG9mIG1pcnJvcmVkIGZp
bGUtc3lzdGVtcyA6ICUyZFxuIiwkbmJtaXJmczsKICAgIHByaW50ICJcblxuXG4iOwogIH0KCnN1
YiBtYnNpemUKICB7CiAgICBteSAkc2l6ZT1zaGlmdDsKICAgIGlmICggJHNpemUgPX4gbS9eKFsw
LTkuXSopTUIkLykKICAgICAgewoJJG1ic2l6ZSA9ICQrOwogICAgICB9CiAgICBlbHNpZiAoICRz
aXplID1+IG0vXihbMC05Ll0qKUdCJC8pCiAgICAgIHsKCSRtYnNpemUgPSAkKyAqIDEwMjQgOwog
ICAgICB9CiAgICByZXR1cm4gJG1ic2l6ZTsKICB9CgpzdWIgdW5pcXVlCiAgewogICAgbXkgQGFy
cmF5PUBfOwogICAgCiAgICBteSAkaT0tMTsKCiAgICB3aGlsZSAoKyskaSA8PSAkI2FycmF5KQog
ICAgICB7Cgkkaj0kaTsKCXdoaWxlICgrKyRqIDw9ICQjYXJyYXkpIAoJICB7CgkgICAgc3BsaWNl
IChAYXJyYXksICRqLCAxKSBpZiAoICRhcnJheVskaV0gZXEgJGFycmF5WyRqXSk7CgkgIH0KICAg
ICAgfQogICAgcmV0dXJuIEBhcnJheTsKICB9CgpzdWIgc2VsZWN0ZGV2CiAgewogICAgaWYgKCAk
I2ZzID49IDAgKQogICAgICB7Cglmb3JlYWNoIG15ICRmcyAoQGZzKQoJICB7CgkgICAgJGZzPSIv
JGZzIiB1bmxlc3MgKCRmcyA9fiBtLF4vLCk7CgkgICAgZGllICJmaWxlIHN5c3RlbSAkZnMgbm90
IGZvdW5kIGJ5IGRmXG4iIHVubGVzcyAoZXhpc3RzICRtZGZzeyRmc30gfHwgZXhpc3RzICRkaXNr
ZnN7JGZzfSk7CgkgICAgcHVzaCAoQGZzbGlzdCwgJGZzKTsKCSAgfQoJZm9yZWFjaCBteSAkc2Qg
KGtleXMgJWRpc2toYXNoKQoJICB7CgkgICAgZm9yZWFjaCBteSAkcGFydGl0aW9uICgwLi43KQoJ
ICAgICAgewoJCW15ICR0cm91dmU9MDsKCQlmb3JlYWNoIG15ICRmcyAoQGZzbGlzdCkKCQkgIHsK
CQkgICAgaWYgKCRtb3VudGRpcnsiJGRpc2toYXNoeyRzZH1zJHBhcnRpdGlvbiJ9IGVxICRmcykK
CQkgICAgICB7CgkJCXB1c2ggKEBkaXNrbGlzdCwgJHNkKTsKCQkJJHRyb3V2ZT0xOwoJCQlsYXN0
OwoJCSAgICAgIH0KCQkgIH0KCQlsYXN0IGlmICR0cm91dmU7CgkgICAgICB9CgkgIH0KICAgICAg
fQogICAgZWxzaWYgKCQjZHNrbCA+PSAwKQogICAgICB7Cglmb3JlYWNoIG15ICRkc2sgKCBAZHNr
bCApCgkgIHsKCSAgICBkaWUgImRpc2sgJGRzayBub3QgZm91bmQuXG4gUGxlYXNlIHJ1biBmb3Jt
YXQgdG8gc2VlIHRoZSBsaXN0IG9mIGRpc2tzLlxuIiB1bmxlc3MgZXhpc3RzICRkaXNraGFzaHsk
ZHNrfTsKCSAgICBmb3JlYWNoIG15ICRwYXJ0aXRpb24gKDAuLjcpCgkgICAgICB7CgkJJF8gPSAk
bW91bnRkaXJ7IiRkaXNraGFzaHskZHNrfXMkcGFydGl0aW9uIn07CgkJaWYgKCBtp14vpykKCQkg
IHsKCQkgICAgcHVzaCAoQGZzbGlzdCwkXyk7CgkJICB9CgkgICAgICB9CgkgICAgcHVzaCAoQGRp
c2tsaXN0LCAkZHNrKTsKCSAgfQogICAgICB9CiAgICBlbHNpZiAoJCNtZGwgPj0gMCkKICAgICAg
ewoJZm9yZWFjaCBteSAkbWQgKEBtZGwpCgkgIHsKCSAgICAkZGVidWcgJiYgcHJpbnQgIm1ldGFk
ZXZpY2UgJG1kIDogJCN7JG1kfSArIDEgc3VibWlyc1xuIjsKCSAgICBkaWUgIm1ldGEtZGV2aWNl
ICRtZCBub3QgZm91bmQgYnkgbWV0YXN0YXRcbiIgdW5sZXNzIGV4aXN0cyAkc2l6ZW1keyRtZH07
CgkgICAgaWYgKCAkIyRtZCA+PSAwICkKCSAgICAgIHsKCQkjIG1kIGlzIGEgbWlycm9yZWQgbWV0
YWRldmljZS4gbGV0IHVzIGNvbnNpZGVyIGVhY2ggc3VibWlycm9yCgkJZm9yZWFjaCBteSAkc3Vi
bWlyIChAJG1kKQoJCSAgewoJCSAgICBmb3JlYWNoIG15ICRzbGljZSAoMC4uJCN7JHNsaWNleyRz
dWJtaXJ9fSkKCQkgICAgICB7CgkJCWZvcmVhY2ggbXkgJHNsYyAoQHskc2xpY2V7JHN1Ym1pcn1b
JHN0cmlwZV19KSB7CgkJCSAgcHVzaCAoQGZzbGlzdCwgJG1vdW50ZGlyeyRzbGN9KSBpZiBleGlz
dHMgJG1kZnN7JG1vdW50ZGlyeyRzbGN9fTsKCQkJICBwdXNoIChAZGlza2xpc3QsICRkaXNrcGh5
eyRzbGN9KTsKCQkJfQoJCSAgICAgIH0KCQkgIH0KCSAgICAgIH0KCSAgICBlbHNpZiAoZXhpc3Rz
ICRtYWlubWR7JG1kfSkKCSAgICAgICMgbWQgaXMgYSBzdWJtaXJyb3IsIHdlIHNoYWxsIGV4YW1p
bmUgdGhlIHdob2xlIG1pcnJvcgoJICAgICAgewoJCSRkZWJ1ZyAmJiBwcmludCAic3VibWlycm9y
IG9mICRtYWlubWR7JG1kfVxuIjsKCQkkbWQ9JG1haW5tZHskbWR9OwoJCXJlZG87CgkgICAgICB9
CgkgICAgZWxzZQoJICAgICAgIyBtZCBpcyBub3QgYSBtaXJyb3JlZCBtZXRhLWRldmljZQoJICAg
ICAgewoJCWZvcmVhY2ggbXkgJHN0cmlwZSAoMC4uJCN7JHNsaWNleyRtZH19KQoJCSAgewoJCSAg
ICBmb3JlYWNoIG15ICRzbGMgKEB7JHNsaWNleyRtZH1bJHN0cmlwZV19KSB7CQkgICAgICAKCQkg
ICAgICBwdXNoIChAZnNsaXN0LCAkbW91bnRkaXJ7JHNsY30pIGlmICgkbW91bnRkaXJ7JHNsY30g
PX4gbadeL6cpOwoJCSAgICAgIHB1c2ggKEBkaXNrbGlzdCwgJGRpc2twaHl7JHNsY30pOwoJCSAg
ICB9CgkJICB9CgkgICAgICB9IAoJICB9CiAgICAgIH0JCiAgICBlbHNlCiAgICAgIHsJCglpZiAo
ICRkaXNrc3VpdGUgKSB7IEBmc2xpc3Q9a2V5cyAlbWRmcyB9CgllbHNlIHsgQGZzbGlzdCA9IGtl
eXMgJWRpc2tmcyB9CglAZGlza2xpc3Q9a2V5cyAlZGlza2hhc2g7CiAgICAgIH0KICAgIAogICAg
QGZzbGlzdCAgID0gJnVuaXF1ZShAZnNsaXN0KTsKICAgIEBkaXNrbGlzdCA9ICZ1bmlxdWUoQGRp
c2tsaXN0KTsKICB9CiMKIyBtYWluCiMKCiMgbG9vayBmb3IgbG9jYWwgZmlsZXN5c3RlbXMKJnNw
bGl0ZGY7CmlmICggJGxmcyApIHsgQGZzbGlzdD1zb3J0IHskbnVtZnN7JGF9IDw9PiAkbnVtZnN7
JGJ9fSBrZXlzICVudW1mczsgJCI9IlxuIjsgcHJpbnQgIlxubGlzdCBvZiBsb2NhbCBmaWxlLXN5
c3RlbXM6XG5cbkBmc2xpc3RcbiI7IGV4aXQgMCB9CiMgbG9vayBmb3IgZGlza3MKJnNwbGl0Zm9y
bWF0aW5pdDsKaWYgKCAkbGRpc2sgKSB7CiAgcHJpbnQgIlxuIGxpc3Qgb2YgZGlza3M6XG5cbiI7
CiAgZm9yZWFjaCBteSAkZGlzayAoc29ydCB7JG51bWRpc2t7JGF9IDw9PiAkbnVtZGlza3skYn19
IGtleXMgJWRpc2toYXNoKSB7CiAgICBwcmludCAiJGRpc2sgICgkZGlza2hhc2h7JGRpc2t9KVxu
IjsKICB9CiAgZXhpdCAwOwp9CgppZiAoJGRpc2tzdWl0ZSkgewojIGxvb2sgZm9yIHBhcnRpdGlv
bnMgYXNzb2NpYXRlZCB3aXRoIGZpbGVzeXN0ZW1zCiAgJnNwbGl0bWV0YTsKICBpZiAoICRsbWQg
KSB7CiAgICBmb3JlYWNoIG15ICRmcyAoa2V5cyAlbWRmcyl7CiAgICAgIG15ICRtZD0kbWRmc3sk
ZnN9OwogICAgICBwdXNoIChAbWRsaXN0LCAkbWQpOwogICAgICBpZiAoICQjJG1kID49IDAgKSB7
Cglmb3JlYWNoIG15ICRzdWJtaXIgKEAkbWQpIHsKCSAgcHVzaCAoQG1kbGlzdCwgJHN1Ym1pcik7
Cgl9CiAgICAgIH0KICAgIH0KICAgIEBtZGxpc3QgPSBzb3J0IEBtZGxpc3Q7CiAgICAkIj0iXG4i
OyBwcmludCAiXG4gbGlzdCBvZiBtZXRhZGV2aWNlczpcblxuQG1kbGlzdFxuIjsgZXhpdCAwCiAg
fQojIGxvb2sgZm9yIG1ldGEgZGF0YSBiYXNlCiAgJnNwbGl0bWV0YWRiOwp9CiMgbG9vayBmb3Ig
c3dhcCBzcGFjZQomc3BsaXRzd2FwOwojIGxvb2sgZm9yIHBhcnRpdGlvbnMgb24gZWFjaCBkaXNr
CiZzcGxpdGZvcm1hdDsKIwpleGl0IDAgaWYgKCR3YXJuaW5ncyk7CiMgc2VsZWN0IGRldmljZXMg
b24gd2hpY2ggaW5mb3JtYXRpb25zIHNob3VsZCBiZSBwcmludGVkCiZzZWxlY3RkZXY7CnByaW50
ICJAZnNsaXN0XG4iIGlmICgkZGVidWcpOwojcHJpbnQgcGVyIGZpbGVzeXN0ZW0gcmVzdWx0cwom
cGxmcyhcQGZzbGlzdCk7CiMgcHJpbnQgcGVyIGRpc2sgcmVzdWx0cwomcGxkaXNrcyhcQGRpc2ts
aXN0KTsKIyBsaXN0IGZyZWUgcGFydGl0aW9ucwppZiAoICQjZnMgPCAwICYmICQjZHNrbCA8IDAg
JiYgJCNtZGwgPCAwKSB7CiAgJnBsZnBhcnQ7CiAgJnBsc3VtbWFyeTsKfQo=

--0__=C1256AE800305D048f9e8a93df938690918cC1256AE800305D04--
Received on Wed Oct 17 09:57:10 2001

This archive was generated by hypermail 2.1.8 : Wed Mar 23 2016 - 16:32:33 EDT