Q2FyZXksCgpBbGwgb3RoZXIgZnVuY3Rpb25zIG9uIHRob3NlIHBpbnMgbXVzdCBiZSBkaXNhYmxl ZCBpbiB5b3VyIGhlYWRlci4gT25seQp0aGUgU0NMIGFuZCBTREEgb3V0cHV0cyBjYW4gYmUgZW5h YmxlLiBSZWZlciB0byB0aGUgc3BlYyBzaGVldCBzbyBzZXQgeW91cgpyZWdpc3RlcnMgdG8gZGlz YWJsZSB0aG9zZSBmdW5jdGlvbnMuCgpSYXkKCgpDYXJleSBGaXNoZXIgd3JvdGU6Cj4gSSdtIGhh dmluZyBhIHRlcnJpYmxlIHRpbWUgdHJ5aW5nIHRvIGdldCB0aGUgSTJDIG1vZHVsZSBvbiB0aGUg MThGNjdLNDAKPiB3b3JraW5nLiBNeSB0ZXN0IGNvZGUgaXMgcG9zdGVkIGJlbG93LiBUaGlzIGNv ZGUgYW5kIHRoZSBJMkMgbW9kdWxlIHNlZW0KPiB2ZXJ5IHNpbXBsZSBzbyBJIG11c3QgYmUgbWlz c2luZyBzb21ldGhpbmcgc2ltcGxlLgo+IFRoaXMgY29kZSB0cmllcyB0byByZWFkIGFkZHJlc3Mg MDAwMCBvZiBhbiBhdHRhY2hlZCAyNExDNTEyIEVFUFJPTS4gSSBrbm93Cj4gdGhlIGhhcmR3YXJl IGlzIGdvb2QgYmVjYXVzZSBJIGNhbiB1c2UgUGljIEJhc2ljIFBybyBhbmQgcmVhZCBhbmQgd3Jp dGUKPiB0aGUgRUVQUk9NIHVzaW5nIEkyQy4KPiBUaGUgY29kZSBJJ20gdXNpbmcgY2FtZSBvZmYg YSBmb3J1bSBvbiB0aGUgTWljcm9jaGlwIFN1cHBvcnQgd2Vic2l0ZS4gSXQKPiBpcyAiYnVsbGV0 IHByb29mIi4gSGEuCj4KPiBJJ3ZlIHB1dCBkZWJ1Z2dpbmcgc3RhdGVtZW50cyBpbiB0aGUgY29k ZSBhbmQgd2hhdCBJJ3ZlIGZvdW5kIGlzIHRoYXQgdGhlCj4gSW50ZXJydXB0IGZsYWcsIFBJUjMs U1NQMUlGLCBuZXZlciBnZXRzIGFzc2VydGVkLgo+Cj4gQW55IHBvaW50ZXJzIHdvdWxkIGJlIGdy ZWF0bHkgYXBwcmVjaWF0ZWQuCj4KPgo+ICdpMmN0ZXN0LnBicAo+ICdhbm90aGVyIHRyeSBhdCBy ZWFkaW5nIEkyQyBkYXRhIGZyb20gMjRMQzUxMgo+Cj4gJ1N0YXJ0IENvbmRpdGlvbgo+ICdDb250 cm9sIEJ5dGUgZm9yIHdyaXRlCj4gJ0hpZ2ggYWRkcmVzcyBieXRlCj4gJ0xvdyBhZGRyZXNzIGJ5 dGUKPiAnU3RhcnQgQ29uZGl0aW9uCj4gJ0NvbnRyb2wgQnl0ZSBmb3IgcmVhZAo+ICdSZWFkIGlu IGRhdGEgYnl0ZQo+ICdSZXR1cm4gd2l0aCBOQUNLCj4gJ1N0b3AgQ29uZGl0aW9uCj4KPgo+IGFz bQo+ICNkZWZpbmUgTWVtdG9wIDB4MTAwMDAgICAgICAgO2hpZ2VzdCBtZW1vcnkgaW4gdGhlIDE4 RjY3azQwIHByb2Nlc3Nvcgo+IFN0YXJ0YWRkcmVzcyA9ICAgTWVtVG9wLTgwMAo+IFNEQSA9IDQK PiBTQ0wgPSAzCj4KPiAgICAgT1JHIFN0YXJ0YWRkcmVzcwo+Cj4gOyoqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgo+ICA7Cj4gIDsg IDI0TEMyNTYgSTJDIFNpbmdsZSBCeXRlIFJlYWQgUm91dGluZXMKPiAgOwo+Cj4gIDsKPiAgOwo+ IF9JMkNURVNUMQo+ICAgICAJcmNhbGwgCUkyQ0luaXQKPgo+IDtFRV9SRAo+ICAgICAJcmNhbGwJ STJDU3RydAkJO3NlbmQgSTJDIFNUQVJUCj4gICAgIAltb3ZsdyAgaCdBNicKPiAgCXJjYWxsCUky Q1NlbmQJCTtzZW5kIGRldmljZSBhZGRyZXNzIChjb250cm9sIGJ5dGUpCj4gICAgCSBtb3ZsdyAg IGgnMDAnCj4gIAlyY2FsbAlJMkNTZW5kCQk7c2VuZCBhZGRyZXNzIGhpIGJ5dGUKPiAgICAJIG1v dmx3ICAgaCcwMCcKPiAgCXJjYWxsCUkyQ1NlbmQJCTtzZW5kIGFkZHJlc3MgbG8gYnl0ZQo+ICAJ cmNhbGwJSTJDU3RydAkJO3NlbmQgSTJDIFNUQVJUCj4gICAgCSBtb3ZsdyAgIGgnQTcnCj4gIAly Y2FsbAlJMkNTZW5kCQk7c2VuZCBkZXZpY2UgYWRkcmVzcyAoY29udHJvbCBieXRlKQo+IEVFX1Ix Cj4gICAgIAlyY2FsbAlJMkNSY3YJCTtyZWNlaXZlIG1vZGUgKHJlY2VpdmUgYnl0ZSkKPiAgICAg CW1vdndmICAgX3Rlc3RieXRlMQo+ICAJcmNhbGwJSTJDTmFjawkJO3NpZ25hbCBlbmQgb2YgcmVj ZWl2ZQo+ICAJcmNhbGwJSTJDU3RvcHAJCTtzZW5kIFNUT1AKPiAgCXJldHVybgkJCTsKPgo+ICA7 KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqCj4gIDsKPiAgOyAgSTJDIHByaW1pdGl2ZXMKPiAgOwo+ICA7ICBTU1BBREQgPSAoKEZv c2MvSTJDY2xvY2spLzQpLTEgIHtmb3JtdWxhIGZyb20gQU43MzV9Cj4gIDsKPgo+IEkyQ0luaXQK PiAgICAgICAgIAlic2YgUElFMyxTU1AxSUUJIDsgZW5hYmxlIHRoZSBJbnRlcnJ1cHQgZmxhZywg UElSMyxTU1AxSUYKPiAgICAgICAgYnNmCVRSSVNDLFNDTAk7Cj4gIAlic2YJVFJJU0MsU0RBCTsK PiAgCW1vdmx3CWInMDAxMDEwMDAnCTtTU1BFTiArIDEyQyBNYXN0ZXIKPiAgCW1vdndmCVNTUDFD T04xCQk7Cj4gIAltb3ZsdwliJzAwMDAwMDAwJwk7Cj4gIAltb3Z3ZglTU1AxQ09OMgkJOwo+ICAJ bW92bHcJYicwMDAwMDAwMCcJO3NsZXcgcmF0ZSBvbiBmb3IgNDAwa2h6Cj4gIAltb3Z3ZglTU1Ax U1RBVAkJOwo+ICAJbW92bHcJZCcxMycJCTsoMjAwMDAwMDAvMTAwMDAwKS0xLzQKPiAgCW1vdndm CVNTUDFBREQJCTs0MDBraHogdXNpbmcgMjBtaHogeHRhbAo+ICAgICByZXR1cm4JCQk7Cj4KPiBJ MkNEZWJ1Zwo+ICAgIAkgbW92ZiAgc3NwMXN0YXQsMAo+ICAJbW92d2YgX3Rlc3RieXRlMQo+ICAJ bW92ZiBzc3AxY29uMSwwCj4gIAltb3Z3ZiBfdGVzdGJ5dGUyCj4gIAltb3ZmIHNzcDFjb24yLDAK PiAgCW1vdndmIF90ZXN0Ynl0ZTMKPiAgCW1vdmYgc3NwMWNvbjMsMAo+ICAJbW92d2YgX3Rlc3Ri eXRlNAo+ICAgICByZXR1cm4KPgo+IEkyQ1dhaXQKPiAgICAgCWJ0ZnNzIFBJUjMsU1NQMUlGCTtj b21wbGV0ZSBmbGFnPwo+ICAJYnJhCUkyQ1dhaXQJCTtubywgd2FpdAo+ICAJYmNmCVBJUjMsU1NQ MUlGCTtjbGVhciBpcnEgZmxhZwo+ICByZXR1cm4JCQk7Cj4KPiBJMkNTdHJ0Cj4gICAgIAlic2YJ U1NQMUNPTjIsU0VOX1NTUDFDT04yCTtzZW5kIFNUQVJUIGNvbmRpdGlvbgo+ICAgICAJYnJhCUky Q1dhaXQJCTsKPgo+IEkyQ1N0b3BwCj4gICAgIAlic2YJU1NQMUNPTjIsUEVOCTtzZW5kIFNUT1Ag Y29uZGl0aW9uCj4gIAlicmEJSTJDV2FpdAkJOwo+Cj4gSTJDU2VuZAo+ICAgICAJbW92d2YJU1NQ MUJVRgkJO3NlbmQgYnl0ZQo+ICAJYnJhCUkyQ1dhaXQJCTsKPgo+IEkyQ1Jjdgo+ICAgICAJYnRm c2MJU1NQMVNUQVQsUl9XCTt0cmFuc21pdCBjb21wbGV0ZT8KPiAgCWJyYQlJMkNSY3YJCTtubywg d2FpdAo+ICAJYnNmCVNTUDFDT04yLFJDRU4JO3JlY2VpdmUgZW5hYmxlCj4gICAgIAliY2YJUElS MyxTU1AxSUYJO2NsZWFyIGlycSBmbGFnCj4gICAgCSByY2FsbAlJMkNXYWl0CQk7Cj4gIAltb3Zm CVNTUDFCVUYsVwk7Cj4gIHJldHVybgkJCTsKPgo+IEkyQ0Fjawo+ICAgICAJYmNmCVNTUDFDT04y LEFDS0RUCTtzZXQgQUNLCj4gIAlicmEJSTJDTmFjaysyCTsKPgo+IEkyQ05hY2sKPiAgICAJIGJz ZglTU1AxQ09OMixBQ0tEVAk7c2V0IE5BQ0sKPiAgCWJzZglTU1AxQ09OMixBQ0tFTgk7c2VuZCBB Q0sgb3IgTkFDSwo+ICAJYnJhCUkyQ1dhaXQJCTsKPgo+IEkyQ1Jlcwo+ICAgICAJYnNmCVNTUDFD T04yLFJTRU4JO3NlbmQgUkVTVEFSVCBjb25kaXRpb24KPiAgCWJyYQlJMkNXYWl0CQk7Cj4KPiBl bmRhc20KPgo+IENhcmV5IEZpc2hlciDilIIgRGlyZWN0b3Igb2YgRW5naW5lZXJpbmcKPiBPICsx IDc3MC0yMDktMDAxMiB4MjAzMSDilIIgRiArMSA3NzAtMjA5LTA3MTkKPiA0Mjk1IEhhbWlsdG9u IE1pbGwgUm9hZCDilIIgU3VpdGUgMTAwIOKUgiBCdWZvcmQsIEdBIDMwNTE4Cj4gd3d3Lm9tbmlt ZXRyaXgubmV0Cj4KPgo+Cj4gVGVsbCB1cyBob3cgd2UncmUgZG9pbmchIENsaWNrIGhlcmUgdG8g dGFrZSBvdXIgdHdvLXF1ZXN0aW9uIHN1cnZleS4KPgo+IMKgIMKgwqDCoAo+Cj4KPiAtLQo+IGh0 dHA6Ly93d3cucGljbGlzdC5jb20vdGVjaHJlZi9waWNsaXN0IFBJQy9TWCBGQVEgJiBsaXN0IGFy Y2hpdmUKPiBWaWV3L2NoYW5nZSB5b3VyIG1lbWJlcnNoaXAgb3B0aW9ucyBhdAo+IGh0dHA6Ly9t YWlsbWFuLm1pdC5lZHUvbWFpbG1hbi9saXN0aW5mby9waWNsaXN0Cj4KCgotLSAKaHR0cDovL3d3 dy5waWNsaXN0LmNvbS90ZWNocmVmL3BpY2xpc3QgUElDL1NYIEZBUSAmIGxpc3QgYXJjaGl2ZQpW aWV3L2NoYW5nZSB5b3VyIG1lbWJlcnNoaXAgb3B0aW9ucyBhdApodHRwOi8vbWFpbG1hbi5taXQu ZWR1L21haWxtYW4vbGlzdGluZm8vcGljbGlzdAo= .