RE: [PATCH v4 1/1] printk: fix zero-valued printk timestamps in early boot
"Bird, Tim" <[email protected]> Mon, 20 Apr 2026 22:18:29 +0000
| Newsgroups | org.kernel.vger.linux-embedded,org.kernel.vger.linux-kernel |
|---|---|
| Message-ID | <MW5PR13MB5632F6F08DB75F7CCBC2AFA1FD2F2@MW5PR13MB5632.namprd13.prod.outlook.com> |
PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBQZXRyIE1sYWRlayA8cG1sYWRl a0BzdXNlLmNvbT4NCj4gDQo+IEFkZGluZyBCcmlhbiBpbnRvIENjLiBPbiBXZWQgMjAyNi0wNC0x NSAwMDrigIozODrigIoyOSwgVGhvbWFzIEdsZWl4bmVyIHdyb3RlOiA+IE9uIEZyaSwgQXByIDEw IDIwMjYgYXQgMTQ64oCKMzcsIFRpbSBCaXJkIHdyb3RlOiA+ID4gKyA+ID4NCj4gKyNpbmNsdWRl IDxsaW51eC90aW1la2VlcGluZy7igIpoPiA+ID4gKyNpZmRlZiBDT05GSUdfQVJNNjQgPiA+ICsj aW5jbHVkZSA8YXNtL3N5c3JlZy7igIpoPg0KPiBBZGRpbmcgQnJpYW4gaW50byBDYy4NCj4gDQo+ IE9uIFdlZCAyMDI2LTA0LTE1IDAwOjM4OjI5LCBUaG9tYXMgR2xlaXhuZXIgd3JvdGU6DQo+ID4g T24gRnJpLCBBcHIgMTAgMjAyNiBhdCAxNDozNywgVGltIEJpcmQgd3JvdGU6DQo+ID4gPiArDQo+ ID4gPiArI2luY2x1ZGUgPGxpbnV4L3RpbWVrZWVwaW5nLmg+DQo+ID4gPiArI2lmZGVmIENPTkZJ R19BUk02NA0KPiA+ID4gKyNpbmNsdWRlIDxhc20vc3lzcmVnLmg+DQo+ID4gPiArI2VuZGlmDQo+ ID4gPiArDQo+ID4gPiArI2lmZGVmIENPTkZJR19FQVJMWV9DWUNMRVNfS0haDQo+ID4gPiArc3Rh dGljIGlubGluZSB1NjQgZWFybHlfdW5zYWZlX2N5Y2xlcyh2b2lkKQ0KPiA+ID4gK3sNCj4gPiA+ ICsjaWYgZGVmaW5lZChDT05GSUdfWDg2XzY0KQ0KPiA+ID4gKwkvKg0KPiA+ID4gKwkgKiBUaGlz IHJkdHNjIG1heSBoYXBwZW4gYmVmb3JlIHNlY3VyZSBUU0MgaXMgaW5pdGlhbGl6ZWQsIGFuZA0K PiA+ID4gKwkgKiBpdCBpcyB1bm9yZGVyZWQuIFNvIHBsZWFzZSBkb24ndCB1c2UgdGhpcyB2YWx1 ZSBmb3IgY3J5cHRvZ3JhcGh5DQo+ID4gPiArCSAqIG9yIGFmdGVyIFNNUCBpcyBpbml0aWFsaXpl ZC4NCj4gPiA+ICsJICovDQo+ID4gPiArCXJldHVybiByZHRzYygpOw0KPiA+ID4gKyNlbGlmIGRl ZmluZWQoQ09ORklHX0FSTTY0KQ0KPiA+ID4gKwlyZXR1cm4gcmVhZF9zeXNyZWcoY250dmN0X2Vs MCk7DQo+ID4gPiArI2VsaWYgZGVmaW5lZChDT05GSUdfUklTQ1ZfVElNRVIpDQo+ID4gPiArCXU2 NCB2YWw7DQo+ID4gPiArDQo+ID4gPiArCWFzbSB2b2xhdGlsZSgicmR0aW1lICUwIiA6ICI9ciIo dmFsKSk7DQo+ID4gPiArCXJldHVybiB2YWw7DQo+ID4gPiArI2Vsc2UNCj4gPiA+ICsJcmV0dXJu IDA7DQo+ID4gPiArI2VuZGlmDQo+ID4gPiArfQ0KPiA+DQo+ID4gTm8uIEdlbmVyaWMgY29kZSBh bmQgZ2VuZXJpYyBoZWFkZXJzIGhhdmUgbm8gYnVzaW5lc3MgdG8gaW1wbGVtZW50IGFueQ0KPiA+ IGFyY2hpdGVjdHVyZSBzcGVjaWZpYyBjb2RlIGFuZCB0aGVyZSBpcyB6ZXJvIGp1c3RpZmljYXRp b24gZm9yDQo+ID4gYXJjaGl0ZWN0dXJlIHNwZWNpZmljICNpZmRlZnMgaW4gZ2VuZXJpYyBjb2Rl Lg0KR290IGl0LiAgVGhhbmtzLiAgSWYgdGhlIHBhdGNoIGRvZXNuJ3QgZ2V0IGFjY2VwdGVkIHVw c3RyZWFtLCBJIG1heSBrZWVwIGFsbCB0aGUNCmN5Y2xlLWNvdW50aW5nIGluc3RydWN0aW9ucyBp biBvbmUgcGxhY2UsIHRvIG1ha2UgaXMgZWFzaWVyIHRvIGFwcGx5IHRoZSBwYXRjaCwNCmJ1dCBJ IHVuZGVyc3RhbmQgbm90IHdhbnRpbmcgdG8gaGF2aW5nIGFyY2hpdGVjdHVyZSAjaWZkZWZzIHNw cmlua2xlZCBhcm91bmQNCmdlbmVyaWMgY29kZSBpbiB0aGUgdXBzdHJlYW0ga2VybmVsLg0KDQo+ IA0KPiBZZWFoLCB0aGlzIGxvb2tzIGEgYml0IHdpbGQuDQo+IA0KPiA+ID4gKy8qIHJldHVybnMg YSBuYW5vc2Vjb25kIHZhbHVlIGJhc2VkIG9uIGVhcmx5IGN5Y2xlcyAqLw0KPiA+ID4gK3N0YXRp YyBpbmxpbmUgdTY0IGVhcmx5X3RpbWVzX25zKHZvaWQpDQo+ID4gPiArew0KPiA+ID4gKwlpZiAo Q09ORklHX0VBUkxZX0NZQ0xFU19LSFopDQo+ID4gPiArCQkvKg0KPiA+ID4gKwkJICogTm90ZTog dGhlIG11bHRpcGx5IG11c3QgcHJlY2VkZSB0aGUgZGl2aXNpb24gdG8gYXZvaWQNCj4gPiA+ICsJ CSAqIHRydW5jYXRpb24gYW5kIGxvc3Mgb2YgcmVzb2x1dGlvbg0KPiA+ID4gKwkJICogRG9uJ3Qg dXNlIGZhbmNpZXIgTVVMVC9TSElGVCBtYXRoIGhlcmUuICBTaW5jZSB0aGlzIGlzDQo+ID4gPiAr CQkgKiBzdGF0aWMsIHRoZSBjb21waWxlciBjYW4gb3B0aW1pemUgdGhlIG1hdGggb3BlcmF0aW9u cy4NCj4gPiA+ICsJCSAqLw0KPiA+ID4gKwkJcmV0dXJuIChlYXJseV91bnNhZmVfY3ljbGVzKCkg KiBOU19QRVJfS0haKSAvIENPTkZJR19FQVJMWV9DWUNMRVNfS0haOw0KPiA+DQo+ID4gVGhpcyBj b2RlIHdpbGwgcmVzdWx0IGluIGEgZGl2aXNpb24gYnkgemVybyB3YXJuaW5nIGZyb20gYW55IHJl YXNvbmFibGUNCj4gPiBjb21waWxlciBiZWNhdXNlIHRoaXMgaXMgZXZhbHVhdGVkIF9iZWZvcmVf IGl0IGlzIGVsaW1pbmF0ZWQuDQoNClllcC4gIEkgaGF2ZSBzZXZlcmFsIHNvbHV0aW9ucyB0byBx dWlldCB0aGUgd2FybmluZyBhbmQgSSdtIGNvbnNpZGVyaW5nDQp3aGljaCBvbmUgaXMgYmVzdC4g IEkgYXBvbG9naXplIGZvciBtaXNzaW5nIHRoaXMgd2FybmluZyBpbiBteSBvd24gdGVzdGluZy4N Ckl0J3MgYSBsb25nIHN0b3J5LCBidXQgbW9zdCBvZiBteSB3b3JrIGhhcyBiZWVuIGRvbmUgaW4g dGhlIHlvY3RvIHByb2plY3QNCmFuZCB0aGUga2VybmVsIGJ1aWxkIHdhcm5pbmdzIHdlcmUgZ2V0 dGluZyBtYXNrZWQuDQoNCj4gPg0KPiA+ID4gQEAgLTIyOTQsNiArMjI5NSw4IEBAIGludCB2cHJp bnRrX3N0b3JlKGludCBmYWNpbGl0eSwgaW50IGxldmVsLA0KPiA+ID4gIAkgKiB0aW1lc3RhbXAg d2l0aCByZXNwZWN0IHRvIHRoZSBjYWxsZXIuDQo+ID4gPiAgCSAqLw0KPiA+ID4gIAl0c19uc2Vj ID0gbG9jYWxfY2xvY2soKTsNCj4gPiA+ICsJaWYgKHVubGlrZWx5KCF0c19uc2VjKSkNCj4gPiA+ ICsJCXRzX25zZWMgPSBlYXJseV90aW1lc19ucygpOw0KPiA+DQo+ID4gSSBleHBsYWluZWQgdG8g eW91IGhvdyB0aGlzIHdhbnRzIHRvIGJlIGltcGxlbWVudGVkIHRvIGJlIHVzZWZ1bCBhbmQgeW91 DQo+ID4gZGVjbGFyZWQgdGhhdCB5b3UgYXJlIHVud2lsbGluZyB0byBwdXQgdGhlIGVmZm9ydCBp bi4NCg0KWW91IGFyZSBjb3JyZWN0IHRoYXQgSSBzYWlkIEkgZGlkbid0IHdhbnQgdG8gYWR2YW5j ZSB0aGUgUG9DIHNvbHV0aW9uLg0KSSdsbCBleHBsYWluIG1vcmUgYmVsb3cgd2h5IEkgcHJlZmVy IHRoZSBzb2x1dGlvbiBpbiBteSBWNCBwYXRjaC4NCg0KPiA+DQo+ID4gTXkgTkFLIGZvciB0aGlz IGRpc2d1c3RpbmcgYW5kIHRhc3RlbGVzcyBoYWNrIHN0aWxsIGFwcGxpZXMuDQo+ID4NCj4gPiBF aXRoZXIgeW91IGFyZSB3aWxsaW5nIHRvIHdvcmsgd2l0aCB0aGUgY29tbXVuaXR5IGFuZCB0aGUg cmVsZXZhbnQNCj4gPiBtYWludGFpbmVycyBvciB5b3UgY2FuIGtlZXAgeW91ciBoYWNrZXJ5IG1h aW50YWluZWQgb3V0IG9mIHRyZWUgZm9yDQo+ID4gdGhvc2Ugd2hvIGNhcmUgYWJvdXQgaXQgYW5k IGFyZSB3aWxsaW5nIHRvIGlnbm9yZSB0aGUgZmFsbG91dC4NCg0KSSBiZWxpZXZlIEkndmUgc2hv d24gYSB3aWxsaW5nbmVzcyB0byB3b3JrIHdpdGggcmVsZXZhbnQgbWFpbnRhaW5lcnMuDQpJIGhh dmUgdGVjaG5pY2FsIHJlYXNvbnMgKHdoaWNoIEkgZXhwbGFpbiBiZWxvdykgZm9yIHByZWZlcnJp bmcgbXkgYXBwcm9hY2gsDQpidXQgSSByZWNvZ25pemUgdGhhdCBvdGhlciBwZXJzcGVjdGl2ZXMg YW5kIGNvbnNpZGVyYXRpb25zIG1heSBvdmVycmlkZQ0KbXkgdHJhZGVvZmYgcHJlZmVyZW5jZXMu DQoNCj4gDQo+IFRoZSBkaXNjdXNzaW9uIHdlbnQgd2lsZCBhbmQgaXMgZnVsbCBvZiBlbW90aW9u cy4NCj4gDQo+IExldCBtZSBzdW1tYXJpemUgbXkgdW5kZXJzdGFuZGluZzoNCj4gDQo+IFRoZXJl IGFyZSBwZW9wbGUgd2hvIHRyeSB0byBvcHRpbWl6ZSBib290IHRpbWVzLiBUaW0gaXMgb25lDQo+ IG9mIHRoZW0uIEhlIHVzZWQgYW4gb3V0LW9mLXRyZWUgcGF0Y2ggZm9yIG1hbnkgeWVhcnMuIEhl IGRlY2lkZWQNCj4gdG8gc2hhcmUgaXQgdG8gbWFrZSB0aGUgbGlmZSBlYXNpZXIgZm9yIG90aGVy cy4NCj4gDQo+IFRpbSdzIG9yaWdpbmFsIGFwcHJvYWNoIHdhcyB0cml2aWFsIFtUaW0xXS4gSU1I TywgaGUgdXNlZCBhIGN5Y2xlIGNvdW50ZXINCj4gd2l0aCBhIHN0YWJsZSBmcmVxdWVuY3kgYW5k IGhhcmRjb2RlZCB0aGUgY29tcHV0YXRpb24gdG8gdGltZXN0YW1wcy4NCj4gSXQgb3BlbmVkIGRp c2N1c3Npb24gaG93IHRvIGludGVncmF0ZSBpdCBiZXR0ZXI6DQo+IA0KPiAgICAxLiBBdm9pZCBo YXJkIGNvZGVkIHZhbHVlIGluIEtjb25maWcgYnkgc29tZSBjYWxpYnJhdGlvbiBbVGltMl1bVGlt M10NCj4gICAgICAgT25lIGhhcmRjb2RlZCB2YWx1ZSBpcyBiYWNrIGluIFtUaW00XSBmb3Igc2lt cGxpY2l0eS4NCj4gDQo+ICAgIDIuIEF2b2lkIGp1bXAgaW4gdGhlIHRpbWVzdGFtcHMgd2hlbiB0 aW1la2VlcGluZyBpcyBhbGxvd2VkLg0KPiAgICAgICBJdCB3YXMgcGFydGx5IHJlbW92ZWQgaW4g W3YyXVt2M10gYnkgYWxyZWFkeSAiY2FsaWJyYXRlZCINCj4gICAgICAgdGltZXN0YW1wcyByZWFk IGJ5IHVzZXJzcGFjZSAoc3lzbG9nLCAvZGV2L2ttc2cpLiBBZ2FpbiwNCj4gICAgICAgdGhpcyBh cHByb2FjaCB3YXMgcmVtb3ZlZCBpbiB2NCBmb3Igc2ltcGxpY2l0eS4NCj4gDQo+ICAgUHJvcyBv ZiB2NDoNCj4gDQo+ICAgICAgICsgdmVyeSBzaW1wbGUNCj4gICAgICAgKyBnaXZlcyBzb21lIHJl YXNvbmFibHkgbG9va2luZyB0aW1lc3RhbXBzDQo+ICAgICAgICsgbWlnaHQgYmUgZ29vZCBlbm91 Z2ggZm9yIHRoZSBwdXJwb3NlDQo+IA0KPiAgIENvbnMgb2YgdjQ6DQo+IA0KPiAgICAgICArIGhh Y2t5LCBkb2VzIG5vdCBjb21waWxlIGluIHNvbWUgY2FzZSwgLi4uDQpJIGJlbGlldmUgSSBjYW4g Zml4IHRoaXMgb25lLg0KDQo+ICAgICAgICsgaGFyZGNvZGVkIHZhbHVlIGluIGNvbmZpZw0KPiAg ICAgICArIGp1bXAgaW4gdGltZXN0YW1wcyB3aGVuIHRpbWVrZWVwaW5nIGlzIGluaXRpYWxpemVk DQo+IA0KPiANCj4gTm93LCB3ZSBoYXZlIGFsdGVybmF0aXZlIGFwcHJvYWNoIGJ5IFRob21hcyBb VGhvbWFzMV0gd2hpY2ggYWxsb3dzDQo+IHRvIGluaXRpYWxpemUgdGltZSBrZWVwaW5nIG9uIHg4 NiBBU0FQOg0KPiANCj4gICAgUHJvczoNCj4gDQo+ICAgICAgICsgY2xlYW4gYW5kIHdlbGwgaW50 ZWdyYXRlZCB3aXRoIHRpbWVrZWVwaW5nDQo+ICAgICAgICsgbm8gaGFyZCBjb2RlZCB2YWx1ZXMg aW4gS2NvbmZpZw0KPiAgICAgICArIG5vIGp1bXAgaW4gdGltZXN0YW1wcw0KPiANCj4gICAgQ29u czoNCj4gDQo+ICAgICAgICsgbmVlZCBub24tdHJpdmlhbCBjaGFuZ2VzIGZvciBlYWNoIHN1cHBv cnRlZCBhcmNoaXRlY3R1cmUNCj4gICAgICAgKyBubyB0aW1lc3RhbXBzIGZvciB0aGUgdmVyeSBl YXJseSBjb2RlICgzMG1zIG9uIHRoZSBtZWFzdXJlZCB4ODZfNjQpDQpKdXN0IGEgY29tbWVudC4g IEkgdGhpbmsgdGhlIGJsaW5kIHNwb3QgZHVyYXRpb24gZm9yIFRob21hcycgY29kZSBpcyBtdWNo DQpzbWFsbGVyIG9uIHg4Nl82NCB0aGFuIHdlJ3ZlIGJlZW4gZGlzY3Vzc2luZy4gIEkgc2VlIDMw bXMgYW5kIDE4bXMgcmVwb3J0cywgYnV0IGluDQpteSBleHBlcmllbmNlIHRoaXMgaXMgdGhlIGJs aW5kIHNwb3QgZHVyYXRpb24gKmJlZm9yZSogYXBwbHlpbmcgVGhvbWFzJyBwYXRjaC4NCldpdGgg aGlzIHBhdGNoLCBJIGJlbGlldmUgaXQgZ2V0cyBkb3duIGludG8gdGhlIHJhbmdlIG9mIGEgZmV3 IG1pbGxpc2Vjb25kcyAob24geDg2XzY0KSwNCndoaWNoIGlzIG9idmlvdXNseSBzdWZmaWNpZW50 IGZvciByZXNlYXJjaGluZyBtb3N0IG9mIHRoZSBhcmVhcyB0aGF0IGFyZSBsaWtlbHkgcHJvYmxl bWF0aWNhbC4NCkknbSAgbm90IHN1cmUgaG93IGl0IGZhcmVzIG9uIG90aGVyIGFyY2hlcywgYXMg dGhvc2UgbmVlZCBkaWZmZXJlbnQgYXBwcm9hY2hlcy4NCg0KSSB3b3VsZCBhZGQgb25lIG1vcmUg Y29uIGhlcmU6DQogIC0gcmVxdWlyZXMgbmV3IGtlcm5lbCBjb21tYW5kIGxpbmUgcGFyYW1ldGVy cw0KIA0KPiANCj4gTXkgdmlldzoNCj4gDQo+IFRob21hcycgYXBwcm9hY2ggaXMgZ3JlYXQgYmVj YXVzZSBpdCBpcyBjbGVhbiBpbnRlZ3JhdGlvbiwgLi4uDQo+IGJ1dDoNCj4gDQo+ICAgIDEuIEkg YW0gbm90IHN1cmUgaWYgdGhlIGNvbXBsZXhpdHkgaXMgd29ydGggaXQuIFRoZXJlIGFyZSBvbmx5 IGZldw0KPiAgICAgICBwZW9wbGUgKFRpbSdzIHRpcCBpcyA1MCkgd2hvIGFyZSBpbnRlcmVzdGVk IGludG8gdGhlIGVhcmx5DQo+ICAgICAgIGJvb3QgdGltZXMgYW5kIGFsbCBhcmUgZGV2ZWxvcGVy cy4NCj4gDQo+ICAgIDIuIEl0IGRvZXMgbm90IGNvdmVyIHRoZSB2ZXJ5IGVhcmx5IGJvb3QuIEFu ZCBCcmlhbiBtZW50aW9uZWQNCj4gICAgICAgYSByZWFsIGxpZmUgcHJvYmxlbSBmb3VuZCBpbiB0 aGlzIGFyZWEsIHNlZQ0KPiAgICAgICBodHRwczovL2xvcmUua2VybmVsLm9yZy9hbGwvYWN4eDlC dDBOM25odExnTkByZWRoYXQuY29tLw0KPiANCj4gICAgICAgU3RldmVuIG1lbnRpb25lZCBnZXR0 aW5nIHRoZSB2ZXJ5IGVhcmx5IHRpbWVzdGFtcHMgZnJvbQ0KPiAgICAgICB0aGUgZmlybXdhcmUs IHNlZQ0KPiAgICAgICBodHRwczovL2xvcmUua2VybmVsLm9yZy9hbGwvMjAyNjA0MDExMTEyNDQu NTA1N2E4OWNAZ2FuZGFsZi5sb2NhbC5ob21lLw0KPiAgICAgICBCdXQgSSBhbSBub3Qgc3VyZSBo b3cgY29tcGxpY2F0ZWQgaXQgaXMuIEFuZCBpZiBpdA0KPiAgICAgICBkb2VzIG5vdCBuZWVkIGFu eSBzcGVjaWFsIEhXIG9yIHNvLg0KDQpJJ2xsIGp1c3QgYWRkIGEgZmV3IHByb3MgYW5kIGNvbnMs IGlmIHRoYXQncyBPSy4NClRpbSdzIGFwcHJvYWNoOg0KUHJvczoNCiAtIHNldHRpbmcgdGhlIGNh bGlicmF0aW9uIHZhbHVlIGNhbiBiZSBhdXRvbWF0ZWQsIGR1ZSB0byBpdCBiZWluZyBhIENPTkZJ RyBvcHRpb24uDQogICAgQWxtb3N0IGFsbCB0ZXN0IGZyYW1ld29ya3MgSSdtIGF3YXJlIG9mIHN1 cHBvcnQNCiAgICBjaGFuZ2luZyB0aGUga2VybmVsIGNvbmZpZywgcmVidWlsZGluZyB0aGUga2Vy bmVsLCBpbnN0YWxsaW5nIHRoZSBrZXJuZWwsIGFuZCByZWJvb3RpbmcNCiAgICB0aGUgZGV2aWNl IHVuZGVyIHRlc3QuICBEdWUgdG8gZGlmZmVyZW5jZXMgaW4gYm9vdGxvYWRlcnMsIEknbSBub3Qg YXdhcmUgb2YgYW55IGdlbmVyYWwNCiAgICBzb2x1dGlvbiBmb3IgcmUtd3JpdGluZyBrZXJuZWwg Y29tbWFuZCBsaW5lIHBhcmFtZXRlcnMgdmlhIGF1dG9tYXRpb24uICBUaGF0IGlzLCBubw0KICAg IHRlc3QgZnJhbWV3b3JrIEknbSBhd2FyZSBvZiBzdXBwb3J0cyBtb2RpZnlpbmcgdGhlIGtlcm5l bCBjb21tYW5kIGxpbmUgcGFyYW1ldGVycywNCiAgICBhY3Jvc3MgZGlmZmVyZW50IHBsYXRmb3Jt cyBhbmQgYm9vdGxvYWRlcnMuDQogLSBjb21wbGV0ZSBjb3ZlcmFnZS4gVGhhdCBpcywgeW91IGNh biBnZXQgbm9uLXplcm8gdGltZXN0YW1wcyBmcm9tIHRoZSB2ZXJ5DQogICBmaXJzdCBsaW5lIGlu IHN0YXJ0X2tlcm5lbCwgbGVhdmluZyB0aGUgYmxpbmQgc3BvdCAoaW4gQyBjb2RlKSB2aXJ0dWFs bHkgbm9uLWV4aXN0ZW50Lg0KICAgVGhpcyBpcyBhbHNvIHVzZWZ1bCBmb3IgYXV0b21hdGlvbiwg c2luY2UgKHRpbWluZy11c2VmdWwpIHByaW50a3MgY2FuIGJlIGFkZGVkIGFuZCByZW1vdmVkIGFu eXdoZXJlDQogICAgaW4gdGhlIGNvZGUsIHdpdGhvdXQgZXhjZXB0aW9ucyBvciBxdWFsaWZpY2F0 aW9ucy4NCiAtIChsaWtlbHk/KSBwdXRzIHRoZSBlYXJseSB0aW1lc3RhbXBzIGludG8gdGhlIHNh bWUgdGltZXN0YW1wIHNwYWNlIGFzIHRoZQ0KICAgIGJvb3Rsb2FkZXIuICBUaGF0IGlzLCB0aGUg VjQgcGF0Y2ggaXMgdmVyeSBsaWtlbHkgdG8gdXNlIHRpbWluZyBoYXJkd2FyZQ0KICAgIHRoYXQg aXMgdGhlIHNhbWUgYXMgdGhlIG9uZSB1c2VkIGJ5IHRoZSBib290bG9hZGVyIChpbmNsdWRpbmcg dGhlIHNhbWUgdGltaW5nIGJhc2UhKS4NCiAgICBBdCBsZWFzdCwgdGhpcyBpcyB0cnVlIGZvciBV LUJvb3QgYW5kIGEgZmV3IG90aGVyIGVtYmVkZGVkIGJvb3Rsb2FkZXJzIEknbSBmYW1pbGlhciB3 aXRoLg0KICAgVGhpcyBpcyB1c2VmdWwgdG8gc2VlIHRoZSB0aW1pbmcgcmVsYXRpb25zaGlwIGJl dHdlZW4gdGhlIGtlcm5lbCBhbmQgdGhlIGJvb3Rsb2FkZXIsDQogICBhbmQgZXZlbiB0byBnZXQg ZXN0aW1hdGVzIG9mIHRoZSB0aW1lIHRha2VuIGZvciBhbm90aGVyIGJsaW5kIHNwb3QgLSBkdXJp bmcgdGhlDQogICBoYW5kb2ZmIGZyb20gYm9vdGxvYWRlciB0byBrZXJuZWwuICBJbiB0aGlzIGNh c2UgdGhlIGRpc2NvbnRpbnVpdHkgYmV0d2VlbiB0aGUNCiAgIGVhcmx5IGtlcm5lbCB0aW1lc3Rh bXBzIGFuZCB0aGUgbGF0ZXIga2VybmVsIHRpbWVzdGFtcHMgaXMgYWN0dWFsbHkgYSBmZWF0dXJl LA0KICAgYXMgeW91IGNhbiB1c2UgaXQgdG8gY2FsY3VsYXRlIHRpbWluZ3MgZm9yIHRoZSB3aG9s ZSBib290IHByb2Nlc3MuDQogLSB3aGVuIG5vdCBpbiB1c2UsIHRoZSBuZXcgb3ZlcmhlYWQgdG8g dGhlIGtlcm5lbCBpcyBleGFjdGx5IDAuICBUaGlzIHdhcyBhIGtleQ0KICAgZ29hbCB3aGVuIG1h a2luZyB0aGlzIHBhdGNoLiAgSSB3YW50ZWQgc29tZXRoaW5nIHRoYXQgZXZhcG9yYXRlZCBjb21w bGV0ZWx5DQogICAoZHVlIHRvIGNvbXBpbGVyIG9wdGltaXphdGlvbnMpIHNvIHRoYXQgd2hlbiB0 dXJuZWQgb2ZmLCB0aGlzIGluc3RydW1lbnRhdGlvbg0KICAgZGlkIG5vdCwgaXRzZWxmLCBhZGQg YW55IGFkZGl0aW9uYWwgdGltZSB0byBrZXJuZWwgYm9vdC4gICBNeSBWMiBhbmQgVjMNCiAgIHBh dGNoZXMgZGlkIG5vdCBoYXZlIHRoYXQgZmVhdHVyZSwgYW5kIEkgd2FzIHVuY29tZm9ydGFibGUg d2l0aCB0aGF0Lg0KIC0gd2hlbiBpbiB1c2UgQU5EIG5vdCBpbiB1c2UsIGRvZXMgbm90IGNoYW5n ZSB0aGUgdmFsdWUgb2YgYW55IGV4aXN0aW5nDQogICBwcmludGsgdGltZXN0YW1wcywgcmVsYXRp dmUgdG8gdGhlaXIgaGlzdG9yaWMgdmFsdWVzLiAgVGhhdCBpcywgb25seSB0aGUNCiAgIHplcm8g dGltZXN0YW1wcyBhcmUgY2hhbmdlZCBmcm9tIHplcm8gdG8gc29tZXRoaW5nLCBhbmQgYWxsIG90 aGVyIHRpbWVzdGFtcHMNCiAgIHNob3VsZCBiZSB0aGUgc2FtZSBhcyBiZWZvcmUgdGhlIHBhdGNo IHdhcyBhcHBsaWVkLiAgVGhpcyBpcyB1c2VmdWwgYXQgbGVhc3QNCiAgIHRvIG1lLCBiZWNhdXNl IEkgaGF2ZSBhIGxhcmdlIGFtb3VudCBvZiBkYXRhIGZvciBhIGxvdCBvZiBkaWZmZXJlbnQgcGxh dGZvcm1zLA0KICAgd2hlcmUgdGhlIHRpbWVzdGFtcHMgYXJlIGFsbCByZWxhdGl2ZSB0byBrZXJu ZWwgdGltZWtlZXBpbmcgc3RhcnQuICBUaGlzIG1lYW5zDQogICB0aGF0IHN5c3RlbXMgd2hpY2gg bW9uaXRvciBib290IHRpbWUgZGF0YSBvdmVyIHRpbWUgKHdoaWNoIEkgaGF2ZSkgZG9uJ3QNCiAg IGhhdmUgdG8gcmVjYWxpYnJhdGUgdGhlIGRhdGEgdG8gZGV0ZWN0IGRpZmZlcmVuY2VzIG92ZXIg ZGlmZmVyZW50IGtlcm5lbCB2ZXJzaW9ucy4NCg0KQ29uczoNCiAtIGR1ZSB0byBoYXJkY29kZWQg dmFsdWUsIGNhbm5vdCBiZSB1c2VkIGluIGEgZGlzdHJpYnV0aW9uIGtlcm5lbA0KIC0gY291bGQg ZW5jb3VyYWdlIHRoZSB1c2Ugb2Ygbm9uLXN0YW5kYXJkIGFuZCBwb3NzaWJseSBkZWNlcHRpdmUg b3INCiAgICBkYW5nZXJvdXMgY2xvY2tzLg0KIC0gSWYgdGhlIGRldmVsb3BlciBzZXRzIHRoZSB3 cm9uZyBjb25maWcgdmFsdWUsIHRoZXkgY2FuIGdldCBtaXNsZWFkaW5nIHRpbWVzdGFtcHMuDQog ICBIb3dldmVyLCB0aGV5IHNob3VsZCBiZSBhYmxlIHRvIGRldGVjdCB0aGlzLiAgQW5kIG9mdGVu IG9yZGVyLW9mLW1hZ25pdHVkZQ0KICAgIHZhbHVlcyBhcmUgc3VmZmljaWVudCB0byBpZGVudGlm eSBhcmVhcyB0byB3b3JrIG9uIGZvciBvcHRpbWl6YXRpb24uDQogLSBjYW5ub3QgYmUgdXNlZCBv biBwbGF0Zm9ybXMgdGhhdCBkbyBub3QgaGF2ZSBhIHN0YWJsZSBjbG9jayBvciBjeWNsZSBjb3Vu dGVyDQogICAgdGhhdCBkb2VzIG5vdCByZXF1aXJlIGluaXRpYWxpemF0aW9uIGJ5IHRoZSBrZXJu ZWwuICBJIHRoaW5rIGFsbW9zdCBhbGwgbW9kZXJuLA0KICAgIDY0LWJpdCBwcm9jZXNzb3JzIGhh dmUgc3VjaCBoYXJkd2FyZSwgYW5kIHRoYXQgbW9zdCB2aXJ0dWFsIG1hY2hpbmVzIGFuZA0KICAg IGVtdWxhdG9ycyBzdXBwb3J0IHN1Y2ggaGFyZHdhcmUsIGVpdGhlciB0aHJvdWdoIHBhc3MtdGhy b3VnaCBvciBlbXVsYXRpb24uDQogICAgQWx0aG91Z2ggc29tZSBkb24ndCBwcm92aWRlIGhhcmR3 YXJlIGNhbGlicmF0aW9uIGluZm8sIEkgYW0gbm90IGF3YXJlIG9mDQogICAgYW55IGFybSwgcmlz Y3Ygb3IgeDg2IDY0LWJpdCBwbGF0Zm9ybXMgdGhhdCBkb24ndCBzdXBwb3J0IHRoZSBpbnN0cnVj dGlvbnMgZm9yDQogICAgYWNjZXNzaW5nIHRoZSBjeWNsZSBvciB0aW1lLCB0aGF0IHRoZSBWNCBw YXRjaCB1c2VzLg0KICAgIFRoZXJlIG1pZ2h0IGFsc28gYmUgMzItYml0IG9yIG90aGVyIGxvdyBl bmQgZW1iZWRkZWQgcGxhdGZvcm1zIHRoYXQgaGF2ZQ0KICAgIGhhcmR3YXJlIHN1ZmZpY2llbnQg Zm9yIHRoaXMgKGUuZy4gZWl0aGVyIGluaXRpYWxpemVkIGluIGhhcmR3YXJlIG9yIGluaXRpYWxp emVkDQogICAgaW4gdGhlIGZpcm13YXJlIGZvciBhIHBsYXRmb3JtIGJlZm9yZSBrZXJuZWwgc3Rh cnQpDQoNCj4gDQo+IFRpbSdzIGFwcHJvYWNoIGlzIGludGVyZXN0aW5nIGJlY2F1c2Ugb2YgdGhl IHNpbXBsaWNpdHkNCj4gYW5kIG1pZ2h0IGJlIGdvb2QgZW5vdWdoIGZvciB0aGUgZmV3ICg1MCkg dXNlcnMuDQo+IA0KPiBJIHRoaW5rIHRoYXQgdGhlcmUgYXJlIGJhc2ljYWxseSB0d28gcHJvYmxl bXMgd2l0aCBUaW0ncyBhcHByb2FjaDoNCj4gDQo+ICAgIDEuIEl0IG5lZWRzIGEgcmVhc29uYWJs ZSBBUEkgdG8gZ2V0IGEgY3ljbGUgY291bnRlciB3aXRoDQo+ICAgICAgIGEgc3RhYmxlIGZyZXF1 ZW5jeS4NCj4gDQo+ICAgICAgIE15IHVuZGVyc3RhbmRpbmcgaXMgdGhhdCBnZXRfY3ljbGVzKCkg bWlnaHQgYmUgZ29vZCBlbm91Z2guDQo+ICAgICAgIFRoZSBvbmx5IHByb2JsZW0gaXMgdGhhdCBp dCB0aGUgc3RhYmlsaXR5IGlzIG5vdCBndWFyYW50ZWVkDQo+ICAgICAgIGFuZCBpdCBpcyBub3Qg Y2FsaWJyYXRlZC4NCj4gDQo+ICAgICAgIFdvdWxkIGl0IGhlbHAgdG8gcmVuYW1lIGl0IHRvIGdl dF9ib2dvX2N5Y2xlcygpID8NCg0KRm9yIHRoZSByZWNvcmQsIEkgd291bGQgYmUgZmluZSB3aXRo IHRoaXMuICBJIHdvdWxkIGV2ZW4gc3VwcG9ydCBoYXZpbmcNCmdldF9ib2dvX2N5Y2xlcygpIChv ciBlYXJseV91bnNhZmVfY3ljbGVzKCkpIGRvIHNvbWV0aGluZyBkcmFzdGljIGxpa2UNCnRhaW50 IHRoZSBrZXJuZWwsIG9yIGVtaXQgbm90aWNlYWJsZSBnYXJiYWdlIChlLmcuIC0xKSBhZnRlciBr ZXJuZWwNCnRpbWVrZWVwaW5nIHN0YXJ0cywgdG8gaGVscCBwcmV2ZW50IGZ1dHVyZSBhYnVzZSBv ZiB0aGUgZnVuY3Rpb24uDQoNCj4gDQo+IA0KPiAgICAyLiBUaGUgZWFybHkgdGltZXN0YW1wcyBw cm92aWRlZCBieSB0aGUgYm9nbyBjeWNsZXMNCj4gICAgICAgYXJlIG5vdCBzeW5jaHJvbml6ZWQg d2l0aCB0aW1lc3RhbXBzIGZyb20NCj4gICAgICAgdGhlIHByb3BlciB0aW1lIGtlZXBpbmcuDQo+ IA0KPiAgICAgICBXb3VsZCBpdCBoZWxwIHRvIHByaW50IGEgZGlzY2xhaW1lciwgc2ltaWxhciB0 bywNCj4gICAgICAgZm9yIGV4YW1wbGUsIHRyYWNlX3ByaW50aygpIGZpcnN0IHVzZT8NCj4gICAg ICAgU29tZXRoaW5nIGxpa2U6DQo+IA0KPiBbICAgIDAuMDAyOTEyXSAqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQo+IFsgICAgMC4wMDI5 MTddICoqKiogICBOT1RJQ0UgTk9USUNFIE5PVElDRSBOT1RJQ0UgTk9USUNFIE5PVElDRSBOT1RJ Q0UNCj4gWyAgICAwLjAwMjkyMV0gKioNCj4gWyAgICAwLjAwMjkzNV0gKiogVXNpbmcgQk9HTyBl YXJseSB0aW1lc3RhbXBzDQo+IFsgICAgMC4wMDI5MzldICoqDQo+IFsgICAgMC4wMDI5NDNdICoq IFRoZXkgYXJlIG5vdCBwcm9wZXJseSBjYWxpYnJhdGVkIGFuZCBtaWdodCB1c2UgYSBzb3VyY2UN Cj4gWyAgICAwLjAwMjk0OV0gKiogd2l0aCBhbiB1bnN0YWJsZSBmcmVxdWVuY3kuDQo+IFsgICAg MC4wMDI5NTNdICoqDQo+IFsgICAgMC4wMDI5NTddICoqIFRoZXkgYXJlIG5vdCBjb21wYXJhYmxl IHdpdGggdGltZXN0YW1wcyBhZnRlcg0KPiBbICAgIDAuMDAyOTYxXSAqKiB0aGUgdGltZWtlZXBp bmcgaXMgaW5pdGlhbGl6ZWQuDQo+IFsgICAgMC4wMDI5NjZdICoqDQo+IFsgICAgMC4wMDI5Njhd ICoqKiogICBOT1RJQ0UgTk9USUNFIE5PVElDRSBOT1RJQ0UgTk9USUNFIE5PVElDRSBOT1RJQ0UN Cj4gWyAgICAwLjAwMjk3MV0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKg0KDQpUaGF0J3MgYSBiaXQgbG9uZywgYnV0IEkgdGhpbmsgYSB3YXJu aW5nIGxpa2UgdGhpcyBpcyB1c2VmdWwuDQoNCj4gWyAgICAwLjAwMjk3NV0gQm9vdGluZyBMaW51 eCBvbiBwaHlzaWNhbCBDUFUgMHgwMDAwMDAwMDAwIFsweDQxMGZkMDgzXQ0KPiBbICAgIDAuMDAy OTk4XSBMaW51eCB2ZXJzaW9uIDcuMC4wLXJjNi12OCsgKHRiaXJkQHRpbWRlc2spIChhYXJjaDY0 LWxpbnV4LWdudS1nY2MgKFVidW50dSAxMy4zLjAtNnVidW50dTJ+MjQuMDQpIDEzLjMuMCwgR05V IGxkIChHTlUNCj4gQmludXRpbHMgZm9yIFVidW50dSkgMi40MikgIzIwIFNNUCBQUkVFTVBUIEZy aSBBcHIgMTAgMTE6NTc6NDggTURUIDIwMjYNCj4gWyAgICAwLjAwMzAwMl0gS0FTTFIgZW5hYmxl ZA0KPiBbICAgIDAuMDAzMzM4XSByYW5kb206IGNybmcgaW5pdCBkb25lDQo+IFsgICAgMC4wMDM4 NjZdIE1hY2hpbmUgbW9kZWw6IFJhc3BiZXJyeSBQaSA0IE1vZGVsIEIgUmV2IDEuNQ0KPiBbICAg IDAuMDA0NDk1XSBlZmk6IFVFRkkgbm90IGZvdW5kLg0KPiAuLi4NCj4gWyAgICAwLjE4MzU1Ml0g Um9vdCBJUlEgaGFuZGxlcjogZ2ljX2hhbmRsZV9pcnENCj4gWyAgICAwLjE4MzU2MV0gR0lDOiBV c2luZyBzcGxpdCBFT0kvRGVhY3RpdmF0ZSBtb2RlDQo+IFsgICAgMC4xODM2OTldIHJjdTogc3Jj dV9pbml0OiBTZXR0aW5nIHNyY3Vfc3RydWN0IHNpemVzIGJhc2VkIG9uIGNvbnRlbnRpb24uDQo+ IFsgICAgMC4xODM5NThdIGNsb2Nrc291cmNlOiBhcmNoX3N5c19jb3VudGVyOiBtYXNrOiAweGZm ZmZmZmZmZmZmZmZmIG1heF9jeWNsZXM6IDB4Yzc0M2NlMzQ2LCBtYXhfaWRsZV9uczogNDQwNzk1 MjAzMTIzIG5zDQo+IFsgICAgMC4xODM5NTJdIGFyY2hfdGltZXI6IGNwMTUgdGltZXIgcnVubmlu ZyBhdCA1NC4wME1IeiAocGh5cykuDQo+IFsgICAgMC4xODM5NTddICoqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCj4gWyAgICAwLjE4Mzk2 Ml0gKioqKiAgIE5PVElDRSBOT1RJQ0UgTk9USUNFIE5PVElDRSBOT1RJQ0UgTk9USUNFIE5PVElD RQ0KPiBbICAgIDAuMTgzOTY3XSAqKg0KPiBbICAgIDAuMTgzOTcxXSAqKiBFbmQgb2YgQk9HTyBl YXJseSB0aW1lc3RhbXBzDQo+IFsgICAgMC4xODM5NzZdICoqDQo+IFsgICAgMC4xODM5ODJdICoq KiogICBOT1RJQ0UgTk9USUNFIE5PVElDRSBOT1RJQ0UgTk9USUNFIE5PVElDRSBOT1RJQ0UNCj4g WyAgICAwLjE4Mzk4OV0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKg0KDQpJIGFjdHVhbGx5IHdvcmtlZCBvbiBhIG5vdGljZSBsaWtlIHRo aXMsIHRvIGJyaWRnZS9leHBsYWluIHRoZSB0cmFuc2l0aW9uIChmb3IgaHVtYW5zKS4gIEJ1dCBp dCB0dXJuZWQNCm91dCB0aGF0IGRpZmZlcmVudCBwbGF0Zm9ybXMgaW5pdGlhbGl6ZWQgdGhlaXIg Y2xvY2tzIGRpZmZlcmVudGx5IGVub3VnaCB0aGF0IGl0IHdvdWxkIGhhdmUNCnJlcXVpcmVkIHB1 dHRpbmcgdGhlIG5vdGljZSBpbiBkaWZmZXJlbnQgcGxhY2VzLCB3aGljaCB3b3VsZCBoYXZlIHJl cXVpcmVkIGFyY2hpdGVjdHVyZS1zcGVjaWZpYw0KI2lmZGVmcyBpbiBnZW5lcmljIGNvZGUgKHNv IEkgZGlkbid0IGRvIGl0KS4NCg0KPiBbICAgIDAuMDAwMDAwXSBzY2hlZF9jbG9jazogNTYgYml0 cyBhdCA1NE1IeiwgcmVzb2x1dGlvbiAxOG5zLCB3cmFwcyBldmVyeSA0Mzk4MDQ2NTExMTAybnMN Cj4gWyAgICAwLjAwMDE1N10gQ29uc29sZTogY29sb3VyIGR1bW15IGRldmljZSA4MHgyNQ0KPiBb ICAgIDAuMDAwMTY1XSBwcmludGs6IGxlZ2FjeSBjb25zb2xlIFt0dHkxXSBlbmFibGVkDQo+IA0K PiBNeSB2aWV3IGlzIHRoYXQgaXQgd291bGQgYmUgbmljZSB0byBtYWtlIHRoZSBsaWZlIGVhc2ll cg0KPiBmb3IgdGhlIDUwIGRldmVsb3BlcnMgd2hvIGRvIHZlcnkgdXNlZnVsIHdvcmsuDQo+IA0K PiBCdXQgd2UgZG8gbm90IG5lZWQgdG8gY3JlYXRlIGFuZCBtYWludGFpbiBhbnkgY29tcGxpY2F0 ZWQNCj4gY29kZSBmb3IgdGhpcy4gSWYgdGhlIGJvZ28gY3ljbGVzIGFyZSBnb29kIGVub3VnaC4N Cj4gSWYgdGhleSBhbHJlYWR5IGhhdmUgc29tZSB1c2VycyBhbmQgaGF2ZSB0byBzdGF5IGFueXdh eS4NCj4gSWYgd2UgbWFrZSBpdCBjbGVhciB0aGF0IHRoZSBlYXJseSB0aW1lc3RhbXBzIGFyZSBi b2d1cy4uLg0KPiANCj4gSU1ITywgdGhlIG1haW4gcmlzayBpcyB0aGF0IGl0IHdvbid0IGJlIHVz ZWQganVzdCBieSB0aGUgNTAgZGV2ZWxvcGVycw0KPiBidXQgaXQgd2lsbCBnZXQgbWlzdXNlZCBh bmQgb3BlbiBzb21lIGNhbiBvZiB3b3Jtcy4gSSB0aGluayB0aGF0DQo+IHRoZSByaXNrIG1pZ2h0 IGJlIGFjY2VwdGFibGUgYnV0Li4uDQoNClRoYXQgaXMgaW5kZWVkIGEgcmlzayB0aGF0IHNob3Vs ZCBiZSBkZWFsdCB3aXRoLiAgSSAqZG8qIHdhbnQgdG8gYXZvaWQNCmludHJvZHVjaW5nIG1vcmUg dGVjaG5pY2FsIGRlYnQgaW50byB0aGUga2VybmVsIGZvciBzdWNoIGEgbWlub3IgZmVhdHVyZS4N ClRob21hcyBoYXMgbXVjaCBtb3JlIGV4cGVyaWVuY2UgdGhhbiBtZSBkZWFsaW5nIHdpdGggdGVj aG5pY2FsIGRlYnQuDQpTbyBoaXMgb2JqZWN0aW9ucyBzaG91bGQgYmUgdGFrZW4gc2VyaW91c2x5 IGFuZCBhZGRyZXNzZWQuDQoNCj4gV2hhdCBkbyB5b3UgdGhpbmssIHBsZWFzZT8NCj4gQW0gSSB0 b28gbmFpdmUgaW4gdGhpcyBjYXNlPw0KPiANCj4gW1RpbTFdIGh0dHBzOi8vbG9yZS5rZXJuZWwu b3JnL2FsbC8zOWIwOWVkYi04OTk4LTRlYmQtYTU2NC03ZDU5NDQzNGE5ODFAYmlyZC5vcmcvDQo+ IFtUaW0yXSBodHRwczovL2xvcmUua2VybmVsLm9yZy9hbGwvMjAyNjAxMjQxOTQwMjcuNzEzOTkx LTEtdGltLmJpcmRAc29ueS5jb20vDQo+IFtUaW0zXSBodHRwczovL2xvcmUua2VybmVsLm9yZy9h bGwvMjAyNjAyMTAyMzQ3NDEuMzI2MjMyMC0xLXRpbS5iaXJkQHNvbnkuY29tLw0KPiBbVGltNF0g aHR0cHM6Ly9sb3JlLmtlcm5lbC5vcmcvYWxsLzIwMjYwNDEwMjAzNzQxLjk5NzQxMC0xLXRpbS5i aXJkQHNvbnkuY29tLw0KPiANCj4gW1Rob21hczFdIGh0dHBzOi8vbG9yZS5rZXJuZWwub3JnL2Fs bC84N2ZyNWliNmtzLmZmc0B0Z2x4Lw0KDQpJIHVuZGVyc3RhbmQgVGhvbWFzJyBvYmplY3Rpb25z IHRvIG15IGFwcHJvYWNoLCBhbmQgdGhhdCB0aGlzIG1heSBub3QgYmUgc3VpdGFibGUgZm9yDQp1 cHN0cmVhbS4gIEhvd2V2ZXIsIGlmIHRoZSBkYW5nZXJzIGNhbiBiZSBtaXRpZ2F0ZWQsIEkgd291 bGQgYmUgaGFwcHkgdG8gc2VlIHRoaXMNCnVwc3RyZWFtIGFzIGFub3RoZXIgdG9vbCB0byBoZWxw IGRldmVsb3BlcnMgd29ya2luZyBvbiBib290IHRpbWUgaXNzdWVzLg0KDQpSZWdhcmRzLA0KIC0t IFRpbQ0K