Subject: Re: NetBSD 1.5 on uVAX II (Questions)
To: Havard Eidnes <he@netbsd.org>
From: David Brownlee <abs@netbsd.org>
List: port-vax
Date: 01/03/2001 13:33:54
  This message is in MIME format.  The first part should be readable text,
  while the remaining parts are likely unreadable without MIME-aware tools.
  Send mail to mime@docserver.cac.washington.edu for more info.

--0-1255036178-978528834=:17395
Content-Type: TEXT/PLAIN; charset=US-ASCII


On Fri, 29 Dec 2000, Havard Eidnes wrote:

> it seems I have to correct myself -- cat'ing together the rc.d
> scripts together with glue from the current rc file isn't really
> going to significantly reduce the number of processes started during
> the boot process, due to the following snippet from rc.subr, from
> run_rc_script, called from run_rc_command which is again called from
> /etc/rc itself:
>
> ...
>         case "$_file" in
>         *.sh)                           # run in current shell
>                 set $_arg ; . $_file
>                 ;;
>         *)                              # run in subshell
>                 ( set $_arg ; . $_file )
>                 ;;
>         esac

	I came to the same conclusion and posted a tweaked rc.subr which
	avoids the run_rc_script overhead:

    > I've just been playing with rc.subr (sample attached), and on
    > my 1.5 sparc box (no vaxen at work :/), the time taken to process
    > rc.d dropped from 41 to 35 seconds.
    >
    > Can someone on a CPU/memory challenged vax could drop the modified
    > rc.subr over their /etc/rc.subr and time a boot?
    >
    > (I find adding a 'date' to /etc/rc just before 'for i in $files'
    > and diffing with the final date in the bootup useful :)

	Has anyone on a slow vax had a chance to time it?

                David/absolute          -- www.netbsd.org: No hype required --

--0-1255036178-978528834=:17395
Content-Type: TEXT/PLAIN; charset=US-ASCII; name="rc.subr"
Content-Transfer-Encoding: BASE64
Content-ID: <Pine.NEB.4.30.0101031333540.17395@odysseus.int.purplei.com>
Content-Description: 
Content-Disposition: attachment; filename="rc.subr"

