Boost logo

Boost-Build :

From: Rene Rivera (grafik.list_at_[hidden])
Date: 2004-02-11 10:06:49


mrbandsaw wrote:

> Ok, very good explanation - thanks! But......
> I did follow you instructions exactly as you described:
> 1: Run commands within the Visual Studio .Net 2003 Command Prompt.
> 2: Fixed so that my boost directory is included.
> 3: Change directory to my boost dir: D:\C++\Boost_1_31_0
> 4&5: bjam "-sTOOLS=vc7.1" "--prefix=D:\C++\Boost_1_31_0" install
>
> Now, the result of this is that two directories are created: lib and
> include. lib is empty and include contains all boost header files.
> So, the only action taken by issuing the bjam install command was
> that the boost headers were copied!?!?
> How do I make bjam build the libs?

Hmm.. that sounds familiar to a bug already encountered.. and fixed. Try
replacing d:\c++\boost_1_31_0\tools\build\v1\allyourbase.jam (or wherever it
happens to be for you) with the one attached.

-- 
-- Grafik - Don't Assume Anything
-- Redshift Software, Inc. - http://redshift-software.com
-- rrivera/acm.org - grafik/redshift-software.com - 102708583/icq
 --------------040704070107060205050805 Content-Type: text/plain;
name="allyourbase.jam"
Content-Transfer-Encoding: base64
Content-Disposition: inline;
filename="allyourbase.jam"
Iw0KIyAvK1wNCiMgK1wgICAgQ29weXJpZ2h0IDE5OTMsIDIwMDAgQ2hyaXN0b3BoZXIgU2Vp
d2FsZC4NCiMgXCsvDQojDQojIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEphbSAtIHNlZSBqYW0u
YyBmb3IgQ29weXJpZ2h0IGluZm9ybWF0aW9uLg0KIw0KDQojIFRoaXMgZmlsZSBpcyBBTFNP
Og0KIyAoQykgQ29weXJpZ2h0IERhdmlkIEFicmFoYW1zIDIwMDEuIFBlcm1pc3Npb24gdG8g
Y29weSwgdXNlLA0KIyBtb2RpZnksIHNlbGwgYW5kIGRpc3RyaWJ1dGUgdGhpcyBzb2Z0d2Fy
ZSBpcyBncmFudGVkIHByb3ZpZGVkIHRoaXMNCiMgY29weXJpZ2h0IG5vdGljZSBhcHBlYXJz
IGluIGFsbCBjb3BpZXMuIFRoaXMgc29mdHdhcmUgaXMgcHJvdmlkZWQNCiMgImFzIGlzIiB3
aXRob3V0IGV4cHJlc3Mgb3IgaW1wbGllZCB3YXJyYW50eSwgYW5kIHdpdGggbm8gY2xhaW0g
YXMNCiMgdG8gaXRzIHN1aXRhYmlsaXR5IGZvciBhbnkgcHVycG9zZS4NCg0KIw0KIyBKQU1C
QVNFIC0gamFtIDIuMyBydWxlc2V0IHByb3ZpZGluZyBtYWtlKDEpLWxpa2UgZnVuY3Rpb25h
bGl0eQ0KIw0KIyBTdXBwb3J0cyBVTklYLCBOVCwgYW5kIFZNUy4NCiMNCiMgMTIvMjcvOTMg
KHNlaXdhbGQpIC0gcHVydHVyYiBsaWJyYXJ5IHNvdXJjZXMgd2l0aCBTT1VSQ0VfR1JJU1QN
CiMgMDQvMTgvOTQgKHNlaXdhbGQpIC0gdXNlICc/PScgd2hlbiBzZXR0aW5nIE9TIHNwZWNp
ZmljIHZhcnMNCiMgMDQvMjEvOTQgKHNlaXdhbGQpIC0gZG8gUm1UZW1wcyB0b2dldGhlcg0K
IyAwNS8wNS85NCAoc2Vpd2FsZCkgLSBhbGwgc3VwcG9ydGVkIEMgY29tcGlsZXJzIHN1cHBv
cnQgLW86IHJlbGVnYXRlDQojICAgICAgICAgICAgICAgICAgICAgIFJFTE9DQVRFIGFzIGFu
IG9wdGlvbjsgc2V0IFJhbmxpYiB0byAiIiB0byBkaXNhYmxlIGl0DQojIDA2LzAxLzk0IChz
ZWl3YWxkKSAtIG5ldyAnYWN0aW9ucyBleGlzdGluZycgdG8gZG8gZXhpc3Rpbmcgc291cmNl
cw0KIyAwOC8yNS85NCAoc2Vpd2FsZCkgLSBuZXcgT2JqZWN0Q2NGbGFncyBydWxlIHRvIGFw
cGVuZCB0byBwZXItdGFyZ2V0IENDRkxBR1MNCiMgMDgvMjkvOTQgKHNlaXdhbGQpIC0gbmV3
IE9iamVjdEhkcnMgcnVsZSB0byBhcHBlbmQgdG8gcGVyLXRhcmdldCBIRFJTDQojIDA5LzE5
Lzk0IChzZWl3YWxkKSAtIExpbmtMaWJyYXJpZXMgYW5kIFVuZGVmcyBub3cgYXBwZW5kDQoj
ICAgICAgICAgICAgICAgICAgICAtIFJ1bGUgbmFtZXMgZG93bnNoaWZ0ZWQuDQojIDEwLzA2
Lzk0IChzZWl3YWxkKSAtIER1bWIgeXlhY2Mgc3R1ZmYgbW92ZWQgaW50byBKYW1maWxlLg0K
IyAxMC8xNC85NCAoc2Vpd2FsZCkgLSAoQ3J1ZGUpIHN1cHBvcnQgZm9yIC5zLCAuQywgLmNj
LCAuY3BwLCBhbmQgLmYgZmlsZXMuDQojIDAxLzA4Lzk1IChzZWl3YWxkKSAtIFNoZWxsIG5v
dyBoYW5kbGVkIHdpdGggYXdrLCBub3Qgc2VkDQojIDAxLzA5Lzk1IChzZWl3YWxkKSAtIElu
c3RhbGwqIG5vdyB0YWtlIGRlc3QgZGlyZWN0b3J5IGFzIHRhcmdldA0KIyAwMS8xMC85NSAo
c2Vpd2FsZCkgLSBBbGwgZW50cmllcyBzb3J0ZWQuDQojIDAxLzEwLzk1IChzZWl3YWxkKSAt
IE5UIHN1cHBvcnQgbW92ZWQgaW4sIHdpdGggTGF1cmFXJ3MgaGVscC4gIA0KIyAwMS8xMC85
NSAoc2Vpd2FsZCkgLSBWTVMgc3VwcG9ydCBtb3ZlZCBpbi4NCiMgMDIvMDYvOTUgKHNlaXdh
bGQpIC0gT2JqZWN0QysrRmxhZ3MgYW5kIFN1YkRpckMrK0ZsYWdzIGFkZGVkLg0KIyAwMi8w
Ny85NSAoc2Vpd2FsZCkgLSBJcm9uIG91dCB3aGVuIEhEUlNFQVJDSCB1c2VzICIiIG9yIFNF
QVJDSF9TT1VSQ0UuDQojIDAyLzA4Lzk1IChzZWl3YWxkKSAtIFN1YkRpciB3b3JrcyBvbiBW
TVMuDQojIDAyLzE0Lzk1IChzZWl3YWxkKSAtIE1rRGlyIGFuZCBlbnRvdXJhZ2UuDQojIDA0
LzMwLzk1IChzZWl3YWxkKSAtIFVzZSBpbnN0YWxsIC1jIGZsYWcgc28gdGhhdCBpdCBjb3Bp
ZXMsIG5vdCBtb3Zlcy4NCiMgMDcvMTAvOTUgKHRheWxvcikgLSBTdXBwb3J0IGZvciBNaWNy
b3NvZnQgQysrLg0KIyAxMS8yMS85NiAocGV0ZXJrKSAtIFN1cHBvcnQgZm9yIEJlT1MNCiMg
MDcvMTkvOTkgKHNpY2tlbCkgLSBTdXBwb3J0IGZvciBNYWMgT1MgWCBTZXJ2ZXIgKGFuZCBt
YXliZSBjbGllbnQpDQojIDAyLzE4LzAwIChiZWxtb250ZSktIFN1cHBvcnQgZm9yIEN5Z3dp
bi4NCg0KIyBTcGVjaWFsIHRhcmdldHMgZGVmaW5lZCBpbiB0aGlzIGZpbGU6DQojDQojIGFs
bCAgICAgICAgICAgLSBwYXJlbnQgb2YgZmlyc3QsIHNoZWxsLCBmaWxlcywgbGliLCBleGUN
CiMgZmlyc3QgICAgICAgICAtIGZpcnN0IGRlcGVuZGVudCBvZiAnYWxsJywgZm9yIHBvdGVu
dGlhbCBpbml0aWFsaXphdGlvbg0KIyBzaGVsbCAgICAgICAgIC0gcGFyZW50IG9mIGFsbCBT
aGVsbCB0YXJnZXRzIA0KIyBmaWxlcyAgICAgICAgIC0gcGFyZW50IG9mIGFsbCBGaWxlIHRh
cmdldHMNCiMgbGliICAgICAgICAgICAtIHBhcmVudCBvZiBhbGwgTGlicmFyeSB0YXJnZXRz
DQojIGV4ZSAgICAgICAgICAgLSBwYXJlbnQgb2YgYWxsIE1haW4gdGFyZ2V0cw0KIyBkaXJz
ICAgICAgICAgIC0gcGFyZW50IG9mIGFsbCBNa0RpciB0YXJnZXRzDQojIGNsZWFuICAgICAg
ICAgLSByZW1vdmVzIGFsbCBTaGVsbCwgRmlsZSwgTGlicmFyeSwgYW5kIE1haW4gdGFyZ2V0
cw0KIyB1bmluc3RhbGwgICAgIC0gcmVtb3ZlcyBhbGwgSW5zdGFsbCB0YXJnZXRzDQojICAg
ICAgIA0KDQojIFJ1bGVzIGRlZmluZWQgYnkgdGhpcyBmaWxlOg0KIw0KIyBhcyBvYmoubyA6
IHNvdXJjZS5zIDsgICAgICAgICAgICAgICAgIC5zIC0+IC5vDQojIEJ1bGsgZGlyIDogZmls
ZXMgOyAgICAgICAgICAgICAgICAgICAgcG9wdWxhdGUgZGlyZWN0b3J5IHdpdGggbWFueSBm
aWxlcw0KIyBDYyBvYmoubyA6IHNvdXJjZS5jIDsgICAgICAgICAgICAgICAgIC5jIC0+IC5v
DQojIEMrKyBvYmoubyA6IHNvdXJjZS5jYyA7ICAgICAgICAgICAgICAgLmNjIC0+IC5vDQoj
IENsZWFuIGNsZWFuIDogc291cmNlcyA7ICAgICAgICAgICAgICAgcmVtb3ZlIHNvdXJjZXMg
d2l0aCAnamFtIGNsZWFuJw0KIyBGaWxlIGRlc3QgOiBzb3VyY2UgOyAgICAgICAgICAgICAg
ICAgIGNvcHkgZmlsZQ0KIyBGb3J0cmFuIG9iai5vIDogc291cmNlLmYgOyAgICAgICAgICAg
IC5mIC0+IC5vDQojIEdlbkZpbGUgc291cmNlLmMgOiBwcm9ncmFtIGFyZ3MgOyAgICAgbWFr
ZSBjdXN0b20gZmlsZQ0KIyBIYXJkbGluayB0YXJnZXQgOiBzb3VyY2UgOyAgICAgICAgICAg
IG1ha2UgbGluayBmcm9tIHNvdXJjZSB0byB0YXJnZXQNCiMgSGRyUnVsZSBzb3VyY2UgOiBo
ZWFkZXJzIDsgICAgICAgICAgICBoYW5kbGUgI2luY2x1ZGVzDQojIEluc3RhbGxJbnRvIGRp
ciA6IHNvdXJjZXMgOyAgICAgICAgICAgaW5zdGFsbCBhbnkgZmlsZXMNCiMgSW5zdGFsbEJp
biBkaXIgOiBzb3VyY2VzIDsgICAgICAgICAgICBpbnN0YWxsIGJpbmFyaWVzDQojIEluc3Rh
bGxMaWIgZGlyIDogc291cmNlcyA7ICAgICAgICAgICAgaW5zdGFsbCBmaWxlcw0KIyBJbnN0
YWxsRmlsZSBkaXIgOiBzb3VyY2VzIDsgICAgICAgICAgIGluc3RhbGwgZmlsZXMNCiMgSW5z
dGFsbE1hbiBkaXIgOiBzb3VyY2VzIDsgICAgICAgICAgICBpbnN0YWxsIG1hbiBwYWdlcw0K
IyBJbnN0YWxsU2hlbGwgZGlyIDogc291cmNlcyA7ICAgICAgICAgIGluc3RhbGwgc2hlbGwg
c2NyaXB0cw0KIyBMZXggc291cmNlLmMgOiBzb3VyY2UubCA7ICAgICAgICAgICAgIC5sIC0+
IC5jDQojIExpYnJhcnkgbGliIDogc291cmNlIDsgICAgICAgICAgICAgICAgYXJjaGl2ZSBs
aWJyYXJ5IGZyb20gY29tcGlsZWQgc291cmNlcw0KIyBMaWJyYXJ5RnJvbU9iamVjdHMgbGli
IDogb2JqZWN0cyA7ICAgIGFyY2hpdmUgbGlicmFyeSBmcm9tIG9iamVjdHMNCiMgTGlua0xp
YnJhcmllcyBpbWFnZXMgOiBsaWJyYXJpZXMgOyAgICBiYWcgbGlicmFyaWVzIG9udG8gTWFp
bnMNCiMgTWFpbiBpbWFnZSA6IHNvdXJjZSA7ICAgICAgICAgICAgICAgICBsaW5rIGV4ZWN1
dGFibGUgZnJvbSBjb21waWxlZCBzb3VyY2VzDQojIE1haW5Gcm9tT2JqZWN0cyBpbWFnZSA6
IG9iamVjdHMgOyAgICAgbGluayBleGVjdXRhYmxlIGZyb20gb2JqZWN0cw0KIyBNa0RpciBk
aXIgOyAgICAgICAgICAgICAgICAgICAgICAgICAgIG1ha2UgYSBkaXJlY3RvcnksIGlmIG5v
dCB0aGVyZQ0KIyBPYmplY3Qgb2JqZWN0IDogc291cmNlIDsgICAgICAgICAgICAgIGNvbXBp
bGUgb2JqZWN0IGZyb20gc291cmNlDQojIE9iamVjdENjRmxhZ3Mgc291cmNlIDogZmxhZ3Mg
OyAgICAgICAgYWRkIGNvbXBpbGVyIGZsYWdzIGZvciBvYmplY3QNCiMgT2JqZWN0QysrRmxh
Z3Mgc291cmNlIDogZmxhZ3MgOyAgICAgICBhZGQgY29tcGlsZXIgZmxhZ3MgZm9yIG9iamVj
dA0KIyBPYmplY3RIZHJzIHNvdXJjZSA6IGRpcnMgOyAgICAgICAgICAgIGFkZCBpbmNsdWRl
IGRpcmVjdG9yaWVzIGZvciBvYmplY3QNCiMgT2JqZWN0cyBzb3VyY2VzIDsgICAgICAgICAg
ICAgICAgICAgICBjb21waWxlIHNvdXJjZXMNCiMgUm1UZW1wcyB0YXJnZXQgOiBzb3VyY2Vz
IDsgICAgICAgICAgICByZW1vdmUgdGVtcCBzb3VyY2VzIGFmdGVyIHRhcmdldCBtYWRlDQoj
IFNldHVpZCBpbWFnZXMgOyAgICAgICAgICAgICAgICAgICAgICAgbWFyayBleGVjdXRhYmxl
cyBTZXR1aWQNCiMgU3ViRGlyIFRPUCBkMSBkMiAuLi4gOyAgICAgICAgICAgICAgICBzdGFy
dCBhIHN1YmRpcmVjdG9yeSBKYW1maWxlDQojIFN1YkRpckNjRmxhZ3MgZmxhZ3MgOyAgICAg
ICAgICAgICAgICAgYWRkIGNvbXBpbGVyIGZsYWdzIHVudGlsIG5leHQgU3ViRGlyDQojIFN1
YkRpckMrK0ZsYWdzIGZsYWdzIDsgICAgICAgICAgICAgICAgYWRkIGNvbXBpbGVyIGZsYWdz
IHVudGlsIG5leHQgU3ViRGlyDQojIFN1YkRpckhkcnMgZGlycyA7ICAgICAgICAgICAgICAg
ICAgICAgYWRkIGluY2x1ZGUgZGlycyB1bnRpbCBuZXh0IFN1YkRpcg0KIyBTdWJJbmNsdWRl
IFRPUCBkMSBkMiAuLi4gOyAgICAgICAgICAgIGluY2x1ZGUgYSBzdWJkaXJlY3RvcnkgSmFt
ZmlsZQ0KIyBTaGVsbCBleGUgOiBzb3VyY2UgOyAgICAgICAgICAgICAgICAgIG1ha2UgYSBz
aGVsbCBleGVjdXRhYmxlDQojIFVuZGVmaW5lcyBpbWFnZXMgOiBzeW1ib2xzIDsgICAgICAg
ICAgc2F2ZSB1bmRlZidzIGZvciBsaW5raW5nDQojIFVzZXJPYmplY3Qgb2JqZWN0IDogc291
cmNlIDsgICAgICAgICAgaGFuZGxlIHVua25vd24gc3VmZml4ZXMgZm9yIE9iamVjdA0KIyBZ
YWNjIHNvdXJjZS5jIDogc291cmNlLnkgOyAgICAgICAgICAgIC55IC0+IC5jDQojDQojIFV0
aWxpdHkgcnVsZXMgdGhhdCBoYXZlIG5vIHNpZGUgZWZmZWN0cyAobm90IHN1cHBvcnRlZCk6
DQojDQojIEZBcHBlbmRTdWZmaXggZjEgZjIgLi4uIDogJChTVUYpIDsgICAgcmV0dXJuICQo
PCkgd2l0aCBzdWZmaXhlcw0KIyBqb2luIHZhbHVlIC4uLiA7ICAgICAgICAgICAgICAgICAg
IHJldHVybiBjb250YXRlbmF0ZWQgdmFsdWVzDQojIEZEaXJOYW1lIGQxIGQyIC4uLiA7ICAg
ICAgICAgICAgICAgICAgcmV0dXJuIHBhdGggZnJvbSByb290IHRvIGRpcg0KIyBGR3Jpc3Qg
ZDEgZDIgLi4uIDsgICAgICAgICAgICAgICAgICAgIHJldHVybiBkMSFkMiEuLi4NCiMgRkdy
aXN0RmlsZXMgdmFsdWUgOyAgICAgICAgICAgICAgICAgICByZXR1cm4gJCh2YWx1ZTpHPSQo
U09VUkNFX0dSSVNUKSkNCiMgRkdyaXN0U291cmNlRmlsZXMgdmFsdWUgOyAgICAgICAgICAg
ICByZXR1cm4gJCh2YWx1ZTpHPSQoU09VUkNFX0dSSVNUKSkNCiMgRlJlbFBhdGggZDEgOiBk
MiA7ICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVsIHBhdGggZnJvbSBkMSB0byBkMg0K
IyBGU3ViRGlyIGQxIGQyIC4uLiA7ICAgICAgICAgICAgICAgICAgIHJldHVybiBwYXRoIHRv
IHJvb3QNCiMNCg0KDQojIEJyaWVmIHJldmlldyBvZiB0aGUgamFtIGxhbmd1YWdlOg0KIw0K
IyBTdGF0ZW1lbnRzOg0KIyAgICAgICBydWxlIFJVTEUgLSBzdGF0ZW1lbnRzIHRvIHByb2Nl
c3MgYSBydWxlDQojICAgICAgIGFjdGlvbnMgUlVMRSAtIHN5c3RlbSBjb21tYW5kcyB0byBj
YXJyeSBvdXQgdGFyZ2V0IHVwZGF0ZQ0KIw0KIyBNb2RpZmllcnMgb24gYWN0aW9uczoNCiMg
ICAgICAgdG9nZXRoZXIgLSBtdWx0aXBsZSBpbnN0YW5jZXMgb2Ygc2FtZSBydWxlIG9uIHRh
cmdldCBnZXQgZXhlY3V0ZWQNCiMgICAgICAgICAgICAgICAgICBvbmNlIHdpdGggdGhlaXIg
c291cmNlcyAoJCg+KSkgY29uY2F0ZW5hdGVkDQojICAgICAgIHVwZGF0ZWQgLSByZWZlcnMg
dG8gdXBkYXRlZCBzb3VyY2VzICgkKD4pKSBvbmx5DQojICAgICAgIGlnbm9yZSAtIGlnbm9y
ZSByZXR1cm4gc3RhdHVzIG9mIGNvbW1hbmQNCiMgICAgICAgcXVpZXRseSAtIGRvbid0IHRy
YWNlIGl0cyBleGVjdXRpb24gdW5sZXNzIHZlcmJvc2UNCiMgICAgICAgcGllY2VtZWFsIC0g
aXRlcmF0ZSBjb21tYW5kIGVhY2ggdGltZSB3aXRoIGEgc21hbGwgc3Vic2V0IG9mICQoPikN
CiMgICAgICAgZXhpc3RpbmcgLSByZWZlcnMgdG8gY3VycmVudGx5IGV4aXN0aW5nIHNvdXJj
ZXMgKCQoPikpIG9ubHkNCiMgICAgICAgYmluZCB2YXJzIC0gc3ViamVjdCB0byBiaW5kaW5n
IGJlZm9yZSBleHBhbmRpbmcgaW4gYWN0aW9ucw0KIw0KIyBTcGVjaWFsIHJ1bGVzOg0KIyAg
ICAgICBBTFdBWVMgLSBhbHdheXMgYnVpbGQgYSB0YXJnZXQNCiMgICAgICAgREVQRU5EUyAt
IGJ1aWxkcyB0aGUgZGVwZW5kZW5jeSBncmFwaA0KIyAgICAgICBFQ0hPIC0gYmx1cnQgb3V0
IHRhcmdldHMgb24gc3Rkb3V0DQojICAgICAgIEVYSVQgLSBibHVydCBvdXQgdGFyZ2V0cyBh
bmQgZXhpdA0KIyAgICAgICBJTkNMVURFUyAtIG1hcmtzIHNvdXJjZXMgYXMgaGVhZGVycyBm
b3IgdGFyZ2V0IChhIGNvZGVwZW5kZW5jeSkNCiMgICAgICAgTk9DQVJFIC0gZG9uJ3QgcGFu
aWMgaWYgdGhlIHRhcmdldCBjYW4ndCBiZSBidWlsdA0KIyAgICAgICBOT1VQREFURSAtIGNy
ZWF0ZSB0aGUgdGFyZ2V0IGlmIG5lZWRlZCBidXQgbmV2ZXIgdXBkYXRlIGl0IA0KIyAgICAg
ICBOT1RGSUxFIC0gaWdub3JlIHRoZSB0aW1lc3RhbXAgb2YgdGhlIHRhcmdldCAoaXQncyBu
b3QgYSBmaWxlKQ0KIyAgICAgICBURU1QT1JBUlkgLSB0YXJnZXQgbmVlZCBub3QgYmUgcHJl
c2VudCBpZiBzb3VyY2VzIGhhdmVuJ3QgY2hhbmdlZA0KIw0KIyBTcGVjaWFsIHZhcmlhYmxl
cyBzZXQgYnkgamFtOg0KIyAgICAgICAkKDwpIC0gdGFyZ2V0cyBvZiBhIHJ1bGUgKHRvIHRo
ZSBsZWZ0IG9mIHRoZSA6KQ0KIyAgICAgICAkKD4pIC0gc291cmNlcyBvZiBhIHJ1bGUgKHRv
IHRoZSByaWdodCBvZiB0aGUgOikNCiMgICAgICAgJCh4eHgpIC0gdHJ1ZSBvbiB4eHggKFVO
SVgsIFZNUywgTlQsIE9TMiwgTUFDKQ0KIyAgICAgICAkKE9TKSAtIG5hbWUgb2YgT1MgLSB2
YXJpZXMgd2lsZGx5DQojICAgICAgICQoSkFNVkVSU0lPTikgLSB2ZXJzaW9uIG51bWJlciAo
Mi4zKQ0KIw0KIyBTcGVjaWFsIHZhcmlhYmxlcyB1c2VkIGJ5IGphbToNCiMgICAgICAgU0VB
UkNIIC0gd2hlcmUgdG8gZmluZCBzb21ldGhpbmcgKHVzZWQgZHVyaW5nIGJpbmRpbmcgYW5k
IGFjdGlvbnMpDQojICAgICAgIExPQ0FURSAtIHdoZXJlIHRvIHBsb3Agc29tZXRoaW5nIG5v
dCBmb3VuZCB3aXRoIFNFQVJDSA0KIyAgICAgICBIRFJSVUxFIC0gcnVsZSB0byBjYWxsIHRv
IGhhbmRsZSBpbmNsdWRlIGZpbGVzDQojICAgICAgIEhEUlNDQU4gLSBlZ3JlcCByZWdleCB0
byBleHRyYWN0IGluY2x1ZGUgZmlsZXMNCiMNCiMgU3BlY2lhbCB0YXJnZXRzOg0KIyAgICAg
ICBhbGwgLSBkZWZhdWx0IGlmIG5vbmUgZ2l2ZW4gb24gY29tbWFuZCBsaW5lDQojDQoNCiMg
SW5pdGlhbGl6ZSB2YXJpYWJsZXMNCiMNCg0KIw0KIyBPUyBzcGVjaWZpYyB2YXJpYWJsZSBz
ZXR0aW5ncw0KIw0KDQojIGR3YSA2LzQvMDEgLSByZW1vdmVkIGFsbCBzZXR0aW5ncyBvZiB0
aGUgZm9sbG93aW5nIHZhcmlhYmxlcyBmb3IgYm9vc3Q6DQojICAgQ0MsIENDRkxBR1MsIEMr
KywgQysrRkxBR1MsIExJTkssIExJTktGTEFHUywgTElOS0xJQlMNCiMgcHJvYmFibHkgYSBs
b3QgbW9yZSBjb3VsZCBiZSBjbGVhcmVkIGF3YXkNCg0KaWYgJChOVCkNCnsNCiAgICBDUCAg
ICAgICAgICAgICAgPz0gY29weSA7DQogICAgUk0gICAgICAgICAgICAgID89IGRlbCAvZi9x
IDsNCiAgICBTTEFTSCAgICAgICAgICAgPz0gXFwgOw0KICAgIFNQTElUUEFUSCAgICAgICA/
PSAiOyIgOyAjIGR3YSAtLSBhZGRlZCBtaXNzaW5nIFNQTElUUEFUSA0KICAgIFNVRkxJQiAg
ICAgICAgICA/PSAubGliIDsNCiAgICBTVUZPQkogICAgICAgICAgPz0gLm9iaiA7DQogICAg
U1VGRVhFICAgICAgICAgID89IC5leGUgOw0KICAgIFNVRkRMTCAgICAgICAgICA/PSAuZGxs
IC5saWIgOw0KICAgIGdMSU5LX1ZBUklBQkxFKC5kbGwpID0gOyAgICAgICAgICAgICAjIGRs
bHMgYXJlIE5PVCBsaW5rZWQgdG8gZGlyZWN0bHkNCiAgICBnTElOS19WQVJJQUJMRSgubGli
KSA9IE5FRURMSUJTIDsgICAgIyBpbnN0ZWFkLCB1c2VycyBsaW5rIHRvIGltcG9ydCBsaWJz
DQogICAgUFJFRExMICAgICAgICAgID89ICIiIDsNCiAgICBOT0FSU0NBTiAgICAgICAgPz0g
dHJ1ZSA7DQogICAgU0hFTExfRVhQT1JUICAgID89IDsNCiAgICBTSEVMTF9TRVQgICAgICAg
Pz0gInNldCAiIDsNCiAgICANCiAgICAjIGR3YSA2LzQvMDEgLSByZW1vdmVkIGNvbXBpbGVy
IGRldGVybWluYXRpb24gZm9yIGJvb3N0DQogICAgIyBhZGRlZCBzb21lIHlhY2MvbGV4IHN0
dWZmLCBhc3N1bWluZyBjeWd3aW4gZm9yIG5vdy4NCiAgICBMRVggICAgICAgICAgICAgPz0g
ZmxleCA7DQogICAgWUFDQyAgICAgICAgICAgID89IGJpc29uIC15IDsNCiAgICBZQUNDRklM
RVMgICAgICAgPz0geS50YWIgOw0KICAgIFlBQ0NfT1VUUFVUICAgICA/PSAtLW91dHB1dD0g
Ow0KICAgIExFWF9PVVRQVVQgICAgICA/PSAtbyA7DQogICAgDQogICAgTE4gICAgICAgICAg
ICAgID89ICQoQ1ApIDsNCn0NCmVsc2UgaWYgJChPUzIpDQp7DQogICAgV0FUQ09NICAgICAg
ICAgID89ICQod2F0Y29tKSA7DQoNCiAgICBpZiAhICQoV0FUQ09NKQ0KICAgIHsNCiAgICAg
ICAgRVhJVCBPbiBPUzIsIHNldCBXQVRDT00gdG8gdGhlIHJvb3Qgb2YgdGhlIFdhdGNvbSBk
aXJlY3RvcnkuIDsNCiAgICB9DQoNCiAgICBBUiAgICAgICAgICAgICAgPz0gd2xpYiA7DQog
ICAgQklORElSICAgICAgICAgID89IFxcb3MyXFxhcHBzIDsNCiAgICBDUCAgICAgICAgICAg
ICAgPz0gY29weSA7DQogICAgRE9UICAgICAgICAgICAgID89IC4gOw0KICAgIERPVERPVCAg
ICAgICAgICA/PSAuLiA7DQogICAgTVYgICAgICAgICAgICAgID89IG1vdmUgOw0KICAgIE5P
QVJTQ0FOICAgICAgICA/PSB0cnVlIDsNCiAgICBPUFRJTSAgICAgICAgICAgPz0gOw0KICAg
IFJNICAgICAgICAgICAgICA/PSBkZWwgL2YgOw0KICAgIFNMQVNIICAgICAgICAgICA/PSBc
XCA7DQogICAgU1BMSVRQQVRIICAgICAgID89ICI7IiA7ICMgZHdhIC0tIGFkZGVkIG1pc3Np
bmcgU1BMSVRQQVRIDQogICAgU1RESERSUyAgICAgICAgID89ICQoV0FUQ09NKVxcaCA7DQog
ICAgU1VGRVhFICAgICAgICAgID89IC5leGUgOw0KICAgIFNVRkxJQiAgICAgICAgICA/PSAu
bGliIDsNCiAgICBTVUZPQkogICAgICAgICAgPz0gLm9iaiA7DQogICAgVU5ERUZGTEFHICAg
ICAgID89ICIvdSBfIiA7DQoNCn0NCmVsc2UgaWYgJChWTVMpDQp7DQogICAgQ0hNT0QgICAg
ICAgICAgID89IHNldCBmaWxlL3Byb3Q9IDsNCiAgICBDUCAgICAgICAgICAgICAgPz0gY29w
eS9yZXBsYWNlIDsNCiAgICBDUkVMSUIgICAgICAgICAgPz0gdHJ1ZSA7DQogICAgRE9UICAg
ICAgICAgICAgID89IFtdIDsNCiAgICBET1RET1QgICAgICAgICAgPz0gWy1dIDsNCiAgICBF
WEVNT0RFICAgICAgICAgPz0gKHc6ZSkgOw0KICAgIEZJTEVNT0RFICAgICAgICA/PSAodzpy
KSA7DQogICAgSERSUyAgICAgICAgICAgID89IDsNCiAgICBNS0RJUiAgICAgICAgICAgPz0g
Y3JlYXRlL2RpciA7DQogICAgTVYgICAgICAgICAgICAgID89IHJlbmFtZSA7DQogICAgT1BU
SU0gICAgICAgICAgID89ICIiIDsNCiAgICBSTSAgICAgICAgICAgICAgPz0gZGVsZXRlIDsN
CiAgICBSVU5WTVMgICAgICAgICAgPz0gbWNyIDsNCiAgICBTSEVMTE1PREUgICAgICAgPz0g
KHc6ZXIpIDsNCiAgICBTTEFTSCAgICAgICAgICAgPz0gLiA7DQogICAgU1RESERSUyAgICAg
ICAgID89IGRlY2MkbGlicmFyeV9pbmNsdWRlIDsNCiAgICBTVUZFWEUgICAgICAgICAgPz0g
LmV4ZSA7DQogICAgU1VGTElCICAgICAgICAgID89IC5vbGIgOw0KICAgIFNVRk9CSiAgICAg
ICAgICA/PSAub2JqIDsNCg0KICAgIHN3aXRjaCAkKE9TKSANCiAgICB7DQogICAgY2FzZSBW
TVMgICAgIDogTElOS0xJQlMgPz0gc3lzJGxpYnJhcnk6dmF4Y3J0bC5vbGIvbGliIDsNCiAg
ICB9DQp9DQplbHNlIGlmICQoTUFDKQ0Kew0KICAgIGxvY2FsIE9QVCA7DQoNCiAgICBDVyAg
ICAgID89ICJ7Q1d9IiA7DQoNCiAgICBNQUNIRFJTID89DQogICAgICAgICAgICAiJChVTUFD
SERSUyk6VW5pdmVyc2FsOkludGVyZmFjZXM6Q0luY2x1ZGVzIg0KICAgICAgICAgICAgIiQo
Q1cpOk1TTDpNU0xfQzpNU0xfQ29tbW9uOkluY2x1ZGUiDQogICAgICAgICAgICAiJChDVyk6
TVNMOk1TTF9DOk1TTF9NYWNPUzpJbmNsdWRlIiA7DQoNCiAgICBNQUNMSUJTID89DQogICAg
ICAgICAgICAiJChDVyk6TWFjT1MgU3VwcG9ydDpVbml2ZXJzYWw6TGlicmFyaWVzOlN0dWJM
aWJyYXJpZXM6SW50ZXJmYWNlbGliIg0KICAgICAgICAgICAgIiQoQ1cpOk1hY09TIFN1cHBv
cnQ6VW5pdmVyc2FsOkxpYnJhcmllczpTdHViTGlicmFyaWVzOk1hdGhsaWIiIDsNCg0KICAg
IE1QV0xJQlMgPz0gDQogICAgICAgICAgICAiJChDVyk6TWFjT1MgU3VwcG9ydDpMaWJyYXJp
ZXM6UnVudGltZTpSdW50aW1lIFBQQzpNU0wgTVBXQ1J1bnRpbWUubGliIg0KICAgICAgICAg
ICAgIiQoQ1cpOk1TTDpNU0xfQzpNU0xfTWFjT1M6TGliOlBQQzpNU0wgQy5QUEMgTVBXLkxp
YiIgOw0KDQogICAgTVBXTkxMSUJTID89IA0KICAgICAgICAgICAgIiQoQ1cpOk1hY09TIFN1
cHBvcnQ6TGlicmFyaWVzOlJ1bnRpbWU6UnVudGltZSBQUEM6TVNMIE1QV0NSdW50aW1lLmxp
YiINCiAgICAgICAgICAgICIkKENXKTpNU0w6TVNMX0M6TVNMX01hY09TOkxpYjpQUEM6TVNM
IEMuUFBDIE1QVyhOTCkuTGliIiA7DQoNCiAgICBTSU9VWEhEUlMgPz0gOw0KDQogICAgU0lP
VVhMSUJTID89IA0KICAgICAgICAgICAgIiQoQ1cpOk1hY09TIFN1cHBvcnQ6TGlicmFyaWVz
OlJ1bnRpbWU6UnVudGltZSBQUEM6TVNMIFJ1bnRpbWVQUEMubGliIg0KICAgICAgICAgICAg
IiQoQ1cpOk1TTDpNU0xfQzpNU0xfTWFjT1M6TGliOlBQQzpNU0wgU0lPVVguUFBDLkxpYiIg
DQogICAgICAgICAgICAiJChDVyk6TVNMOk1TTF9DOk1TTF9NYWNPUzpMaWI6UFBDOk1TTCBD
LlBQQy5MaWIiIDsNCg0KICAgIENQICAgICAgICAgICAgICA/PSBkdXBsaWNhdGUgLXkgOw0K
ICAgIERPVCAgICAgICAgICAgICA/PSAiOiIgOw0KICAgIERPVERPVCAgICAgICAgICA/PSAi
OjoiIDsNCiAgICBIRFJTICAgICAgICAgICAgPz0gJChNQUNIRFJTKSAkKE1QV0hEUlMpIDsN
CiAgICBNS0RJUiAgICAgICAgICAgPz0gbmV3Zm9sZGVyIDsNCiAgICBNViAgICAgICAgICAg
ICAgPz0gcmVuYW1lIC15IDsNCiAgICBOT0FSU0NBTiAgICAgICAgPz0gdHJ1ZSA7DQogICAg
T1BUSU0gICAgICAgICAgID89IDsNCiAgICBSTSAgICAgICAgICAgICAgPz0gZGVsZXRlIC15
IDsNCiAgICBTTEFTSCAgICAgICAgICAgPz0gIjoiIDsNCiAgICBTVERIRFJTICAgICAgICAg
Pz0gOyANCiAgICBTVUZMSUIgICAgICAgICAgPz0gLmxpYiA7DQogICAgU1VGT0JKICAgICAg
ICAgID89IC5vIDsNCn0NCmVsc2UgaWYgJChPUykgPSBCRU9TICYmICQoTUVUUk9XRVJLUykN
CnsNCiAgICBBUiAgICAgICAgICAgICAgPz0gbXdsZCAteG1sIC1vIDsNCiAgICBCSU5ESVIg
ICAgICAgICAgPz0gL2Jvb3QvYXBwcyA7DQogICAgRk9SVFJBTiAgICAgICAgID89ICIiIDsN
CiAgICBMSUJESVIgICAgICAgICAgPz0gL2Jvb3QvZGV2ZWxvcC9saWJyYXJpZXMgOw0KICAg
IE1BTkRJUiAgICAgICAgICA/PSAvYm9vdC9kb2N1bWVudGF0aW9uLyJTaGVsbCBUb29scyIv
SFRNTCA7DQogICAgTk9BUlNDQU4gICAgICAgID89IHRydWUgOw0KICAgIFNUREhEUlMgICAg
ICAgICA/PSAvYm9vdC9kZXZlbG9wL2hlYWRlcnMvcG9zaXggOw0KfQ0KZWxzZSBpZiAkKE9T
KSA9IEJFT1MgDQp7DQogICAgQklORElSICAgICAgICAgID89IC9ib290L2FwcHMgOw0KICAg
IEZPUlRSQU4gICAgICAgICA/PSAiIiA7DQogICAgTElCRElSICAgICAgICAgID89IC9ib290
L2RldmVsb3AvbGlicmFyaWVzIDsNCiAgICBOT0FSU0NBTiAgICAgICAgPz0gdHJ1ZSA7DQog
ICAgU1RESERSUyAgICAgICAgID89IC9ib290L2RldmVsb3AvaGVhZGVycy9wb3NpeCA7DQp9
DQplbHNlIGlmICQoVU5JWCkNCnsNCiAgICBzd2l0Y2ggJChPUykNCiAgICB7DQogICAgY2Fz
ZSBBSVggOg0KICAgICAgICBJTVBMSUJfRkxBR1MgICAgPz0gLWJJOiA7DQogICAgICAgIFNV
RkRMTCAgICAgICAgICA/PSAuc28gOw0KICAgICAgICBnTElOS19WQVJJQUJMRSguc28pID0g
TkVFRExJQlMgOyAgIyBzaGFyZWQgbGlicyBzaG91bGQgYmUgYWRkZWQgdG8gdGhlIGxpc3Qg
b2YgbGlicyBuZWVkZWQNCiAgICAgICAgZ0xJTktfVkFSSUFCTEUoLmltcCkgPSBORUVESU1Q
UyA7ICMgaW1wb3J0IGxpYnMgYXJlIGhhbmRsZWQgc2VwYXJhdGVseS4NCiAgICAgICAgZ1NI
RUxMX0xJQlBBVEggPSBMSUJQQVRIIDsNCiAgICAgICAgDQogICAgY2FzZSBBTUlHQSA6DQog
ICAgICAgIFlBQ0MgICAgICAgICAgICA/PSBiaXNvbiAteSA7DQoNCiAgICBjYXNlIENZR1dJ
TiA6ICAgICAgIA0KICAgICAgICBMRVggICAgICAgICAgICAgPz0gZmxleCA7DQogICAgICAg
IFJBTkxJQiAgICAgICAgICA/PSAiIiA7DQogICAgICAgIFNVRkVYRSAgICAgICAgICA/PSAu
ZXhlIDsNCiAgICAgICAgWUFDQyAgICAgICAgICAgID89IGJpc29uIC15IDsNCiAgICAgICAg
TUtESVIgICAgICAgICAgID89IG1rZGlyIC1wIDsNCiAgICAgICAgU1VGRExMICAgICAgICAg
ID89IC5kbGwgOw0KDQogICAgY2FzZSBER1VYIDoNCiAgICAgICAgUkFOTElCICAgICAgICAg
ID89ICIiIDsNCiAgICAgICAgUkVMT0NBVEUgICAgICAgID89IHRydWUgOw0KDQogICAgY2Fz
ZSBIUFVYIDoNCiAgICAgICAgUkFOTElCICAgICAgICAgID89ICIiIDsNCg0KICAgIGNhc2Ug
SU5URVJJWCA6DQogICAgICAgIFJBTkxJQiAgICAgICAgICA/PSAiIiA7DQoNCiAgICBjYXNl
IElSSVggOg0KICAgICAgICBSQU5MSUIgICAgICAgICAgPz0gIiIgOw0KDQogICAgY2FzZSBM
SU5VWCA6DQogICAgICAgIENMT05FICAgICAgICAgICA/PSBjcCAtZnBkIDsNCg0KICAgIGNh
c2UgTVBFSVggOg0KICAgICAgICBIRFJTICAgICAgICAgICAgKz0gL3Vzci9pbmNsdWRlIDsN
CiAgICAgICAgUkFOTElCICAgICAgICAgID89ICIiIDsgDQogICAgICAgIE5PQVJTQ0FOICAg
ICAgICA/PSB0cnVlIDsNCiAgICAgICAgTk9BUlVQREFURSAgICAgID89IHRydWUgOw0KDQog
ICAgY2FzZSBNVlMgOg0KICAgICAgICBSQU5MSUIgICAgICAgICAgPz0gIiIgOyANCg0KICAg
IGNhc2UgTkVYVCA6DQogICAgICAgIEFSICAgICAgICAgICAgICA/PSBsaWJ0b29sIC1vIDsN
CiAgICAgICAgUkFOTElCICAgICAgICAgID89ICIiIDsNCg0KICAgIGNhc2UgTUFDT1NYIDoN
CiAgICAgICAgTUFORElSICAgICAgICAgID89IC91c3IvbG9jYWwvc2hhcmUvbWFuIDsNCiAg
ICAgICAgU1VGRExMICAgICAgICAgID89IC5keWxpYiA7DQogICAgICAgIGdTSEVMTF9MSUJQ
QVRIICA/PSBEWUxEX0xJQlJBUllfUEFUSCA7DQogICAgICAgIE5PQVJTQ0FOICAgICAgICA/
PSB0cnVlIDsNCg0KICAgIGNhc2UgTkNSIDoNCiAgICAgICAgUkFOTElCICAgICAgICAgID89
ICIiIDsNCg0KICAgIGNhc2UgUFRYIDoNCiAgICAgICAgUkFOTElCICAgICAgICAgID89ICIi
IDsNCg0KICAgIGNhc2UgUU5YIDoNCiAgICAgICAgQVIgICAgICAgICAgICAgID89IHdsaWIg
Ow0KICAgICAgICBOT0FSU0NBTiAgICAgICAgPz0gdHJ1ZSA7DQogICAgICAgIFJBTkxJQiAg
ICAgICAgICA/PSAiIiA7DQoNCiAgICBjYXNlIFNDTyA6DQogICAgICAgIFJBTkxJQiAgICAg
ICAgICA/PSAiIiA7DQogICAgICAgIFJFTE9DQVRFICAgICAgICA/PSB0cnVlIDsNCg0KICAg
IGNhc2UgU0lOSVggOg0KICAgICAgICBSQU5MSUIgICAgICAgICAgPz0gIiIgOw0KDQogICAg
Y2FzZSBTT0xBUklTIDoNCiAgICAgICAgUkFOTElCICAgICAgICAgID89ICIiIDsNCiAgICAg
ICAgQVIgICAgICAgICAgICAgID89ICIvdXNyL2Njcy9iaW4vYXIgcnUiIDsNCg0KICAgIGNh
c2UgVU5JQ09TIDoNCiAgICAgICAgTk9BUlNDQU4gICAgICAgID89IHRydWUgOw0KICAgICAg
ICBPUFRJTSAgICAgICAgICAgPz0gLU8wIDsNCg0KICAgIGNhc2UgVU5JWFdBUkUgOg0KICAg
ICAgICBSQU5MSUIgICAgICAgICAgPz0gIiIgOw0KICAgICAgICBSRUxPQ0FURSAgICAgICAg
Pz0gdHJ1ZSA7DQoNCiAgICBjYXNlIE9TRiA6DQogICAgICAgIGdMSU5LX1ZBUklBQkxFKC5z
bykgPSBORUVETElCUyA7ICMgc2hhcmVkIG9iamVjdHMgc2hvdWxkIGJlIGFkZGVkIHRvIHRo
ZSBsaXN0IG9mIGxpYnMgbmVlZGVkDQogICAgfQ0KDQogICAgIyBVTklYIGRlZmF1bHRzDQog
ICAgQ0hNT0QgICAgICAgICAgID89IGNobW9kIDsNCiAgICBMRVggICAgICAgICAgICAgPz0g
bGV4IDsNCiAgICBPUFRJTSAgICAgICAgICAgPz0gLU8gOw0KICAgIFJBTkxJQiAgICAgICAg
ICA/PSByYW5saWIgOw0KICAgIFlBQ0MgICAgICAgICAgICA/PSB5YWNjIDsNCiAgICBZQUND
RklMRVMgICAgICAgPz0geS50YWIgOw0KICAgIFlBQ0NGTEFHUyAgICAgICA/PSAtZCA7DQog
ICAgU0hFTExfRVhQT1JUICAgID89ICJleHBvcnQgIiA7DQogICAgU0hFTExfU0VUICAgICAg
ID89ICIiIDsNCiAgICBnU0hFTExfTElCUEFUSCAgPz0gTERfTElCUkFSWV9QQVRIIDsNCn0N
CiAgICANCiMNCiMgR2VuZXJhbCBkZWZhdWx0czsgYSBsb3QgbGlrZSBVTklYDQojDQoNCkFS
ICAgICAgICAgICAgICA/PSBhciBydSA7DQpBUyAgICAgICAgICAgICAgPz0gYXMgOw0KQVNG
TEFHUyAgICAgICAgID89IDsNCkFXSyAgICAgICAgICAgICA/PSBhd2sgOw0KQklORElSICAg
ICAgICAgID89IC91c3IvbG9jYWwvYmluIDsNCkNMT05FICAgICAgICAgICA/PSAkKENQKSA7
DQpDTE9ORSAgICAgICAgICAgPz0gY3AgLWZwIDsNCkNQICAgICAgICAgICAgICA/PSBjcCAt
ZiA7DQpDUkVMSUIgICAgICAgICAgPz0gOw0KRE9UICAgICAgICAgICAgID89IC4gOw0KRE9U
RE9UICAgICAgICAgID89IC4uIDsNCkVYRU1PREUgICAgICAgICA/PSA3MTEgOw0KRExMTU9E
RSAgICAgICAgID89IDc1NSA7DQpGSUxFTU9ERSAgICAgICAgPz0gNjQ0IDsNCkZPUlRSQU4g
ICAgICAgICA/PSBmNzcgOw0KRk9SVFJBTkZMQUdTICAgID89IDsNCkhEUlMgICAgICAgICAg
ICA/PSA7DQpKQU1GSUxFICAgICAgICAgPz0gSmFtZmlsZSA7DQpKQU1SVUxFUyAgICAgICAg
Pz0gSmFtcnVsZXMgOw0KTEVYICAgICAgICAgICAgID89IDsNCkxJQkRJUiAgICAgICAgICA/
PSAvdXNyL2xvY2FsL2xpYiA7DQpMTiAgICAgICAgICAgICAgPz0gbG4gOw0KTUFORElSICAg
ICAgICAgID89IC91c3IvbG9jYWwvbWFuIDsNCk1LRElSICAgICAgICAgICA/PSBta2RpciA7
DQpNViAgICAgICAgICAgICAgPz0gbXYgLWYgOw0KT1BUSU0gICAgICAgICAgID89IDsNClJD
UCAgICAgICAgICAgICA/PSByY3AgOw0KUk0gICAgICAgICAgICAgID89IHJtIC1mIDsNClJT
SCAgICAgICAgICAgICA/PSByc2ggOw0KU0VEICAgICAgICAgICAgID89IHNlZCA7DQpTSEVM
TEhFQURFUiAgICAgPz0gIiMhL2Jpbi9zaCIgOw0KU0hFTExNT0RFICAgICAgID89IDc1NSA7
DQpTSEVMTF9FWFBPUlQgICAgPz0gOw0KU0hFTExfU0VUICAgICAgID89ICIiIDsNClNMQVNI
ICAgICAgICAgICA/PSAvIDsNClNQTElUUEFUSCAgICAgICA/PSAiOiIgOyAjIGR3YSAtLSBh
ZGRlZCBtaXNzaW5nIFNQTElUUEFUSA0KU1RESERSUyAgICAgICAgID89IC91c3IvaW5jbHVk
ZSA7DQpTVUZFWEUgICAgICAgICAgPz0gIiIgOw0KU1VGRExMICAgICAgICAgID89IC5zbyA7
DQpTVUZMSUIgICAgICAgICAgPz0gLmEgOw0KU1VGT0JKICAgICAgICAgID89IC5vIDsNClBS
RURMTCAgICAgICAgICA/PSBsaWIgOw0KUFJFTElCICAgICAgICAgID89IGxpYiA7DQpVTkRF
RkZMQUcgICAgICAgPz0gIi11IF8iIDsNCllBQ0MgICAgICAgICAgICA/PSA7DQpZQUNDRklM
RVMgICAgICAgPz0gOw0KWUFDQ0ZMQUdTICAgICAgID89IDsNCkJJTl9ESVJFQ1RPUlkgICA/
PSBiaW4gOw0KDQpIRFJQQVRURVJOID0gDQogICAgICAgICJeWyAgICAgXSojWyAgICBdKmlu
Y2x1ZGVbICAgICAgXSooWzxcIl1bXlwiPl0qW1wiPl0pLiokIiA7DQogICAgICAgICAgDQoj
IiBNeSBKYW0gbW9kZSBnZXRzIGl0cyBzeW50YXggaGlnaGxpZ2h0aW5nIGNvbmZ1c2VkIHdp
dGhvdXQgdGhpcyBjb21tZW50DQoNCk9TRlVMTCA9ICQoT1MpJChPU1ZFUikkKE9TUExBVCkg
JChPUykkKE9TUExBVCkgJChPUykkKE9TVkVSKSAkKE9TKSA7DQoNCiMNCiMgUnVsZSB0byBh
dXRvbWF0ZSBwYXRjaGluZyBvZiBzaW5nbGV0b24gdmFyaWFibGVzIGZyb20gdGhlIHVzZXIg
c28gdGhhdA0KIyB0aGV5IGFyZSBjb3JyZWN0bHkgaW50ZXJwcmV0ZWQgYXMgYSBzaW5nbGUg
ZW50cnkgaW5zdGVhZCBvZiBhcyBhIGxpc3QgaWYNCiMgdGhleSBoYXBwZW4gdG8gY29udGFp
biBzcGFjZXMuDQojDQojIFRoaXMgYWxzbyByZW1lbWJlcnMgdGhlIGZpcnN0KGdsb2JhbCkg
dmFsdWUgc28gdGhhdCBpdCBjYW4gYmUgcmVzZXQNCiMgd2hlbiBjbGVhcmVkLCBidXQgdXNl
ZCBhZ2Fpbi4NCiMNCnJ1bGUgc2V0LWFzLXNpbmdsZXRvbiAoIHZhcmlhYmxlcyArICkNCnsN
CiAgICBmb3IgbG9jYWwgdmFyaWFibGUgaW4gJCh2YXJpYWJsZXMpDQogICAgew0KICAgICAg
ICAkKHZhcmlhYmxlKSA9ICQoJCh2YXJpYWJsZSk6Sj0iICIpIDsNCiAgICAgICAgI34gaWYg
ISAkKGdTSU5HTEVUT05fU0VUKCQodmFyaWFibGUpKSkNCiAgICAgICAgI34gew0KICAgICAg
ICAgICAgI34gZ1NJTkdMRVRPTigkKHZhcmlhYmxlKSkgPSAkKCQodmFyaWFibGUpKSA7DQog
ICAgICAgICAgICAjfiBnU0lOR0xFVE9OX1NFVCgkKHZhcmlhYmxlKSkgPSB0cnVlIDsNCiAg
ICAgICAgI34gfQ0KICAgICAgICAjfiAkKHZhcmlhYmxlKSA/PSAkKGdTSU5HTEVUT04oJCh2
YXJpYWJsZSkpKSA7DQogICAgfQ0KfQ0KDQojDQojICJGaXgiIHRoZSBrbm93biBwb3NzaWJs
eSBkaXJlY3RvcnkgdmFyaWFibGVzLg0KIw0Kc2V0LWFzLXNpbmdsZXRvbg0KICAgIEJJTkRJ
Ug0KICAgIENXDQogICAgSkFNRklMRQ0KICAgIEpBTVJVTEVTDQogICAgSkFNU0hFTEwNCiAg
ICBMSUJESVINCiAgICBNQU5ESVINCiAgICBXQVRDT00NCiAgICA7DQoNCiMNCiMgQmFzZSBk
ZXBlbmRlbmNpZXMgLSBmaXJzdCBmb3IgImJvb3RzdHJhcCIga2luZHMgb2YgcnVsZXMNCiMN
Cg0KIyBkd2EgNi8xNy8wMSAtIGFkZGVkIHRlc3QNCkRFUEVORFMgYWxsIDogc2hlbGwgZmls
ZXMgbGliIGRsbCBleGUgb2JqIDsNCkRFUEVORFMgYWxsIHNoZWxsIGZpbGVzIGxpYiBkbGwg
ZXhlIG9iaiB0ZXN0IDogZmlyc3QgOw0KTk9URklMRSBhbGwgZmlyc3Qgc2hlbGwgZmlsZXMg
bGliIGRsbCBleGUgb2JqIGRpcnMgY2xlYW4gdW5pbnN0YWxsIHRlc3QgOw0KQUxXQVlTIGNs
ZWFuIHVuaW5zdGFsbCA7DQoNCiMNCiMgUnVsZXMNCiMNCg0KIyBkd2EgNi80LzAxIC0gYWRk
ZWQgZm9yIGJvb3N0DQojIHR5cGUtREVQRU5EUyB0eXBlIDogdGFyZ2V0cy4uLg0KIw0KIyBV
c2UgdGhpcyB0byBjcmVhdGUgYSBkZXBlbmRlbmN5IGJldHdlZW4gYSBmYWtlIHR5cGUtdGFy
Z2V0IGFuZCBvdGhlciB0YXJnZXRzLiBXaWxsIHByZXZlbnQNCiMgdGFyZ2V0cyBpbiBkZXBl
bmRlZSBzdWJwcm9qZWN0cyBmcm9tIGJlaW5nIGFkZGVkIHRvIHRoZSB0eXBlLXRhcmdldCdz
IGRlcGVuZGVuY2llcy4NCnJ1bGUgdHlwZS1ERVBFTkRTICMgdHlwZS10YXJnZXQgOiB0YXJn
ZXRzLi4uDQp7DQogICAgaWYgISAkKGdTVVBQUkVTU19GQUtFX1RBUkdFVFMpICYmICEgJChn
SU5fTElCX0lOQ0xVREUpDQogICAgew0KICAgICAgICBERVBFTkRTICQoPCkgOiAkKD4pIDsN
CiAgICB9DQp9DQoNCiMgZHdhIDYvNC8wMSAtIGFkZGVkIGZvciBib29zdA0KIyBBcmNoaXZl
IGZpbGUtdGFyZ2V0IDogc291cmNlcw0KIw0KIyBVc2VkIHRvIGRpc3BhdGNoIHRocm91Z2gg
QXJjaGl2ZS1hY3Rpb24sIHdoaWNoIHNob3VsZCBiZSByZWRlZmluZWQgaW4gdG9vbHNldA0K
IyBkZXNjcmlwdGlvbiBmaWxlcy4NCnJ1bGUgQXJjaGl2ZQ0Kew0KICAgIEFyY2hpdmUtYWN0
aW9uICQoPCkgOiAkKD4pIDsNCn0NCg0KcnVsZSBBcw0Kew0KICAgIERFUEVORFMgJCg8KSA6
ICQoPikgOw0KICAgIEFTRkxBR1Mgb24gJCg8KSArPSAkKEFTRkxBR1MpICQoU1VCRElSQVNG
TEFHUykgOw0KfQ0KDQpydWxlIEJ1bGsNCnsNCiAgICBsb2NhbCBpIDsNCg0KICAgIGZvciBp
IGluICQoPikNCiAgICB7DQogICAgICAgIEZpbGUgJChpOkQ9JCg8KSkgOiAkKGkpIDsNCiAg
ICB9DQp9DQoNCiMgZHdhIDYvNC8wMSAtIG1vZGlmaWVkIGZvciBib29zdA0KIyBmYWN0b3Jl
ZCBvdXQgc3R1ZmYgZnJvbSB0aGUgYnVpbHRpbiBDYyBhbmQgQysrIHJ1bGVzDQpydWxlIENj
LXBsYXRmb3JtLXNwZWNpZmljcw0Kew0KICAgICMgSWYgdGhlIGNvbXBpbGVyJ3MgLW8gZmxh
ZyBkb2Vzbid0IHdvcmssIHJlbG9jYXRlIHRoZSAubw0KDQogICAgaWYgJChSRUxPQ0FURSkN
CiAgICB7DQogICAgICAgIENjTXYgJCg8KSA6ICQoPikgOw0KICAgIH0NCg0KICAgIGxvY2Fs
IF9oID0gJChTRUFSQ0hfU09VUkNFKSAkKEhEUlMpIDsNCg0KICAgIGlmICQoVk1TKSAmJiAk
KF9oKQ0KICAgIHsNCiAgICAgICAgU0xBU0hJTkMgb24gJCg8KSA9ICIvaW5jPSgiICQoX2hb
MV0pICwkKF9oWzItXSkgIikiIDsNCiAgICB9DQogICAgZWxzZSBpZiAkKE1BQykgJiYgJChf
aCkNCiAgICB7DQogICAgICAgIGxvY2FsIF9pIF9qIDsNCiAgICAgICAgX2ogPSAkKF9oWzFd
KSA7DQogICAgICAgIGZvciBfaSBpbiAkKF9oWzItXSkNCiAgICAgICAgew0KICAgICAgICAg
ICAgX2ogPSAkKF9qKSwkKF9pKSA7DQogICAgICAgIH0NCiAgICAgICAgTUFDSU5DIG9uICQo
PCkgPSBcIiQoX2opXCIgOw0KICAgIH0NCn0NCg0KIyBkd2EgNi80LzAxIC0gYWRkZWQgZm9y
IGJvb3N0DQojIGFsd2F5cy1jKysgZmlsZW5hbWUuLi4NCiMNCiMgZGVjbGFyZXMgdGhhdCB0
aGUgZ2l2ZW4gZmlsZXMgc2hvdWxkIGJlIGNvbXBpbGVkIGFzIEMrKywgcmVnYXJkbGVzcyBv
ZiB0aGVpcg0KIyBmaWxlbmFtZSBleHRlbnNpb24uDQpydWxlIGFsd2F5cy1jKysNCnsNCiAg
ICBnQUxXQVlTX0MrKyArPSBbIEZHcmlzdEZpbGVzICQoPCkgXSA7DQp9DQoNCiMgZHdhIDYv
NC8wMSAtIG1vZGlmaWVkIGZvciBib29zdA0KcnVsZSBDYw0Kew0KICAgIERFUEVORFMgJCg8
KSA6ICQoPikgOw0KDQogICAgQ2MtcGxhdGZvcm0tc3BlY2lmaWNzICQoPCkgOiAkKD4pIDsN
Cg0KICAgIGlmICQoPikgaW4gJChnQUxXQVlTX0MrKykNCiAgICB7DQogICAgICAgIEMrKy1h
Y3Rpb24gJCg8KSA6ICQoPikgOw0KICAgIH0NCiAgICBlbHNlDQogICAgew0KICAgICAgICBD
Yy1hY3Rpb24gJCg8KSA6ICQoPikgOw0KICAgIH0NCn0NCg0KIyBkd2EgNi80LzAxIC0gbW9k
aWZpZWQgZm9yIGJvb3N0DQpydWxlIEMrKw0Kew0KICAgIERFUEVORFMgJCg8KSA6ICQoPikg
Ow0KDQogICAgQ2MtcGxhdGZvcm0tc3BlY2lmaWNzICQoPCkgOiAkKD4pIDsNCiAgICANCiAg
ICBDKystYWN0aW9uICQoPCkgOiAkKD4pIDsNCn0NCg0KcnVsZSBDaG1vZA0Kew0KICAgIGlm
ICQoQ0hNT0QpIHsgQ2htb2QxICQoPCkgOyB9DQp9DQoNCiMgZHdhIDYvNC8wMSAtIGFkZGVk
IGZvciBib29zdA0KIyBjb25kaXRpb25hbCA8Y29uZD4gOiA8dHJ1ZS12YWx1ZT4gOiA8ZmFs
c2UtdmFsdWU+DQojIHJldHVybnMgPHRydWUtdmFsdWU+IGlmIDxjb25kPiwgPGZhbHNlLXZh
bHVlPiBvdGhlcndpc2UNCnJ1bGUgY29uZGl0aW9uYWwNCnsNCiAgICBpZiAkKDEpIHsgcmV0
dXJuICQoMikgOyB9IGVsc2UgeyByZXR1cm4gJCgzKSA7IH0NCn0NCg0KIyBkd2EgNi80LzAx
IC0gbW9kaWZpZWQgZm9yIGJvb3N0DQpydWxlIEZpbGUNCnsNCiAgICB0eXBlLURFUEVORFMg
ZmlsZXMgOiAkKDwpIDsNCiAgICBERVBFTkRTICQoPCkgOiAkKD4pIDsNCiAgICBTRUFSQ0gg
b24gJCg+KSA9ICQoU0VBUkNIX1NPVVJDRSkgOw0KICAgIE1PREUgb24gJCg8KSA9ICQoRklM
RU1PREUpIDsNCiAgICBDaG1vZCAkKDwpIDsNCn0NCg0KcnVsZSBGaWxlQ2xvbmUNCnsNCiAg
ICB0eXBlLURFUEVORFMgZmlsZXMgOiAkKDwpIDsNCiAgICBERVBFTkRTICQoPCkgOiAkKD4p
IDsNCiAgICBTRUFSQ0ggb24gJCg+KSA9ICQoU0VBUkNIX1NPVVJDRSkgOw0KfQ0KDQpydWxl
IEZvcnRyYW4NCnsNCiAgICBERVBFTkRTICQoPCkgOiAkKD4pIDsNCn0NCg0KcnVsZSBHZW5G
aWxlIA0Kew0KICAgIGxvY2FsIF90ID0gWyBGR3Jpc3RTb3VyY2VGaWxlcyAkKDwpIF0gOw0K
ICAgIGxvY2FsIF9zID0gWyBGQXBwZW5kU3VmZml4ICQoPlsxXSkgOiAkKFNVRkVYRSkgXSA7
DQogICAgRGVwZW5kcyAkKF90KSA6ICQoX3MpICQoPlsyLV0pIDsNCiAgICBHZW5GaWxlMSAk
KF90KSA6ICQoX3MpICQoPlsyLV0pIDsNCiAgICBDbGVhbiBjbGVhbiA6ICQoX3QpIDsNCn0N
Cg0KcnVsZSBHZW5GaWxlMQ0Kew0KICAgIE1ha2VMb2NhdGUgJCg8KSA6ICQoTE9DQVRFX1NP
VVJDRSkgOw0KICAgIFNFQVJDSCBvbiAkKD4pID0gJChTRUFSQ0hfU09VUkNFKSA7DQp9DQoN
CiMgZHdhIDYvNC8wMSAtIG1vZGlmaWVkIGZvciBib29zdA0KcnVsZSBIYXJkTGluaw0Kew0K
ICAgIHR5cGUtREVQRU5EUyBmaWxlcyA6ICQoPCkgOw0KICAgIERFUEVORFMgJCg8KSA6ICQo
PikgOw0KICAgIFNFQVJDSCBvbiAkKD4pID0gJChTRUFSQ0hfU09VUkNFKSA7DQp9DQoNCnJ1
bGUgSGRyUnVsZQ0Kew0KICAgICMgSGRyUnVsZSBzb3VyY2UgOiBoZWFkZXJzIDsNCg0KICAg
ICMgTi5CLiAgVGhpcyBydWxlIGlzIGNhbGxlZCBkdXJpbmcgYmluZGluZywgcG90ZW50aWFs
bHkgYWZ0ZXINCiAgICAjIHRoZSBmYXRlIG9mIG1hbnkgdGFyZ2V0cyBoYXMgYmVlbiBkZXRl
cm1pbmVkLCBhbmQgbXVzdCBiZQ0KICAgICMgdXNlZCB3aXRoIGNhdXRpb246IGRvbid0IGFk
ZCBkZXBlbmRlbmNpZXMgdG8gdW5yZWxhdGVkDQogICAgIyB0YXJnZXRzLCBhbmQgZG9uJ3Qg
c2V0IHZhcmlhYmxlcyBvbiAkKDwpLg0KDQogICAgIyBUZWxsIEphbSB0aGF0IGFueXRoaW5n
IGRlcGVuZGluZyBvbiAkKDwpIGFsc28gZGVwZW5kcyBvbiAkKD4pLA0KICAgICMgc2V0IFNF
QVJDSCBzbyBKYW0gY2FuIGZpbmQgdGhlIGhlYWRlcnMsIGJ1dCB0aGVuIHNheSB3ZSBkb24n
dA0KICAgICMgY2FyZSBpZiB3ZSBjYW4ndCBhY3R1YWxseSBmaW5kIHRoZSBoZWFkZXJzICh0
aGV5IG1heSBoYXZlIGJlZW4NCiAgICAjIHdpdGhpbiBpZmRlZnMpLA0KDQogICAgbG9jYWwg
YW5nbGUtaW5jbHVkZXMgPSBbIHN1YnN0LWxpc3QgJCg+KSA6ICI8KC4rKT4iIF0gOw0KICAg
IGxvY2FsIHF1b3RlZC1pbmNsdWRlcyA9IFsgc3Vic3QtbGlzdCAkKD4pIDogIlwiKC4rKVwi
IiBdIDsNCg0KICAgIGxvY2FsIHMgOw0KDQogICAgaWYgJChIRFJHUklTVCkgDQogICAgeyAN
CiAgICAgICAgYW5nbGUtaW5jbHVkZXMgPSAkKGFuZ2xlLWluY2x1ZGVzOkc9JChIRFJHUklT
VCkpIDsNCiAgICAgICAgcXVvdGVkLWluY2x1ZGVzID0gJChxdW90ZWQtaW5jbHVkZXM6Rz0k
KEhEUkdSSVNUKSkgOw0KICAgIH0gDQoNCiAgICBsb2NhbCBzID0gJChhbmdsZS1pbmNsdWRl
cykgJChxdW90ZWQtaW5jbHVkZXMpIDsNCg0KICAgIElOQ0xVREVTICQoPCkgOiAkKHMpIDsN
CiAgICBTRUFSQ0ggb24gJChhbmdsZS1pbmNsdWRlcykgPSAkKEhEUlNFQVJDSCkgIDsNCiAg
ICBTRUFSQ0ggb24gJChxdW90ZWQtaW5jbHVkZXMpID0gJChnQklORElORygkKDwpKTpEKSAk
KEhEUlNFQVJDSCkgIDsNCiAgICBOT0NBUkUgJChzKSA7DQoNCiAgICBCSU5EUlVMRSBvbiAk
KHMpID0gcmVtZW1iZXItYmluZGluZyA7DQoNCiAgICAjIFByb3BhZ2F0ZSBvbiAkKDwpIHRv
ICQoPikNCg0KICAgIEhEUlNFQVJDSCBvbiAkKHMpID0gJChIRFJTRUFSQ0gpIDsNCiAgICBI
RFJTQ0FOIG9uICQocykgPSAkKEhEUlNDQU4pIDsNCiAgICBIRFJSVUxFIG9uICQocykgPSAk
KEhEUlJVTEUpIDsNCiAgICBIRFJHUklTVCBvbiAkKHMpID0gJChIRFJHUklTVCkgOw0KfQ0K
DQojIGR3YSA2LzQvMDEgLSBtb2RpZmllZCBmb3IgYm9vc3QNCnJ1bGUgSW5zdGFsbEludG8N
CnsNCiAgICBsb2NhbCBpIHQgOw0KDQogICAgdCA9ICQoPjpHPWluc3RhbGxlZCkgOw0KDQog
ICAgdHlwZS1ERVBFTkRTIGluc3RhbGwgOiAkKHQpIDsNCiAgICBERVBFTkRTICQodCkgOiAk
KD4pIDsNCiAgICBTRUFSQ0ggb24gJCg+KSA9ICQoU0VBUkNIX1NPVVJDRSkgOw0KICAgIE1h
a2VMb2NhdGUgJCh0KSA6ICQoPCkgOw0KDQogICAgIyBBcnJhbmdlIGZvciBqYW0gdW5pbnN0
YWxsDQoNCiAgICBDbGVhbiB1bmluc3RhbGwgOiAkKHQpIDsNCg0KICAgIGZvciBpIGluICQo
PikNCiAgICB7DQogICAgICAgIEluc3RhbGwgJChpOkc9aW5zdGFsbGVkKSA6ICQoaSkgOw0K
ICAgIH0NCg0KICAgIENobW9kICQodCkgOw0KDQogICAgaWYgJChVTklYKQ0KICAgIHsNCiAg
ICAgICAgaWYgJChPV05FUikgeyBDaG93biAkKHQpIDsgT1dORVIgb24gJCh0KSA9ICQoT1dO
RVIpIDsgfQ0KICAgICAgICBpZiAkKEdST1VQKSB7IENoZ3JwICQodCkgOyBHUk9VUCBvbiAk
KHQpID0gJChHUk9VUCkgOyB9DQogICAgfQ0KfQ0KDQpydWxlIEluc3RhbGxCaW4NCnsNCiAg
ICBsb2NhbCBfdCA9IFsgRkFwcGVuZFN1ZmZpeCAkKD4pIDogJChTVUZFWEUpIF0gOw0KDQog
ICAgSW5zdGFsbEludG8gJCg8KSA6ICQoX3QpIDsNCiAgICBNT0RFIG9uICQoX3Q6Rz1pbnN0
YWxsZWQpID0gJChFWEVNT0RFKSA7DQp9DQoNCnJ1bGUgSW5zdGFsbEZpbGUNCnsNCiAgICBJ
bnN0YWxsSW50byAkKDwpIDogJCg+KSA7DQogICAgTU9ERSBvbiAkKD46Rz1pbnN0YWxsZWQp
ID0gJChGSUxFTU9ERSkgOw0KfQ0KDQpydWxlIEluc3RhbGxMaWINCnsNCiAgICBJbnN0YWxs
SW50byAkKDwpIDogJCg+KSA7DQogICAgTU9ERSBvbiAkKD46Rz1pbnN0YWxsZWQpID0gJChG
SUxFTU9ERSkgOw0KfQ0KDQpydWxlIEluc3RhbGxNYW4NCnsNCiAgICAjIFJlYWxseSB0aGlz
IGp1c3Qgc3RyaXBzIHRoZSAuIGZyb20gdGhlIHN1ZmZpeA0KDQogICAgbG9jYWwgaSBzIGQg
Ow0KDQogICAgZm9yIGkgaW4gJCg+KQ0KICAgIHsNCiAgICAgICAgc3dpdGNoICQoaTpTKQ0K
ICAgICAgICB7DQogICAgICAgIGNhc2UgLjEgOiBzID0gMSA7IGNhc2UgLjIgOiBzID0gMiA7
IGNhc2UgLjMgOiBzID0gMyA7DQogICAgICAgIGNhc2UgLjQgOiBzID0gNCA7IGNhc2UgLjUg
OiBzID0gNSA7IGNhc2UgLjYgOiBzID0gNiA7DQogICAgICAgIGNhc2UgLjcgOiBzID0gNyA7
IGNhc2UgLjggOiBzID0gOCA7IGNhc2UgLmwgOiBzID0gbCA7DQogICAgICAgIGNhc2UgLm4g
OiBzID0gbiA7IGNhc2UgLm1hbiA6IHMgPSAxIDsNCiAgICAgICAgfQ0KDQogICAgICAgIGQg
PSBtYW4kKHMpIDsNCg0KICAgICAgICBJbnN0YWxsSW50byAkKGQ6Uj0kKDwpKSA6ICQoaSkg
Ow0KICAgIH0NCg0KICAgIE1PREUgb24gJCg+Okc9aW5zdGFsbGVkKSA9ICQoRklMRU1PREUp
IDsNCn0NCg0KcnVsZSBJbnN0YWxsU2hlbGwNCnsNCiAgICBJbnN0YWxsSW50byAkKDwpIDog
JCg+KSA7DQogICAgTU9ERSBvbiAkKD46Rz1pbnN0YWxsZWQpID0gJChTSEVMTE1PREUpIDsN
Cn0NCg0KIyBkd2EgNi80LzAxIC0gbW9kaWZpZWQgZm9yIGJvb3N0DQpydWxlIExleCAjIGZp
bGUuYyA6IGZpbGUubA0Kew0KICAgICMgSWYgd2UgZG9uJ3QgaGF2ZSBhIHdheSBvZiBzcGVj
aWZ5aW5nIHRoZSBsZXggb3V0cHV0IGZpbGUsIHdlJ2xsIGhhdmUgdG8gbW92ZSBpdA0KICAg
ICMgV2UnZCByYXRoZXIgbm90IGRvIHRoaXMgaWYgcG9zc2libGUgYmVjYXVzZTogYS4gbGV4
IGdlbmVyYXRlcyAjbGluZQ0KICAgICMgZGlyZWN0aXZlcyBmb3IgdGhlIG91dHB1dCBmaWxl
IHdoaWNoIHdvdWxkIHJlZmVyIHRvIHRoZSB3cm9uZyBwbGFjZSBhbmQNCiAgICAjIGIuIHRo
ZSBKYW0gaW52b2NhdGlvbiBkaXJlY3RvcnkgY291bGQgYmUgcmVhZC1vbmx5DQogICAgaWYg
ISAkKExFWF9PVVRQVVQpDQogICAgew0KICAgICAgICBMZXhNdiAkKDwpIDogJCg+KSA7DQog
ICAgfQ0KICAgIA0KICAgIERFUEVORFMgJCg8KSA6ICQoPikgOw0KICAgIE1ha2VMb2NhdGUg
JCg8KSA6ICQoTE9DQVRFX1NPVVJDRSkgOw0KICAgIFNFQVJDSCBvbiAkKDwpID0gJChMT0NB
VEVfU09VUkNFKSA7DQogICAgQ2xlYW4gY2xlYW4gOiAkKDwpIDsNCn0NCg0KIyBkd2EgNi80
LzAxIC0gbW9kaWZpZWQgZm9yIGJvb3N0DQpydWxlIExpYnJhcnkNCnsNCiAgICBMaWJyYXJ5
RnJvbU9iamVjdHMgJCg8KSA6IFsgT2JqZWN0cyAkKD4pIF0gOw0KfQ0KDQojIGR3YSA2LzQv
MDEgLSBtb2RpZmllZCBmb3IgYm9vc3QNCnJ1bGUgTGlicmFyeUZyb21PYmplY3RzDQp7DQog
ICAgbG9jYWwgX2kgX2wgOw0KDQogICAgX2wgPSAkKDw6Uz0kKFNVRkxJQikpIDsNCg0KICAg
ICMgbGlicmFyeSBkZXBlbmRzIG9uIGl0cyBtZW1iZXIgb2JqZWN0cw0KDQogICAgaWYgJChL
RUVQT0JKUykNCiAgICB7DQogICAgICAgIHR5cGUtREVQRU5EUyBvYmogOiAkKD4pIDsNCiAg
ICB9DQogICAgZWxzZQ0KICAgIHsNCiAgICAgICAgdHlwZS1ERVBFTkRTIGxpYiA6ICQoX2wp
IDsNCiAgICB9DQoNCiAgICAjIFNldCBMT0NBVEUgZm9yIHRoZSBsaWJyYXJ5IGFuZCBpdHMg
Y29udGVudHMuICBUaGUgYm91bmQNCiAgICAjIHZhbHVlIHNob3dzIHVwIGFzICQoTkVFRExJ
QlMpIG9uIHRoZSBMaW5rIGFjdGlvbnMuDQogICAgIyBGb3IgY29tcGF0aWJpbGl0eSwgd2Ug
b25seSBkbyB0aGlzIGlmIHRoZSBsaWJyYXJ5IGRvZXNuJ3QNCiAgICAjIGFscmVhZHkgaGF2
ZSBhIHBhdGguDQoNCiAgICBpZiAhICQoX2w6RCkNCiAgICB7DQogICAgICAgIE1ha2VMb2Nh
dGUgJChfbCkgJChfbCkoJCg+OkJTKSkgOiAkKExPQ0FURV9UQVJHRVQpIDsNCiAgICB9DQoN
CiAgICBpZiAkKE5PQVJTQ0FOKSANCiAgICB7IA0KICAgICAgICAjIElmIHdlIGNhbid0IHNj
YW4gdGhlIGxpYnJhcnkgdG8gdGltZXN0YW1wIGl0cyBjb250ZW50cywNCiAgICAgICAgIyB3
ZSBoYXZlIHRvIGp1c3QgbWFrZSB0aGUgbGlicmFyeSBkZXBlbmQgZGlyZWN0bHkgb24gdGhl
DQogICAgICAgICMgb24tZGlzayBvYmplY3QgZmlsZXMuICANCg0KICAgICAgICBERVBFTkRT
ICQoX2wpIDogJCg+KSA7DQogICAgfQ0KICAgIGVsc2UNCiAgICB7DQogICAgICAgICMgSWYg
d2UgY2FuIHNjYW4gdGhlIGxpYnJhcnksIHdlIG1ha2UgdGhlIGxpYnJhcnkgZGVwZW5kDQog
ICAgICAgICMgb24gaXRzIG1lbWJlcnMgYW5kIGVhY2ggbWVtYmVyIGRlcGVuZCBvbiB0aGUg
b24tZGlzaw0KICAgICAgICAjIG9iamVjdCBmaWxlLg0KDQogICAgICAgIERFUEVORFMgJChf
bCkgOiAkKF9sKSgkKD46QlMpKSA7DQoNCiAgICAgICAgZm9yIF9pIGluICQoPikNCiAgICAg
ICAgew0KICAgICAgICAgICAgREVQRU5EUyAkKF9sKSgkKF9pOkJTKSkgOiAkKF9pKSA7DQog
ICAgICAgIH0NCiAgICB9DQoNCiAgICBDbGVhbiBjbGVhbiA6ICQoX2wpIDsNCg0KICAgIGlm
ICQoQ1JFTElCKSB7IENyZUxpYiAkKF9sKSA6ICQoPlsxXSkgOyB9DQoNCiAgICBBcmNoaXZl
ICQoX2wpIDogJCg+KSA7DQoNCiAgICBpZiAkKFJBTkxJQikgeyBSYW5saWIgJChfbCkgOyB9
DQoNCiAgICAjIElmIHdlIGNhbid0IHNjYW4gdGhlIGxpYnJhcnksIHdlIGhhdmUgdG8gbGVh
dmUgdGhlIC5vJ3MgYXJvdW5kLg0KDQogICAgaWYgISAoICQoTk9BUlNDQU4pIHx8ICQoS0VF
UE9CSlMpICkgeyBSbVRlbXBzICQoX2wpIDogJCg+KSA7IH0NCn0NCg0KIyBkd2EgNi80LzAx
IC0gbW9kaWZpZWQgZm9yIGJvb3N0IHRvIGRpc3BhdGNoIHRocm91Z2ggTGluay1hY3Rpb24g
YW5kIHRvIHBhc3MNCiMgdGhlIHRhcmdldC10eXBlIHRocm91Z2guICoqKiBOT1cgVU5VU0VE
IEJZIEJPT1NUICoqKg0KIw0KIyBMaW5rIGV4ZWN1dGFibGUtdGFyZ2V0IDogb2JqZWN0LXRh
cmdldC4uLg0KcnVsZSBMaW5rDQp7DQogICAgTU9ERSBvbiAkKDwpID0gJChFWEVNT0RFKSA7
DQogICAgTGluay1hY3Rpb24gJCg8KSA6ICQoPikgOiAkKDMpIDsNCiAgICBDaG1vZCAkKDwp
IDsNCn0NCg0KcnVsZSBMaW5rTGlicmFyaWVzDQp7DQogICAgIyBtYWtlIGxpYnJhcnkgZGVw
ZW5kZW5jaWVzIG9mIHRhcmdldA0KICAgICMgc2V0IE5FRURMSUJTIHZhcmlhYmxlIHVzZWQg
YnkgJ2FjdGlvbnMgTWFpbicNCg0KICAgIGxvY2FsIF90ID0gWyBGQXBwZW5kU3VmZml4ICQo
PCkgOiAkKFNVRkVYRSkgXSA7DQoNCiAgICBERVBFTkRTICQoX3QpIDogJCg+OlM9JChTVUZM
SUIpKSA7DQogICAgTkVFRExJQlMgb24gJChfdCkgKz0gJCg+OlM9JChTVUZMSUIpKSA7DQp9
DQoNCiMgZHdhIDYvNC8wMSAtIG1vZGlmaWVkIGZvciBib29zdA0KcnVsZSBNYWluDQp7DQog
ICAgTWFpbkZyb21PYmplY3RzICQoPCkgOiBbIE9iamVjdHMgJCg+KSBdIDsNCn0NCg0KIyBk
d2EgNi80LzAxIC0gbW9kaWZpZWQgZm9yIGJvb3N0DQpydWxlIE1haW5Gcm9tT2JqZWN0cw0K
ew0KICAgIGxvY2FsIF9zIF90IDsNCg0KICAgICMgQWRkIGdyaXN0IHRvIGZpbGUgbmFtZXMN
CiAgICAjIEFkZCBzdWZmaXggdG8gZXhlDQoNCiAgICBfcyA9ICQoPikgOw0KICAgIF90ID0g
WyBGQXBwZW5kU3VmZml4ICQoPCkgOiAkKFNVRkVYRSkgXSA7DQoNCiAgICBpZiAkKF90KSAh
PSAkKDwpDQogICAgew0KICAgICAgICBERVBFTkRTICQoPCkgOiAkKF90KSA7DQogICAgICAg
IE5PVEZJTEUgJCg8KSA7DQogICAgfQ0KDQogICAgIyBtYWtlIGNvbXBpbGVkIHNvdXJjZXMg
YSBkZXBlbmRlbmN5IG9mIHRhcmdldA0KDQogICAgdHlwZS1ERVBFTkRTIGV4ZSA6ICQoX3Qp
IDsNCiAgICBERVBFTkRTICQoX3QpIDogJChfcykgOw0KICAgIE1ha2VMb2NhdGUgJChfdCkg
OiAkKExPQ0FURV9UQVJHRVQpIDsNCg0KICAgIENsZWFuIGNsZWFuIDogJChfdCkgOw0KDQog
ICAgTGluayAkKF90KSA6ICQoX3MpIDsNCn0NCg0KIyBkd2EgNi80LzAxIC0gbW9kaWZpZWQg
Zm9yIGJvb3N0DQpydWxlIE1ha2VMb2NhdGUNCnsNCiAgICBpZiAkKD4pDQogICAgew0KICAg
ICAgICBMT0NBVEUgb24gJCg8KSA9ICQoPikgOw0KDQogICAgICAgICMgcHJvdmlkZSBhIHdh
eSB0byBnZXQgYmFjayB0aGUgbG9jYXRpb24gZnJvbSBhIGJ1aWx0IHRhcmdldCBuYW1lLg0K
ICAgICAgICBnTE9DQVRFKCQoPCkpID0gJCg+KSA7IA0KICAgICAgICANCiAgICAgICAgIyBX
ZSBhZGQgZGlyZWN0b3J5LWdyaXN0IGhlcmUgc28gdGhhdCBpbXBsaWNpdGx5LWNyZWF0ZWQg
ZGlyZWN0b3J5DQogICAgICAgICMgdGFyZ2V0IG5hbWVzIGRvbid0IGNvbGxpZGUgd2l0aCB1
c2VyLXNwZWNpZmllZCB0YXJnZXRzLg0KICAgICAgICBEZXBlbmRzICQoPCkgOiBbIE1rRGly
ICQoPlsxXTpHPWRpcmVjdG9yeS1ncmlzdCkgXSA7DQogICAgfQ0KfQ0KDQojIG5vdyByZXR1
cm5zIHRoZSBjcmVhdGVkIGRpcmVjdG9yeSB0YXJnZXQgLS0gZHdhDQpydWxlIE1rRGlyDQp7
DQogICAgIyBJZiBkaXIgZXhpc3RzLCBkb24ndCB1cGRhdGUgaXQNCiAgICAjIERvIHRoaXMg
ZXZlbiBmb3IgJChET1QpLg0KDQogICAgbG9jYWwgZGlyID0gJCg8KSA7DQogICAgaWYgJChO
VCkNCiAgICB7DQogICAgICAgICMgbWFrZSBzdXJlIHNsYXNoZXMgYWxsIGdvIHRoZSByaWdo
dCB3YXkNCiAgICAgICAgZGlyID0gWyBzcGxpdC1wYXRoICQoZGlyKSBdIDsNCiAgICAgICAg
ZGlyID0gJChkaXI6Sj0kKFNMQVNIKSkgOw0KICAgIH0NCiAgICANCiAgICBsb2NhbCByZXN1
bHQgPSAkKGRpcikgOw0KICAgIA0KICAgIHdoaWxlICQoZGlyKSAmJiAoICQoZGlyKSAhPSAk
KERPVCkgKSAmJiAhICQoJChkaXIpLW1rZGlyKSANCiAgICB7DQogICAgICAgICMgQ2hlZXN5
IGdhdGUgdG8gcHJldmVudCBtdWx0aXBsZSBpbnZvY2F0aW9ucyBvbiBzYW1lIGRpcg0KICAg
ICAgICAjIE1rRGlyMSBoYXMgdGhlIGFjdGlvbnMgDQogICAgICAgICMgQXJyYW5nZSBmb3Ig
amFtIGRpcnMNCg0KICAgICAgICAkKGRpciktbWtkaXIgPSB0cnVlIDsNCiAgICAgICAgTWtE
aXIxICQoZGlyKSA7DQogICAgICAgIERlcGVuZHMgZGlycyA6ICQoZGlyKSA7DQogICAgICAg
IE5PVVBEQVRFICQoZGlyKSA7DQoNCg0KICAgICAgICAjIFJlY3Vyc2l2ZWx5IG1ha2UgcGFy
ZW50IGRpcmVjdG9yaWVzLg0KICAgICAgICAjICQoZGlyOlApID0gJChkaXIpJ3MgcGFyZW50
LCAmIHdlIHJlY3Vyc2UgdW50aWwgcm9vdA0KDQogICAgICAgIGxvY2FsIHMgPSAkKGRpcjpQ
KSA7DQoNCiAgICAgICAgaWYgJChOVCkNCiAgICAgICAgew0KICAgICAgICAgICAgc3dpdGNo
ICQocykNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgIGNhc2UgKjogICA6IHMgPSA7DQog
ICAgICAgICAgICBjYXNlICo6XFwgOiBzID0gOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9
DQoNCiAgICAgICAgaWYgJChzKSAmJiAkKHMpICE9ICQoZGlyKQ0KICAgICAgICB7DQogICAg
ICAgICAgICBEZXBlbmRzICQoZGlyKSA6ICQocykgOw0KICAgICAgICAgICAgZGlyID0gJChz
KSA7DQogICAgICAgIH0NCiAgICAgICAgZWxzZSANCiAgICAgICAgew0KICAgICAgICAgICAg
ZGlyID0gOyAjIHN0b3AgaXRlcmF0aW5nDQogICAgICAgICAgICBpZiAkKHMpIHsgTk9URklM
RSAkKHMpIDsgfQ0KICAgICAgICB9DQogICAgfQ0KICAgIHJldHVybiAkKHJlc3VsdCkgOw0K
fQ0KDQojIGR3YSA2LzQvMDEgLSBtb2RpZmllZCBmb3IgYm9vc3QNCnJ1bGUgT2JqZWN0DQp7
DQogICAgbG9jYWwgaCA7DQoNCiAgICB0eXBlLURFUEVORFMgb2JqIDogJCg8KSA7DQogICAg
c2V0LXRhcmdldC12YXJpYWJsZXMgJCg8KSA7DQogICAgDQogICAgIyBNYWtlIGl0IHBvc3Np
YmxlIHRvIGNvbXBpbGUgYSBnaXZlbiBzb3VyY2UgZmlsZSBieSBnaXZpbmcgaXRzDQogICAg
IyBvYmplY3QgZmlsZSBuYW1lIGFzIGEgdGFyZ2V0Lg0KICAgIHR5cGUtREVQRU5EUyAkKDw6
Rz0pIDogJCg8KSA7IA0KICAgIA0KICAgICMgbG9jYXRlIG9iamVjdCBhbmQgc2VhcmNoIGZv
ciBzb3VyY2UsIGlmIHdhbnRlZA0KDQogICAgQ2xlYW4gY2xlYW4gOiAkKDwpIDsNCg0KICAg
IE1ha2VMb2NhdGUgJCg8KSA6ICQoTE9DQVRFX1RBUkdFVCkgOw0KICAgIFNFQVJDSCBvbiAk
KD4pID0gJChTRUFSQ0hfU09VUkNFKSA7DQoNCiAgICAjIFNhdmUgSERSUyBmb3IgLUkkKEhE
UlMpIG9uIGNvbXBpbGUuDQogICAgIyBXZSBzaG91bGRuJ3QgbmVlZCAtSSQoU0VBUkNIX1NP
VVJDRSkgYXMgY2MgY2FuIGZpbmQgaGVhZGVycw0KICAgICMgaW4gdGhlIC5jIGZpbGUncyBk
aXJlY3RvcnksIGJ1dCBnZW5lcmF0ZWQgLmMgZmlsZXMgKGZyb20NCiAgICAjIHlhY2MsIGxl
eCwgZXRjKSBhcmUgbG9jYXRlZCBpbiAkKExPQ0FURV9UQVJHRVQpLCBwb3NzaWJseQ0KICAg
ICMgZGlmZmVyZW50IGZyb20gJChTRUFSQ0hfU09VUkNFKS4NCg0KICAgICMgVXNlIHVuaXF1
ZSB0byBjbGVhbiB1cCBjb25mdXNpbmcgZHVwbGljYXRlcyBhIGJpdA0KICAgIEhEUlMgb24g
JCg8KSA9IFsgdW5pcXVlICQoTE9DQVRFX1NPVVJDRSkgJChIRFJTKSBdIDsNCg0KICAgICMg
U2V0IFNUREhEUlMgb24gdGhlIG9iamVjdCBzbyB0aGF0IG11bHRpLWNvbXBpbGVyIGJ1aWxk
cyB3aWxsIHNlYXJjaCBmb3INCiAgICAjIGhlYWRlcnMgaW4gdGhlIHJpZ2h0IHBsYWNlcy4g
DQogICAgU1RESERSUyBvbiAkKDwpID0gJChTVERIRFJTKSA7DQoNCiAgICAjIGhhbmRsZSAj
aW5jbHVkZXMgZm9yIHNvdXJjZTogSmFtIHNjYW5zIGZvciBoZWFkZXJzIHdpdGgNCiAgICAj
IHRoZSByZWdleHAgcGF0dGVybiAkKEhEUlNDQU4pIGFuZCB0aGVuIGludm9rZXMgJChIRFJS
VUxFKQ0KICAgICMgd2l0aCB0aGUgc2Nhbm5lZCBmaWxlIGFzIHRoZSB0YXJnZXQgYW5kIHRo
ZSBmb3VuZCBoZWFkZXJzDQogICAgIyBhcyB0aGUgc291cmNlcy4gIEhEUlNFQVJDSCBpcyB0
aGUgdmFsdWUgb2YgU0VBUkNIIHVzZWQgZm9yDQogICAgIyB0aGUgZm91bmQgaGVhZGVyIGZp
bGVzLiAgRmluYWxseSwgaWYgamFtIG11c3QgZGVhbCB3aXRoIA0KICAgICMgaGVhZGVyIGZp
bGVzIG9mIHRoZSBzYW1lIG5hbWUgaW4gZGlmZmVyZW50IGRpcmVjdG9yaWVzLA0KICAgICMg
dGhleSBjYW4gYmUgZGlzdGluZ3Vpc2hlZCB3aXRoIEhEUkdSSVNULg0KDQogICAgIyAkKGgp
IGlzIHdoZXJlIGNjIGZpcnN0IGxvb2tzIGZvciAjaW5jbHVkZSAiZm9vLmgiIGZpbGVzLg0K
ICAgICMgSWYgdGhlIHNvdXJjZSBmaWxlIGlzIGluIGEgZGlzdGFudCBkaXJlY3RvcnksIGxv
b2sgdGhlcmUuDQogICAgIyBFbHNlLCBsb29rIGluICIiICh0aGUgY3VycmVudCBkaXJlY3Rv
cnkpLg0KDQogICAgaWYgJChTRUFSQ0hfU09VUkNFKQ0KICAgIHsNCiAgICAgICAgaCA9ICQo
U0VBUkNIX1NPVVJDRSkkKFNMQVNIKSQoPjpEKSA7DQogICAgfQ0KICAgIGVsc2UNCiAgICB7
DQogICAgICAgIGggPSAkKD46RCkgOw0KICAgIH0NCg0KICAgIEhEUlJVTEUgb24gJCg+KSA9
IEhkclJ1bGUgOw0KICAgIEhEUlNDQU4gb24gJCg+KSA9ICQoSERSUEFUVEVSTikgOw0KICAg
IEhEUlNFQVJDSCBvbiAkKD4pID0gJChIRFJTKSAkKGgpICQoU1RESERSUykgOw0KICAgIEhE
UkdSSVNUIG9uICQoPikgPSAkKEhEUkdSSVNUKSA7DQoNCiAgICAjIGlmIHNvdXJjZSBpcyBu
b3QgLmMsIGdlbmVyYXRlIC5jIHdpdGggc3BlY2lmaWMgcnVsZQ0KDQogICAgIyBtYWtlIHN1
cmUgd2UgZG9uJ3QgZ2VuZXJhdGUgdGhlIHNhbWUgb2JqZWN0IHR3aWNlLg0KICAgIGlmICEg
JChnR0VORVJBVEVEX1RBUkdFVCgkKDwpKSkNCiAgICB7DQogICAgICAgIHN3aXRjaCAkKD46
UykNCiAgICAgICAgew0KICAgICAgICAgICAgY2FzZSAuYXNtIDogQXMgJCg8KSA6ICQoPikg
Ow0KICAgICAgICAgICAgY2FzZSAuYyA6ICAgQ2MgJCg8KSA6ICQoPikgOw0KICAgICAgICAg
ICAgY2FzZSAuQyA6ICAgQysrICQoPCkgOiAkKD4pIDsNCiAgICAgICAgICAgIGNhc2UgLmNj
IDogIEMrKyAkKDwpIDogJCg+KSA7DQogICAgICAgICAgICBjYXNlIC5jcHAgOiBDKysgJCg8
KSA6ICQoPikgOw0KICAgICAgICAgICAgY2FzZSAuY3h4IDogQysrICQoPCkgOiAkKD4pIDsN
CiAgICAgICAgICAgIGNhc2UgLmYgOiAgIEZvcnRyYW4gJCg8KSA6ICQoPikgOw0KICAgICAg
ICAgICAgY2FzZSAucyA6ICAgQXMgJCg8KSA6ICQoPikgOw0KICAgICAgICAgICAgY2FzZSAq
IDogICAgVXNlck9iamVjdCAkKDwpIDogJCg+KSA7DQogICAgICAgIH0NCiAgICAgICAgZ0dF
TkVSQVRFRF9UQVJHRVQoJCg8KSkgPSB0cnVlIDsNCiAgICB9DQp9DQogICAgDQojIGR3YSA2
LzQvMDEgLSBhZGRlZCBmb3IgYm9vc3QNCiMgUmV0dXJuIHRoZSBjb3JyZXNwb25kaW5nIG9i
amVjdCBmaWxlIHRhcmdldCBuYW1lcyBnaXZlbiBhIGxpc3Qgb2Ygc291cmNlIGZpbGUNCiMg
dGFyZ2V0IG5hbWVzLg0KcnVsZSBvYmplY3QtbmFtZSAjIHNvdXJjZXMuLi4NCnsNCiAgICBy
ZXR1cm4gJCg8OkQ9OlM9JChTVUZPQkopOkc9JChUQVJHRVRfR1JJU1QpKSA7DQp9DQoNCiMg
ZHdhIDYvNC8wMSAtIGFkZGVkIGZvciBib29zdA0KIyBCdWlsZCBhIGdlbmVyYXRlZCBzb3Vy
Y2UgZmlsZSBmcm9tIGlucHV0LXRhcmdldCwgYW5kIGJ1aWxkIHdoYXRldmVyIHRoYXQgZmls
ZSBnZW5lcmF0ZXMuDQojIFJldHVybiBhIGxpc3Qgb2YgYWxsIG9iamVjdCB0YXJnZXQgbmFt
ZXMgdWx0aW1hdGVseSBnZW5lcmF0ZWQgYnkgcmVjdXJzaXZlbHkNCiMgYnVpbGRpbmcgdGhl
IHByb2R1Y3RzIG9mIGlucHV0LXRhcmdldC4NCnJ1bGUgZ2VuLXNvdXJjZSAjIHNvdXJjZSA9
PiBvYmplY3QtZmlsZS1uYW1lcw0Kew0KICAgIGxvY2FsIHN1ZmZpeCA9IC5jIDsNCiAgICBp
ZiAkKDw6UykgaW4gLmxwcCAueXBwDQogICAgew0KICAgICAgICBzdWZmaXggPSAuY3BwIDsN
CiAgICB9DQogICAgDQogICAgbG9jYWwgaW1tZWRpYXRlLXRhcmdldCA9ICQoPDpEPTpTPSQo
c3VmZml4KTpHPSQoU09VUkNFX0dSSVNUKSkgOw0KICAgICMgbWFrZSBzdXJlIHdlIGRvbid0
IHJlZ2VuZXJhdGUgc291cmNlcyB0d2ljZS4NCiAgICBpZiAhICQoZ0dFTkVSQVRFRF9UQVJH
RVQoJChpbW1lZGlhdGUtdGFyZ2V0KSkpDQogICAgew0KICAgICAgICBzd2l0Y2ggJCg8OlMp
DQogICAgICAgIHsNCiAgICAgICAgIGNhc2UgLmwqIDogTGV4ICQoaW1tZWRpYXRlLXRhcmdl
dCkgOiAkKDwpIDsgU0VBUkNIIG9uICQoPCkgPSAkKFNFQVJDSF9TT1VSQ0UpIDsNCiAgICAg
ICAgIGNhc2UgLnkqIDogWWFjYyAkKGltbWVkaWF0ZS10YXJnZXQpIDogJCg8KSA7IFNFQVJD
SCBvbiAkKDwpID0gJChTRUFSQ0hfU09VUkNFKSA7DQogICAgICAgIH0NCiAgICAgICAgZ0dF
TkVSQVRFRF9UQVJHRVQoJChpbW1lZGlhdGUtdGFyZ2V0KSkgPSB0cnVlIDsNCiAgICB9DQog
ICAgcmV0dXJuIFsgT2JqZWN0cyAkKGltbWVkaWF0ZS10YXJnZXQpIF0gOw0KfQ0KDQojIGR3
YSA2LzQvMDEgLSBhZGRlZCBmb3IgYm9vc3QNCiMgQSBsaXN0IG9mIGFsbCBmaWxlIGV4dGVu
c2lvbnMgd2hpY2ggZ2VuZXJhdGUgc291cmNlIGZpbGVzIHdoZW4gYnVpbHQuDQpTT1VSQ0Vf
R0VORVJBVElOR19FWFRFTlNJT05TID89IC5scHAgLnlwcCAubCAueSA7DQoNCiMgZHdhIDYv
NC8wMSAtIG1vZGlmaWVkIGZvciBib29zdA0KIyBCdWlsZCBhbGwgb2JqZWN0IGZpbGVzIGdl
bmVyYXRlZCBieSBidWlsZGluZyAkKDwpLCBhbmQgcmV0dXJuIGEgbGlzdCBvZiB0aGUNCiMg
bmFtZXMgb2YgdGhvc2Ugb2JqZWN0IGZpbGUgdGFyZ2V0cy4NCnJ1bGUgT2JqZWN0cw0Kew0K
ICAgIGxvY2FsIF9pIF9uIF9yIDsNCg0KDQogICAgZm9yIF9pIGluICQoPCkNCiAgICB7DQog
ICAgICAgIGlmICQoX2k6UykgaW4gJChTT1VSQ0VfR0VORVJBVElOR19FWFRFTlNJT05TKQ0K
ICAgICAgICB7DQogICAgICAgICAgICBfbiA9IFsgZ2VuLXNvdXJjZSAkKF9pKSBdIDsNCiAg
ICAgICAgfQ0KICAgICAgICBlbHNlDQogICAgICAgIHsNCiAgICAgICAgICAgIF9uID0gWyBv
YmplY3QtbmFtZSAkKF9pKSBdIDsNCiAgICAgICAgICAgIE9iamVjdCAkKF9uKSA6ICQoX2kp
IDsNCiAgICAgICAgfQ0KICAgICAgICBfciArPSAkKF9uKSA7DQogICAgfQ0KICAgIA0KICAg
IHJldHVybiAkKF9yKSA7DQp9DQoNCnJ1bGUgUm1UZW1wcw0Kew0KICAgIFRFTVBPUkFSWSAk
KD4pIDsNCn0NCg0KcnVsZSBTZXR1aWQNCnsNCiAgICBNT0RFIG9uIFsgRkFwcGVuZFN1ZmZp
eCAkKDwpIDogJChTVUZFWEUpIF0gPSA0NzExIDsNCn0NCg0KIyBkd2EgNi80LzAxIC0gbW9k
aWZpZWQgZm9yIGJvb3N0DQpydWxlIFNoZWxsDQp7DQogICAgdHlwZS1ERVBFTkRTIHNoZWxs
IDogJCg8KSA7DQogICAgREVQRU5EUyAkKDwpIDogJCg+KSA7DQogICAgU0VBUkNIIG9uICQo
PikgPSAkKFNFQVJDSF9TT1VSQ0UpIDsNCiAgICBNT0RFIG9uICQoPCkgPSAkKFNIRUxMTU9E
RSkgOw0KICAgIENsZWFuIGNsZWFuIDogJCg8KSA7DQogICAgQ2htb2QgJCg8KSA7DQp9DQoN
CiMgZHdhIDYvNy8wMSAtIGFkZGVkIGZvciBib29zdA0KIyBzdWJwcm9qZWN0IHBhdGgNCiMN
CiMgSW52b2tlcyBTdWJEaXIgd2l0aCBhIHBhdGggZGVzY3JpcHRpb24NCnJ1bGUgc3VicHJv
amVjdA0Kew0KICAgIFN1YkRpciBUT1AgWyBzcGxpdC1wYXRoICQoPCkgXSA7DQp9DQoNCiMg
ZHdhIDYvMTgvMDEgLSBhZGRlZCBmb3IgYm9vc3QNCiMgcHJvamVjdC1yb290DQojDQojIERl
Y2xhcmVzIHRoaXMgZGlyZWN0b3J5IHRvIGJlIHRoZSBwcm9qZWN0IHJvb3QuDQpydWxlIHBy
b2plY3Qtcm9vdCAoICkNCnsNCiAgICBsb2NhbCBwcm9qZWN0LWxvY2F0aW9uIDsNCiAgICBp
ZiAkKGdUT1ApDQogICAgew0KICAgICAgICBwcm9qZWN0LWxvY2F0aW9uID0gWyByb290LXBh
dGhzICQoJChnVE9QKSkgOiBbIFBXRCBdIF0gOw0KICAgIH0NCiAgICBlbHNlDQogICAgew0K
ICAgICAgICBwcm9qZWN0LWxvY2F0aW9uID0gWyBQV0QgXSA7DQogICAgfQ0KICAgIGxvY2Fs
IG5hbWUgOw0KICAgIG5hbWUgPSAkKFBST0pFQ1QoJChwcm9qZWN0LWxvY2F0aW9uKSkpIDsN
CiAgICBuYW1lID89ICQocHJvamVjdC1sb2NhdGlvbjpCKSA7DQogICAgUFJPSkVDVCA9ICQo
bmFtZSkgOw0KICAgIGdQUk9KRUNUKCQobmFtZSkpID0gJChwcm9qZWN0LWxvY2F0aW9uKSA7
DQogICAgU3ViRGlyIFRPUCA7DQp9DQoNCiMgZ3JhZmlrLg0KIw0KIyBEZWNsYXJlIGVpdGhl
ciB5b3VyIG93biBwcm9qZWN0LCBvciBhbiBleHRlcm5hbCBwcm9qZWN0Lg0KIw0KcnVsZSBw
cm9qZWN0ICggbmFtZSA6IGxvY2F0aW9uID8gKQ0Kew0KICAgIGlmICEgJChsb2NhdGlvbikN
CiAgICB7DQogICAgICAgIGdQUk9KRUNUKCQobmFtZSkpID0gJChnUFJPSkVDVCgkKFBST0pF
Q1QpKSkgOw0KICAgICAgICBQUk9KRUNUKCQoZ1BST0pFQ1QoJChuYW1lKSkpKSA9ICQobmFt
ZSkgOw0KICAgICAgICBQUk9KRUNUID0gJChuYW1lKSA7DQogICAgfQ0KICAgIGVsc2UNCiAg
ICB7DQogICAgICAgIGdQUk9KRUNUKCQobmFtZSkpID0gWyByb290LXBhdGhzICQobG9jYXRp
b24pIDogWyByb290LXBhdGhzICQoJChnVE9QKSkgOiBbIFBXRCBdIF0gXSA7DQogICAgICAg
IGxvY2FsIFsgcHJvdGVjdC1zdWJwcm9qZWN0IF0gOw0KICAgICAgICBlbnRlci1zdWJwcm9q
ZWN0IEAkKG5hbWUpIDsNCiAgICB9DQp9DQoNCiMgZ3JhZmlrLg0KIw0KIyBSZXR1cm5zIHRo
ZSBzZXQgb2YgdmFycyB0byBsb2NhbGl6ZSB0byBwcmV2ZW50IGNoYW5nZXMgZnJvbQ0KIyBh
ZmZlY3RpbmcgdGhlIGN1cnJlbnQgcHJvamVjdC4gQWxzbyByZW1lbWJlcnMgdGhlIGN1cnJl
bnQgdmFsdWVzDQojIHRvIHVzZSBieSBlbnRlci1zdWJwcm9qZWN0IHRvIHNldCB0aGUgZGVm
YXVsdHMgZm9yIHRoZSBuZXcgdmFycy4NCiMNCnJ1bGUgcHJvdGVjdC1zdWJwcm9qZWN0ICgg
KQ0Kew0KICAgIC5UT1AgPSAkKFRPUCkgOw0KICAgIC5UT1BfVE9LRU5TID0gJChUT1BfVE9L
RU5TKSA7DQogICAgLmdUT1AgPSAkKGdUT1ApIDsNCiAgICAuUFJPSkVDVCA9ICQoUFJPSkVD
VCkgOw0KICAgIHJldHVybiBUT1AgVE9QX1RPS0VOUyBnVE9QIFBST0pFQ1QgWyBwcm90ZWN0
LXN1YmRpciBdIDsNCn0NCg0KIyBncmFmaWsuDQojDQojIFNldHMgdXAgdGhlIGVudmlyb25t
ZW50IGFzIGlmIHRoZSBjb250ZXh0IGlzIGFub3RoZXIgcHJvamVjdCBpbg0KIyBwcmVwYXJh
dGlvbiB0byBpbmNsdWRlIHRoZSBleHRlcm5hbCBwcm9qZWN0cyB0YXJnZXRzLiBUaGlzIGFs
c28NCiMgd29ya3MgZm9yIHJlZmVyaW5nIHRvIHRoZSBjdXJyZW50IHByb2plY3QuDQojDQpy
dWxlIGVudGVyLXN1YnByb2plY3QgKCBwcm9qZWN0LXBhdGggKQ0Kew0KICAgIFRPUCA9ICQo
LlRPUCkgOw0KICAgIFRPUF9UT0tFTlMgPSAkKC5UT1BfVE9LRU5TKSA7DQogICAgZ1RPUCA9
ICQoLmdUT1ApIDsNCiAgICBQUk9KRUNUID0gJCguUFJPSkVDVCkgOw0KICAgIA0KICAgIGxv
Y2FsIHByb2plY3QtbmFtZSA9IFsgTUFUQ0ggIl5AKFteL1xcXSspIiA6ICQocHJvamVjdC1w
YXRoKSBdIDsNCiAgICBwcm9qZWN0LW5hbWUgPz0gJChQUk9KRUNUKSA7DQogICAgcHJvamVj
dC1uYW1lID89ICIiIDsNCiAgICBsb2NhbCBwcm9qZWN0LXN1YmRpciA9IFsgTUFUQ0ggIl5A
W14vXFxdK1svXFxdKC4qKSIgOiAkKHByb2plY3QtcGF0aCkgXSA7DQogICAgbG9jYWwgcHJv
amVjdC10b3AgOw0KICAgIA0KICAgIGlmICQocHJvamVjdC1uYW1lKQ0KICAgIHsNCiAgICAg
ICAgcHJvamVjdC10b3AgPSBbIHNwbGl0LXBhdGggJChnUFJPSkVDVCgkKHByb2plY3QtbmFt
ZSkpKSBdIDsNCiAgICAgICAgaWYgJChwcm9qZWN0LXN1YmRpcikNCiAgICAgICAgew0KICAg
ICAgICAgICAgcHJvamVjdC10b3AgKz0NCiAgICAgICAgICAgICAgICBbIHNwbGl0LXBhdGgg
WyByZWxhdGl2ZS1wYXRoICQocHJvamVjdC1zdWJkaXIpIF0gXQ0KICAgICAgICAgICAgICAg
IFsgc3BsaXQtcGF0aCBbIEZTdWJEaXIgWyBzcGxpdC1wYXRoIFsgcmVsYXRpdmUtcGF0aCAk
KHByb2plY3Qtc3ViZGlyKSBdIF0gXSBdIDsNCiAgICAgICAgfQ0KICAgICAgICBUT1AgPSBb
IGpvaW4tcGF0aCAkKHByb2plY3QtdG9wKSBdIDsNCiAgICAgICAgVE9QX1RPS0VOUyA9ICQo
cHJvamVjdC10b3ApIDsNCiAgICAgICAgZ1RPUCA9IFRPUCA7DQogICAgICAgIFBST0pFQ1Qg
PSAkKHByb2plY3QtbmFtZSkgOw0KICAgIH0NCiAgICBwcm9qZWN0LXN1YmRpciA/PSAuIDsN
CiAgICANCiAgICBzdWJwcm9qZWN0ICQocHJvamVjdC1zdWJkaXIpIDsNCiAgICANCiAgICBy
ZXR1cm4gJChwcm9qZWN0LW5hbWUpICQocHJvamVjdC1zdWJkaXIpIDsNCn0NCg0KIyBkd2Eg
Ni83LzAxIC0gYWRkZWQgZm9yIGJvb3N0DQojIHN1YmluY2x1ZGUgcGF0aC4uLg0KIw0KIyBJ
bnZva2VzIFN1YkluY2x1ZGUgZm9yIGVhY2ggcGF0aA0KcnVsZSBzdWJpbmNsdWRlDQp7DQog
ICAgbG9jYWwgZCA7DQogICAgZm9yIGQgaW4gJCg8KQ0KICAgIHsNCiAgICAgICAgU3ViSW5j
bHVkZSBUT1AgWyBzcGxpdC1wYXRoICQoZCkgXSA7DQogICAgfQ0KfQ0KDQojIGR3YSAxMC82
LzAxIC0gYWRkZWQgZm9yIGJvb3N0DQojDQojIHBhdGgtZ2xvYmFsIHZhcmlhYmxlLW5hbWUg
OiBwYXRoLi4uIDsNCiMNCiMgaWYgJCh2YXJpYWJsZS1uYW1lKSBpcyB1bnNldCwgc2V0cyB2
YXJpYWJsZS1uYW1lIHRvIHBhdGguLi4NCiMgdmFyaWFibGUtbmFtZSB3aWxsIGJlIGFkanVz
dGVkIG9uIGEgcGVyLXN1YnByb2plY3QgYmFzaXMgdG8gcmVmZXIgdG8gdGhlIHNhbWUgcGF0
aC4NCnJ1bGUgcGF0aC1nbG9iYWwNCnsNCiAgICAkKDwpID89ICQoPikgOw0KICAgIGdQQVRI
X0dMT0JBTF9WQUxVRSgkKDwpKSA9ICQoJCg8KSkgOw0KICAgIA0KICAgIGlmICEgKCAkKDwp
IGluICQoZ1BBVEhfR0xPQkFMUykgKQ0KICAgIHsNCiAgICAgICAgZ1BBVEhfR0xPQkFMUyAr
PSAkKDwpIDsNCiAgICB9DQp9DQoNCiMgZHdhIDYvNC8wMSAtIG1vZGlmaWVkIGZvciBib29z
dA0KcnVsZSBTdWJEaXINCnsNCiAgICBsb2NhbCBfciA7DQoNCiAgICAjDQogICAgIyBTdWJE
aXIgVE9QIGQxIFsgLi4uIF0NCiAgICAjDQogICAgIyBUaGlzIGludHJvZHVjZXMgYSBKYW1m
aWxlIHRoYXQgaXMgcGFydCBvZiBhIHByb2plY3QgdHJlZSANCiAgICAjIHJvb3RlZCBhdCAk
KFRPUCkuICBJdCAob25seSBvbmNlKSBpbmNsdWRlcyB0aGUgcHJvamVjdC1zcGVjaWZpYw0K
ICAgICMgcnVsZXMgZmlsZSAkKFRPUCkvSmFtcnVsZXMgYW5kIHRoZW4gc2V0cyBzZWFyY2gg
JiBsb2NhdGUgc3R1ZmYuDQogICAgIw0KICAgICMgSWYgdGhlIHZhcmlhYmxlICQoVE9QUlVM
RVMpIGlzIHNldCAod2hlcmUgVE9QIGlzIHRoZSBmaXJzdCBhcmcgDQogICAgIyB0byBTdWJE
aXIpLCB0aGF0IGZpbGUgaXMgaW5jbHVkZWQgaW5zdGVhZCBvZiAkKFRPUCkvSmFtcnVsZXMu
DQogICAgIw0KICAgICMgZDEgLi4uIGFyZSB0aGUgZGlyZWN0b3J5IGVsZW1lbnRzIHRoYXQg
bGVhZCB0byB0aGlzIGRpcmVjdG9yeSANCiAgICAjIGZyb20gJChUT1ApLiAgV2UgY29uc3Ry
dWN0IHRoZSBzeXN0ZW0gZGVwZW5kZW50IHBhdGggZnJvbSB0aGVzZQ0KICAgICMgZGlyZWN0
b3J5IGVsZW1lbnRzIGluIG9yZGVyIHRvIHNldCBzZWFyY2gmbG9jYXRlIHN0dWZmLg0KICAg
ICMgDQoNCiAgICBpZiAhICQoJCg8WzFdKSkNCiAgICB7DQogICAgICAgIGlmICEgJCg8WzFd
KQ0KICAgICAgICB7DQogICAgICAgICAgICBFWElUIFN1YkRpciBzeW50YXggZXJyb3IgOw0K
ICAgICAgICB9DQoNCiAgICAgICAgJCg8WzFdKSA9IFsgRlN1YkRpciAkKDxbMi1dKSBdIDsN
CiAgICAgICAgJCg8WzFdKV9UT0tFTlMgPSBbIHNwbGl0LXBhdGggJCgkKDxbMV0pKSBdIDsN
CiAgICAgICAgZ1RPUCA9ICQoPFsxXSkgOyAjICBub3Qgc3VyZSB3aHkgc29tZW9uZSB3b3Vs
ZCB3YW50IHRvIHVzZSBhbnl0aGluZw0KICAgICAgICAgICAgICAgICAgICAgICAgICMgb3Ro
ZXIgdGhhbiBUT1AsIGJ1dCBqdXN0IGluIGNhc2UuLi4NCiAgICB9DQoNCiAgICAjDQogICAg
IyBJZiAkKFRPUCkvSmFtcnVsZXMgaGFzbid0IGJlZW4gaW5jbHVkZWQsIGRvIHNvLg0KICAg
ICMNCg0KICAgIGxvY2FsIHRvcCA9IFsgcm9vdC1wYXRocyAkKCQoZ1RPUCkpIDogWyBQV0Qg
XSBdIDsNCiAgICBpZiAhICQoZ0lOQ0xVREVEKCQoSkFNUlVMRVM6Uj0kKHRvcCkpKSkNCiAg
ICB7DQogICAgICAgICMgR2F0ZWQgZW50cnkuDQoNCiAgICAgICAgZ0lOQ0xVREVEKCQoSkFN
UlVMRVM6Uj0kKHRvcCkpKSA9IFRSVUUgOw0KDQogICAgICAgICMgSW5jbHVkZSBpdC4NCg0K
ICAgICAgICBwcm9qZWN0LXJvb3QgOw0KICAgICAgICBpbmNsdWRlICQoSkFNUlVMRVM6Uj0k
KHRvcCkpIDsNCiAgICB9DQoNCiAgICAjIEdldCBwYXRoIHRvIGN1cnJlbnQgZGlyZWN0b3J5
IGZyb20gcm9vdCB1c2luZyBTdWJEaXIuDQogICAgIyBTYXZlIGRpciB0b2tlbnMgZm9yIG90
aGVyIHBvdGVudGlhbCB1c2VzLg0KICAgIFNVQkRJUl9UT0tFTlMgPSAkKDxbMi1dKSA7DQog
ICAgDQogICAgIyBUaGlzIGFsbG93cyB1cyB0byBkZXRlcm1pbmUgd2hldGhlciB3ZSdyZSBp
biB0aGUgZGlyZWN0b3J5IHdoZXJlIGphbSB3YXMNCiAgICAjIGludm9rZWQgZnJvbSBzbyB0
aGF0IHdlIGNhbiBtYWtlIGxvY2FsbHkgbmFtZWQgdGFyZ2V0cw0KICAgIGdJTlZPQ0FUSU9O
X1NVQkRJUl9UT0tFTlMgPz0gJChTVUJESVJfVE9LRU5TKSA7DQogICAgZ0lOVk9DQVRJT05f
U1VCRElSX1RPS0VOUyA/PSAkKERPVCkgOw0KDQogICAgIyBTVUJESVIgaXMgdGhlIHBhdGgg
ZnJvbSB0aGUgaW52b2NhdGlvbiBkaXJlY3RvcnkgdG8gdGhlIHN1YnByb2plY3QNCiAgICAj
IGRpcmVjdG9yeS4NCiAgICBTVUJESVIgPSBbIHRva2Vucy10by1zaW1wbGUtcGF0aCAkKCQo
Z1RPUClfVE9LRU5TKSAgJChTVUJESVJfVE9LRU5TKSBdIDsNCg0KICAgIFNFQVJDSF9TT1VS
Q0UgPSAkKFNVQkRJUikgOw0KDQogICAgIyBUaGlzIHdpbGwgc3RyaXAgb2ZmIGFueSBsZWFk
aW5nIGRvdCBvbiBTVUJESVJfVE9LRU5TDQogICAgbG9jYWwgbm9kb3Rfc3ViZGlyID0gWyBz
aW1wbGlmeS1wYXRoLXRva2VucyAkKFNVQkRJUl9UT0tFTlMpIF0gOw0KDQogICAgbm9ybWFs
aXplZF9BTExfTE9DQVRFX1RBUkdFVCA/PSBbIGpvaW4tcGF0aCAkKCQoZ1RPUCkpICQoQUxM
X0xPQ0FURV9UQVJHRVQpIF0gOw0KICAgIExPQ0FURV9TT1VSQ0UgPSBbIEZEaXJOYW1lICQo
bm9ybWFsaXplZF9BTExfTE9DQVRFX1RBUkdFVCkgJChCSU5fRElSRUNUT1JZKSAkKFBST0pF
Q1QpICQobm9kb3Rfc3ViZGlyKSBdIDsNCiAgICBMT0NBVEVfVEFSR0VUID0gJChMT0NBVEVf
U09VUkNFKSA7DQogICAgSENBQ0hFRklMRSA/PSAkKExPQ0FURV9UQVJHRVQ6Qj0uamFtZGVw
cykgOw0KICAgIA0KICAgIFNPVVJDRV9HUklTVCA9IFsgRkdyaXN0IEAkKFBST0pFQ1QpICQo
U1VCRElSX1RPS0VOUykgXSA7DQoNCiAgICAjIFJlc2V0IHBlci1kaXJlY3RvcnkgY2NmbGFn
cywgaGRycw0KDQogICAgU1VCRElSQ0NGTEFHUyA9IDsNCiAgICBTVUJESVJDKytGTEFHUyA9
IDsNCg0KICAgICMgVGhpcyB2YXJpYWJsZSBob2xkcyB0aGUgcGF0aCBmcm9tIHRoZSBkaXJl
Y3Rvcnkgb2YgSmFtJ3MgaW52b2NhdGlvbiB0byB0aGUNCiAgICAjIGRpcmVjdG9yeSBvZiB0
aGUgY3VycmVudCBzdWJwcm9qZWN0Lg0KICAgIFJFTEFUSVZFX1NVQkRJUl9UT0tFTlMgPSBb
IHNpbXBsaWZ5LXBhdGgtdG9rZW5zICQoJChnVE9QKV9UT0tFTlMpICQoU1VCRElSX1RPS0VO
UykgOiAkKERPVCkgXSA7DQogICAgUkVMQVRJVkVfU1VCRElSID0gWyBqb2luLXBhdGggJChS
RUxBVElWRV9TVUJESVJfVE9LRU5TKSBdIDsNCg0KICAgIGFkanVzdC1wYXRoLWdsb2JhbHMg
Ow0KfQ0KDQpydWxlIGluLWludm9jYXRpb24tc3ViZGlyDQp7DQogICAgbG9jYWwgc3ViZGly
LXRva2VucyA9ICQoU1VCRElSX1RPS0VOUykgOw0KICAgIHN1YmRpci10b2tlbnMgPz0gJChE
T1QpIDsNCiAgICBpZiAkKHN1YmRpci10b2tlbnMpID0gJChnSU5WT0NBVElPTl9TVUJESVJf
VE9LRU5TKQ0KICAgIHsNCiAgICAgICAgcmV0dXJuIHRydWUgOw0KICAgIH0NCn0NCg0KIyBU
aGVzZSBhcmUgdGhlIGdsb2JhbCB2YXJpYWJsZXMgdGhhdCBnZXQgc2V0IHVwIGJ5IFN1YkRp
ci4gSWYgeW91IG5lZWQgdG8NCiMgaW52b2tlIFN1YkRpciB0ZW1wb3JhcmlseSBhbmQgdGhl
biByZXN0b3JlIHRoZW0sIGRlY2xhcmUNCiMgICAgICAgbG9jYWwgJChnU1VCRElSX0dMT0JB
TFMpIDsNCmdTVUJESVJfR0xPQkFMUyA9IFNVQkRJUiBTVUJESVJfVE9LRU5TIFNFQVJDSF9T
T1VSQ0UgTE9DQVRFX1NPVVJDRSBMT0NBVEVfVEFSR0VUDQogICAgU09VUkNFX0dSSVNUIFJF
TEFUSVZFX1NVQkRJUiBSRUxBVElWRV9TVUJESVJfVE9LRU5TIDsgDQoNCg0KcnVsZSBwcm90
ZWN0LXN1YmRpcg0Kew0KICAgIHJldHVybiAkKGdTVUJESVJfR0xPQkFMUykgJChnUEFUSF9H
TE9CQUxTKSA7DQp9DQoNCiMgcHJlcGVuZHMgcm9vdCB0byBhbnkgdW5yb290ZWQgZWxlbWVu
dHMgb2YgcGF0aHMsIGFuZCBzaW1wbGlmaWVzDQpydWxlIHJvb3QtcGF0aHMgKCBwYXRocyAq
IDogcm9vdCApDQp7DQogICAgbG9jYWwgcGF0aCByZXN1bHQgOw0KICAgIGZvciBwYXRoIGlu
ICQocGF0aHMpDQogICAgew0KICAgICAgICBsb2NhbCByb290ZWQgPSAkKHBhdGg6Uj0kKHJv
b3QpKSA7DQogICAgICAgIHBhdGggPSBbIHRva2Vucy10by1zaW1wbGUtcGF0aCBbIHNwbGl0
LXBhdGggJChyb290ZWQ6Rz0pIF0gXSA7DQogICAgICAgIHBhdGggPSAkKHBhdGg6Rz0kKHJv
b3RlZDpHKSkgOw0KICAgICAgICByZXN1bHQgKz0gJChwYXRoKSA7DQogICAgfQ0KICAgIHJl
dHVybiAkKHJlc3VsdCkgOw0KfQ0KDQojIEFkanVzdCBhbGwgcGF0aCBnbG9iYWxzIHNvIHRo
YXQgdGhleSBhcmUgcmVsYXRpdmUgdG8gdGhlIGN1cnJlbnQgc3VicHJvamVjdC4NCnJ1bGUg
YWRqdXN0LXBhdGgtZ2xvYmFscw0Kew0KICAgICMgY29tcHV0ZSBwYXRoIHRva2VucyBmcm9t
IGN1cnJlbnQgc3VicHJvamVjdCB0byByb290DQogICAgbG9jYWwgdG9rZW5zLXRvLXJvb3Qg
PSBbIHNwbGl0LXBhdGggWyBGU3ViRGlyICQoU1VCRElSX1RPS0VOUykgXSBdIDsNCiAgICAN
CiAgICAjIGNvbXB1dGUgcGF0aCB0b2tlbnMgZnJvbSBjdXJyZW50IHN1YnByb2plY3QgdG8g
aW52b2NhdGlvbg0KICAgICMgZGlyZWN0b3J5LiAkKERPVCkgaXMgYWRkZWQganVzdCBpbiBj
YXNlIHdlJ3JlIGJ1aWxkaW5nIGZyb20gdGhlIHByb2plY3QNCiAgICAjIHJvb3QNCiAgICBs
b2NhbCB0b2tlbnMtdG8taW52b2NhdGlvbg0KICAgICAgICA9ICQodG9rZW5zLXRvLXJvb3Qp
ICQoZ0lOVk9DQVRJT05fU1VCRElSX1RPS0VOUykgOw0KICAgICAgICAgDQogICAgbG9jYWwg
dmFyaWFibGUgOw0KICAgIGZvciB2YXJpYWJsZSBpbiAkKGdQQVRIX0dMT0JBTFMpDQogICAg
ew0KICAgICAgICBsb2NhbCBwYXRocyA9ICQoZ1BBVEhfR0xPQkFMX1ZBTFVFKCQodmFyaWFi
bGUpKSkgOw0KICAgICAgICAkKHZhcmlhYmxlKSA9IDsNCiAgICAgICAgbG9jYWwgcGF0aCA7
DQogICAgICAgIGZvciBwYXRoIGluICQocGF0aHMpDQogICAgICAgIHsNCiAgICAgICAgICAg
ICMgaXMgcGF0aCBhbHJlYWR5IHJvb3RlZD8NCiAgICAgICAgICAgIGlmICQocGF0aDpSPXgp
ID0gJChwYXRoKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICQodmFyaWFibGUp
ICs9ICQocGF0aCkgOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgZWxzZQ0KICAgICAg
ICAgICAgew0KICAgICAgICAgICAgICAgIGxvY2FsIHRva2VucyA9ICQodG9rZW5zLXRvLWlu
dm9jYXRpb24pIFsgc3BsaXQtcGF0aCAkKHBhdGgpIF0gOw0KICAgICAgICAgICAgICAgICQo
dmFyaWFibGUpICs9IFsgdG9rZW5zLXRvLXNpbXBsZS1wYXRoICQodG9rZW5zKSBdIDsNCiAg
ICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgIH0NCn0NCg0KIyBkd2EgNi80LzAxIC0gYWRk
ZWQgZm9yIGJvb3N0DQojIHN0cmlwLWdyaXN0IHZhbHVlDQojDQojIHN0cmlwIGFsbCBsZWFk
aW5nIGdyaXN0ZWQgZWxlbWVudHMgZnJvbSB2YWx1ZSBhbmQgcmV0dXJuIHRoZSByZXN1bHQu
DQpydWxlIHN0cmlwLWdyaXN0DQp7DQogICAgbG9jYWwgeCA9ICQoPDpHPSkgOw0KICAgIGlm
ICEgJCh4OkcpDQogICAgew0KICAgICAgICByZXR1cm4gJCh4KSA7DQogICAgfQ0KICAgIGVs
c2UNCiAgICB7DQogICAgICAgIHJldHVybiBbIHN0cmlwLWdyaXN0ICQoeCkgXSA7DQogICAg
fQ0KfQ0KDQojIGR3YSA2LzQvMDEgLSBhZGRlZCBmb3IgYm9vc3QNCiMgQnJlYWtzICQoPCkg
aW50byBwYXRoIGNvbXBvbmVudHMNCiMgVGhpcyBjb3VsZCBjZXJ0YWlubHkgYmUgaW1wcm92
ZWQgbm93IHRoYXQgd2UgaGF2ZSBEYXZpZCBUdXJuZXIncyByZWd1bGFyIGV4cHJlc3Npb24g
ZmVhdHVyZXMuDQojDQojIHNwbGl0LXBhdGggPGZvbz5iYXIvPGJlZT5iYXovbXVtYmxlICA9
PiA8Zm9vPmJhciA8YmVlPmJheiBtdW1ibGUgDQpydWxlIHNwbGl0LXBhdGgNCnsNCiAgICBs
b2NhbCByZXN1bHQgPSAkKGdTUExJVC1QQVRILiQoPCkpIDsNCg0KICAgIGlmICEgJChyZXN1
bHQpDQogICAgew0KICAgICAgICBsb2NhbCBwYXJlbnQgPSAkKDw6UCkgOw0KICAgICAgICBp
ZiAkKE5UKQ0KICAgICAgICB7DQogICAgICAgICAgICBzd2l0Y2ggJCg8Okc9KQ0KICAgICAg
ICAgICAgew0KICAgICAgICAgICAgICAgICMgSXQgdHVybnMgb3V0IHRoYXQgdG8gbWF0Y2gg
YSBiYWNrc2xhc2gsIHlvdSBuZWVkIGEgL3F1YWRydXBsZS8gc2xhc2gNCiAgICAgICAgICAg
ICAgICAjIGluIHRoZSBjYXNlIGNsYXVzZSENCiAgICAgICAgICAgICAgICBjYXNlICpcXFxc
KjoqIDogIyBjb250aW51ZSBzcGxpdHRpbmcNCiAgICAgICAgICAgICAgICAgIGNhc2UgKjpc
XFxcKlxcXFwqIDogICMgY29udGludWUgc3BsaXR0aW5nDQogICAgICAgICAgICAgICAgICBj
YXNlICo6LypcXFxcKiA6ICAjIGNvbnRpbnVlIHNwbGl0dGluZw0KICAgICAgICAgICAgICAg
ICAgY2FzZSAqOlxcXFwqLyogOiAgIyBjb250aW51ZSBzcGxpdHRpbmcNCiAgICAgICAgICAg
ICAgICAgIGNhc2UgKjovKi8qIDogICMgY29udGludWUgc3BsaXR0aW5nDQogICAgICAgICAg
ICAgICAgICBjYXNlICo6LyogOiByZXN1bHQgPSAkKDwpIDsNCiAgICAgICAgICAgICAgICBj
YXNlICo6XFxcXCogOiByZXN1bHQgPSAkKDwpIDsNCiAgICAgICAgICAgICAgICBjYXNlICo6
IDogcmVzdWx0ID0gJCg8KSA7DQogICAgICAgICAgICB9DQogICAgICAgIH0NCg0KICAgICAg
ICBpZiAoICEgJCg8OkIpICkgJiYgKCAkKDwpICE9ICQoRE9UKSApICMgaGFuZGxlIHRoZSBj
YXNlIHdoZXJlICQoPCkgaXMgYWxsIGdyaXN0Lg0KICAgICAgICB7DQogICAgICAgICAgICBy
ZXN1bHQgPz0gJCg8OkcpIDsNCiAgICAgICAgfQ0KICAgICAgICBlbHNlIGlmICggISAkKHBh
cmVudDpHPSkgKQ0KICAgICAgICB7DQogICAgICAgICAgICByZXN1bHQgPz0gJCg8KSA7DQog
ICAgICAgIH0NCiAgICAgICAgZWxzZQ0KICAgICAgICB7DQogICAgICAgICAgICBsb2NhbCBw
ID0gWyBzcGxpdC1wYXRoICQocGFyZW50KSBdIDsNCiAgICAgICAgICAgIGxvY2FsIGIgPSBb
IHN0cmlwLWdyaXN0ICQoPCkgXSA7DQogICAgICAgICAgICBwICs9ICQoYjpEPSkgOyAjIGNh
bid0IHVzZSA6QiBoZXJlIGJlY2F1c2UgaXQgZGVzdHJveXMgLiBhbmQgLi4NCiAgICAgICAg
ICAgIHJlc3VsdCA/PSAkKHApIDsNCiAgICAgICAgfQ0KICAgICAgICBnU1BMSVQtUEFUSC4k
KDwpID0gJChyZXN1bHQpIDsNCiAgICB9DQogICAgcmV0dXJuICQocmVzdWx0KSA7DQp9DQoN
CnJ1bGUgc3BsaXQgKCBzdHJpbmcgc2VwYXJhdG9yICkNCnsNCiAgICBsb2NhbCByZXN1bHQg
Ow0KICAgIGxvY2FsIHMgPSAkKHN0cmluZykgOw0KICAgIA0KICAgIHdoaWxlICQocykNCiAg
ICB7DQogICAgICAgIGxvY2FsIG1hdGNoID0gWyBNQVRDSCBeKC4qKSQoc2VwYXJhdG9yKSgu
KikgOiAkKHMpIF0gOw0KICAgICAgICANCiAgICAgICAgbG9jYWwgdGFpbCA9ICQobWF0Y2hb
Ml0pIDsNCiAgICAgICAgdGFpbCA/PSAkKHMpIDsNCg0KICAgICAgICByZXN1bHQgPSAkKHRh
aWwpICQocmVzdWx0KSA7DQogICAgICAgIHMgPSAkKG1hdGNoWzFdKSA7DQogICAgfQ0KICAg
IHJldHVybiAkKHJlc3VsdCkgOw0KfQ0KDQpydWxlIHNwbGl0LXBhdGggKCBwYXRoICkNCnsN
CiAgICBpZiAhICQoZ1NQTElUX1BBVEhfQ0FDSEUoJChwYXRoKSkpDQogICAgew0KICAgICAg
ICBnU1BMSVRfUEFUSF9DQUNIRSgkKHBhdGgpKSA9DQogICAgICAgICAgWyBNQVRDSCAgIl4o
Wy8kKFNMQVNIKV0rKS4qIiA6ICQocGF0aCkgXSAjIHJvb3Rpbmcgc2xhc2goZXMpLCBpZiBh
bnkNCiAgICAgICAgICAgIFsgc3BsaXQgJChwYXRoKSAiWy8kKFNMQVNIKV0iIF0gICAgICAg
ICMgdGhlIHJlc3QuDQogICAgICAgICAgICAgIDsNCiAgICB9DQogICAgcmV0dXJuICQoZ1NQ
TElUX1BBVEhfQ0FDSEUoJChwYXRoKSkpIDsNCn0NCg0KIyBkd2EgNi80LzAxIC0gYWRkZWQg
Zm9yIGJvb3N0DQojIHJldmVyc2UgaXRlbTEgaXRlbTIuLi4gDQojDQojIFJldHVybnMgLi4u
aXRlbTIgaXRlbTENCnJ1bGUgcmV2ZXJzZQ0Kew0KICAgIGxvY2FsIHJlc3VsdCA7DQogICAg
Zm9yIHggaW4gJCg8KQ0KICAgIHsNCiAgICAgICAgcmVzdWx0ID0gJCh4KSAkKHJlc3VsdCkg
Ow0KICAgIH0NCiAgICByZXR1cm4gJChyZXN1bHQpIDsNCn0NCg0KIyBkd2EgNi8yOC8wMSAt
IGFkZGVkIGZvciBib29zdA0KIyBzdHJpcC1pbml0aWFsIHRva2Vucy4uLiA6IGlucHV0DQoj
DQojIGlmIGlucHV0IGJlZ2lucyB3aXRoIHRva2VucywgcmVtb3ZlIHRoZSBpbml0aWFsIHNl
cXVlbmNlIG9mIHRva2VucyBhbmQgcmV0dXJuDQojIHRoZSByZXN0LiBPdGhlcndpc2UgcmV0
dXJuIGlucHV0IHVuY2hhbmdlZC4NCnJ1bGUgc3RyaXAtaW5pdGlhbA0Kew0KICAgIGxvY2Fs
IHJlc3VsdCA9ICQoPikgOw0KICAgIGxvY2FsIHQgOw0KICAgIGxvY2FsIG1hdGNoZWQgPSB0
cnVlIDsNCiAgICBmb3IgdCBpbiAkKDwpDQogICAgew0KICAgICAgICBpZiAkKG1hdGNoZWQp
ICYmICggJCh0KSA9ICQocmVzdWx0WzFdKSApDQogICAgICAgIHsNCiAgICAgICAgICAgIHJl
c3VsdCA9ICQocmVzdWx0WzItXSkgOw0KICAgICAgICB9DQogICAgICAgIGVsc2UNCiAgICAg
ICAgew0KICAgICAgICAgICAgbWF0Y2hlZCA9IDsNCiAgICAgICAgICAgIHJlc3VsdCA9ICQo
PikgOw0KICAgICAgICB9DQogICAgfQ0KICAgIHJldHVybiAkKHJlc3VsdCkgOw0KfQ0KDQoj
IGR3YSA2LzQvMDEgLSBhZGRlZCBmb3IgYm9vc3QNCiMgc2ltcGxpZnktcGF0aC10b2tlbnMg
dG9rZW4xIHRva2VuMiAuLi4gdG9rZW5OIDogRE9ULW9wdA0KIw0KIyBSZW1vdmUgcmVkdW5k
YW50IGluZm9ybWF0aW9uIGZyb20gdGhlIGdpdmVuIHBhdGggZWxlbWVudHMNCiMgaWYgRE9U
LW9wdCBpcyBzdXBwbGllZCwgZW1wdHkgcmVzdWx0cyBhcmUgcmVwbGFjZWQgd2l0aA0KIyAk
KERPVC1vcHQpLg0KIw0KIyBbIHNpbXBsaWZ5LXBhdGgtdG9rZW5zIGEgYiAuIGMgLi4gLi4g
ZCBlIF0gPT4gYSBkIGUNCiMgWyBzaW1wbGlmeS1wYXRoLXRva2VucyBhIGIgLi4gLi4gLi4g
ZCBlIF0gID0+IC4uIGQgZQ0KIyBbIHNpbXBsaWZ5LXBhdGgtdG9rZW5zIC4uIC4uIGQgZSA6
IHh4eCBdICAgPT4gLi4gLi4gZCBlIChwcm92aWRlZCBUT1AgIT0gLi4vLi4pDQojIFsgc2lt
cGxpZnktcGF0aC10b2tlbnMgYSBiIC4uIC4uIDogeHh4IF0gICA9PiB4eHgNCnJ1bGUgc2lt
cGxpZnktcGF0aC10b2tlbnMNCnsNCiAgICBsb2NhbCByZXZlcnNlLXBhdGggPSBbIHJldmVy
c2UgJCg8KSBdIDsNCiAgICBsb2NhbCBkb3Rkb3RzIDsNCiAgICBsb2NhbCByZXN1bHQgOw0K
ICAgIGxvY2FsIHRva2VuIDsNCiAgICBmb3IgdG9rZW4gaW4gJChyZXZlcnNlLXBhdGgpDQog
ICAgew0KICAgICAgICBpZiAkKHRva2VuKSA9ICQoRE9UKQ0KICAgICAgICB7DQogICAgICAg
IH0NCiAgICAgICAgZWxzZSBpZiAkKHRva2VuKSA9ICQoRE9URE9UKQ0KICAgICAgICB7DQog
ICAgICAgICAgICBkb3Rkb3RzICs9ICQodG9rZW4pIDsNCiAgICAgICAgfQ0KICAgICAgICBl
bHNlIGlmICQoZG90ZG90cykNCiAgICAgICAgew0KICAgICAgICAgICAgZG90ZG90cyA9ICQo
ZG90ZG90c1syLV0pIDsNCiAgICAgICAgfQ0KICAgICAgICBlbHNlDQogICAgICAgIHsNCiAg
ICAgICAgICAgIHJlc3VsdCA9ICQodG9rZW4pICQocmVzdWx0KSA7DQogICAgICAgIH0NCiAg
ICB9DQoNCiAgICByZXN1bHQgPSAkKGRvdGRvdHMpICQocmVzdWx0KSA7DQogICAgcmVzdWx0
ID0gWyBzdHJpcC1pbml0aWFsICQoJChnVE9QKV9UT0tFTlMpICQoZ0lOVk9DQVRJT05fU1VC
RElSX1RPS0VOUykgOiAkKHJlc3VsdCkgXSA7DQogICAgcmVzdWx0ID89ICQoPikgOw0KICAg
IHJldHVybiAkKHJlc3VsdCkgOw0KfQ0KDQpydWxlIHRva2Vucy10by1zaW1wbGUtcGF0aA0K
ew0KICAgIHJldHVybiBbIEZEaXJOYW1lIFsgc2ltcGxpZnktcGF0aC10b2tlbnMgICQoPCkg
XSBdIDsNCn0NCg0KcnVsZSBTdWJEaXJDY0ZsYWdzDQp7DQogICAgU1VCRElSQ0NGTEFHUyAr
PSAkKDwpIDsNCn0NCg0KcnVsZSBTdWJEaXJDKytGbGFncw0Kew0KICAgIFNVQkRJUkMrK0ZM
QUdTICs9ICQoPCkgOw0KfQ0KDQpydWxlIFN1YkRpckhkcnMNCnsNCiAgICBTVUJESVJIRFJT
ICs9ICQoPCkgOw0KfQ0KDQpydWxlIFN1YkluY2x1ZGUNCnsNCiAgICBsb2NhbCBfcyA7DQoN
CiAgICAjIFRoYXQncw0KICAgICMgICAgICAgU3ViSW5jbHVkZSBUT1AgZDEgWyBkMiBbIGQz
IFsgZDQgXSBdIF0NCiAgICAjDQogICAgIyB0byBpbmNsdWRlIGEgc3ViZGlyZWN0b3J5J3Mg
SmFtZmlsZS4NCg0KICAgIGlmICEgJCgkKDxbMV0pKQ0KICAgIHsNCiAgICAgICAgRVhJVCBU
b3AgbGV2ZWwgb2Ygc291cmNlIHRyZWUgaGFzIG5vdCBiZWVuIHNldCB3aXRoICQoPFsxXSkg
Ow0KICAgIH0NCg0KICAgIF9zID0gWyBGRGlyTmFtZSAkKDxbMi1dKSBdIDsNCg0KICAgICMg
cHJvdGVjdCB2YXJpYWJsZXMgZnJvbSBiZWluZyBwZXJtYW5lbnRseSBzZXQgYnkgU3ViRGly
IGludm9jYXRpb25zDQogICAgIyBpbiBpbmNsdWRlZCBmaWxlcy4NCiAgICBsb2NhbCBwcm9q
ZWN0ID0gJChQUk9KRUNUKSA7DQogICAgbG9jYWwgWyBwcm90ZWN0LXN1YmRpciBdIDsNCiAg
ICBQUk9KRUNUID0gJChwcm9qZWN0KSA7DQogICAgbG9jYWwgamFtZmlsZS1wYXRoDQogICAg
ICAgID0gWyB0b2tlbnMtdG8tc2ltcGxlLXBhdGgNCiAgICAgICAgICAgIFsgc3BsaXQtcGF0
aCAkKEpBTUZJTEU6RD0kKF9zKTpSPSQoJCg8WzFdKSkpIF0gXSA7DQogICAgbG9hZC1qYW1m
aWxlcyAkKGphbWZpbGUtcGF0aCkgOw0KfQ0KDQojIExvYWQgYSB1c2VyJ3MgSmFtZmlsZShz
KS4NCiMNCnJ1bGUgbG9hZC1qYW1maWxlcyAoIGphbWZpbGVzICogKQ0Kew0KICAgICMgRmly
c3Qgd2UgbG9hZCB0aGUgSmFtZmlsZXMgd2l0aG91dCBnZW5lcmF0aW9uIG9mIG1haW4gdGFy
Z2V0cyBzbyB0aGF0DQogICAgIyBkZXBlbmRlbmNpZXMgYXJlIHByZWxvYWRlZC4gVGhlbiB3
ZSByZWxvYWQgdGhlIGZpbGVzIHdpdGggdGFyZ2V0DQogICAgIyBnZW5lcmF0aW9uIGVuYWJs
ZWQuDQogICAgDQogICAgbG9jYWwgamFtZmlsZSA7DQogICAgbG9jYWwgYXMtZGVwZW5kYW50
ID0gJChnSU5fTElCX0lOQ0xVREUpIDsNCiAgICBsb2NhbCBnSU5fTElCX0lOQ0xVREUgOw0K
ICAgIA0KICAgIGdJTl9MSUJfSU5DTFVERSA9IFRSVUUgOw0KICAgIGZvciBqYW1maWxlLXBh
dGggaW4gJChqYW1maWxlcykNCiAgICB7DQogICAgICAgIGlmICEgJChnSU5DTFVERURfQVNf
REVQRU5EQU5UKCQoamFtZmlsZS1wYXRoKSkpDQogICAgICAgIHsNCiAgICAgICAgICAgIGdJ
TkNMVURFRF9BU19ERVBFTkRBTlQoJChqYW1maWxlLXBhdGgpKSA9IFRSVUUgOw0KICAgICAg
ICAgICAgaW5jbHVkZSAkKGphbWZpbGUtcGF0aCkgOw0KICAgICAgICB9DQogICAgfQ0KICAg
IA0KICAgIGlmICEgJChhcy1kZXBlbmRhbnQpDQogICAgew0KICAgICAgICBnSU5fTElCX0lO
Q0xVREUgPSA7DQogICAgICAgIGZvciBqYW1maWxlLXBhdGggaW4gJChqYW1maWxlcykNCiAg
ICAgICAgew0KICAgICAgICAgICAgaWYgISAkKGdJTkNMVURFRCgkKGphbWZpbGUtcGF0aCkp
KQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIGdJTkNMVURFRCgkKGphbWZpbGUt
cGF0aCkpID0gVFJVRSA7DQogICAgICAgICAgICAgICAgaW5jbHVkZSAkKGphbWZpbGUtcGF0
aCkgOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQogICAgfQ0KfQ0KDQpydWxlIFVuZGVm
aW5lcw0Kew0KICAgIFVOREVGUyBvbiBbIEZBcHBlbmRTdWZmaXggJCg8KSA6ICQoU1VGRVhF
KSBdICs9ICQoVU5ERUZGTEFHKSQoPikgOw0KfQ0KDQpydWxlIFVzZXJPYmplY3QNCnsNCiAg
ICBFWElUICJVbmtub3duIHN1ZmZpeCBvbiIgJCg+KSAiLSBzZWUgVXNlck9iamVjdCBydWxl
IGluIEphbWZpbGUoNSkuIiA7DQp9DQoNCiMgZHdhIDYvNC8wMSAtIG1vZGlmaWVkIGZvciBi
b29zdA0KcnVsZSBZYWNjDQp7DQogICAgbG9jYWwgX2ggOw0KDQogICAgIyBDYW4ndCBqdXN0
IHJlcGxhY2UgLmNwcCB3aXRoIC5oLCBiZWNhdXNlIGJpc29uIHNlZW1zIHRvIGdlbmVyYXRl
IGEgLmNwcC5oIGZpbGUNCiAgICBfaCA9ICQoPCkuaCA7DQoNCiAgICAjIFNvbWUgcGxhY2Vz
IGRvbid0IGhhdmUgYSB5YWNjLg0KDQogICAgTWFrZUxvY2F0ZSAkKDwpICQoX2gpIDogJChM
T0NBVEVfU09VUkNFKSA7DQogICAgU0VBUkNIIG9uICQoPCkgJChfaCkgPSAkKExPQ0FURV9T
T1VSQ0UpIDsNCg0KICAgIGlmICQoWUFDQykNCiAgICB7DQogICAgICAgIERFUEVORFMgJCg8
KSAkKF9oKSA6ICQoPikgOw0KDQogICAgICAgICMgaWYgWUFDQyBjYW4gYWNjZXB0IGFuIG91
dHB1dCBmaWxlLCB3ZSdsbCBqdXN0IGdlbmVyYXRlIHRoZSBmaWxlIHRoZXJlLg0KICAgICAg
ICBZQUNDRklMRVMgb24gJCg8KSAkKF9oKSA9IFsgam9pbi1wYXRoICQoTE9DQVRFX1NPVVJD
RSkgJCg8WzFdKSBdIDsNCiAgICAgICAgDQogICAgICAgIFlhY2MxICQoPCkgJChfaCkgOiAk
KD4pIDsNCiAgICAgICAgDQogICAgICAgIGlmICEgJChZQUNDX09VVFBVVCkNCiAgICAgICAg
ew0KICAgICAgICAgICAgWWFjY012ICQoPCkgJChfaCkgOiAkKD4pIDsNCiAgICAgICAgfQ0K
ICAgICAgICANCiAgICAgICAgQ2xlYW4gY2xlYW4gOiAkKDwpICQoX2gpIDsNCiAgICB9DQoN
CiAgICAjIG1ha2Ugc3VyZSBzb21lb25lIGluY2x1ZGVzICQoX2gpIGVsc2UgaXQgd2lsbCBi
ZQ0KICAgICMgYSBkZWFkbHkgaW5kZXBlbmRlbnQgdGFyZ2V0DQoNCiAgICBJTkNMVURFUyAk
KDwpIDogJChfaCkgOw0KfQ0KDQpydWxlIHJlbWVtYmVyLWJpbmRpbmcgKCB0YXJnZXQgOiBi
b3VuZC1wYXRoICkgew0KICAgIGdCSU5ESU5HKCQodGFyZ2V0KSkgPSAkKGJvdW5kLXBhdGgp
IDsNCn0NCg0KcnVsZSBzdWJzdC1saXN0ICggbGlzdCArIDogcGF0dGVybiApIHsNCiAgICBs
b2NhbCByZXN1bHQgOw0KICAgIGZvciBsb2NhbCBpIGluICQobGlzdCkgew0KICAgICAgICBy
ZXN1bHQgKz0gWyBNQVRDSCAiKCQocGF0dGVybikpIiA6ICQoaSkgXSA7DQogICAgfQ0KICAg
IHJldHVybiAkKHJlc3VsdCkgOw0KfQ0KDQojDQojIFV0aWxpdHkgcnVsZXM7IG5vIHNpZGUg
ZWZmZWN0cyBvbiB0aGVzZQ0KIw0KDQpydWxlIEZHcmlzdA0Kew0KICAgICMgVHVybiBpbmRp
dmlkdWFsIGVsZW1lbnRzIGluICQoPCkgaW50byBncmlzdC4NCg0KICAgIGxvY2FsIF9nIF9p
IDsNCg0KICAgIF9nID0gJCg8WzFdKSA7DQoNCiAgICBmb3IgX2kgaW4gJCg8WzItXSkNCiAg
ICB7DQogICAgICAgIF9nID0gJChfZykhJChfaSkgOw0KICAgIH0NCg0KICAgIHJldHVybiAk
KF9nKSA7DQp9DQoNCnJ1bGUgRkdyaXN0RmlsZXMgDQp7DQogICAgaWYgISAkKFNPVVJDRV9H
UklTVCkNCiAgICB7DQogICAgICAgIHJldHVybiAkKDwpIDsNCiAgICB9DQogICAgZWxzZSAN
CiAgICB7DQogICAgICAgIHJldHVybiAkKDw6Rz0kKFNPVVJDRV9HUklTVCkpIDsNCiAgICB9
DQp9DQoNCiMgZHdhIDYvNC8wMSAtIG1vZGlmaWVkIGZvciBib29zdA0KcnVsZSBGR3Jpc3RT
b3VyY2VGaWxlcw0Kew0KICAgICMgUHJvZHVjZSBzb3VyY2UgZmlsZSBuYW1lIG5hbWUgd2l0
aCBncmlzdCBpbiBpdCwgDQogICAgIyBpZiBTT1VSQ0VfR1JJU1QgaXMgc2V0Lg0KDQogICAg
IyBMZWF2ZSBoZWFkZXIgZmlsZXMgYWxvbmUsIGJlY2F1c2UgdGhleSBoYXZlIGEgZ2xvYmFs
DQogICAgIyB2aXNpYmlsaXR5Lg0KDQogICAgaWYgISAkKFNPVVJDRV9HUklTVCkNCiAgICB7
DQogICAgICAgIHJldHVybiAkKDwpIDsNCiAgICB9DQogICAgZWxzZSANCiAgICB7DQogICAg
ICAgIGxvY2FsIF9pIF9vIDsNCg0KICAgICAgICBmb3IgX2kgaW4gJCg8KQ0KICAgICAgICB7
DQogICAgICAgICAgICBzd2l0Y2ggJChfaSkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAg
IGNhc2UgKi5oIDogICAgICBfbyArPSAkKF9pKSA7DQogICAgICAgICAgICBjYXNlICouaHBw
IDogICAgICBfbyArPSAkKF9pKSA7DQogICAgICAgICAgICBjYXNlICogOiAgICAgICAgX28g
Kz0gJChfaTpHPSQoU09VUkNFX0dSSVNUKSkgOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9
DQoNCiAgICAgICAgcmV0dXJuICQoX28pIDsNCiAgICB9DQp9DQoNCiMgZHdhIDYvNC8wMSAt
IG1vZGlmaWVkIGZvciBib29zdA0KIyBqb2luIHZhbHVlcy4uLiA6IFtzZXBhcmF0b3JdDQoj
DQojIFBhc3RlcyB2YWx1ZXMgdG9nZXRoZXIgaW50byBhIHNpbmdsZSBsaXN0IGVsZW1lbnQs
IHNlcGFyYXRlZCBieSBhbiBvcHRpb25hbCBzZXBhcmF0b3IuDQpydWxlIGpvaW4gKCB2YWx1
ZXMgKiA6IHNlcCA/ICkNCnsNCiAgICBzZXAgPz0gIiIgOw0KICAgIHJldHVybiAkKHZhbHVl
czpKPSQoc2VwKSkgOw0KfQ0KDQojIEdpdmVuICQoPCksIHRoZSB0b2tlbnMgY29tcHJpc2lu
ZyBhIHJlbGF0aXZlIHBhdGggZnJvbSBEMSB0byBhIHN1YmRpcmVjdG9yeQ0KIyBEMiwgcmV0
dXJuIHRoZSByZWxhdGl2ZSBwYXRoIGZyb20gRDIgdG8gRDEsIHVzaW5nIC4uLy4uLyBldGMu
DQpydWxlIEZTdWJEaXINCnsNCiAgICBsb2NhbCBfZCA7DQoNCiAgICBpZiAhICQoPFsxXSkg
DQogICAgew0KICAgICAgICBfZCA9ICQoRE9UKSA7DQogICAgfSANCiAgICBlbHNlDQogICAg
ew0KICAgICAgICBfZCA9ICQoRE9URE9UKSA7DQoNCiAgICAgICAgbG9jYWwgX2kgOw0KICAg
ICAgICBmb3IgX2kgaW4gJCg8WzItXSkNCiAgICAgICAgew0KICAgICAgICAgICAgX2QgPSAk
KF9kOlI9JChET1RET1QpKSA7DQogICAgICAgIH0NCiAgICB9DQoNCiAgICByZXR1cm4gJChf
ZCkgOw0KfQ0KDQojIGR3YSA2LzQvMDEgLSBhZGRlZCBmb3IgYm9vc3QNCiMgVHVybiBpbmRp
dmlkdWFsIGVsZW1lbnRzIGluICQoPCkgaW50byBhIHVzYWJsZSBwYXRoLiBJZiAkKDwpIGlz
IGVtcHR5LCAkKD4pIGlzDQojIHJldHVybmVkLg0KcnVsZSBqb2luLXBhdGgNCnsNCiAgICBs
b2NhbCBfcyBfaSA7DQoNCiAgICBpZiAhICQoPCkNCiAgICB7DQogICAgICAgIF9zID0gJCg+
KSA7DQogICAgfQ0KICAgIGVsc2UgaWYgJChWTVMpDQogICAgew0KICAgICAgICAjIFRoaXMg
aGFuZGxlcyB0aGUgZm9sbG93aW5nIGNhc2VzOg0KICAgICAgICAjICAgYSAtPiBbLmFdDQog
ICAgICAgICMgICBhIGIgYyAtPiBbLmEuYi5jXQ0KICAgICAgICAjICAgeDogLT4geDoNCiAg
ICAgICAgIyAgIHg6IGEgLT4geDpbYV0NCiAgICAgICAgIyAgIHg6W2FdIGIgLT4geDpbYS5i
XQ0KDQogICAgICAgIHN3aXRjaCAkKDxbMV0pDQogICAgICAgIHsNCiAgICAgICAgY2FzZSAq
OiogOiBfcyA9ICQoPFsxXSkgOw0KICAgICAgICBjYXNlIFxcWypcXF0gOiBfcyA9ICQoPFsx
XSkgOw0KICAgICAgICBjYXNlICogOiBfcyA9IFsuJCg8WzFdKV0gOw0KICAgICAgICB9DQoN
CiAgICAgICAgZm9yIF9pIGluIFsuJCg8WzItXSldDQogICAgICAgIHsNCiAgICAgICAgICAg
IF9zID0gJChfaTpSPSQoX3MpKSA7DQogICAgICAgIH0NCiAgICB9DQogICAgZWxzZSBpZiAk
KE1BQykNCiAgICB7DQogICAgICAgIF9zID0gJChET1QpIDsNCg0KICAgICAgICBmb3IgX2kg
aW4gJCg8KQ0KICAgICAgICB7DQogICAgICAgICAgICBfcyA9ICQoX2k6Uj0kKF9zKSkgOw0K
ICAgICAgICB9DQogICAgfQ0KICAgIGVsc2UNCiAgICB7DQogICAgICAgIF9zID0gJCg8WzFd
KSA7DQogICAgICAgIGxvY2FsIF9yID0gJCg8WzItXSkgOw0KDQogICAgICAgICMgSmFtIGRv
ZXNuJ3QgaGFuZGxlIHRoZSByb290IGRpcmVjdG9yeSBwcm9wZXJseQ0KICAgICAgICBpZiAk
KF9zKSBpbiAvICQoU0xBU0gpDQogICAgICAgIHsNCiAgICAgICAgICAgIF9zID0gJChfcykk
KF9yWzFdKSA7DQogICAgICAgICAgICBfciA9ICQoX3JbMi1dKSA7DQogICAgICAgIH0NCiAg
ICAgICAgDQogICAgICAgIGZvciBfaSBpbiAkKF9yKQ0KICAgICAgICB7DQogICAgICAgICAg
ICBfcyA9ICQoX2k6Uj0kKF9zKSkgOw0KICAgICAgICB9DQogICAgfQ0KDQogICAgcmV0dXJu
ICQoX3MpIDsNCn0NCg0KIyBkd2EgNi80LzAxIC0gbW9kaWZpZWQgZm9yIGJvb3N0DQpydWxl
IEZEaXJOYW1lDQp7DQogICAgIyBUdXJuIGluZGl2aWR1YWwgZWxlbWVudHMgaW4gJCg8KSBp
bnRvIGEgdXNhYmxlIHBhdGguDQogICAgcmV0dXJuIFsgam9pbi1wYXRoICQoPCkgOiAkKERP
VCkgXSA7DQp9DQoNCg0KcnVsZSBfbWFrZUNvbW1vbg0Kew0KICAgICMgc3RyaXAgY29tbW9u
IGluaXRpYWwgZWxlbWVudHMNCg0KICAgIGlmICQoJCg8KVsxXSkgJiYgJCgkKDwpWzFdKSA9
ICQoJCg+KVsxXSkNCiAgICB7DQogICAgICAgICQoPCkgPSAkKCQoPClbMi1dKSA7DQogICAg
ICAgICQoPikgPSAkKCQoPilbMi1dKSA7DQogICAgICAgIF9tYWtlQ29tbW9uICQoPCkgOiAk
KD4pIDsNCiAgICB9DQp9DQoNCg0KcnVsZSBGUmVsUGF0aA0Kew0KICAgIGxvY2FsIF9sIF9y
IDsNCg0KICAgICMgZmlyc3Qgc3RyaXAgb2ZmIGNvbW1vbiBwYXJ0cw0KDQogICAgX2wgPSAk
KDwpIDsNCiAgICBfciA9ICQoPikgOw0KDQogICAgX21ha2VDb21tb24gX2wgOiBfciA7DQoN
CiAgICAjIG5vdyBtYWtlIHBhdGggdG8gcm9vdCBhbmQgcGF0aCBkb3duDQoNCiAgICBfbCA9
IFsgRlN1YkRpciAkKF9sKSBdIDsNCiAgICBfciA9IFsgRkRpck5hbWUgJChfcikgXSA7DQoN
CiAgICAjIENvbmNhdGVuYXRlIGFuZCBzYXZlDQoNCiAgICAjIFhYWCBUaGlzIHNob3VsZCBi
ZSBiZXR0ZXINCg0KICAgIGlmICQoX3IpID0gJChET1QpIHsNCiAgICAgICAgcmV0dXJuICQo
X2wpIDsNCiAgICB9IGVsc2Ugew0KICAgICAgICByZXR1cm4gJChfcjpSPSQoX2wpKSA7DQog
ICAgfQ0KfQ0KDQojIGR3YSA2LzE3LzAxIC0gbW9kaWZpZWQgZm9yIGJvb3N0IHRvIGhhbmRs
ZSBtdWx0aXBsZSBzdWZmaXhlcw0KcnVsZSBGQXBwZW5kU3VmZml4DQp7DQogICAjIEUuZy4s
ICJGQXBwZW5kU3VmZml4IHlhY2MgbGV4IGZvby5iYXQgOiAkKFNVRkVYRSkgOyINCiAgICMg
cmV0dXJucyAoeWFjYyxsZXgsZm9vLmJhdCkgb24gVW5peCBhbmQgDQogICAjICh5YWNjLmV4
ZSxsZXguZXhlLGZvby5iYXQpIG9uIE5ULg0KDQogICAgaWYgJCg+KQ0KICAgIHsNCiAgICAg
ICAgbG9jYWwgX2kgX28gOw0KDQogICAgICAgIGZvciBfaSBpbiAkKDwpDQogICAgICAgIHsN
CiAgICAgICAgICAgIGlmICQoX2k6UykNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAg
ICBfbyArPSAkKF9pKSAkKF9pOlM9JCg+WzItXSkpIDsNCiAgICAgICAgICAgIH0NCiAgICAg
ICAgICAgIGVsc2UNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICBfbyArPSAkKF9p
OlM9JCg+KSkgOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQogICAgICAgIHJldHVybiAk
KF9vKSA7DQogICAgfQ0KICAgIGVsc2UNCiAgICB7DQogICAgICAgIHJldHVybiAkKDwpIDsN
CiAgICB9DQp9DQoNCnJ1bGUgdW5tYWtlRGlyDQp7DQogICAgaWYgJCg+WzFdOkQpICYmICQo
PlsxXTpEKSAhPSAkKD5bMV0pICYmICQoPlsxXTpEKSAhPSBcXFxcIA0KICAgIHsNCiAgICAg
ICAgdW5tYWtlRGlyICQoPCkgOiAkKD5bMV06RCkgJCg+WzFdOkJTKSAkKD5bMi1dKSA7DQog
ICAgfQ0KICAgIGVsc2UNCiAgICB7DQogICAgICAgICQoPCkgPSAkKD4pIDsNCiAgICB9DQp9
DQoNCiMNCiMgQWN0aW9ucw0KIw0KDQojDQojIEZpcnN0IHRoZSBkZWZhdWx0cw0KIw0KDQph
Y3Rpb25zIEFzDQp7DQogICAgJChBUykgJChBU0ZMQUdTKSAtSSQoSERSUykgLW8gJCg8KSAk
KD4pDQp9DQoNCmFjdGlvbnMgQ2hncnANCnsNCiAgICBjaGdycCAkKEdST1VQKSAkKDwpDQp9
DQoNCmFjdGlvbnMgQ2htb2QxDQp7DQogICAgJChDSE1PRCkgJChNT0RFKSAiJCg8KSINCn0N
Cg0KYWN0aW9ucyBDaG93bg0Kew0KICAgIGNob3duICQoT1dORVIpICQoPCkNCn0NCg0KYWN0
aW9ucyBwaWVjZW1lYWwgdG9nZXRoZXIgZXhpc3RpbmcgQ2xlYW4NCnsNCiAgICAkKFJNKSAi
JCg+KSINCn0NCg0KYWN0aW9ucyBGaWxlDQp7DQogICAgJChDUCkgIiQoPikiICIkKDwpIg0K
fQ0KDQphY3Rpb25zIEZpbGVDbG9uZQ0Kew0KICAgICQoQ0xPTkUpICIkKD4pIiAiJCg8KSIN
Cn0NCg0KYWN0aW9ucyBHZW5GaWxlMQ0Kew0KICAgICQoPlsxXSkgJCg8KSAkKD5bMi1dKQ0K
fQ0KDQphY3Rpb25zIEZvcnRyYW4NCnsNCiAgICAkKEZPUlRSQU4pICQoRk9SVFJBTkZMQUdT
KSAtbyAkKDwpICQoPikNCn0NCg0KYWN0aW9ucyBIYXJkTGluaw0Kew0KICAgICQoUk0pICQo
PCkNCiAgICAkKExOKSAkKD4pICQoPCkNCn0NCg0KYWN0aW9ucyBJbnN0YWxsDQp7DQogICAg
JChDUCkgJCg+KSAkKDwpIA0KfQ0KDQojIGR3YSA2LzQvMDEgLSBtb2RpZmllZCBmb3IgYm9v
c3QNCmFjdGlvbnMgdG9nZXRoZXIgTGV4DQp7DQogICAgJChMRVgpICQoTEVYRkxBR1MpICQo
TEVYX09VVFBVVCkkKDwpICQoPikNCn0NCg0KIyBkd2EgNi80LzAxIC0gbW9kaWZpZWQgZm9y
IGJvb3N0DQphY3Rpb25zIHRvZ2V0aGVyIExleE12DQp7DQogICAgJChNVikgbGV4Lnl5LmMg
JCg8KQ0KfQ0KDQphY3Rpb25zIE1rRGlyMQ0Kew0KICAgICQoTUtESVIpICIkKDwpIg0KfQ0K
DQphY3Rpb25zIHRvZ2V0aGVyIFJhbmxpYg0Kew0KICAgICQoUkFOTElCKSAkKDwpDQp9DQoN
CmFjdGlvbnMgcXVpZXRseSB1cGRhdGVkIHBpZWNlbWVhbCB0b2dldGhlciBSbVRlbXBzDQp7
DQogICAgJChSTSkgJCg+KQ0KfQ0KDQphY3Rpb25zIFNoZWxsDQp7DQogICAgJChBV0spICcN
CiAgICAgICAgICAgIE5SID09IDEgeyBwcmludCAiJChTSEVMTEhFQURFUikiIH0NCiAgICAg
ICAgICAgIE5SID09IDEgJiYgL15bIzpdLyB7IG5leHQgfQ0KICAgICAgICAgICAgL14jIy8g
eyBuZXh0IH0NCiAgICAgICAgICAgIHsgcHJpbnQgfQ0KICAgICcgPCAkKD4pID4gJCg8KQ0K
fQ0KDQojIGR3YSA2LzQvMDEgLSBtb2RpZmllZCBmb3IgYm9vc3QNCmFjdGlvbnMgdG9nZXRo
ZXIgWWFjYzENCnsNCiAgICAkKFlBQ0MpICQoWUFDQ0ZMQUdTKSAkKFlBQ0NfT1VUUFVUKSQo
PFsxXSkgJCg+KQ0KfQ0KDQojIGR3YSA2LzQvMDEgLSBtb2RpZmllZCBmb3IgYm9vc3QNCmFj
dGlvbnMgdG9nZXRoZXIgWWFjY012DQp7DQogICAgJChNVikgJChZQUNDRklMRVMpLmMgJCg8
WzFdKQ0KICAgICQoTVYpICQoWUFDQ0ZJTEVTKS5oICQoPFsyXSkNCn0NCg0KIyBkd2EgNi80
LzAxIC0ga2lsbGVkIGFsbCBwbGF0Zm9ybS1zcGVjaWZpYyBhY3Rpb25zIGZvciBib29zdA0K
DQojIGR3YSA2LzQvMDEgLSBtb2RpZmllZCBmb3IgYm9vc3QNCmFjdGlvbnMgdG9nZXRoZXIg
WWFjYy1maXgtbGluZS1kaXJlY3RpdmVzDQp7DQogICAgJChZQUNDX0ZJWF9MSU5FUykgJCg8
KSA+ICQoPCkNCn0NCg==
 --------------040704070107060205050805-- 

Boost-Build list run by bdawes at acm.org, david.abrahams at rcn.com, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk