[Sqlalchemy-tickets] =?utf-8?q?Re=3A_=5Bsqlalchemy=5D_=2396=3A_eager_loading_broken_for_manyto?= =?
Brought to you by:
zzzeek
From: sqlalchemy <mi...@zz...> - 2006-03-06 18:38:46
|
Izk2OiBlYWdlciBsb2FkaW5nIGJyb2tlbiBmb3IgbWFueXRvb25lLT5vbmV0b21hbnkNCi0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0NCiAgUmVwb3J0ZXI6ICBydGwgICAgICAgfCAgICAgICBPd25lcjogIHp6 emVlayAgDQogICAgICBUeXBlOiAgZGVmZWN0ICAgIHwgICAgICBTdGF0dXM6ICBhc3NpZ25lZA0K ICBQcmlvcml0eTogIGNyaXRpY2FsICB8ICAgTWlsZXN0b25lOiAgICAgICAgICANCiBDb21wb25l bnQ6ICBvcm0gICAgICAgfCAgICAgVmVyc2lvbjogICAgICAgICAgDQpSZXNvbHV0aW9uOiAgICAg ICAgICAgIHwgICAgS2V5d29yZHM6ICBiYWNrcmVmIA0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KQ2hh bmdlcyAoYnkgenp6ZWVrKToNCg0KICAqIHN0YXR1czogIG5ldyA9PiBhc3NpZ25lZA0KICAqIHN1 bW1hcnk6ICBCYWNrcmVmIGJyb2tlbiBmb3Igbm9uLXRyaXZpYWwgcmVsYXRpb25zaGlwcyA9PiBl YWdlciBsb2FkaW5nDQogICAgICAgICAgICAgIGJyb2tlbiBmb3IgbWFueXRvb25lLT5vbmV0b21h bnkNCg0KT2xkIGRlc2NyaXB0aW9uOg0KDQo+IFdoZW4gYmFja3JlZnMgYXJlIHVzZWQgaW4gbm9u LXRyaXZpYWwgcmVsYXRpb25zaGlwcyAoZS5nLg0KPiBDb21wYW55PC0+QWRkcmVzczwtPlBob25l IGFuZCBDb21wYW55PC0+SW52b2ljZTwtPkl0ZW1zKSBhY2Nlc3NpbmcgdGhlDQo+IGNvbXBsZXgg bWFwcGVkIGVudGl0eSB0aHJvdWdoIHRoZSBiYWNrcmVmIGZhaWxzIHRvIHJldHJpZXZlIGFsbCB0 aGUNCj4gbmVjZXNzYXJ5IGRhdGEsIGUuZy4gYWNjZXNzaW5nIHRoZSBjb21wYW55IHZpYSBpbnZv aWNlIGRvZXMgbm90IHJldHVybg0KPiBhbGwgdGhlIGNvbXBhbnkgcGhvbmUgZW50cmllcy4gU2Vl IHRoZSBleGFtcGxlIGJlbG93LCB3aGVyZSwgaWYgdGhlIGxhc3QNCj4gb2JqZWN0c3RvcmUuY2xl YXIoKSBpcyByZW1vdmVkLCBpdCB3b3JrcyBhcyBleHBlY3RlZC4NCj4NCj4ge3t7DQo+IGltcG9y dCBkYXRldGltZQ0KPiBmcm9tIHNxbGFsY2hlbXkgaW1wb3J0ICoNCj4NCj4gZGIgID0gZW5naW5l LmNyZWF0ZV9lbmdpbmUoJ3NxbGl0ZScsIHsnZmlsZW5hbWUnOic6bWVtb3J5Oid9LCBlY2hvPVRy dWUpDQo+DQoNCj4gY29tcGFuaWVzX3RhYmxlID0gVGFibGUoJ2NvbXBhbmllcycsIGRiLA0KPiAg ICAgQ29sdW1uKCdjb21wYW55X2lkJywgSW50ZWdlciwgU2VxdWVuY2UoJ2NvbXBhbnlfaWRfc2Vx JywNCj4gb3B0aW9uYWw9VHJ1ZSksIHByaW1hcnlfa2V5ID0gVHJ1ZSksDQo+ICAgICBDb2x1bW4o J2NvbXBhbnlfbmFtZScsIFN0cmluZyg0MCkpLA0KPg0KPiApDQo+DQo+IGFkZHJlc3Nlc190YWJs ZSA9IFRhYmxlKCdhZGRyZXNzZXMnLCBkYiwNCj4gICAgICAgICAgICAgICAgICAgICAgICAgQ29s dW1uKCdhZGRyZXNzX2lkJywgSW50ZWdlciwNCj4gU2VxdWVuY2UoJ2FkZHJlc3NfaWRfc2VxJywg b3B0aW9uYWw9VHJ1ZSksIHByaW1hcnlfa2V5ID0gVHJ1ZSksDQo+ICAgICAgICAgICAgICAgICAg ICAgICAgIENvbHVtbignY29tcGFueV9pZCcsIEludGVnZXIsDQo+IEZvcmVpZ25LZXkoImNvbXBh bmllcy5jb21wYW55X2lkIikpLA0KPiAgICAgICAgICAgICAgICAgICAgICAgICBDb2x1bW4oJ2Fk ZHJlc3MnLCBTdHJpbmcoNDApKSwNCj4gICAgICAgICAgICAgICAgICAgICAgICAgKQ0KPg0KPiBw aG9uZXNfdGFibGUgPSBUYWJsZSgncGhvbmVfbnVtYmVycycsIGRiLA0KPiAgICAgICAgICAgICAg ICAgICAgICAgICBDb2x1bW4oJ3Bob25lX2lkJywgSW50ZWdlciwNCj4gU2VxdWVuY2UoJ3Bob25l X2lkX3NlcScsIG9wdGlvbmFsPVRydWUpLCBwcmltYXJ5X2tleSA9IFRydWUpLA0KPiAgICAgICAg ICAgICAgICAgICAgICAgICBDb2x1bW4oJ2FkZHJlc3NfaWQnLCBJbnRlZ2VyLA0KPiBGb3JlaWdu S2V5KCdhZGRyZXNzZXMuYWRkcmVzc19pZCcpKSwNCj4gICAgICAgICAgICAgICAgICAgICAgICAg Q29sdW1uKCd0eXBlJywgU3RyaW5nKDIwKSksDQo+ICAgICAgICAgICAgICAgICAgICAgICAgIENv bHVtbignbnVtYmVyJywgU3RyaW5nKDEwKSksDQo+ICAgICAgICAgICAgICAgICAgICAgICAgICkN Cj4NCj4gaW52b2ljZV90YWJsZSA9IFRhYmxlKCdpbnZvaWNlcycsIGRiLA0KPiAgICAgICAgICAg ICAgICAgICAgICAgQ29sdW1uKCdpbnZvaWNlX2lkJywgSW50ZWdlciwNCj4gU2VxdWVuY2UoJ2lu dm9pY2VfaWRfc2VxJywgb3B0aW9uYWw9VHJ1ZSksIHByaW1hcnlfa2V5ID0gVHJ1ZSksDQo+ICAg ICAgICAgICAgICAgICAgICAgICBDb2x1bW4oJ2NvbXBhbnlfaWQnLCBJbnRlZ2VyLA0KPiBGb3Jl aWduS2V5KCJjb21wYW5pZXMuY29tcGFueV9pZCIpKSwNCj4gICAgICAgICAgICAgICAgICAgICAg IENvbHVtbignZGF0ZScsIERhdGVUaW1lKSwNCj4gICAgICAgICAgICAgICAgICAgICAgICkNCj4N Cj4gaXRlbXNfdGFibGUgPSBUYWJsZSgnaXRlbXMnLCBkYiwNCj4gICAgICAgICAgICAgICAgICAg ICBDb2x1bW4oJ2l0ZW1faWQnLCBJbnRlZ2VyLCBTZXF1ZW5jZSgnaXRlbV9pZF9zZXEnLA0KPiBv cHRpb25hbD1UcnVlKSwgcHJpbWFyeV9rZXkgPSBUcnVlKSwNCj4gICAgICAgICAgICAgICAgICAg ICBDb2x1bW4oJ2ludm9pY2VfaWQnLCBJbnRlZ2VyLA0KPiBGb3JlaWduS2V5KCdpbnZvaWNlcy5p bnZvaWNlX2lkJykpLA0KPiAgICAgICAgICAgICAgICAgICAgIENvbHVtbignY29kZScsIFN0cmlu ZygyMCkpLA0KPiAgICAgICAgICAgICAgICAgICAgIENvbHVtbigncXR5JywgSW50ZWdlciksDQo+ ICAgICAgICAgICAgICAgICAgICAgKQ0KPg0KDQo+IGNvbXBhbmllc190YWJsZS5jcmVhdGUoKQ0K PiBhZGRyZXNzZXNfdGFibGUuY3JlYXRlKCkNCj4gcGhvbmVzX3RhYmxlLmNyZWF0ZSgpDQo+IGlu dm9pY2VfdGFibGUuY3JlYXRlKCkNCj4gaXRlbXNfdGFibGUuY3JlYXRlKCkNCj4NCj4gY2xhc3Mg Q29tcGFueShvYmplY3QpOg0KPiAgICAgZGVmIF9faW5pdF9fKHNlbGYpOg0KPiAgICAgICAgIHNl bGYuY29tcGFueV9pZCA9IE5vbmUNCj4gICAgIGRlZiBfX3JlcHJfXyhzZWxmKToNCj4gICAgICAg ICByZXR1cm4gIkNvbXBhbnk6IiArIHJlcHIoZ2V0YXR0cihzZWxmLCAnY29tcGFueV9pZCcsIE5v bmUpKSArICIgIg0KPiArIHJlcHIoZ2V0YXR0cihzZWxmLCAnY29tcGFueV9uYW1lJywgTm9uZSkp ICsgIiAiICsgc3RyKFtyZXByKGFkZHIpIGZvcg0KPiBhZGRyIGluIHNlbGYuYWRkcmVzc2VzXSkN Cj4NCj4gY2xhc3MgQWRkcmVzcyhvYmplY3QpOg0KPiAgICAgZGVmIF9fcmVwcl9fKHNlbGYpOg0K PiAgICAgICAgIHJldHVybiAiQWRkcmVzczogIiArIHJlcHIoZ2V0YXR0cihzZWxmLCAnYWRkcmVz c19pZCcsIE5vbmUpKSArICINCj4gIiArIHJlcHIoZ2V0YXR0cihzZWxmLCAnY29tcGFueV9pZCcs IE5vbmUpKSArICIgIiArIHJlcHIoc2VsZi5hZGRyZXNzKSArDQo+IHN0cihbcmVwcihwaCkgZm9y IHBoIGluIHNlbGYucGhvbmVzXSkNCj4NCj4gY2xhc3MgUGhvbmUob2JqZWN0KToNCj4gICAgIGRl ZiBfX3JlcHJfXyhzZWxmKToNCj4gICAgICAgICByZXR1cm4gIlBob25lOiAiICsgcmVwcihnZXRh dHRyKHNlbGYsICdwaG9uZV9pZCcsIE5vbmUpKSArICIgIiArDQo+IHJlcHIoZ2V0YXR0cihzZWxm LCAnYWRkcmVzc19pZCcsIE5vbmUpKSArICIgIiArIHJlcHIoc2VsZi50eXBlKSArICIgIiArDQo+ IHJlcHIoc2VsZi5udW1iZXIpDQo+DQo+IGNsYXNzIEludm9pY2Uob2JqZWN0KToNCj4gICAgIGRl ZiBfX2luaXRfXyhzZWxmKToNCj4gICAgICAgICBzZWxmLmludm9pY2VfaWQgPSBOb25lDQo+ICAg ICBkZWYgX19yZXByX18oc2VsZik6DQo+ICAgICAgICAgcmV0dXJuICJJbnZvaWNlOiIgKyByZXBy KGdldGF0dHIoc2VsZiwgJ2ludm9pY2VfaWQnLCBOb25lKSkgKyAiICINCj4gKyByZXByKGdldGF0 dHIoc2VsZiwgJ2RhdGUnLCBOb25lKSkgICsgIiAiICsgcmVwcihzZWxmLmNvbXBhbnkpICsgIiAi ICsNCj4gc3RyKFtyZXByKGl0ZW0pIGZvciBpdGVtIGluIHNlbGYuaXRlbXNdKQ0KPg0KPiBjbGFz cyBJdGVtKG9iamVjdCk6DQo+ICAgICBkZWYgX19yZXByX18oc2VsZik6DQo+ICAgICAgICAgcmV0 dXJuICJJdGVtOiAiICsgcmVwcihnZXRhdHRyKHNlbGYsICdpdGVtX2lkJywgTm9uZSkpICsgIiAi ICsNCj4gcmVwcihnZXRhdHRyKHNlbGYsICdpbnZvaWNlX2lkJywgTm9uZSkpICsgIiAiICsgcmVw cihzZWxmLmNvZGUpICsgIiAiICsNCj4gcmVwcihzZWxmLnF0eSkNCj4NCj4gUGhvbmUubWFwcGVy ID0gbWFwcGVyKFBob25lLCBwaG9uZXNfdGFibGUsIGlzX3ByaW1hcnk9VHJ1ZSkNCj4NCj4gQWRk cmVzcy5tYXBwZXIgPSBtYXBwZXIoQWRkcmVzcywgYWRkcmVzc2VzX3RhYmxlLCBwcm9wZXJ0aWVz PXsNCj4gICAgICdwaG9uZXMnOiByZWxhdGlvbihQaG9uZS5tYXBwZXIsIGxhenk9RmFsc2UsIGJh Y2tyZWY9J2FkZHJlc3MnKQ0KPiAgICAgfSkNCj4NCj4gQ29tcGFueS5tYXBwZXIgPSBtYXBwZXIo Q29tcGFueSwgY29tcGFuaWVzX3RhYmxlLCBwcm9wZXJ0aWVzPXsNCj4gICAgICdhZGRyZXNzZXMn IDogcmVsYXRpb24oQWRkcmVzcy5tYXBwZXIsIGxhenk9RmFsc2UsDQo+IGJhY2tyZWY9J2NvbXBh bnknKSwNCj4gICAgIH0pDQo+DQo+IEl0ZW0ubWFwcGVyID0gbWFwcGVyKEl0ZW0sIGl0ZW1zX3Rh YmxlLCBpc19wcmltYXJ5PVRydWUpDQo+DQo+IEludm9pY2UubWFwcGVyID0gbWFwcGVyKEludm9p Y2UsIGludm9pY2VfdGFibGUsIHByb3BlcnRpZXM9ew0KPiAgICAgJ2l0ZW1zJzogcmVsYXRpb24o SXRlbS5tYXBwZXIsIGxhenk9RmFsc2UsIGJhY2tyZWY9J2ludm9pY2UnKSwNCj4gICAgICdjb21w YW55JzogcmVsYXRpb24oQ29tcGFueS5tYXBwZXIsIGxhenk9RmFsc2UsIGJhY2tyZWY9J2ludm9p Y2VzJykNCj4gICAgIH0pDQo+DQo+IG9iamVjdHN0b3JlLmNsZWFyKCkNCj4gYzEgPSBDb21wYW55 KCkNCj4gYzEuY29tcGFueV9uYW1lID0gJ2NvbXBhbnkgMScNCj4NCj4gYTEgPSBBZGRyZXNzKCkN Cj4gYTEuYWRkcmVzcyA9ICdhMSBhZGRyZXNzJw0KPg0KPiBwMSA9IFBob25lKCkNCj4gcDEudHlw ZSA9ICdob21lJw0KPiBwMS5udW1iZXIgPSAnMTExMScNCj4NCj4gYTEucGhvbmVzLmFwcGVuZChw MSkNCj4NCj4gcDIgPSBQaG9uZSgpDQo+IHAyLnR5cGUgPSAnd29yaycNCj4gcDIubnVtYmVyID0g JzIyMjIyJw0KPiBhMS5waG9uZXMuYXBwZW5kKHAyKQ0KPg0KPiBjMS5hZGRyZXNzZXMuYXBwZW5k KGExKQ0KPg0KPiBhMiA9IEFkZHJlc3MoKQ0KPiBhMi5hZGRyZXNzID0gJ2EyIGFkZHJlc3MnDQo+ DQo+IHAzID0gUGhvbmUoKQ0KPiBwMy50eXBlID0gJ2hvbWUnDQo+IHAzLm51bWJlciA9ICczMzMz Jw0KPiBhMi5waG9uZXMuYXBwZW5kKHAzKQ0KPg0KPiBwNCA9IFBob25lKCkNCj4gcDQudHlwZSA9 ICd3b3JrJw0KPiBwNC5udW1iZXIgPSAnNDQ0NDQnDQo+IGEyLnBob25lcy5hcHBlbmQocDQpDQo+ DQo+IGMxLmFkZHJlc3Nlcy5hcHBlbmQoYTIpDQo+DQo+IG9iamVjdHN0b3JlLmNvbW1pdCgpDQo+ IG9iamVjdHN0b3JlLmNsZWFyKCkNCj4NCj4gYSA9IENvbXBhbnkubWFwcGVyLmdldCgxKQ0KPiBw cmludCBhDQo+DQo+ICMgc2V0IHVwIGFuIGludm9pY2UNCj4gaTEgPSBJbnZvaWNlKCkNCj4gaTEu ZGF0ZSA9IGRhdGV0aW1lLmRhdGV0aW1lLm5vdygpDQo+IGkxLmNvbXBhbnkgPSBjMQ0KPg0KPiBp dGVtMSA9IEl0ZW0oKQ0KPiBpdGVtMS5jb2RlID0gJ2FhYWEnDQo+IGl0ZW0xLnF0eSA9IDENCj4g aXRlbTEuaW52b2ljZSA9IGkxDQo+DQo+IGl0ZW0yID0gSXRlbSgpDQo+IGl0ZW0yLmNvZGUgPSAn YmJiYicNCj4gaXRlbTIucXR5ID0gMg0KPiBpdGVtMi5pbnZvaWNlID0gaTENCj4NCj4gaXRlbTMg PSBJdGVtKCkNCj4gaXRlbTMuY29kZSA9ICdjY2NjJw0KPiBpdGVtMy5xdHkgPSAzDQo+IGl0ZW0z Lmludm9pY2UgPSBpMQ0KPg0KPiBvYmplY3RzdG9yZS5jb21taXQoKQ0KPiBvYmplY3RzdG9yZS5j bGVhcigpDQo+DQo+IGMgPSBDb21wYW55Lm1hcHBlci5nZXQoMSkNCj4gcHJpbnQgYw0KPg0KPiBv YmplY3RzdG9yZS5jbGVhcigpDQo+DQo+IGkgPSBJbnZvaWNlLm1hcHBlci5nZXQoMSkNCj4gcHJp bnQgaQ0KPg0KPiBhc3NlcnQgcmVwcihpLmNvbXBhbnkpID09IHJlcHIoYykNCj4gfX19DQoNCk5l dyBkZXNjcmlwdGlvbjoNCg0KIEkgaGF2ZSBuYXJyb3dlZCB0aGUgdGVzdCBjYXNlIGZvciB0aGlz IHByb2JsZW0gZG93biB0byB0aGUgZm9sbG93aW5nOg0KDQoge3t7DQogZnJvbSBzcWxhbGNoZW15 IGltcG9ydCAqDQogaW1wb3J0IGRhdGV0aW1lDQoNCiBkYiAgPSBjcmVhdGVfZW5naW5lKCdzcWxp dGUnLCB7J2ZpbGVuYW1lJzonOm1lbW9yeTonfSwgZWNobz0nZGVidWcnKQ0KDQogY29tcGFuaWVz X3RhYmxlID0gVGFibGUoJ2NvbXBhbmllcycsIGRiLA0KICAgICBDb2x1bW4oJ2NvbXBhbnlfaWQn LCBJbnRlZ2VyLCBTZXF1ZW5jZSgnY29tcGFueV9pZF9zZXEnLA0KIG9wdGlvbmFsPVRydWUpLCBw cmltYXJ5X2tleSA9IFRydWUpLA0KICAgICBDb2x1bW4oJ2NvbXBhbnlfbmFtZScsIFN0cmluZyg0 MCkpLA0KDQogKQ0KDQogYWRkcmVzc2VzX3RhYmxlID0gVGFibGUoJ2FkZHJlc3NlcycsIGRiLA0K ICAgICAgICAgICAgICAgICAgICAgICAgIENvbHVtbignYWRkcmVzc19pZCcsIEludGVnZXIsDQog U2VxdWVuY2UoJ2FkZHJlc3NfaWRfc2VxJywgb3B0aW9uYWw9VHJ1ZSksIHByaW1hcnlfa2V5ID0g VHJ1ZSksDQogICAgICAgICAgICAgICAgICAgICAgICAgQ29sdW1uKCdjb21wYW55X2lkJywgSW50 ZWdlciwNCiBGb3JlaWduS2V5KCJjb21wYW5pZXMuY29tcGFueV9pZCIpKSwNCiAgICAgICAgICAg ICAgICAgICAgICAgICBDb2x1bW4oJ2FkZHJlc3MnLCBTdHJpbmcoNDApKSwNCiAgICAgICAgICAg ICAgICAgICAgICAgICApDQoNCg0KIGludm9pY2VfdGFibGUgPSBUYWJsZSgnaW52b2ljZXMnLCBk YiwNCiAgICAgICAgICAgICAgICAgICAgICAgQ29sdW1uKCdpbnZvaWNlX2lkJywgSW50ZWdlciwN CiBTZXF1ZW5jZSgnaW52b2ljZV9pZF9zZXEnLCBvcHRpb25hbD1UcnVlKSwgcHJpbWFyeV9rZXkg PSBUcnVlKSwNCiAgICAgICAgICAgICAgICAgICAgICAgQ29sdW1uKCdjb21wYW55X2lkJywgSW50 ZWdlciwNCiBGb3JlaWduS2V5KCJjb21wYW5pZXMuY29tcGFueV9pZCIpKSwNCiAgICAgICAgICAg ICAgICAgICAgICAgQ29sdW1uKCdkYXRlJywgRGF0ZVRpbWUpLA0KICAgICAgICAgICAgICAgICAg ICAgICApDQoNCiBjb21wYW5pZXNfdGFibGUuY3JlYXRlKCkNCiBhZGRyZXNzZXNfdGFibGUuY3Jl YXRlKCkNCiBpbnZvaWNlX3RhYmxlLmNyZWF0ZSgpDQoNCiBjbGFzcyBDb21wYW55KG9iamVjdCk6 DQogICAgIGRlZiBfX2luaXRfXyhzZWxmKToNCiAgICAgICAgIHNlbGYuY29tcGFueV9pZCA9IE5v bmUNCiAgICAgZGVmIF9fcmVwcl9fKHNlbGYpOg0KICAgICAgICAgcmV0dXJuICJDb21wYW55OiIg KyByZXByKGdldGF0dHIoc2VsZiwgJ2NvbXBhbnlfaWQnLCBOb25lKSkgKyAiICINCiArIHJlcHIo Z2V0YXR0cihzZWxmLCAnY29tcGFueV9uYW1lJywgTm9uZSkpICsgIiAiICsgc3RyKFtyZXByKGFk ZHIpIGZvcg0KIGFkZHIgaW4gc2VsZi5hZGRyZXNzZXNdKQ0KDQogY2xhc3MgQWRkcmVzcyhvYmpl Y3QpOg0KICAgICBkZWYgX19yZXByX18oc2VsZik6DQogICAgICAgICByZXR1cm4gIkFkZHJlc3M6 ICIgKyByZXByKGdldGF0dHIoc2VsZiwgJ2FkZHJlc3NfaWQnLCBOb25lKSkgKyAiICINCiArIHJl cHIoZ2V0YXR0cihzZWxmLCAnY29tcGFueV9pZCcsIE5vbmUpKSArICIgIiArIHJlcHIoc2VsZi5h ZGRyZXNzKQ0KDQogY2xhc3MgSW52b2ljZShvYmplY3QpOg0KICAgICBkZWYgX19pbml0X18oc2Vs Zik6DQogICAgICAgICBzZWxmLmludm9pY2VfaWQgPSBOb25lDQogICAgIGRlZiBfX3JlcHJfXyhz ZWxmKToNCiAgICAgICAgIHJldHVybiAiSW52b2ljZToiICsgcmVwcihnZXRhdHRyKHNlbGYsICdp bnZvaWNlX2lkJywgTm9uZSkpICsgIiAiDQogKyByZXByKGdldGF0dHIoc2VsZiwgJ2RhdGUnLCBO b25lKSkgICsgIiAiICsgcmVwcihzZWxmLmNvbXBhbnkpDQoNCiBBZGRyZXNzLm1hcHBlciA9IG1h cHBlcihBZGRyZXNzLCBhZGRyZXNzZXNfdGFibGUsIHByb3BlcnRpZXM9ew0KICAgICB9KQ0KDQog Q29tcGFueS5tYXBwZXIgPSBtYXBwZXIoQ29tcGFueSwgY29tcGFuaWVzX3RhYmxlLCBwcm9wZXJ0 aWVzPXsNCiAgICAgJ2FkZHJlc3NlcycgOiByZWxhdGlvbihBZGRyZXNzLm1hcHBlciwgbGF6eT1G YWxzZSksDQogICAgIH0pDQoNCiBJbnZvaWNlLm1hcHBlciA9IG1hcHBlcihJbnZvaWNlLCBpbnZv aWNlX3RhYmxlLCBwcm9wZXJ0aWVzPXsNCiAgICAgJ2NvbXBhbnknOiByZWxhdGlvbihDb21wYW55 Lm1hcHBlciwgbGF6eT1GYWxzZSwgKQ0KICAgICB9KQ0KDQogYzEgPSBDb21wYW55KCkNCiBjMS5j b21wYW55X25hbWUgPSAnY29tcGFueSAxJw0KIGExID0gQWRkcmVzcygpDQogYTEuYWRkcmVzcyA9 ICdhMSBhZGRyZXNzJw0KIGMxLmFkZHJlc3Nlcy5hcHBlbmQoYTEpDQogYTIgPSBBZGRyZXNzKCkN CiBhMi5hZGRyZXNzID0gJ2EyIGFkZHJlc3MnDQogYzEuYWRkcmVzc2VzLmFwcGVuZChhMikNCiBp MSA9IEludm9pY2UoKQ0KIGkxLmRhdGUgPSBkYXRldGltZS5kYXRldGltZS5ub3coKQ0KIGkxLmNv bXBhbnkgPSBjMQ0KDQogb2JqZWN0c3RvcmUuY29tbWl0KCkNCiBvYmplY3RzdG9yZS5jbGVhcigp DQoNCiBjID0gQ29tcGFueS5tYXBwZXIuZ2V0KDEpDQoNCiBvYmplY3RzdG9yZS5jbGVhcigpDQoN CiBpID0gSW52b2ljZS5tYXBwZXIuZ2V0KDEpDQoNCiBwcmludCBjDQogcHJpbnQgaS5jb21wYW55 DQogYXNzZXJ0IHJlcHIoYykgPT0gcmVwcihpLmNvbXBhbnkpDQogfX19DQoNCkNvbW1lbnQ6DQoN CiByZXRyaWV2aW5nIHRoZSBDb21wYW55IGJ5IGl0c2VsZiB3aWxsIGVhZ2VyIGxvYWQgaXRzIGFk ZHJlc3NlcyBwcm9wZXJseS4NCiByZXRyZWl2aW5nIHRoZSBJbnZvaWNlLCB3aXRoIGl0cyBtYW55 LXRvLW9uZSBDb21wYW55LCB3aWxsIGhhbHQgbG9hZGluZyBvZg0KIHRoZSBzaW5nbGUgQ29tcGFu eSBvYmplY3QgYWZ0ZXIgaXRzIGxvYWRlZCwgYW5kIG5vdCBsb2FkIHRoZSByZXN0IG9mIHRoZQ0K IGFkZHJlc3Nlcy4NCg0KIGEgb25lIGxpbmUgZml4ICsgYSBuZXcgc2V0IG9mIHVuaXQgdGVzdHMg Zm9ydGhjb21pbmcuDQoNCi0tIA0KVGlja2V0IFVSTDogPGh0dHA6Ly93d3cuc3FsYWxjaGVteS5v cmcvdHJhYy90aWNrZXQvOTY+DQpzcWxhbGNoZW15IDxodHRwOi8vZXhhbXBsZS5jb20vPg0KTXkg ZXhhbXBsZSBwcm9qZWN0 |