IyAkTmV0QlNEOiByYy5zdWJyLHYgMS4yMC4yLjQgMjAwMC8xMC8wMiAwMTow
Mjo0OSBsdWtlbSBFeHAgJA0KIw0KIyBDb3B5cmlnaHQgKGMpIDE5OTctMjAw
MCBUaGUgTmV0QlNEIEZvdW5kYXRpb24sIEluYy4NCiMgQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4NCiMNCiMgVGhpcyBjb2RlIGlzIGRlcml2ZWQgZnJvbSBzb2Z0
d2FyZSBjb250cmlidXRlZCB0byBUaGUgTmV0QlNEIEZvdW5kYXRpb24NCiMg
YnkgTHVrZSBNZXdidXJuLg0KIw0KIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQN
CiMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zDQojIGFyZSBtZXQ6DQojIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0DQojICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4NCiMgMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQNCiMgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQ0KIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLg0KIyAzLiBBbGwg
YWR2ZXJ0aXNpbmcgbWF0ZXJpYWxzIG1lbnRpb25pbmcgZmVhdHVyZXMgb3Ig
dXNlIG9mIHRoaXMgc29mdHdhcmUNCiMgICAgbXVzdCBkaXNwbGF5IHRoZSBm
b2xsb3dpbmcgYWNrbm93bGVkZ2VtZW50Og0KIyAgICAgICAgVGhpcyBwcm9k
dWN0IGluY2x1ZGVzIHNvZnR3YXJlIGRldmVsb3BlZCBieSB0aGUgTmV0QlNE
DQojICAgICAgICBGb3VuZGF0aW9uLCBJbmMuIGFuZCBpdHMgY29udHJpYnV0
b3JzLg0KIyA0LiBOZWl0aGVyIHRoZSBuYW1lIG9mIFRoZSBOZXRCU0QgRm91
bmRhdGlvbiBub3IgdGhlIG5hbWVzIG9mIGl0cw0KIyAgICBjb250cmlidXRv
cnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3Rz
IGRlcml2ZWQNCiMgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLg0KIw0KIyBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBORVRCU0QgRk9VTkRBVElPTiwg
SU5DLiBBTkQgQ09OVFJJQlVUT1JTDQojIGBgQVMgSVMnJyBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRA0KIyBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUg0K
IyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIEZPVU5EQVRJT04gT1IgQ09OVFJJQlVUT1JTDQojIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1INCiMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YNCiMg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTDQojIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElODQojIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpDQoj
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFDQojIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLg0KIw0KIyByYy5zdWJyDQojCWZ1bmN0aW9ucyB1
c2VkIGJ5IHZhcmlvdXMgcmMgc2NyaXB0cw0KIw0KDQojDQojCWZ1bmN0aW9u
cw0KIwktLS0tLS0tLS0NCg0KIw0KIyBjaGVja3llc25vIHZhcg0KIwlUZXN0
ICQxIHZhcmlhYmxlLCBhbmQgd2FybiBpZiBub3Qgc2V0IHRvIFlFUyBvciBO
Ty4NCiMJUmV0dXJuIDAgaWYgaXQncyAieWVzIiAoZXQgYWwpLCBub256ZXJv
IG90aGVyd2lzZS4NCiMNCmNoZWNreWVzbm8oKQ0Kew0KCWV2YWwgX3ZhbHVl
PVwkJHsxfQ0KCWNhc2UgJF92YWx1ZSBpbg0KDQoJCSMJInllcyIsICJ0cnVl
IiwgIm9uIiwgb3IgIjEiDQoJW1l5XVtFZV1bU3NdfFtUdF1bUnJdW1V1XVtF
ZV18W09vXVtObl18MSkNCgkJcmV0dXJuIDANCgkJOzsNCg0KCQkjCSJubyIs
ICJmYWxzZSIsICJvZmYiLCBvciAiMCINCglbTm5dW09vXXxbRmZdW0FhXVtM
bF1bU3NdW0VlXXxbT29dW0ZmXVtGZl18MCkNCgkJcmV0dXJuIDENCgkJOzsN
CgkqKQ0KCQl3YXJuICJcJCR7MX0gaXMgbm90IHNldCBwcm9wZXJseS4iDQoJ
CXJldHVybiAxDQoJCTs7DQoJZXNhYw0KfQ0KDQojDQojIG1vdW50X2NyaXRp
Y2FsX2ZpbGVzeXN0ZW1zDQojCUdvIHRocm91Z2ggdGhlIGxpc3Qgb2YgY3Jp
dGljYWwgZmlsZXN5c3RlbXMsIGNoZWNraW5nIGVhY2ggb25lDQojCXRvIHNl
ZSBpZiBpdCBpcyBtb3VudGVkLCBhbmQgaWYgaXQgaXMgbm90LCBtb3VudGlu
ZyBpdC4NCiMNCm1vdW50X2NyaXRpY2FsX2ZpbGVzeXN0ZW1zKCkNCnsNCglp
ZiBbICQxID0gbG9jYWwgXTsgdGhlbg0KCQlfZnNsaXN0PSRjcml0aWNhbF9m
aWxlc3lzdGVtc19iZWZvcmVuZXQNCgllbHNlDQoJCV9mc2xpc3Q9JGNyaXRp
Y2FsX2ZpbGVzeXN0ZW1zDQoJZmkNCglmb3IgX2ZzIGluICRfZnNsaXN0OyBk
bw0KCQltb3VudCB8ICgNCgkJCV9pc21vdW50ZWQ9bm8NCgkJCXdoaWxlIHJl
YWQgd2hhdCBfb24gb24gX3R5cGUgdHlwZTsgZG8NCgkJCQlpZiBbICRvbiA9
ICRfZnMgXTsgdGhlbg0KCQkJCQlfaXNtb3VudGVkPXllcw0KCQkJCWZpDQoJ
CQlkb25lDQoJCQlpZiBbICRfaXNtb3VudGVkID0gbm8gXTsgdGhlbiANCgkJ
CQltb3VudCAkX2ZzID4vZGV2L251bGwgMj4mMQ0KCQkJZmkNCgkJKSAgDQoJ
ZG9uZQ0KfQ0KDQojDQojIGNoZWNrX3BpZGZpbGUgcGlkZmlsZSBwcm9jbmFt
ZQ0KIwlQYXJzZXMgdGhlIGZpcnN0IGxpbmUgb2YgcGlkZmlsZSBmb3IgYSBw
aWQsIGFuZCBlbnN1cmVzDQojCXRoYXQgdGhlIHByb2Nlc3MgaXMgcnVubmlu
ZyBhbmQgbWF0Y2hlcyBwcm9jbmFtZS4NCiMJUHJpbnRzIHRoZSBtYXRjaGlu
ZyBwaWQgdXBvbiBzdWNjZXNzLCBub3RoaW5nIG90aGVyd2lzZS4NCiMNCmNo
ZWNrX3BpZGZpbGUoKQ0Kew0KCV9waWRmaWxlPSQxDQoJX3Byb2NuYW1lPSQy
DQoJaWYgWyAteiAiJF9waWRmaWxlIiAtbyAteiAiJF9wcm9jbmFtZSIgXTsg
dGhlbg0KCQllcnIgMyAnVVNBR0U6IGNoZWNrX3BpZGZpbGUgcGlkZmlsZSBw
cm9jbmFtZScNCglmaQ0KCWlmIFsgISAtZiAkX3BpZGZpbGUgXTsgdGhlbg0K
CQlyZXR1cm4NCglmaQ0KCXJlYWQgX3BpZCBfanVuayA8ICRfcGlkZmlsZQ0K
CWlmIFsgLXogIiRfcGlkIiBdOyB0aGVuDQoJCXJldHVybg0KCWZpDQoJX3By
b2NuYW1lYm49YGJhc2VuYW1lICRfcHJvY25hbWVgDQoJcHMgLXAgJF9waWQg
LW8gJ3BpZCxjb21tYW5kJyB8IHdoaWxlIHJlYWQgX25waWQgX2FyZzAgX2Fy
Z3Y7IGRvDQoJCWlmIFsgIiRfbnBpZCIgPSAiUElEIiBdOyB0aGVuDQoJCQlj
b250aW51ZQ0KCQlmaQ0KCQlpZiBbICAgIiRfYXJnMCIgPSAiJF9wcm9jbmFt
ZSIgXA0KCQkgICAgLW8gIiRfYXJnMCIgPSAiJF9wcm9jbmFtZWJuIiBcDQoJ
CSAgICAtbyAiJF9hcmcwIiA9ICIke19wcm9jbmFtZWJufToiIFwNCgkJICAg
IC1vICIkX2FyZzAiID0gIigke19wcm9jbmFtZWJufSkiIF07IHRoZW4NCgkJ
CWVjaG8gJF9ucGlkDQoJCQlyZXR1cm4NCgkJZmkNCglkb25lDQp9DQoNCiMN
CiMgY2hlY2tfcHJvY2VzcyBwcm9jbmFtZQ0KIwlFbnN1cmVzIHRoYXQgYSBw
cm9jZXNzIChvciBwcm9jZXNzZXMpIG5hbWVkIHByb2NuYW1lIGlzIHJ1bm5p
bmcuDQojCVByaW50cyBhIGxpc3Qgb2YgbWF0Y2hpbmcgcGlkcy4NCiMNCmNo
ZWNrX3Byb2Nlc3MoKQ0Kew0KCV9wcm9jbmFtZT0kMQ0KCWlmIFsgLXogIiRf
cHJvY25hbWUiIF07IHRoZW4NCgkJZXJyIDMgJ1VTQUdFOiBjaGVja19wcm9j
ZXNzIHByb2NuYW1lJw0KCWZpDQoJX3Byb2NuYW1lYm49YGJhc2VuYW1lICRf
cHJvY25hbWVgDQoJX3ByZWY9DQoJcHMgLWF4IC1vICdwaWQsY29tbWFuZCcg
fCB3aGlsZSByZWFkIF9ucGlkIF9hcmcwIF9hcmd2OyBkbw0KCQlpZiBbICIk
X25waWQiID0gIlBJRCIgXTsgdGhlbg0KCQkJY29udGludWUNCgkJZmkNCgkJ
aWYgWyAgICIkX2FyZzAiID0gIiRfcHJvY25hbWUiIFwNCgkJICAgIC1vICIk
X2FyZzAiID0gIiRfcHJvY25hbWVibiIgXA0KCQkgICAgLW8gIiRfYXJnMCIg
PSAiJHtfcHJvY25hbWVibn06IiBcDQoJCSAgICAtbyAiJF9hcmcwIiA9ICIo
JHtfcHJvY25hbWVibn0pIiBdOyB0aGVuDQoJCQllY2hvIC1uICIkX3ByZWYk
X25waWQiDQoJCQlfcHJlZj0iICINCgkJZmkNCglkb25lDQp9DQoNCiMNCiMg
cnVuX3JjX2NvbW1hbmQgYXJnDQojCVNlYXJjaCBmb3IgYXJnIGluIHRoZSBs
aXN0IG9mIHN1cHBvcnRlZCBjb21tYW5kcywgd2hpY2ggaXM6DQojCQkic3Rh
cnQgc3RvcCByZXN0YXJ0IHJjdmFyIHN0YXR1cyAke2V4dHJhX2NvbW1hbmRz
fSINCiMJSWYgdGhlcmUncyBhIG1hdGNoLCBydW4gJHthcmd9X2NtZCBvciB0
aGUgZGVmYXVsdCBjb21tYW5kIChzZWUgYmVsb3cpLg0KIw0KIwlJZiBhcmcg
aGFzIGEgZ2l2ZW4gcHJlZml4LCB0aGVuIGNoYW5nZSB0aGUgb3BlcmF0aW9u
IGFzIGZvbGxvd3M6DQojCQlwcmVmaXgJb3BlcmF0aW9uDQojCQktLS0tLS0J
LS0tLS0tLS0tDQojCQlmYXN0CVNraXAgdGhlIHBpZCBjaGVjay4NCiMJCWZv
cmNlCVNldCAke3JjdmFyfSB0byBZRVMuDQojDQojCVRoZSBmb2xsb3dpbmcg
Z2xvYmFscyBhcmUgdXNlZDoNCiMNCiMJbmFtZQkJbmVlZGVkCWZ1bmN0aW9u
DQojCS0tLS0JCS0tLS0tLQktLS0tLS0tLQ0KIwluYW1lCQl5CU5hbWUgb2Yg
c2NyaXB0Lg0KIw0KIwljb21tYW5kCQluCUZ1bGwgcGF0aCB0byBjb21tYW5k
Lg0KIwkJCQlOb3QgbmVlZGVkIGlmICR7YXJnfV9jbWQgaXMgc2V0IGZvcg0K
IwkJCQllYWNoIGtleXdvcmQuDQojDQojCWNvbW1hbmRfYXJncwluCU9wdGlv
bmFsIGFyZ3Mvc2hlbGwgZGlyZWN0aXZlcyBmb3IgY29tbWFuZC4NCiMNCiMJ
ZXh0cmFfY29tbWFuZHMJbglMaXN0IG9mIGV4dHJhIGNvbW1hbmRzIHN1cHBv
cnRlZC4NCiMNCiMJcGlkZmlsZQkJbglJZiBzZXQsIHVzZSBjaGVja19waWRm
aWxlICRwaWRmaWxlLCBlbHNlIGlmDQojCQkJCSRjb21tYW5kIGlzIHNldCwg
dXNlIGNoZWNrX3Byb2Nlc3MgJGNvbW1hbmQuDQojDQojCXJjdmFyCQluCVRo
aXMgaXMgY2hlY2tlZCB3aXRoIGNoZWNreWVzbm8gdG8gZGV0ZXJtaW5lDQoj
CQkJCWlmIHRoZSBhY3Rpb24gc2hvdWxkIGJlIHJ1bi4NCiMNCiMJJHtuYW1l
fV9jaHJvb3QJbglEaXJlY3RvcnkgdG8gY2hyb290IHRvIGJlZm9yZSBydW5u
aW5nICR7Y29tbWFuZH0NCiMNCiMJJHtuYW1lfV9jaGRpcgluCURpcmVjdG9y
eSB0byBjZCB0byBiZWZvcmUgcnVubmluZyAke2NvbW1hbmR9DQojCQkJCShp
ZiBub3QgdXNpbmcgJHtuYW1lfV9jaHJvb3QpLg0KIw0KIwkke25hbWV9X2Zs
YWdzCW4JQXJndW1lbnRzIHRvIGNhbGwgJHtjb21tYW5kfSB3aXRoLg0KIwkJ
CQlOT1RFOgkkZmxhZ3MgZnJvbSB0aGUgcGFyZW50IGVudmlyb25tZW50DQoj
CQkJCQljYW4gYmUgdXNlZCB0byBvdmVycmlkZSB0aGlzLg0KIw0KIwkke25h
bWV9X25pY2UJbglOaWNlIGxldmVsIHRvIHJ1biAke2NvbW1hbmR9IGF0Lg0K
Iw0KIwkke25hbWV9X3VzZXIJbglVc2VyIHRvIHJ1biAke2NvbW1hbmR9IGFz
LCB1c2luZyBzdSgxKSBpZiBub3QNCiMJCQkJdXNpbmcgJHtuYW1lfV9jaHJv
b3QuDQojDQojCSR7bmFtZX1fZ3JvdXAJbglHcm91cCB0byBydW4gY2hyb290
ZWQgJHtjb21tYW5kfSBhcy4NCiMNCiMJJHtuYW1lfV9ncm91cHMJbglTdXBw
bGVtZW50YXJ5IGdyb3VwIGxpc3QgdG8gcnVuIGNocm9vdGVkDQojCQkJCSR7
Y29tbWFuZH0gd2l0aC4NCiMNCiMJJHtfYXJnfV9jbWQJbglJZiBzZXQsIHVz
ZSB0aGlzIGFzIHRoZSBhY3Rpb24gd2hlbiBpbnZva2VkOw0KIwkJCQkkX2Fy
ZyBpcyBhdmFpbGFibGUgdG8gdGhlIGFjdGlvbiB0byB1c2UuDQojCQkJCU90
aGVyd2lzZSwgdXNlIGRlZmF1bHQgY29tbWFuZCAoc2VlIGJlbG93KQ0KIw0K
Iwkke19hcmd9X3ByZWNtZAluCUlmIHNldCwgcnVuIGp1c3QgYmVmb3JlIHBl
cmZvcm1pbmcgdGhlIG1haW4NCiMJCQkJYWN0aW9uIGluIHRoZSBkZWZhdWx0
IGNvbW1hbmQgKGkuZSwgYWZ0ZXINCiMJCQkJY2hlY2tpbmcgZm9yIHJlcXVp
cmVkIGJpdHMgYW5kIHByb2Nlc3MNCiMJCQkJKG5vbilleGlzdGFuY2UpLg0K
IwkJCQlJZiB0aGlzIGNvbXBsZXRlcyB3aXRoIGEgbm9uLXplcm8gZXhpdCBj
b2RlLA0KIwkJCQlkb24ndCBydW4gJHtfYXJnfV9jbWQuDQojDQojCXJlcXVp
cmVkX2RpcnMJbglJZiBzZXQsIGNoZWNrIGZvciB0aGUgZXhpc3RlbmNlIG9m
IHRoZSBnaXZlbg0KIwkJCQlkaXJlY3RvcmllcyBiZWZvcmUgcnVubmluZyB0
aGUgZGVmYXVsdA0KIwkJCQkocmUpc3RhcnQgY29tbWFuZC4NCiMNCiMJcmVx
dWlyZWRfZmlsZXMJbglJZiBzZXQsIGNoZWNrIGZvciB0aGUgcmVhZGFiaWxp
dHkgb2YgdGhlIGdpdmVuDQojCQkJCWZpbGVzIGJlZm9yZSBydW5uaW5nIHRo
ZSBkZWZhdWx0IChyZSlzdGFydA0KIwkJCQljb21tYW5kLg0KIw0KIwlyZXF1
aXJlZF92YXJzCW4JSWYgc2V0LCBwZXJmb3JtIGNoZWNreWVzbm8gb24gZWFj
aCBvZiB0aGUNCiMJCQkJbGlzdGVkIHZhcmlhYmxlcyBiZWZvcmUgcnVubmlu
ZyB0aGUgZGVmYXVsdA0KIwkJCQkocmUpc3RhcnQgY29tbWFuZC4NCiMNCiMJ
RGVmYXVsdCBjb21tYW5kcyBmb3IgYSBnaXZlbiBhcmc6DQojDQojCWFyZwkJ
ZGVmYXVsdA0KIwktLS0JCS0tLS0tLS0NCiMJc3RhdHVzCQlTaG93IGlmICR7
Y29tbWFuZH0gaXMgcnVubmluZywgZXRjLg0KIw0KIwlzdGFydAkJaWYgIXJ1
bm5pbmcgJiYgY2hlY2t5ZXNubyAke3JjdmFyfQ0KIwkJCQkke2NvbW1hbmR9
DQojDQojCXN0b3AJCWlmICR7cGlkZmlsZX0NCiMJCQkJa2lsbCAkc2lnX3N0
b3AgYGNoZWNrX3BpZGZpbGUgJHBpZGZpbGVgDQojCQkJZWxzZQ0KIwkJCQlr
aWxsICRzaWdfc3RvcCBgY2hlY2tfcHJvY2VzcyAkY29tbWFuZGANCiMJCQkk
c2lnX3N0b3AgZGVmYXVsdHMgdG8gVEVSTS4NCiMNCiMJcmVsb2FkCQlBcyBz
dG9wLCBleGNlcHQgdXNlICRzaWdfcmVsb2FkIGluc3RlYWQuDQojCQkJJHNp
Z19yZWxvYWQgZGVmYXVsdHMgdG8gSFVQLg0KIw0KIwlyZXN0YXJ0CQlSdW4g
YHN0b3AnIHRoZW4gYHN0YXJ0Jy4NCiMNCiMNCnJ1bl9yY19jb21tYW5kKCkN
CnsNCglfYXJnPSQxDQoJaWYgWyAteiAiJG5hbWUiIF07IHRoZW4NCgkJZXJy
IDMgJyRuYW1lIGlzIG5vdCBzZXQuJw0KCWZpDQoNCgljYXNlICIkX2FyZyIg
aW4NCglmYXN0KikJCQkJIyAiZmFzdCIgcHJlZml4OyBkb24ndCBjaGVjayBw
aWQNCgkJX2FyZz0ke19hcmcjZmFzdH0NCgkJX3JjX2Zhc3RfcnVuPVlFUw0K
CQk7Ow0KCWZvcmNlKikJCQkJIyAiZm9yY2UgcHJlZml4OyBhbHdheXMgc3Rh
cnQNCgkJX2FyZz0ke19hcmcjZm9yY2V9DQoJCV9yY19mb3JjZV9ydW49WUVT
DQoJCWV2YWwgJHtyY3Zhcn09WUVTDQoJCTs7DQoJZXNhYw0KDQoJX2tleXdv
cmRzPSJzdGFydCBzdG9wIHJlc3RhcnQgcmN2YXIgJGV4dHJhX2NvbW1hbmRz
Ig0KCV9waWQ9DQoJX3BpZGNtZD0NCgkJCQkJIyBzZXR1cCBwaWQgY2hlY2sg
Y29tbWFuZCBpZiBub3QgZmFzdA0KCWlmIFsgLXogIiRfcmNfZmFzdF9ydW4i
IF07IHRoZW4NCgkJaWYgWyAtbiAiJHBpZGZpbGUiIF07IHRoZW4NCgkJCV9w
aWRjbWQ9J19waWQ9YGNoZWNrX3BpZGZpbGUgJyRwaWRmaWxlJyAnJGNvbW1h
bmQnYCcNCgkJZWxpZiBbIC1uICIkY29tbWFuZCIgXTsgdGhlbg0KCQkJX3Bp
ZGNtZD0nX3BpZD1gY2hlY2tfcHJvY2VzcyAnJGNvbW1hbmQnYCcNCgkJZmkN
CgkJaWYgWyAtbiAiJF9waWRjbWQiIF07IHRoZW4NCgkJCV9rZXl3b3Jkcz0i
JHtfa2V5d29yZHN9IHN0YXR1cyINCgkJZmkNCglmaQ0KDQoJaWYgWyAteiAi
JF9hcmciIF07IHRoZW4NCgkJcmNfdXNhZ2UgIiRfa2V5d29yZHMiDQoJZmkN
Cg0KCWlmIFsgLW4gIiRmbGFncyIgXTsgdGhlbgkjIGFsbG93IG92ZXJyaWRl
IGZyb20gZW52aXJvbm1lbnQNCgkJX2ZsYWdzPSRmbGFncw0KCWVsc2UNCgkJ
ZXZhbCBfZmxhZ3M9XCQke25hbWV9X2ZsYWdzDQoJZmkNCglldmFsIF9jaGRp
cj1cJCR7bmFtZX1fY2hkaXINCglldmFsIF9jaHJvb3Q9XCQke25hbWV9X2No
cm9vdA0KCWV2YWwgX25pY2U9XCQke25hbWV9X25pY2UNCglldmFsIF91c2Vy
PVwkJHtuYW1lfV91c2VyDQoJZXZhbCBfZ3JvdXA9XCQke25hbWV9X2dyb3Vw
DQoJZXZhbCBfZ3JvdXBzPVwkJHtuYW1lfV9ncm91cHMNCg0KCQkJCQkjIGlm
ICR7cmN2YXJ9IGlzIHNldCBhbmQgd2UncmUgbm90DQoJCQkJCSMgcnVubmlu
ZyBgcmN2YXInLCB0aGVuIGNoZWNrIGl0DQoJCQkJCSMNCglpZiBbIC1uICIk
e3JjdmFyfSIgLWEgIiRfYXJnIiAhPSAicmN2YXIiIF07IHRoZW4NCgkJaWYg
ISBjaGVja3llc25vICR7cmN2YXJ9OyB0aGVuDQoJCQlyZXR1cm4gMA0KCQlm
aQ0KCWZpDQoNCglldmFsICRfcGlkY21kCQkJIyBkZXRlcm1pbmUgdGhlIHBp
ZCBpZiBuZWNlc3NhcnkNCg0KCWZvciBfZWxlbSBpbiAkX2tleXdvcmRzOyBk
bw0KCQlpZiBbICIkX2VsZW0iICE9ICIkX2FyZyIgXTsgdGhlbg0KCQkJY29u
dGludWUNCgkJZmkNCg0KCQkJCQkjIGlmIHRoZXJlJ3MgYSBjdXN0b20gJHtY
WFhfY21kfSwNCgkJCQkJIyBydW4gdGhhdCBpbnN0ZWFkIG9mIHRoZSBkZWZh
dWx0DQoJCQkJCSMNCgkJZXZhbCBfY21kPVwkJHtfYXJnfV9jbWQNCgkJZXZh
bCBfcHJlY21kPVwkJHtfYXJnfV9wcmVjbWQNCgkJaWYgWyAtbiAiJF9jbWQi
IF07IHRoZW4NCgkJCQkJIyBpZiB0aGUgcHJlY21kIGZhaWxlZCBhbmQgZm9y
Y2UNCgkJCQkJIyBpc24ndCBzZXQsIGV4aXQNCgkJCQkJIw0KCQkJaWYgISBl
dmFsICRfcHJlY21kICYmIFsgLXogIiRfcmNfZm9yY2VfcnVuIiBdOyB0aGVu
DQoJCQkJcmV0dXJuIDENCgkJCWZpDQoNCgkJCWV2YWwgJF9jbWQNCgkJCXJl
dHVybiAwDQoJCWZpDQoNCgkJY2FzZSAiJF9hcmciIGluCQkjIGRlZmF1bHQg
b3BlcmF0aW9ucy4uLg0KDQoJCXN0YXR1cykNCgkJCWlmIFsgLW4gIiRfcGlk
IiBdOyB0aGVuDQoJCQkJZWNobyAiJHtuYW1lfSBpcyBydW5uaW5nIGFzIHBp
ZCAkX3BpZC4iDQoJCQllbHNlDQoJCQkJZWNobyAiJHtuYW1lfSBpcyBub3Qg
cnVubmluZy4iDQoJCQlmaQ0KCQkJOzsNCg0KCQlzdGFydCkNCgkJCWlmIFsg
LW4gIiRfcGlkIiBdOyB0aGVuDQoJCQkJZWNobyAiJHtuYW1lfSBhbHJlYWR5
IHJ1bm5pbmc/IChwaWQ9JF9waWQpLiINCgkJCQlleGl0IDENCgkJCWZpDQoN
CgkJCWlmIFsgISAteCAkY29tbWFuZCBdOyB0aGVuDQoJCQkJcmV0dXJuIDAN
CgkJCWZpDQoNCgkJCQkJIyBjaGVjayBmb3IgcmVxdWlyZWQgdmFyaWFibGVz
LA0KCQkJCQkjIGRpcmVjdG9yaWVzLCBhbmQgZmlsZXMNCgkJCQkJIw0KCQkJ
Zm9yIF9mIGluICRyZXF1aXJlZF92YXJzOyBkbw0KCQkJCWlmICEgY2hlY2t5
ZXNubyAkX2Y7IHRoZW4NCgkJCQkJd2FybiAiXCQke19mfSBpcyBub3Qgc2V0
LiINCgkJCQkJaWYgWyAteiAiJF9yY19mb3JjZV9ydW4iIF07IHRoZW4NCgkJ
CQkJCXJldHVybiAxDQoJCQkJCWZpDQoJCQkJZmkNCgkJCWRvbmUNCgkJCWZv
ciBfZiBpbiAkcmVxdWlyZWRfZGlyczsgZG8NCgkJCQlpZiBbICEgLWQgIiR7
X2Z9Ly4iIF07IHRoZW4NCgkJCQkJd2FybiAiJHtfZn0gaXMgbm90IGEgZGly
ZWN0b3J5LiINCgkJCQkJaWYgWyAteiAiJF9yY19mb3JjZV9ydW4iIF07IHRo
ZW4NCgkJCQkJCXJldHVybiAxDQoJCQkJCWZpDQoJCQkJZmkNCgkJCWRvbmUN
CgkJCWZvciBfZiBpbiAkcmVxdWlyZWRfZmlsZXM7IGRvDQoJCQkJaWYgWyAh
IC1yICIke19mfSIgXTsgdGhlbg0KCQkJCQl3YXJuICIke19mfSBpcyBub3Qg
cmVhZGFibGUuIg0KCQkJCQlpZiBbIC16ICIkX3JjX2ZvcmNlX3J1biIgXTsg
dGhlbg0KCQkJCQkJcmV0dXJuIDENCgkJCQkJZmkNCgkJCQlmaQ0KCQkJZG9u
ZQ0KDQoJCQkJCSMgaWYgdGhlIHByZWNtZCBmYWlsZWQgYW5kIGZvcmNlDQoJ
CQkJCSMgaXNuJ3Qgc2V0LCBleGl0DQoJCQkJCSMNCgkJCWlmICEgZXZhbCAk
X3ByZWNtZCAmJiBbIC16ICIkX3JjX2ZvcmNlX3J1biIgXTsgdGhlbg0KCQkJ
CXJldHVybiAxDQoJCQlmaQ0KDQoNCgkJCQkJIyBzZXR1cCB0aGUgY29tbWFu
ZCB0byBydW4sIGFuZCBydW4gaXQNCgkJCWVjaG8gIlN0YXJ0aW5nICR7bmFt
ZX0uIg0KCQkJaWYgWyAtbiAiJF9jaHJvb3QiIF07IHRoZW4NCgkJCQlfZG9p
dD0iXA0KJHtfbmljZTorbmljZSAtbiAkX25pY2UgfVwNCmNocm9vdCAke191
c2VyOistdSAkX3VzZXIgfSR7X2dyb3VwOistZyAkX2dyb3VwIH0ke19ncm91
cHM6Ky1HICRfZ3JvdXBzIH1cDQokX2Nocm9vdCAkY29tbWFuZCAkX2ZsYWdz
ICRjb21tYW5kX2FyZ3MiDQoJCQllbHNlDQoJCQkJX2RvaXQ9IlwNCiR7X3Vz
ZXI6K3N1IC1tICRfdXNlciAtYyAnc2ggLWMgXCJ9XA0KJHtfY2hkaXI6K2Nk
ICRfY2hkaXI7IH1cDQoke19uaWNlOituaWNlIC1uICRfbmljZSB9XA0KJGNv
bW1hbmQgJF9mbGFncyAkY29tbWFuZF9hcmdzXA0KJHtfdXNlcjorXCInfSIN
CgkJCWZpDQoJCQlldmFsICRfZG9pdA0KCQkJOzsNCg0KCQlzdG9wKQ0KCQkJ
aWYgWyAteiAiJF9waWQiIF07IHRoZW4NCgkJCQlpZiBbIC1uICIkcGlkZmls
ZSIgXTsgdGhlbg0KCQkJCQllY2hvIFwNCgkJCQkgICAgIiR7bmFtZX0gbm90
IHJ1bm5pbmc/IChjaGVjayAkcGlkZmlsZSkuIg0KCQkJCWVsc2UNCgkJCQkJ
ZWNobyAiJHtuYW1lfSBub3QgcnVubmluZz8iDQoJCQkJZmkNCgkJCQlleGl0
IDENCgkJCWZpDQoNCgkJCWlmICEgZXZhbCAkX3ByZWNtZCAmJiBbIC16ICIk
X3JjX2ZvcmNlX3J1biIgXTsgdGhlbg0KCQkJCXJldHVybiAxDQoJCQlmaQ0K
CQkJZWNobyAiU3RvcHBpbmcgJHtuYW1lfS4iDQoJCQlfZG9pdD1cDQoiJHtf
dXNlcjorc3UgLW0gJF91c2VyIC1jICd9a2lsbCAtJHtzaWdfc3RvcDotVEVS
TX0gJF9waWQke191c2VyOisnfSINCgkJCWV2YWwgJF9kb2l0DQoJCQk7Ow0K
DQoJCXJlbG9hZCkNCgkJCWlmIFsgLXogIiRfcGlkIiBdOyB0aGVuDQoJCQkJ
aWYgWyAtbiAiJHBpZGZpbGUiIF07IHRoZW4NCgkJCQkJZWNobyBcDQoJCQkJ
ICAgICIke25hbWV9IG5vdCBydW5uaW5nPyAoY2hlY2sgJHBpZGZpbGUpLiIN
CgkJCQllbHNlDQoJCQkJCWVjaG8gIiR7bmFtZX0gbm90IHJ1bm5pbmc/Ig0K
CQkJCWZpDQoJCQkJZXhpdCAxDQoJCQlmaQ0KCQkJZWNobyAiUmVsb2FkaW5n
ICR7bmFtZX0gY29uZmlnIGZpbGVzLiINCgkJCWlmICEgZXZhbCAkX3ByZWNt
ZCAmJiBbIC16ICIkX3JjX2ZvcmNlX3J1biIgXTsgdGhlbg0KCQkJCXJldHVy
biAxDQoJCQlmaQ0KCQkJX2RvaXQ9XA0KIiR7X3VzZXI6K3N1IC1tICRfdXNl
ciAtYyAnfWtpbGwgLSR7c2lnX3JlbG9hZDotSFVQfSAkX3BpZCR7X3VzZXI6
Kyd9Ig0KCQkJZXZhbCAkX2RvaXQNCgkJCTs7DQoNCgkJcmVzdGFydCkNCgkJ
CWlmICEgZXZhbCAkX3ByZWNtZCAmJiBbIC16ICIkX3JjX2ZvcmNlX3J1biIg
XTsgdGhlbg0KCQkJCXJldHVybiAxDQoJCQlmaQ0KCQkJKCAkMCBzdG9wICkN
CgkJCXNsZWVwIDENCgkJCSQwIHN0YXJ0DQoNCgkJCTs7DQoNCgkJcmN2YXIp
DQoJCQllY2hvICIjICRuYW1lIg0KCQkJaWYgWyAtbiAiJHJjdmFyIiBdOyB0
aGVuDQoJCQkJaWYgY2hlY2t5ZXNubyAke3JjdmFyfTsgdGhlbg0KCQkJCQll
Y2hvICJcJCR7cmN2YXJ9PVlFUyINCgkJCQllbHNlDQoJCQkJCWVjaG8gIlwk
JHtyY3Zhcn09Tk8iDQoJCQkJZmkNCgkJCWZpDQoJCQk7Ow0KDQoJCSopDQoJ
CQlyY191c2FnZSAiJF9rZXl3b3JkcyINCgkJCTs7DQoNCgkJZXNhYw0KCQly
ZXR1cm4gMA0KCWRvbmUNCg0KCWVjaG8gMT4mMiAiJDA6IHVua25vd24gZGly
ZWN0aXZlICckX2FyZycuIg0KCXJjX3VzYWdlICIkX2tleXdvcmRzIg0KCWV4
aXQgMQ0KfQ0KDQojDQojIHJ1bl9yY19zY3JpcHQgZmlsZSBhcmcNCiMJU3Rh
cnQgdGhlIHNjcmlwdCBgZmlsZScgd2l0aCBgYXJnJywgYW5kIGNvcnJlY3Rs
eSBoYW5kbGUgdGhlDQojCXJldHVybiB2YWx1ZSBmcm9tIHRoZSBzY3JpcHQu
ICBJZiBgZmlsZScgZW5kcyB3aXRoIGAuc2gnLCBpdCdzDQojCXNvdXJjZWQg
aW50byB0aGUgY3VycmVudCBlbnZpcm9ubWVudC4gIE90aGVyd2lzZSBpdCdz
IHJ1biBhcw0KIwlhIGNoaWxkIHByb2Nlc3MuDQojDQojCU5vdGU6IGJlY2F1
c2UgYC5zaCcgZmlsZXMgYXJlIHNvdXJjZWQgaW50byB0aGUgY3VycmVudCBl
bnZpcm9ubWVudA0KIwlydW5fcmNfY29tbWFuZCBzaG91bGRuJ3QgYmUgdXNl
ZCBiZWNhdXNlIGl0cyBkaWZmaWN1bHQgdG8gZW5zdXJlDQojCXRoYXQgdGhl
IGdsb2JhbCB2YXJpYWJsZSBzdGF0ZSBiZWZvcmUgYW5kIGFmdGVyIHRoZSBz
b3VyY2luZyBvZiANCiMJdGhlIC5zaCBmaWxlIHdvbid0IGFkdmVyc2VseSBh
ZmZlY3Qgb3RoZXIgc2NyaXB0cy4NCiMNCnJ1bl9yY19zY3JpcHQoKQ0Kew0K
CV9maWxlPSQxDQoJX2FyZz0kMg0KCWlmIFsgLXogIiRfZmlsZSIgLW8gLXog
IiRfYXJnIiBdOyB0aGVuDQoJCWVyciAzICdVU0FHRTogcnVuX3JjX3Njcmlw
dCBmaWxlIGFyZycNCglmaQ0KDQoJY2FzZSAiJF9maWxlIiBpbg0KCSouc2gp
CQkJCSMgcnVuIGluIGN1cnJlbnQgc2hlbGwNCgkJc2V0ICRfYXJnIDsgLiAk
X2ZpbGUNCgkJOzsNCgkqKQkJCQkjIHJ1biBpbiBzdWJzaGVsbA0KCQljb21t
YW5kX2FyZ3M9DQoJCWV4dHJhX2NvbW1hbmRzPQ0KCQlyZWxvYWRfY21kPQ0K
CQlyZWxvYWRfcHJlY21kPQ0KCQlyZXF1aXJlZF9kaXJzPQ0KCQlyZXF1aXJl
ZF9maWxlcz0NCgkJcmVxdWlyZWRfdmFycz0NCgkJc3RhcnRfY21kPQ0KCQlz
dGFydF9wcmVjbWQ9DQoJCXN0YXR1c19jbWQ9DQoJCXN0YXR1c19wcmVjbWQ9
DQoJCXN0b3BfY21kPQ0KCQlzdG9wX3ByZWNtZD0NCgkJc2V0ICRfYXJnIDsg
LiAkX2ZpbGUNCgkJIyAoIHNldCAkX2FyZyA7IC4gJF9maWxlICkNCgkJOzsN
Cgllc2FjDQp9DQoNCiMNCiMgbG9hZF9yY19jb25maWcNCiMJU291cmNlIGlu
IHRoZSBjb25maWd1cmF0aW9uIGZpbGUgZm9yIGEgZ2l2ZW4gY29tbWFuZC4N
CiMNCmxvYWRfcmNfY29uZmlnKCkNCnsNCglfY29tbWFuZD0kMQ0KCWlmIFsg
LXogIiRfY29tbWFuZCIgXTsgdGhlbg0KCQllcnIgMyAnVVNBR0U6IGxvYWRf
cmNfY29uZmlnIGNvbW1hbmQnDQoJZmkNCg0KCS4gL2V0Yy9yYy5jb25mDQoJ
aWYgWyAtZiAvZXRjL3JjLmNvbmYuZC8iJF9jb21tYW5kIiBdOyB0aGVuDQoJ
CS4gL2V0Yy9yYy5jb25mLmQvIiRfY29tbWFuZCINCglmaQ0KfQ0KDQoNCiMN
CiMgcmNfdXNhZ2UgY29tbWFuZHMNCiMJUHJpbnQgYSB1c2FnZSBzdHJpbmcg
Zm9yICQwLCB3aXRoIGBjb21tYW5kcycgYmVpbmcgYSBsaXN0IG9mDQojCXZh
bGlkIGNvbW1hbmRzLg0KIw0KcmNfdXNhZ2UoKQ0Kew0KCWVjaG8gLW4gMT4m
MiAiVXNhZ2U6ICQwIFtmYXN0fGZvcmNlXSgiDQoNCglfc2VwPQ0KCWZvciBf
ZWxlbSBpbiAkKjsgZG8NCgkJZWNobyAtbiAxPiYyICIkX3NlcCRfZWxlbSIN
CgkJX3NlcD0ifCINCglkb25lDQoJZWNobyAxPiYyICIpIg0KCWV4aXQgMQ0K
fQ0KDQojDQojIGVyciBleGl0dmFsIG1lc3NhZ2UNCiMJRGlzcGxheSBtZXNz
YWdlIHRvIHN0ZGVyciBhbmQgbG9nIHRvIHRoZSBzeXNsb2csIGFuZCBleGl0
IHdpdGggZXhpdHZhbC4NCiMNCmVycigpDQp7DQoJZXhpdHZhbD0kMQ0KCXNo
aWZ0DQoNCglsb2dnZXIgIiQwOiBFUlJPUjogJCoiDQoJZWNobyAxPiYyICIk
MDogRVJST1I6ICQqIg0KCWV4aXQgJGV4aXR2YWwNCn0NCg0KIw0KIyB3YXJu
IG1lc3NhZ2UNCiMJRGlzcGxheSBtZXNzYWdlIHRvIHN0ZGVyciBhbmQgbG9n
IHRvIHRoZSBzeXNsb2cuDQojDQp3YXJuKCkNCnsNCglsb2dnZXIgIiQwOiBX
QVJOSU5HOiAkKiINCgllY2hvIDE+JjIgIiQwOiBXQVJOSU5HOiAkKiINCn0N
Cg==
--0-1255036178-978528834=:17395--