[prev] [thread] [next] [lurker] [Date index for 2003/08/01]
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@xxxxxxxxx.xxx.xxxxxxxxxx.xxx for more info. ---1463760359-316734986-1059752961=:5155 Content-Type: TEXT/PLAIN; CHARSET=US-ASCII Content-ID: <Pine.LNX.4.44.0308011757252.5155@xxxx.xxxx.xxxxxxxxxxx.xxx> Over the last couple of days i've been playing about with the dispatch engine of nacho. Attached is the result, together with a modified version of a module that is required by it. I'd be interested in seeing what people think about it in general, so feedback welcome (and preferred :) Other extra required modules compared to the official version are as follows: Pod::Usage, Getopt::ArgvFile, Getopt::Long Jody ---1463760359-316734986-1059752961=:5155 Content-Type: TEXT/PLAIN; CHARSET=US-ASCII; NAME=nacho Content-Transfer-Encoding: BASE64 Content-ID: <Pine.LNX.4.44.0308011649210.5155@xxxx.xxxx.xxxxxxxxxxx.xxx> Content-Description: my modified nacho Content-Disposition: ATTACHMENT; FILENAME=nacho IyEvdXNyL2Jpbi9wZXJsIC13DQojICRJZCQNCnVzZSBzdHJpY3Q7DQp1c2Ug RmlsZTo6UGF0aCBxdyhta3BhdGgpOw0KdXNlIEZpbGU6OkJhc2VuYW1lOw0K dXNlIERhdGE6OkR1bXBlcjsNCnVzZSBTdHJpbmc6OlNoZWxsUXVvdGU7DQp1 c2UgVU5JVkVSU0FMOjpyZXF1aXJlOw0KdXNlIFBvZDo6VXNhZ2U7DQp1c2Ug R2V0b3B0OjpBcmd2RmlsZSBxdyhhcmd2RmlsZSk7DQp1c2UgR2V0b3B0OjpM b25nOw0KDQp1c2UgdmFycyBxdy8gJFZFUlNJT04gJUNPTU1BTkRTICRGSVJT VF9DT01NQU5EIC87DQokVkVSU0lPTiA9ICIxLjAiOw0KDQojIyBUT0RPDQoj IHNldHRpbmcgcGVyc29uYWwgcGx1Z2lucw0KDQoNCj1oZWFkMSBOQU1FDQoN Cm5hY2hvIC0gdGhlIHNpZXN0YSBjb21tYW5kIGxpbmUgY29uZmlndXJhdGlv biB0b29sDQoNCj1oZWFkMSBTWU5PUFNJUw0KDQpuYWNobyBbY29tbWFuZCBb b3B0aW9uc10uLi5dDQoNCiBHZW5lcmljIE9wdGlvbnM6DQogICAtZCwgLS1k YXRhYmFzZT1EQklfVVJJICBcIHRoZXNlIHR3byBvcHRpb25zIGFsbG93IHlv dSB0byBvdmVycmlkZQ0KICAgLWYsIC0tY29uZmlnLWZpbGU9RklMRSAgLyB0 aGUgdmFsdWVzIGRlZmluZWQgaW4gU2llc3RhOjpDb25maWcNCg0KICAgLWgs IC0taGVscCAgICAgICAgICAgaGVscCB0ZXh0IGRldGFpbGluZyB0aGUgY29t bWFuZHMgYW5kIHRoZWlyIG9wdGlvbnMNCiAgIC1WLCAtLXZlcnNpb24gICAg ICAgIHByaW50cyB0aGUgdmVyc2lvbiBudW1iZXINCg0KDQogTWlzYyBDb21t YW5kczogICBjcmVhdGUtZGF0YWJhc2UgIHJ1bi1tYXJpYWNoZSAgICAgIGNy ZWF0ZS1iYWNrdXANCiBMaXN0IENvbW1hbmRzOiAgIHNob3ctbGlzdHMgICAg ICAgc2hvdy1hbGlhcyAgICAgICAgZGVzY3JpYmUtbGlzdA0KICAgICAgICAg ICAgICAgICAgY3JlYXRlLWxpc3QgICAgICBtb2RpZnktbGlzdCAgICAgICBk ZWxldGUtbGlzdCAgICANCiAgICAgICAgICAgICAgICAgIHNldC1wbHVnaW5z ICAgICAgYWRkLW1lbWJlciAgICAgICAgcmVtb3ZlLW1lbWJlcg0KIE1lbWJl ciBDb21tYW5kczogc2hvdy1tZW1iZXJzICAgICBkZXNjcmliZS1tZW1iZXIg ICBjcmVhdGUtbWVtYmVyDQogICAgICAgICAgICAgICAgICBtb2RpZnktbWVt YmVyICAgIGRlbGV0ZS1tZW1iZXINCiBQbHVnaW4gQ29tbWFuZHM6IHNob3ct cGx1Z2lucyAgICAgZGVzY3JpYmUtcGx1Z2lucyAgbW9kaWZ5LXBsdWdpbg0K DQogT3B0aW9ucyBhbmQgY29tbWFuZHMgbWF5IGJlIHJlYWQgZnJvbSBhIGZp bGUgYnkgZ2l2aW5nIHRoZSBuYW1lIG9mIHRoZQ0KIGZpbGUgcHJlZml4ZWQg YnkgYSBALiBUaGUgZGF0YWJhc2UgYW5kIGNvbmZpZy1maWxlIG9wdGlvbnMg YWZmZWN0IGFsbA0KIG9mIHRoZSBzdXBwbGllZCBjb21tYW5kcy4gaWYgZWl0 aGVyIG9mIHRoZW0gaXMgc3VwcGxpZWQgbW9yZSB0aGFuIG9uY2UsDQogdGhl IGxhc3Qgb25lIHdpbGwgdGFrZSBwcmlvcml0eS4NCg0KPWhlYWQxIE9QVElP TlMNCiANCiBOT1RFOiBBbGwgY29tbWFuZCBvcHRpb25zIGFyZSBtYW5kYXRv cnkgdW5sZXNzIG90aGVyd2lzZSBzdGF0ZWQNCg0KIE1pc2MgQ29tbWFuZHM6 DQogICBjcmVhdGUtZGF0YWJhc2UgICAgICBpbml0aWFsaXNlcyBhIG5ldyBk YXRhYmFzZQ0KICAgcnVuLW1hcmlhY2hpICAgICAgICAgaW52b2tlIG1hcmlh Y2hpIHRvIG1ha2Ugd2ViaWZpZWQgYXJjaGl2ZXMNCiAgICAgICAgICAgICAg ICAgICAgICAgICAgKGRlcGVuZHMgb24gdGhlIEFyY2hpdmUgcGx1Z2luKQ0K ICAgY3JlYXRlLWJhY2t1cCAgICAgICAgcHJpbnRzIG91dCBhIHNoZWxsIHNj cmlwdCB0aGF0IHdpbGwgcmVzdG9yZSB5b3VyIHN5c3RlbSB3aGVuIHJ1bg0K ICAgICAtbCwgLS1saXN0PU5BTUUgICAgbGltaXQgdGhlIGJhY2t1cCBzY3Jp cHQgdG8gdGhpcyBsaXN0IChvcHRpb25hbCkNCg0KICBMaXN0IENvbW1hbmRz Og0KICAgc2hvdy1saXN0cyAgICAgICAgICAgc2hvd3MgYWxsIHRoZSBsaXN0 cyB0aGF0IGFyZSBpbiB0aGUgc3lzdGVtDQogICBjcmVhdGUtbGlzdCAgICAg ICAgICBjcmVhdGVzIGEgbmV3IGxpc3QNCiAgICAgLWwsIC0tbGlzdD1OQU1F ICAgICAgICB0aGUgbmFtZSBvZiB0aGUgbGlzdA0KICAgICAtbywgLS1vd25l cj1FTUFJTCAgICAgIHRoZSBhZG1pbmlzdHJhdG9yIG9mIHRoZSBsaXN0DQog ICAgIC1wLCAtLXBvc3Q9RU1BSUwgICAgICAgdGhlIGFkZHJlc3MgdG8gc2Vu ZCBtYWlsIHRvIGZvciBwb3N0aW5nIHRvIHRoZSBsaXN0DQogICAgIC1iLCAt LWJvdW5jZXM9RU1BSUwgICAgdGhlIGFkZHJlc3MgdGhhdCBib3VuY2VzIHNo b3VsZCBjb21lIGJhY2sgdG8NCg0KICAgc2hvdy1hbGlhcyAgICAgICAgICAg cHJpbnRzIG91dCBhbiBhbGlhcyBmaWxlIGVudHJ5IGZvciBhIGxpc3QNCiAg ICAgLWwsIC0tbGlzdD1OQU1FfElEICAgICB0aGUgbmFtZSBvciBpZCBvZiB0 aGUgbGlzdA0KDQogICBkZXNjcmliZS1saXN0ICAgICAgICBzaG93cyBhbGwg dGhlIHByb3BlcnRpZXMgb2YgYSBsaXN0IGFuZCB0aGVpciB2YWx1ZXMNCiAg ICAgLWwsIC0tbGlzdD1OQU1FfElEICAgICB0aGUgbmFtZSBvciBpZCBvZiB0 aGUgbGlzdA0KDQogICBtb2RpZnktbGlzdCAgICAgICAgICBjaGFuZ2Ugb25l IG9yIG1vcmUgcHJvcGVydGllcyBvZiBhIGxpc3QNCiAgICAgLWwsIC0tbGlz dD1OQU1FfElEICAgICB0aGUgbmFtZSBvciBpZCBvZiB0aGUgbGlzdA0KICAg ICAtcHIsIC0tcHJvcGVydHkgS0VZPVZBTFVFDQogICAgICAgICAgICAgICAg ICAgICAgICAgICAgc2V0cyB0aGUgcHJvcGVydHkgS0VZIHRvIFZBTFVFIChy ZXBlYXRhYmxlKQ0KDQogICAgICBOb3RlOiB5b3UgY2FuIGVmZmVjdGl2ZWx5 IGNvcHkgdGhlIGNvbmZpZ3VyYXRpb24gb2YgYSBsaXN0IGJ5IG1vZGlmaXlp bmcNCiAgICAgICAgICAgIHRoZSAnaWQnIHByb3BlcnR5IC0gYSBuZXcgbGlz dCB3aXRoIHRoZSBuZXcgaWQgd2lsbCBiZSBjcmVhdGVkIGZvciB5b3UuDQoN CiAgIGRlbGV0ZS1saXN0ICAgICAgICAgIHJlbW92ZSBhIGxpc3RzIGZyb20g dGhlIHN5c3RlbQ0KICAgICAtbCwgLS1saXN0PU5BTUV8SUQgICAgIHRoZSBu YW1lIG9yIGlkIG9mIHRoZSBsaXN0DQoNCiAgIHNldC1wbHVnaW5zICAgICAg ICAgIHNldHMgdGhlIHBsdWdpbnMgb2YgYSBsaXN0DQogICAgICAgICAgICAg ICAgICAgICAgICAgIChhbnkgZXhpc3RpbmcgcGx1Z2lucyBub3Qgc3BlY2lm aWVkIHdpbGwgYmUgZGVsZXRlZCkNCiAgICAgLWwsIC0tbGlzdD1OQU1FfElE ICAgICB0aGUgbmFtZSBvciBpZCBvZiB0aGUgbGlzdA0KICAgICAtcSwgLS1x dWV1ZT1OQU1FICAgICAgIHRoZSBuYW1lIG9mIHRoZSBxdWV1ZSAoZWcgcG9z dCwgc3ViLCB1bnN1YiwgLi4uKQ0KICAgICAtcCwgLS1wbHVnaW49TkFNRSAg ICAgIHRoZSBuYW1lIG9mIGEgcGx1Z2luIChyZXBlYXRhYmxlKQ0KICAgICAN CiAgIGFkZC1tZW1iZXIgICAgICAgICAgIGFkZHMgb25lIG9yIG1vcmUgbWVt YmVycyB0byBhIGxpc3QNCiAgICAgICAgICAgICAgICAgICAgICAgICAgKHdp bGwgY3JlYXRlIG5ldyBtZW1iZXJzIGlmIG5lY2Vzc2FyeSkNCiAgICAgLWws IC0tbGlzdD1OQU1FfElEICAgICB0aGUgbmFtZSBvciBpZCBvZiB0aGUgbGlz dA0KICAgICAtbSwgLS1tZW1iZXI9RU1BSUwgICAgIHRoZSBlbWFpbCBhZGRy ZXNzIG9mIGEgbWVtYmVyIChyZXBlYXRhYmxlKQ0KDQogICByZW1vdmUtbWVt YmVyICAgICAgICByZW1vdmVzIG9uZSBvciBtb3JlIG1lbWJlcnMgZnJvbSBh IGxpc3QNCiAgICAgLWwsIC0tbGlzdD1OQU1FfElEICAgICB0aGUgbmFtZSBv ciBpZCBvZiB0aGUgbGlzdA0KICAgICAtbSwgLS1tZW1iZXI9RU1BSUwgICAg IHRoZSBlbWFpbCBhZGRyZXNzIG9mIGEgbWVtYmVyIChyZXBlYXRhYmxlKQ0K DQogICANCiBNZW1iZXIgQ29tbWFuZHM6DQogICBzaG93LW1lbWJlcnMgICAg ICAgICBzaG93cyB0aGUgbWVtYmVycyBpbiB0aGUgc3lzdGVtLCBvciBvbmUg b3IgbW9yZSBsaXN0cw0KICAgICAtbCwgLS1saXN0PU5BTUV8SUQgICAgIHNo b3cgdGhlIG1lbWJlcnMgc3ViYmVkIHRvIHRoaXMgbGlzdCAob3B0aW9uYWws IHJlcGVhdGFibGUpDQoNCiAgIGNyZWF0ZS1tZW1iZXIgICAgICAgIGFkZHMg b25lIG9yIG1vcmUgbmV3IG1lbWJlcnMgdG8gdGhlIHN5c3RlbQ0KICAgICAt bSwgLS1tZW1iZXI9RU1BSUwgICAgIHRoZSBlbWFpbCBhZGRyZXNzIG9mIGEg bWVtYmVyIChyZXBlYXRhYmxlKQ0KDQogICBkZXNjcmliZS1tZW1iZXIgICAg ICBzaG93cyBhbGwgdGhlIHByb3BlcnRpZXMgb2YgYSBtZW1iZXIgYW5kIHRo ZWlyIHZhbHVlcw0KICAgICAtbSwgLS1tZW1iZXI9RU1BSUx8SUQgIHRoZSBl bWFpbCBhZGRyZXNzIG9yIGlkIG9mIGEgbWVtYmVyDQoNCiAgIG1vZGlmeS1t ZW1iZXIgICAgICAgIGNoYW5nZSBvbiBvciBtb3JlIHByb3BlcnRpZXMgb2Yg YSBtZW1iZXINCiAgICAgLW0sIC0tbWVtYmVyPUVNQUlMfElEICB0aGUgZW1h aWwgYWRkcmVzcyBvciBpZCBvZiBhIG1lbWJlcg0KICAgICAtcHIsIC0tcHJv cGVydHkgS0VZPVZBTFVFDQogICAgICAgICAgICAgICAgICAgICAgICAgICAg c2V0cyB0aGUgcHJvcGVydHkgS0VZIHRvIFZBTFVFIChyZXBlYXRhYmxlKQ0K DQogICAgICBOb3RlOiB5b3UgY2FuIGVmZmVjdGl2ZWx5IGNvcHkgdGhlIGNv bmZpZ3VyYXRpb24gb2YgYSBtZW1iZXIgYnkgbW9kaWZpeWluZw0KICAgICAg ICAgICAgdGhlICdpZCcgcHJvcGVydHkgLSBhIG5ldyBtZW1iZXIgd2l0aCB0 aGUgbmV3IGlkIHdpbGwgYmUgY3JlYXRlZCBmb3IgeW91Lg0KDQogICBkZWxl dGUtbWVtYmVyICAgICAgICByZW1vdmVzIG9uZSBvciBtb3JlIG1lbWJlcnMg ZnJvbSB0aGUgc3lzdGVtDQogICAgIC1tLCAtLW1lbWJlcj1FTUFJTHxJRCAg dGhlIGVtYWlsIGFkZHJlc3Mgb3IgaWQgb2YgYSBtZW1iZXIgKHJlcGVhdGFi bGUpDQoNCiBQbHVnaW4gQ29tbWFuZHM6DQogICBzaG93LXBsdWdpbnMgICAg ICAgICBkaXNwbGF5IGEgbGlzdCBvZiBwbHVnaW5zIChvbiB0aGUgc3lzdGVt LCBvciBzZXQgb24gbGlzdHMpICANCiAgICAgLWwsIC0tbGlzdD1OQU1FfElE ICAgICBzaG93IHRoZSBwbHVnaW5zIHNldCBvbiB0aGlzIGxpc3QgKG9wdGlv bmFsLCByZXBlYXRhYmxlKQ0KDQogICBkZXNjcmliZS1wbHVnaW4gICAgICBz aG93cyBhbGwgdGhlIG9wdGlvbnMgZm9yIGEgcGFydGljdWxhciBwbHVnaW4N CiAgICAgLXAsIC0tcGx1Z2luPU5BTUUgICAgICB0aGUgbmFtZSBvZiB0aGUg cGx1Z2luDQogICAgIC1sLCAtLWxpc3Q9TkFNRXxJRCAgICAgc2hvdyB0aGUg Y3VycmVudCBzZXR0aW5ncyBmb3IgdGhpcyBsaXN0IChvcHRpb25hbCkNCiAg ICAgLW0sIC0tbWVtYmVyPUVNQUlMfElEICBzaG93IHRoZSBvcHRpb25zIGZv ciB0aGlzIG1lbWJlciBmb3IgdGhlIHNwZWNpZmllZCBsaXN0IChvcHRpb25h bCkNCg0KICAgbW9kaWZ5LXBsdWdpbiAgICAgICAgc2V0cyBvbmUgb3IgbW9y ZSBwbHVnaW4gcHJlZmVyZW5jZXMgZm9yIGEgbGlzdA0KICAgICAtcGwsIC0t cGx1Z2luPU5BTUUgICAgIHRoZSBuYW1lIG9mIHRoZSBwbHVnaW4NCiAgICAg LWwsIC0tbGlzdD1OQU1FfElEICAgICB0aGUgbmFtZSBvciBpZCBvZiBhIGxp c3QNCiAgICAgLW0sIC0tbWVtYmVyPUVNQUlMfElEICBzZXQgdGhlIHBlcnNv bmFsIHByZWZlcmVuY2Ugb2YgdGhpcyBtZW1iZXIgZm9yIHRoaXMgbGlzdCAo b3B0aW9uYWwpDQogICAgIC1wciwgLS1wcmVmZXJlbmNlIEtFWT1WQUxVRQ0K ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldHMgdGhlIHByb3BlcnR5 IEtFWSB0byBWQUxVRSAocmVwZWF0YWJsZSkNCg0KPWN1dA0KDQpCRUdJTnsN Cg0KCSMjIyMjDQoJIw0KCSMgTWlzYyBzdHVmZg0KCSMNCgkjIyMjIw0KDQoJ JENPTU1BTkRTeydjcmVhdGUtZGF0YWJhc2UnfSA9IHsNCglhY3Rpb24gPT4g c3ViIHsNCgkJcmVxdWlyZSBTaWVzdGE6OkRCSTsNCgkJU2llc3RhOjpEQkkt PmluaXRfZGI7DQoJfQ0KCX07DQoNCgkkQ09NTUFORFN7J3J1bi1tYXJpYWNo aSd9ID0gew0KCWFjdGlvbiA9PiBzdWIgew0KCSAgICBmb3IgbXkgJGxpc3Qg KCBtYXAgeyAkXy0+bmFtZSB9IFNpZXN0YTo6TGlzdC0+cmV0cmlldmVfYWxs ICkgew0KCQkJbXkgJGlucHV0Ow0KCQkJbXkgJG91dHB1dDsNCgkJCXsNCgkJ CQlubyB3YXJuaW5nczsNCgkJICAgICAgICAkaW5wdXQgID0gJFNpZXN0YTo6 Q29uZmlnOjpBUkNISVZFIC4gIi8kbGlzdCI7DQoJCSAgICAgICAgJG91dHB1 dCA9ICRTaWVzdGE6OkNvbmZpZzo6Uk9PVCAuICIvbWFyaWFjaGktaHRtbC8k bGlzdCI7DQoJCQl9DQoJICAgICAgICBta3BhdGgoJG91dHB1dCk7DQoJICAg ICAgICBwcmludCAiaW52b2tpbmcgbWFyaWFjaGkgZm9yICRsaXN0XG4iOw0K CSAgICAgICAgc3lzdGVtICdtYXJpYWNoaScsICctaScsICRpbnB1dCwgJy1v JywgJG91dHB1dCwgJy1uJywgJGxpc3Q7DQoJICAgIH0NCgl9DQoJfTsNCg0K CSRDT01NQU5EU3snY3JlYXRlLWJhY2t1cCd9ID0gew0KCW9wdGlvbmFsID0+ IFtxdy8gbGlzdD1zIC9dLA0KCWFjdGlvbiA9PiBzdWIgew0KCQlteSAlb3B0 cyA9IEBfOw0KDQoJCW15IEBtZW1iZXJzOw0KCQlteSBAbGlzdHM7DQoJCQ0K CQkjaGF2ZSB3ZSBiZWVuIHBhc3NlZCBhIGxpc3QNCgkJaWYgKGRlZmluZWQg JG9wdHN7bGlzdH0pIHsNCgkJCW15ICRsaXN0ID0gU2llc3RhOjpMaXN0LT5s b2FkKCRfKSANCgkJCSAgb3IgZGllICJjcmVhdGUtYmFja3VwOiBObyBzdWNo IGxpc3QgJyRfJ1xuIjsNCgkJCXB1c2ggQGxpc3RzLCAkbGlzdDsNCgkJCUBt ZW1iZXJzID0gJGxpc3QtPm1lbWJlcnMoKTsNCgkJDQoJCSMgb3RoZXJ3aXNl IGRvIGV2ZXJ5dGhpbmcNCgkJfSBlbHNlIHsNCgkJCUBtZW1iZXJzID0gU2ll c3RhOjpNZW1iZXItPnJldHJpZXZlX2FsbDsNCgkJCUBsaXN0cyAgID0gU2ll c3RhOjpMaXN0LT5yZXRyZWl2ZV9hbGw7DQoJCX0NCg0KCQlwcmludCBTaWVz dGEtPmJha2UoJ2JhY2t1cCcsDQoJCSAgICAgICAgICAgICAgICAgICAnbWVt YmVycycgPT4gXEBtZW1iZXJzLA0KCQkgICAgICAgICAgICAgICAgICAgJ2xp c3RzJyAgID0+IFxAbGlzdHMsDQoJCSAgICAgICAgICAgICAgICAgICAnc2hl bGxxJyAgPT4gc3ViIHsgcmV0dXJuIHNoZWxsX3F1b3RlICRfWzBdIH0sDQoJ CSAgICAgICAgICAgICAgICAgICk7DQoJfQ0KCX07IA0KDQoJIyMjIyMNCgkj DQoJIyBMaXN0IHN0dWZmDQoJIw0KCSMjIyMjDQoNCg0KCSRDT01NQU5EU3sn c2hvdy1saXN0cyd9ID0gew0KCWFjdGlvbiA9PiBzdWIgew0KCQlmb3JlYWNo IG15ICRsaXN0ICggU2llc3RhOjpMaXN0LT5yZXRyaWV2ZV9hbGwgKSB7DQoJ CQlwcmludCAkbGlzdC0+bmFtZSAuICJcbiI7DQoJCX0NCgl9DQoJfTsNCgkN CgkkQ09NTUFORFN7J2NyZWF0ZS1saXN0J30gPSB7DQoJcmVxdWlyZWQgPT4g W3F3LyBsaXN0PXMgb3duZXI9cyBwb3N0PXMgYm91bmNlPXMgL10sDQoJYWN0 aW9uID0+IHN1YiB7DQoJCW15ICVvcHRzID0gQF87DQoNCgkJbXkgJGxpc3Qg PSBTaWVzdGE6Okxpc3QtPm5ldygNCgkJCW5hbWUgICAgICAgICA9PiAkb3B0 c3tsaXN0fSwNCgkJCW93bmVyICAgICAgICA9PiBTaWVzdGE6Ok1lbWJlci0+ ZmluZF9vcl9jcmVhdGUoeyBlbWFpbCA9PiAkb3B0c3tvd25lcn0gfSksDQoJ CQlwb3N0X2FkZHJlc3MgPT4gJG9wdHN7cG9zdH0sDQoJCQlyZXR1cm5fcGF0 aCAgPT4gJG9wdHN7Ym91bmNlfSwNCgkJICAgKQ0KCQkgIG9yIGRpZSAiY3Jl YXRlLWxpc3Q6IEZhaWxlZCB0byBjcmVhdGUgYSBuZXcgbGlzdFxuIjsNCg0K CQkjIHNldCB1cCBkZWZhdWx0IHBsdWdpbiBxdWV1ZXMNCgkJJGxpc3QtPnNl dF9wbHVnaW5zKCBwb3N0ICA9PiBxdyggQXJjaGl2ZSBTZW5kICkgKTsNCgkJ JGxpc3QtPnNldF9wbHVnaW5zKCBzdWIgICA9PiBxdyggU3Vic2NyaWJlICkg KTsNCgkJJGxpc3QtPnNldF9wbHVnaW5zKCB1bnN1YiA9PiBxdyggVW5TdWJz Y3JpYmUgKSApOw0KDQoJCXByaW50ICJDcmVhdGVkIHRoZSBuZXcgbGlzdCAn JG9wdHN7bGlzdH0nIDwkb3B0c3twb3N0fT5cbiI7DQoJCXByaW50ICJuYWNo byBzaG93LWFsaWFzIHdpbGwgc2hvdyB5b3Ugd2hhdCB0byBpbmNsdWRlIGlu IC9ldGMvYWxpYXNlc1xuIjsNCgl9DQoJfTsNCg0KCSRDT01NQU5EU3snc2hv dy1hbGlhcyd9ID0gew0KCXJlcXVpcmVkID0+IFtxdy8gbGlzdD1zIC9dLA0K CWFjdGlvbiA9PiBzdWIgew0KCQlteSAlb3B0cyA9IEBfOw0KDQoJCW15ICRs aXN0ID0gU2llc3RhOjpMaXN0LT5sb2FkKCAkb3B0c3tsaXN0fSApDQoJCSAg b3IgZGllICJzaG93LWFsaWFzOiBOb3QgYSB2YWxpZCBsaXN0IG5hbWUgb3Ig aWRcbiI7DQoNCgkJcHJpbnQgJGxpc3QtPmFsaWFzKCduYWNobyAodGhlIHNp ZXN0YSBjb25maWd1cmF0aW9uIHRvb2wpJyk7DQoJfQ0KCX07DQoNCgkkQ09N TUFORFN7J2Rlc2NyaWJlLWxpc3QnfSA9IHsNCglyZXF1aXJlZCA9PiBbcXcv IGxpc3Q9cyAvXSwNCglhY3Rpb24gPT4gc3ViIHsNCgkJbXkgJW9wdHMgPSBA XzsNCg0KCQlteSAkbGlzdCA9IFNpZXN0YTo6TGlzdC0+bG9hZCggJG9wdHN7 bGlzdH0gKQ0KCQkgIG9yIGRpZSAiZGVzY3JpYmUtbGlzdDogTm90IGEgdmFs aWQgbGlzdCBuYW1lIG9yIGlkXG4iOw0KCQkNCgkJZm9yZWFjaCBteSAka2V5 ICgkbGlzdC0+Y29sdW1ucykgew0KCQkJbXkgJHZhbHVlID0gJGxpc3QtPiRr ZXkoKSB8fCAnJzsNCgkJCXByaW50ICIka2V5ID0gJHZhbHVlXG4iOw0KCQl9 DQoNCgkJZm9yIG15ICRxdWV1ZSAoJGxpc3QtPnF1ZXVlcykgeyANCgkJCXBy aW50ICIkcXVldWUgcGx1Z2luczogIiwgam9pbiggJyAnLCBtYXAgeyAoJF8t PnBlcnNvbmFsKT8gIisiLiRfLT5uYW1lOiRfLT5uYW1lICB9ICRsaXN0LT5w bHVnaW5zKCAkcXVldWUgKSksICJcbiI7DQoJCX0NCgl9DQoJfTsNCg0KCSRD T01NQU5EU3snbW9kaWZ5LWxpc3QnfSA9IHsNCglyZXF1aXJlZCA9PiBbcXcv IGxpc3Q9cyBwcm9wZXJ0eT1zJSAvXSwNCglhY3Rpb24gPT4gc3ViIHsNCgkJ bXkgJW9wdHMgPSBAXzsNCg0KCQlteSAkbGlzdCA9IFNpZXN0YTo6TGlzdC0+ bG9hZCggJG9wdHN7bGlzdH0gKQ0KCQkgIG9yIGRpZSAibW9kaWZ5LWxpc3Q6 IE5vdCBhIHZhbGlkIGxpc3QgbmFtZSBvciBpZFxuIjsNCg0KCQl3aGlsZSAo bXkgKCRrZXksICR2YWx1ZSkgPSBlYWNoICV7JG9wdHN7cHJvcGVydHl9fSkg ew0KCQkJbXkgJWZpZWxkcyA9IG1hcCB7ICRfID0+IDEgfSAkbGlzdC0+Y29s dW1uczsNCgkJCWRpZSAibW9kaWZ5LWxpc3Q6ICcka2V5JyBpcyBub3QgYSB2 YWxpZCBwcm9wZXJ0eSAtIHZhbGlkIHByb3BlcnRpZXMgYXJlXG4iLA0KCQkJ CShqb2luICJcbiIsJGxpc3QtPmNvbHVtbnMpLCJcbiIgdW5sZXNzICRmaWVs ZHN7JGtleX07DQoNCgkJCSRsaXN0LT4ka2V5KCR2YWx1ZSk7DQoJCQlwcmlu dCAiUHJvcGVydHkgJyRrZXknIHNldCB0byAnJHZhbHVlJyBmb3IgdGhlIGxp c3QgJG9wdHN7bGlzdH1cbiI7DQoJCX0NCgl9DQoJfTsNCg0KCSRDT01NQU5E U3snZGVsZXRlLWxpc3QnfSA9IHsNCglyZXF1aXJlZCA9PiBbcXcvIGxpc3Q9 cyAvXSwNCglhY3Rpb24gPT4gc3ViIHsNCgkJbXkgJW9wdHMgPSBAXzsNCg0K CQlteSAkbGlzdCA9IFNpZXN0YTo6TGlzdC0+bG9hZCggJG9wdHN7bGlzdH0g KQ0KCQkgIG9yIGRpZSAiZGVsZXRlLWxpc3Q6IE5vdCBhIHZhbGlkIGxpc3Qg bmFtZSBvciBpZFxuIjsNCgkNCgkJIyBnb3NoLCBDbGFzczo6REJJIG1ha2Vz IHRoaXMgZWFzeQ0KCQkkbGlzdC0+ZGVsZXRlOw0KCQkNCgkJcHJpbnQgIkxp c3QgJyRvcHRze2xpc3R9JyBkZWxldGVkXG4iOw0KCX0NCgl9Ow0KDQoJJENP TU1BTkRTeydzZXQtcGx1Z2lucyd9ID0gew0KCXJlcXVpcmVkID0+IFtxdy8g bGlzdD1zIHF1ZXVlPXMgL10sDQoJb3B0aW9uYWwgPT4gW3F3LyBwbHVnaW49 c0AgL10sDQoJYWN0aW9uID0+IHN1YiB7DQoJCW15ICVvcHRzID0gQF87DQoN CgkJbXkgJGxpc3QgPSBTaWVzdGE6Okxpc3QtPmxvYWQoICRvcHRze2xpc3R9 ICkNCgkJICBvciBkaWUgInNldC1wbHVnaW5zOiBOb3QgYSB2YWxpZCBsaXN0 IG5hbWUgb3IgaWRcbiI7DQoNCgkJJGxpc3QtPnNldF9wbHVnaW5zKCAkb3B0 c3txdWV1ZX0gPT4gQHskb3B0c3twbHVnaW59fSApDQoJCSAgb3IgZGllICJz ZXQtcGx1Z2luczogU29ycnksIGNvdWxkbid0IGRvIHRoYXQgZm9yIHNvbWUg cmVhc29uXG4iOw0KDQoJCXVubGVzcyAoQHskb3B0c3twbHVnaW59fSkgew0K CQkJcHJpbnQgIkRlbGV0ZWQgcGx1Z2lucyBmcm9tICRvcHRze2xpc3R9XG4i Ow0KCQkJcmV0dXJuOw0KCQl9DQoJfQ0KCX07DQoNCgkkQ09NTUFORFN7J2Fk ZC1tZW1iZXInfSA9IHsNCglyZXF1aXJlZCA9PiBbcXcvIGxpc3Q9cyBtZW1i ZXI9c0AgL10sDQoJYWN0aW9uID0+IHN1YiB7DQoJCW15ICVvcHRzID0gQF87 DQoNCgkJbXkgJGxpc3QgPSBTaWVzdGE6Okxpc3QtPmxvYWQoICRvcHRze2xp c3R9ICkNCgkJICBvciBkaWUgImFkZC1tZW1iZXI6IE5vdCBhIHZhbGlkIGxp c3QgbmFtZSBvciBpZFxuIjsNCg0KCQlmb3IgbXkgJG1lbWJlcl9pZCAoQHsk b3B0c3ttZW1iZXJ9fSkgew0KCQkJbXkgJG1lbWJlciA9IFNpZXN0YTo6TWVt YmVyLT5maW5kX29yX2NyZWF0ZSh7IGVtYWlsID0+ICRtZW1iZXJfaWQgfSkN CgkJCSAgb3IgZGllICJhZGQtbWVtYmVyOiBDb3VsZG4ndCBnZXQvY3JlYXRl IGEgbWVtYmVyICckbWVtYmVyX2lkJ1xuIjsNCg0KCQkJJGxpc3QtPmFkZF9t ZW1iZXIoJG1lbWJlcik7DQoJCQlwcmludCAiTWVtYmVyIDwiLiRtZW1iZXIt PmVtYWlsLiI+ICgiLiRtZW1iZXItPmlkLiIpIGFkZGVkIHRvIGxpc3QgJyRv cHRze2xpc3R9J1xuIjsNCgkJfTsNCgl9DQoJfTsNCg0KCSRDT01NQU5EU3sn cmVtb3ZlLW1lbWJlcid9ID0gew0KCXJlcXVpcmVkID0+IFtxdy8gbGlzdD1z IG1lbWJlcj1zQCAvXSwNCglhY3Rpb24gPT4gc3ViIHsNCgkJbXkgJW9wdHMg PSBAXzsNCg0KCQlteSAkbGlzdCA9IFNpZXN0YTo6TGlzdC0+bG9hZCggJG9w dHN7bGlzdH0gKQ0KCQkgIG9yIGRpZSAicmVtb3ZlLW1lbWJlcjogTm90IGEg dmFsaWQgbGlzdCBuYW1lIG9yIGlkXG4iOw0KDQoJCWZvciBteSAkbWVtYmVy X2lkIChAeyRvcHRze21lbWJlcn19KSB7DQoJCQlteSAkbWVtYmVyID0gU2ll c3RhOjpNZW1iZXItPmxvYWQoJG1lbWJlcl9pZCkNCgkJCSAgb3IgZGllICJy ZW1vdmUtbWVtYmVyOiAkbWVtYmVyX2lkIGlzIG5vdCBhIHZhbGlkIG1lbWJl ciBpZFxuIjsNCgkJCQ0KCQkJJGxpc3QtPnJlbW92ZV9tZW1iZXIoJG1lbWJl cik7DQoJCQlwcmludCAiTWVtYmVyICckbWVtYmVyX2lkJyByZW1vdmVkIGZy b20gbGlzdCAnJG9wdHN7bGlzdH0nXG4iOw0KCQl9Ow0KCX0NCgl9Ow0KDQoJ IyMjIyMNCgkjDQoJIyBNZW1iZXIgc3R1ZmYNCgkjDQoJIyMjIyMNCg0KDQoJ JENPTU1BTkRTeydzaG93LW1lbWJlcnMnfSA9IHsNCglvcHRpb25hbCA9PiBb cXcvIGxpc3Q9c0AgL10sDQoJYWN0aW9uID0+IHN1YiB7DQoJCW15ICVvcHRz ID0gQF87DQoNCgkJaWYgKCFkZWZpbmVkICRvcHRze2xpc3R9KSB7DQoJCQlw cmludCAiQWxsIG1lbWJlcnMgZm9yIHN5c3RlbTpcbiI7DQoJCQlmb3JlYWNo IG15ICRtZW1iZXIgKCBTaWVzdGE6Ok1lbWJlci0+cmV0cmlldmVfYWxsICkg ew0KCQkJCXByaW50ICRtZW1iZXItPmVtYWlsLCAiXG4iOw0KCQkJfQ0KCQkJ cmV0dXJuOw0KCQl9IGVsc2Ugew0KCQkJZm9yIChAeyRvcHRze2xpc3R9fSkg ew0KCQkJCW15ICRsaXN0ID0gU2llc3RhOjpMaXN0LT5sb2FkKCRfKQ0KCQkJ CSAgb3IgZGllICJzaG93LW1lbWJlcnM6IE5vIGxpc3QgJyRfJyFcbiI7DQoJ CQkJcHJpbnQgIk1lbWJlcnMgb2YgJF86XG4iOw0KCQ0KCQkJCWZvcmVhY2gg bXkgJG1lbWJlciAoJGxpc3QtPm1lbWJlcnMpIHsNCgkJCQkJcHJpbnQgJG1l bWJlci0+ZW1haWwsICJcbiI7DQoJCQkJfQ0KCQkJfQ0KCQl9DQoJfQ0KCX07 DQoNCgkkQ09NTUFORFN7J2NyZWF0ZS1tZW1iZXInfSA9IHsNCglyZXF1aXJl ZCA9PiBbcXcvIG1lbWJlcj1zQCAvXSwNCglhY3Rpb24gPT4gc3ViIHsNCgkJ bXkgJW9wdHMgPSBAXzsNCg0KCQlmb3IgbXkgJG1lbWJlcl9pZCAoQHskb3B0 c3ttZW1iZXJ9fSkgew0KCQkJbXkgJG1lbWJlciA9IFNpZXN0YTo6TWVtYmVy LT5maW5kX29yX2NyZWF0ZSh7IGVtYWlsID0+ICRtZW1iZXJfaWQgfSkNCgkJ CSAgb3IgZGllICJhZGQtbWVtYmVyOiBDb3VsZG4ndCBjcmVhdGUgYSBtZW1i ZXIgJyRtZW1iZXJfaWQnXG4iOw0KDQoJCQlwcmludCAiTWVtYmVyICRtZW1i ZXJfaWQgYWRkZWRcbiI7DQoJCX0NCgl9DQoJfTsNCg0KCSRDT01NQU5EU3sn ZGVzY3JpYmUtbWVtYmVyJ30gPSB7DQoJcmVxdWlyZWQgPT4gW3F3LyBtZW1i ZXI9cyAvXSwNCglhY3Rpb24gPT4gc3ViIHsNCgkJbXkgJW9wdHMgPSBAXzsN Cg0KCQlteSAkbWVtYmVyID0gU2llc3RhOjpNZW1iZXItPmxvYWQoJG9wdHN7 bWVtYmVyfSkgDQoJCSAgb3IgZGllICJkZXNjcmliZS1tZW1iZXI6ICRvcHRz e21lbWJlcn0gaXMgbm90IGEgdmFsaWQgbWVtYmVyIGlkXG4iOw0KDQoJCWZv cmVhY2ggbXkgJGtleSAoJG1lbWJlci0+Y29sdW1ucykgew0KCQkJbXkgJHZh bHVlID0gJG1lbWJlci0+JGtleSgpIHx8ICcnOw0KCQkJcHJpbnQgIiRrZXkg PSAkdmFsdWVcbiI7DQoJCX0NCg0KCQlwcmludCAiU3Vic2NyaWJlZCB0byA6 ICIsIChqb2luICIsICIsIG1hcCB7ICRfLT5uYW1lIH0gJG1lbWJlci0+bGlz dHMpLCAiXG4iOw0KCX0NCgl9Ow0KDQoJJENPTU1BTkRTeydtb2RpZnktbWVt YmVyJ30gPSB7DQoJcmVxdWlyZWQgPT4gW3F3LyBtZW1iZXI9cyBwcm9wZXJ0 eT1zJSAvXSwNCglhY3Rpb24gPT4gc3ViIHsNCgkJbXkgJW9wdHMgPSBAXzsN Cg0KCQlteSAkbWVtYmVyID0gU2llc3RhOjpNZW1iZXItPmxvYWQoICRvcHRz e21lbWJlcn0gKQ0KCQkgIG9yIGRpZSAibW9kaWZ5LW1lbWJlcjogTm90IGEg dmFsaWQgbWVtYmVyIGlkXG4iOw0KDQoJCXdoaWxlIChteSAoJGtleSwgJHZh bHVlKSA9IGVhY2ggJXskb3B0c3twcm9wZXJ0eX19KSB7DQoJCQlteSAlZmll bGRzID0gbWFwIHsgJF8gPT4gMSB9ICRtZW1iZXItPmNvbHVtbnM7DQoJCQlk aWUgIm1vZGlmeS1tZW1iZXI6ICcka2V5JyBpcyBub3QgYSB2YWxpZCBwcm9w ZXJ0eSAtIHZhbGlkIHByb3BlcnRpZXMgYXJlXG4iLA0KCQkJCShqb2luICJc biIsJG1lbWJlci0+Y29sdW1ucyksIlxuIiB1bmxlc3MgJGZpZWxkc3ska2V5 fTsNCg0KCQkJJG1lbWJlci0+JGtleSgkdmFsdWUpOw0KCQkJcHJpbnQgIlBy b3BlcnR5ICcka2V5JyBzZXQgdG8gJyR2YWx1ZScgZm9yIHRoZSBtZW1iZXIg JG9wdHN7bWVtYmVyfVxuIjsNCgkJfQ0KCX0NCgl9Ow0KDQoJJENPTU1BTkRT eydkZWxldGUtbWVtYmVyJ30gPSB7DQoJcmVxdWlyZWQgPT4gW3F3LyBtZW1i ZXI9c0AgL10sDQoJYWN0aW9uID0+IHN1YiB7DQoJCW15ICVvcHRzID0gQF87 DQoNCgkJZm9yZWFjaCBteSAkbWVtYmVyX2lkIChAeyRvcHRze21lbWJlcn19 KSB7DQoJCQlteSAkbWVtYmVyID0gU2llc3RhOjpNZW1iZXItPmxvYWQoJG1l bWJlcl9pZCkNCgkJCSAgb3IgZGllICJkZWxldGUtbWVtYmVyOiAkbWVtYmVy X2lkIGlzIG5vdCBhIHZhbGlkIG1lbWJlciBpZFxuIjsNCgkJCQ0KCQkJZm9y ZWFjaCBteSAkbGlzdCAoIFNpZXN0YTo6TGlzdC0+cmV0cmlldmVfYWxsICkg ew0KCQkJCSRsaXN0LT5yZW1vdmVfbWVtYmVyKCRtZW1iZXIpOw0KCQkJfQ0K DQoJCQkkbWVtYmVyLT5kZWxldGU7DQoNCgkJCXByaW50ICJNZW1iZXIgJyRt ZW1iZXJfaWQnIGRlbGV0ZWRcbiI7DQoJCX0NCgl9DQoJfTsNCg0KCSMjIyMj DQoJIw0KCSMgUGx1Z2luIHN0dWZmDQoJIw0KCSMjIyMjDQoNCg0KCSRDT01N QU5EU3snc2hvdy1wbHVnaW5zJ30gPSB7DQoJb3B0aW9uYWwgPT4gW3F3LyBs aXN0PXNAIC9dLA0KCWFjdGlvbiA9PiBzdWIgew0KCQlteSAlb3B0cyA9IEBf Ow0KDQoJCWlmICghZGVmaW5lZCAkb3B0c3tsaXN0fSkgew0KCQkJcHJpbnQg IlRoaXMgc3lzdGVtIGN1cnJlbnRseSBoYXMgdGhlc2UgcGx1Z2lucyBpbnN0 YWxsZWQ6IFxuXG4iOw0KCQkJZm9yZWFjaCBteSAkbmFtZSAoIFNpZXN0YS0+ YXZhaWxhYmxlX3BsdWdpbnMgKSB7DQoJCQkJbXkgJHAgPSAiU2llc3RhOjpQ bHVnaW46OiRuYW1lIjsNCgkJCQkkcC0+cmVxdWlyZTsNCgkJCQlwcmludGYg IiVzXG4gLVxuICVzXG5cbiIsICRuYW1lLCAkcC0+ZGVzY3JpcHRpb247DQoJ CQl9DQoJCX0gZWxzZSB7DQoJCQlmb3IgKEB7JG9wdHN7bGlzdH19KSB7DQoJ CQkJbXkgJGxpc3QgPSBTaWVzdGE6Okxpc3QtPmxvYWQoJF8pDQoJCQkJICBv ciBkaWUgInNob3ctcGx1Z2luczogTm8gbGlzdCAnJF8nIVxuIjsNCgkJCQlw cmludCAiUGx1Z2lucyBmb3IgJF86XG4iOw0KCQkJCWZvcmVhY2ggbXkgJHBs dWdpbiAoJGxpc3QtPnBsdWdpbnMoJ3Bvc3QnKSkgew0KCQkJCQlwcmludCAk cGx1Z2luLT5uYW1lLCAiXG4iOw0KCQkJCX0NCgkJCX0NCgkJfQ0KCX0NCgl9 Ow0KDQoJJENPTU1BTkRTeydkZXNjcmliZS1wbHVnaW4nfSA9IHsNCglyZXF1 aXJlZCA9PiBbcXcvIHBsdWdpbj1zIC9dLA0KCW9wdGlvbmFsID0+IFtxdy8g bGlzdD1zIG1lbWJlcj1zIC9dLA0KCWRlcGVuZGVuY2llcyA9PiB7IG1lbWJl ciA9PiAnbGlzdCcgfSwNCglhY3Rpb24gPT4gc3ViIHsNCgkJbXkgJW9wdHMg PSBAXzsNCg0KCQlpZiAoZGVmaW5lZCAkb3B0c3tsaXN0fSkgew0KCQkJX3Bs dWdpbl9saXN0X29wdGlvbnMoJW9wdHMpOw0KCQl9IGVsc2Ugew0KCQkJX3Bs dWdpbl9vcHRpb25zKCRvcHRze3BsdWdpbn0pOw0KCQl9DQoJfQ0KCX07DQoN CgkkQ09NTUFORFN7J21vZGlmeS1wbHVnaW4nfSA9IHsNCglyZXF1aXJlZCA9 PiBbcXcvIHBsdWdpbj1zIGxpc3Q9cyAvXSwNCglvcHRpb25hbCA9PiBbcXcv IG1lbWJlcj1zIHByZWZlcmVuY2U9cyUgL10sDQoJYWN0aW9uID0+IHN1YiB7 DQoJCW15ICVvcHRzID0gQF87DQoNCgkJbXkgJGxpc3QgPSBTaWVzdGE6Okxp c3QtPmxvYWQoJG9wdHN7bGlzdH0pDQoJCSAgb3IgZGllICJtb2RpZnktcGx1 Z2luOiBOb3QgYSB2YWxpZCBsaXN0ICRvcHRze2xpc3R9XG4iOw0KDQoJCW15 ICVwbHVnaW5zID0gbWFwIHsgJF8tPm5hbWUgPT4gJF8gfSAkbGlzdC0+cGx1 Z2luczsNCgkJbXkgJHBsdWdpbiAgPSAkcGx1Z2luc3skb3B0c3twbHVnaW59 fQ0KCQkgIG9yIGRpZSAibW9kaWZ5LXBsdWdpbjogTm90IGEgdmFsaWQgcGx1 Z2luICRvcHRze3BsdWdpbn1cbiI7DQoNCgkJbXkgJG1lbWJlcjsNCgkJaWYg KGRlZmluZWQgJG9wdHN7bWVtYmVyfSkgew0KCQkJJG1lbWJlciA9IFNpZXN0 YTo6TWVtYmVyLT5sb2FkKCRvcHRze21lbWJlcn0pDQoJCQkgIG9yIGRpZSAi bW9kaWZ5LXBsdWdpbjogTm8gc3VjaCBtZW1iZXIgJG9wdHN7bWVtYmVyfVxu IjsNCg0KCQkJZGllICJtb2RpZnktcGx1Z2luOiAkb3B0c3ttZW1iZXJ9IGlz IG5vdCBzdWJzY3JpYmVkIHRvICRvcHRze2xpc3R9XG4iDQoJCQkgIHVubGVz cyAkbGlzdC0+aXNfbWVtYmVyKCRtZW1iZXIpOw0KDQoJCQkkcGx1Z2luLT5t ZW1iZXIoJG1lbWJlcik7DQoJCX0NCg0KCQl3aGlsZSAobXkgKCRrZXksICR2 YWx1ZSkgPSBlYWNoICV7JG9wdHN7cHJlZmVyZW5jZX19KSB7DQoJCQkkcGx1 Z2luLT5wcmVmKCRrZXksICR2YWx1ZSk7DQoJCX0NCg0KCQlteSAkb3B0aW9u cyA9ICRwbHVnaW4tPm9wdGlvbnM7DQoNCgkJaWYgKGRlZmluZWQgJG1lbWJl cikgew0KCQkJcHJpbnRmICJQZXJzb25hbCBwcmVmZXJlbmNlcyBmb3IgbWVt YmVyICVzIG9uIGxpc3QgJXNcbiIsDQoJCQkgICRvcHRze21lbWJlcn0sICRv cHRze2xpc3R9Ow0KCQl9IGVsc2Ugew0KCQkJcHJpbnRmICJQcmVmZXJlbmNl cyBmb3IgbGlzdCAlc1xuIiwgJG9wdHN7bGlzdH07DQoJCX0NCg0KCQlmb3Jl YWNoIG15ICRvcHRpb24gKCBrZXlzICV7JG9wdGlvbnN9ICkgew0KCQkJcHJp bnQgIiAtICIsICRvcHRpb24sICIgOiAiLCAkcGx1Z2luLT5wcmVmKCRvcHRp b24pLCAiXG4iOw0KCQl9DQoJfQ0KCX07DQoNCglhcmd2RmlsZTsNCg0KfQ0K DQpzdWIgX3BsdWdpbl9vcHRpb25zIHsNCglteSAkcGx1Z2luX2lkID0gc2hp ZnQ7DQoNCiAgICBteSAlcGx1Z2lucyA9IG1hcCB7ICRfID0+IDEgfSBTaWVz dGEtPmF2YWlsYWJsZV9wbHVnaW5zOw0KDQogICAgZGllICJkZXNjcmliZS1w bHVnaW46IE5vdCBhIHZhbGlkIHBsdWdpblxuIiB1bmxlc3MgJHBsdWdpbnN7 JHBsdWdpbl9pZH07DQoNCiAgICBteSAkY2xhc3MgPSAiU2llc3RhOjpQbHVn aW46OiRwbHVnaW5faWQiOw0KICAgICRjbGFzcy0+cmVxdWlyZTsNCg0KICAg IG15ICRvcHRpb25zID0gJGNsYXNzLT5vcHRpb25zOw0KDQogICAgcHJpbnQg IlxuXG5UaGUgcGx1Z2luICRwbHVnaW5faWQgaGFzIHRoZSBmb2xsb3dpbmcg b3B0aW9ucyA6XG4iOw0KICAgIGZvcmVhY2ggbXkgJG9wdGlvbiAoIGtleXMg JXskb3B0aW9uc30gKSB7DQogICAgICAgIHByaW50ICIgLSAiLCAkb3B0aW9u LCAiIDogIiwgJG9wdGlvbnMtPnskb3B0aW9ufS0+e2Rlc2NyaXB0aW9ufSwg IlxuIjsNCiAgICB9DQogICAgcHJpbnQgIlxuIjsNCn0NCg0Kc3ViIF9wbHVn aW5fbGlzdF9vcHRpb25zIHsNCglteSAlb3B0cyA9IEBfOw0KDQogICAgbXkg JGxpc3QgPSBTaWVzdGE6Okxpc3QtPmxvYWQoJG9wdHN7bGlzdH0pDQogICAg ICBvciBkaWUgImRlc2NyaWJlLXBsdWdpbjogTm90IGEgdmFsaWQgbGlzdCAk b3B0c3tsaXN0fVxuIjsNCg0KICAgIG15ICVwbHVnaW5zID0gbWFwIHsgJF8t Pm5hbWUgPT4gJF8gfSAkbGlzdC0+cGx1Z2luczsNCiAgICBteSAkcGx1Z2lu ICA9ICRwbHVnaW5zeyRvcHRze3BsdWdpbn19DQogICAgICBvciBkaWUgImRl c2NyaWJlLXBsdWdpbjogVGhhdCBwbHVnaW4gaXMgbm90IHVzZWQgaW4gdGhl IGxpc3QgJyRvcHRze2xpc3R9J1xuIjsNCg0KDQogICAgbXkgJG1lbWJlcjsN CiAgICBpZiAoZGVmaW5lZCAkb3B0c3ttZW1iZXJ9KSB7DQogICAgICAgICRt ZW1iZXIgPSBTaWVzdGE6Ok1lbWJlci0+bG9hZCgkb3B0c3ttZW1iZXJ9KQ0K ICAgICAgICAgIG9yIGRpZSAiZGVzY3JpYmUtcGx1Z2luOiBOb3QgYSB2YWxp ZCBtZW1iZXIgaWRcbiI7DQoNCiAgICAgICAgZGllICJkZXNjcmliZS1wbHVn aW46ICRvcHRze21lbWJlcn0gaXMgbm90IHN1YnNjcmliZWQgdG8gJG9wdHN7 bGlzdH1cbiINCiAgICAgICAgICB1bmxlc3MgJGxpc3QtPmlzX21lbWJlcigk bWVtYmVyKTsNCg0KICAgICAgICAkcGx1Z2luLT5tZW1iZXIoJG1lbWJlcik7 DQogICAgfQ0KDQogICAgbXkgJG9wdGlvbnMgPSAkcGx1Z2luLT5vcHRpb25z Ow0KDQogICAgaWYgKGRlZmluZWQgJG1lbWJlcikgew0KICAgICAgICBwcmlu dGYgIlBlcnNvbmFsIHByZWZlcmVuY2VzIGZvciBtZW1iZXIgJXMgb24gbGlz dCAlc1xuIiwgJG9wdHN7bWVtYmVyfSwgJG9wdHN7bGlzdH07DQogICAgfQ0K ICAgIGVsc2Ugew0KICAgICAgICBwcmludGYgIlByZWZlcmVuY2VzIGZvciBs aXN0ICVzXG4iLCAkb3B0c3tsaXN0fTsNCiAgICB9DQoNCiAgICBmb3JlYWNo IG15ICRvcHRpb24gKCBrZXlzICV7JG9wdGlvbnN9ICkgew0KICAgICAgICBw cmludCAiIC0gIiwgJG9wdGlvbiwgIiA6ICIsICRwbHVnaW4tPnByZWYoJG9w dGlvbiksICJcbiI7DQogICAgfQ0KICAgICAgICBwcmludCAkcGx1Z2luLT5u YW1lLCIgaXMgc2V0IHBlcnNvbmFsXG4iIGlmICRwbHVnaW4tPnBlcnNvbmFs KCk7DQp9DQoNCiMjIyMjDQojDQojIERpc3BhdGNoIHN0dWZmDQojDQojIyMj Iw0KDQoNCnVzZSBHZXRvcHQ6OkF1dG8gKA0KCW1hcCB7IG15ICRuYW1lID0g JF87IFsgJG5hbWUsICcnLCBzdWIgeyBydW4oJG5hbWUpIH0gXSB9IA0KCQlr ZXlzICVDT01NQU5EUw0KKTsNCg0KQkVHSU57DQoJbm8gd2FybmluZ3M7DQoJ KkdldG9wdDo6QXV0bzo6aGVscG1lID0gXCZoZWxwbWU7DQoJKkdldG9wdDo6 QXV0bzo6dW5yZWNvZ25pemVkID0gXCZ1bnJlY29nbml6ZWQ7DQp9DQoNCnVz ZSBTaWVzdGE6OkNvbmZpZzsNCkJFR0lOew0KCW15ICRkYXRhYmFzZTsNCglt eSAkY29uZmlnOw0KDQoJR2V0b3B0OjpMb25nOjpDb25maWd1cmUgKCJwYXNz X3Rocm91Z2giKTsNCglHZXRPcHRpb25zKCdkYXRhYmFzZT1zJyA9PiBcJGRh dGFiYXNlLA0KICAgICAgICAgICAgICAgJ2NvbmZpZy1maWxlfGY9cycgPT4g XCRjb25maWcpIG9yIGhlbHBtZSgwKTsNCg0KCUBTaWVzdGE6OkNvbmZpZzo6 U1RPUkFHRSA9IHNwbGl0IC8gLywgJGRhdGFiYXNlIGlmIGRlZmluZWQgJGRh dGFiYXNlOw0KCSRTaWVzdGE6OkNvbmZpZzo6Q09ORklHX0ZJTEUgPSAkY29u ZmlnIGlmIGRlZmluZWQgJGNvbmZpZzsNCn0NCg0Kc3ViIHJ1biB7DQoJbXkg JGNvbW1hbmQgPSBzaGlmdDsNCgkNCglpZiAoJGNvbW1hbmQgbmUgImNyZWF0 ZS1kYXRhYmFzZSIpIHsNCgkJZXZhbCB7DQoJCQlyZXF1aXJlIFNpZXN0YTsN CgkJCXJlcXVpcmUgU2llc3RhOjpMaXN0Ow0KCQl9Ow0KCQlpZiAoJEApIHsN CgkJCXByaW50ICJFcnJvciBpbml0aWFsaXppbmcgU2llc3RhOlxuJEBcbiI7 DQoJCQlwcmludCAiXG5cblRyeSAnbmFjaG8gY3JlYXRlLWRhdGFiYXNlJyBp ZiB5b3UgYXJlIGluc3RhbGxpbmcgc2llc3RhIGZvciB0aGUgZmlyc3QgdGlt ZVxuIjsNCgkJCWV4aXQ7DQoJCX0NCgl9DQoNCglteSAlaCA9ICgpOw0KCW15 IEBvcHRpb25zID0gZ3JlcCB7IGRlZmluZWQgfSAoDQoJCUB7JENPTU1BTkRT eyRjb21tYW5kfXtyZXF1aXJlZH19LCANCgkJQHskQ09NTUFORFN7JGNvbW1h bmR9e29wdGlvbmFsfX0NCgkpOw0KCQ0KCUdldG9wdDo6TG9uZzo6Q29uZmln dXJlICgicmVxdWlyZV9vcmRlciIpOw0KCUdldE9wdGlvbnMoXCVoLCBAb3B0 aW9ucykgb3IgaGVscG1lKDApOw0KDQoJbXkgQG1pc3Npbmc7DQoJZm9yIG15 ICRyZXF1aXJlZCAoQHskQ09NTUFORFN7JGNvbW1hbmR9e3JlcXVpcmVkfX0p IHsNCgkJbXkgJHJlcXVpcmVkMiA9ICRyZXF1aXJlZDsNCgkJJHJlcXVpcmVk MiA9fiBzL1teYS16QS1aXS4qLy87DQoJCXB1c2ggQG1pc3NpbmcsICRyZXF1 aXJlZDIgaWYgIWRlZmluZWQgJGh7JHJlcXVpcmVkMn07DQoJfQ0KCXdoaWxl IChteSAoJGtleSwgJHZhbHVlKSA9IGVhY2ggJXskQ09NTUFORFN7JGNvbW1h bmR9e2RlcGVuZGVuY2llc319ICkgew0KCQlwdXNoIEBtaXNzaW5nLCAkdmFs dWUgaWYgZGVmaW5lZCAkaHska2V5fSBhbmQgIWRlZmluZWQgJGh7JHZhbHVl fTsNCgl9DQoJaWYgKHNjYWxhciBAbWlzc2luZykgew0KCQlsb2NhbCAkIiA9 ICIsICI7DQoJCXByaW50ICJUaGUgZm9sbG93aW5nIG9wdGlvbnMgdG8gdGhl IGNvbW1hbmQgJGNvbW1hbmQgYXJlIG1pc3Npbmc6XG4iOw0KCQlwcmludCAi ICAgICIgLiAiQG1pc3NpbmdcbiI7DQoJCWV4aXQoMik7DQoJfQ0KDQoJZXZh bCB7ICRDT01NQU5EU3skY29tbWFuZH17YWN0aW9ufS0+KCVoKTsgfTsNCglp ZiAoJEApIHsNCgkJcHJpbnQgJEA7DQoJCXJldHVybiAwOw0KCX0NCg0KCXBy aW50ICIjIyMjIyMjIyMjIyMjIyMjI1xuIjsNCglwcmludCAiIyMgZW5kIG9m IGNvbW1hbmRcbiI7DQoJcHJpbnQgIiMjIyMjIyMjIyMjIyMjIyMjXG4iOw0K DQoJcmV0dXJuIDEgaWYgc2NhbGFyIEBBUkdWICE9IDA7DQp9DQoNCnN1YiB1 bnJlY29nbml6ZWQgew0KICAgIG15ICRjb21tYW5kID0gc2hpZnQ7DQoNCiAg ICBwcmludCBTVERFUlIgIlVucmVjb2duaXNlZCBjb21tYW5kICRjb21tYW5k XG4iOw0KICAgIGhlbHBtZSgwKTsNCn0NCg0KIyMjIyMNCiMNCiMgSGVscCBz dHVmZg0KIw0KIyMjIyMNCg0KDQpzdWIgaGVscG1lIHsNCglteSAkdmVyYm9z aXR5ID0gc2hpZnQ7DQoJDQoJJHZlcmJvc2l0eSA9IDEgaWYgIWRlZmluZWQg JHZlcmJvc2l0eTsNCg0KCXBvZDJ1c2FnZSgtdmVyYm9zZSA9PiAkdmVyYm9z aXR5KTsNCn0NCg0Kc3ViIGRlZmF1bHQgew0KCWhlbHBtZSgwKTsNCn0NCg0K PWhlYWQxIFNFRSBBTFNPDQoNCkw8U2llc3RhPiwgTDxTaWVzdGE6OlVzZXJH dWlkZT4NCg0KPWhlYWQxIEFVVEhPUg0KDQpXcml0dGVuIGJ5IFNpbW9uIFdp c3RvbiA8c2ltb25AdGhlZ2VzdGFsdC5vcmc+DQoNCk5ldyBkaXNwYXRjaCBj b2RlIHdyaXR0ZW4gYnkgSm9keSBCZWxrYSA8YmVsa2FqbS1jcGFuQGFhcmR2 YXJrLXNzLmNvbT4NCg0KPWhlYWQxIENPUFlSSUdIVA0KDQooQylvcHlyaWdo dCAyMDAyIHRoZSBTaWVzdGEgZGV2IHRlYW0uDQoNCkRpc3RyaWJ1dGVkIHVu ZGVyIHRoZSBzYW1lIHRlcm1zIGFzIFBlcmwgaXRzZWxmLg0KDQo9Y3V0DQoN Cg== ---1463760359-316734986-1059752961=:5155 Content-Type: TEXT/PLAIN; CHARSET=US-ASCII; NAME="Auto.pm" Content-Transfer-Encoding: BASE64 Content-ID: <Pine.LNX.4.44.0308011649211.5155@xxxx.xxxx.xxxxxxxxxxx.xxx> Content-Description: modified Getopt::Auto Content-Disposition: ATTACHMENT; FILENAME="Auto.pm" cGFja2FnZSBHZXRvcHQ6OkF1dG87DQoNCnVzZSA1LjAwNjsNCnVzZSBzdHJp Y3Q7DQp1c2Ugd2FybmluZ3M7DQp1c2UgQ2FycDsNCm91ciAkVkVSU0lPTiA9 ICcxLjAwJzsNCg0Kb3VyICRkb19pdDsNCm91ciBAc3BlYzsNCg0Kc3ViIGlt cG9ydCB7DQogICAgbXkgJGNsYXNzID0gc2hpZnQ7DQoNCiAgICAjIFByb2Nl c3MgaW50byB1c2FibGUgZm9ybWF0Lg0KICAgIEBzcGVjID0gQF87DQp9DQoN Cm91ciAlb3B0aW9uczsNCm91ciAkdHlwZTsNCg0KQ0hFQ0sgew0KICAgIEBz cGVjID0gc3VwZXJhdXRvKCkNCiAgICAgIHVubGVzcyBAc3BlYzsNCg0KICAg IGZvciAoQHNwZWMpIHsNCiAgICAgICAgY3JvYWsgIk9wdGlvbiBzcGVjaWZp Y2F0aW9uICRfIHNob3VsZCBiZSBhbiBhcnJheSByZWZlcmVuY2UiDQogICAg ICAgICAgdW5sZXNzIHJlZiAkXyBlcSAiQVJSQVkiOw0KICAgICAgICBteSBA c3R1ZmYgPSBAJF87DQogICAgICAgIG15ICRmbGFnICA9IHNoaWZ0IEBzdHVm ZjsNCiAgICAgICAgaWYgKGRlZmluZWQgJHR5cGUpIHsNCiAgICAgICAgICAg IGNyb2FrDQogICAgICAgICAgICAgICJPcHRpb24gaW5jb25zaXN0ZW5jeTog ZXhwZWN0ZWQgJHR5cGUgb3B0aW9ucywgZm91bmQgJyRmbGFnJyINCiAgICAg ICAgICAgICAgdW5sZXNzIF90eXBlKCRmbGFnKSBlcSAkdHlwZTsNCiAgICAg ICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgJHR5cGUgPSBfdHlwZSgkZmxh Zyk7DQogICAgICAgICAgICBjcm9haw0KIk9wdGlvbiBzdHlsZSB1bmtub3du OiBmb3VuZCAnJGZsYWcnLCBuZWl0aGVyIGxvbmcsIHNob3J0IG5vciBiYXJl Ig0KICAgICAgICAgICAgICBpZiAkdHlwZSBlcSAidW5rbm93biI7DQogICAg ICAgIH0NCg0KICAgICAgICAkb3B0aW9uc3skZmxhZ317aGVscH0gPSBzaGlm dCBAc3R1ZmY7DQoNCiAgICAgICAgaWYgKGRlZmluZWQgJHN0dWZmWzBdIGFu ZCByZWYgJHN0dWZmWzBdIGVxICJDT0RFIikgew0KICAgICAgICAgICAgJG9w dGlvbnN7JGZsYWd9e2NvZGV9ID0gc2hpZnQgQHN0dWZmOw0KICAgICAgICAg IH0gZWxzZSB7DQogICAgICAgICAgICAkb3B0aW9uc3skZmxhZ317bG9uZ2hl bHB9ID0gc2hpZnQgQHN0dWZmIGlmIGRlZmluZWQgJHN0dWZmWzBdOw0KICAg ICAgICAgICAgJG9wdGlvbnN7JGZsYWd9e2NvZGV9ICAgICA9IHNoaWZ0IEBz dHVmZg0KICAgICAgICAgICAgICBpZiBkZWZpbmVkICRzdHVmZlswXSBhbmQg cmVmICRzdHVmZlswXSBlcSAiQ09ERSI7DQogICAgICAgIH0NCg0KICAgICAg ICBpZiAoIWV4aXN0cyAkb3B0aW9uc3skZmxhZ317Y29kZX0pIHsNCiAgICAg ICAgICAgIG15ICRzdWIgPSAkZmxhZzsNCiAgICAgICAgICAgICRzdWIgPX4g cy9eLSsvLzsNCiAgICAgICAgICAgICRzdWIgPX4gcy8tL18vZzsNCiAgICAg ICAgICAgIG5vIHN0cmljdCAncmVmcyc7DQogICAgICAgICAgICAkb3B0aW9u c3skZmxhZ317Y29kZX0gPSAqeyJtYWluOjokc3ViIn17Q09ERX07DQogICAg ICAgIH0NCiAgICB9DQp9DQoNCnN1YiBfdHlwZSB7DQogICAgbXkgJG9wdGlv biA9IHNoaWZ0Ow0KICAgICRvcHRpb24gPX4gL14tLS8gYW5kIHJldHVybiAi bG9uZyI7DQogICAgJG9wdGlvbiA9fiAvXi0vIGFuZCByZXR1cm4gInNob3J0 IjsNCiAgICAkb3B0aW9uID1+IC9eXHcvIGFuZCByZXR1cm4gImJhcmUiOw0K ICAgIHJldHVybiAidW5rbm93biI7DQp9DQoNCnVzZSBGaW5kQmluOw0KDQpz dWIgc3VwZXJhdXRvIHsNCiAgICBteSAkcG9kICA9IG5ldyBHZXRvcHQ6OkF1 dG86OlBvZEV4dHJhY3Q7DQogICAgbXkgJHNlbGYgPSAtciAkMCA/ICQwIDog LXIgJEZpbmRCaW46OkJpbiAuICIvIiAuICQwID8gLXIgJEZpbmRCaW46OkJp bg0KICAgICAgLiAiLyIgLiAkMCA6DQogICAgICBjcm9hayAiQ291bGRuJ3Qg YXV0b21hdGljYWxseSBwYXJzZSB5b3VyIFBPRCAtICQwIG5vdCByZWFkYWJs ZSEiOw0KICAgICRwb2QtPnBhcnNlX2Zyb21fZmlsZSgkc2VsZiwgJy9kZXYv bnVsbCcpOw0KICAgIG15IEBzcGVjOw0KDQogICAgd2hpbGUgKG15ICgkaywg JHYpID0gZWFjaCAleyAkcG9kLT57ZnVuY3N9IH0pIHsNCiAgICAgICAgJGsg PX4gcy9fLy0vZzsNCiAgICAgICAgcHVzaCBAc3BlYywNCiAgICAgICAgICBb ICItLSRrIiwgJHYtPntzaG9ydGhlbHB9LCAkdi0+e2xvbmdoZWxwfSwgJHYt Pntjb2RlfSBdOw0KICAgIH0NCiAgICByZXR1cm4gQHNwZWM7DQp9DQoNCnN1 YiB2ZXJzaW9uIHsNCiAgICBwcmludCAiVGhpcyBpcyAkMCwgdmVyc2lvbiAk bWFpbjo6VkVSU0lPTlxuXG4iOw0KfQ0KDQpzdWIgaGVscG1lIHsNCiAgICB2 ZXJzaW9uKCk7DQogICAgbXkgJHNpZyA9ICIiOw0KICAgIGlmICgkdHlwZSBl cSAibG9uZyIpICAgICB7ICRzaWcgPSAiLS0iIH0NCiAgICBlbHNpZiAoJHR5 cGUgZXEgInNob3J0IikgeyAkc2lnID0gIi0iIH0NCg0KICAgICMgQXJlIHdl IGJlaW5nIGFza2VkIGZvciAqc3BlY2lmaWMqIGhlbHA/DQogICAgaWYgKG15 IEBoZWxwID0gZ3JlcHsgZXhpc3RzICRvcHRpb25zeyRffSB9IEBBUkdWKSB7 DQogICAgICAgIG15ICR3aGF0ID0gJGhlbHBbMF07DQogICAgICAgIGlmIChl eGlzdHMgJG9wdGlvbnN7ICRoZWxwWzBdIH17bG9uZ2hlbHB9KSB7DQogICAg ICAgICAgICBwcmludCAiJDAgJHdoYXQgLSAkb3B0aW9uc3skd2hhdH17aGVs cH1cblxuIjsNCiAgICAgICAgICAgIHByaW50ICRvcHRpb25zeyR3aGF0fXts b25naGVscH0gLiAiXG4iOw0KICAgICAgICAgIH0gZWxzZSB7DQogICAgICAg ICAgICBwcmludCAiTm8gaGVscCBhdmFpbGFibGUgZm9yICR3aGF0XG4iOw0K ICAgICAgICB9DQogICAgICB9IGVsc2Ugew0KICAgICAgICBteSAkYW5kX3Ro ZXJlX3NfbW9yZSA9IDA7DQogICAgICAgIHByaW50IDw8RU9GOw0KJDAgJHtz aWd9aGVscCAtIFRoaXMgdGV4dA0KJDAgJHtzaWd9dmVyc2lvbiAtIFByaW50 cyB0aGUgdmVyc2lvbiBudW1iZXINCg0KRU9GDQoNCiAgICAgICAgZm9yIChr ZXlzICVvcHRpb25zKSB7DQogICAgICAgICAgICBwcmludCAiJDAgJF8gLSAk b3B0aW9uc3skX317aGVscH0iOw0KICAgICAgICAgICAgJGFuZF90aGVyZV9z X21vcmUrKywgKHByaW50ICJbKl0iKQ0KICAgICAgICAgICAgICBpZiBkZWZp bmVkICRvcHRpb25zeyRffXtsb25naGVscH0NCiAgICAgICAgICAgICAgYW5k ICRvcHRpb25zeyRffXtsb25naGVscH0gPX4gL1xTLzsNCiAgICAgICAgICAg IHByaW50ICJcbiI7DQogICAgICAgIH0NCg0KICAgICAgICBpZiAoJGFuZF90 aGVyZV9zX21vcmUpIHsNCiAgICAgICAgICAgIHByaW50IDw8RU9GDQoNCk1v cmUgaGVscCBpcyBhdmFpbGFibGUgb24gdGhlIHRvcGljcyBtYXJrZWQgd2l0 aCBbKl0NClRyeSAkMCAke3NpZ31oZWxwICR7c2lnfWZvbw0KDQpFT0YNCiAg ICAgICAgfQ0KICAgIH0NCiAgICBleGl0IDA7DQp9DQoNCkVORCB7DQogICAg aWYgKGdyZXAgeyAvXi17MCwyfWgoZWxwfCkkLyB9IEBBUkdWKSB7IGhlbHBt ZSgpIH0NCiAgICBpZiAoZ3JlcCB7IC9eLS12ZXJzaW9ufC1WJC8gIH0gQEFS R1YpIHsgdmVyc2lvbigpOyBleGl0IDA7IH0NCiAgICB3aGlsZSAobXkgJGZv byA9IHNoaWZ0IEBBUkdWKSB7DQogICAgICAgIGlmIChleGlzdHMgJG9wdGlv bnN7JGZvb30pIHsNCiAgICAgICAgICAgIGV4aXQgaWYgISRvcHRpb25zeyRm b299e2NvZGV9LT4oQEFSR1YpOw0KICAgICAgICB9IGVsc2Ugew0KICAgICAg ICAgICAgaWYgKF90eXBlKCRmb28pIG5lICR0eXBlIGFuZCBfdHlwZSgkZm9v KSBuZSAiYmFyZSIpIHsNCiAgICAgICAgICAgICAgICBpZiAoX3R5cGUoJGZv bykgZXEgInNob3J0Iikgew0KICAgICAgICAgICAgICAgICAgICAkZm9vID1+ IHMvLS8vOw0KICAgICAgICAgICAgICAgICAgICAkbWFpbjo6b3B0aW9uc3sk X30rKyANCiAgICAgICAgICAgICAgICAgICAgZm9yIHNwbGl0IC8vLCRmb287 DQogICAgICAgICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICAgICAg ICAgJG1haW46Om9wdGlvbnN7JGZvb30rKzsNCiAgICAgICAgICAgICAgICB9 DQogICAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICAgICMgRG9u J3Qga25vdyB0aGlzLg0KICAgICAgICAgICAgICAgIHVucmVjb2duaXplZCgk Zm9vKTsNCiAgICAgICAgICAgIH0NCiAgICAgICB9DQogICB9DQogICBpZiAo ZXhpc3RzICZtYWluOjpkZWZhdWx0KSB7IG1haW46OmRlZmF1bHQoKSB9DQp9 DQoNCnN1YiB1bnJlY29nbml6ZWQgew0KICAgIG15ICRjb21tYW5kID0gc2hp ZnQ7DQoNCiAgICBwcmludCBTVERFUlIgIlVucmVjb2duaXNlZCBvcHRpb24g JGNvbW1hbmRcbiI7DQogICAgaGVscG1lKCk7DQp9DQoNCnBhY2thZ2UgR2V0 b3B0OjpBdXRvOjpQb2RFeHRyYWN0Ow0KdXNlIGJhc2UgJ1BvZDo6UGFyc2Vy JzsNCg0Kc3ViIGNvbW1hbmQgew0KICAgIG15ICRzZWxmID0gc2hpZnQ7DQog ICAgbXkgKCRjb21tYW5kLCAkdGV4dCwgJGxpbmVfbnVtKSA9IEBfOw0KICAg IGlmICgkY29tbWFuZCBlcSAnaXRlbScgfHwgJGNvbW1hbmQgPX4gL15oZWFk KD86MnwzfDQpLykgew0KICAgICAgICBubyBzdHJpY3QgJ3JlZnMnOw0KDQog ICAgICAgIGlmICgvQzwoW14+XSspPiAtICguKikvIG9yIC8oXHcrKSAtICgu KikvIGFuZCBleGlzdHMgJnsibWFpbjo6JDEifSkNCiAgICAgICAgew0KICAg ICAgICAgICAgJHNlbGYtPntmdW5jc317JDF9ID0gew0KICAgICAgICAgICAg ICAgIHNob3J0aGVscCA9PiAkMiwNCiAgICAgICAgICAgICAgICAgICAgIGNv ZGUgPT4gKnsibWFpbjo6JDEifXtDT0RFfQ0KICAgICAgICAgICAgfTsNCiAg ICAgICAgICAgICRzZWxmLT57Y29weWluZ30gPSAxOw0KICAgICAgICAgICAg JHNlbGYtPntsYXRlc3R9ICA9ICQxOw0KICAgICAgICB9DQogICAgfQ0KfQ0K DQpzdWIgdmVyYmF0aW0gew0KICAgIG15ICgkc2VsZiwgJHBhcmFncmFwaCwg JGxpbmVfbnVtKSA9IEBfOw0KICAgICRzZWxmLT57ZnVuY3N9eyAkc2VsZi0+ e2xhdGVzdH0gfXtsb25naGVscH0gLj0gJHBhcmFncmFwaA0KICAgICAgaWYg JHNlbGYtPntjb3B5aW5nfTsNCn0NCg0Kc3ViIHRleHRibG9jayB7DQogICAg bXkgKCRzZWxmLCAkcGFyYWdyYXBoLCAkbGluZV9udW0pID0gQF87DQogICAg JHNlbGYtPntmdW5jc317ICRzZWxmLT57bGF0ZXN0fSB9e2xvbmdoZWxwfSAu PQ0KICAgICAgJHNlbGYtPmludGVycG9sYXRlKCRwYXJhZ3JhcGgsICRsaW5l X251bSkNCiAgICAgIGlmICRzZWxmLT57Y29weWluZ307DQp9DQoNCiMgUHJl bG9hZGVkIG1ldGhvZHMgZ28gaGVyZS4NCg0KMTsNCl9fRU5EX18NCiMgQmVs b3cgaXMgc3R1YiBkb2N1bWVudGF0aW9uIGZvciB5b3VyIG1vZHVsZS4gWW91 IGJldHRlciBlZGl0IGl0IQ0KDQo9aGVhZDEgTkFNRQ0KDQpHZXRvcHQ6OkF1 dG8gLSBGcmFtZXdvcmsgZm9yIGNvbW1hbmQtbGluZSBhcHBsaWNhdGlvbnMN Cg0KPWhlYWQxIFNZTk9QU0lTDQoNCk5vdCB2ZXJ5IG1hZ2ljYWw6DQoNCiAg dXNlIEdldG9wdDo6QXV0byANCiAgICAoDQogICAgICAgIFsgIi0td2liYmxl IiwgIldpYmJsZSB0byBzdGFuZGFyZCBvdXRwdXQiIF0sDQogICAgICAgIFsg Ii0td29iYmxlIiwgIldvYmJsZSB0byBzdGFuZGFyZCBvdXRwdXQiLCBcJlNv bWV0aGluZzo6V29iYmxlIF0NCiAgICAgICAgWyAiLS13dWJibGUiLCAiV3Vi YmxlIHRvIHN0YW5kYXJkIG91dHB1dCIsDQogICJXZSdyZSBub3QgZW50aXJl bHkgc3VyZSB3aGF0IGEgd3ViYmxlIGlzLCBidXQgdGhpcyBvcHRpb24gZG9l cyBpdC4iLA0KICBcJlNvbWV0aGluZzo6V3ViYmxlIF0NCiAgICApOw0KICBv dXIgJFZFUlNJT04gPSAiMS4wIjsNCg0KTm93IEM8eW91cnByb2dyYW0gLS13 aWJibGUgZm9vPiB3aWxsIGNhbGwgQzx3aWJibGUoImZvbyIpPi4NCg0KUHJl dHR5IG1hZ2ljYWw6DQoNCiAgICB1c2UgR2V0b3B0OjpBdXRvOyAjIFdlJ2xs IHdvcmsgaXQgb3V0IGZyb20gdGhlIFBPRC4NCiAgICANCj1oZWFkMSBERVND UklQVElPTg0KDQpVbml4IGNvbW1hbmQgbGluZSBhcHBsaWNhdGlvbnMsIHJh dGhlciB0aGFuIHNpbXBsZSBmaWx0ZXJzLCBhcmUgcHJldHR5DQp1bnBsZWFz YW50IHRvIHdyaXRlOyBhcyB3ZWxsIGFzIGFjdHVhbGx5IHdyaXRpbmcgdGhl IGZ1bmN0aW9uYWxpdHksDQp0aGVyZSdzIHRoZSBib3JpbmcgcGFyc2luZyBv ZiB0aGUgY29tbWFuZCBsaW5lIGFyZ3VtZW50cyBhbmQgc28gb24uIEV2ZW4N CndpdGggQzxHZXRvcHQ6Okxvbmc+IG9yIGVxdWl2YWxlbnQsIHlvdSBzdGls bCBoYXZlIHRvIGRpc3BhdGNoIHRoZQ0KYXBwcm9wcmlhdGUgY29tbWFuZHMg dG8gdGhlIHJpZ2h0IHN1YnJvdXRpbmVzLCB3cml0ZSBhIEM8LS1oZWxwPiBh bmQNCkM8LS12ZXJzaW9uPiBoYW5kbGVyLCBhbmQgc28gb24uIFRoaXMgbW9k dWxlIGFic3RyYWN0cyBvdXQgdGhhdCBjb2RlLA0KbGVhdmluZyB5b3UgZnJl ZSBqdXN0IHRvIGNvbmNlbnRyYXRlIG9uIHRoZSBmdW5jdGlvbmFsIHBhcnQu DQoNCkluIHRoZSAibm9uLW1hZ2ljYWwiIG1vZGUsIHlvdSBwcm92aWRlIGEg bGlzdCBvZiBsaXN0cy4gRWFjaCBlbGVtZW50DQpjb250YWlucyB0aGUgbmFt ZSBvZiB0aGUgY29tbWFuZCBhbmQgYSBzaG9ydCBoZWxwIG1lc3NhZ2U7IHRo aXMgbWF5IGJlDQpmb2xsb3dlZCBieSBhIGxvbmdlciBoZWxwIG1lc3NhZ2Us IHRvIGJlIGdpdmVuIHdoZW4gc29tZXRoaW5nIGxpa2UNCkM8LS1oZWxwIGZv bz4gaXMgcGFzc2VkLCBhbmQvb3IgYSBjb2RlIHJlZmVyZW5jZSBmb3IgdGhl IGZ1bmN0aW9uIHRvIGJlDQpjYWxsZWQuIElmIHRoZXJlIGlzbid0IGEgY29k ZSByZWZlcmVuY2UgZ2l2ZW4sIHdlIGFzc3VtZSBpdCB3aWxsIGJlDQpDPCZt YWluOjpmb28+LiBJZiB5b3VyIGNvbW1hbmQgbmFtZSBjb250YWlucyBoeXBo ZW5zLCB0aGV5IHdpbGwgYmUNCmZsYXR0ZW5lZCB0byBzZW1pY29sb25zOiBD PC0tZm9vLWJhcj4gd2lsbCBjYWxsIEM8Zm9vX2Jhcj4uDQoNCkM8R2V0b3B0 OjpBdXRvPiBpcyBoYXBweSBmb3IgeW91IHRvIHVzZSAibG9uZyIgKEM8LS1n bnUtc3R5bGU+KSwNCiJzaG9ydCIgKEM8LW9sZHN0eWxlPikgb3IgZXZlbiAi YmFyZSIgY29tbWFuZCBuYW1lcywNCihDPG15cHJvZ3JhbSBlZGl0IGZvby50 eHQ+LCBDVlMtc3R5bGUpIG9uIHRoZSBjb25kaXRpb24gdGhhdCB5b3UgYXJl DQpjb25zaXN0ZW50LiBBZGRpdGlvbmFsbHksIGlmIHlvdSB1c2UgYmFyZSBv ciBsb25nIHN0eWxlIGNvbW1hbmRzLCB0aGVuDQphbnkgc2hvcnQgb3B0aW9u cyBwYXNzZWQgYmVmb3JlIGEgY29tbWFuZCBuYW1lIHdpbGwgYmUgc2VudCBp bnRvDQpDPCVtYWluOjpvcHRpb25zPi4gRm9yIGluc3RhbmNlLCBnaXZlbg0K DQogICAgdXNlIEdldG9wdDo6QXV0byAoDQogICAgICAgICJlZGl0IiA9PiAi b3BlbiBhIGZpbGUgZm9yIGVkaXRpbmciLA0KICAgICAgICAiZXhwb3J0IiA9 PiAid3JpdGUgb3V0IHRoZSBkYXRhIGFzIGFuIEFTQ0lJIGZpbGUiDQogICAg KTsNCg0KQzx5b3VycHJvZyAtdnQgZWRpdCAteCBmb28udHh0PiB3aWxsIHBl cmZvcm0gdGhlIGZvbGxvd2luZzoNCg0KICAgICRtYWluOjpvcHRpb25ze3Z9 ID0gMQ0KICAgICRtYWluOjpvcHRpb25ze3R9ID0gMQ0KICAgIGVkaXQoIi14 IiwgImZvby50eHQiKTsNCg0KPWhlYWQyIEhFTFAgQU5EIFZFUlNJT04NCg0K QzxHZXRvcHQ6OkF1dG8+IGF1dG9tYXRpY2FsbHkgcHJvdmlkZXMgQzxoZWxw PiBhbmQgQzx2ZXJzaW9uPiBjb21tYW5kcywNCmZvbGxvd2luZyB5b3VyIGNo b3NlbiBzdHlsZSAobG9uZywgc2hvcnQgb3IgYmFyZSkuDQoNCkM8aGVscD4g bGlzdHMgdGhlIGNvbW1hbmRzIGF2YWlsYWJsZSBhbmQgdGhlIHNob3J0IGhl bHAgbWVzc2FnZXMuIElmIGENCkM8aGVscCBJPGNvbW1hbmQ+PiBpcyBnaXZl biBmb3IgYSBjb21tYW5kIG5hbWUgd2l0aCBhIGxvbmcgbWVzc2FnZSwgdGhl DQpsb25nZXIgbWVzc2FnZSB3aWxsIGJlIHByaW50ZWQgaW5zdGVhZC4gDQoN CkM8dmVyc2lvbj4gZGlzcGxheXMgeW91ciBwcm9ncmFtIG5hbWUsIHBsdXMg QzwkbWFpbjo6VkVSU0lPTj4uIFRoaXMNCm1lYW5zIHlvdSBtdXN0IHNldCBD PG91ciAkVkVSU0lPTiA9ICJ3aGF0ZXZlciI+IGluIHlvdXIgYXBwbGljYXRp b24hDQoNCj1oZWFkMiBNQUdJQ0FMIE1PREUNCg0KTm93LCB0aGUgcHJlbWlz ZSBvZiBDPEdldG9wdDo6QXV0bz4gaXMgdGhhdCBpdCBmcmVlcyB5b3UgZnJv bSB0aGUNCmJvcmluZyBzdHVmZiwgcmlnaHQ/IEFuZCBpdCBjb3VsZCBiZSBh cmd1ZWQgdGhhdCB3cml0aW5nIGEgc3BlY2lmaWNhdGlvbg0KdG8gaGFuZCB0 byBDPEdldG9wdDo6QXV0bz4gaXMgaXRzZWxmIGJvcmluZyBzdHVmZi4gV2Vs bCwgbmV2ZXIgZmVhci4NCg0KSWYgeW91IGRvbid0IHdhbnQgdG8gd3JpdGUg c3VjaCBhIHNwZWNpZmljYXRpb24sIHlvdSBkb24ndCBoYXZlIHRvLg0KDQpB bGwgeW91IG5lZWQgdG8gZG8gaXMgd3JpdGUgeW91ciBjb21tYW5kcywgYW5k IHRoZW4gd3JpdGUgc29tZSBQT0QgaW4NCmZyb250IG9mIHRoZW0sIGxpa2Ug c286DQoNCiAgICB1c2UgR2V0b3B0OjpBdXRvOw0KICAgIG91ciAkVkVSU0lP TiA9ICIxLjAiOw0KDQogICAgPWhlYWQyIHdpYmJsZSAtIHdpYmJsZSB0byBz dGFuZGFyZCBvdXRwdXQNCg0KICAgIFRoaXMgY29tbWFuZCBlbWl0cyBhIHNp bXBsZSB3aWJibGUgdG8gc3RhbmRhcmQgb3V0cHV0LiBJdCB0YWtlcyBubw0K ICAgIG90aGVyIG9wdGlvbnMuDQoNCiAgICA9Y3V0DQoNCiAgICBzdWIgd2li YmxlIHsgcHJpbnQgIkFhYXJnaCFcbiIgfQ0KDQpDPEdldG9wdDo6QXV0bz4g d2lsbCBnbyB0aHJvdWdoIGFuZCBmaW5kIHRoZSBzdWJyb3V0aW5lcyB3aGlj aCBoYXZlIGENCmNvcnJlc3BvbmRpbmcgYml0IG9mIFBPRCBkb2N1bWVudGF0 aW9uLCBhbmQgdHVybiB0aGVtIGludG8gbG9uZyBvcHRpb25zOw0KeW91IGNh biBub3cgc2F5IEM8eW91cnByb2dhbSAtLXdpYmJsZT4sIGFuZCBDPHdpYmJs ZSgpPiB3aWxsIGJlIGNhbGxlZC4NCkM8LS1oZWxwPiBhbmQgQzwtLXZlcnNp b24+IHdvcmsgYXMgbm9ybWFsLCBhbmQgdGhlIGRvY3VtZW50YXRpb24NCmZv bGxvd2luZyB0aGUgQzxoZWFkMj4gd2lsbCBiZSB0YWtlbiBhcyB0aGUgbG9u ZyBoZWxwIHRleHQuDQoNCj1oZWFkMSBBVVRIT1INCg0KU2ltb24gQ296ZW5z LCBDPHNpbW9uQGNwYW4ub3JnPg0KDQo9aGVhZDEgU0VFIEFMU08NCg0KTDxD b25maWc6OkF1dG8+LCBMPEdldG9wdDo6TG9uZz4NCg0KPWN1dA0K ---1463760359-316734986-1059752961=:5155--
Generated at 13:56 on 01 Jul 2004 by mariachi 0.52