jsdoc-user Mailing List for JSDoc (Page 10)
Status: Inactive
Brought to you by:
mmathews
You can subscribe to this list here.
2004 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
(3) |
Dec
(4) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2005 |
Jan
|
Feb
|
Mar
(6) |
Apr
|
May
|
Jun
(5) |
Jul
|
Aug
|
Sep
(16) |
Oct
(2) |
Nov
(7) |
Dec
(10) |
2006 |
Jan
(7) |
Feb
(2) |
Mar
(5) |
Apr
|
May
|
Jun
|
Jul
(7) |
Aug
(7) |
Sep
(5) |
Oct
(19) |
Nov
|
Dec
|
2007 |
Jan
|
Feb
(3) |
Mar
(31) |
Apr
(10) |
May
(7) |
Jun
(9) |
Jul
(2) |
Aug
(5) |
Sep
(1) |
Oct
(6) |
Nov
(3) |
Dec
(2) |
2008 |
Jan
|
Feb
(7) |
Mar
(1) |
Apr
|
May
(3) |
Jun
(1) |
Jul
(6) |
Aug
(3) |
Sep
(16) |
Oct
(7) |
Nov
(24) |
Dec
(34) |
2009 |
Jan
(9) |
Feb
(13) |
Mar
(14) |
Apr
(25) |
May
(35) |
Jun
(20) |
Jul
(33) |
Aug
(6) |
Sep
(1) |
Oct
|
Nov
|
Dec
(7) |
2010 |
Jan
(12) |
Feb
(7) |
Mar
(4) |
Apr
(1) |
May
(4) |
Jun
(1) |
Jul
(3) |
Aug
(1) |
Sep
(3) |
Oct
(2) |
Nov
|
Dec
|
2011 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
(2) |
Dec
|
2013 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
(1) |
Oct
|
Nov
|
Dec
|
2016 |
Jan
|
Feb
|
Mar
|
Apr
|
May
(1) |
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2017 |
Jan
|
Feb
|
Mar
(1) |
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
From: Gabriel R. <gab...@gm...> - 2005-09-06 05:28:55
|
Hi Justin, > This is a great project since it really helps Java Developers and I really > appreciate all of your work. I want apologize in advance for just suggesting > the code change without consulting you, the project owner. I was just trying > to prevent a lot of manual taging of classes. Hey, no problem with suggesting code changes! That's always welcome, especially if it's done with justification for your changes (as you provided). > Generally, there is inheritance when you set a member such as base or any > name and call a constructor their is a relationship established but is only > during the creation of the class it is not dynamic like prototype. I am not > sure what the original goal of how inheritance was to be displayed but maybe > the static inheritance could be included. > This document outlines this *towards the bottom of the page * > http://developer.mozilla.org/en/docs/Core_JavaScript_1.5_Guide:The_Employee_Example:More_Flexible_Constructors I've realized where the miscommunication is happening now. I've been looking for method inheritance (or maybe even general inheritance), while you've been talking about property inheritance. Or more specifically, only properties that are defined within a constructor. For example, with the following code: function BaseClass(anId){ this.id = anId; } BaseClass.prototype.getId(){ return this.id; } function SubClass(anId){ this.base = new BaseClass(); this.base(anId); } the id property is inherited, but the getId method isn't (along with anything else that is attached to the BaseClass.prototype object). If the base idiom is used by JSDoc to define inheritance (without doing further checking), it would document SubClass as having a function called getId, which would be incorrect. This would all work fine (both in the JavaScript sense and the JSDoc sense) if all the classes functions were defined within the constructor. However, this is a fair bit slower (performance-wise), and it's just not always done that way (even though it is a popular idiom). incorrectly document SubClass as > The company I work for uses 100s of classes that follow this paradigm and I > thought this would be useful rather than making developers have to adding > @extends or adding to the source the prototype chain (for site speed). If we > don't incorporate this code I will just keep a copy with this minor change. > Maybe when the new parser is ready this can be easily added. I would be in full support of you keeping the change in your own code, but I hope I've made it clear why I'm not so enthusiastic about adding it to the main JSDoc code. Once I've implemented the "smarter" parser (if that day ever comes), things like this should be taken care of properly. Regards, Gabriel > > On 9/2/05, Gabriel Reid <gab...@gm...> wrote: > > > > Hi Justin, > > > > > I understand your point, maybe the base member name can be a optional > > > parameter such as --basemembernames base,baseObj. This idiom is > > extremely > > > useful especially when it is part of the coding standard. I found that > > when > > > I ran our JS docs with this param I found that the tree was formed > > rather > > > than requiring manual @extends keys from being added. What do you think? > > > > > > I think that there is actually a miscommunication here. Just assigning a > > base > > class constructor function to a property inside of another constructor > > function, like this: > > > > function BaseClass(pName){ this.name <http://this.name> = pName; } > > function SubClass(){ > > this.base = BaseClass; > > this.base("someName"); > > } > > > > does not necessarily set up any kind of inheritance relationship between > > the > > two classes. The inheritance relationship *is* set up when you assign an > > instance of the base class to the subclass' prototype, as follows: > > > > SubClass.prototype = new BaseClass(); > > > > When you use the above construction, JSDoc correctly picks up the > > inheritance relationship without the need for the @extends tag (or at > > least, it should pick it up!). > > > > To top all of this off, I'm also looking at making the parser somewhat > > "smarter" so that it can handle additions to the Function prototype (as > > all "classes" are actually based on the Function class), which would > > clear up any kind of problem such as the one we're discussing here. > > However, that won't be coming anytime terribly soon, I'm afraid. > > > > Regards, > > > > Gabriel > > > > > > > > On 9/1/05, Gabriel Reid <gab...@gm...> wrote: > > > > > > > > On Thu, Sep 01, 2005 at 05:54:30PM -0700, Justin Early wrote: > > > > > Hi Gabriel, > > > > > Here is the example of a where you can use this: > > > > > function MyBaseClass(pName) > > > > > { > > > > > this.name <http://this.name> <http://this.name> <http://this.name> = > > pName; > > > > > this.prop1 = "test"; > > > > > } > > > > > function MyExtendedBaseClass(pName) > > > > > { > > > > > //set Base class > > > > > this.base = MyBaseClass; > > > > > this.base(pName); > > > > > } > > > > > Examples are here: > > > > > > > > > > > http://developer.mozilla.org/en/docs/Core_JavaScript_1.5_Guide:The_Employee_Example:More_Flexible_Constructors > > > > > > > > I'm not really in favour of adding this to the code of JSDoc, as the > > > > 'base' object isn't actually part of JavaScript or ECMAScript. > > Although > > > > it's certainly a useful idiom, the 'base' object could just as easily > > be > > > > called any other name and have the same effect. > > > > > > > > Additionally, in the example in the link that you provided, a > > > > constructor is assigned to the prototype of a subclass, which JSDoc > > will > > > > pick up and represent as subclassing. > > > > > > > > Regards, > > > > > > > > Gabriel > > > > > > > > > > > > > > > > -- > > > It's a cool add-in for Outlook that automatically organizes your email. > > I > > > think it's great! > > > > > > ________________________________ > > > Click http://www.caelo.com/a/rl.php3?i=U30ZD to check it out. > > > > > > -- > It's a cool add-in for Outlook that automatically organizes your email. I > think it's great! > > ________________________________ > Click http://www.caelo.com/a/rl.php3?i=U30ZD to check it out. |
From: Gabriel R. <gab...@gm...> - 2005-09-02 19:46:57
|
Hi Justin, > I understand your point, maybe the base member name can be a optional > parameter such as --basemembernames base,baseObj. This idiom is extremely > useful especially when it is part of the coding standard. I found that when > I ran our JS docs with this param I found that the tree was formed rather > than requiring manual @extends keys from being added. What do you think? I think that there is actually a miscommunication here. Just assigning a base class constructor function to a property inside of another constructor function, like this: function BaseClass(pName){ this.name = pName; } function SubClass(){ this.base = BaseClass; this.base("someName"); } does not necessarily set up any kind of inheritance relationship between the two classes. The inheritance relationship *is* set up when you assign an instance of the base class to the subclass' prototype, as follows: SubClass.prototype = new BaseClass(); When you use the above construction, JSDoc correctly picks up the inheritance relationship without the need for the @extends tag (or at least, it should pick it up!). To top all of this off, I'm also looking at making the parser somewhat "smarter" so that it can handle additions to the Function prototype (as all "classes" are actually based on the Function class), which would clear up any kind of problem such as the one we're discussing here. However, that won't be coming anytime terribly soon, I'm afraid. Regards, Gabriel > > On 9/1/05, Gabriel Reid <gab...@gm...> wrote: > > > > On Thu, Sep 01, 2005 at 05:54:30PM -0700, Justin Early wrote: > > > Hi Gabriel, > > > Here is the example of a where you can use this: > > > function MyBaseClass(pName) > > > { > > > this.name <http://this.name> <http://this.name> = pName; > > > this.prop1 = "test"; > > > } > > > function MyExtendedBaseClass(pName) > > > { > > > //set Base class > > > this.base = MyBaseClass; > > > this.base(pName); > > > } > > > Examples are here: > > > > > http://developer.mozilla.org/en/docs/Core_JavaScript_1.5_Guide:The_Employee_Example:More_Flexible_Constructors > > > > I'm not really in favour of adding this to the code of JSDoc, as the > > 'base' object isn't actually part of JavaScript or ECMAScript. Although > > it's certainly a useful idiom, the 'base' object could just as easily be > > called any other name and have the same effect. > > > > Additionally, in the example in the link that you provided, a > > constructor is assigned to the prototype of a subclass, which JSDoc will > > pick up and represent as subclassing. > > > > Regards, > > > > Gabriel > > > > > > -- > It's a cool add-in for Outlook that automatically organizes your email. I > think it's great! > > ________________________________ > Click http://www.caelo.com/a/rl.php3?i=U30ZD to check it out. |
From: Gabriel R. <gab...@gm...> - 2005-09-02 05:30:05
|
On Thu, Sep 01, 2005 at 05:54:30PM -0700, Justin Early wrote: > Hi Gabriel, > Here is the example of a where you can use this: > function MyBaseClass(pName) > { > this.name <http://this.name> = pName; > this.prop1 = "test"; > } > function MyExtendedBaseClass(pName) > { > //set Base class > this.base = MyBaseClass; > this.base(pName); > } > Examples are here: > http://developer.mozilla.org/en/docs/Core_JavaScript_1.5_Guide:The_Employee_Example:More_Flexible_Constructors I'm not really in favour of adding this to the code of JSDoc, as the 'base' object isn't actually part of JavaScript or ECMAScript. Although it's certainly a useful idiom, the 'base' object could just as easily be called any other name and have the same effect. Additionally, in the example in the link that you provided, a constructor is assigned to the prototype of a subclass, which JSDoc will pick up and represent as subclassing. Regards, Gabriel |
From: Justin E. <ear...@gm...> - 2005-09-02 00:54:38
|
Hi Gabriel, Here is the example of a where you can use this: function MyBaseClass(pName) { this.name <http://this.name> =3D pName; this.prop1 =3D "test"; } function MyExtendedBaseClass(pName) { //set Base class this.base =3D MyBaseClass; this.base(pName); } Examples are here: http://developer.mozilla.org/en/docs/Core_JavaScript_1.5_Guide:The_Employee= _Example:More_Flexible_Constructors Justin=20 On 9/1/05, Gabriel Reid <gab...@gm...> wrote:=20 >=20 > Hi, >=20 > I'm forwarding this to you as I didn't see your address on the JSDoc > subscriber list. >=20 >=20 > ----- Forwarded message from Gabriel Reid <gab...@gm...> ----- > On Wed, Aug 31, 2005 at 06:55:22PM -0700, Justin Early wrote: > > I have a fix for JSdocs that will create the hierarchy if you use the= =20 > base > > object. > > added this to the fetch_funcs_and_classes function > > elsif ($cname2 && $propname1=3D~ /base/ && defined($propval1)) { > > #base property correction > > &set_base_class($cname2, $propval1); > > } > > Attached is the updated pm. This was based off of the > > 1.9.5.6 <http://1.9.5.6><http://1.9.5.6>version. This is a pretty big= =20 > improvement > > because developers do not need to > > add @extends to every js file object. If they change the code then the= =20 > docs > > change automatically. >=20 >=20 > Could you please post an example of how the base object is used in > JavaScript? I'm not familiar with it. >=20 > Regards, >=20 > Gabriel >=20 > ----- End forwarded message ----- >=20 --=20 It's a cool add-in for Outlook that automatically organizes your email. I= =20 think it's great! ________________________________ Click http://www.caelo.com/a/rl.php3?i=3DU30ZD to check it out. |
From: Gabriel R. <gab...@gm...> - 2005-09-01 05:36:37
|
On Wed, Aug 31, 2005 at 06:55:22PM -0700, Justin Early wrote: > I have a fix for JSdocs that will create the hierarchy if you use the base > object. > added this to the fetch_funcs_and_classes function > elsif ($cname2 && $propname1=~ /base/ && defined($propval1)) { > #base property correction > &set_base_class($cname2, $propval1); > } > Attached is the updated pm. This was based off of the > 1.9.5.6<http://1.9.5.6>version. This is a pretty big improvement > because developers do not need to > add @extends to every js file object. If they change the code then the docs > change automatically. Could you please post an example of how the base object is used in JavaScript? I'm not familiar with it. Regards, Gabriel |
From: Justin E. <ear...@gm...> - 2005-09-01 01:55:33
|
cGFja2FnZSBKU0RvYzsNCg0KPWhlYWQxIE5BTUUNCg0KSlNEb2MgLSBwYXJzZSBKYXZhU2NyaXB0 IHNvdXJjZSBmaWxlIGZvciBKU0RvYyBjb21tZW50cw0KDQo9aGVhZDEgU1lOT1BTSVMNCg0KQ3Jl YXRlIEphdmFTY3JpcHQgc291cmNlZmlsZXMgY29tbWVudGVkIGluIGEgbWFubmVyIHNpbWlsYXIg dG8gamF2YWRvYw0KKGllLiB3aXRoIGRvY3VtZW50YXRpb24gc3RhcnRpbmcgd2l0aCAnLyoqJyBh bmQgdGhlbiBwYXNzIGEgbGlzdCBvZiByZWZlcmVuY2VzIA0KdG8gSmF2YVNjcmlwdCBzb3VyY2Ug dG8gcGFyc2VfY29kZV90cmVlOg0KDQogICAvKioNCiAgICAqIFRoaXMgaXMgYSBjbGFzcyBmb3Ig ZXhhbXBsZSBwdXJwb3Nlcw0KICAgICogQHBhcmFtIG5hbWUgTmFtZSBmb3IgdGhlIG5ldyBvYmpl Y3QNCiAgICAqIEBjb25zdHJ1Y3Rvcg0KICAgICovDQogICAgZnVuY3Rpb24gTXlDbGFzcyhuYW1l KXsNCiAgICAgIHRoaXMubmFtZSA9IG5hbWU7DQogICAgfQ0KDQogICAkY29kZV90cmVlID0gcGFy c2VfY29kZV90cmVlKEBzcmNfcmVmcyk7DQoNCkEgdHJlZSBzdHJ1Y3R1cmUgZGVzY3JpYmluZyB0 aGUgY29kZSBsYXlvdXQsIGluaGVyaXRhbmNlIGFuZCBkb2N1bWVudGF0aW9uDQppcyByZXR1cm5l ZA0KDQpUbyBjbGVhciB0aGUgY2FjaGUgb2YgY2xhc3NlcyBhbmQgZnVuY3Rpb25zIGluIHRoZSBw YXJzZXI6DQoNCiAgIHJlc2V0X3BhcnNlcigpOw0KICAgIA0KDQo9aGVhZDEgREVTQ1JJUFRJT04N Cg0KVGhlIEM8cGFyc2VfY29kZV90cmVlPiBmdW5jdGlvbiByZXF1aXJlcyBhIHJlZiB0byBhIHN0 cmluZyBob2xkaW5nIHRoZQ0Kc291Y2UgY29kZSBvZiBhIGphdmFzY3JpcHQgb2JqZWN0IGZpbGUg b3IgZmlsZXMuIEl0IHJldHVybnMgYSBkYXRhIHN0cnVjdHVyZQ0KdGhhdCBkZXNjcmliZXMgdGhl IG9iamVjdCBoaWVyYXJjaHkgY29udGFpbmVkIGluIHRoZSBzb3VyY2UgZmlsZSwgYXMgd2VsbA0K YXMgaW5jbHVkZWQgZG9jdW1lbnRhdGlvbiBmb3IgYWxsIGZpZWxkcyBhbmQgbWV0aG9kcy4gVGhl IHJlc3VsdGluZw0KZGF0YSBzdHJ1Y3R1cmUgaGFzIHRoZSBmb2xsb3dpbmcgZm9ybSAoZm9yIGVh Y2ggY2xhc3MpOg0KDQogICBDbGFzcw0KICAgICAgfA0KICAgICAgKy0gY2xhc3NuYW1lDQogICAg ICB8DQogICAgICArLSBjb25zdHJ1Y3Rvcl9hcmdzDQogICAgICB8DQogICAgICArLSBleHRlbmRz ICANCiAgICAgIHwNCiAgICAgICstIGNvbnN0cnVjdG9yX2RldGFpbA0KICAgICAgfA0KICAgICAg Ky0gY29uc3RydWN0b3JfdmFycw0KICAgICAgfA0KICAgICAgKy0gY2xhc3NfbWV0aG9kcw0KICAg ICAgfCAgfA0KICAgICAgfCAgKy0gZGVzY3JpcHRpb24NCiAgICAgIHwgIHwNCiAgICAgIHwgICst IG1hcHBlZF9uYW1lDQogICAgICB8ICB8DQogICAgICB8ICArLSBhcmd1bWVudF9saXN0DQogICAg ICB8ICB8DQogICAgICB8ICArLSB2YXJzIA0KICAgICAgfA0KICAgICAgKy0gaW5zdGFuY2VfbWV0 aG9kcw0KICAgICAgfCAgfA0KICAgICAgfCAgKy0gZGVzY3JpcHRpb24NCiAgICAgIHwgIHwNCiAg ICAgIHwgICstIG1hcHBlZF9uYW1lDQogICAgICB8ICB8DQogICAgICB8ICArLSBhcmd1bWVudF9s aXN0DQogICAgICB8ICB8DQogICAgICB8ICArLSB2YXJzIA0KICAgICAgfCANCiAgICAgICstIGNs YXNzX2ZpZWxkcw0KICAgICAgfCAgfA0KICAgICAgfCAgKy0gZmllbGRfZGVzY3JpcHRpb24NCiAg ICAgIHwgIHwNCiAgICAgIHwgICstIGZpZWxkX25hbWUNCiAgICAgIHwgIHwNCiAgICAgIHwgICst IGZpZWxkX3ZhbHVlDQogICAgICB8ICB8DQogICAgICB8ICArLSBmaWVsZF92YXJzDQogICAgICB8 DQogICAgICArLSBpbnN0YW5jZV9maWVsZHMNCiAgICAgIHwgIHwNCiAgICAgIHwgICstIGZpZWxk X2Rlc2NyaXB0aW9uDQogICAgICB8ICB8DQogICAgICB8ICArLSBmaWVsZF9uYW1lDQogICAgICB8 ICB8DQogICAgICB8ICArLSBmaWVsZF92YWx1ZQ0KICAgICAgfCAgfA0KICAgICAgfCAgKy0gZmll bGRfdmFycw0KICAgICAgfA0KICAgICAgKy0gaW5uZXJfY2xhc3Nlcw0KICAgICAgfCAgfA0KICAg ICAgfCAgKy0gY2xhc3NfbmFtZQ0KICAgICAgfA0KICAgICAgKy0gaW5oZXJpdHMNCiAgICAgICAg IHwNCiAgICAgICAgICstIENsYXNzDQogICAgICAgICAgICB8DQogICAgICAgICAgICArLSBpbnN0 YW5jZV9maWVsZHMNCiAgICAgICAgICAgIHwNCiAgICAgICAgICAgICstIGluc3RhbmNlX21ldGhv ZHMNCg0KDQpUaGVyZSBpcyBhbHNvIGFuIGFkZGl0aW9uYWwgZW50cnkgdW5kZXIgdGhlIGtleSBf X0ZJTEVTX18gdGhhdCBjb250YWlucw0Ka2V5ZWQgZW50cmllcyBmb3IgZWFjaCBAdGFnIHRoYXQg d2FzIGRlZmluZWQgaW4gdGhlIGZpcnN0IEpTRG9jIGNvbW1lbnQNCmJsb2NrIHdpdGggYSBAZmls ZW92ZXJ2aWV3IHRhZy4gRWFjaCBlbnRyeSB1bmRlciBfX0ZJTEVTX18gaXMga2V5ZWQgYnkNCmZp bGVuYW1lLCBhbmQgaXMgYSBoYXNoIHJlZmVyZW5jZS4NCg0KPWhlYWQxIEFVVEhPUlMNCg0KR2Fi cmllbCBSZWlkIGdhYl9yZWlkQHVzZXJzLnNvdXJjZWZvcmdlLm5ldCwNCk1pY2hhZWwgTWF0aGV3 cyBtaWNoYWVsQG1hdGhld3MubmV0DQoNCj1jdXQNCg0KcmVxdWlyZSA1LjAwMDsNCnVzZSBzdHJp Y3Q7DQp1c2Ugd2FybmluZ3M7DQp1c2UgRXhwb3J0ZXI7DQoNCiMgUmVjdXJzaW9uIGxpbWl0IGZv ciByZWN1cnNpdmUgcmVnZXhlcw0KdXNlIGNvbnN0YW50IFJFQ1VSU0lPTiAgPT4gMTA7DQoNCnVz ZSB2YXJzIHF3LyBASVNBIEBFWFBPUlQgLzsNCg0KQElTQSA9IHF3KEV4cG9ydGVyKTsNCkBFWFBP UlQgPSBxdyhwYXJzZV9jb2RlX3RyZWUgY29uZmlndXJlX3BhcnNlciByZXNldF9wYXJzZXIpOw0K DQojIFN0YXRlDQp1c2UgdmFycyBxdy8gJUNMQVNTRVMgJUZVTkNUSU9OUyAlQ09ORklHICRDVFhf RklMRSAvOw0KDQojIFJlZ2V4ZXMNCnVzZSB2YXJzIHF3LyAkQkFMX1BBUkVOICRCQUxfQlJBQ0Ug JFNRVU9URSAkRFFVT1RFICROT05RVU9URSANCiAgICAgICAgICAgICAgICRGVU5DX0RFRiAkUkVU X0ZVTkNfREVGICRBTk9OX0ZVTkNUSU9OICRMSVRFUkFMICRGVU5DX0NBTEwgDQogICAgICAgICAg ICAgICAkSlNET0NfQ09NTUVOVCAkTUxJTkVfQ09NTUVOVCAkU0xJTkVfQ09NTUVOVCAvOw0KDQoj IFRoaXMgbGltaXRzIG5lc3RlZCBicmFjZXMgdG8gMzAgbGV2ZWxzLCBidXQgaXMgbXVjaCBtb3Jl IA0KIyBzdGFibGUgdGhhbiB1c2luZyBhIGR5bmFtaWMgcmVnZXgNCiRCQUxfQlJBQ0UgICAgICA9 IHFyL1x7KD86W15ce1x9XSkqXH0vOw0KJEJBTF9QQVJFTiAgICAgID0gcXIvXCgoPzpbXigpXSkq XCkvOw0KZm9yICgxLi5SRUNVUlNJT04pew0KICAgICRCQUxfQlJBQ0UgID0gcXIvXHsoPzpbXlx7 XH1dfCRCQUxfQlJBQ0UpKlx9LzsNCiAgICAkQkFMX1BBUkVOICA9IHFyL1woKD86W14oKV18JEJB TF9QQVJFTikqXCkvOw0KfQ0KJFNRVU9URSAgICAgICAgID0gcXJ7J1teJ1xcXSooPzpcXC5bXidc XF0qKSonfTsNCiREUVVPVEUgICAgICAgICA9IHFyeyJbXiJcXF0qKD86XFwuW14iXFxdKikqIn07 DQokTk9OUVVPVEUgICAgICAgPSBxcntbXiInL119Ow0KJEZVTkNfREVGICAgICAgID0gcXIvZnVu Y3Rpb25ccytcdysoPzpcLlx3KykqXHMqJEJBTF9QQVJFTlxzKiRCQUxfQlJBQ0UvOw0KJFJFVF9G VU5DX0RFRiAgID0gcXIvZnVuY3Rpb25ccysoXHcrKD86XC5cdyspKilccyooJEJBTF9QQVJFTilc cyooJEJBTF9CUkFDRSkvOw0KJEFOT05fRlVOQ1RJT04gID0gcXIvZnVuY3Rpb25ccyokQkFMX1BB UkVOXHMqJEJBTF9CUkFDRS87DQokTElURVJBTCAgICAgICAgPSBxci8kRFFVT1RFfCRTUVVPVEV8 XGQrLzsNCiRGVU5DX0NBTEwgICAgICA9IHFyLyg/Om5ld1xzKyk/XHcrKD86XC5cdyspKlxzKiRC QUxfUEFSRU4vOw0KJEpTRE9DX0NPTU1FTlQgID0gcXJ7L1wqXCpbXipdKlwqKyg/OlteLypdW14q XSpcKispKi99Ow0KJE1MSU5FX0NPTU1FTlQgID0gcXJ7L1wqW14qXSpcKisoPzpbXi8qXVteKl0q XCorKSovfTsNCiRTTElORV9DT01NRU5UICA9IHFyey8vW15cbl0qfTsNCg0KDQojDQojIFB1Ymxp YyBmdW5jdGlvbiB0aGF0IHJldHVybnMgYSBkYXRhc3RydWN0dXJlIHJlcHJlc2VudGluZyB0aGUg SlMgY2xhc3Nlcw0KIyBhbmQgdGhlaXIgZG9jdW1lbnRhdGlvbg0KIw0Kc3ViIHBhcnNlX2NvZGVf dHJlZSB7DQoNCiAgICAmaW5pdGlhbGl6ZV9wYXJzZXI7DQoNCiAgICAjDQogICAgIyBUaGlzIChJ IG1lYW4gdGhlICI8PCRfPj4iKSBpcyBwcmV0dHkgaGFja3ksIGJ1dCBJJ3ZlIG1hZGUgaXQgdGhp cyANCiAgICAjIHdheSB0byBtYWludGFpbiBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSB3aXRoIGFu eW9uZSB3aG8ncyBhdXRvbWF0aWNhbGx5IA0KICAgICMgZXhwZWN0aW5nIHRoaXMgdG8gd29yayB3 aGVuIHRoZXkgdGhyb3cgYW4gYXJyYXkgb2YgcmVmcyB0byBpdC4gSWYgeW91J3JlDQogICAgIyB1 c2luZyB0aGlzIGZvciB5b3VyIG93biB3b3JrLCBwbGVhc2UgZG9uJ3QgZXhwZWN0IHRvIGJlIGFi bGUgdG8gDQogICAgIyBwdXQgdGhlIGNvbnRleHQgZmlsZSBpbiBsaWtlIHRoaXMgaW4gdGhlIGZ1 dHVyZQ0KICAgICMNCiAgICBmb3IgbXkgJGpzX3NyYyAobWFwIHsgcmVmIGFuZCAkeyRffSBvciAi PDwkXz4+IiB9IEBfKXsNCiAgICAgICAgaWYgKCRqc19zcmMgPX4gL148PCguKyk+PiQvKXsNCiAg ICAgICAgICAgICRDVFhfRklMRSA9ICQxOw0KICAgICAgICAgICAgbmV4dDsNCiAgICAgICAgfQ0K DQogICAgICAgICMgcGVybGlmeSBvcyBsaW5lLWVuZGluZ3MNCiAgICAgICAgJGpzX3NyYyA9fiBz LyhcclxufFxyKS9cbi9nOw0KDQogICAgICAgICZwYXJzZV9maWxlX2luZm8oJGpzX3NyYyk7DQog ICAgICAgICRqc19zcmMgPSAmcHJlcHJvY2Vzc19zb3VyY2UoJGpzX3NyYyk7DQogICAgICAgICZm ZXRjaF9mdW5jc19hbmRfY2xhc3NlcygkanNfc3JjKTsNCiAgICB9DQoNCiAgICAmbWFwX2FsbF9w cm9wZXJ0aWVzKCk7DQogICAgJmJ1aWxkX2NsYXNzX2hpZXJhcmNoeSgpOyANCiAgICAmc2V0X2Ns YXNzX2NvbnN0cnVjdG9ycygpOw0KICAgICZmaWx0ZXJfZ2xvYmFsczsNCg0KICAgIHdoaWxlICht eSAoJGNsYXNzbmFtZSwgJGNsYXNzKSA9IGVhY2ggJUNMQVNTRVMpew0KICAgICAgICBkZWxldGUg JGNsYXNzLT57X2NsYXNzX3Byb3BlcnRpZXN9Ow0KICAgICAgICBkZWxldGUgJGNsYXNzLT57X2lu c3RhbmNlX3Byb3BlcnRpZXN9Ow0KICAgICAgICAkY2xhc3MtPntjbGFzc25hbWV9ID0gJGNsYXNz bmFtZSB1bmxlc3MgJGNsYXNzbmFtZSBlcSAnX19GSUxFU19fJzsNCiAgICB9DQogICAgcmV0dXJu IFwlQ0xBU1NFUzsNCn0NCg0KIw0KIyBQYXJzZXMgdXAgYSBhIGpzZG9jIGNvbW1lbnQgaW50byBp dHMgY29tcG9uZW50IHBhcnRzDQojIFBBUkFNOiBUaGUgZG9jdW1lbnQgc3RyaW5nIHRvIGJlIHBh cnNlZA0KIw0Kc3ViIHBhcnNlX2pzZG9jX2NvbW1lbnQgew0KICAgIG15ICgkZG9jLCAkcmF3KSA9 IEBfOyANCiAgICANCiAgICAjIFJlbW92ZSBleGNlc3MgJyonIGNoYXJhY3RlcnMNCiAgICAkZG9j ID1+IHMvXlsqXHNdKihbXipdLio/KVsqXHNdKiQvJDEvczsNCiAgICAkZG9jID1+IHMvXlxzKlwq Ly9nbTsNCg0KICAgIG15ICVwYXJzZWQgPSAoKTsgIyByZW1lbWJlciBlYWNoIHBhcnQgdGhhdCBp cyBwYXJzZWQNCg0KICAgICMgdGhlIGZpcnN0IHBhcmFncmFwaCBjb3VsZCBiZSBhIHN1bW1hcnkg c3RhdGVtZW50DQogICAgIyBhIHBhcmFncmFwaCBtYXkgZm9sbG93IG9mIHZhcmlhYmxlIGRlZnMg KHZhcmlhYmxlIG5hbWVzIHN0YXJ0IHdpdGggIkAiKQ0KICAgIG15ICgkc3VtbWFyeSwgJHZhcmlh YmxlX3N0cikgPSAkZG9jID1+IA0KICAgICAgICAvXlxzKg0KICAgICAgICAoDQogICAgICAgICAg ICAoPzpbXntAXXwoPzpce1teQF0pKSoNCiAgICAgICAgICAgICg/Olx7XEANCiAgICAgICAgICAg ICg/Oltee0BdfCg/Olx7W15AXSkpKikqDQogICAgICAgICkNCiAgICAgICAgXHMqDQogICAgICAg ICguKikNCiAgICAgICAgJC94czsNCiAgICAkc3VtbWFyeSA9fiBzL15ccyooXFMuKj8pXHMqJC8k MS9zOw0KICAgICRwYXJzZWR7c3VtbWFyeX0gPSAkc3VtbWFyeTsNCg0KICAgICMgdHdvIHR5cGVz IG9mIHZhcmlhYmxlIGRlZiBjYW4gYmUgZGVhbHQgd2l0aCBoZXJlOg0KICAgICMgYSBAYXJndW1l bnQgaGFzIGEgdHdvLXBhcnQgdmFsdWUgLS0gdGhlIGFyZyBuYW1lIGFuZCBhIGRlc2NyaXB0aW9u DQogICAgIyBhbGwgb3RoZXIgQDx2YXJpYWJsZXM+IG9ubHkgaGF2ZSBhIHNpbmdsZSB2YWx1ZSBl YWNoIChhbHRob3VnaCB0aGVyZSBtYXkNCiAgICAjIGJlIG1hbnkgdmFyaWFibGVzIHdpdGggdGhl IHNhbWUgbmFtZSkNCiAgICBpZigkdmFyaWFibGVfc3RyKSB7DQogICAgICAgIG15ICV2YXJzID0g KCk7DQogICAgICAgIHdoaWxlICgkdmFyaWFibGVfc3RyID1+IC8NCiAgICAgICAgICAgICg/PCFb XHtcd10pXEAoXHcrKSAgICAgICMgVGhlIEBhdHRyaWJ1dGUsIGJ1dCBub3QgYSB7QGxpbmt9DQog ICAgICAgICAgICBccyoNCiAgICAgICAgICAgICgoPzpce1xAfFx3XEB8W15cQF0pKikgICAjIEV2 ZXJ5dGhpbmcgdXAgdG8gdGhlIG5leHQgQGF0dHJpYnV0ZQ0KICAgICAgICAgICAgL2dzeCkgew0K ICAgICAgICAgICAgbXkgKCRuYW1lLCAkdmFsKSA9ICgkMSwgJDIpOw0KICAgICAgICAgICAgJHZh cnN7JG5hbWV9ID0gW10gdW5sZXNzIGRlZmluZWQgJHZhcnN7JG5hbWV9Ow0KICAgICAgICAgICAg JHZhbCA9fiBzL1xuLyAvZyB1bmxlc3MgJHJhdyBvciAkbmFtZSBlcSAnY2xhc3MnOw0KICAgICAg ICAgICAgcHVzaChAeyR2YXJzeyRuYW1lfX0sICgkdmFsID1+IC9eXHMqKC4qKVxzKiQvcylbMF0p Ow0KICAgICAgICB9DQogICAgICAgICRwYXJzZWR7dmFyc30gPSBcJXZhcnM7DQogICAgfQ0KICAg IHJldHVybiBcJXBhcnNlZDsNCn0NCg0KIw0KIyBCdWlsZHMgdXAgdGhlIGdsb2JhbCBGVU5DVElP TiBhbmQgQ0xBU1NFUyBoYXNoZXMNCiMgd2l0aCB0aGUgbmFtZXMgb2YgZnVuY3Rpb25zIGFuZCBj bGFzc2VzDQojDQpzdWIgZmV0Y2hfZnVuY3NfYW5kX2NsYXNzZXMgew0KICAgIG15ICRqc19zcmMg PSBzaGlmdDsNCiAgIA0KICAgIHdoaWxlICgkanNfc3JjID1+IG0hDQogICAgICAgICMgRG9jdW1l bnRhdGlvbg0KICAgICAgICAoPzoNCiAgICAgICAgICAgIC9cKlwqICAgICAgICAgICAgICAgICAg ICAgICAgICMgT3BlbmluZyBvZiBkb2NzDQogICAgICAgICAgICAgICAgKFteL10rDQogICAgICAg ICAgICAgICAgICAgICg/Oig/OlteKl0vKStbXi9dKykqDQogICAgICAgICAgICAgICAgKQ0KICAg ICAgICAgICAgXCovXHMqXG5ccyogICAgICAgICAgICAgICAgICAgIyBDbG9zaW5nIG9mIGRvY3MN CiAgICAgICAgKT8NCiAgICAgICAgIA0KICAgICAgIA0KICAgICAgICAgDQogICAgICAgICMgRnVu Y3Rpb24NCiAgICAgICAgKD86KD86ZnVuY3Rpb25ccysoXHcrKVxzKihcKC4qP1wpKVxzKlx7KXwg ICAgICAgICANCiAgICAgICAgIA0KICAgICAgICAjIEFub255bW91cyBmdW5jdGlvbg0KICAgICAg ICAoPzooXHcrKD86XC5cdyspKj8pKFwucHJvdG90eXBlKT9cLihcdyspXHMqPVxzKmZ1bmN0aW9u XHMqDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICg/Olx3K1xzKik/KFwoLio/XCkpKXwgIA0KDQogICAgICAgICMgSW5zdGFuY2UgcHJvcGVy dHkgDQogICAgICAgICg/OihcdysoPzpcLlx3KykqPylcLnByb3RvdHlwZVwuKFwkP1x3Kylccyo9 XHMqKC4qPylccypbO1xuXSl8ICAgIA0KDQogICAgICAgICNJbmhlcml0YW5jZQ0KICAgICAgICAo PzooXHcrKD86XC5cdyspKj8pXC5wcm90b3R5cGVccyo9DQogICAgICAgICAgICAgICAgICAgICAg ICAgICBccypuZXdccyooXHcrKD86XC5cdyspKj8pKD86XCguKj9cKSk/XHMqWztcbl0pfCANCg0K ICAgICAgICAjIENsYXNzIHByb3BlcnR5DQogICAgICAgICg/OihcdysoPzpcLlx3KykqPylcLihc JD9cdyspXHMqPVxzKiguKj8pXHMqWztcbl0pKSAgICAgICAgDQogICAgIWdzeCl7DQogICAgCQ0K ICAgICAgICBteSAoJGRvYywgJGZuYW1lMSwgICRhcmdsaXN0MSwgJGNuYW1lMSwgJHByb3RvdHlw ZSwgJGZuYW1lMiwgJGFyZ2xpc3QyKQ0KICAgICAgICAgICAgPSAoJDEgfHwgJycsICQyLCAkMywg JDQsICQ1LCAkNiwgJDcpOw0KICAgICAgICBteSAoJGNuYW1lMiwgJHByb3BuYW1lMSwgJHByb3B2 YWwxKSA9ICgkOCwgJDksICQxMCk7DQogICAgICAgIG15ICgkY25hbWUzLCAkYmFzZWNsYXNzKSA9 ICgkMTEsICQxMik7DQogICAgICAgIG15ICgkY25hbWU0LCAkcHJvcG5hbWUyLCAkcHJvcHZhbDIp ID0gKCQxMywgJDE0LCAkMTUpOw0KICAgICAgICAgDQogICAgICAgIG5leHQgaWYgJGRvYyA9fiAv XEBpZ25vcmVcYi87DQoNCiAgICAgICAgDQoNCg0KICAgICAgICBpZiAoJGZuYW1lMSl7DQogICAg ICAgICAgICAmYWRkX2Z1bmN0aW9uKCRkb2MsICRmbmFtZTEsICRhcmdsaXN0MSk7DQogICAgICAg ICAgICBpZiAoJGRvYyA9fiAvXEAoPzpjb25zdHJ1Y3RvcnxjbGFzc3xiYXNlKVxiLyl7DQogICAg ICAgICAgICAgICAgIyBBZGQgYWxsIEBjb25zdHJ1Y3RvciBhbmQgQGNsYXNzIG1ldGhvZHMgYXMg Y2xhc3Nlcw0KICAgICAgICAgICAgICAgICZhZGRfY2xhc3MoJGZuYW1lMSwgJGRvYyk7DQogICAg ICAgICAgICB9IA0KICAgICAgICB9IGVsc2lmICgkY25hbWUxICYmICRmbmFtZTIgJiYgJEZVTkNU SU9OU3skY25hbWUxfSl7DQogICAgICAgICAgICAjIEFub255bW91cyBmdW5jdGlvbnMgYWRkZWQg b250byBhIGNsYXNzIG9yIGNsYXNzIHByb3RvdHlwZQ0KICAgICAgICAgICAgCQ0KICAgICAgICAg ICAgJmFkZF9hbm9ueW1vdXNfZnVuY3Rpb24oJGRvYywgJGNuYW1lMSwgJGZuYW1lMiwgDQogICAg ICAgICAgICAgICAgJGFyZ2xpc3QyLCBub3QgZGVmaW5lZCgkcHJvdG90eXBlKSk7DQoNCiAgICAg ICAgfSBlbHNpZiAoJGNuYW1lMSAmJiAkZm5hbWUyICYmIG5vdCBkZWZpbmVkKCRGVU5DVElPTlN7 JGNuYW1lMX0pKXsNCiAgICAgICAgICAgIGlmICgkZG9jID1+IC9cQChhZGRvbnxiYXNlfGNvbnN0 cnVjdG9yKVxiLyANCiAgICAgICAgICAgICAgICAgICAgfHwgJHByb3RvdHlwZSB8fCAkQ0xBU1NF U3skY25hbWUxfSl7DQogICAgICAgICAgICAgICAgIyBDYWxsZWQgZm9yIG1ldGhvZHMgYWRkZWQg dG8gdGhlIHByb3RvdHlwZSBvZiBjb3JlIGNsYXNzZXMNCiAgICAgICAgICAgICAgICAmYWRkX2Fu b255bW91c19mdW5jdGlvbigkZG9jLCAkY25hbWUxLCAkZm5hbWUyLCANCiAgICAgICAgICAgICAg ICAgICAgJGFyZ2xpc3QyLCBub3QgZGVmaW5lZCgkcHJvdG90eXBlKSk7DQogICAgICAgICAgICB9 DQoNCiAgICAgICAgfSBlbHNpZiAoJGNuYW1lMiAmJiAkcHJvcG5hbWUxPX4gL2Jhc2UvICYmIGRl ZmluZWQoJHByb3B2YWwxKSkgew0KICAgICAgICAJCSNiYXNlIHByb3BlcnR5IGNvcnJlY3Rpb24N CiAgICAgICAgICAgIAkmc2V0X2Jhc2VfY2xhc3MoJGNuYW1lMiwgJHByb3B2YWwxKTsNCiAgICAg ICAgfSBlbHNpZiAoJGNuYW1lMiAmJiAkcHJvcG5hbWUxICYmIGRlZmluZWQoJHByb3B2YWwxKSkg ew0KICAgICAgICAJIA0KICAgICAgICAgICAgJmFkZF9wcm9wZXJ0eSgkZG9jLCAkY25hbWUyLCAk cHJvcG5hbWUxLCAkcHJvcHZhbDEsIDApOw0KICAgICAgICB9IGVsc2lmICgkY25hbWUzICYmICRi YXNlY2xhc3Mpew0KICAgICAgICAjCXByaW50ICJbVEVTVF0gNDQ0NCAiIC4gJGNuYW1lMyAuICIg IiAuICRiYXNlY2xhc3MgLiAiXG4iOw0KICAgICAgICAgICAgJnNldF9iYXNlX2NsYXNzKCRjbmFt ZTMsICRiYXNlY2xhc3MpOw0KICAgICAgICB9IGVsc2lmICgkY25hbWU0ICYmICRwcm9wbmFtZTIg JiYgZGVmaW5lZCgkcHJvcHZhbDIpIA0KICAgICAgICAgICAgICAgICAgICAmJiAkcHJvcG5hbWUy IG5lICdwcm90b3R5cGUnIA0KICAgICAgICAgICAgICAgICAgICAmJiAkY25hbWU0IG5lICd0aGlz Jyl7DQogICAgICAgICMgcHJpbnQgIltURVNUXSA1NTU1ICIgLiAkY25hbWU0IC4gIiAiIC4gJHBy b3BuYW1lMiAuICIgIiAuICRwcm9wdmFsMiAuICJcbiI7DQogICAgICAgICAgICBpZiAoJEZVTkNU SU9OU3skY25hbWU0fSANCiAgICAgICAgICAgICAgICB8fCAkQ0xBU1NFU3skY25hbWU0fSANCiAg ICAgICAgICAgICAgICB8fCAkanNfc3JjID1+IC9mdW5jdGlvblxzKlxRJGNuYW1lNFxFXGIvKXsN CiAgICAgICAgICAgICAgICAgICAgJmFkZF9wcm9wZXJ0eSgkZG9jLCAkY25hbWU0LCAkcHJvcG5h bWUyLCAkcHJvcHZhbDIsIDEpOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQogICAgfQ0KfQ0K DQojDQojIEFkZCBhIGZ1bmN0aW9uIHRoYXQgaXMgZ2l2ZW4gYXMgQ2xhc3MucHJvdG90eXBlLmJs YWggPSBmdW5jdGlvbigpey4uLn0NCiMNCnN1YiBhZGRfYW5vbnltb3VzX2Z1bmN0aW9uIHsNCiAg ICBteSAoJGRvYywgJGNsYXNzLCAkZnVuY3Rpb25fbmFtZSwgJGFyZ19saXN0LCAkaXNfY2xhc3Nf cHJvcCkgPSBAXzsNCg0KICAgICMgSnVzdCBnZXQgb3V0IGlmIHRoZSBjbGFzcyBpcyBjYWxsZWQg J3RoaXMnLiBSZWFzb24gZm9yIHRoaXMgaXMgdGhhdA0KICAgICMgYmluZGluZyBtZXRob2RzIHRv ICd0aGlzJyBzaG91bGQgYWxyZWFkeSBiZSBjb252ZXJ0ZWQgdG8gYmluZGluZyBtZXRob2RzDQog ICAgIyB0byB0aGUgcHJvdG90eXBlLCB0aGVyZWZvcmUgYmluZGluZyB0byAndGhpcycgaXMgb25s eSBwb3NzaWJsZSBpbg0KICAgICMgbWVtYmVyIGZ1bmN0aW9ucywgYW5kIGlzIHRoZXJlZm9yZSBu b3QgY29uc2lkZXJlZCBzdGF0aWMgb3IgY29uc2lzdGVudA0KICAgICMgZW5vdWdoIHRvIGJlIGRv Y3VtZW50ZWQuDQogICAgcmV0dXJuIHVubGVzcyAkY2xhc3MgbmUgJ3RoaXMnOw0KICAgICZhZGRf Y2xhc3MoJGNsYXNzKTsNCiAgICBteSAkZmFrZV9uYW1lID0gIl9fJGNsYXNzLiRmdW5jdGlvbl9u YW1lIjsNCiAgIA0KICAgICMgVGhpcyBpcyBkaXJ0eQ0KICAgIG15ICRpc19wcml2YXRlID0gJGRv YyA9fiAvXEBwcml2YXRlXGIvOw0KDQogICAgJmFkZF9mdW5jdGlvbigkZG9jLCAkZmFrZV9uYW1l LCAkYXJnX2xpc3QsICRpc19wcml2YXRlKSBhbmQNCiAgICAgICAgJmFkZF9wcm9wZXJ0eSgkZG9j LCAkY2xhc3MsICRmdW5jdGlvbl9uYW1lLCAkZmFrZV9uYW1lLCAkaXNfY2xhc3NfcHJvcCk7DQog ICAgDQogICAgJmFkZF9jbGFzcygiJGNsYXNzLiRmdW5jdGlvbl9uYW1lIiwgJGRvYykgDQogICAg ICAgIGlmICRkb2MgPX4gL1xAKD86Y29uc3RydWN0b3J8Y2xhc3MpXGIvOw0KfQ0KDQoNCiMgDQoj IEFkZCBhIGNsYXNzIHRvIHRoZSBnbG9iYWwgQ0xBU1NFUyBoYXNoDQojDQpzdWIgYWRkX2NsYXNz IHsNCiAgICBteSAkY2xhc3MgPSBzaGlmdDsNCiAgICB3YXJuICJDYW4ndCBhZGQgJ3RoaXMnIGFz IGEgY2xhc3MsIHBsZWFzZSBmaWxlIGEgYnVnIHJlcG9ydCEiIA0KICAgICAgICBpZiAkY2xhc3Mg ZXEgJ3RoaXMnOw0KICAgIG15ICRjbGFzc19kb2MgPSBzaGlmdCB8fCAnJzsNCiAgICBpZiAoISRD TEFTU0VTeyRjbGFzc30pew0KICAgICAgICAkQ0xBU1NFU3skY2xhc3N9ID0ge307DQogICAgICAg ICRDTEFTU0VTeyRjbGFzc30tPnskX30gPSBbXSBmb3IgcXcoaW5zdGFuY2VfZmllbGRzIGNsYXNz X2ZpZWxkcyANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5z dGFuY2VfbWV0aG9kcyBjbGFzc19tZXRob2RzDQogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGlubmVyX2NsYXNzZXMpOw0KICAgIH0NCiAgICB1bmxlc3MgKCRDTEFT U0VTeyRjbGFzc30tPntleHRlbmRzfSl7DQogICAgICAgICZzZXRfYmFzZV9jbGFzcygkY2xhc3Ms ICQxKSANCiAgICAgICAgICAgIGlmICRjbGFzc19kb2MgPX4gL1xAYmFzZVxzKyhcdysoPzpcLlx3 KykqKS87DQogICAgfQ0KfQ0KDQojDQojIFNldCB0aGUgYmFzZSBjbGFzcyBmb3IgYSBnaXZlbiBj bGFzcw0KIw0Kc3ViIHNldF9iYXNlX2NsYXNzIHsNCiAgICBteSAoJGNsYXNzLCAkYmFzZV9jbGFz cykgPSBAXzsNCiAgICAmYWRkX2NsYXNzKCRjbGFzcyk7DQogICAgJENMQVNTRVN7JGNsYXNzfS0+ e2V4dGVuZHN9ID0gJGJhc2VfY2xhc3MNCiAgICAgICAgdW5sZXNzICRDTEFTU0VTeyRjbGFzc30t PntleHRlbmRzfTsNCn0NCg0KIw0KIyBBZGQgYSBwcm9wZXJ0eSwgZWl0aGVyIGEgY2xhc3Mgb3Ig aW5zdGFuY2UgbWV0aG9kIG9yIGZpZWxkDQojDQpzdWIgYWRkX3Byb3BlcnR5IHsNCiAgICBteSAo JGRvYywgJGNsYXNzLCAkcHJvcGVydHksICR2YWx1ZSwgJGlzX2NsYXNzX3Byb3BlcnR5KSA9IEBf Ow0KICAgICZhZGRfY2xhc3MoJGNsYXNzKTsNCiAgICByZXR1cm4gaWYgJHByb3BlcnR5IGVxICdj b25zdHJ1Y3Rvcic7DQogICAgbXkgJHBhcnNlZF9kb2MgPSAmcGFyc2VfanNkb2NfY29tbWVudCgk ZG9jKTsNCiAgICAkZG9jID0gJHBhcnNlZF9kb2MtPntzdW1tYXJ5fTsNCiAgICBteSAka2V5ID0g JGlzX2NsYXNzX3Byb3BlcnR5ID8gJ19jbGFzc19wcm9wZXJ0aWVzJyA6ICdfaW5zdGFuY2VfcHJv cGVydGllcyc7DQogICAgZm9yIG15ICRjbGFzc3JlZiAoQHskQ0xBU1NFU3skY2xhc3N9LT57JGtl eX19KXsNCiAgICAgICAgaWYgKCRjbGFzc3JlZi0+e3Byb3BlcnR5X25hbWV9IGVxICRwcm9wZXJ0 eSl7DQogICAgICAgICAgICAjIFdoaW5lIGFib3V0IHJlYmluZGluZyBmdW5jdGlvbnMgdG8gY2xh c3Nlcw0KICAgICAgICAgICAgaWYgKCRGVU5DVElPTlN7JHZhbHVlfSl7DQogICAgICAgICAgICAg ICAgd2FybiAiQWxyZWFkeSBib3VuZCBwcm9wZXJ0eSAnJHByb3BlcnR5JyB0byAnJGNsYXNzJ1xu IjsNCiAgICAgICAgICAgICAgICByZXR1cm47DQogICAgICAgICAgICB9DQogICAgICAgICAgICAN CiAgICAgICAgICAgICMgT25seSB0YWtlIG9uIG5ldyBhdHRyaWJ1dGVzIA0KICAgICAgICAgICAg JGNsYXNzcmVmLT57cHJvcGVydHlfZG9jfSB8fD0gJGRvYzsNCiAgICAgICAgICAgICRjbGFzc3Jl Zi0+e3Byb3BlcnR5X3ZhcnN9IHx8PSAkcGFyc2VkX2RvYy0+e3ZhcnN9Ow0KICAgICAgICAgICAg cmV0dXJuOw0KICAgICAgICB9DQogICAgfQ0KDQogICAgcHVzaCBAeyRDTEFTU0VTeyRjbGFzc30t Pnska2V5fX0sIHsNCiAgICAgICAgcHJvcGVydHlfZG9jID0+ICRkb2MsDQogICAgICAgIHByb3Bl cnR5X25hbWUgPT4gJHByb3BlcnR5LA0KICAgICAgICBwcm9wZXJ0eV92YWx1ZSA9PiAkdmFsdWUs DQogICAgICAgIHByb3BlcnR5X3ZhcnMgPT4gJHBhcnNlZF9kb2MtPnt2YXJzfSANCiAgICB9Ow0K fQ0KDQoNCiMNCiMgQWRkIGEgZnVuY3Rpb24gYW5kIGl0cyBkb2N1bWVudGF0aW9uIHRvIHRoZSBn bG9iYWwgRlVOQ1RJT04gaGFzaA0KIw0Kc3ViIGFkZF9mdW5jdGlvbiB7DQogICAgbXkgKCRkb2Ms ICRmdW5jdGlvbiwgJGFyZ19saXN0LCAkaXNfcHJpdmF0ZSkgPSBAXzsNCg0KICAgICMgY2xlYW4g cmVtYWluaW5nIGNvbW1lbnRzIG91dCBvZiBhcmcgbGlzdA0KICAgICMgKGFsbCBvdGhlcnMgYXJl IGFscmVhZHkgZ29uZSkNCiAgICAjIEFnYWluLCB0YWtlbiBmcm9tIEplZmZyZXkgRnJpZWRsJ3Mg Ik1hc3RlcmluZyBSZWd1bGFyIEV4cHJlc3Npb25zIg0KICAgIHsNCiAgICAgICAgbm8gd2Fybmlu Z3M7DQogICAgICAgICRhcmdfbGlzdCA9fiBzLw0KICAgICAgICAgICAgKCROT05RVU9URSt8DQog ICAgICAgICAgICAkRFFVT1RFJE5PTlFVT1RFKnwNCiAgICAgICAgICAgICRTUVVPVEUkTk9OUVVP VEUqKQ0KICAgICAgICAgICAgfCRNTElORV9DT01NRU5UfCRTTElORV9DT01NRU5ULyQxL2d4Ow0K ICAgIH0NCg0KICAgIGlmICgkRlVOQ1RJT05TeyRmdW5jdGlvbn0pew0KICAgICAgICB3YXJuICJG dW5jdGlvbiAnJGZ1bmN0aW9uJyBhbHJlYWR5IGRlY2xhcmVkXG4iOw0KICAgICAgICB1bmxlc3Mg KCRkb2MgJiYgISRGVU5DVElPTlN7JGZ1bmN0aW9ufS0+e2RvY3VtZW50YXRpb259LT57c3VtbWFy eX0pew0KICAgICAgICAgICAgcmV0dXJuIDA7DQogICAgICAgIH0NCiAgICB9DQogICAgJEZVTkNU SU9OU3skZnVuY3Rpb259ID0ge307DQogICAgbXkgJGZ1bmMgPSAkRlVOQ1RJT05TeyRmdW5jdGlv bn07DQogICAgJGFyZ19saXN0IGFuZCAkZnVuYy0+e2FyZ3VtZW50X2xpc3R9ID0gam9pbigiICIs IHNwbGl0KCJcXHMrIiwgJGFyZ19saXN0KSkNCiAgICAgICAgb3IgJGZ1bmMtPnthcmd1bWVudF9s aXN0fSA9ICIoKSI7DQoNCiAgICBteSAkZG9jdW1lbnRhdGlvbiA9IHBhcnNlX2pzZG9jX2NvbW1l bnQoJGRvYyk7DQogICAgaWYgKCRkb2N1bWVudGF0aW9uLT57dmFyc30tPnttZW1iZXJ9KXsNCiAg ICAgICAgbXkgKCRjbGFzc25hbWUpID0gbWFwIHsgcy9eXHMqKFxTKilccyokLyQxLzsgJF8gfSAN CiAgICAgICAgICAgIEB7JGRvY3VtZW50YXRpb24tPnt2YXJzfS0+e21lbWJlcn19Ow0KICAgICAg ICAmYWRkX3Byb3BlcnR5KCRkb2MsICRjbGFzc25hbWUsICRmdW5jdGlvbiwgJGZ1bmN0aW9uLCAw KQ0KICAgICAgICAgICAgaWYgJGNsYXNzbmFtZSA9fiAvXHcrLzsNCiAgICB9DQogICAgbXkgJGZ1 bmN0aW9uX3JlZiA9ICRGVU5DVElPTlN7JGZ1bmN0aW9ufTsNCg0KICAgICRmdW5jdGlvbl9yZWYt Pntkb2N1bWVudGF0aW9ufSA9ICRkb2N1bWVudGF0aW9uOw0KICAgICRmdW5jdGlvbl9yZWYtPntk ZXNjcmlwdGlvbn0gPSAkZG9jdW1lbnRhdGlvbi0+e3N1bW1hcnl9Ow0KICAgICRmdW5jdGlvbl9y ZWYtPnt2YXJzfSA9ICRmdW5jdGlvbl9yZWYtPntkb2N1bWVudGF0aW9ufS0+e3ZhcnN9Ow0KICAg ICRmdW5jdGlvbl9yZWYtPnt2YXJzfS0+e2ZpbGVuYW1lfSA9ICRDVFhfRklMRTsNCiAgICAkZnVu Y3Rpb25fcmVmLT57dmFyc30tPntwcml2YXRlfSA9IDEgaWYgJGlzX3ByaXZhdGU7DQogICAgMTsN Cn0NCg0KDQojDQojIE1hcCBhbGwgdGhlIGNsYXNzIGFuZCBpbnN0YW5jZSBwcm9wZXJ0aWVzIHRv IHRoZWlyIGltcGxlbWVudGF0aW9uDQojDQpzdWIgbWFwX2FsbF9wcm9wZXJ0aWVzIHsNCiAgICBm b3IgbXkgJHR5cGUgKHF3KF9jbGFzc19wcm9wZXJ0aWVzIF9pbnN0YW5jZV9wcm9wZXJ0aWVzKSl7 DQogICAgICAgIGZvciBteSAkY2xhc3MgKGtleXMgJUNMQVNTRVMpew0KICAgICAgICAgICAgJm1h cF9zaW5nbGVfcHJvcGVydHkoDQogICAgICAgICAgICAgICAgJGNsYXNzLA0KICAgICAgICAgICAg ICAgICRfLT57cHJvcGVydHlfbmFtZX0sDQogICAgICAgICAgICAgICAgJF8tPntwcm9wZXJ0eV92 YWx1ZX0sDQogICAgICAgICAgICAgICAgJF8tPntwcm9wZXJ0eV9kb2N9LA0KICAgICAgICAgICAg ICAgICRfLT57cHJvcGVydHlfdmFyc30sICR0eXBlIGVxICdfY2xhc3NfcHJvcGVydGllcycpIA0K ICAgICAgICAgICAgICAgICAgICBmb3IgQHskQ0xBU1NFU3skY2xhc3N9LT57JHR5cGV9fQ0KICAg ICAgICB9DQogICAgfQ0KDQogICAgIyBNYXAgYWxsIHRoZSB1bmF0dGFjaGVkIGZ1bmN0aW9ucw0K ICAgIG15ICRjbGFzc25hbWUgPSAkQ09ORklHe0dMT0JBTFNfTkFNRX0gfHwgJ0dMT0JBTFMnOw0K ICAgICZhZGRfY2xhc3MoJGNsYXNzbmFtZSk7DQogICAgZm9yIG15ICRmdW5jdGlvbiANCiAgICAg ICAgKGdyZXAgISgkRlVOQ1RJT05TeyRffS0+e2lzX21hcHBlZH0gfHwgJENMQVNTRVN7JF99KSwg a2V5cyAlRlVOQ1RJT05TKXsNCiAgICAgICAgICAgICZtYXBfc2luZ2xlX3Byb3BlcnR5KA0KICAg ICAgICAgICAgICAgICRjbGFzc25hbWUsICRmdW5jdGlvbiwgJGZ1bmN0aW9uLCAnJywgdW5kZWYs IDEpOw0KICAgIH0NCg0KICAgICMgTWFwIHN0YXRpYyBpbm5lciBjbGFzc2VzDQogICAgZm9yICRj bGFzc25hbWUgKGtleXMgJUNMQVNTRVMpew0KICAgICAgICBteSAkaSA9IDA7DQogICAgICAgIG15 IEB0b19yZW1vdmU7DQogICAgICAgIGZvciBteSAkY3Byb3AgKEB7JENMQVNTRVN7JGNsYXNzbmFt ZX0tPntjbGFzc19tZXRob2RzfX0pew0KICAgICAgICAgICAgbXkgJHByb3BuYW1lID0gJGNwcm9w LT57bWFwcGVkX25hbWV9Ow0KICAgICAgICAgICAgaWYgKCRDTEFTU0VTeyIkY2xhc3NuYW1lLiRw cm9wbmFtZSJ9KXsNCiAgICAgICAgICAgICAgICBwdXNoIEB0b19yZW1vdmUsICRpOw0KICAgICAg ICAgICAgICAgIHB1c2ggQHskQ0xBU1NFU3skY2xhc3NuYW1lfS0+e2lubmVyX2NsYXNzZXN9fSwg DQogICAgICAgICAgICAgICAgICAgIHtjbGFzc19uYW1lID0+ICIkY2xhc3NuYW1lLiIgLiAkY3By b3AtPnttYXBwZWRfbmFtZX19Ow0KICAgICAgICAgICAgICAgICRGVU5DVElPTlN7IiRjbGFzc25h bWUuJHByb3BuYW1lIn0gPSANCiAgICAgICAgICAgICAgICBkZWxldGUgJEZVTkNUSU9OU3siX18k Y2xhc3NuYW1lLiRwcm9wbmFtZSJ9Ow0KICAgICAgICAgICAgfSANCiAgICAgICAgICAgICRpKys7 DQogICAgICAgIH0NCiAgICAgICAgc3BsaWNlKEB7JENMQVNTRVN7JGNsYXNzbmFtZX0tPntjbGFz c19tZXRob2RzfX0sICRfLCAxKSANCiAgICAgICAgICAgIGZvciByZXZlcnNlIEB0b19yZW1vdmU7 DQogICAgfQ0KfQ0KDQojDQojIE1hcCBhIHNpbmdsZSBpbnN0YW5jZSBvciBjbGFzcyBmaWVsZCBv ciBtZXRob2QgDQojDQpzdWIgbWFwX3NpbmdsZV9wcm9wZXJ0eSB7DQogICAgbXkgKCRjbGFzcywg JHByb3BfbmFtZSwgJHByb3BfdmFsLCANCiAgICAkZGVzY3JpcHRpb24sICR2YXJzLCAkaXNfY2xh c3NfcHJvcCkgPSBAXzsNCiAgICBpZiAoISRGVU5DVElPTlN7JHByb3BfdmFsfSl7DQogICAgICAg IHB1c2ggQHskQ0xBU1NFU3skY2xhc3N9LT57JGlzX2NsYXNzX3Byb3AgDQogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICA/ICdjbGFzc19maWVsZHMnIDogJ2luc3RhbmNlX2ZpZWxk cyd9fSwgeyANCiAgICAgICAgICAgIGZpZWxkX25hbWUgICAgICAgICAgPT4gJHByb3BfbmFtZSwN CiAgICAgICAgICAgIGZpZWxkX2Rlc2NyaXB0aW9uICAgPT4gJGRlc2NyaXB0aW9uLA0KICAgICAg ICAgICAgZmllbGRfdmFsdWUgICAgICAgICA9PiAkcHJvcF92YWwsDQogICAgICAgICAgICBmaWVs ZF92YXJzICAgICAgICAgID0+ICR2YXJzIH07DQogICAgICAgICAgICByZXR1cm47DQogICAgfQ0K ICAgIG15ICVtZXRob2Q7DQogICAgbXkgJGZ1bmN0aW9uID0gJEZVTkNUSU9OU3skcHJvcF92YWx9 Ow0KICAgICRmdW5jdGlvbi0+e2lzX21hcHBlZH0gPSAxOw0KICAgICRtZXRob2R7bWFwcGVkX25h bWV9ID0gJHByb3BfbmFtZTsNCg0KICAgICRtZXRob2R7JF99ID0gJGZ1bmN0aW9uLT57JF99IGZv ciANCiAgICAgICAgcXcvIGFyZ3VtZW50X2xpc3QgZGVzY3JpcHRpb24gdmFycyAvOw0KDQogICAg cHVzaCBAeyRDTEFTU0VTeyRjbGFzc30tPnskaXNfY2xhc3NfcHJvcCANCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICA/ICdjbGFzc19tZXRob2RzJyANCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICA6ICdpbnN0YW5jZV9tZXRob2RzJ319LCBcJW1ldGhvZDsNCn0NCg0KDQoNCiMNCiMgQnVp bGQgdXAgdGhlIGZ1bGwgaGllcmFyY2h5IG9mIGNsYXNzZXMsIGluY2x1ZGluZyBmaWd1cmluZyBv dXQNCiMgd2hhdCBtZXRob2RzIGFyZSBvdmVycmlkZGVuIGJ5IHN1YmNsYXNzZXMsIGV0Yw0KIyBQ QVJBTTogVGhlIEpTIHNvdXJjZSBjb2RlDQojDQpzdWIgYnVpbGRfY2xhc3NfaGllcmFyY2h5IHsN CiAgICAjIEZpbmQgb3V0IHdoYXQgaXMgaW5oZXJpdGVkDQogICAgZm9yIG15ICRjbGFzcyAobWFw KCRDTEFTU0VTeyRffSwgc29ydCBrZXlzICVDTEFTU0VTKSl7DQogICAgICAgIG15ICRzdXBlcmNs YXNzbmFtZSA9ICRjbGFzcy0+e2V4dGVuZHN9Ow0KICAgICAgICAhJHN1cGVyY2xhc3NuYW1lIGFu ZCBuZXh0Ow0KICAgICAgICBteSAkc3VwZXJjbGFzcyA9ICRDTEFTU0VTeyRzdXBlcmNsYXNzbmFt ZX07DQogICAgICAgICRjbGFzcy0+e2luaGVyaXRzfSA9IHt9Ow0KICAgICAgICB3aGlsZSAoJHN1 cGVyY2xhc3Mpew0KICAgICAgICAgICAgJGNsYXNzLT57aW5oZXJpdHN9LT57JHN1cGVyY2xhc3Nu YW1lfSA9IHt9Ow0KICAgICAgICAgICAgbXkgQGluc3RhbmNlX2ZpZWxkczsNCiAgICAgICAgICAg IG15IEBpbnN0YW5jZV9tZXRob2RzOw0KDQogICAgICAgICAgICAmaGFuZGxlX2luc3RhbmNlX21l dGhvZHMoJHN1cGVyY2xhc3MsICRzdXBlcmNsYXNzbmFtZSwgDQogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgJGNsYXNzLCBcQGluc3RhbmNlX21ldGhvZHMpOw0KDQogICAg ICAgICAgICAmaGFuZGxlX2luc3RhbmNlX2ZpZWxkcygkc3VwZXJjbGFzcywgJHN1cGVyY2xhc3Nu YW1lLCANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRjbGFzcywgXEBpbnN0 YW5jZV9maWVsZHMpOw0KDQogICAgICAgICAgICAkc3VwZXJjbGFzc25hbWUgPSAkc3VwZXJjbGFz cy0+e2V4dGVuZHN9Ow0KICAgICAgICAgICAgJHN1cGVyY2xhc3MgPSAkc3VwZXJjbGFzc25hbWUg PyAkQ0xBU1NFU3skc3VwZXJjbGFzc25hbWV9IDogdW5kZWY7DQogICAgICAgIH0NCiAgICB9DQp9 DQoNCiMNCiMgVGhpcyBpcyBqdXN0IGEgaGVscGVyIGZ1bmN0aW9uIGZvciBidWlsZF9jbGFzc19o aWVyYXJjaHkNCiMgYmVjYXVzZSB0aGF0IGZ1bmN0aW9uIHdhcyBnZXR0aW5nIHdheSBvdmVyc2l6 ZWQgDQojDQpzdWIgaGFuZGxlX2luc3RhbmNlX21ldGhvZHMgew0KICAgIG15ICgkc3VwZXJjbGFz cywgJHN1cGVyY2xhc3NuYW1lLCAkY2xhc3MsICRpbnN0YW5jZV9tZXRob2RzKSA9IEBfOw0KICAg IGlmICgkc3VwZXJjbGFzcy0+e2luc3RhbmNlX21ldGhvZHN9KXsNCiAgICAgICAgSU5TVEFOQ0Vf TUVUSE9EUzogDQogICAgICAgIGZvciBteSAkYmFzZV9tZXRob2QgKEB7JHN1cGVyY2xhc3MtPntp bnN0YW5jZV9tZXRob2RzfX0pew0KICAgICAgICAgICAgZm9yIG15ICRtZXRob2QgKEB7JGNsYXNz LT57aW5zdGFuY2VfbWV0aG9kc319KXsNCiAgICAgICAgICAgICAgICBpZiAoJCRiYXNlX21ldGhv ZHttYXBwZWRfbmFtZX0gZXEgJCRtZXRob2R7bWFwcGVkX25hbWV9KXsNCg0KICAgICAgICAgICAg ICAgICAgICAjIENhcnJ5IG92ZXIgdGhlIGRlc2NyaXB0aW9uIGZvciBvdmVycmlkZGVuIG1ldGhv ZHMgd2l0aA0KICAgICAgICAgICAgICAgICAgICAjIG5vIGRlc2NyaXB0aW9uICh0byBiZSBqYXZh ZG9jIGNvbXBsaWFudCkNCiAgICAgICAgICAgICAgICAgICAgaWYgKCgkYmFzZV9tZXRob2QtPntk ZXNjcmlwdGlvbn0gb3IgJGJhc2VfbWV0aG9kLT57dmFyc30pIA0KICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGFuZCBub3QgJG1ldGhvZC0+e2Rlc2NyaXB0aW9ufSl7DQoNCiAgICAgICAgICAg ICAgICAgICAgICAgICRtZXRob2QtPntkZXNjcmlwdGlvbn0gPSAkYmFzZV9tZXRob2QtPntkZXNj cmlwdGlvbn07DQogICAgICAgICAgICAgICAgICAgICAgICBmb3IgbXkgJHZhcmtleSAoa2V5cygl eyRiYXNlX21ldGhvZC0+e3ZhcnN9fSkpew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICRt ZXRob2QtPnt2YXJzfS0+eyR2YXJrZXl9IA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICA9ICRiYXNlX21ldGhvZC0+e3ZhcnN9LT57JHZhcmtleX0NCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHVubGVzcyAkbWV0aG9kLT57dmFyc30tPnskdmFya2V5fTsNCiAgICAg ICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAg ICAgICAgICBuZXh0IElOU1RBTkNFX01FVEhPRFM7DQogICAgICAgICAgICAgICAgfQ0KICAgICAg ICAgICAgfQ0KICAgICAgICAgICAgZm9yIChrZXlzICV7JGNsYXNzLT57aW5oZXJpdHN9fSl7DQog ICAgICAgICAgICAgICAgbXkgJGluaGVyaXRlZCA9ICRjbGFzcy0+e2luaGVyaXRzfS0+eyRffTsN CiAgICAgICAgICAgICAgICBmb3IgbXkgJG1ldGhvZCAoQHskaW5oZXJpdGVkLT57aW5zdGFuY2Vf bWV0aG9kc319KXsNCiAgICAgICAgICAgICAgICAgICAgbmV4dCBJTlNUQU5DRV9NRVRIT0RTIA0K ICAgICAgICAgICAgICAgICAgICAgICAgaWYgJCRiYXNlX21ldGhvZHttYXBwZWRfbmFtZX0gZXEg JG1ldGhvZDsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQogICAgICAgICAgICBw dXNoIEAkaW5zdGFuY2VfbWV0aG9kcywgJCRiYXNlX21ldGhvZHttYXBwZWRfbmFtZX07DQogICAg ICAgIH0NCiAgICAgICAgJGNsYXNzLT57aW5oZXJpdHN9LT57JHN1cGVyY2xhc3NuYW1lfS0+e2lu c3RhbmNlX21ldGhvZHN9IA0KICAgICAgICAgICAgPSAkaW5zdGFuY2VfbWV0aG9kczsNCiAgICB9 DQp9DQoNCiMNCiMgVGhpcyBpcyBqdXN0IGEgaGVscGVyIGZ1bmN0aW9uIGZvciBidWlsZF9jbGFz c19oaWVyYXJjaHkNCiMgYmVjYXVzZSB0aGF0IGZ1bmN0aW9uIHdhcyBnZXR0aW5nIHdheSBvdmVy c2l6ZWQgDQojDQpzdWIgaGFuZGxlX2luc3RhbmNlX2ZpZWxkcyB7DQogICAgbXkgKCRzdXBlcmNs YXNzLCAkc3VwZXJjbGFzc25hbWUsICRjbGFzcywgJGluc3RhbmNlX2ZpZWxkcykgPSBAXzsNCiAg ICBpZiAoJHN1cGVyY2xhc3MtPntpbnN0YW5jZV9maWVsZHN9KXsNCiAgICAgICAgSU5TVEFOQ0Vf RklFTERTOiANCiAgICAgICAgZm9yIG15ICRiYXNlX2ZpZWxkICAoQHskc3VwZXJjbGFzcy0+e2lu c3RhbmNlX2ZpZWxkc319KXsNCiAgICAgICAgICAgIGZvciBteSAkZmllbGQgKEB7JGNsYXNzLT57 aW5zdGFuY2VfZmllbGRzfX0pew0KICAgICAgICAgICAgICAgIG5leHQgSU5TVEFOQ0VfRklFTERT IGlmICRmaWVsZCBlcSAkYmFzZV9maWVsZDsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIHB1 c2ggQCRpbnN0YW5jZV9maWVsZHMsICRiYXNlX2ZpZWxkLT57ZmllbGRfbmFtZX07DQogICAgICAg IH0NCiAgICAgICAgJGNsYXNzLT57aW5oZXJpdHN9LT57JHN1cGVyY2xhc3NuYW1lfS0+e2luc3Rh bmNlX2ZpZWxkc30gDQogICAgICAgICAgICA9ICRpbnN0YW5jZV9maWVsZHM7DQogICAgfQ0KfQ0K DQojDQojIFNldCBhbGwgdGhlIGNsYXNzIGNvbnN0cnVjdG9ycw0KIw0Kc3ViIHNldF9jbGFzc19j b25zdHJ1Y3RvcnMgew0KICAgIGZvciBteSAkY2xhc3NuYW1lIChrZXlzICVDTEFTU0VTKXsNCiAg ICAgICAgbXkgJGNvbnN0cnVjdG9yID0gJEZVTkNUSU9OU3skY2xhc3NuYW1lfTsNCiAgICAgICAg JENMQVNTRVN7JGNsYXNzbmFtZX0tPntjb25zdHJ1Y3Rvcl9hcmdzfSA9IA0KICAgICAgICAkY29u c3RydWN0b3ItPnthcmd1bWVudF9saXN0fTsNCiAgICAgICAgJENMQVNTRVN7JGNsYXNzbmFtZX0t Pntjb25zdHJ1Y3Rvcl9kZXRhaWx9IA0KICAgICAgICAgICAgPSAkY29uc3RydWN0b3ItPntkZXNj cmlwdGlvbn07DQoNCiAgICAgICAgJENMQVNTRVN7JGNsYXNzbmFtZX0tPntjb25zdHJ1Y3Rvcl92 YXJzfSA9ICRjb25zdHJ1Y3Rvci0+e3ZhcnN9IHx8IHt9Ow0KICAgIH0NCn0NCg0KIyANCiMgQ2xl YXIgb3V0IGV2ZXJ5dGhpbmcgZnJvbSB0aGUgcGFyc2VkIGNsYXNzZXMgYW5kIGZ1bmN0aW9ucw0K Iw0Kc3ViIHJlc2V0X3BhcnNlciB7DQogICAgJUNMQVNTRVMgPSAoKTsNCiAgICAlRlVOQ1RJT05T ID0gKCk7DQp9DQoNCiMNCiMgU2V0IGdsb2JhbCBwYXJhbWV0ZXJzIGZvciB0aGUgcGFyc2VyDQoj DQpzdWIgY29uZmlndXJlX3BhcnNlciB7DQogICAgJUNPTkZJRyA9IEBfOw0KfQ0KDQojDQojIFNl dCB0aGUgaW5pdGlhbCBkZWZhdWx0cyBmb3IgdGhlIHBhcnNlcg0KIw0Kc3ViIGluaXRpYWxpemVf cGFyc2VyIHsNCiAgICAkQ09ORklHe0dMT0JBTFNfTkFNRX0gfHw9ICdHTE9CQUxTJzsNCn0NCg0K Iw0KIyBSdW4gdGhyb3VnaCB0aGUgc291cmNlIGFuZCBjb252ZXJ0ICdjb25mdXNpbmcnIEphdmFT Y3JpcHQgY29uc3RydWN0cw0KIyBpbnRvIG9uZXMgdGhhdCBhcmUgdW5kZXJzdG9vZCBieSB0aGUg cGFyc2VyLCBhcyB3ZWxsIGFzIHN0cmlwcGluZw0KIyBvdXQgdW53YW50ZWQgY29tbWVudCBibG9j a3MuIA0KIw0KIyBGb3IgZXhhbXBsZToNCiMgIA0KIyAgRm9vLnByb3RvdHlwZSA9IHsgDQojICAg ICBiYXI6IGZ1bmN0aW9uKCl7IHJldHVybiAiRWVwISI7IH0sDQojICAgICBiYXo6ICJIYSEiDQoj ICB9IA0KIw0KIyAgYmVjb21lcw0KIw0KIyAgRm9vLnByb3RvdHlwZS5iYXIgPSBmdW5jdGlvbigp eyByZXR1cm4gIkVlcCEiOyB9Ow0KIyAgRm9vLnByb3RvdHlwZS5iYXogPSAiSGEhIjsNCiMNCnN1 YiBwcmVwcm9jZXNzX3NvdXJjZSB7DQogICAgbXkgKCRzcmMpID0gQF87DQoNCiAgICAjIE1ha2Ug YWxsIHRoZSBAZXh0ZW5kcyB0YWdzIGludG8gQGJhc2UgdGFncw0KICAgICRzcmMgPX4gcy9cQGV4 dGVuZHNcYi9cQGJhc2UvZzsNCg0KICAgICMgVGhpcyBoYWQgYmV0dGVyIG5vdCBicmVhayBhbnl0 aGluZyENCiAgICAkc3JjID0gJmRlY29uc3RydWN0X2dldHNldCgkc3JjKTsNCiAgIA0KICAgICMg Q29udmVydDoNCiAgICAjICAgICAvKiogQGNvbnN0cnVjdG9yICovDQogICAgIyAgICAgRm9vLkJh ciA9IGZ1bmN0aW9uKCl7Li4ufQ0KICAgICMgdG86DQogICAgIyAgICAgLyoqIEBjb25zdHJvY3Rv ciAqLw0KICAgICMgICAgIEZvby5CYXIgPSBmdW5jdGlvbigpe30NCiAgICAjICAgICAvKiogQGNv bnN0cnVjdG9yICovDQogICAgIyAgICAgZnVuY3Rpb24gRm9vLkJhcigpey4uLn0NCiAgICAjDQog ICAgIyBOb3RlIHRoYXQgd2UgaGF2ZSB0byBrZWVwIHRoZSBvcmlnaW5hbCBkZWNsYXJhdGlvbiBz byB0aGF0IEZvby5CYXINCiAgICAjIGNhbiBiZSByZWNvZ25pemVkIGFzIGEgbmVzdGVkIGNsYXNz LiBZZXMsIEkga25vdyBpdCdzIGJhZC4uLg0KICAgICRzcmMgPX4gcyENCiAgICAgICAgKCRKU0RP Q19DT01NRU5UXHMqKQ0KICAgICAgICAoPzp2YXJccyopPyhcdysoPzpcLlx3KykqPykNCiAgICAg ICAgXHMqPQ0KICAgICAgICAoXHMqZnVuY3Rpb24pKD89XHMqJEJBTF9QQVJFTlxzKlx7KQ0KICAg ICAgICAhaW5kZXgoJDEsICdAY29uc3RydWN0b3InKSA9PSAtMSA/ICIkMSQyID0gJDMiIDogIiQx JDIgPSBmdW5jdGlvbigpe307XG4kMSQzICQyIiFlZ3g7DQoNCiAgICAjIHJlbW92ZSBhbGwgdW5p bnRlcmVzdGluZyBjb21tZW50cywgYnV0IG9ubHkgaWYgdGhleSdyZSBub3QgaW5zaWRlDQogICAg IyBvZiBvdGhlciBjb21tZW50cyAgICAgDQogICAgIyAoYWRhcHRlZCBmcm9tIEplZmZyZXkgRnJp ZWRsJ3MgIk1hc3RlcmluZyBSZWd1bGFyIEV4cHJlc3Npb25zIg0KICAgIHsNCiAgICAgICBubyB3 YXJuaW5nczsNCiAgICAgICAkc3JjID1+IHMvDQogICAgICAgICAgKCROT05RVU9URSt8DQogICAg ICAgICAgICAgJEpTRE9DX0NPTU1FTlQkTk9OUVVPVEUqfA0KICAgICAgICAgICAgICREUVVPVEUk Tk9OUVVPVEUqfA0KICAgICAgICAgICAgICRTUVVPVEUkTk9OUVVPVEUqKQ0KICAgICAgICAgIHwk TUxJTkVfQ09NTUVOVHwkU0xJTkVfQ09NTUVOVC8kMS9neDsNCg0KICAgICAgICAxIHdoaWxlICRz cmMgPX4gcy8kSlNET0NfQ09NTUVOVFxzKigkSlNET0NfQ09NTUVOVCkvJDEvZzsNCiAgICB9DQoN CiAgICAjIENvbGxhcHNlIGFsbCBzdHJpbmcgbGl0ZXJhbHMgaW50byBzaW5nbGUtY2hhcmFjdGVy IHN0cmluZ3MNCiAgICB7DQogICAgICAgIG5vIHdhcm5pbmdzOw0KICAgICAgICAkc3JjID1+IHMv DQogICAgICAgICAgICgkTk9OUVVPVEUrfA0KICAgICAgICAgICAgICRKU0RPQ19DT01NRU5UJE5P TlFVT1RFKil8DQogICAgICAgICAgICAgKCREUVVPVEUpfA0KICAgICAgICAgICAgICgkU1FVT1RF KQ0KICAgICAgICAgIC8kMSA/ICQxIDogJDIgPyAnInMiJyA6ICIncyciL2VneDsNCiAgICB9DQoN CiAgICANCg0KICAgICMgQWx0ZXIgdGhlIHByb3RvdHlwZS1pbml0aWFsaXphdGlvbiBibG9ja3MN CiAgICAkc3JjID1+IHMvDQogICAgICAgKFx3Kyg/OlwuXHcrKSopXC5wcm90b3R5cGUNCiAgICAg ICBccyo9XHMqKCRCQUxfQlJBQ0UpL2RlY29uc3RydWN0X3Byb3RvdHlwZSgkMSwgJDIpL2VneDsN Cg0KICAgICMgTWFyayBhbGwgY29uc3RydWN0b3JzIGJhc2VkIG9uICduZXcnIHN0YXRlbWVudHMN CiAgICBteSAlc2VlbjsNCiAgICBteSBAY2xhc3NuYW1lcyA9ICBncmVwIHsgbm90ICRzZWVueyRf fSsrIH0gDQogICAgICAgICRzcmMgPX4gL1xibmV3XHMrKFx3Kyg/OlwuXHcrKSopXHMqXCgvZzsN CiAgICBmb3IgbXkgJGNuYW1lIChAY2xhc3NuYW1lcyl7DQogICAgICAgICRzcmMgPX4gcy8oJEpT RE9DX0NPTU1FTlQ/KQ0KICAgICAgICAgICAgICAgICAgICAoPz1ccypmdW5jdGlvblxzK1xRJGNu YW1lXEVccyokQkFMX1BBUkVODQogICAgICAgICAgICAgICAgICAgIFxzKiRCQUxfQlJBQ0UpDQog ICAgICAgICAgICAgICAgLyZhbm5vdGF0ZV9jb21tZW50KCQxLCAnQGNvbnN0cnVjdG9yJykvZXg7 DQogICAgfQ0KDQogICAgJHNyYyA9fiBzLw0KICAgICAgICgkSlNET0NfQ09NTUVOVD8pXHMqDQog ICAgICAgKGZ1bmN0aW9uXHMrXHcrKD86XC5cdyspKlxzKiRCQUxfUEFSRU5ccyopDQogICAgICAg KCRCQUxfQlJBQ0UpDQogICAgICAgLyZkZWNvbnN0cnVjdF9jb25zdHJ1Y3RvcigkMSwgIiQyJDMi KS9lZ3g7DQoNCiAgICAkc3JjID1+IHMhDQogICAgICAgKD86dmFyXHMrKT8oXHcrKD86XC5cdysp KikNCiAgICAgICBccyo9XHMqDQogICAgICAgbmV3XHMrDQogICAgICAgKCRBTk9OX0ZVTkNUSU9O KSEmZGVjb25zdHJ1Y3Rfc2luZ2xldG9uKCQxLCAkMikhZWd4Ow0KDQogICAgJHNyYyA9ICZyZW1v dmVfZHluYW1pY19iaW5kaW5ncygkc3JjKTsNCg0KICAgICMgTWFyayBhbGwgdm9pZCBtZXRob2Rz IHdpdGggIkB0eXBlIHZvaWQiDQogICAgJHNyYyA9fiBzLygkSlNET0NfQ09NTUVOVD8pXHMqDQog ICAgICAgKCg/Og0KICAgICAgICAgICg/OmZ1bmN0aW9uXHMrXHcrKD86XC5cdyspKlxzKiRCQUxf UEFSRU5ccyopDQogICAgICAgICAgfA0KICAgICAgICAgICg/Olx3Kyg/OlwuXHcrKSpccyo9XHMq ZnVuY3Rpb25ccyooPzpcdytccyopPyRCQUxfUEFSRU5ccyopDQogICAgICAgKSRCQUxfQlJBQ0Up DQogICAgICAgLyZtYXJrX3ZvaWRfbWV0aG9kKCQxLCAkMikvZWd4Ow0KICAgIA0KICAgICRzcmM7 DQp9DQoNCiMNCiMgUmVtb3ZlIGR5bmFtaWMgYmluZGluZy4NCiMgQ2hhbmdlIHRoaXM6DQojDQoj ICAgZnVuY3Rpb24gTXlGdW5jKGNsYXNzKXsNCiMgICAgICAgdmFyIHggPSAyOw0KIyAgICAgICBj bGFzcy5wcm90b3R5cGUuZnVuYyA9IGZ1bmN0aW9uKCl7fTsNCiMgICAgICAgcmV0dXJuIHg7DQoj ICAgfQ0KIw0KIyB0bzoNCiMNCiMgICBmdW5jdGlvbiBNeUZ1bmMoY2xhc3Mpew0KIyAgICAgICB2 YXIgeCA9IDI7DQojDQojICAgICAgIHJldHVybiB4Ow0KIyAgIH0NCiMNCiMgYW5kIGNoYW5nZSB0 aGlzOg0KIw0KIyAgIGZ1bmN0aW9uIEJpbmRNZXRob2Qob2JqKXsNCiMgICAgICAgb2JqLnNvbWVG dW5jID0gZnVuY3Rpb24oKXsgcmV0dXJuIG51bGw7IH07DQojICAgICAgIHJldHVybiBvYmo7DQoj ICAgfQ0KIw0KIyB0bzoNCiMNCiMgICBmdW5jdGlvbiBCaW5kTWV0aG9kKG9iail7DQojDQojICAg ICAgIHJldHVybiBvYmo7DQojICAgfQ0KIw0Kc3ViIHJlbW92ZV9keW5hbWljX2JpbmRpbmdzIHsN CiAgICBteSAoJHNyYykgPSBAXzsNCiAgICB3aGlsZSAoJHNyYyA9fiAvJFJFVF9GVU5DX0RFRi9n KXsNCiAgICAgICAgbXkgKCRmbmFtZSwgJHBhcmFtcywgJGRlZmluaXRpb24pID0gKCQxLCAkMiwg JDMpOw0KICAgICAgICBuZXh0IHVubGVzcyAkZGVmaW5pdGlvbiA9fiAvXGJmdW5jdGlvblxifFx3 K1wucHJvdG90eXBlXC4vOw0KICAgICAgICBteSBAcGFyYW1zID0gc3BsaXQoL1xzKixccyovLCBz dWJzdHIoJHBhcmFtcywgMSwgbGVuZ3RoKCRwYXJhbXMpIC0gMikpOw0KICAgICAgICBmb3IgbXkg JHBhcmFtIChAcGFyYW1zKXsNCiAgICAgICAgICAgICRzcmMgPX4gcy9cYiRwYXJhbVwucHJvdG90 eXBlXC5bXjtcbl0qWztcbl0vL2c7DQogICAgICAgICAgICAkc3JjID1+IHMvXGIkcGFyYW1cLlx3 KyA9ICRBTk9OX0ZVTkNUSU9OLy9nOw0KICAgICAgICB9DQogICAgfQ0KICAgICRzcmM7DQp9DQoN CiMNCiMgQW5ub3RhdGUgYSBtZXRob2QgYXMgYmVpbmcgdm9pZCBpZiBubyBAdHlwZSBjYW4gYmUg Zm91bmQsIGFuZCB0aGVyZSBpcyBubw0KIyBzdGF0ZW1lbnQgdG8gcmV0dXJuIGEgdmFsdWUgaW4g dGhlIG1ldGhvZCBpdHNlbGYuDQojDQpzdWIgbWFya192b2lkX21ldGhvZCB7DQogICAgbXkgKCRk b2MsICRmdW5jZGVmKSA9IEBfOw0KICAgIHJldHVybiAiJGRvY1xuJGZ1bmNkZWYiIGlmICRkb2Mg PX4gL1xAKGNvbnN0cnVjdG9yfHR5cGV8cmV0dXJucz8pXGIvOyAgICANCiAgICBteSAoJGZib2R5 KSA9ICRmdW5jZGVmID1+IC9eW157XSooJEJBTF9CUkFDRSkvOw0KICAgICRmYm9keSA9fiBzLyRG VU5DX0RFRi9mdW5jdGlvbiB4KCl7fS9nOw0KICAgICRmYm9keSA9fiBzLyRBTk9OX0ZVTkNUSU9O L2Z1bmN0aW9uICgpe30vZzsNCiAgICAkZG9jID0gJmFubm90YXRlX2NvbW1lbnQoJGRvYywgJ0B0 eXBlIHZvaWQnKSANCiAgICAgICAgaWYgJGZib2R5ICF+IC9cYnJldHVyblxzKyg/Oig/Olx3Kyl8 KD86KFsiJ10pLio/XDEpfCRCQUxfUEFSRU4pLzsNCiAgICAiJGRvY1xuJGZ1bmNkZWYiOw0KfQ0K DQojDQojIEEgaGVscGVyIHRvIGNoYW5nZSBzaW5nbGV0b24gZGVjbGFyYXRpb25zIGxpa2UNCiMg DQojICAgICBNeVNpbmdsZXRvbiA9IG5ldyBmdW5jdGlvbigpe3RoaXMueD1mdW5jdGlvbigpe319 DQojDQojIGludG86DQojDQojICAgICBmdW5jdGlvbiBNeVNpbmdsZXRvbigpe30NCiMgICAgIE15 U2luZ2xldG9uLnByb3RvdHlwZS54ID0gZnVuY3Rpb24oKXt9Ow0KIw0Kc3ViIGRlY29uc3RydWN0 X3NpbmdsZXRvbiB7DQogICAgbXkgKCRjbGFzc25hbWUsICRkZWZpbml0aW9uKSA9IEBfOw0KICAg ICRkZWZpbml0aW9uID1+IHMvZnVuY3Rpb25ccyokQkFMX1BBUkVOXHMqXHsoLiopXH1ccyokLyQx L3M7DQogICAgJGRlZmluaXRpb24gPX4gcy9cYnRoaXNcLi8kY2xhc3NuYW1lLnByb3RvdHlwZVwu L2c7DQogICAgcXEjDQogICAgICAgIGZ1bmN0aW9uICRjbGFzc25hbWUoKXt9DQogICAgICAgICRk ZWZpbml0aW9uOyANCiAgICAjOw0KfQ0KDQojDQojIEEgaGVscGVyIHRvIHByZXByb2Nlc3Nfc291 cmNlLCBjaGFuZ2UgcHJvdG90eXBlLWluaXRpYWxpemF0aW9uDQojIGJsb2NrcyBpbnRvIG11bHRp cGxlIHByb3RvdHlwZS1wcm9wZXJ0eSBhc3NpZ25tZW50cw0KIw0Kc3ViIGRlY29uc3RydWN0X3By b3RvdHlwZSB7DQogICAgbXkgKCRjbGFzcywgJHNyYykgPSBAXzsNCiAgICAkc3JjID1+IHMvXlx7 KC4qKVx9JC8kMS9zOw0KICAgICRzcmMgPX4gcyENCiAgICAgICAgKFx3KykNCiAgICAgICAgXHMq OlxzKg0KICAgICAgICAoDQogICAgICAgICRBTk9OX0ZVTkNUSU9ODQogICAgICAgIHwNCiAgICAg ICAgJEZVTkNfREVGDQogICAgICAgIHwNCiAgICAgICAgJEZVTkNfQ0FMTA0KICAgICAgICB8DQog ICAgICAgICRMSVRFUkFMDQogICAgICAgIHwNCiAgICAgICAgXHcrDQogICAgICAgICkNCiAgICAg ICAgXHMqLD8NCiAgICAhJGNsYXNzLnByb3RvdHlwZS4kMSA9ICQyOyFnc3g7DQogICAgDQogICAg JHNyYzsNCn0NCg0KIw0KIyBVbnBhY2tzIGEgY29uc3RydWN0b3IgaW50byBzZXBhcmF0ZSBjYWxs cw0KIw0Kc3ViIGRlY29uc3RydWN0X2NvbnN0cnVjdG9yIHsNCiAgICBteSAoJGRvYywgJGZ1bmNf ZGVmKSA9IEBfOw0KICAgIHJldHVybiAiJGRvYyRmdW5jX2RlZiIgdW5sZXNzICRkb2MgPX4gL1xA Y29uc3RydWN0b3IvOw0KICAgIG15ICgkY2xhc3NuYW1lKSA9ICRmdW5jX2RlZiA9fiAvZnVuY3Rp b25ccysoXHcrKD86XC5cdyspKikvOw0KICAgICRmdW5jX2RlZiA9fiBzLw0KICAgICAgICAoXHsu Klx9KSQNCiAgICAgICAgLyZkZWNvbnN0cnVjdF9pbm5lcl9jb25zdHJ1Y3RvcigkY2xhc3NuYW1l LCAkMSkvZXN4Ow0KICAgICIkZG9jJGZ1bmNfZGVmIjsNCn0NCg0Kc3ViIGRlY29uc3RydWN0X2lu bmVyX2NvbnN0cnVjdG9yIHsNCiAgICBteSAoJGNsYXNzbmFtZSwgJGlubmVyX3NyYykgPSBAXzsN CiAgICAkaW5uZXJfc3JjID0gc3Vic3RyKCRpbm5lcl9zcmMsIDEsIC0xKTsNCiAgICBteSBAZG9j X25fZm5hbWVzID0gJGlubmVyX3NyYyA9fiAvKCRKU0RPQ19DT01NRU5UPylccypmdW5jdGlvblxz KyhcdyspL2c7DQogICAgJGlubmVyX3NyYyA9fiBzLw0KICAgICAgICAoJEpTRE9DX0NPTU1FTlQp Pw0KICAgICAgICBccyoNCiAgICAgICAgdmFyDQogICAgICAgIFxzKw0KICAgICAgICAoXHcrKS8m YW5ub3RhdGVfY29tbWVudCgkMSkgLiAiXG4kY2xhc3NuYW1lXC5wcm90b3R5cGVcLiQyIi9lZ3g7 DQoNCiAgICAkaW5uZXJfc3JjID1+IHMvDQogICAgICAgICgkSlNET0NfQ09NTUVOVCk/XHMqDQog ICAgICAgIF5ccyoNCiAgICAgICAgZnVuY3Rpb24NCiAgICAgICAgXHMrDQogICAgICAgIChcdysp DQogICAgICAgIC8mYW5ub3RhdGVfY29tbWVudCgkMSkgLiAiXG4kY2xhc3NuYW1lXC5wcm90b3R5 cGVcLiQyID0gZnVuY3Rpb24iL2VnbXg7DQoNCiAgICB7IA0KICAgICAgICBubyB3YXJuaW5nczsN CiAgICAgICAgJGlubmVyX3NyYyA9fiBzLw0KICAgICAgICAgICAgKCRKU0RPQ19DT01NRU5UXHMq KT8NCiAgICAgICAgICAgIF5ccyp0aGlzKD89XC4pDQogICAgICAgICAgICAvJDEkY2xhc3NuYW1l LnByb3RvdHlwZS9nbXg7DQogICAgfQ0KDQogICAgIyBSZXBsYWNlIGFsbCBiaW5kaW5ncyBvZiBw cml2YXRlIG1ldGhvZHMgdG8gcHVibGljIG5hbWVzDQogICAgZm9yIChteSAkaSA9IDA7ICRpIDwg QGRvY19uX2ZuYW1lczsgJGkgKz0gMikNCiAgICB7DQogICAgICAgIG15ICgkZG9jLCAkZm5hbWUp ID0gQGRvY19uX2ZuYW1lc1skaSwgJGkgKyAxXTsNCiAgICAgICAgJGlubmVyX3NyYyA9fiBzLw0K ICAgICAgICAgICAgKCRKU0RPQ19DT01NRU5UXHMqDQogICAgICAgICAgICAkY2xhc3NuYW1lXC5w cm90b3R5cGVcLlx3KykNCiAgICAgICAgICAgIFxzKj1ccyoNCiAgICAgICAgICAgICRmbmFtZVxz KltcbjtdDQogICAgICAgICAgICAvJDEgPSBmdW5jdGlvbigpe30vZ3g7DQogICAgDQogICAgICAg ICRpbm5lcl9zcmMgPX4gcy8NCiAgICAgICAgICAgICgkY2xhc3NuYW1lXC5wcm90b3R5cGVcLlx3 KykNCiAgICAgICAgICAgIFxzKj1ccyoNCiAgICAgICAgICAgICRmbmFtZVxzKltcbjtdDQogICAg ICAgICAgICAvJGRvY1xuJDEgPSBmdW5jdGlvbigpe30vZ3g7DQogICAgfQ0KICAgICJ7fVxuJGlu bmVyX3NyYyI7DQp9DQoNCiMNCiMgRGVjb25zdHJ1Y3QgbW96aWxsYSdzIF9fZGVmaW5lR2V0dGVy X18gYW5kIF9fZGVmaW5lU2V0dGVyX18NCiMgKFllcywgSSBrbm93IHRoaXMgZ29lcyBhZ2FpbnN0 IG15IHByaW5jaXBsZXMuLi4pDQojDQpzdWIgZGVjb25zdHJ1Y3RfZ2V0c2V0IHsNCiAgICBteSAo JHNyYykgPSBAXzsNCiAgICAjIENyYWNrIG9wZW4gdGhlIGFzc2lnbm1lbnRzIGZvciBkZWZpbmUo R2V0dGVyfFNldHRlcikNCiAgICBteSAkY3JhY2sgPSBzdWIgeyANCiAgICAgICAgbXkgJGNvZGUg PSBzaGlmdDsgJGNvZGUgPX4gcy9eLiguKikuJC8kMS9zOw0KICAgICAgICBteSAoJG5hbWUpID0g c3BsaXQgIiwiLCAkY29kZTsgDQogICAgICAgICRuYW1lID1+IHMvLio/KFsnIl0pKFteJyJdKylc MS8kMi87DQogICAgICAgICRuYW1lOw0KICAgIH07DQogICAgZm9yIG15ICRwcmVmaXggKCdnZXQn LCAnc2V0Jyl7DQogICAgICAgIG15ICRmbmFtZSA9ICJkZWZpbmVcdSR7cHJlZml4fXRlciI7DQog ICAgICAgICRzcmMgPX4gcy8NCiAgICAgICAgICAgIChcdysoPzpcLlx3KykqDQogICAgICAgICAg ICBcLnByb3RvdHlwZSkNCiAgICAgICAgICAgIFwuX18ke2ZuYW1lfV9fXHMqKCRCQUxfUEFSRU4p Lw0KICAgICAgICAgICAgbXkgJG5hbWUgPSAkY3JhY2stPigkMik7DQogICAgICAgICAgICAiJDEu JG5hbWUgPSBudWxsIi9leDsNCiAgICB9DQogICAgJHNyYzsNCn0NCg0KDQojDQojIEFkZCBhbiBh bm5vdGF0aW9uIChAdGFnKSB0byBhIGRvY3VtZW50YXRpb24gYmxvY2suIFRoZSBibG9jayBpcyBh c3N1bWVkIHRvDQojIGJlIGEgdmFsaWQgSlNEb2MgZG9jdW1lbnRhdGlvbiBibG9jayA9PT4gL15c L1wqXCouKlwqXC8kLyAgDQojIGFuZCBubyBjaGVja2luZyBpcyBkb25lIHRvIHZlcmlmeSB0aGlz DQojDQpzdWIgYW5ub3RhdGVfY29tbWVudCB7DQogICAgbXkgJGFubm90YXRpb24gPSAkX1sxXSB8 fCAnQHByaXZhdGUnOyANCiAgICByZXR1cm4gIlxuLyoqICRhbm5vdGF0aW9uICovIiB1bmxlc3Mg JF9bMF07DQogICAgc3Vic3RyKCRfWzBdLCAwLCAtMikgLiAiIFxuJGFubm90YXRpb24gXG4qLyI7 DQp9DQoNCiMNCiMgVGhpcyBpcyBoZXJlIHRvIHN0b3AgcGVybCBmcm9tIHNlZ2ZhdWx0aW5nIGZy b20gZGVlcCByZWN1cnNpb24gaW4gcmVnZXhlcw0KIyBUaGUgZmlyc3QgY2hhcmFjdGVyIGluIHRo ZSB0ZXh0IF9zaG91bGRfIGJlIG9wZW5fdG9rZW4sIGFzIGV2ZXJ5dGhpbmcNCiMgYmVmb3JlIG9w ZW5fdG9rZW4gd2lsbCBiZSBkaXNjYXJkZWQsIHVubGVzcyB0aGVyZSBpcyBubyBtYXRjaGluZyB0 ZXh0IA0KIyBhdCBhbGwuIA0KIw0Kc3ViIGZpbmRfYmFsYW5jZWRfYmxvY2sgew0KICAgIG15ICgk b3Blbl90b2tlbiwgJGNsb3NlX3Rva2VuLCAkdGV4dCkgPSBAXzsNCiAgICBteSAoJGNvdW50LCAk b3BlbiwgJGNsb3NlKSA9ICgwLCAwLCAwKTsNCiAgICByZXR1cm4gKCcnLCAkdGV4dCkgdW5sZXNz ICR0ZXh0ID1+IC9cUSRvcGVuX3Rva2VuXEUvOw0KICAgICR0ZXh0ID1+IHMvXi4qPyg/PVxRJG9w ZW5fdG9rZW5cRSkvL3M7DQogICAgZm9yIChzcGxpdCAvLywgJHRleHQpew0KICAgICAgICRjb3Vu dCsrOw0KICAgICAgICRvcGVuKysgaWYgJF8gZXEgJG9wZW5fdG9rZW47DQogICAgICAgJGNsb3Nl KysgaWYgJF8gZXEgJGNsb3NlX3Rva2VuOw0KICAgICAgIGxhc3QgdW5sZXNzICgkb3BlbiAhPSAk Y2xvc2UpOw0KICAgIH0NCiAgICB3YXJuICJVbmJhbGFuY2VkIGJsb2NrXG4iIGlmICgkb3BlbiAh PSAkY2xvc2UpOw0KICAgIChzdWJzdHIoJHRleHQsIDAsICRjb3VudCksIHN1YnN0cigkdGV4dCwg JGNvdW50KSk7IA0KfQ0KDQojDQojIFJlbW92ZSB0aGUgJENPTkZJR3tHTE9CQUxTX05BTUV9IGNs YXNzIGlmIGl0IGRvZXNuJ3QgY29udGFpbiBhbnl0aGluZw0KIw0Kc3ViIGZpbHRlcl9nbG9iYWxz IHsNCiAgICBteSAkZ2xvYmFsID0gJENMQVNTRVN7JENPTkZJR3tHTE9CQUxTX05BTUV9fTsNCiAg ICBkZWxldGUgJENMQVNTRVN7JENPTkZJR3tHTE9CQUxTX05BTUV9fSBpZg0KICAgICAgICBub3Qg KGRlZmluZWQgJGdsb2JhbC0+e2NvbnN0cnVjdG9yX2FyZ3N9IHx8DQogICAgICAgICAgICAgICAg ZGVmaW5lZCAkZ2xvYmFsLT57Y29uc3RydWN0b3JfZGV0YWlsfSkgDQogICAgICAgICAgICAmJiBu b3QgKEB7JGdsb2JhbC0+e2luc3RhbmNlX21ldGhvZHN9fSB8fA0KICAgICAgICAgICAgQHskZ2xv YmFsLT57aW5zdGFuY2VfZmllbGRzfX0gfHwNCiAgICAgICAgICAgIEB7JGdsb2JhbC0+e2NsYXNz X21ldGhvZHN9fSB8fA0KICAgICAgICAgICAgQHskZ2xvYmFsLT57Y2xhc3NfZmllbGRzfX0pOw0K DQogICAgIyBBbHNvIGdldCByaWQgb2YgZXh0cmEgaW5mbyB1bmRlciB0aGUgJ19fZmlsZXNfXycg a2V5DQogICAgZGVsZXRlICRDTEFTU0VTe19fRklMRVNfX30tPnskX30gZm9yIHF3KGNvbnN0cnVj dG9yX3BhcmFtcyBjb25zdHJ1Y3Rvcl9hcmdzDQogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBjb25zdHJ1Y3Rvcl9kZXRhaWwgY2xhc3NfbWV0aG9kcw0KICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3RydWN0b3JfdmFycyk7DQp9DQoN Cg0KIw0KIyBUcnkgdG8gZ3JhYiB0aGUgZmlyc3QgYmxvY2sgY29tbWVudCBmcm9tIHRoZSBmaWxl IHRoYXQgaGFzIGEgQGZpbGVvdmVydmlldw0KIyB0YWcgaW4gaXQsIGFuZCBnZXQgdGhlIGZpbGUg aW5mbyBmcm9tIHRoZXJlDQojDQpzdWIgcGFyc2VfZmlsZV9pbmZvIHsNCiAgICBteSAoJHNyYykg PSBAXzsNCiAgICBteSAlZmlsZWluZm8gPSAoIHNyYyA9PiAkc3JjICk7DQogICAgd2hpbGUgKCRz cmMgPX4gLygkSlNET0NfQ09NTUVOVCkvZyl7DQogICAgICAgbG9jYWwgJF8gPSBzdWJzdHIoJDEs IDMsIGxlbmd0aCgkMSkgLSA1KTsgIyBHZXQgdGhlIGFjdHVhbCBjb250ZW50IA0KICAgICAgIGlm ICgvXEBmaWxlb3ZlcnZpZXdcYi8pew0KICAgICAgICAgIG15ICRkb2MgPSBwYXJzZV9qc2RvY19j b21tZW50KCRfLCAxKTsNCiAgICAgICAgICAlZmlsZWluZm8gPSAoJXskZG9jLT57dmFyc319LCAl ZmlsZWluZm8pOw0KICAgICAgICAgIGxhc3Q7DQogICAgICAgfQ0KICAgIH0gICAgICAgICAgICAg ICAgICAgICAgICANCiAgICAkQ0xBU1NFU3tfX0ZJTEVTX199LT57JENUWF9GSUxFfSA9IFwlZmls ZWluZm8gaWYgJENUWF9GSUxFOw0KfQ0KDQoxOw0K |
From: Cameron S. <cam...@gm...> - 2005-06-30 11:29:10
|
Gabriel, I notice that you have added a @package tag to the XMI support in jsdoc 1.9.5.2. Thankyou. Unfortunately it doesn't quite work as expected. If I create a tag: @package net.sourceforge.mapbuilder.model then I'd expect to have XMI that looks something like: <package name="net"> <package name="sourceforge"> <package name="mapbuilder"> <package name="model"> Instead I get: <package name="net.sourceforge.mapbuilder.model"> I've raised this as a bug at: https://sourceforge.net/tracker/index.php?func=detail&aid=1230290&group_id=30801&atid=400644 Gabriel Reid wrote: >>Would it be possible to add a @package attribute to classes? >>And then for this @package attribute to be included in the XMI? > > > This shouldn't be a problem at all, but could you register it as an RFE > on the SF.net site? Could you also point me in the right direction for > how this is to be integrated in XMI? > > Gabriel > > > ------------------------------------------------------- > SF.Net email is sponsored by: Discover Easy Linux Migration Strategies > from IBM. Find simple to follow Roadmaps, straightforward articles, > informative Webcasts and more! Get everything you need to get up to > speed, fast. http://ads.osdn.com/?ad_id=7477&alloc_id=16492&op=click > _______________________________________________ > Jsdoc-user mailing list > Jsd...@li... > https://lists.sourceforge.net/lists/listinfo/jsdoc-user > -- Cameron Shorter http://cameron.shorter.net |
From: Cameron S. <cam...@gm...> - 2005-06-24 10:45:58
|
Gabriel Reid wrote: >>Would it be possible to add a @package attribute to classes? >>And then for this @package attribute to be included in the XMI? > > > This shouldn't be a problem at all, but could you register it as an RFE > on the SF.net site? Done. > Could you also point me in the right direction for > how this is to be integrated in XMI? I wish I could, but I don't know much about XMI apart from the fact that it is a useful XML format for storing UML diagrams. -- Cameron Shorter http://cameron.shorter.net |
From: Gabriel R. <gab...@gm...> - 2005-06-23 15:03:27
|
> Would it be possible to add a @package attribute to classes? > And then for this @package attribute to be included in the XMI? This shouldn't be a problem at all, but could you register it as an RFE on the SF.net site? Could you also point me in the right direction for how this is to be integrated in XMI? Gabriel |
From: Cameron S. <cam...@gm...> - 2005-06-23 12:13:08
|
Gabrielle, Would it be possible to add a @package attribute to classes? And then for this @package attribute to be included in the XMI? -- Cameron Shorter http://cameron.shorter.net |
From: Cameron S. <cam...@gm...> - 2005-06-23 12:07:07
|
Hello Gabriel and Tom, I hope I find you in good health. I'm actually not expecting UML->javascript from jsdoc, but I would like to keep my UML diagrams up to date with my code. What I'd like to do is: 1. Use jsdoc to create UML (as XMI) (version 1) 2. Extend the UML by drawing class and sequence diagrams (version 2). 3. Update the javascript code. 4. Again use jsdoc to greate UML (version 3). 5. Create a new UML which includes the latest classes from version 3 and the class/sequence diagrams from version 2. I assume that step 5 could be done with a stylesheet? Do you know of an open source tool or stylesheet that can do step 5? -- Cameron Shorter http://cameron.shorter.net |
From: Cameron S. <sho...@op...> - 2005-03-21 20:06:33
|
Kralidis,Tom [Burlington] wrote: >>Gabriel, >>I'm very excited. This is great. >>I've just reverse engineered our JS code and I seem to be >>able to view >>all our class diagrams, including classes, class >>dependancies, functions >>and internal variables. >> >>This is the main requirement I was looking for. >>What else are you considering incorporating? >> >>Mapbuilder people (and Gabriel), >>It would be great if someone knew of a tool which can automatically >>build class diagrams and place the classes on a page for you. >> >>Do any of the commercial UML tools do this? >> >> >> > >I just tried this in Enterprise Architect and it imports the XMI >generated by jsdoc. NICE!!!!! > >As Gabriel mentions, it only outputs the class hierarchies. i.e. I >would need to write my own component diagram which USES the output >classes. A nice thing would be to have something to generate a >component diagram which lays out the classes, etc. into a view. Mind >you, I'm not sure if that's a job for jsdoc or a given software project >like mapbuilder to build our own layouts. > >..Tom > > Yes, I think there are 2 possible solutions here: 1. jsdoc (or some other UML tool) creates a class diagram and automatically places the classes into the diagram. I think this is probably a role for a UML tool as I'm sure this problem would have already been solved. I know that Poseidon imports java code and builds a class diagram layout based on the import. 2. Maintain existing class diagrams. Ie, If I create a class diagram, then update the code, I'd like to run a program which incorporates the updates to the code into my class diagram(s). I think this wouldn't be too difficult using XSL. It goes something like this: a. Use jsdoc to create uml1.xmi b. In a UML tool (eg Poseidon), build class diagrams based on uml1.xmi. Save as uml2.xmi. c. Update code. d. Use jsdoc to create uml3.xmi e. Use XSL to replace the classes within uml2.xmi with the equivalent classes in uml3.xmi, but keep the layout information of the class diagrams. |
From: Kralidis,Tom [Burlington] <Tom...@ec...> - 2005-03-21 18:44:28
|
>=20 > Gabriel, > I'm very excited. This is great. > I've just reverse engineered our JS code and I seem to be > able to view=20 > all our class diagrams, including classes, class=20 > dependancies, functions=20 > and internal variables. >=20 > This is the main requirement I was looking for. > What else are you considering incorporating? >=20 > Mapbuilder people (and Gabriel), > It would be great if someone knew of a tool which can automatically > build class diagrams and place the classes on a page for you. >=20 > Do any of the commercial UML tools do this? >=20 I just tried this in Enterprise Architect and it imports the XMI generated by jsdoc. NICE!!!!! As Gabriel mentions, it only outputs the class hierarchies. i.e. I would need to write my own component diagram which USES the output classes. A nice thing would be to have something to generate a component diagram which lays out the classes, etc. into a view. Mind you, I'm not sure if that's a job for jsdoc or a given software project like mapbuilder to build our own layouts. ..Tom > We also need to think about breaking all our classes into their > directory structures. >=20 > Gabriel Reid wrote: >=20 > >Hi Cameron, > > > > =20 > > > >>Have you advanced any further on the XMI export idea? We > are about to > >>revisit our design documentation for > http://mapbuilder.sf.net and it > >>would be useful to have XMI data to support it. > >> =20 > >> > > > >I've just posted a version of JSDoc with basic support for XMI (and > >XML) output; it's version 1.9.3. Please give it a try and=20 > let me know > >what you'd like to see added/removed/changed/etc. > > > >To use the XMI export, use the "--format xmi" argument; for example: > > > > ./jsdoc.pl --format xmi test.js > > > >I do have a basic XMI export working, although it's not yet properly > >integrated in JSDoc. However, I'll either post a working=20 > copy on SF.net > >or email a copy of it to you later on this evening. > > > >Right now it just handles the class hierarchy; however, having the > >foundations down I think that filling out more functionality=20 > shouldn't > >present too much of a problem. >=20 |
From: Cameron S. <sho...@op...> - 2005-03-21 09:57:15
|
Gabriel Reid wrote: >>What else are you considering incorporating? >> >> > >Things I was thinking of adding were text documentation within the XMI, >and additional relationships like composition and aggregation. > >If you or members of your development team have any more ideas or >requests or whatever, please don't hesitate to contact me. > >Regards, > > Gabriel > > Thanks Gabriel, It is very nice of you to offer. One more thing that would be useful would be to describe our directory structure as packages within the XMI. Ie, We have directories for widget, model, and tool. It would be good if jsdoc recognised a @package tag which I could put into the javascript. Eg: /** * Base Class for widgets. * @constructor * @package net.sourceforge.mapbuilder.widget * @author Mike Adair * @param widget Pointer to the widget instance being created * @param widgetNode The widget's XML object node from the configuration document. * @param model The model object that this widget belongs to. */ function WidgetBase(widget,widgetNode,model) { widget.model = model; widget.widgetNode = widgetNode; Alternatively, you could potentially extract the package name from the directory structure. Although I think that might be harder to support in jsdoc. |
From: Cameron S. <sho...@op...> - 2005-03-20 20:53:36
|
Gabriel, I'm very excited. This is great. I've just reverse engineered our JS code and I seem to be able to view all our class diagrams, including classes, class dependancies, functions and internal variables. This is the main requirement I was looking for. What else are you considering incorporating? Mapbuilder people (and Gabriel), It would be great if someone knew of a tool which can automatically build class diagrams and place the classes on a page for you. Do any of the commercial UML tools do this? We also need to think about breaking all our classes into their directory structures. Gabriel Reid wrote: >Hi Cameron, > > > >>Have you advanced any further on the XMI export idea? We are about to >>revisit our design documentation for http://mapbuilder.sf.net and it >>would be useful to have XMI data to support it. >> >> > >I've just posted a version of JSDoc with basic support for XMI (and XML) >output; it's version 1.9.3. Please give it a try and let me know what >you'd like to see added/removed/changed/etc. > >To use the XMI export, use the "--format xmi" argument; for example: > > ./jsdoc.pl --format xmi test.js > >I do have a basic XMI export working, although it's not yet properly >integrated in JSDoc. However, I'll either post a working copy on SF.net or >email a copy of it to you later on this evening. > >Right now it just handles the class hierarchy; however, having the >foundations down I think that filling out more functionality shouldn't >present too much of a problem. > > >Regards, > > Gabriel > > > > > |
From: Gabriel R. <gab...@gm...> - 2005-03-20 11:04:52
|
Hi Cameron, > Have you advanced any further on the XMI export idea? We are about to > revisit our design documentation for http://mapbuilder.sf.net and it > would be useful to have XMI data to support it. First of all, sorry about repeatedly promising to get this done and then not getting it done. I do have a basic XMI export working, although it's not yet properly integrated in JSDoc. However, I'll either post a working copy on SF.net or email a copy of it to you later on this evening. Right now it just handles the class hierarchy; however, having the foundations down I think that filling out more functionality shouldn't present too much of a problem. Regards, Gabriel |
From: Cameron S. <sho...@op...> - 2005-03-20 10:26:46
|
Gabriel, Have you advanced any further on the XMI export idea? We are about to revisit our design documentation for http://mapbuilder.sf.net and it would be useful to have XMI data to support it. Gabriel Reid wrote: >>You mentioned earlier that you were considering an XMI export from >>jsdoc. I'm interested to know your thoughts on this and whether you >>have plans to develop the idea further. >> >> > >Yes, I'm planning on developing this further, but I can't put an exact timeline on it. I'm certainly very interested in the idea. This week I'm working on getting all (or at least most) of the current feature requests taken care of, and then XML and XMI export are next on my list. I could have something releasable by the end of next week, and if there's interest in it I'll certainly try to get it ready ASAP. > >Gabriel > > > |
From: Kralidis,Tom [Burlington] <Tom...@ec...> - 2004-12-17 15:20:54
|
>=20 > Gabriel, >=20 > It is good news to hear you have an XML export from JSDocs. >=20 > I afraid I don't know much about the internals of XMI, but I'm=20 > forwarding this email onto Tom Kralidis who might be able to help. >=20 http://www.omg.org/technology/documents/formal/xmi.htm ..Tom |
From: Cameron S. <sho...@op...> - 2004-12-17 10:04:30
|
Gabriel, It is good news to hear you have an XML export from JSDocs. I afraid I don't know much about the internals of XMI, but I'm forwarding this email onto Tom Kralidis who might be able to help. Gabriel Reid wrote: >Hi Cameron, > > > >>I'm currently writing some perl code and am wondering whether >>anyone has >>written a javadoc type parser for perl. Do you know of one? >> >> > >I'm not aware of one, but on the other hand, it wouldn't surprise me greatly if something like that existed somewhere on CPAN. If you find one, please let me know! > > > >>By the way, how far did you get with the XMI export idea? Is >>there much >>work to do? >> >> > >The XMI-export idea is started, but has unfortunately been put on hold for the moment (just due to a total shortage of time right now). It's basically just a matter of filling out the template for it. I've been surprised with how difficult it is to find good basic documentation on XMI; if you know of some, please let me know. I've got the actual specification and a little other information, but it seems a lot clearer just experimenting with an XMI-enabled UML editor, so that's my current approach. > >I think I just need a few hours of time to get something working with it (I actually almost started working on it this morning). It may get posted within a week from now, but if not it should be in early January. > >Again, if you can point me at a simple "This is how you make a simple XMI document" tutorial or example, it would be greatly appreciated. > >By the way, on a similar subject, I do have a working generic XML export. I was originally planning on doing an XSLT-transformation on the XML export to get the XMI export, but there are already enough problems using one non-core library with JSDoc (HTML::Template), and I didn't want to add in another (more complex) dependency. > >Regards, > >Gabriel > > >------------------------------------------------------- >SF email is sponsored by - The IT Product Guide >Read honest & candid reviews on hundreds of IT Products from real users. >Discover which products truly live up to the hype. Start reading now. >http://productguide.itmanagersjournal.com/ >_______________________________________________ >Jsdoc-user mailing list >Jsd...@li... >https://lists.sourceforge.net/lists/listinfo/jsdoc-user > > > > |
From: Gabriel R. <Gab...@ex...> - 2004-12-17 08:17:22
|
Hi Cameron, > I'm currently writing some perl code and am wondering whether=20 > anyone has=20 > written a javadoc type parser for perl. Do you know of one? I'm not aware of one, but on the other hand, it wouldn't surprise me = greatly if something like that existed somewhere on CPAN. If you find = one, please let me know! =20 > By the way, how far did you get with the XMI export idea? Is=20 > there much=20 > work to do? The XMI-export idea is started, but has unfortunately been put on hold = for the moment (just due to a total shortage of time right now). It's = basically just a matter of filling out the template for it. I've been = surprised with how difficult it is to find good basic documentation on = XMI; if you know of some, please let me know. I've got the actual = specification and a little other information, but it seems a lot clearer = just experimenting with an XMI-enabled UML editor, so that's my current = approach. I think I just need a few hours of time to get something working with it = (I actually almost started working on it this morning). It may get = posted within a week from now, but if not it should be in early January. Again, if you can point me at a simple "This is how you make a simple = XMI document" tutorial or example, it would be greatly appreciated.=20 By the way, on a similar subject, I do have a working generic XML = export. I was originally planning on doing an XSLT-transformation on the = XML export to get the XMI export, but there are already enough problems = using one non-core library with JSDoc (HTML::Template), and I didn't = want to add in another (more complex) dependency. Regards, Gabriel |
From: Cameron S. <sho...@op...> - 2004-12-14 19:39:41
|
Hello Gabriel, I'm currently writing some perl code and am wondering whether anyone has written a javadoc type parser for perl. Do you know of one? By the way, how far did you get with the XMI export idea? Is there much work to do? |
From: Gabriel R. <Gab...@ex...> - 2004-11-16 07:48:49
|
> You mentioned earlier that you were considering an XMI export from=20 > jsdoc. I'm interested to know your thoughts on this and whether you=20 > have plans to develop the idea further. Yes, I'm planning on developing this further, but I can't put an exact = timeline on it. I'm certainly very interested in the idea. This week I'm = working on getting all (or at least most) of the current feature = requests taken care of, and then XML and XMI export are next on my list. = I could have something releasable by the end of next week, and if = there's interest in it I'll certainly try to get it ready ASAP. Gabriel |
From: Gabriel R. <Gab...@ex...> - 2004-11-15 10:15:00
|
Hi Cameron, > I think that the jsdocs should reference the http://jsdocs.sf.net web=20 > pages in the standard documentation. > Probably a small italic link at the bottom of the page with "API docs=20 > built with jsdocs". > This saves us users from adding credit to this cool tool. > It also allows readers of the our APIs an easy way to find jsdocs for=20 > their own project. > And lastly, it provides credit where credit is due. Thanks for the suggestion; I've just added the page footer. The new = version of JSDoc (with the new footer) should be released sometime this = week. Gabriel |
From: Cameron S. <sho...@op...> - 2004-11-13 05:08:32
|
Hi, I think that the jsdocs should reference the http://jsdocs.sf.net web pages in the standard documentation. Probably a small italic link at the bottom of the page with "API docs built with jsdocs". This saves us users from adding credit to this cool tool. It also allows readers of the our APIs an easy way to find jsdocs for their own project. And lastly, it provides credit where credit is due. -- Cameron Shorter http://cameron.shorter.net Open Source Developer http://mapbuilder.sourceforge.net Senior Software Engineer http://www.adi-limited.com |